package mekhq.campaign.personnel; import mekhq.campaign.Campaign; public class RankTranslator { // Old Factions Codes public static final int RT_SL = 0; public static final int RT_FS = 1; public static final int RT_LA = 2; public static final int RT_FWL = 3; public static final int RT_CC = 4; public static final int RT_DC = 5; public static final int RT_CL = 6; public static final int RT_CUSTOM = 7; public static final int RT_NUM = 8; public static final String[] oldRankNames = { "Star League", "Federated Sun", "Lyran Alliance", "Free Worlds League", "Capellan Confederation", "Draconis Combine", "Clan", "Custom" }; public static final String[][] oldRankSystems = { {"None","Recruit","Private","Corporal","Sergeant","Master Sergeant","Warrant Officer","Lieutenant JG","Captain","Major","Colonel","Lt. General","Major General","General","Commanding General"}, {"None","Recruit","Private","Private, FC","Corporal","Sergeant","Sergeant Major","Command Sergeant-Major","Cadet","Subaltern","Leftenant","Captain","Major","Leftenant Colonel","Colonel","Leftenant General","Major General","General","Marshal","Field Marshal","Marshal of the Armies"}, {"None","Recruit","Private","Private, FC","Corporal","Senior Corporal","Sergeant","Staff Sergeant","Sergeant Major","Staff Sergeant Major","Senior Sergeant Major","Warrant Officer","Warrant Officer, FC","Senior Warrant Officer","Chief Warrant Officer","Cadet","Leutnant","First Leutnant","Hauptmann","Kommandant","Hauptmann-Kommandant","Leutnant-Colonel","Colonel","Leutnant-General","Hauptmann-General","Kommandant-General","General","General of the Armies","Archon"}, {"None","Recruit","Private","Private, FC","Corporal","Sergeant","Staff Sergeant","Master Sergeant","Sergeant Major","Lieutenant","Captain","Force Commander","Lieutenant Colonel","Colonel","General","Marshal","Captain-General"}, {"None","Shia-ben-bing","San-ben-bing","Si-ben-bing","Yi-si-ben-bing","Sao-wei","Sang-wei","Sao-shao","Zhong-shao","Sang-shao","Jiang-jun","Sang-jiang-jun"}, {"None","Hojuhei","Heishi","Gunjin","Go-cho","Gunsho","Shujin","Kashira","Sho-ko","Chu-i","Tai-i","Sho-sa","Chu-sa","Tai-sa","Sho-sho","Tai-sho","Tai-shu","Gunji-no-Kanrei"}, {"None","Point","Point Commander","Star Commander","Star Captain","Star Colonel","Galaxy Commander","Khan","ilKhan"} }; private Campaign campaign; public RankTranslator(Campaign c) { campaign = c; } public int getNewRank(int oldSystem, int oldRank) throws ArrayIndexOutOfBoundsException { Ranks ranks = Ranks.getRanksFromSystem(RankTranslator.translateRankSystem(oldSystem, campaign.getFactionCode())); String rankName; // Try and acquire the rank name... try { rankName = oldRankSystems[oldSystem][oldRank]; for (int rankNum = Ranks.RE_MIN; rankNum < Ranks.RC_NUM; rankNum++) { if (ranks.getRank(rankNum).getName(Ranks.RPROF_MW).equals(rankName)) { return rankNum; } } } catch (ArrayIndexOutOfBoundsException e) { throw e; } // If we didn't find anything to translate to, then we can kick them as Rank "None" return 0; } public static int translateRankSystem(int old, String faction) { switch(old) { case RT_SL: return Ranks.RS_SL; case RT_FS: return Ranks.RS_FS; case RT_LA: return Ranks.RS_LA; case RT_FWL: return Ranks.RS_FWL; case RT_CC: return Ranks.RS_CC; case RT_DC: return Ranks.RS_DC; case RT_CL: return Ranks.RS_CL; case RT_CUSTOM: switch (faction) { case "WOB": return Ranks.RS_WOB; case "FC": return Ranks.RS_FC; case "CS": return Ranks.RS_COM; case "CDS": case "CGB": case "CHH": case "CJF": case "CNC": case "CSJ": case "CSV": case "CW": return Ranks.RS_CL; case "OA": return Ranks.RS_OA; case "MH": return Ranks.RS_MH; case "TC": return Ranks.RS_TC; case "MOC": return Ranks.RS_MOC; case "FRR": return Ranks.RS_FRR; } return Ranks.RS_CUSTOM; default: return Ranks.RS_SL; } } }