Guest User

Untitled

a guest
Oct 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. package server.world;
  2.  
  3. import java.util.Iterator;
  4. import java.util.concurrent.CopyOnWriteArrayList;
  5.  
  6. import server.model.objects.Object;
  7. import server.model.players.Client;
  8. import server.model.players.Player;
  9. import server.model.players.PlayerHandler;
  10.  
  11. /**
  12. *
  13. * @author Aleksandr
  14. *
  15. */
  16. public class ObjectManager {
  17.  
  18. private CopyOnWriteArrayList<Object> object = new CopyOnWriteArrayList<Object>();
  19. private CopyOnWriteArrayList<Object> toRemove = new CopyOnWriteArrayList<Object>();
  20.  
  21. public void process() {
  22. Iterator<Object> itr = object.iterator();
  23. while(itr.hasNext()) {
  24. Object o = itr.next();
  25. if(o.tick > 0) {
  26. o.tick--;
  27. continue;
  28. }
  29. if(o.tick <= 0) {
  30. toRemove.add(o);
  31. removeObject(o);
  32. }
  33. }
  34. itr = toRemove.iterator();
  35. while(itr.hasNext()) {
  36. Object o = itr.next();
  37. object.remove(o);
  38. }
  39. toRemove.clear();
  40.  
  41. }
  42.  
  43. public void addObject(Object o) {
  44. Object o2 = getObject(o.getX(), o.getY(), o.getHeight());
  45. if(o2 != null) {
  46. object.set(object.indexOf(o2), o);
  47. } else {
  48. object.add(o);
  49. }
  50. placeObject(o);
  51. }
  52.  
  53. public void placeObject(Object o) {
  54. for(Player p : PlayerHandler.players) {
  55. if(p == null)
  56. continue;
  57. Client c = (Client) p;
  58. if(loadForPlayer(c, o)) {
  59. c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
  60. } else if(o.originalObject) {
  61. c.objectToRemove.add(o);
  62. object.remove(o);
  63. }
  64.  
  65. }
  66. }
  67.  
  68. public void loadObjects(Client c) {
  69. for(Object o : object) {
  70. if(loadForPlayer(c, o))
  71. c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
  72. }
  73. for(Object o2 : c.objectToRemove) {
  74. if(loadForPlayer(c, o2)) {
  75. c.getPA().object(o2.getNewId(), o2.getX(), o2.getY(), o2.getFace(), o2.getType());
  76. c.objectToRemove.remove(o2);
  77. }
  78. }
  79. }
  80.  
  81. public boolean loadForPlayer(Client c, Object o) {
  82. return c.distanceToPoint(o.getX(), o.getY()) <= 60 && o.getHeight() == c.heightLevel;
  83. }
  84.  
  85. public boolean withinDistance(Client c, Object o) {
  86. return c.distanceToPoint(o.getX(), o.getY()) <= 60;
  87. }
  88.  
  89. public void removeObject(Object o) {
  90. for(Player p : PlayerHandler.players) {
  91. if(p == null)
  92. continue;
  93. Client c = (Client) p;
  94. if(loadForPlayer(c, o)) {
  95. c.getPA().object(o.getNewId(), o.getX(), o.getY(), o.getFace(), o.getType());
  96. continue;
  97. }
  98. if(withinDistance(c, o))
  99. c.objectToRemove.add(o);
  100. }
  101. }
  102.  
  103. public Object getObject(int x, int y, int height) {
  104. for (Object o : object) {
  105. if (o.objectX == x && o.objectY == y && o.height == height)
  106. return o;
  107. }
  108. return null;
  109. }
  110.  
  111. public void removeGameObjects(Client c, int objectClass) {
  112. for(Object o: object) {
  113. if(o.objectClass == objectClass)
  114. toRemove.add(o);
  115. }
  116. }
  117.  
  118. public int getObjectCount() {
  119. int count = 0;
  120. for (Object o : object) {
  121. if(o != null)
  122. count++;
  123. }
  124. return count;
  125. }
  126.  
  127. public int getObjectCount2() {
  128. int count = 0;
  129. for (Object o : toRemove) {
  130. if(o != null)
  131. count++;
  132. }
  133. return count;
  134. }
  135.  
  136. public int getObjectCount3(Client c) {
  137. int count = 0;
  138. for (Object o : c.objectToRemove) {
  139. if(o != null)
  140. count++;
  141. }
  142. return count;
  143. }
  144.  
  145. }
Add Comment
Please, Sign In to add comment