Package com.google.code.timetrail.presenter

Source Code of com.google.code.timetrail.presenter.StoreFrameBackend

// $codepro.audit.disable logExceptions
/*
* StoreFrameBackend.java
* Team qq 2011
*/
package com.google.code.timetrail.presenter;

import java.awt.Color;

import com.google.code.timetrail.backend.Control;
import com.google.code.timetrail.backend.Inventory;
import com.google.code.timetrail.backend.Item;
import com.google.code.timetrail.backend.Store;

/**
* @author MooglesRock@gmail.com
* @version 1.0.0
*/
public class StoreFrameBackend {
  /**
   * The color of the error in the store
   */
  private static final Color ERROR_COLOR = Color.pink;

  /**
   * THe color of when it is good in the store
   */
  private static final Color GOOD_COLOR = Color.white;

  /**
   * The location of the Bargaining skill within the skills array
   */
  private static final int BARGAINING_SKILL_POSITION = 2;
 
  /**
   * the maximum skill level
   */
  private static final int MAX_SKILL_LEVEL = 100;
 
  /**
   * The data for the game
   */
  private final Control gameControl;

  /**
   * The store
   */
  private final Store store;

  /**
   * The inventory for the player
   */
  private final Inventory playerInv;

  /**
   * The engine text field
   */
  private String engineTextField;

  /**
   * The FCapacitor text field
   */
  private String fCapacitorTextField;

  /**
   * The food text field
   */
  private String foodTextField;

  /**
   * The hull parts text field
   */
  private String hullPartsTextField;

  /**
   * The fuel cells text field
   */
  private String fuelCellsTextField;

  /**
   * THe clothing text field
   */
  private String clothingTextField;

  /**
   * The ammunition text field
   */
  private String ammunitionTextField;

  /**
   * The fuel cells amount
   */
  private int fuelCellsAmount;

  /**
   * The hull parts amount
   */
  private int hullPartsAmount;

  /**
   * The FCapacitor amount
   */
  private int fCapacitorAmount;

  /**
   * The ammunition amount
   */
  private int ammunitionAmount;

  /**
   * The clothing amount
   */
  private int clothingAmount;

  /**
   * The food amount
   */
  private int foodAmount;

  /**
   * The engine amount
   */
  private int engineAmount;

  /**
   * The validity of engine
   */
  private boolean engineValid;

  /**
   * The validity of FCapacitor
   */
  private boolean fCapacitorValid;

  /**
   * The validity of Fuel Cells
   */
  private boolean fuelCellsValid;

  /**
   * The validity of food
   */
  private boolean foodValid;

  /**
   * The validity of hull parts
   */
  private boolean hullPartsValid;

  /**
   * The validity of clothing
   */
  private boolean clothingValid;

  /**
   * The validity of ammunition
   */
  private boolean ammunitionValid;

  /**
   * Creates a new StoreFrameBackend
   *
   * @param gameControl
   *            the game data
   */
  public StoreFrameBackend(Control gameControl) {
    this.store = new Store(gameControl);
    this.gameControl = gameControl;
    this.playerInv = this.gameControl.getInv();
    engineValid = true;
    fCapacitorValid = true;
    fuelCellsValid = true;
    foodValid = true;
    hullPartsValid = true;
    clothingValid = true;
    ammunitionValid = true;
    engineAmount = 0;
    fuelCellsAmount = 0;
    hullPartsAmount = 0;
    fCapacitorAmount = 0;
    ammunitionAmount = 0;
    clothingAmount = 0;
    foodAmount = 0;
    engineTextField = "0";
    fCapacitorTextField = "0";
    foodTextField = "0";
    hullPartsTextField = "0";
    fuelCellsTextField = "0";
    clothingTextField = "0";
    ammunitionTextField = "0";
  }

  /**
   * Gets the Store label text
   *
 
   * @return store label text */
  public String getStoreLabelText() {
    return "STORE";
  }

  /**
   * Gets the Quantity label text
   *
 
   * @return quantity label text */
  public String getQuantityLabelText() {
    return "Quantity";
  }

  /**
   * Gets the Item name label text
   *
 
   * @return item name label text */
  public String getItemNameLabelText() {
    return "Item";
  }

  /**
   * Gets the price weight label text
   *
 
   * @return price weight label text */
  public String getPriceWeightLabelText() {
    return "Price / Weight";
  }

