package rts.core.engine.layers.entities; import rts.core.engine.Engine; import rts.core.engine.layers.entities.buildings.Artillery; import rts.core.engine.layers.entities.buildings.Barrack; import rts.core.engine.layers.entities.buildings.BigConstructor; import rts.core.engine.layers.entities.buildings.BigHealer; import rts.core.engine.layers.entities.buildings.Builder; import rts.core.engine.layers.entities.buildings.Constructor; import rts.core.engine.layers.entities.buildings.DevCenter; import rts.core.engine.layers.entities.buildings.LightningWeapon; import rts.core.engine.layers.entities.buildings.Healer; import rts.core.engine.layers.entities.buildings.Port; import rts.core.engine.layers.entities.buildings.Radar; import rts.core.engine.layers.entities.buildings.Refinery; import rts.core.engine.layers.entities.buildings.SpyRadar; import rts.core.engine.layers.entities.buildings.Starport; import rts.core.engine.layers.entities.buildings.Starport2; import rts.core.engine.layers.entities.buildings.Storage; import rts.core.engine.layers.entities.buildings.Televat; import rts.core.engine.layers.entities.buildings.MissileSilo; import rts.core.engine.layers.entities.buildings.Turret; import rts.core.engine.layers.entities.others.Barrel; import rts.core.engine.layers.entities.others.Bridge; import rts.core.engine.layers.entities.others.Car; import rts.core.engine.layers.entities.others.Lamp; import rts.core.engine.layers.entities.others.Mineral; import rts.core.engine.layers.entities.others.OldBuilding; import rts.core.engine.layers.entities.others.OldRadar; import rts.core.engine.layers.entities.others.Wall; import rts.core.engine.layers.entities.vehicles.BuilderMover; import rts.core.engine.layers.entities.vehicles.Collector; import rts.core.engine.layers.entities.vehicles.Mover; import rts.core.engine.layers.entities.vehicles.Transport; import rts.core.network.ig_tcp_container.CreateEntityState; public class EntityGenerator { // From map public static ActiveEntity createActiveEntityFromMap(Engine engine, int type, float x, float y) { ActiveEntity ae = createEntity(engine, type, -1, -1, -1); ae.setLocation(x, y); return ae; } // From network public static ActiveEntity createActiveEntityFromNetwork(Engine engine, CreateEntityState ces) { return createActiveEntity(engine, ces.type, ces.playerId, ces.teamId, ces.networkId, ces.life, ces.x, ces.y); } // Game without network public static ActiveEntity createActiveEntityNoNetwork(Engine engine, int type, int playerId, int teamId) { return createEntity(engine, type, playerId, teamId, -1); } private static ActiveEntity createActiveEntity(Engine engine, int type, int playerId, int teamId, int networkId, int life, float x, float y) { ActiveEntity ae = createEntity(engine, type, playerId, teamId, networkId); ae.setLocation(x, y); if (life != 0) ae.setLife(life); return ae; } private static ActiveEntity createEntity(Engine engine, int type, int playerId, int teamId, int networkId) { if (EData.isMisc(type)) { switch (type) { case EData.MINERAL: return new Mineral(engine, networkId); case EData.OLD_CAR1: return new Car(engine, type, networkId); case EData.OLD_CAR2: return new Car(engine, type, networkId); case EData.OLD_BUILDING: return new OldBuilding(engine, networkId); case EData.OLD_BARREL: return new Barrel(engine, networkId); case EData.OLD_RADAR: return new OldRadar(engine, networkId); case EData.OLD_LAMP: return new Lamp(engine, networkId); default: return null; } } else { if (EData.isMover(type)) { // Special case switch (type) { case EData.MOVER_COLLECTOR: return new Collector(engine, playerId, teamId, networkId); case EData.MOVER_BUILDER: return new BuilderMover(engine, playerId, teamId, networkId); case EData.MOVER_TRANSPORT: return new Transport(engine, false, playerId, teamId, networkId); case EData.MOVER_MARINE_TRANSPORT: return new Transport(engine, true, playerId, teamId, networkId); default: // Standard mover return new Mover(engine, type, playerId, teamId, networkId); } } else { switch (type) { case EData.BUILDING_ARTILLERY: return new Artillery(engine, playerId, teamId, networkId); case EData.BUILDING_BARRACK: return new Barrack(engine, playerId, teamId, networkId); case EData.BUILDING_BIG_CONSTRUCTOR: return new BigConstructor(engine, playerId, teamId, networkId); case EData.BUILDING_BIG_HEALER: return new BigHealer(engine, playerId, teamId, networkId); case EData.BUILDING_BUILDER: return new Builder(engine, playerId, teamId, networkId); case EData.BUILDING_CONSTRUCTOR: return new Constructor(engine, playerId, teamId, networkId); case EData.BUILDING_DEV_CENTER: return new DevCenter(engine, playerId, teamId, networkId); case EData.BUILDING_LIGHTNING_WEAPON: return new LightningWeapon(engine, playerId, teamId, networkId); case EData.BUILDING_HEALER: return new Healer(engine, playerId, teamId, networkId); case EData.BUILDING_PORT: return new Port(engine, playerId, teamId, networkId); case EData.BUILDING_RADAR: return new Radar(engine, playerId, teamId, networkId); case EData.BUILDING_REFINERY: return new Refinery(engine, playerId, teamId, networkId); case EData.BUILDING_SPYRADAR: return new SpyRadar(engine, playerId, teamId, networkId); case EData.BUILDING_STARPORT: return new Starport(engine, playerId, teamId, networkId); case EData.BUILDING_STARPORT_2: return new Starport2(engine, playerId, teamId, networkId); case EData.BUILDING_STORAGE: return new Storage(engine, playerId, teamId, networkId); case EData.BUILDING_TELEVAT: return new Televat(engine, playerId, teamId, networkId); case EData.BUILDING_MISSILE_SILO: return new MissileSilo(engine, playerId, teamId, networkId); case EData.BUILDING_TURRET: return new Turret(engine, playerId, teamId, networkId); case EData.VERTICAL_BRIDGE: return new Bridge(engine, EData.VERTICAL_BRIDGE, networkId); case EData.HORIZONTAL_BRIDGE: return new Bridge(engine, EData.HORIZONTAL_BRIDGE, networkId); case EData.WALL: return new Wall(engine, playerId, teamId, networkId); default: return null; } } } } }