Package org.moparscape.msc.gs.model

Source Code of org.moparscape.msc.gs.model.ViewArea

package org.moparscape.msc.gs.model;

import java.util.ArrayList;
import java.util.List;

import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.model.landscape.ActiveTile;

public class ViewArea {
  private static World world = Instance.getWorld();
  private Mob mob;

  ViewArea(Mob mob) {
    this.mob = mob;
  }

  public List<GameObject> getGameObjectsInView() {
    List<GameObject> objects = new ArrayList<GameObject>();
    ActiveTile[][] viewArea = getViewedArea(21, 21, 21, 21);
    for (int x = 0; x < viewArea.length; x++) {
      for (int y = 0; y < viewArea[x].length; y++) {
        ActiveTile t = viewArea[x][y];
        if (t != null) {
          if (t.hasGameObject()) {
            objects.add(t.getGameObject());
          }
        }
      }
    }
    return objects;
  }

  public List<Item> getItemsInView() {
    List<Item> items = new ArrayList<Item>();
    ActiveTile[][] viewArea = getViewedArea(21, 21, 21, 21);
    for (int x = 0; x < viewArea.length; x++) {
      for (int y = 0; y < viewArea[x].length; y++) {
        ActiveTile t = viewArea[x][y];
        if (t != null) {
          items.addAll(t.getItems());
        }
      }
    }
    return items;
  }

  public List<Npc> getNpcsInView() {
    List<Npc> npcs = new ArrayList<Npc>();
    ActiveTile[][] viewArea = getViewedArea(15, 15, 16, 16);
    for (int x = 0; x < viewArea.length; x++)
      for (int y = 0; y < viewArea[x].length; y++) {
        ActiveTile t = viewArea[x][y];
        if (t != null) {
          List<Npc> temp = t.getNpcs();
          if (temp != null) {
            npcs.addAll(temp);
          }
        }
      }
    return npcs;
  }

  public List<Player> getPlayersInView() {
    List<Player> players = new ArrayList<Player>();
    ActiveTile[][] viewArea = getViewedArea(15, 15, 16, 16);
    for (int x = 0; x < viewArea.length; x++)
      for (int y = 0; y < viewArea[x].length; y++) {
        ActiveTile t = viewArea[x][y];
        if (t != null) {
          List<Player> temp = t.getPlayers();
          if (temp != null) {
            players.addAll(temp);
          }
        }
      }
    return players;
  }

  ActiveTile[][] getViewedArea(int x1, int y1, int x2, int y2) {
    int mobX = mob.getX();
    int mobY = mob.getY();
    int startX, startY, endX, endY;
    startX = mobX - x1;
    if (startX < 0) {
      startX = 0;
    }
    startY = mobY - y1;
    if (startY < 0) {
      startY = 0;
    }
    endX = mobX + x2;
    if (endX >= World.MAX_WIDTH) {
      endX = World.MAX_WIDTH - 1;
    }
    endY = mobY + y2;
    if (endY >= World.MAX_HEIGHT) {
      endY = World.MAX_HEIGHT - 1;
    }
    int xWidth;
    int yWidth;
    if (startX > endX) {
      xWidth = startX - endX;
    } else {
      xWidth = endX - startX;
    }
    if (startY > endY) {
      yWidth = startY - endY;
    } else {
      yWidth = endY - startY;
    }
    ActiveTile[][] temp = new ActiveTile[xWidth][yWidth];
    for (int x = 0; (x + startX) < endX; x++) {
      for (int y = 0; (y + startY) < endY; y++) {
        temp[x][y] = world.tiles[x + startX][y + startY];
      }
    }
    return temp;
  }

}
TOP

Related Classes of org.moparscape.msc.gs.model.ViewArea

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.