public void setStat(String code, String val) { int num = 0; int numDex = code.length(); while ((numDex > 0) && (Character.isDigit(code.charAt(numDex - 1)))) numDex--; if (numDex < code.length()) { num = CMath.s_int(code.substring(numDex)); code = code.substring(0, numDex); } final GOVT_STAT_CODES stat = getStatIndex(code); if (stat == null) { return; } switch (stat) { case NAME: name = val; break; case AUTOROLE: { ClanPosition P = getPosition(val); if (P != null) autoRole = P.getRoleID(); break; } case ACCEPTPOS: { ClanPosition P = getPosition(val); if (P != null) acceptPos = P.getRoleID(); break; } case SHORTDESC: shortDesc = val; break; case LONGDESC: longDesc = val; break; case XPLEVELFORMULA: setXpCalculationFormulaStr(val); break; case REQUIREDMASK: requiredMaskStr = val; break; case ISPUBLIC: isPublic = CMath.s_bool(val); break; case ISFAMILYONLY: isFamilyOnly = CMath.s_bool(val); break; case OVERRIDEMINMEMBERS: { if (val.length() == 0) overrideMinMembers = null; else overrideMinMembers = Integer.valueOf(CMath.s_int(val)); break; } case CONQUESTENABLED: conquestEnabled = CMath.s_bool(val); break; case CONQUESTITEMLOYALTY: conquestItemLoyalty = CMath.s_bool(val); break; case CONQUESTDEITYBASIS: conquestByWorship = CMath.s_bool(val); break; case MAXVOTEDAYS: maxVoteDays = CMath.s_int(val); break; case VOTEQUORUMPCT: voteQuorumPct = CMath.s_int(val); break; case AUTOPROMOTEBY: { Clan.AutoPromoteFlag flag = (Clan.AutoPromoteFlag) CMath.s_valueOf(Clan.AutoPromoteFlag.values(), val); if (flag != null) autoPromoteBy = flag; break; } case VOTEFUNCS: { final Vector<String> funcs = CMParms.parseCommas(val.toUpperCase().trim(), true); for (ClanPosition pos : positions) { for (int a = 0; a < Function.values().length; a++) if (pos.getFunctionChart()[a] == Authority.MUST_VOTE_ON) pos.getFunctionChart()[a] = Authority.CAN_NOT_DO; for (final String funcName : funcs) { Authority auth = (Authority) CMath.s_valueOf(Function.values(), funcName); if (auth != null) pos.getFunctionChart()[auth.ordinal()] = Authority.MUST_VOTE_ON; } } break; } case NUMRABLE: clanAbilityMap = null; if (CMath.s_int(val) == 0) { clanAbilityNames = null; clanAbilityProficiencies = null; clanAbilityQuals = null; clanAbilityLevels = null; } else { clanAbilityNames = new String[CMath.s_int(val)]; clanAbilityProficiencies = new int[CMath.s_int(val)]; clanAbilityQuals = new boolean[CMath.s_int(val)]; clanAbilityLevels = new int[CMath.s_int(val)]; } break; case GETRABLE: { if (clanAbilityNames == null) clanAbilityNames = new String[num + 1]; clanAbilityNames[num] = val; break; } case GETRABLEPROF: { if (clanAbilityProficiencies == null) clanAbilityProficiencies = new int[num + 1]; clanAbilityProficiencies[num] = CMath.s_parseIntExpression(val); break; } case GETRABLEQUAL: { if (clanAbilityQuals == null) clanAbilityQuals = new boolean[num + 1]; clanAbilityQuals[num] = CMath.s_bool(val); break; } case GETRABLELVL: { if (clanAbilityLevels == null) clanAbilityLevels = new int[num + 1]; clanAbilityLevels[num] = CMath.s_parseIntExpression(val); break; } case NUMREFF: clanEffectMap = null; if (CMath.s_int(val) == 0) { clanEffectNames = null; clanEffectParms = null; clanEffectLevels = null; } else { clanEffectNames = new String[CMath.s_int(val)]; clanEffectParms = new String[CMath.s_int(val)]; clanEffectLevels = new int[CMath.s_int(val)]; } break; case GETREFF: { if (clanEffectNames == null) clanEffectNames = new String[num + 1]; clanEffectNames[num] = val; break; } case GETREFFPARM: { if (clanEffectParms == null) clanEffectParms = new String[num + 1]; clanEffectParms[num] = val; break; } case GETREFFLVL: { if (clanEffectLevels == null) clanEffectLevels = new int[num + 1]; clanEffectLevels[num] = CMath.s_int(val); break; } default: Log.errOut("Clan", "setStat:Unhandled:" + stat.toString()); break; } }
public String[] getStatCodes() { return CMParms.toStringArray(GOVT_STAT_CODES.values()); }