Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.beans.PropertyChangeSupport;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeEvent;
- boolean movePressed = false;
- boolean attackPressed = false;
- boolean diePressed = false;
- Entity player;
- void setup()
- {
- size(800, 600);
- player = new Entity();
- }
- void draw()
- {
- background(37);
- player.update();
- player.render();
- }
- void keyPressed()
- {
- if (key == 'm' || key == 'M')
- {
- movePressed = true;
- }
- else if (key == 'a' || key == 'A')
- {
- attackPressed = true;
- }
- else if (key == 'd' || key == 'D')
- {
- diePressed = true;
- }
- }
- void keyReleased()
- {
- if (key == 'm' || key == 'M')
- {
- movePressed = false;
- }
- else if (key == 'a' || key == 'A')
- {
- attackPressed = false;
- }
- else if (key == 'd' || key == 'D')
- {
- diePressed = false;
- }
- }
- enum EntityState
- {
- IDLE,
- WALK,
- ATTACK,
- DEAD
- }
- class State
- {
- private EntityState _state;
- private PropertyChangeSupport _support;
- public State()
- {
- this(EntityState.IDLE);
- }
- public State(EntityState initialState)
- {
- _state = initialState;
- _support = new PropertyChangeSupport(this);
- }
- public void addPropertyChangeListener(PropertyChangeListener pcl) {
- _support.addPropertyChangeListener(pcl);
- }
- public void removePropertyChangeListener(PropertyChangeListener pcl) {
- _support.removePropertyChangeListener(pcl);
- }
- public void setState(EntityState value) {
- _support.firePropertyChange("state", _state, value);
- this._state = value;
- }
- public EntityState getState()
- {
- return _state;
- }
- public boolean equals(EntityState state)
- {
- return _state == state;
- }
- }
- class Entity
- {
- State _state;
- AnimationController _anim;
- public Entity()
- {
- _state = new State(EntityState.IDLE);
- _anim = new AnimationController(_state.getState());
- _state.addPropertyChangeListener(_anim);
- }
- public void update()
- {
- if (movePressed)
- {
- _state.setState(EntityState.WALK);
- }
- else if (attackPressed)
- {
- _state.setState(EntityState.ATTACK);
- }
- else if (diePressed)
- {
- _state.setState(EntityState.DEAD);
- }
- else
- {
- _state.setState(EntityState.IDLE);
- }
- }
- public void render()
- {
- if (_state.equals(EntityState.IDLE))
- {
- fill(185);
- text("Idling", 100, 100);
- }
- else if (_state.equals(EntityState.WALK))
- {
- fill(0, 185, 0);
- text("Walking", 100, 100);
- }
- else if (_state.equals(EntityState.ATTACK))
- {
- fill(0, 158, 185);
- text("Attacking", 100, 100);
- }
- else if (_state.equals(EntityState.DEAD))
- {
- fill(185, 48, 48);
- text("Dead", 100, 100);
- }
- }
- }
- class AnimationController implements PropertyChangeListener
- {
- private EntityState _state;
- public AnimationController(EntityState initialState)
- {
- _state = initialState;
- }
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getPropertyName().equals("state"))
- {
- EntityState state = (EntityState) evt.getNewValue();
- if (!_state.equals(state))
- {
- if (state.equals(EntityState.IDLE))
- {
- println("Changing to IDLE animation...");
- }
- else if (state.equals(EntityState.WALK))
- {
- println("Changing to WALK animation...");
- }
- else if (state.equals(EntityState.ATTACK))
- {
- println("Changing to ATTACK animation...");
- }
- else if (state.equals(EntityState.DEAD))
- {
- println("Changing to DEAD animation...");
- }
- _state = state;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment