Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. package serverComms;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. import org.joml.Vector2f;
  8. import org.joml.Vector3f;
  9.  
  10. import physics.network.RaceSetupData;
  11. import physics.network.ShipSetupData;
  12. import trackDesign.SeedTrack;
  13. import trackDesign.TrackMaker;
  14. import trackDesign.TrackPoint;
  15.  
  16. public class GameRoom {
  17.  
  18. ArrayList<String> players = new ArrayList<String>();
  19.  
  20. String name;
  21. final int id;
  22. private long seed;
  23. private int maxPlayers;
  24. private boolean inGame = false;
  25. private String hostName;
  26. private ClientTable table;
  27.  
  28. public GameRoom(int id, String name, long seed, int maxPlayers, String hostName, ClientTable table) {
  29. this.id = id;
  30. this.name = name;
  31. this.seed = seed;
  32. this.maxPlayers = maxPlayers;
  33. this.hostName = hostName;
  34. this.table = table;
  35. }
  36.  
  37. public boolean isBusy() {
  38. return(players.size()>=maxPlayers || inGame);
  39. }
  40.  
  41. public String getName() {
  42. return name;
  43. }
  44.  
  45. public int getId() {
  46. return id;
  47. }
  48. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  49.  
  50. <<<<<<< HEAD
  51. private static final long TIME_TO_START = 3000000000L; // To to start race in nanoseconds
  52. private static final int SIDE_DISTANCES = 10;
  53. private static final int FORWARD_DISTANCES = 10;
  54. private static final int STARTING_HEIGHT = 10;
  55. ArrayList<String> players = new ArrayList<String>();
  56. ArrayList<ShipSetupData> ships;
  57. =======
  58. public void remove(String name) {
  59. players.remove(name);
  60. //Add in method to replace with AI?
  61.  
  62. }
  63. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  64.  
  65. <<<<<<< HEAD
  66. =======
  67. public long getSeed() {
  68. return seed;
  69. }
  70. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  71.  
  72. <<<<<<< HEAD
  73. String name;
  74. final int id;
  75. private long seed;
  76. private int maxPlayers;
  77. private int numAI;
  78. private String hostName;
  79. private ClientTable table;
  80. private ArrayList<TrackPoint> trackPoints;
  81. =======
  82. public void addPlayer(String clientName) {
  83. players.add(clientName);
  84. }
  85. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  86.  
  87. <<<<<<< HEAD
  88. public GameRoom(int id, String name, long seed, int maxPlayers, int numAI, String hostName, ClientTable table) {
  89. this.id = id;
  90. this.name = name;
  91. this.seed = seed;
  92. this.maxPlayers = maxPlayers;
  93. this.numAI = numAI;
  94. this.hostName = hostName;
  95. this.table = table;
  96. this.ships = new ArrayList<ShipSetupData>(maxPlayers);
  97. // Generate the track
  98. long trackSeed = seed;
  99. SeedTrack st = TrackMaker.makeTrack(trackSeed, 10, 20, 30, 1, 40, 40, 4);
  100. trackPoints = st.getTrack();
  101. =======
  102. public ArrayList<String> getPlayers() {
  103. return players;
  104. }
  105.  
  106. public void startGame(String clientName) {
  107. if(clientName == hostName) {
  108. inGame = true;
  109. for(int i = 0; i < players.size(); i++) {
  110. table.getReceiver(players.get(i)).setGame(this, i);
  111. table.getQueue(players.get(i)).offer(new ByteArrayByte(String.valueOf(i).getBytes(ServerComm.charset), ServerComm.STARTGAME));
  112. }
  113. }
  114. }
  115.  
  116. public void endGame() {
  117. inGame = false;
  118. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  119. }
  120.  
  121. <<<<<<< HEAD
  122. public String getName() {
  123. return name;
  124. }
  125.  
  126. public int getId() {
  127. return id;
  128. }
  129.  
  130.  
  131. public void remove(String name) {
  132. players.remove(name);
  133. // Add in method to replace with AI?
  134.  
  135. }
  136.  
  137.  
  138. public ArrayList<String> getPlayers() {
  139. return players;
  140. }
  141.  
  142. public RaceSetupData setupRace() {
  143. HashMap<Byte, ShipSetupData> resShips = new HashMap<Byte, ShipSetupData>();
  144. for (int i = 0; i < ships.size(); i++) {
  145. resShips.put((byte) i, ships.get(i));
  146. }
  147. Vector2f startDirection = trackPoints.get(0).sub(trackPoints.get(1));
  148. return new RaceSetupData(resShips, generateStartingPositions(startDirection),
  149. new Vector3f(startDirection.x, STARTING_HEIGHT, startDirection.y), seed, TIME_TO_START);
  150. }
  151.  
  152. private Map<Byte, Vector3f> generateStartingPositions(Vector2f startDirection) {
  153. Map<Byte, Vector2f> res = new HashMap<Byte, Vector2f>();
  154. float width = trackPoints.get(0).getWidth();
  155. int shipsInRow = (int) width / SIDE_DISTANCES;
  156. float sidePadding = (width - shipsInRow * SIDE_DISTANCES) / 2;
  157. int shipsLeft = maxPlayers;
  158. int currentRow = 0;
  159. float startAngle = (float) Math.atan2(startDirection.x, startDirection.y);
  160. float sin = (float) Math.cos(startAngle);
  161. float cos = (float) Math.cos(startAngle);
  162. Vector2f firstShip = new Vector2f((float) (trackPoints.get(0).x + cos * trackPoints.get(0).getWidth() / 2),
  163. (float) (trackPoints.get(0).y + sin * trackPoints.get(0).getWidth() / 2));
  164. while (shipsLeft > shipsInRow) {
  165. for (int i = 0; i < shipsInRow; i++) {
  166. res.put((byte) (maxPlayers - shipsLeft), new Vector2f(firstShip).add(SIDE_DISTANCES * i * cos, SIDE_DISTANCES * i * sin))
  167. .add(FORWARD_DISTANCES * currentRow * sin, FORWARD_DISTANCES * currentRow * cos);
  168. }
  169. }
  170. return null; // TODO
  171. }
  172.  
  173. private float getTrackDirection() {
  174. Vector2f relative = trackPoints.get(0).sub(trackPoints.get(1));
  175. return (float) Math.atan2(relative.x, relative.y);
  176. }
  177.  
  178.  
  179.  
  180. public void startGame(String clientName) {
  181. if (clientName == hostName) {
  182. for (int i = 0; i < players.size(); i++) {
  183. table.getReceiver(players.get(i)).setGame(this, i);
  184. }
  185. }
  186. }
  187.  
  188. =======
  189. public void updateUser(int gameNum, byte[] msg) {
  190. // TODO What to do here?
  191.  
  192. }
  193.  
  194. >>>>>>> branch 'dev' of git@git-teaching.cs.bham.ac.uk:mod-team-proj-2016/e1.git
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement