package com.rebelkeithy.ftl.view.scene.hangar; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.rebelkeithy.ftl.ship.Ship; import com.rebelkeithy.ftl.ship.ShipRegistry; import com.rebelkeithy.ftl.view.Button; import com.rebelkeithy.ftl.view.GUI; import com.rebelkeithy.ftl.view.TextureRegistry; public class ListGUI extends GUI { private HangerScreen hanger; private int offsetX; private int offsetY; private Texture background; private ListLayoutButton bTypeA; private ListLayoutButton bTypeB; private ListLayoutButton bTypeC; private int page = 0; private int selectedShip = 0; private String[][] shipNames; private ShipButton[][] shipButtons; public ListGUI(HangerScreen hanger) { super(); this.hanger = hanger; background = TextureRegistry.registerSprite("ship_list_main_2", "customizeUI/ship_list_main_2"); offsetX = (Gdx.graphics.getWidth() - background.getWidth())/2; offsetY = (Gdx.graphics.getHeight() - background.getHeight())/2; Texture bTypeAOn = TextureRegistry.registerSprite("button_typea_on", "customizeUI/button_typea_on"); Texture bTypeAOff = TextureRegistry.registerSprite("button_typea_off", "customizeUI/button_typea_off"); Texture bTypeASelect = TextureRegistry.registerSprite("button_typea_select2", "customizeUI/button_typea_select2"); bTypeA = new ListLayoutButton(this, 0, offsetX + 700, offsetY + 378, bTypeAOn); bTypeA.setDownImage(bTypeASelect); bTypeA.setHoverImage(bTypeASelect); bTypeA.setDisabledImage(bTypeAOff); bTypeA.setSelected(true); addButton(bTypeA); Texture bTypeBOn = TextureRegistry.registerSprite("button_typeb_on", "customizeUI/button_typeb_on"); Texture bTypeBOff = TextureRegistry.registerSprite("button_typeb_off", "customizeUI/button_typeb_off"); Texture bTypeBSelect = TextureRegistry.registerSprite("button_typeb_select2", "customizeUI/button_typeb_select2"); bTypeB = new ListLayoutButton(this, 1, offsetX + 784, offsetY + 378, bTypeBOn); bTypeB.setDownImage(bTypeBSelect); bTypeB.setHoverImage(bTypeBSelect); bTypeB.setDisabledImage(bTypeBOff); addButton(bTypeB); Texture bTypeCOn = TextureRegistry.registerSprite("button_typec_on", "customizeUI/button_typec_on"); Texture bTypeCOff = TextureRegistry.registerSprite("button_typec_off", "customizeUI/button_typec_off"); Texture bTypeCSelect = TextureRegistry.registerSprite("button_typec_select2", "customizeUI/button_typec_select2"); bTypeC = new ListLayoutButton(this, 2, offsetX + 868, offsetY + 378, bTypeCOn); bTypeC.setDownImage(bTypeCSelect); bTypeC.setHoverImage(bTypeCSelect); bTypeC.setDisabledImage(bTypeCOff); addButton(bTypeC); shipNames = new String[3][10]; shipNames[0][0] = "The Kestrel"; shipNames[1][0] = "Red-Tail"; shipNames[0][1] = "The Torus"; shipNames[1][1] = "The Vortex"; shipNames[0][2] = "The Osprey"; shipNames[0][3] = "The Adjudicator"; shipButtons = new ShipButton[3][10]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 10; j++) { Ship ship = null; if(shipNames[i][j] != null) { ship = ShipRegistry.build(shipNames[i][j], shipNames[i][j]); } shipButtons[i][j] = new ShipButton(this, ship, offsetX + 24 + 205 * (j%5), offsetY + 240 - 200 * (j/5)); } } } public void render(SpriteBatch batch) { bTypeB.setPosition(offsetX + 784, offsetY + 378); if(show) { batch.draw(background, offsetX, offsetY); bTypeA.render(batch); bTypeB.render(batch); bTypeC.render(batch); for(int j = 0; j < 10; j++) { shipButtons[page][j].render(batch); } } } public void setPage(int page) { bTypeA.setSelected(false); bTypeB.setSelected(false); bTypeC.setSelected(false); this.page = page; } public void chooseShip(Ship ship) { hanger.choostFromList(ship); } @Override public boolean click(int screenX, int screenY, int button) { super.click(screenX, screenY, button); if(!show) return false; for(int j = 0; j < 10; j++) { if(shipButtons[page][j].click(screenX, screenY, button)) { hanger.setLayout(shipButtons[0][j].getShip(), shipButtons[1][j].getShip(), shipButtons[2][j].getShip(), page); selectedShip = j; return true; } } return false; } public void nextShip() { for(int i = 0; i < 10; i++) { selectedShip++; if(selectedShip == 10) selectedShip = 0; // TODO: eventually change this to "ship is unlocked" if(shipButtons[0][selectedShip].getShip() != null) { hanger.setLayout(shipButtons[0][selectedShip].getShip(), shipButtons[1][selectedShip].getShip(), shipButtons[2][selectedShip].getShip(), page); return; } } } public void prevShip() { for(int i = 0; i < 10; i++) { selectedShip--; if(selectedShip < 0) selectedShip = 9; // TODO: eventually change this to "ship is unlocked" if(shipButtons[0][selectedShip].getShip() != null) { hanger.setLayout(shipButtons[0][selectedShip].getShip(), shipButtons[1][selectedShip].getShip(), shipButtons[2][selectedShip].getShip(), page); return; } } } }