/src/elements/PlayerNode.java

http://inequity.googlecode.com/ · Java · 134 lines · 70 code · 15 blank · 49 comment · 2 complexity · 27199516c42c86b8d309c610039e6470 MD5 · raw file

  1. package elements;
  2. import java.util.concurrent.PriorityBlockingQueue;
  3. import network.Game;
  4. import network.NetQProxy;
  5. import packets.Command;
  6. import packets.CommandRequest;
  7. import packets.PortfolioUpdateCmd;
  8. import packets.Request;
  9. import packets.TriggeredEventReq;
  10. /**
  11. * Node to hold player game data
  12. * @author Joel Garboden
  13. */
  14. public class PlayerNode
  15. {
  16. private NetQProxy proxy;
  17. private PlayerPortfolio portfolio;
  18. private EventFactory eventFactory;
  19. private int ID;
  20. /**
  21. * Constructor
  22. * @param ID player's ID
  23. * @param proxy player proxy
  24. * @param portfolio player portfolio
  25. * @param eventFactory
  26. */
  27. public PlayerNode(int ID, NetQProxy proxy, PlayerPortfolio portfolio, EventFactory eventFactory)
  28. {
  29. this.ID = ID;
  30. this.proxy = proxy;
  31. this.portfolio = portfolio;
  32. this.eventFactory = eventFactory;
  33. }
  34. /**
  35. * Mutator
  36. * @param active proxy status
  37. */
  38. public void setActive(boolean active)
  39. {
  40. proxy.setActive(active);
  41. }
  42. /**
  43. * Accessor
  44. * @return proxy status
  45. */
  46. public boolean isActive()
  47. {
  48. return proxy.isActive();
  49. }
  50. /**
  51. * Adds a command to the outgoing queue
  52. * @param cmd command to be sent
  53. */
  54. public void send(Command cmd)
  55. {
  56. proxy.queue.add(cmd);
  57. }
  58. /**
  59. * Mutator
  60. * @param name player name
  61. */
  62. public void setName(String name)
  63. {
  64. portfolio.setName(name);
  65. }
  66. /**
  67. * Accessor
  68. * @return player name
  69. */
  70. public String getName()
  71. {
  72. return portfolio.getName();
  73. }
  74. /**
  75. * Accessor for the players portfolio
  76. * @return player's portfolio
  77. */
  78. public PlayerPortfolio getPortfolio()
  79. {
  80. return portfolio;
  81. }
  82. /**
  83. * Mutator for portfolio
  84. * @param portfolio new player portfolio
  85. */
  86. public void setPortfolio(PlayerPortfolio portfolio)
  87. {
  88. this.portfolio = portfolio;
  89. }
  90. /**
  91. * Advances player data by one week.
  92. * @param gameQ game's processing queue
  93. * @param game
  94. */
  95. public void nextWeek(PriorityBlockingQueue<CommandRequest> gameQ, Game game)
  96. {
  97. portfolio.nextWeek();
  98. portfolio.payBills();
  99. Request req = null;
  100. if(portfolio.weekCounter % Consts.WEEKS_IN_MONTH == 0) //last week of the month == monthly event
  101. {
  102. //req = game.triggerEvent(portfolio);
  103. req = new TriggeredEventReq(eventFactory.getAnEvent());
  104. req.setID(ID);
  105. gameQ.add(req);
  106. }
  107. //Weekly events happen every week
  108. req = new TriggeredEventReq(eventFactory.getAnEvent());
  109. req.setID(ID);
  110. gameQ.add(req);
  111. }
  112. /**
  113. * Sends updated portfolio to client
  114. */
  115. public void sendPortfolio()
  116. {
  117. send(new PortfolioUpdateCmd(portfolio));
  118. }
  119. }