/*
* IDK Game Server by Steve Winfield
* https://github.com/WinfieldSteve
*/
package org.stevewinfield.suja.idk.communication.moderation.writers;
import org.magicwerk.brownies.collections.GapList;
import org.stevewinfield.suja.idk.communication.MessageWriter;
import org.stevewinfield.suja.idk.communication.OperationCodes;
import org.stevewinfield.suja.idk.game.moderation.ModerationPresetAction;
import org.stevewinfield.suja.idk.game.moderation.ModerationPresetMessage;
import org.stevewinfield.suja.idk.game.moderation.ModerationPresetMessageType;
import org.stevewinfield.suja.idk.game.players.PlayerInstance;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
public class ModerationToolWriter extends MessageWriter {
public ModerationToolWriter(final PlayerInstance player, final Collection<ModerationPresetMessage> presetMessages, final ConcurrentHashMap<Integer, ModerationPresetAction> actions) {
super(OperationCodes.getOutgoingOpCode("ModerationTool"));
super.push(-1);
final List<ModerationPresetMessage> playerPresetMessages = new GapList<>();
final List<ModerationPresetMessage> roomPresetMessages = new GapList<>();
for (final ModerationPresetMessage presetMessage : presetMessages) {
if (presetMessage.getType() == ModerationPresetMessageType.ROOM_MESSAGE) {
roomPresetMessages.add(presetMessage);
} else {
playerPresetMessages.add(presetMessage);
}
}
super.push(playerPresetMessages.size());
for (final ModerationPresetMessage presetMessage : playerPresetMessages) {
super.push(presetMessage.getMessage());
}
super.push(actions.size());
for (final ModerationPresetAction action : actions.values()) {
super.push(action.getCaption());
super.push(action.getItems().size());
for (final ModerationPresetAction item : action.getItems().values()) {
super.push(item.getCaption());
super.push(item.getMessage());
}
}
super.push(player.hasRight("moderation_tickets"));
super.push(player.hasRight("moderation_chatlogs"));
super.push(player.hasRight("moderation_actions"));
super.push(player.hasRight("moderation_kick"));
super.push(player.hasRight("moderation_ban"));
super.push(player.hasRight("moderation_caution"));
super.push(true);
super.push(roomPresetMessages.size());
for (final ModerationPresetMessage presetMessage : roomPresetMessages) {
super.push(presetMessage.getMessage());
}
}
}