package com.lucasdnd.ags.ui; import org.newdawn.slick.Color; import org.newdawn.slick.Font; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.StateBasedGame; import org.newdawn.slick.util.FontUtils; import org.newdawn.slick.util.FontUtils.Alignment; import com.lucasdnd.ags.gameplay.Business; import com.lucasdnd.ags.system.GameSystem; import com.lucasdnd.ags.system.ResourceLoader; public class FinancesListRow extends ListRow { private int row; // Row identification private Color lightGrayColor = new Color(0.998f, 0.998f, 0.998f); public FinancesListRow(Business business, int row) throws SlickException { this.row = row; final int numberOfColumns = 10; // Total number of columns (label + x months) columns = new ListColumn[numberOfColumns]; columns[0] = new ListColumn(0, "", Alignment.LEFT); columns[0].setDataType(ListColumn.TEXT); columns[0].setText(getLabelText()); columns[1] = new ListColumn(1, "", Alignment.RIGHT); columns[1].setDataType(ListColumn.NUMBER); columns[2] = new ListColumn(2, "", Alignment.RIGHT); columns[2].setDataType(ListColumn.NUMBER); columns[3] = new ListColumn(3, "", Alignment.RIGHT); columns[3].setDataType(ListColumn.NUMBER); columns[4] = new ListColumn(4, "", Alignment.RIGHT); columns[4].setDataType(ListColumn.NUMBER); columns[5] = new ListColumn(5, "", Alignment.RIGHT); columns[5].setDataType(ListColumn.NUMBER); columns[6] = new ListColumn(6, "", Alignment.RIGHT); columns[6].setDataType(ListColumn.NUMBER); columns[7] = new ListColumn(7, "", Alignment.RIGHT); columns[7].setDataType(ListColumn.NUMBER); columns[8] = new ListColumn(8, "", Alignment.RIGHT); columns[8].setDataType(ListColumn.NUMBER); columns[9] = new ListColumn(9, "", Alignment.RIGHT); columns[9].setDataType(ListColumn.NUMBER); this.isAvailable = true; } private String getLabelText() { switch(row) { case Business.BUYING_GAME: return "Buying games"; case Business.BUYING_CONSOLE: return "Buying consoles"; case Business.BUYING_ASSET: return "Buying assets"; case Business.PAYING_BILLS: return "Utilities"; case Business.BUYING_MAP: return "Map expansion"; case Business.SELLING_GAME: return "Selling games"; case Business.RENTING_GAME: return "Renting games"; case Business.PLAYING_GAME: return "Playing on consoles"; case Business.DISPOSING: return "Recycling"; case Business.EMPTY: return ""; case Business.TOTAL: return "Total"; default: return ""; } } public void render(GameContainer container, StateBasedGame game, Graphics g, Font greenFont, Font redFont, Font shadowFont, int[] values) throws SlickException { // Header FontUtils.drawString(ResourceLoader.getInstance().tinyLightGrayFont, columns[0].text, columns[0].textAlignment, (int)columns[0].xPos + 1, (int)columns[0].yPos + 1 + 4, (int)columns[0].width, lightGrayColor); FontUtils.drawString(ResourceLoader.getInstance().tinyBlackFont, columns[0].text, columns[0].textAlignment, (int)columns[0].xPos, (int)columns[0].yPos + 4, (int)columns[0].width, Color.black); // Render the columns for(int i = 1; i < columns.length; i++) { // Positive or negative value? String value = GameSystem.printMoney(values[i - 1], false); if(values[i - 1] > 0) { FontUtils.drawString(shadowFont, value, columns[i].textAlignment, (int)columns[i].xPos + 1, (int)columns[i].yPos + 1 + 4, (int)columns[i].width, lightGrayColor); FontUtils.drawString(greenFont, value, columns[i].textAlignment, (int)columns[i].xPos, (int)columns[i].yPos + 4, (int)columns[i].width, Color.gray); } else if (values[i - 1] == 0) { FontUtils.drawString(shadowFont, value, columns[i].textAlignment, (int)columns[i].xPos + 1, (int)columns[i].yPos + 1 + 4, (int)columns[i].width, lightGrayColor); FontUtils.drawString(ResourceLoader.getInstance().tinyBlackFont, value, columns[i].textAlignment, (int)columns[i].xPos, (int)columns[i].yPos + 4, (int)columns[i].width, Color.gray); } else { FontUtils.drawString(shadowFont, value, columns[i].textAlignment, (int)columns[i].xPos + 1, (int)columns[i].yPos + 1 + 4, (int)columns[i].width, lightGrayColor); FontUtils.drawString(redFont, value, columns[i].textAlignment, (int)columns[i].xPos, (int)columns[i].yPos + 4, (int)columns[i].width, Color.gray); } } } }