Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package md.obama.game;
- import java.awt.Container;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import java.io.File;
- import java.text.DecimalFormat;
- import java.util.Formatter;
- import java.util.Scanner;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import md.obama.game.entities.buildings.Booster;
- import md.obama.game.entities.buildings.Building;
- import md.obama.game.entities.buildings.MetalExtractor;
- import md.obama.game.entities.buildings.SolarArray;
- import md.obama.game.gfx.Colours;
- import md.obama.game.gfx.Font;
- import md.obama.game.gfx.Screen;
- import md.obama.game.level.GenerateLevel;
- import md.obama.game.level.Level;
- public class GameHandler extends JPanel implements MouseListener, MouseMotionListener{
- /**
- * Really
- */
- private static final long serialVersionUID = 1L;
- private static final byte GRIDMAX = 14;
- private static final byte GRIDMIN = 0;
- private final Container cc = getRootPane();
- private boolean can_generate = true;
- GenerateLevel genLvl = new GenerateLevel();
- //Metal
- public double metalBank=8;
- public float metalPerSecond=1;
- public int metalClicked=0;
- public int metalPerClick=1;
- public int metalFromClicking=0;
- public int metalFromBuildings=0;
- public int totalTicks=0;
- //Energy
- public double energyMax=0; //Max allowed energy
- public double energyUse=0; //Current energy consumption
- public Level level;
- public Screen screen;
- //debug vars
- //private boolean skip_ask = false;
- private boolean skip_cost = false;
- private boolean debug_help = false;
- //buying / placing things
- private boolean placing = false;
- private boolean moving = false;
- private short place_id = 0;
- int mouse_y = 200;
- int mouse_x = 200;
- private byte place_sprite_x=0, place_sprite_y=0;
- int place_color = Colours.get(000, 222, 444, 333);
- //stats
- int stat_id;
- int stat_lvl;
- int stat_x;
- int stat_y;
- double stat_meCost;
- double stat_enCost;
- double stat_enUsed;
- double stat_product;
- double stat_productB;
- float stat_pboost;
- boolean show_stats = false;
- Building stat_ding;
- DecimalFormat df = new DecimalFormat("###.##");
- @Override
- public void mousePressed(MouseEvent e) {
- int x = e.getX();
- int y = e.getY();
- int gridX = Math.round(x/16/2)-12;
- int gridY = Math.round(y/16/2)-1;
- if(e.getButton() == MouseEvent.BUTTON3){
- System.out.printf("Coords: %s,%s tiled: %s,%s Grid: %s,%s\n", x, y, x/8, y/8, gridX, gridY);
- placing = false;
- moving = false;
- }
- else if(placing == false){
- if(boxed(x,y,1, 456, 400, 40)){ //Click the ore for metal
- metalBank += metalPerClick;
- metalFromClicking += metalPerClick;
- metalClicked++;
- System.out.printf("Total metal! %s, Metal clicked %s.\n", ((long)Math.floor(metalBank)), metalClicked);
- }
- if(boxed(x,y,1, 500, 400, 20) && debug_help){ //Just increases metal per click.
- metalPerClick++;
- metalPerSecond+=5;
- System.out.printf("Metal per click %s, Metal from clicking %s.\n", metalPerClick, metalFromClicking);
- }
- /* if(mouse_x >= 388 && mouse_y >=34
- && mouse_x <=863 && mouse_y <=498){ //Clicking a building
- if(Building.build[gridX][gridY] != null){
- Building ding = Building.build[gridX][gridY];
- updateEnergy();
- if(ding.id==1){ //Metal extractor
- clickExtractor(ding, false);
- } else if (ding.id == 2) { // Booster
- clickBooster(ding, false);
- } else if (ding.id == 3) { // Solar Array
- clickSolarArray(ding, false);
- }
- }
- }*/
- gridX = Math.round(x/32)-12;
- gridY = Math.round(y/32)-1;
- if(gridX >=GRIDMIN && gridY >= GRIDMIN && gridX <=GRIDMAX && gridY <= GRIDMAX){
- if(moving){
- if(Building.build[gridX][gridY] == null){ //if it is empty
- Building.build[gridX][gridY] = Building.build[stat_x][stat_y];
- Building.build[stat_x][stat_y] = null;
- Building ding = Building.build[gridX][gridY];
- ding.setGrid(gridX,gridY);
- updateStats(ding, gridX, gridY);
- show_stats = true;
- moving = false;
- }
- } //if we're not moving and we click another building
- else if(Building.build[gridX][gridY] != null){
- Building ding = Building.build[gridX][gridY]; //clicking to show stats
- updateStats(ding, gridX, gridY);
- show_stats = true;
- }
- }
- if(show_stats){
- if(boxed(x,y,0,375,115,20)){ //UPGRADE BUTTON
- updateEnergy();
- if(stat_ding.id==1){ //Metal extractor
- clickExtractor(stat_ding);
- } else if (stat_ding.id == 2) { // Booster
- clickBooster(stat_ding);
- } else if (stat_ding.id == 3) { // Solar Array
- clickSolarArray(stat_ding);
- }
- updateStats(stat_ding, stat_ding.gridX, stat_ding.gridY);
- }
- else if(boxed(x,y,140,375,65,20)){ //MOVE BUTTON
- moving = true;
- Building ding = Building.build[stat_x][stat_y];
- place_id = ding.id;
- place_sprite_x = (byte) ding.x;
- place_sprite_y = (byte) ding.y;
- place_color = ding.getTileColour();
- }
- else if(boxed(x,y,240,375,70,20)){ //SELL BUTTON
- if(JOptionPane.showConfirmDialog(cc, "Sell building?")==0){
- double enCost = stat_ding.getEnergyCost();
- double enUsed = stat_ding.getEnergyUsed();
- int lvl = stat_ding.getUpgrade();
- metalBank += ((enUsed*enCost)*2)*lvl;
- Building.build[stat_x][stat_y] = null;
- tick(false); //update the metal bank on screen
- }
- }
- }
- }
- else{ //Place buildings
- if(placing){
- gridX = Math.round(x/32)-12;
- gridY = Math.round(y/32)-1;
- int xx = (gridX*2)+24;
- int yy = (gridY*2)+1;
- if(gridX >=0 && gridY >= 0 && gridX <=14 && gridY <= 14){
- if(place_id==1){//Metal Extractor
- if(Building.build[gridX][gridY] == null){
- if(level.getTile(xx,yy).getId()==5 && level.getTile(xx+1,yy).getId()==6 &&
- level.getTile(xx,yy+1).getId()==7 && level.getTile(xx+1,yy+1).getId()==8){
- new MetalExtractor(null, 1, place_sprite_x, place_sprite_y,gridX,gridY, place_color);
- placing = false;
- metalBank -= 10;
- updateEnergy();
- }
- }
- }
- else if(place_id==2){ //Booster
- if(Building.build[gridX][gridY] == null){
- if(level.getTile(xx,yy).getId()==2 && level.getTile(xx+1,yy).getId()==2 &&
- level.getTile(xx,yy+1).getId()==2 && level.getTile(xx+1,yy+1).getId()==2){
- new Booster(null, 2, place_sprite_x, place_sprite_y,gridX,gridY, place_color);
- placing = false;
- metalBank -= 20;
- updateEnergy();
- }
- }
- }
- else if(place_id==3){ //Solar Array
- if(Building.build[gridX][gridY] == null){
- if(level.getTile(xx,yy).getId()==2 && level.getTile(xx+1,yy).getId()==2 &&
- level.getTile(xx,yy+1).getId()==2 && level.getTile(xx+1,yy+1).getId()==2){
- new SolarArray(null, 3, place_sprite_x, place_sprite_y,gridX,gridY, place_color);
- placing = false;
- metalBank -= 8;
- updateEnergy();
- }
- }
- }
- if(can_generate) can_generate = false;
- }
- }
- }
- }
- private void updateStats(Building ding, int gridX, int gridY) {
- float boost;
- stat_ding = ding;
- stat_id = ding.id;
- stat_lvl = ding.getUpgrade();
- stat_x = gridX;
- stat_y = gridY;
- stat_meCost = ding.getMetalCost();
- stat_enCost = ding.getEnergyCost();
- stat_enUsed = ding.getEnergyUsed();
- stat_product = getProduct(ding);
- boost = 1;
- if(stat_x != 14) {boost = getBoost(stat_x+1,stat_y,boost);}
- if(stat_x != 1) {boost = getBoost(stat_x-1,stat_y,boost);}
- if(stat_y != 14) {boost = getBoost(stat_x,stat_y+1,boost);}
- if(stat_y != 1) {boost = getBoost(stat_x,stat_y-1,boost);}
- stat_productB = stat_product*boost;
- stat_pboost = boost;
- if(stat_id==3){ //Solar array receives half the benefit of boosters
- stat_productB/=2;
- stat_pboost/=2;
- }
- }
- private double getProduct(Building ding) {
- double it;
- switch (ding.id){
- default:
- case 1:
- it = ((MetalExtractor)ding).getMetalGen();
- break;
- case 2:
- it = ((Booster)ding).getBoosting();
- break;
- case 3:
- it = ((SolarArray)ding).getEnergy();
- break;
- }
- return it;
- }
- private void clickSolarArray(Building ding) {
- double meCost = ((SolarArray) ding).getMetalCost();
- double toBoost;
- if (this.metalBank >= meCost || skip_cost){ //If we have enough metal, or if debug is enabled
- if(!skip_cost){
- this.metalBank -= meCost;
- } //Don't apply the cost if debug
- meCost = (meCost+2)*1.28; //Increase the cost for the next upgrade
- toBoost = (((SolarArray) ding).getEnergy()+1)*1.02; //What we will upgrade it by
- ((SolarArray) ding).setEnergy(toBoost);
- ((SolarArray) ding).setMetalCost(meCost);
- ((SolarArray) ding).setUpgrade((((SolarArray) ding).getUpgrade() + 1));
- System.out.println("Upgraded Solar Array to "
- + df.format(((SolarArray) ding).getEnergy())
- + " level: "
- + ((SolarArray) ding).getUpgrade()
- + " metalCost: "
- + df.format(meCost));
- tick(false);
- }
- }
- private void clickExtractor(Building ding) {
- double meCost = ((MetalExtractor) ding).getMetalCost();
- double enCost = ((MetalExtractor) ding).getEnergyCost();
- double enUsed = ((MetalExtractor) ding).getEnergyUsed();
- double toGen;
- double enBoth = enCost + enUsed;
- if ((this.metalBank >= meCost && (this.energyUse + enCost <= this.energyMax))|| skip_cost){ //If we have enough metal, or if debug is enabled
- if(!skip_cost){
- this.metalBank -= meCost;
- ((MetalExtractor) ding).setEnergyUsed(enBoth);
- } //Don't apply the cost if debug
- meCost = (meCost+2)*1.21; //Increase the cost for the next upgrade
- enCost = (enCost)*1.075;
- toGen = ((((MetalExtractor) ding).getMetalGen()+0.70)*1.065f); //What we will upgrade it to
- ((MetalExtractor) ding).setMetalGen(toGen);
- ((MetalExtractor) ding).setMetalCost(meCost);
- ((MetalExtractor) ding).setEnergyCost(enCost);
- ((MetalExtractor) ding).setUpgrade((((MetalExtractor) ding).getUpgrade() + 1));
- System.out.println("Upgraded Metal Extractor to "
- + df.format(((MetalExtractor) ding).getMetalGen())
- + " level: "
- + ((MetalExtractor) ding).getUpgrade()
- + " metalCost: "
- + df.format(meCost));
- tick(false);
- }
- }
- private void clickBooster(Building ding) {
- double meCost = ((Booster) ding).getMetalCost();
- double enCost = ((Booster) ding).getEnergyCost();
- double enUsed = ((Booster) ding).getEnergyUsed();
- float toBoost;
- double enBoth = enCost + enUsed;
- if ((this.metalBank >= meCost && (this.energyUse + enCost <= this.energyMax))|| skip_cost){ //If we have enough metal, or if debug is enabled
- if(!skip_cost){
- this.metalBank -= meCost;
- ((Booster) ding).setEnergyUsed(enBoth);
- } //Don't apply the cost if debug
- meCost = (meCost+3)*1.32; //Increase the cost for the next upgrade
- enCost = (enCost)*1.125;
- toBoost = (float) (((Booster) ding).getBoosting()*1.11);
- ((Booster) ding).setBoosting(toBoost);
- ((Booster) ding).setMetalCost(meCost);
- ((Booster) ding).setEnergyCost(enCost);
- ((Booster) ding).setUpgrade((((Booster) ding).getUpgrade() + 1));
- System.out.println("Upgraded Booster to "
- + df.format(((Booster) ding).getBoosting()) + " level: "
- + ((Booster) ding).getUpgrade()
- + " metalCost: "
- + df.format(meCost));
- tick(false);
- }
- }
- public void tick(boolean add){ //Update bank every second.
- this.metalPerSecond = 0;
- double income = getIncome();
- this.metalPerSecond += income;
- if(add){
- this.metalBank += this.metalPerSecond;
- this.metalFromBuildings += this.metalPerSecond;
- this.totalTicks++;
- if(this.totalTicks>=300) { //Save game every 5 minutes
- saveGame();
- this.totalTicks=0;
- }
- }
- updateEnergy();
- }
- private boolean boxed(int x, int y, int xp, int yp, int xl, int yl) {
- if (x < xp || x > (xp+xl))
- return false;
- if (y < yp || y > (yp+yl)) {
- return false;
- } else
- return true;
- }
- public float getIncome(){
- float metal=0, boost;
- double exMetal;
- for(int xx=0; xx<15; xx++){
- for(int yy=0; yy<15; yy++){
- if(Building.build[xx][yy]!=null){
- Building ding = Building.build[xx][yy];
- if(ding.id==1){
- exMetal = ((MetalExtractor) ding).metalGen;
- boost = 1;
- if(xx != 14) {boost = getBoost(xx+1,yy,boost);}
- if(xx != 1) {boost = getBoost(xx-1,yy,boost);}
- if(yy != 14) {boost = getBoost(xx,yy+1,boost);}
- if(yy != 1) {boost = getBoost(xx,yy-1,boost);}
- exMetal *= boost;
- metal+=exMetal;
- //System.out.println("boosting by "+ boost);
- }
- }
- }
- }
- //System.out.println("it is by "+ metal);
- return metal;
- }
- public void updateEnergy(){
- float boost;
- double enUse=0, exEnergy=0, energy=0;
- for(int xx=0; xx<15; xx++){
- for(int yy=0; yy<15; yy++){
- if(Building.build[xx][yy]!=null){
- Building ding = Building.build[xx][yy];
- if(ding.id==1) enUse+= ((MetalExtractor)ding).getEnergyUsed();
- if(ding.id==2) enUse+= ((Booster)ding).getEnergyUsed();
- if(ding.id==3){ //Solar Array
- exEnergy=((SolarArray) ding).getEnergy();
- boost = 1;
- if(xx != 14) {boost = getBoost(xx+1,yy,boost);}
- if(xx != 1) {boost = getBoost(xx-1,yy,boost);}
- if(yy != 14) {boost = getBoost(xx,yy+1,boost);}
- if(yy != 1) {boost = getBoost(xx,yy-1,boost);}
- if(boost!=0){
- boost/=2; //Solar arrays gain half the benefit of boosters.
- exEnergy *= boost;
- }
- energy+=exEnergy;
- }
- }
- }
- }
- this.energyMax = energy;
- this.energyUse = enUse;
- }
- private static float getBoost(int xx, int yy, float boost) {
- if(xx >=0 && yy >= 0 && xx <=14 && yy <= 14){
- if(Building.build[xx][yy]!=null){
- Building ding2 = Building.build[xx][yy];
- if(ding2.id==2){
- boost+=((Booster) ding2).getBoosting();
- }
- }
- }
- return boost;
- }
- public void buyExtractor(){
- //location 17,13
- if(metalBank>=10 && (energyUse + 2 <= energyMax)){
- placing = true;
- place_id = 1;
- place_sprite_x=17;
- place_sprite_y=13;
- place_color = Colours.get(000, 222, 444, 333);
- }
- }
- public void buyBooster(){
- //location 17,13
- if(metalBank>=20 && (energyUse + 1 <= energyMax)){
- placing = true;
- place_id = 2;
- place_sprite_x=17;
- place_sprite_y=13;
- place_color = Colours.get(000, 220, 440, 333);
- }
- }
- public void buySolarArray(){
- //location 17,13
- if(metalBank>=8){
- placing = true;
- place_id = 3;
- place_sprite_x=17;
- place_sprite_y=17;
- place_color = Colours.get(000, 113, 225, -1);
- }
- }
- public void sendGenerate(){
- if(can_generate){
- genLvl.generateLevel(level);
- System.out.println("Generated land");
- }
- }
- public void showStats(){
- int xx = Math.round((mouse_x/32))-12;
- int yy = Math.round(mouse_y/32)-1;
- int lvl;
- double meCost, enCost, enUsed;
- if(Building.build[xx][yy] != null){
- Building ding = Building.build[xx][yy];
- if(ding.id==1){
- double metal=0;
- float boost;
- metal = ((MetalExtractor) ding).metalGen;
- lvl = ((MetalExtractor) ding).getUpgrade();
- meCost = ((MetalExtractor) ding).getMetalCost();
- enCost = ((MetalExtractor) ding).getEnergyCost();
- enUsed = ((MetalExtractor) ding).getEnergyUsed();
- boost = 1;
- if(xx != 14) {boost = getBoost(xx+1,yy,boost);}
- if(xx != 1) {boost = getBoost(xx-1,yy,boost);}
- if(yy != 14) {boost = getBoost(xx,yy+1,boost);}
- if(yy != 1) {boost = getBoost(xx,yy-1,boost);}
- metal *= boost;
- JOptionPane.showMessageDialog(cc, "Level: " + lvl
- + "\nMetal Cost: " + df.format(meCost)
- + "\nEnergy Cost: " + df.format(enCost)
- + "\nEnergy Used: " + df.format(enUsed)
- + "\nProducing metal: " + df.format(metal)
- + "\nBoost multiplier: " + df.format(boost));
- }
- if(ding.id==2){
- float boost = ((Booster) ding).boosting;
- lvl = ((Booster) ding).getUpgrade();
- meCost = ((Booster) ding).getMetalCost();
- enCost = ((Booster) ding).getEnergyCost();
- enUsed = ((Booster) ding).getEnergyUsed();
- JOptionPane.showMessageDialog(cc, "Level: " + lvl
- + "\nMetal Cost: " + df.format(meCost)
- + "\nEnergy Cost: " + df.format(enCost)
- + "\nEnergy Used: " + df.format(enUsed)
- + "\nBoosting by: " + df.format(1+boost));
- }
- if(ding.id==3){
- double energy;
- float boost;
- lvl = ((SolarArray) ding).getUpgrade();
- meCost = ((SolarArray) ding).getMetalCost();
- energy = ((SolarArray) ding).energy;
- boost = 1;
- if(xx != 14) {boost = getBoost(xx+1,yy,boost);}
- if(xx != 1) {boost = getBoost(xx-1,yy,boost);}
- if(yy != 14) {boost = getBoost(xx,yy+1,boost);}
- if(yy != 1) {boost = getBoost(xx,yy-1,boost);}
- energy *= boost;
- JOptionPane.showMessageDialog(cc, "Level: " + lvl
- + "\nMetal Cost: " + df.format(meCost)
- + "\nEnergy Produced: " + df.format(energy));
- }
- }
- }
- public void saveGame(){
- //level.setImagePath("/levels/savegame.png");
- level.saveLevelToFile();
- try{
- //String path = System.getProperty("user.home")+"\\MCsavegame.txt";
- String path = "/savegame.txt";
- File f = new File(path);
- if(!f.exists() && !f.isDirectory()) { f.createNewFile(); }
- Formatter file = new Formatter(f);
- String line = metalBank +"]";
- for(int xx=0; xx<16; xx++){
- for(int yy=0; yy<16; yy++){
- if(Building.build[xx][yy]!=null){
- Building ding = Building.build[xx][yy];
- line += "="+ding.id+"-"; //ID of the building
- line += xx + "-"; //x coordinate on grid
- line += yy + "-"; //y coordinate on grid
- line += ding.getUpgrade() + "-"; //level of building
- line += ding.getMetalCost() + "-"; //cost to upgrade
- line += ding.getEnergyCost() + "-"; //cost to upgrade in energy
- line += ding.getEnergyUsed() + "-"; //current energy consumption
- if(ding.id==1){
- line += ((MetalExtractor)ding).getMetalGen() + "-";
- }
- if(ding.id==2){
- line += ((Booster)ding).getBoosting() + "-";
- }
- if(ding.id==3){
- line += ((SolarArray)ding).getEnergy() + "-"; //energy production
- }
- }
- }
- }
- file.format("%s", line);
- file.close(); //close file
- System.out.println("Saved game");
- }
- catch (Exception e){
- System.out.println("[WARNING] Problem saving the game");
- }
- }
- public void loadGame(){
- level.loadLevelFromFile();
- try{
- //String path = System.getProperty("user.home")+"\\MCsavegame.txt";
- String path = "/savegame.txt";
- Scanner file = new Scanner(new File(path));
- String line = file.next();
- String[] bank = line.split("]");
- String[] buildings = bank[1].split("=");
- String[] attributes = new String[8];
- metalBank = Double.parseDouble(bank[0]);
- int x, y, lvl;
- double enCost, enUsed, meCost, product;
- Building ding;
- if(buildings.length>=1) can_generate = false;
- for(int xx=0; xx<16; xx++){
- for(int yy=0; yy<16; yy++){
- Building.build[xx][yy] = null;
- }
- }
- for(int i=1; i<buildings.length; i++){
- attributes = buildings[i].split("-");
- x = Integer.parseInt(attributes[1]); //x on grid
- y = Integer.parseInt(attributes[2]); //y on grid
- lvl = Integer.parseInt(attributes[3]); //level
- meCost = Double.parseDouble(attributes[4]); //Cost of building
- enCost = Double.parseDouble(attributes[5]); //Cost in energy of building
- enUsed = Double.parseDouble(attributes[6]); //Total energy used
- product = Double.parseDouble(attributes[7]); //Either energy, metal or boost multiplier
- switch (attributes[0]){
- default:
- case "1":
- ding = new MetalExtractor(null, 1, 17, 13 ,x ,y ,Colours.get(000, 222, 444, 333));
- ding.setUpgrade(lvl);
- ding.setMetalCost(meCost);
- ding.setEnergyCost(enCost);
- ding.setEnergyUsed(enUsed);
- ((MetalExtractor) ding).setMetalGen(product);
- break;
- case "2":
- ding = new Booster(null, 2, 17, 13,x ,y ,Colours.get(000, 220, 440, 333));
- ding.setUpgrade(lvl);
- ding.setMetalCost(meCost);
- ding.setEnergyCost(enCost);
- ding.setEnergyUsed(enUsed);
- ((Booster) ding).setBoosting((float) product);
- break;
- case "3":
- ding = new SolarArray(null, 3, 17, 17,x ,y ,Colours.get(000, 113, 225, -1));
- ding.setUpgrade(lvl);
- ding.setMetalCost(meCost);
- ding.setEnergyCost(enCost);
- ding.setEnergyUsed(enUsed);
- ((SolarArray) ding).setEnergy(product);
- break;
- }
- }
- file.close(); //close file
- }
- catch (Exception e){
- System.out.println("[WARNING] Could not load the game.");
- }
- }
- public String makeString(Double make){
- if(make>=1000000000) {
- return df.format(make/1000000000)+"b"; }
- else if(make>=1000000) {
- return df.format(make/1000000)+"m"; }
- else if(make>=1000) {
- return df.format(make/1000)+"k"; }
- return df.format(make);
- }
- public void render(Screen screen){
- //System.out.println("test");
- for(int xx=0; xx<16; xx++){
- for(int yy=0; yy<16; yy++){
- if(Building.build[xx][yy]!=null){
- Building ding = Building.build[xx][yy];
- ding.render(screen);
- }
- }
- }
- int gridX, gridY;
- if(placing || moving){
- if(mouse_x >= 388 && mouse_y >=34
- && mouse_x <=863 && mouse_y <=498){
- gridX = (Math.round(mouse_x/32)*16);
- gridY = Math.round(mouse_y/32)*16-8;
- screen.render(gridX, gridY, place_sprite_x + place_sprite_y * 32, place_color, 0x00, 1);
- screen.render(gridX+8, gridY, (place_sprite_x+1) + place_sprite_y * 32, place_color, 0x00, 1);
- screen.render(gridX, gridY+8, place_sprite_x + (place_sprite_y+1) * 32, place_color, 0x00, 1);
- screen.render(gridX+8, gridY+8, (place_sprite_x+1) + (place_sprite_y+1) * 32, place_color, 0x00, 1);
- }
- }
- Font.render("Max Energy: " + (makeString(this.energyMax)), screen, 1, 0, Colours.get(-1, -1, -1, 103), 1);
- Font.render("Energy Used: " + (makeString(this.energyUse)), screen, 1, 10, Colours.get(-1, -1, -1, 103), 1);
- Font.render("Hotkeys: metal energy", screen, 1, 40, Colours.get(-1, -1, -1, 050), 1);
- Font.render("1 Extractor - 10m 2en", screen, 1, 50, Colours.get(-1, -1, -1, 050), 1);
- Font.render("2 Booster - 20m 1en", screen, 1, 60, Colours.get(-1, -1, -1, 050), 1);
- Font.render("3 Solar Array - 8m 0en", screen, 1, 70, Colours.get(-1, -1, -1, 050), 1);
- if(show_stats){
- Font.render("Level: " + stat_lvl, screen, 1, 100, Colours.get(-1, -1, -1, 053), 1);
- Font.render("Metal Cost: " + (makeString(stat_meCost)), screen, 1, 110, Colours.get(-1, -1, -1, 053), 1);
- if(stat_id!=3)Font.render("Energy Cost: " + (makeString(stat_enCost)), screen, 1, 120, Colours.get(-1, -1, -1, 053), 1);
- if(stat_id!=3)Font.render("Energy Usage: " + (makeString(stat_enUsed)), screen, 1, 130, Colours.get(-1, -1, -1, 053), 1);
- String duct = "error";
- if(stat_id==1) duct = "Metal: "; if(stat_id==2) duct = "Boosts by: "; if(stat_id==3) duct = "Energy: ";
- Font.render(duct + (makeString(stat_product)), screen, 1, 145, Colours.get(-1, -1, -1, 053), 1);
- if(stat_id!=2)Font.render("Boosted to: " + (makeString(stat_productB)), screen, 1, 155, Colours.get(-1, -1, -1, 053), 1);
- if(stat_id!=2)Font.render("Boostiplier: " + (makeString((double) stat_pboost)), screen, 1, 165, Colours.get(-1, -1, -1, 053), 1);
- Font.render("Upgrade", screen, 1, 185, Colours.get(-1, -1, -1, 024), 1);
- Font.render("Move", screen, 70, 185, Colours.get(-1, -1, -1, 024), 1);
- Font.render("Sell", screen, 120, 185, Colours.get(-1, -1, -1, 024), 1);
- //Draw the orange selected border cursor
- gridX = (stat_x+12)*16;
- gridY = (stat_y+1)*16-8;
- screen.render(gridX, gridY, 20 + 14 * 32, Colours.get(550, -1, -1, -1), 0x03, 1);
- screen.render(gridX+8, gridY, 19 + 14 * 32, Colours.get(530, -1, -1, -1), 0x03, 1);
- screen.render(gridX, gridY+8, 20 + 13 * 32, Colours.get(530, -1, -1, -1), 0x03, 1);
- screen.render(gridX+8, gridY+8, 19 + 13 * 32, Colours.get(550, -1, -1, -1), 0x03, 1);
- }
- Font.render("Click here for metal", screen, 1, 226, Colours.get(-1, -1, -1, 300), 1);
- Font.render("Metal: " + (makeString(this.metalBank)), screen, 1, 236, Colours.get(-1, -1, -1, 300), 1);
- Font.render("MetalPerSec: " + makeString((double) this.metalPerSecond), screen, 1, 246, Colours.get(-1, -1, -1, 300), 1);
- if(can_generate)Font.render("G to generate land", screen, 1, 30, Colours.get(-1, -1, -1, 050), 1);
- if(mouse_x >= 388 && mouse_y >=34
- && mouse_x <=863 && mouse_y <=498){ //Draw the red border cursor
- gridX = (Math.round(mouse_x/32)*16);
- gridY = Math.round(mouse_y/32)*16-8;
- screen.render(gridX, gridY, 19 + 13 * 32, Colours.get(500, -1, -1, -1), 0x00, 1);
- screen.render(gridX+8, gridY, (19+1) + 13 * 32, Colours.get(500, -1, -1, -1), 0x00, 1);
- screen.render(gridX, gridY+8, 19 + (13+1) * 32, Colours.get(500, -1, -1, -1), 0x00, 1);
- screen.render(gridX+8, gridY+8, (19+1) + (13+1) * 32, Colours.get(500, -1, -1, -1), 0x00, 1);
- }
- Font.render("v0.09", screen, 400, 248, Colours.get(-1, -1, -1, 103), 1);
- }
- public void init(Screen screen, Level level){
- this.screen = screen;
- this.level = level;
- String path = "/savegame.txt";//System.getProperty("user.home")+"\\MCsavegame.txt";
- if(new File(path).exists()){
- loadGame();
- }else{
- sendGenerate();
- }
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- @Override
- public void mouseDragged(MouseEvent arg0) {
- }
- @Override
- public void mouseMoved(MouseEvent arg0) {
- mouse_x = arg0.getX();
- mouse_y = arg0.getY();
- }
- public Container getCc() {
- return cc;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement