package org.multiverseking.loader; import org.json.simple.JSONObject; import org.multiverseking.utility.component.InfluenceComponent; import org.multiverseking.utility.component.WeaponSlotsComponent; import org.multiverseking.render.AbstractRender.RenderType; /** * * @author roah */ public class TitanLoader extends UnitLoader { private final InitialTitanStatsComponent initialStatsComponent; TitanLoader(JSONObject data, EntityLoader eLoader) { super((JSONObject) data.get(RenderType.Unit.toString() + "_STATS"), eLoader); JSONObject titanData = (JSONObject) data.get(RenderType.Titan.toString() + "_STATS"); Number influenceRange = (Number) titanData.get("influenceRange"); Number atbBurst = (Number) titanData.get("atbBurst"); Number weaponSlots = (Number) titanData.get("weaponSlots"); initialStatsComponent = new InitialTitanStatsComponent( influenceRange.byteValue(), atbBurst.byteValue(), weaponSlots.byteValue(), super.getInitialStatsComponent()); } @Override public InitialTitanStatsComponent getInitialStatsComponent() { return initialStatsComponent; } public class InitialTitanStatsComponent extends InitialUnitStatsComponent { private final byte influenceRange; private final byte maxAtbBurst; private final byte weaponSlots; private InitialTitanStatsComponent(byte influenceRange, byte maxAtbBurst, byte weaponSlots, InitialUnitStatsComponent stats) { super(stats); this.influenceRange = influenceRange; this.maxAtbBurst = maxAtbBurst; this.weaponSlots = weaponSlots; } /** * Range of the titan where he can Corrupt tiles arround him. */ public byte getInfluenceRange() { return influenceRange; } public InfluenceComponent getInfluenceComponent() { return new InfluenceComponent(influenceRange); } /** * Battle Burst gauge size of the titan. */ public byte getMaxAtbBurst() { return maxAtbBurst; } /** * Weapon the titan can hold during battle. */ public byte getWeaponSlots() { return weaponSlots; } public WeaponSlotsComponent getWeaponSlotsComponent() { return new WeaponSlotsComponent(weaponSlots); } } }