File tree 5 files changed +23
-1
lines changed
5 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -95,6 +95,7 @@ Engine.Game = class Game {
95
95
changeScreen ( Screen , ...screenArgs ) {
96
96
// If there is a screen defined, dispose it first
97
97
if ( this . screen ) {
98
+ this . screen . delete ( ) ;
98
99
this . unloadScreen ( ) ;
99
100
this . screen . disposeEventListeners ( ) ;
100
101
}
Original file line number Diff line number Diff line change @@ -23,6 +23,9 @@ Engine.Layer = class Layer {
23
23
this . canvas = screen . game . canvas ;
24
24
}
25
25
26
+ delete ( ) {
27
+ }
28
+
26
29
update ( span ) {
27
30
}
28
31
Original file line number Diff line number Diff line change @@ -28,6 +28,13 @@ Engine.Screen = class Screen {
28
28
return this ;
29
29
}
30
30
31
+ // Delete all layers. Same as 'unload', only it disposes memory rather than assets
32
+ delete ( ) {
33
+ this . layers . forEach ( layer => {
34
+ layer . delete ( ) ;
35
+ } ) ;
36
+ }
37
+
31
38
// Updates each layer
32
39
update ( span ) {
33
40
this . layers . forEach ( layer => {
@@ -61,6 +68,7 @@ Engine.Screen = class Screen {
61
68
removeLayer ( layer ) {
62
69
this . layers = _ . without ( this . layers , layer ) ;
63
70
layer . disposeEventListeners ( ) ;
71
+ layer . delete ( ) ;
64
72
}
65
73
66
74
initEventListeners ( ) {
Original file line number Diff line number Diff line change @@ -31,6 +31,10 @@ Game.Entities.Snake = class Snake {
31
31
}
32
32
}
33
33
34
+ delete ( ) {
35
+ this . shapes . forEach ( shape => shape . delete ( ) ) ;
36
+ }
37
+
34
38
draw ( context ) {
35
39
// Draw all shapes in the shapes array
36
40
this . shapes . forEach ( shape => {
@@ -229,6 +233,8 @@ Game.Entities.Snake = class Snake {
229
233
[ 0 , height , 0 , 0 ]
230
234
) ;
231
235
232
- return canvasPolygon . getIntersection ( this . lastBit ) ;
236
+ let result = canvasPolygon . getIntersection ( this . lastBit ) ;
237
+ canvasPolygon . delete ( ) ;
238
+ return result ;
233
239
}
234
240
} ;
Original file line number Diff line number Diff line change @@ -43,6 +43,10 @@ Game.Screens.Play.Snake = class Snake extends Engine.Layer {
43
43
screen . appendLayer ( Game . Screens . Play . Score , this . snakes ) ;
44
44
}
45
45
46
+ unload ( ) {
47
+ this . snakes . forEach ( snake => snake . delete ( ) ) ;
48
+ }
49
+
46
50
draw ( context ) {
47
51
// Draw each snake in the snakes array
48
52
this . snakes . forEach ( snake => snake . draw ( context ) ) ;
You can’t perform that action at this time.
0 commit comments