Skip to content

Commit 5ef93ec

Browse files
committed
Step 7.25: Delete shape instances in game
1 parent cb51e7f commit 5ef93ec

File tree

5 files changed

+23
-1
lines changed

5 files changed

+23
-1
lines changed

resources/scripts/engine/game.js

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Engine.Game = class Game {
9595
changeScreen(Screen, ...screenArgs) {
9696
// If there is a screen defined, dispose it first
9797
if (this.screen) {
98+
this.screen.delete();
9899
this.unloadScreen();
99100
this.screen.disposeEventListeners();
100101
}

resources/scripts/engine/layer.js

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ Engine.Layer = class Layer {
2323
this.canvas = screen.game.canvas;
2424
}
2525

26+
delete() {
27+
}
28+
2629
update(span) {
2730
}
2831

resources/scripts/engine/screen.js

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ Engine.Screen = class Screen {
2828
return this;
2929
}
3030

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+
3138
// Updates each layer
3239
update(span) {
3340
this.layers.forEach(layer => {
@@ -61,6 +68,7 @@ Engine.Screen = class Screen {
6168
removeLayer(layer) {
6269
this.layers = _.without(this.layers, layer);
6370
layer.disposeEventListeners();
71+
layer.delete();
6472
}
6573

6674
initEventListeners() {

resources/scripts/game/entities/snake.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ Game.Entities.Snake = class Snake {
3131
}
3232
}
3333

34+
delete() {
35+
this.shapes.forEach(shape => shape.delete());
36+
}
37+
3438
draw(context) {
3539
// Draw all shapes in the shapes array
3640
this.shapes.forEach(shape => {
@@ -229,6 +233,8 @@ Game.Entities.Snake = class Snake {
229233
[0, height, 0, 0]
230234
);
231235

232-
return canvasPolygon.getIntersection(this.lastBit);
236+
let result = canvasPolygon.getIntersection(this.lastBit);
237+
canvasPolygon.delete();
238+
return result;
233239
}
234240
};

resources/scripts/game/screens/play/snake.js

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ Game.Screens.Play.Snake = class Snake extends Engine.Layer {
4343
screen.appendLayer(Game.Screens.Play.Score, this.snakes);
4444
}
4545

46+
unload() {
47+
this.snakes.forEach(snake => snake.delete());
48+
}
49+
4650
draw(context) {
4751
// Draw each snake in the snakes array
4852
this.snakes.forEach(snake => snake.draw(context));

0 commit comments

Comments
 (0)