Guest User

Untitled

a guest
Jun 17th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. import java.beans.PropertyChangeSupport;
  2. import java.beans.PropertyChangeListener;
  3. import java.beans.PropertyChangeEvent;
  4.  
  5. boolean movePressed = false;
  6. boolean attackPressed = false;
  7. boolean diePressed = false;
  8.  
  9. Entity player;
  10.  
  11. void setup()
  12. {
  13. size(800, 600);
  14.  
  15. player = new Entity();
  16. }
  17.  
  18. void draw()
  19. {
  20. background(37);
  21.  
  22. player.update();
  23. player.render();
  24. }
  25.  
  26. void keyPressed()
  27. {
  28. if (key == 'm' || key == 'M')
  29. {
  30. movePressed = true;
  31. }
  32. else if (key == 'a' || key == 'A')
  33. {
  34. attackPressed = true;
  35. }
  36. else if (key == 'd' || key == 'D')
  37. {
  38. diePressed = true;
  39. }
  40. }
  41.  
  42. void keyReleased()
  43. {
  44. if (key == 'm' || key == 'M')
  45. {
  46. movePressed = false;
  47. }
  48. else if (key == 'a' || key == 'A')
  49. {
  50. attackPressed = false;
  51. }
  52. else if (key == 'd' || key == 'D')
  53. {
  54. diePressed = false;
  55. }
  56. }
  57.  
  58. enum EntityState
  59. {
  60. IDLE,
  61. WALK,
  62. ATTACK,
  63. DEAD
  64. }
  65.  
  66. class State
  67. {
  68. private EntityState _state;
  69. private PropertyChangeSupport _support;
  70.  
  71. public State()
  72. {
  73. this(EntityState.IDLE);
  74. }
  75.  
  76. public State(EntityState initialState)
  77. {
  78. _state = initialState;
  79. _support = new PropertyChangeSupport(this);
  80. }
  81.  
  82. public void addPropertyChangeListener(PropertyChangeListener pcl) {
  83. _support.addPropertyChangeListener(pcl);
  84. }
  85.  
  86. public void removePropertyChangeListener(PropertyChangeListener pcl) {
  87. _support.removePropertyChangeListener(pcl);
  88. }
  89.  
  90. public void setState(EntityState value) {
  91. _support.firePropertyChange("state", _state, value);
  92. this._state = value;
  93. }
  94.  
  95. public EntityState getState()
  96. {
  97. return _state;
  98. }
  99.  
  100. public boolean equals(EntityState state)
  101. {
  102. return _state == state;
  103. }
  104. }
  105.  
  106. class Entity
  107. {
  108. State _state;
  109. AnimationController _anim;
  110.  
  111. public Entity()
  112. {
  113. _state = new State(EntityState.IDLE);
  114. _anim = new AnimationController(_state.getState());
  115.  
  116. _state.addPropertyChangeListener(_anim);
  117. }
  118.  
  119. public void update()
  120. {
  121. if (movePressed)
  122. {
  123. _state.setState(EntityState.WALK);
  124. }
  125. else if (attackPressed)
  126. {
  127. _state.setState(EntityState.ATTACK);
  128. }
  129. else if (diePressed)
  130. {
  131. _state.setState(EntityState.DEAD);
  132. }
  133. else
  134. {
  135. _state.setState(EntityState.IDLE);
  136. }
  137. }
  138.  
  139. public void render()
  140. {
  141. if (_state.equals(EntityState.IDLE))
  142. {
  143. fill(185);
  144. text("Idling", 100, 100);
  145. }
  146. else if (_state.equals(EntityState.WALK))
  147. {
  148. fill(0, 185, 0);
  149. text("Walking", 100, 100);
  150. }
  151. else if (_state.equals(EntityState.ATTACK))
  152. {
  153. fill(0, 158, 185);
  154. text("Attacking", 100, 100);
  155. }
  156. else if (_state.equals(EntityState.DEAD))
  157. {
  158. fill(185, 48, 48);
  159. text("Dead", 100, 100);
  160. }
  161. }
  162. }
  163.  
  164. class AnimationController implements PropertyChangeListener
  165. {
  166. private EntityState _state;
  167.  
  168. public AnimationController(EntityState initialState)
  169. {
  170. _state = initialState;
  171. }
  172.  
  173. public void propertyChange(PropertyChangeEvent evt) {
  174. if (evt.getPropertyName().equals("state"))
  175. {
  176. EntityState state = (EntityState) evt.getNewValue();
  177. if (!_state.equals(state))
  178. {
  179. if (state.equals(EntityState.IDLE))
  180. {
  181. println("Changing to IDLE animation...");
  182. }
  183. else if (state.equals(EntityState.WALK))
  184. {
  185. println("Changing to WALK animation...");
  186. }
  187. else if (state.equals(EntityState.ATTACK))
  188. {
  189. println("Changing to ATTACK animation...");
  190. }
  191. else if (state.equals(EntityState.DEAD))
  192. {
  193. println("Changing to DEAD animation...");
  194. }
  195.  
  196. _state = state;
  197. }
  198. }
  199. }
  200. }
Add Comment
Please, Sign In to add comment