@Override protected boolean append(Class pclass) { // プライオリティー順に追加 // ソーター使う? if (!LMM_EntityModeBase.class.isAssignableFrom(pclass)) { return false; } try { LMM_EntityModeBase lemb = null; lemb = (LMM_EntityModeBase) pclass .getConstructor(LMM_EntityLittleMaid.class) .newInstance((LMM_EntityLittleMaid) null); lemb.init(); maidModeList.add(lemb); return true; } catch (Exception e) { LMM_LittleMaidMobX.Debug("Failed to load Entity Mode class %s!" + pclass.getName()); e.printStackTrace(); } return false; }
/** AI追加用のリストを獲得。 */ public static List<LMM_EntityModeBase> getModeList(LMM_EntityLittleMaid pentity) { List<LMM_EntityModeBase> llist = new ArrayList<LMM_EntityModeBase>(); for (LMM_EntityModeBase lmode : maidModeList) { try { llist.add(lmode.getClass().getConstructor(LMM_EntityLittleMaid.class).newInstance(pentity)); } catch (Exception e) { e.printStackTrace(); } catch (Error e) { e.printStackTrace(); } } return llist; }
/** ロードされているモードリストを表示する。 */ public static void showLoadedModes() { LMM_LittleMaidMobX.Debug("Loaded Mode lists(%d)", maidModeList.size()); for (LMM_EntityModeBase lem : maidModeList) { LMM_LittleMaidMobX.Debug("%04d : %s", lem.priority(), lem.getClass().getSimpleName()); } }
@Override public int compare(LMM_EntityModeBase o1, LMM_EntityModeBase o2) { return o1.priority() - o2.priority(); }