Package sc.client.world

Source Code of sc.client.world.Tile

package sc.client.world;

import java.io.IOException;

import k8.primitive.Triangle;
import sc.client.Client;
import sc.client.procedural.TileTexture;
import sc.datainterchange.CodedInputBuffer;

/**
* Tile
*
* @author Stephen Carmody
*/
public final class Tile extends Container
{
  // Tile object identity in data interchange
  private static final int OBJECTTYPEID = 2;
 
  public static int MAPSIZE = 1000;
  public static int WIDTH = 200 / Client.SCALE;
  public static int HALFMAPSIZE = (int) (Tile.MAPSIZE * 0.5);
  public static int HALFWIDTH = (int) (Tile.WIDTH * 0.5);

  // Grid of Tiles that make up the known world
  public static Tile[][] tiles = new Tile[Tile.MAPSIZE][Tile.MAPSIZE];

  // The tiles scene bounds
  public int left;
  public int top;
  public int right;
  public int bottom;

  /**
   * Creates an instance of Tile.
   */
  public Tile()
  {
  }

  /**
   * Receives "object" data and either creates or updates the corresponding
   * object.
   *
   * @param dataEvent
   */
  public void read(CodedInputBuffer codedinput) throws IOException
  {
    super.read(codedinput);

    Tile.tiles[this.getTileX()][this.getTileZ()] = this;

    // Set tiles scene bounds
    this.left = (int) this.T[3] - HALFWIDTH;
    this.top = (int) this.T[11] - HALFWIDTH;
    this.right = (int) this.T[3] + HALFWIDTH;
    this.bottom = (int) this.T[11] + HALFWIDTH;
   
    // Make a flat surface out of two Triangles
    Triangle triangle = new Triangle();
    triangle.setVertices(-Tile.HALFWIDTH , 0, Tile.HALFWIDTH,
        Tile.HALFWIDTH , 0, Tile.HALFWIDTH,
        Tile.HALFWIDTH, 0, -Tile.HALFWIDTH);
    triangle.setTexture(0, 1, 1, 1, 1, 0);
    triangle.setTexture(TileTexture.getInstance());
    this.add(triangle);

    triangle = new Triangle();
    triangle.setVertices(-Tile.HALFWIDTH, 0, Tile.HALFWIDTH,
        Tile.HALFWIDTH, 0, -Tile.HALFWIDTH,
        -Tile.HALFWIDTH, 0, -Tile.HALFWIDTH);
    triangle.setTexture(0, 1, 1, 0, 0, 0);
    triangle.setTexture(TileTexture.getInstance());
    this.add(triangle);
   
    Client.logger.info("tile at " + this.T[3] + ", " + this.T[11] + " - " + Tile.HALFWIDTH);
  }

  /**
   * Gets the tile at the specified position.
   *
   * @param x
   * @param z
   *
   * @return a Tile instance
   */
  public static Tile get(int tilex, int tilez)
  {
    return tiles[tilex][tilez];
  }

  /**
   * Gets the x index in tiles grid.
   *
   * @return x index in tiles grid
   */
  public int getTileX()
  {
    return (int) (this.T[3] / Tile.WIDTH) * Client.SCALE + Tile.HALFMAPSIZE;
  }

  /**
   * Gets the z index in tiles grid.
   *
   * @return z index int tiles grid
   */
  public int getTileZ()
  {
    return (int) (this.T[11] / Tile.WIDTH) * Client.SCALE + Tile.HALFMAPSIZE;
  }

  @Override
  public String getID()
  {
    return "tile:" + getTileX() + "x" + getTileZ();
  }

}
TOP

Related Classes of sc.client.world.Tile

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.