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