Skip to content

Commit d2de227

Browse files
committed
update
1 parent 2850018 commit d2de227

22 files changed

+1536
-0
lines changed

src/Base.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**@type {import("../typings/phaser")} */
2+
3+
export class BaseScene extends Phaser.Scene{
4+
constructor(key, config){
5+
super(key);
6+
this.config = config;
7+
this.screenCenter= [this.config.width/2, this.config.height/2];
8+
this.lineHeight = 72;
9+
this.backButton = null;
10+
}
11+
12+
createBackButton(){
13+
const backButtonPos= [this.config.bottomRight.x-10, this.config.bottomRight.y -10];
14+
const backButton= this.add.image(...backButtonPos, 'backButton')
15+
.setOrigin(1)
16+
.setScale(2)
17+
.setInteractive().setDepth(20)
18+
backButton.on('pointerup', () =>{
19+
this.scene.start('MenuScene');
20+
})
21+
22+
return backButton;
23+
}
24+
createMenu(menuItems){
25+
const levels = this.registry.get("unlocked_levels")
26+
let menuItemPosY= 0;
27+
menuItems.forEach(item=>{
28+
item.textObject= this.add.text(this.screenCenter[0], this.screenCenter[1]+ menuItemPosY, item.text, {font: '52px Serif'})
29+
.setInteractive()
30+
.setOrigin(0.5, 1)
31+
.setStyle({fill: 'brown'})
32+
menuItemPosY +=this.lineHeight;
33+
})
34+
}
35+
36+
handleMenuEvents(){
37+
this.menuItems.forEach(item=>{
38+
//style texts
39+
item.textObject.on('pointerover', ()=>{
40+
item.textObject.setStyle({fill: 'yellow'});
41+
});
42+
item.textObject.on('pointerout', ()=>{
43+
item.textObject.setStyle({fill: 'brown'});
44+
});
45+
//move to play scene
46+
item.textObject.on('pointerup', ()=>{
47+
this.scene.start(item.scene);
48+
//destroy game on clicking Exit
49+
if(item.text=='Exit')this.game.destroy(true);
50+
})
51+
})
52+
53+
}
54+
}

src/Levels.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**@type {import("../typings/phaser")} */
2+
import { BaseScene } from "./Base.js";
3+
4+
5+
export class LevelScene extends BaseScene {
6+
constructor(config) {
7+
super('LevelScene', config);
8+
9+
this.menuItems = [
10+
{scene: "PlayScene", text: "Level 1"},
11+
{scene: "PlayScene", text: "Level 2"},
12+
]
13+
}
14+
15+
create() {
16+
this.add.image(0, 0, 'bg-other')
17+
.setOrigin(0, 0, )
18+
.setScale(2.2);
19+
20+
this.createMenu(this.menuItems);
21+
this.handleMenuEvents()
22+
this.createBackButton()
23+
.setPosition(this.config.width-10, this.config.height-10)
24+
}
25+
26+
handleMenuEvents(){
27+
super.handleMenuEvents();
28+
this.menuItems.forEach((item, index)=>{
29+
item.textObject.on("pointerup", ()=>{
30+
this.registry.set("level", index+1)
31+
})
32+
})
33+
}
34+
35+
}

src/Menu.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**@type {import("../typings/phaser")} */
2+
import { BaseScene } from "./Base.js";
3+
4+
5+
export class MenuScene extends BaseScene{
6+
constructor(config){
7+
super('MenuScene', config);
8+
9+
this.menuItems=[
10+
{scene: 'PlayScene', text: 'Play'},
11+
{scene: 'LevelScene', text: 'Levels'},
12+
{scene: null, text: 'Exit'},
13+
]
14+
}
15+
16+
create(){
17+
this.add.image(0,0,'bg-other')
18+
.setOrigin(0,0,)
19+
.setScale(2.2);
20+
21+
this.createMenu(this.menuItems);
22+
this.handleMenuEvents();
23+
}
24+
25+
update(){
26+
27+
}
28+
}

0 commit comments

Comments
 (0)