Package org.pokenet.server.backend.map

Source Code of org.pokenet.server.backend.map.ServerMapMatrix

package org.pokenet.server.backend.map;

import org.pokenet.server.backend.entity.Char;
import org.pokenet.server.backend.entity.Positionable.Direction;

/**
* Stores all maps on the server in a 2D array
* @author shadowkanji
*
*/
public class ServerMapMatrix {
  private ServerMap[][] m_mapMatrix;
 
  /**
   * Default constructor
   */
  public ServerMapMatrix() {
    m_mapMatrix = new ServerMap[100][100];
  }
 
  /**
   * Returns a server map based on its in-game position (some maps are named negatively, e.g. -50.-50.tmx)
   * @param x
   * @param y
   * @return
   */
  public synchronized ServerMap getMapByGamePosition(int x, int y) {
    return m_mapMatrix[(x + 50)][(y + 50)];
  }
 
  /**
   * Returns a server map based on its actual position in the server map array.
   * @param x
   * @param y
   * @return
   */
  public synchronized ServerMap getMapByRealPosition(int x, int y) {
    return m_mapMatrix[x][y];
  }
 
  /**
   * Moves a player between two maps
   * @param c
   * @param origin
   * @param destination
   */
  public void moveBetweenMaps(Char c, ServerMap origin, ServerMap dest) {
    Direction dir = null;
    /*
     * Reposition player so they're on the correct edge
     */
    if (origin.getX() > dest.getX()) { // dest. map is to the left
      c.setX(dest.getWidth() * 32 - 32);
      c.setY(c.getY() + origin.getYOffsetModifier() - dest.getYOffsetModifier());
      dir = Direction.Left;
    } else if (origin.getX() < dest.getX()) { // to the right
      c.setX(0);
      c.setY(c.getY() + origin.getYOffsetModifier() - dest.getYOffsetModifier());
      dir = Direction.Right;
    } else if (origin.getY() > dest.getY()) {// up
      c.setY(dest.getHeight() * 32 - 40);
      c.setX((c.getX() + origin.getXOffsetModifier()) - dest.getXOffsetModifier());
      dir = Direction.Up;
    } else if (origin.getY() < dest.getY()) {// down
      c.setY(-8);
      c.setX((c.getX() - dest.getXOffsetModifier()) + origin.getXOffsetModifier());
      dir = Direction.Down;
    }
    /*
     * Set the map
     */
    c.setMap(dest, dir);
  }
 
  /**
   * Sets a map to the map matrixs
   * @param map
   * @param x
   * @param y
   */
  public void setMap(ServerMap map, int x, int y) {
    m_mapMatrix[x][y] = map;
  }
}
TOP

Related Classes of org.pokenet.server.backend.map.ServerMapMatrix

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.