Package pathfinder.gui.drawable

Source Code of pathfinder.gui.drawable.CharactersDrawable

package pathfinder.gui.drawable;

import generic.DocumentTypeConstant;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.HashSet;

import net.alteiar.campaign.CampaignClient;
import net.alteiar.documents.BeanDocument;
import net.alteiar.player.Player;
import pathfinder.bean.unit.PathfinderCharacter;

public class CharactersDrawable {

  public CharactersDrawable() {
  }

  public void draw(Graphics2D g) {
    Graphics2D g2 = (Graphics2D) g.create();
    HashSet<BeanDocument> characters = CampaignClient.getInstance()
        .getDocuments();

    AffineTransform at = new AffineTransform();
    at.setToTranslation(70, 0);

    AffineTransform orinalTranslate = new AffineTransform();
    orinalTranslate.setToTranslation(10, 10);

    g2.transform(orinalTranslate);
    for (BeanDocument characterBean : characters) {
      if (characterBean.getDocumentType().equals(
          DocumentTypeConstant.CHARACTER)
          && characterBean.isAllowedToSee(CampaignClient
              .getInstance().getCurrentPlayer())) {
        drawCharacter(g2, characterBean);
        g2.transform(at);
      }
    }
  }

  public static int WIDTH = 50;
  public static int HEIGHT = 50;
  public static int HEIGHT_HEALTH_BAR = 10;

  protected void drawCharacter(Graphics2D g, BeanDocument doc) {
    Graphics2D g2 = (Graphics2D) g.create();

    PathfinderCharacter character = CampaignClient.getInstance().getBean(
        doc.getBeanId());

    BufferedImage background = character.getCharacterImage();

    if (background != null) {
      g2.drawImage(background, 0, 0, WIDTH, HEIGHT, null);
    } else {
      g2.fillRect(0, 0, 50, 50);
    }

    drawHealthBar(g2, character);
    drawPlayerColor(g2, doc);
  }

  protected void drawHealthBar(Graphics2D g, PathfinderCharacter character) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
        0.7f));
    int heightLife = 10;
    int yLife = HEIGHT - HEIGHT_HEALTH_BAR;
    int widthLife = WIDTH;

    Integer currentHp = character.getCurrentHp();
    Integer totalHp = character.getTotalHp();

    Float ratio = Math.min(1.0f, currentHp / (float) totalHp);
    if (currentHp > 0) {
      Color hp = new Color(1.0f - ratio, ratio, 0);
      g2.setColor(hp);
      g2.fillRect(0, yLife, (int) (widthLife * ratio), heightLife);
    }

    g2.setColor(Color.BLACK);
    g2.drawRect(0, yLife, widthLife - 1, heightLife - 1);
    g2.dispose();
  }

  protected void drawPlayerColor(Graphics2D g2, BeanDocument character) {
    Player player = CampaignClient.getInstance().getBean(
        character.getOwner());
    g2.setColor(player.getRealColor());
    g2.fillOval(40, 30, 10, 10);

    g2.setColor(Color.BLACK);
    g2.drawOval(40, 30, 10, 10);
  }

}
TOP

Related Classes of pathfinder.gui.drawable.CharactersDrawable

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.