Package shadowrun.gui.drawable

Source Code of shadowrun.gui.drawable.CharactersDrawable

package shadowrun.gui.drawable;

import generic.DocumentTypeConstant;
import generic.gui.mapElement.BarElement;

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 shadowrun.bean.unit.ShadowrunCharacter;

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.getPublic()) {
        drawCharacter(g2, characterBean);
        g2.transform(at);
      }
    }
  }

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

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

    ShadowrunCharacter 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, ShadowrunCharacter 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;

    BarElement physicalBar = new BarElement(Color.RED, Color.GREEN);
    BarElement stunBar = new BarElement(Color.RED, Color.BLUE);

    float physical = character.getPhysicalPoint().floatValue();
    float physicalDamage = character.getPhysicalDamage().floatValue();
    float probPhysical = 1 - (physicalDamage / physical);

    float stun = character.getStunPoint().floatValue();
    float stunDamage = character.getStunDamage().floatValue();
    float probStun = 1 - (stunDamage / stun);

    physicalBar.drawBar(g2, 0, yLife, heightLife, widthLife, probPhysical);

    stunBar.drawBar(g2, 0, yLife - heightLife, heightLife, widthLife,
        probStun);
  }

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

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

}
TOP

Related Classes of shadowrun.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.