22
33
44import java .util .HashMap ;
5+ import java .util .UUID ;
56
7+ import engine .events .Event ;
68import processing .core .PApplet ;
9+ import processing .core .PConstants ;
710import processing .core .PShape ;
11+ import processing .core .PVector ;
812
913public class Player extends GameObj {
1014 private float dim ;
@@ -15,7 +19,7 @@ public Player(PApplet inst, float dim, float x, float y) {
1519 int [] color = {(int ) random (255 ), (int ) random (255 ), (int ) random (255 )};
1620 this .rend = new Renderable (inst , color , PShape .RECT , dim , dim );
1721 }
18-
22+
1923 @ Override
2024 public String getType () {
2125 return "player" ;
@@ -78,4 +82,96 @@ public static Player deSerial(PApplet inst, String serial) {
7882 return res ;
7983 }
8084
85+ @ Override
86+ public void handleEvent (Event e ) {
87+
88+ switch (e .getType ()) {
89+ case (Event .EVENT_COLLISON ):
90+ if (((UUID ) e .getData ().get ("caller" )).equals (this .getUUID ())) {
91+ GameObj collidedWith = Rectangles .objectMap .get ((UUID ) e .getData ().get ("collidedWith" ));
92+ if (collidedWith .isFloor ()) {
93+ this .getPy ().getVelocity ().y = (float ) -1 ;
94+ } else {
95+ switch (collidedWith .getType ()) {
96+ case ("player" ):
97+ // Do nothing, clip-less
98+ break ;
99+ case ("platform" ):
100+ this .getPy ().getAcceleration ().mult ((float ) -1 );
101+ if (this .getPy ().getVelocity ().y > 0 ) {
102+ this .getPy ().getVelocity ().y = (float ) 0 ;
103+ } else {
104+ this .getPy ().getVelocity ().y = (float ) -1 ;
105+ this .getPy ().getVelocity ().x = (float ) 0 ;
106+ }
107+ break ;
108+ case ("death-zone" ):
109+ HashMap <String , Object > data = new HashMap <>();
110+ data .put ("caller" , this .getUUID ());
111+ Event death = new Event (Event .EVENT_DEATH , e .getTime (), data );
112+ Rectangles .eventManager .raiseEvent (death );
113+
114+ default :
115+ this .getPy ().getVelocity ().mult ((float ) -1 );
116+ break ;
117+ }
118+ }
119+ if (this .getPy ().getVelocity ().mag () > 0 ) {
120+ PVector newLoc = new PVector (this .getPy ().getLocation ().x , this .getPy ().getLocation ().y );
121+ newLoc .add (this .getPy ().getVelocity ());
122+ HashMap <String , Object > data = new HashMap <>();
123+ data .put ("caller" , this .getUUID ());
124+ data .put ("x" , newLoc .x );
125+ data .put ("y" , newLoc .y );
126+ Event mov = new Event (Event .EVENT_MOVEMENT , e .getTime (), data );
127+ Rectangles .eventManager .raiseEvent (mov );
128+ }
129+ }
130+ break ;
131+ case (Event .EVENT_MOVEMENT ):
132+ if (((UUID ) e .getData ().get ("caller" )).equals (this .getUUID ())) {
133+ PVector newLoc = new PVector ((float ) (e .getData ().get ("x" )), (float ) e .getData ().get ("y" ));
134+ this .getPy ().setLocation (newLoc );
135+ }
136+ break ;
137+ case (Event .EVENT_DEATH ):
138+ if (((UUID ) e .getData ().get ("caller" )).equals (this .getUUID ())) {
139+ Rectangles .deathPoints ++;
140+ HashMap <String , Object > data = new HashMap <>();
141+ data .put ("caller" , this .getUUID ());
142+ Event spawn = new Event (Event .EVENT_SPAWN , e .getTime (), data );
143+ Rectangles .eventManager .raiseEvent (spawn );
144+ }
145+ case (Event .EVENT_SPAWN ):
146+ if (((UUID ) e .getData ().get ("caller" )).equals (this .getUUID ())) {
147+ Spawn s = Rectangles .spawnPoints [Rectangles .generator .nextInt (2 )];
148+ HashMap <String , Object > data = new HashMap <>();
149+ data .put ("caller" , this .getUUID ());
150+ data .put ("x" , s .getPy ().getLocation ().x );
151+ data .put ("y" , s .getPy ().getLocation ().y );
152+ Event mov = new Event (Event .EVENT_MOVEMENT , e .getTime (), data );
153+ Rectangles .eventManager .raiseEvent (mov );
154+ }
155+ break ;
156+ case (Event .EVENT_INPUT ):
157+ if (((UUID ) e .getData ().get ("caller" )).equals (this .getUUID ())) {
158+ switch ((int ) e .getData ().get ("keyCode" )) {
159+ case (PConstants .LEFT ):
160+ this .getPy ().setAccelerationX (-5 );
161+ break ;
162+ case (PConstants .RIGHT ):
163+ this .getPy ().setAccelerationX (5 );
164+ break ;
165+ case (' ' ):
166+ this .getPy ().setAccelerationY (-20 );
167+ break ;
168+ }
169+ }
170+ break ;
171+ default :
172+ break ;
173+ }
174+
175+ }
176+
81177}
0 commit comments