Package kku.cs.fgl

Source Code of kku.cs.fgl.IsometricViewPort

package kku.cs.fgl;

import java.awt.Point;

import org.newdawn.slick.Graphics;
import org.newdawn.slick.geom.Polygon;
import org.newdawn.slick.geom.Shape;

public class IsometricViewPort extends TilemapViewPort {
    private float start_x,start_y;

  public IsometricViewPort(int id, AbstractScene scene, float x, float y) {
    super(id, scene, x, y);
    start_x = 0;
    setTileWidth(32);
    setTileHeight(16);
  }

  @Override
  public Shape getTileShape(int col, int row) {
    float p[]=new float[8];
    Point t = getTileLocation(col,row);
    int tw=getTileWidth();
    int th=getTileHeight();
    p[0]=t.x;
    p[1]=t.y;
    p[2]=t.x+tw/2;
    p[3]=t.y-th/2;
    p[4]=t.x+tw;
    p[5]=t.y;
    p[6]=t.x+tw/2;
    p[7]=t.y+th/2;   
    return new Polygon(p);
  }

  public Point getTileLocation(int col,int row) {
    Point p=new  Point();
    int tw=getTileWidth();
    int th=getTileHeight();
    start_y = th*(getMapheight()+getMapwidth())/2;   
    p.x = (int)(start_x+(tw/2)*(col+row) );
    p.y = (int)(start_y-(th/2)*(col-row) );   
    return p;
  }

  @Override
  public void setTileHeight(int tileHeight) {
    setTileSize(tileHeight*2,tileHeight);
  }
  @Override
  public void setTileWidth(int tileWidth) {
    setTileSize(tileWidth,tileWidth/2);
  }
  @Override
  public void setTileSize(int tw, int th) {
    super.setTileSize(tw, tw/2);
  }
  public Point getCellFromXY(float x,float y) {
    int tw=getTileWidth();
    int th=getTileHeight();
    float mx,my;
//    start_y = th*getMapheight()*getMapwidth()/4;   
    mx = x-start_x;
    my = y-start_y;
    float px=((mx - (2*my))/(tw));
    float py =((my*2)/th + px)
    return new Point((int)px,(int)py);
 
  /**
   * Render SpriteCell
   *
   * @param g
   * @param tx
   *            :tile x
   * @param ty
   *            :tile y
   * @param x
   *            :location to render
   * @param y
   *            :location to render
   */
  public void paintCell(Graphics g, int tx, int ty, Shape r, SpriteCell cell) {
    if (cell != null) {
      int h=cell.getHeight();
      cell.paint(g, (int) r.getX(), (int) r.getMaxY()-h, getBgColor());
    }
  }
 
}
TOP

Related Classes of kku.cs.fgl.IsometricViewPort

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.