  /**
   * Gets the engine label text
   *
 
   * @return engine label text */
  public String getEngineLabelText() {
    return playerInv.getEngines().toString();
  }

  /**
   * Gets the food label text
   *
 
   * @return food label text */
  public String getFoodLabelText() {
    return playerInv.getFood().toString();
  }

  /**
   * Gets the clothing label text
   *
 
   * @return clothing label text */
  public String getClothingLabelText() {
    return playerInv.getTimeSuits().toString();
  }

  /**
   * Gets the ammunition label text
   *
 
   * @return ammunition label text */
  public String getAmmunitionLabelText() {
    return playerInv.getTimeBulletBills().toString();
  }

  /**
   * Gets the FCapacitor label text
   *
 
   * @return FCapacitor label text */
  public String getFCapacitorLabelText() {
    return playerInv.getFCapacitors().toString();
  }

  /**
   * Gets the Hull parts label text
   *
 
   * @return hull parts label text */
  public String getHullPartsLabelText() {
    return playerInv.getHullParts().toString();
  }

  /**
   * Gets the Fuel cells label text
   *
 
   * @return fuel cells label text */
  public String getFuelCellsLabelText() {
    return playerInv.getFuelCells().toString();
  }

  /**
   * Get the food price weight
   *
 
   * @return food price weight */
  public String getFoodPriceWeight() {
      final Item food = playerInv.getFood();
    return ("$" + (food.getValue() -
            ((food.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getFood().getWeight() + " lb.");
  }

  /**
   * Get the engine price weight
   *
 
   * @return engine price weight */
  public String getEnginePriceWeight() {
      final Item engines = playerInv.getEngines();
    return ("$" + (engines.getValue()
            - ((engines.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + (" N/A");
  }

  /**
   * Get the Clothing price weight
   *
 
   * @return clothing price weight */
  public String getClothingPriceWeight() {
      final Item timeSuits = playerInv.getTimeSuits();
    return ("$" + (timeSuits.getValue()
            - ((timeSuits.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getTimeSuits().getWeight() + " lb.");
  }

  /**
   * Get the Ammunition price weight
   *
 
   * @return ammunition price weight */
  public String getAmmunitionPriceWeight() {
      final Item timeBulletBills = playerInv.getTimeBulletBills();
    return ("$" + (timeBulletBills.getValue()
            - ((timeBulletBills.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getTimeBulletBills().getWeight() + " lb.");
  }

  /**
   * Get the FCapacitors price weight
   *
 
   * @return fcapacitors price weight */
  public String getFCapacitorsPriceWeight() {
      final Item fCapacitors = playerInv.getFCapacitors();
    return ("$" + (fCapacitors.getValue()
            - ((fCapacitors.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getFCapacitors().getWeight() + " lb.");
  }

  /**
   * Get the Hull parts price weight
   *
 
   * @return hull parts price weight */
  public String getHullPartsPriceWeight() {
      final Item hullParts = playerInv.getHullParts();
    return ("$" + (hullParts.getValue()
            - ((hullParts.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getHullParts().getWeight() + " lb.");
  }

  /**
   * Get the Fuel cells price weight
   *
 
   * @return fuel cells price weight */
  public String getFuelCellsPriceWeight() {
      final Item fuelCells = playerInv.getFuelCells();
    return ("$" + (fuelCells.getValue()
            - ((fuelCells.getValue()
                    * gameControl.getPlayer().getSkills()
                    [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL)) + " / "
        + (playerInv.getFuelCells().getWeight() + " lb.");
  }

  /**
   * Get the total weight label
   *
 
   * @return total weight label */
  public String getTotalWeightLabel() {
    return "Total Weight: " + getWeightTotal();
  }

  /**
   * Calculates the total weight
   *
 
   * @return total weight */
  private int getWeightTotal() {
    final int engineWeight = engineAmount * playerInv.getEngines().getWeight();
    final int hullPartWeight = hullPartsAmount
        * playerInv.getHullParts().getWeight();
    final int timeSuitWeight = clothingAmount
        * playerInv.getTimeSuits().getWeight();
    final int timeBulletBillWeight = ammunitionAmount
        * playerInv.getTimeBulletBills().getWeight();
    final int fuelCellWeight = fuelCellsAmount
        * playerInv.getFuelCells().getWeight();
    final int fCapacitorWeight = fCapacitorAmount
        * playerInv.getFCapacitors().getWeight();
    final int foodWeight = foodAmount * playerInv.getFood().getWeight();
    return engineWeight + hullPartWeight + timeSuitWeight
        + timeBulletBillWeight + fuelCellWeight + fCapacitorWeight
        + foodWeight;
  }

  /**
   * Get the Total cost label
   *
 
   * @return total cost label */
  public String getTotalCostLabel() {
    return "Total Cost: " + getCostTotal();
  }

  /**
   * Calculates the total cost
   *
 
   * @return total cost */
  private int getCostTotal() {
      final Item engines = playerInv.getEngines();
      final Item hullParts = playerInv.getHullParts();
      final Item timeSuits = playerInv.getTimeSuits();
      final Item timeBulletBills = playerInv.getTimeBulletBills();
      final Item fuelCells = playerInv.getFuelCells();
      final Item fCapacitors = playerInv.getFCapacitors();
      final Item food = playerInv.getFood();
    final int engineCost = engineAmount
            * (engines.getValue()
                    - ((engines.getValue()
                            * gameControl.getPlayer().getSkills()
                            [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int hullPartCost = hullPartsAmount
        * (hullParts.getValue()
                - ((hullParts.getValue()
                        * gameControl.getPlayer().getSkills()
                        [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int timeSuitCost = clothingAmount
            * (timeSuits.getValue()
                    - ((timeSuits.getValue()
                            * gameControl.getPlayer().getSkills()
                            [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int timeBulletBillCost = ammunitionAmount
        * (timeBulletBills.getValue()
                - ((timeBulletBills.getValue()
                        * gameControl.getPlayer().getSkills()
                        [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int fuelCellCost = fuelCellsAmount
        * (fuelCells.getValue()
                - ((fuelCells.getValue()
                        * gameControl.getPlayer().getSkills()
                        [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int fCapacitorCost = fCapacitorAmount
        * (fCapacitors.getValue()
                - ((fCapacitors.getValue()
                        * gameControl.getPlayer().getSkills()
                        [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    final int foodCost = foodAmount
            * (food.getValue()
                    - ((food.getValue()
                            * gameControl.getPlayer().getSkills()
                            [BARGAINING_SKILL_POSITION ])) / MAX_SKILL_LEVEL);
    return engineCost + hullPartCost + timeSuitCost + timeBulletBillCost
        + fuelCellCost + fCapacitorCost + foodCost;
  }

  /**
   * Gets the money label
   *
 
   * @return money label */
  public String getMoneyLabel() {
    return "Money:" + playerInv.getMoney().getCurrentAmount();
  }

  /**
   * Gets the next button text
   *
 
   * @return next button text */
  public String getNextButtonText() {
    return "Next >>";
  }

  /**
   * Actions for the pressing the next button
 
   * @throws NumberFormatException */
  public void pressNextButton() throws NumberFormatException{
      try{
    store.setTempEngines(Integer.parseInt(engineTextField));
    store.setTempFCapacitors(Integer.parseInt(fCapacitorTextField));
    store.setTempFood(Integer.parseInt(foodTextField));
    store.setTempHullParts(Integer.parseInt(hullPartsTextField));
    store.setTempFuelCells(Integer.parseInt(fuelCellsTextField));
    store.setTempTimeSuits(Integer.parseInt(clothingTextField));
    store.setTempTimeBulletBills(Integer.parseInt(ammunitionTextField));
      } catch (NumberFormatException e){
          System.err.println(e);
      }
    if (store.canBuyItem(Integer.parseInt(fuelCellsTextField), gameControl
        .getInv().getFuelCells())) {
      store.buyItem(Integer.parseInt(fuelCellsTextField), gameControl
          .getInv().getFuelCells());
    }

    if (store.canBuyItem(Integer.parseInt(hullPartsTextField), gameControl
        .getInv().getHullParts())) {
      store.buyItem(Integer.parseInt(hullPartsTextField), gameControl
          .getInv().getHullParts());
    }

    if (store.canBuyItem(Integer.parseInt(foodTextField), gameControl
        .getInv().getFood())) {
      store.buyItem(Integer.parseInt(foodTextField), gameControl.getInv()
          .getFood());
    }

    if (store.canBuyItem(Integer.parseInt(engineTextField), gameControl
        .getInv().getEngines())) {
      store.buyItem(Integer.parseInt(engineTextField), gameControl
          .getInv().getEngines());
    }

    if (store.canBuyItem(Integer.parseInt(fCapacitorTextField), gameControl
        .getInv().getFCapacitors())) {
      store.buyItem(Integer.parseInt(fCapacitorTextField), gameControl
          .getInv().getFCapacitors());
    }

    if (store.canBuyItem(Integer.parseInt(clothingTextField), gameControl
        .getInv().getTimeSuits())) {
      store.buyItem(Integer.parseInt(clothingTextField), gameControl
          .getInv().getTimeSuits());
    }

    if (store.canBuyItem(Integer.parseInt(ammunitionTextField), gameControl
        .getInv().getTimeBulletBills())) {
      store.buyItem(Integer.parseInt(ammunitionTextField), gameControl
          .getInv().getTimeBulletBills());
    }
    if(gameControl.getInv().canRemoveItem(getCostTotal(),
            gameControl.getInv().getMoney())){
    gameControl.getInv().removeItem(getCostTotal(), gameControl.getInv().getMoney());
    }
    // TODO Set up moving to the next card
  }

  /**
   * Gets the back button text
   *
 
   * @return back button text */
  public String getBackButtonText() {
    return "Back <<";
  }

  /**
   * Actions for the pressing the back button
   */
  public void pressBackButton() { // This is a temporary method filler and
                  // needs to be properly done
    // TODO set up moving to the previous card
    for (int i = 0; i < 1; i++) {
      i++;
    }
  }

  /**
   * Checks if it can enable next button
   *
 
   * @return true if next button can be enabled or not */
  public boolean canEnableNextButton() {
    return engineValid && fCapacitorValid && fuelCellsValid && foodValid
        && hullPartsValid && clothingValid && ammunitionValid;
  }

  /**
   * Sets the text for the engine field
   *
   * @param text
   *            for the engine text field
   */
  public void setEngineTextField(String text) {
    this.engineTextField = text;
  }

  /**
   * Figures out the color for the engine text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getEngineTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(engineTextField)) {
      engineValid = false;
      return ERROR_COLOR;
    }
    engineAmount = Integer.parseInt(engineTextField);
    if (engineAmount > playerInv.getEngines().getMaxAmount()) {
      engineValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      engineValid = true;
      return GOOD_COLOR;
    } else {
      if (engineAmount != 0) {
        engineValid = false;
        return ERROR_COLOR;
      }
      engineValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the food field
   *
   * @param text
   *            for the food text field
   */
  public void setfoodTextField(String text) {
    this.foodTextField = text;
  }

  /**
   * Figures out the color for the food text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getFoodTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(foodTextField)) {
      foodValid = false;
      return ERROR_COLOR;
    }
    foodAmount = Integer.parseInt(foodTextField);
    if (foodAmount > playerInv.getFood().getMaxAmount()) {
      foodValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      foodValid = true;
      return GOOD_COLOR;
    } else {
      if (foodAmount != 0) {
        foodValid = false;
        return ERROR_COLOR;
      }
      foodValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the clothing field
   *
   * @param text
   *            for the clothing text field
   */
  public void setClothingTextField(String text) {
    this.clothingTextField = text;
  }

  /**
   * Figures out the color for the clothing text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getClothingTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(clothingTextField)) {
      clothingValid = false;
      return ERROR_COLOR;
    }
    clothingAmount = Integer.parseInt(clothingTextField);
    if (clothingAmount > playerInv.getTimeSuits().getMaxAmount()) {
      clothingValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      clothingValid = true;
      return GOOD_COLOR;
    } else {
      if (clothingAmount != 0) {
        clothingValid = false;
        return ERROR_COLOR;
      }
      clothingValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the ammunition field
   *
   * @param text
   *            for the ammunition text field
   */
  public void setAmmunitionTextField(String text) {
    this.ammunitionTextField = text;
  }

  /**
   * Figures out the color for the ammunition text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getAmmunitionTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(ammunitionTextField)) {
      ammunitionValid = false;
      return ERROR_COLOR;
    }
    ammunitionAmount = Integer.parseInt(ammunitionTextField);
    if (ammunitionAmount > playerInv.getTimeBulletBills().getMaxAmount()) {
      ammunitionValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      ammunitionValid = true;
      return GOOD_COLOR;
    } else {
      if (ammunitionAmount != 0) {
        ammunitionValid = false;
        return ERROR_COLOR;
      }
      ammunitionValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the fcapacitor field
   *
   * @param text
   *            for the fcapacitor text field
   */
  public void setFCapacitorTextField(String text) {
    this.fCapacitorTextField = text;
  }

  /**
   * Figures out the color for the fcapacitor text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getFCapacitorTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(fCapacitorTextField)) {
      fCapacitorValid = false;
      return ERROR_COLOR;
    }
    fCapacitorAmount = Integer.parseInt(fCapacitorTextField);
    if (fCapacitorAmount > playerInv.getFCapacitors().getMaxAmount()) {
      fCapacitorValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      fCapacitorValid = true;
      return GOOD_COLOR;
    } else {
      if (fCapacitorAmount != 0) {
        fCapacitorValid = false;
        return ERROR_COLOR;
      }
      fCapacitorValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the hull parts field
   *
   * @param text
   *            for the hull parts text field
   */
  public void setHullPartsTextField(String text) {
    this.hullPartsTextField = text;
  }

  /**
   * Figures out the color for the hull parts text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getHullPartsTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(hullPartsTextField)) {
      hullPartsValid = false;
      return ERROR_COLOR;
    }
    try{
        hullPartsAmount = Integer.parseInt(hullPartsTextField);
    } catch (NumberFormatException e){
            System.err.println(e);
        }
    if (hullPartsAmount > playerInv.getHullParts().getMaxAmount()) {
      hullPartsValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      hullPartsValid = true;
      return GOOD_COLOR;
    } else {
      if (hullPartsAmount != 0) {
        hullPartsValid = false;
        return ERROR_COLOR;
      }
      hullPartsValid = true;
      return GOOD_COLOR;
    }
  }

  /**
   * Sets the text for the fuel cells field
   *
   * @param text
   *            for the fuel cells text field
   */
  public void setFuelCellsTextField(String text) {
    this.fuelCellsTextField = text;
  }

  /**
   * Figures out the color for the fuel cells text field
   *

   * @return the appropriate color for the field
   * @throws NumberFormatException
   */
  public Color getFuelCellsTextFieldColor() throws NumberFormatException{
    if (!isValidEntry(fuelCellsTextField)) {
      fuelCellsValid = false;
      return ERROR_COLOR;
    }
    try{
    fuelCellsAmount = Integer.parseInt(fuelCellsTextField);
    } catch (NumberFormatException e){
        System.err.println(e);
    }
    if (fuelCellsAmount > playerInv.getFuelCells().getMaxAmount()) {
      fuelCellsValid = false;
      return ERROR_COLOR;
    }
    if (canBuyFromStore()) {
      fuelCellsValid = true;
      return GOOD_COLOR;
    } else {
      if (fuelCellsAmount != 0) {
        fuelCellsValid = false;
        return ERROR_COLOR;
      }
      fuelCellsValid = true;
      return GOOD_COLOR;
    }

  }

  /**
   * Checks if you can buy from the store or not
 
   * @return true if you can buy from the store and vice versa */
  private boolean canBuyFromStore() {
    final int weightRemaining = playerInv.getCapacity()
        - playerInv.getInvWeight();
    final int playerMoney = playerInv.getMoney().getCurrentAmount();
    return (playerMoney >= getCostTotal() && weightRemaining >= getWeightTotal());
  }

  /**
   * Checks if it is a valid entry or not
   * @param entry The entry that needs to validated
 
   * @return true if the entry is valid */
  public boolean isValidEntry(String entry) {
    try {
      final int val = Integer.parseInt(entry);
      return val >= 0;
    } catch (NumberFormatException e) {
      //System.err.println("entry is not valid");
      return false;
    }
  }

  /**
   * Returns the name of the class
 
   * @return name of the class */
  @Override
  public String toString() {
    return "StoreFrameBackend";
  }
}
TOP

Related Classes of com.google.code.timetrail.presenter.StoreFrameBackend

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.