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;
}
}