package rts.core.engine.ingamegui; import java.util.ArrayList; import org.newdawn.slick.SpriteSheet; import rts.core.engine.Engine; import rts.core.engine.layers.entities.EData; import rts.utils.ResourceManager; public final class GuiPanelFactory { // NOTE: this creates a new array of panels each time you call it. // If you want to access panels, don't access panels using this function. // access them using the GuiMenu's panels public static ArrayList<GuiPanel> getAllPanels(Engine engine, GuiMenu menu) { ArrayList<GuiPanel> array = new ArrayList<GuiPanel>(); array.add(getBuildingPanel(engine, menu, 0)); array.add(getDefBuildingPanel(engine, menu, 1)); array.add(getEarthPanel(engine, menu, 2)); array.add(getAirPanel(engine, menu, 3)); array.add(getMarinePanel(engine, menu, 4)); return array; } private static GuiPanel getBuildingPanel(Engine engine, GuiMenu menu, int id) { GuiPanel panel = new GuiPanel(menu, id); panel.setLocation(engine.getContainer().getWidth() - 190, 280); SpriteSheet ss = ResourceManager.getSpriteSheet("buildingbuttons"); // Barrack GuiButton barrackButton = new GuiButton(engine, ss.getSprite(1, 0), 0, 0); barrackButton.setEntType(EData.BUILDING_BARRACK); barrackButton.addEnableCombination(new int[] { EData.BUILDING_BUILDER }); panel.addButton(barrackButton); // Refinery GuiButton refineryButton = new GuiButton(engine, ss.getSprite(0, 0), 0, 0); refineryButton.setEntType(EData.BUILDING_REFINERY); refineryButton.addEnableCombination(new int[] { EData.BUILDING_BUILDER }); panel.addButton(refineryButton); // Storage GuiButton storageButton = new GuiButton(engine, ss.getSprite(2, 0), 0, 0); storageButton.setEntType(EData.BUILDING_STORAGE); storageButton.addEnableCombination(new int[] { EData.BUILDING_REFINERY }); panel.addButton(storageButton); // Healer GuiButton healerButton = new GuiButton(engine, ss.getSprite(0, 1), 0, 0); healerButton.setEntType(EData.BUILDING_HEALER); healerButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(healerButton); // Constructor GuiButton constructorButton = new GuiButton(engine, ss.getSprite(1, 1), 0, 0); constructorButton.setEntType(EData.BUILDING_CONSTRUCTOR); constructorButton.addEnableCombination(new int[] { EData.BUILDING_REFINERY }); panel.addButton(constructorButton); // Radar GuiButton radarButton = new GuiButton(engine, ss.getSprite(2, 1), 0, 0); radarButton.setEntType(EData.BUILDING_RADAR); radarButton.addEnableCombination(new int[] { EData.BUILDING_REFINERY }); panel.addButton(radarButton); // Port GuiButton portButton = new GuiButton(engine, ss.getSprite(0, 2), 0, 0); portButton.setEntType(EData.BUILDING_PORT); portButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR }); portButton.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(portButton); // Starport GuiButton starportButton = new GuiButton(engine, ss.getSprite(1, 2), 0, 0); starportButton.setEntType(EData.BUILDING_STARPORT); starportButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR }); starportButton.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(starportButton); // Starport 2 GuiButton starport2Button = new GuiButton(engine, ss.getSprite(2, 2), 0, 0); starport2Button.setEntType(EData.BUILDING_STARPORT_2); starport2Button.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR, EData.BUILDING_STARPORT }); starport2Button.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR, EData.BUILDING_STARPORT }); panel.addButton(starport2Button); // DevCenter GuiButton devCenterButton = new GuiButton(engine, ss.getSprite(0, 3), 0, 0); devCenterButton.setEntType(EData.BUILDING_DEV_CENTER); devCenterButton.addEnableCombination(new int[] { EData.BUILDING_RADAR }); panel.addButton(devCenterButton); // Big Healer GuiButton bighealerButton = new GuiButton(engine, ss.getSprite(1, 3), 0, 0); bighealerButton.setEntType(EData.BUILDING_BIG_HEALER); bighealerButton.addEnableCombination(new int[] { EData.BUILDING_HEALER, EData.BUILDING_DEV_CENTER }); panel.addButton(bighealerButton); // Big Constructor GuiButton bigConstructorButton = new GuiButton(engine, ss.getSprite(2, 3), 0, 0); bigConstructorButton.setEntType(EData.BUILDING_BIG_CONSTRUCTOR); bigConstructorButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR, EData.BUILDING_DEV_CENTER }); panel.addButton(bigConstructorButton); return panel; } private static GuiPanel getDefBuildingPanel(Engine engine, GuiMenu menu, int id) { GuiPanel panel = new GuiPanel(menu, id); panel.setLocation(engine.getContainer().getWidth() - 190, 280); SpriteSheet ss = ResourceManager.getSpriteSheet("defbuildingbuttons"); // Wall GuiButton wallButton = new GuiButton(engine, ss.getSprite(0, 0), 0, 0); wallButton.setEntType(EData.WALL); wallButton.addEnableCombination(new int[] { EData.BUILDING_BUILDER }); panel.addButton(wallButton); // Turret GuiButton turretButton = new GuiButton(engine, ss.getSprite(1, 0), 0, 0); turretButton.setEntType(EData.BUILDING_TURRET); turretButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(turretButton); // Artillery GuiButton artilleryButton = new GuiButton(engine, ss.getSprite(2, 0), 0, 0); artilleryButton.setEntType(EData.BUILDING_ARTILLERY); artilleryButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(artilleryButton); // Spy Radar GuiButton spyRadarButton = new GuiButton(engine, ss.getSprite(3, 0), 0, 0); spyRadarButton.setEntType(EData.BUILDING_SPYRADAR); spyRadarButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER }); spyRadarButton.setLimitAtOne(true); panel.addButton(spyRadarButton); // Lightning weapon GuiButton lightningWeaponButton = new GuiButton(engine, ss.getSprite(4, 0), 0, 0); lightningWeaponButton.setEntType(EData.BUILDING_LIGHTNING_WEAPON); lightningWeaponButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER }); lightningWeaponButton.setLimitAtOne(true); panel.addButton(lightningWeaponButton); // Missile Silo GuiButton missileSiloButton = new GuiButton(engine, ss.getSprite(5, 0), 0, 0); missileSiloButton.setEntType(EData.BUILDING_MISSILE_SILO); missileSiloButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER }); missileSiloButton.setLimitAtOne(true); panel.addButton(missileSiloButton); return panel; } private static GuiPanel getEarthPanel(Engine engine, GuiMenu menu, int id) { GuiPanel panel = new GuiPanel(menu, id); panel.setLocation(engine.getContainer().getWidth() - 190, 280); SpriteSheet ss = ResourceManager.getSpriteSheet("earthentbuttons"); // Soldier GuiButton soldierButton = new GuiButton(engine, ss.getSprite(0, 0), 0, 0); soldierButton.setEntType(EData.MOVER_SOLDIER); soldierButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(soldierButton); // Scout GuiButton scoutButton = new GuiButton(engine, ss.getSprite(1, 0), 0, 0); scoutButton.setEntType(EData.MOVER_SCOUT); scoutButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(scoutButton); // Soldier GuiButton jeepButton = new GuiButton(engine, ss.getSprite(2, 0), 0, 0); jeepButton.setEntType(EData.MOVER_JEEP); jeepButton.addEnableCombination(new int[] { EData.BUILDING_BARRACK }); panel.addButton(jeepButton); // Collector GuiButton collectorButton = new GuiButton(engine, ss.getSprite(0, 1), 0, 0); collectorButton.setEntType(EData.MOVER_COLLECTOR); collectorButton.addEnableCombination(new int[] { EData.BUILDING_REFINERY, EData.BUILDING_CONSTRUCTOR }); collectorButton.addEnableCombination(new int[] { EData.BUILDING_REFINERY, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(collectorButton); // Transport GuiButton transportButton = new GuiButton(engine, ss.getSprite(1, 1), 0, 0); transportButton.setEntType(EData.MOVER_TRANSPORT); transportButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR }); transportButton.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(transportButton); // Tank GuiButton tankButton = new GuiButton(engine, ss.getSprite(2, 2), 0, 0); tankButton.setEntType(EData.MOVER_TANK); tankButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR }); tankButton.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(tankButton); // Anti building GuiButton antiBuildingButton = new GuiButton(engine, ss.getSprite(2, 1), 0, 0); antiBuildingButton.setEntType(EData.MOVER_ANTI_BUILDING); antiBuildingButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_CONSTRUCTOR }); antiBuildingButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(antiBuildingButton); // Ligthning GuiButton ligthningButton = new GuiButton(engine, ss.getSprite(0, 2), 0, 0); ligthningButton.setEntType(EData.MOVER_LIGHTING); ligthningButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_CONSTRUCTOR }); ligthningButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_BIG_CONSTRUCTOR }); ligthningButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_CONSTRUCTOR }); ligthningButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(ligthningButton); // Anti aerial GuiButton antiAerialButton = new GuiButton(engine, ss.getSprite(1, 2), 0, 0); antiAerialButton.setEntType(EData.MOVER_ANTI_AERIAL); antiAerialButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT, EData.BUILDING_CONSTRUCTOR }); antiAerialButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT, EData.BUILDING_BIG_CONSTRUCTOR }); antiAerialButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT_2, EData.BUILDING_CONSTRUCTOR }); antiAerialButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT_2, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(antiAerialButton); // Flame launcher GuiButton flameLauncherButton = new GuiButton(engine, ss.getSprite(0, 3), 0, 0); flameLauncherButton.setEntType(EData.MOVER_FLAME_LAUNCHER); flameLauncherButton.addEnableCombination(new int[] { EData.BUILDING_CONSTRUCTOR }); flameLauncherButton.addEnableCombination(new int[] { EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(flameLauncherButton); // Hacker /*GuiButton hackerButton = new GuiButton(engine, ss.getSprite(2, 3), 0, 0); hackerButton.setEntType(EData.MOVER_HACKER); hackerButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_CONSTRUCTOR }); hackerButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_BIG_CONSTRUCTOR }); hackerButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_CONSTRUCTOR }); hackerButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(hackerButton); */ // Artillery GuiButton artilleryButton = new GuiButton(engine, ss.getSprite(0, 4), 0, 0); artilleryButton.setEntType(EData.MOVER_ARTILLERY); artilleryButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_CONSTRUCTOR }); artilleryButton.addEnableCombination(new int[] { EData.BUILDING_RADAR, EData.BUILDING_BIG_CONSTRUCTOR }); artilleryButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_CONSTRUCTOR }); artilleryButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(artilleryButton); // Builder GuiButton builderButton = new GuiButton(engine, ss.getSprite(1, 3), 0, 0); builderButton.setEntType(EData.MOVER_BUILDER); builderButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_BIG_CONSTRUCTOR }); panel.addButton(builderButton); return panel; } private static GuiPanel getAirPanel(Engine engine, GuiMenu menu, int id) { GuiPanel panel = new GuiPanel(menu, id); panel.setLocation(engine.getContainer().getWidth() - 190, 280); SpriteSheet ss = ResourceManager.getSpriteSheet("airentbuttons"); // Hunter GuiButton hunterButton = new GuiButton(engine, ss.getSprite(0, 0), 0, 0); hunterButton.setEntType(EData.MOVER_HUNTER_1); hunterButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT }); panel.addButton(hunterButton); // S scout GuiButton scoutButton = new GuiButton(engine, ss.getSprite(1, 0), 0, 0); scoutButton.setEntType(EData.MOVER_SKY_SCOUT); scoutButton.addEnableCombination(new int[] { EData.BUILDING_STARPORT }); panel.addButton(scoutButton); // AirShip GuiButton airshipButton = new GuiButton(engine, ss.getSprite(2, 0), 0, 0); airshipButton.setEntType(EData.MOVER_AIRSHIP); airshipButton.addEnableCombination(new int[] { EData.BUILDING_DEV_CENTER, EData.BUILDING_STARPORT_2 }); panel.addButton(airshipButton); return panel; } private static GuiPanel getMarinePanel(Engine engine, GuiMenu menu, int id) { GuiPanel panel = new GuiPanel(menu, id); panel.setLocation(engine.getContainer().getWidth() - 190, 280); SpriteSheet ss = ResourceManager.getSpriteSheet("marineentbuttons"); // Destroyer GuiButton destroyerButton = new GuiButton(engine, ss.getSprite(0, 0), 0, 0); destroyerButton.setEntType(EData.MOVER_DESTROYER); destroyerButton.addEnableCombination(new int[] { EData.BUILDING_PORT }); panel.addButton(destroyerButton); // Transport GuiButton transportButton = new GuiButton(engine, ss.getSprite(1, 0), 0, 0); transportButton.setEntType(EData.MOVER_MARINE_TRANSPORT); transportButton.addEnableCombination(new int[] { EData.BUILDING_PORT, EData.BUILDING_RADAR }); transportButton.addEnableCombination(new int[] { EData.BUILDING_PORT, EData.BUILDING_DEV_CENTER }); panel.addButton(transportButton); // Scout GuiButton scoutButton = new GuiButton(engine, ss.getSprite(2, 0), 0, 0); scoutButton.setEntType(EData.MOVER_MARINE_SCOUT); scoutButton.addEnableCombination(new int[] { EData.BUILDING_PORT }); panel.addButton(scoutButton); // Missile launcher GuiButton missileLauncherButton = new GuiButton(engine, ss.getSprite(3, 0), 0, 0); missileLauncherButton.setEntType(EData.MOVER_MISSILE_LAUNCHER); missileLauncherButton.addEnableCombination(new int[] { EData.BUILDING_PORT, EData.BUILDING_DEV_CENTER }); panel.addButton(missileLauncherButton); return panel; } }