Package com.drakulo.games.ais.ui.component

Source Code of com.drakulo.games.ais.ui.component.ColonySelector

package com.drakulo.games.ais.ui.component;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

import org.newdawn.slick.Color;
import org.newdawn.slick.Font;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;

import com.drakulo.games.ais.core.Colony;
import com.drakulo.games.ais.core.Resource;
import com.drakulo.games.ais.core.delayed.ResearchAction;
import com.drakulo.games.ais.ui.FontHelper;
import com.drakulo.games.ais.ui.ImageManager;
import com.drakulo.games.ais.ui.UIHelper;
import com.drakulo.games.ais.ui.twlbridge.RootPane;

import de.matthiasmann.twl.Label;

/**
* UIComponent used in the Planet vision. Displays a colony summary
*
* @author Drakulo
*
*/
public class ColonySelector extends UIComponent {
  /** The Component fixed width */
  public static final int WIDTH = 300;
  /** The component fixed height */
  public static final int HEIGHT = 100;

  /** The linked colony */
  private Colony colony;
  /** The resource labels */
  private Map<Resource, Label> labels;
  /** The research progress bar */
  private ProgressBar researchPB;
  /** Select flag */
  private boolean selected;

  public ColonySelector(final Colony colony, RootPane twlRootPane) {
    this.colony = colony;
    this.setHeight(HEIGHT);
    this.setWidth(WIDTH);
    this.labels = new HashMap<Resource, Label>();
    for (Resource r : Resource.values()) {
      Label l = new Label();
      l.setTheme("resourceLabel");
      l.setSize(80, 15);
      twlRootPane.add(l);
      this.labels.put(r, l);
    }

    this.researchPB = new ProgressBar();
    this.researchPB.setHeight(10);
    this.researchPB.setWidth(167);
    this.researchPB.setEmptyColor(Color.darkGray);
    this.researchPB.setFilledColor(Color.magenta);
   
  }

  @Override
  public void render(Graphics g) throws SlickException {
    // The hover border
    if(this.isHovered()){
      g.setColor(Color.yellow);
    }
    if(this.selected){
      g.setColor(Color.green);
    }
    if(this.hovered || this.selected){
      g.drawRect(this.getOX()-1, this.getOY() - 1, WIDTH+2, HEIGHT+2);
    }
   
    // Render the background box
    UIHelper.drawBox(g, this.getOX(), this.getOY(), WIDTH, HEIGHT);

    final Font bigFont = FontHelper.getFont(FontHelper.HEMI_HEAD,
        Color.white, 20);
    final Font smallFont = FontHelper.getFont(FontHelper.HEMI_HEAD,
        Color.white, 15);
    final int dpadding = 4;

    int x = this.getOX() + 2;
    int y = this.getOY() + 2;

    // Colony info background
    UIHelper.drawDarkBox(g, x, y, 175, 40);

    // Colony name
    bigFont.drawString(x + 2, y + 2, this.colony.getName());

    // The planet name
    y += 20;
    smallFont.drawString(x + 12, y + 2, this.colony.getPlanetName());

    UIHelper.drawDarkBox(g, x, y + 35, 175, 40);

    ResearchAction research = this.colony.getResearch();
    if (research != null) {
      // The colony's current research name
      smallFont.drawString(x + 4, y + 45, research.getTechnology()
          .getName());

      // The colony's current research progress
      this.researchPB.setMaxValue(BigDecimal.valueOf(research
          .getDuration()));
      this.researchPB.setValue(BigDecimal.valueOf(research
          .getCurrentValue()));
      this.researchPB.setOX(x + 4);
      this.researchPB.setOY(this.getOY() + 2 + HEIGHT - dpadding - 10
          - dpadding);
      researchPB.render(g);
    }

    // Resources
    final int width = 114;
    final int height = 101;
    x = getWidth() - width;
    y = getOY();
    UIHelper.drawDarkBox(g, x += 3, y += 3, width, height - 6);

    Resource[] resources = Resource.values();
    Image img;
    x += 3;
    Map<Resource, BigDecimal> resourceMap = this.colony.getResources();
    for (Resource r : resources) {
      UIHelper.drawDarkBox(g, x, y += 3, 24, 20);
      img = ImageManager.getGfx(r.getGfxBase() + "-small");
      img.draw(x + 3, y, r.getColor());

      String value = resourceMap.get(r).toString();
      Label lbl = this.labels.get(r);

      final int zoneHeight = 15;
      UIHelper.drawDarkBox(g, x + 24, y, lbl.getWidth() + 4, zoneHeight);
      lbl.setPosition(x + 24, y);
      lbl.setText(value);
      lbl.setVisible(true);

      y += 20;
    }

  }

  @Override
  public void update(Input input) throws SlickException {
    this.updateHovered(input.getMouseX(), input.getMouseY());
  }

  public Colony getColony() {
    return this.colony;
  }
 
  public void select(boolean selected) {
    this.selected = selected;
  }
}
TOP

Related Classes of com.drakulo.games.ais.ui.component.ColonySelector

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.