package com.aionemu.gameserver.network.aion.serverpackets;
import com.aionemu.gameserver.model.team.legion.Legion;
import com.aionemu.gameserver.network.aion.AionConnection;
import com.aionemu.gameserver.network.aion.AionServerPacket;
import com.aionemu.gameserver.services.abyss.AbyssRankingCache;
/**
* @author Simple
*/
public class SM_LEGION_EDIT extends AionServerPacket {
private int type;
private Legion legion;
private int unixTime;
private String announcement;
public SM_LEGION_EDIT(int type) {
this.type = type;
}
public SM_LEGION_EDIT(int type, Legion legion) {
this.type = type;
this.legion = legion;
}
public SM_LEGION_EDIT(int type, int unixTime) {
this.type = type;
this.unixTime = unixTime;
}
public SM_LEGION_EDIT(Legion.Announcement announcement) {
this.type = 0x05;
this.announcement = announcement.message();
this.unixTime = (int) (announcement.time().getTime() / 1000);
}
@Override
protected void writeImpl(AionConnection con) {
writeC(type);
switch (type) {
case 0x00: // Change Legion Level
writeC(legion.getLegionLevel());
break;
case 0x01: // Change Abyss Ranking List Position
writeD(AbyssRankingCache.getInstance().getRankingListPosition(legion));
break;
case 0x02: // Change Legion Permissions
writeH(legion.getDeputyPermission());
writeH(legion.getCenturionPermission());
writeH(legion.getLegionaryPermission());
writeH(legion.getVolunteerPermission());
break;
case 0x03: // Change Legion Contributions
writeQ(legion.getContributionPoints());
break;
case 0x04:
writeQ(legion.getLegionWarehouse().getKinah());
break;
case 0x05: // Change Legion Announcement
writeS(announcement);
writeD(unixTime);
break;
case 0x06: // Disband Legion
writeD(unixTime);
break;
case 0x07: // Recover Legion
break;
case 0x08: // Refresh Legion Announcement?
break;
}
}
}