package com.lucasdnd.ags.ui; import org.newdawn.slick.GameContainer; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.StateBasedGame; import org.newdawn.slick.util.FontUtils.Alignment; import com.lucasdnd.ags.gameplay.Business; import com.lucasdnd.ags.gameplay.market.Market; import com.lucasdnd.ags.system.GameSystem; import com.lucasdnd.ags.system.MainState; import com.lucasdnd.ags.system.ResourceLoader; public class ManagementListRow extends ListRow { private int rowId; // Buttons protected Button rentMinusButton; // Decreases the Rent Price by $0,10 ($0,50 if shift) protected Button rentPlusButton; // Increases the Rent Price by $0,10 ($0,50 if shift) protected Button sellMinusButton; // Decreases the Sell Price by $1,00 ($5,00 if shift) protected Button sellPlusButton; // Increases the Sell Price by $1,00 ($5,00 if shift) protected Button rentStockMinusButton; protected Button rentStockPlusButton; protected Button saleStockMinusButton; protected Button saleStockPlusButton; protected Button playStockMinusButton; protected Button playStockPlusButton; protected CheckBox playCheckBox; protected CheckBox rentCheckBox; protected CheckBox saleCheckBox; protected CheckBox restockCheckBox; private float buttonExtraPadding = 48f; // Modification Control private boolean rentPriceModified; // Indicates if this Row has been modified private boolean sellPriceModified; // Indicates if this Row has been modified private int rentPriceChange; // Rent Price change private int sellPriceChange; // Sell Price change private boolean rentStockModified; private boolean saleStockModified; private boolean playStockModified; private int playStockChange; private int rentStockChange; private int saleStockChange; private boolean playAvailableModified; private boolean rentAvailableModified; private boolean saleAvailableModified; private boolean autoRestockModified; /** * Market Game Constructor * @param marketGame * @throws SlickException */ public ManagementListRow(int rowId, Business business, Market market) throws SlickException { this.rowId = rowId; // The Buttons rentMinusButton = new Button(ResourceLoader.getInstance().minusButtonImages, 0, 0); rentPlusButton = new Button(ResourceLoader.getInstance().plusButtonImages, 0, 0); sellMinusButton = new Button(ResourceLoader.getInstance().minusButtonImages, 0, 0); sellPlusButton = new Button(ResourceLoader.getInstance().plusButtonImages, 0, 0); rentStockMinusButton = new Button(ResourceLoader.getInstance().minusButtonImages, 0, 0);; rentStockPlusButton = new Button(ResourceLoader.getInstance().plusButtonImages, 0, 0);; saleStockMinusButton = new Button(ResourceLoader.getInstance().minusButtonImages, 0, 0);; saleStockPlusButton = new Button(ResourceLoader.getInstance().plusButtonImages, 0, 0);; playStockMinusButton = new Button(ResourceLoader.getInstance().minusButtonImages, 0, 0);; playStockPlusButton = new Button(ResourceLoader.getInstance().plusButtonImages, 0, 0);; playCheckBox = new CheckBox("", true); rentCheckBox = new CheckBox("", true); saleCheckBox = new CheckBox("", true); restockCheckBox = new CheckBox("", true); playCheckBox.setSelected(true); rentCheckBox.setSelected(true); saleCheckBox.setSelected(true); restockCheckBox.setSelected(true); // Creates the Row Columns columns = new ListColumn[20]; columns[0] = new ListColumn(0, ResourceLoader.getInstance().gameRatingImages[rowId], "" + rowId, 12, 4); columns[0].setDataType(ListColumn.NUMBER); /* Rent Price */ columns[1] = new ListColumn(1, rentMinusButton, 13, 3); columns[1].setDataType(ListColumn.TEXT); columns[2] = new ListColumn(2, GameSystem.printMoney(market.getGameRentPriceByDemand(rowId), false), Alignment.CENTER); columns[2].setDataType(ListColumn.NUMBER); columns[3] = new ListColumn(3, rentPlusButton, 0, 3); columns[3].setDataType(ListColumn.TEXT); /* Sell Price */ columns[4] = new ListColumn(4, sellMinusButton, 13, 3); columns[4].setDataType(ListColumn.TEXT); columns[5] = new ListColumn(5, GameSystem.printMoney(market.getGamePriceByDemand(rowId), false), Alignment.CENTER); columns[5].setDataType(ListColumn.NUMBER); columns[6] = new ListColumn(6, sellPlusButton, 0, 3); columns[6].setDataType(ListColumn.TEXT); /* Min. Play Stock */ columns[7] = new ListColumn(7, playStockMinusButton, 13, 3); columns[7].setDataType(ListColumn.TEXT); columns[8] = new ListColumn(8, "0", Alignment.CENTER); columns[8].setDataType(ListColumn.NUMBER); columns[9] = new ListColumn(9, playStockPlusButton, 0, 3); columns[9].setDataType(ListColumn.TEXT); /* Min. Rent Stock */ columns[10] = new ListColumn(10, rentStockMinusButton, 13, 3); columns[10].setDataType(ListColumn.TEXT); columns[11] = new ListColumn(11, "0", Alignment.CENTER); columns[11].setDataType(ListColumn.NUMBER); columns[12] = new ListColumn(12, rentStockPlusButton, 0, 3); columns[12].setDataType(ListColumn.TEXT); /* Min. Sale Stock */ columns[13] = new ListColumn(13, saleStockMinusButton, 13, 3); columns[13].setDataType(ListColumn.TEXT); columns[14] = new ListColumn(14, "0", Alignment.CENTER); columns[14].setDataType(ListColumn.NUMBER); columns[15] = new ListColumn(15, saleStockPlusButton, 0, 3); columns[15].setDataType(ListColumn.TEXT); // Play columns[16] = new ListColumn(16, playCheckBox, 13, 3); columns[16].setDataType(ListColumn.TEXT); // Rent columns[17] = new ListColumn(17, rentCheckBox, 13, 3); columns[17].setDataType(ListColumn.TEXT); // Sell columns[18] = new ListColumn(18, saleCheckBox, 13, 3); columns[18].setDataType(ListColumn.TEXT); // Auto restock columns[19] = new ListColumn(19, restockCheckBox, 34, 3); columns[19].setDataType(ListColumn.TEXT); this.isAvailable = true; } /** * The update method, where we call the super class update (for mouse overs) and check for clicks. */ public void update(GameContainer container, StateBasedGame game, int delta, MainState mainState, Business business, boolean leftMouseClicked, boolean leftMouseDown, int mouseX, int mouseY, boolean isShiftDown) throws SlickException { // Not modified yet rentPriceModified = false; sellPriceModified = false; rentStockModified = false; playStockModified = false; saleStockModified = false; playAvailableModified = false; rentAvailableModified = false; saleAvailableModified = false; autoRestockModified = false; // Update the Buttons positions rentMinusButton.setxPos(columns[1].getxPos() + columns[1].getImageLeftPadding()); rentMinusButton.setyPos(columns[1].getyPos() + columns[1].getImageTopPadding()); rentPlusButton.setxPos(columns[3].getxPos() + columns[3].getImageLeftPadding()); rentPlusButton.setyPos(columns[3].getyPos() + columns[3].getImageTopPadding()); sellMinusButton.setxPos(columns[4].getxPos() + columns[4].getImageLeftPadding()); sellMinusButton.setyPos(columns[4].getyPos() + columns[4].getImageTopPadding()); sellPlusButton.setxPos(columns[6].getxPos() + columns[6].getImageLeftPadding()); sellPlusButton.setyPos(columns[6].getyPos() + columns[6].getImageTopPadding()); playStockMinusButton.setxPos(columns[7].getxPos() + columns[7].getImageLeftPadding() + buttonExtraPadding); playStockMinusButton.setyPos(columns[7].getyPos() + columns[7].getImageTopPadding()); playStockPlusButton.setxPos(columns[9].getxPos() + columns[9].getImageLeftPadding() - buttonExtraPadding); playStockPlusButton.setyPos(columns[9].getyPos() + columns[9].getImageTopPadding()); rentStockMinusButton.setxPos(columns[10].getxPos() + columns[10].getImageLeftPadding() + buttonExtraPadding); rentStockMinusButton.setyPos(columns[10].getyPos() + columns[10].getImageTopPadding()); rentStockPlusButton.setxPos(columns[12].getxPos() + columns[12].getImageLeftPadding() - buttonExtraPadding); rentStockPlusButton.setyPos(columns[12].getyPos() + columns[12].getImageTopPadding()); saleStockMinusButton.setxPos(columns[13].getxPos() + columns[13].getImageLeftPadding() + buttonExtraPadding); saleStockMinusButton.setyPos(columns[13].getyPos() + columns[13].getImageTopPadding()); saleStockPlusButton.setxPos(columns[15].getxPos() + columns[15].getImageLeftPadding() - buttonExtraPadding); saleStockPlusButton.setyPos(columns[15].getyPos() + columns[15].getImageTopPadding()); playCheckBox.setxPos(columns[16].getxPos() + columns[16].getImageLeftPadding()); playCheckBox.setyPos(columns[16].getyPos() + columns[16].getImageTopPadding()); rentCheckBox.setxPos(columns[17].getxPos() + columns[17].getImageLeftPadding()); rentCheckBox.setyPos(columns[17].getyPos() + columns[17].getImageTopPadding()); saleCheckBox.setxPos(columns[18].getxPos() + columns[18].getImageLeftPadding()); saleCheckBox.setyPos(columns[18].getyPos() + columns[18].getImageTopPadding()); restockCheckBox.setxPos(columns[19].getxPos() + columns[19].getImageLeftPadding()); restockCheckBox.setyPos(columns[19].getyPos() + columns[19].getImageTopPadding()); // Update the Buttons (check for mouse over) rentMinusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); rentPlusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); sellMinusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); sellPlusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); playStockMinusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); playStockPlusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); rentStockMinusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); rentStockPlusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); saleStockMinusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); saleStockPlusButton.update(container, game, delta, leftMouseClicked, leftMouseDown, mouseX, mouseY); playCheckBox.update(leftMouseClicked, mouseX, mouseY); rentCheckBox.update(leftMouseClicked, mouseX, mouseY); saleCheckBox.update(leftMouseClicked, mouseX, mouseY); restockCheckBox.update(leftMouseClicked, mouseX, mouseY); // Rent - Decrese Price if(rentMinusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { // Modified rentPriceModified = true; if(isShiftDown) { rentPriceChange = -50; } else { rentPriceChange = -10; } } // Rent - Increase Price else if(rentPlusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { // Modified rentPriceModified = true; if(isShiftDown) { rentPriceChange = 50; } else { rentPriceChange = 10; } } // Sell - Decrese Price else if(sellMinusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { // Modified sellPriceModified = true; if(isShiftDown) { sellPriceChange = -500; } else { sellPriceChange = -100; } } // Sell - Increase Price else if(sellPlusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { // Modified sellPriceModified = true; if(isShiftDown) { sellPriceChange = 500; } else { sellPriceChange = 100; } } // Decrease play stock else if (playStockMinusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { playStockModified = true; playStockChange = -1; } // Increase play stock else if (playStockPlusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { playStockModified = true; playStockChange = 1; } // Decrease rent stock else if (rentStockMinusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { rentStockModified = true; rentStockChange = -1; } // Increase rent stock else if (rentStockPlusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { rentStockModified = true; rentStockChange = 1; } // Decrease sale stock else if (saleStockMinusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { saleStockModified = true; saleStockChange = -1; } // Increase sale stock else if (saleStockPlusButton.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { saleStockModified = true; saleStockChange = 1; } // Play available else if (playCheckBox.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { playAvailableModified = true; } // Rent available else if (rentCheckBox.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { rentAvailableModified = true; } // Sale available else if (saleCheckBox.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { saleAvailableModified = true; } // Auto restock available else if (restockCheckBox.gotLeftClicked(leftMouseClicked, mouseX, mouseY)) { autoRestockModified = true; } } public void setRowId(int rowId) { this.rowId = rowId; } public boolean isRentPriceModified() { return rentPriceModified; } public void setRentPriceModified(boolean rentPriceModified) { this.rentPriceModified = rentPriceModified; } public boolean isSellPriceModified() { return sellPriceModified; } public void setSellPriceModified(boolean sellPriceModified) { this.sellPriceModified = sellPriceModified; } public int getRentPriceChange() { return rentPriceChange; } public void setRentPriceChange(int rentPriceChange) { this.rentPriceChange = rentPriceChange; } public int getSellPriceChange() { return sellPriceChange; } public void setSellPriceChange(int sellPriceChange) { this.sellPriceChange = sellPriceChange; } public int getRowId() { return rowId; } public boolean isRentStockModified() { return rentStockModified; } public void setRentStockModified(boolean rentStockModified) { this.rentStockModified = rentStockModified; } public boolean isSaleStockModified() { return saleStockModified; } public void setSaleStockModified(boolean saleStockModified) { this.saleStockModified = saleStockModified; } public boolean isPlayStockModified() { return playStockModified; } public void setPlayStockModified(boolean playStockModified) { this.playStockModified = playStockModified; } public int getPlayStockChange() { return playStockChange; } public void setPlayStockChange(int playStockChange) { this.playStockChange = playStockChange; } public int getRentStockChange() { return rentStockChange; } public void setRentStockChange(int rentStockChange) { this.rentStockChange = rentStockChange; } public int getSaleStockChange() { return saleStockChange; } public void setSaleStockChange(int saleStockChange) { this.saleStockChange = saleStockChange; } public boolean isPlayAvailableModified() { return playAvailableModified; } public void setPlayAvailableModified(boolean playAvailableModified) { this.playAvailableModified = playAvailableModified; } public boolean isRentAvailableModified() { return rentAvailableModified; } public void setRentAvailableModified(boolean rentAvailableModified) { this.rentAvailableModified = rentAvailableModified; } public boolean isSaleAvailableModified() { return saleAvailableModified; } public void setSaleAvailableModified(boolean saleAvailableModified) { this.saleAvailableModified = saleAvailableModified; } public boolean isAutoRestockModified() { return autoRestockModified; } public void setAutoRestockModified(boolean autoRestockModified) { this.autoRestockModified = autoRestockModified; } public CheckBox getPlayCheckBox() { return playCheckBox; } public CheckBox getRentCheckBox() { return rentCheckBox; } public CheckBox getSaleCheckBox() { return saleCheckBox; } public CheckBox getRestockCheckBox() { return restockCheckBox; } }