Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package server.world;
- import java.util.Iterator;
- import java.util.concurrent.CopyOnWriteArrayList;
- import server.model.objects.Object;
- import server.model.players.Client;
- import server.model.players.Player;
- import server.model.players.PlayerHandler;
- /**
- *
- * @author Aleksandr
- *
- */
- public class ObjectManager {
- private CopyOnWriteArrayList<Object> object = new CopyOnWriteArrayList<Object>();
- private CopyOnWriteArrayList<Object> toRemove = new CopyOnWriteArrayList<Object>();
- public void process() {
- Iterator<Object> itr = object.iterator();
- while(itr.hasNext()) {
- Object o = itr.next();
- if(o.tick > 0) {
- o.tick--;
- continue;
- }
- if(o.tick <= 0) {
- toRemove.add(o);
- removeObject(o);
- }
- }
- itr = toRemove.iterator();
- while(itr.hasNext()) {
- Object o = itr.next();
- object.remove(o);
- }
- toRemove.clear();
- }
- public void addObject(Object o) {
- Object o2 = getObject(o.getX(), o.getY(), o.getHeight());
- if(o2 != null) {
- object.set(object.indexOf(o2), o);
- } else {
- object.add(o);
- }
- placeObject(o);
- }
- public void placeObject(Object o) {
- for(Player p : PlayerHandler.players) {
- if(p == null)
- continue;
- Client c = (Client) p;
- if(loadForPlayer(c, o)) {
- c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
- } else if(o.originalObject) {
- c.objectToRemove.add(o);
- object.remove(o);
- }
- }
- }
- public void loadObjects(Client c) {
- for(Object o : object) {
- if(loadForPlayer(c, o))
- c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
- }
- for(Object o2 : c.objectToRemove) {
- if(loadForPlayer(c, o2)) {
- c.getPA().object(o2.getNewId(), o2.getX(), o2.getY(), o2.getFace(), o2.getType());
- c.objectToRemove.remove(o2);
- }
- }
- }
- public boolean loadForPlayer(Client c, Object o) {
- return c.distanceToPoint(o.getX(), o.getY()) <= 60 && o.getHeight() == c.heightLevel;
- }
- public boolean withinDistance(Client c, Object o) {
- return c.distanceToPoint(o.getX(), o.getY()) <= 60;
- }
- public void removeObject(Object o) {
- for(Player p : PlayerHandler.players) {
- if(p == null)
- continue;
- Client c = (Client) p;
- if(loadForPlayer(c, o)) {
- c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
- continue;
- }
- if(withinDistance(c, o))
- c.objectToRemove.add(o);
- }
- }
- public Object getObject(int x, int y, int height) {
- for (Object o : object) {
- if (o.objectX == x && o.objectY == y && o.height == height)
- return o;
- }
- return null;
- }
- public void removeGameObjects(Client c, int objectClass) {
- for(Object o: object) {
- if(o.objectClass == objectClass)
- toRemove.add(o);
- }
- }
- public int getObjectCount() {
- int count = 0;
- for (Object o : object) {
- if(o != null)
- count++;
- }
- return count;
- }
- public int getObjectCount2() {
- int count = 0;
- for (Object o : toRemove) {
- if(o != null)
- count++;
- }
- return count;
- }
- public int getObjectCount3(Client c) {
- int count = 0;
- for (Object o : c.objectToRemove) {
- if(o != null)
- count++;
- }
- return count;
- }
- }
Add Comment
Please, Sign In to add comment