2020-06-08 11:49:45 +08:00
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
//
|
|
|
|
|
// Copyright (c) 2014-present, Egret Technology.
|
|
|
|
|
// All rights reserved.
|
|
|
|
|
// Redistribution and use in source and binary forms, with or without
|
|
|
|
|
// modification, are permitted provided that the following conditions are met:
|
|
|
|
|
//
|
|
|
|
|
// * Redistributions of source code must retain the above copyright
|
|
|
|
|
// notice, this list of conditions and the following disclaimer.
|
|
|
|
|
// * Redistributions in binary form must reproduce the above copyright
|
|
|
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
|
|
|
// documentation and/or other materials provided with the distribution.
|
|
|
|
|
// * Neither the name of the Egret nor the
|
|
|
|
|
// names of its contributors may be used to endorse or promote products
|
|
|
|
|
// derived from this software without specific prior written permission.
|
|
|
|
|
//
|
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
|
|
|
|
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
|
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
|
// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
|
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
|
|
|
|
|
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
|
|
|
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
|
|
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
|
|
|
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
//
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Main extends eui.UILayer {
|
2020-06-15 12:16:23 +08:00
|
|
|
public static emitter: Emitter<CoreEmitterType>;
|
2020-06-08 11:49:45 +08:00
|
|
|
|
|
|
|
|
protected createChildren(): void {
|
|
|
|
|
super.createChildren();
|
|
|
|
|
|
|
|
|
|
egret.lifecycle.addLifecycleListener((context) => {
|
|
|
|
|
// custom lifecycle plugin
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
egret.lifecycle.onPause = () => {
|
|
|
|
|
egret.ticker.pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
egret.lifecycle.onResume = () => {
|
|
|
|
|
egret.ticker.resume();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//inject the custom material parser
|
|
|
|
|
//注入自定义的素材解析器
|
|
|
|
|
let assetAdapter = new AssetAdapter();
|
|
|
|
|
egret.registerImplementation("eui.IAssetAdapter", assetAdapter);
|
|
|
|
|
egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());
|
|
|
|
|
|
2020-06-15 12:16:23 +08:00
|
|
|
Main.emitter = new Emitter<CoreEmitterType>();
|
|
|
|
|
this.addEventListener(egret.Event.ENTER_FRAME, this.updateFrame, this);
|
2020-06-08 11:49:45 +08:00
|
|
|
this.runGame();
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-15 12:16:23 +08:00
|
|
|
private updateFrame(evt: egret.Event){
|
|
|
|
|
Main.emitter.emit(CoreEmitterType.Update, evt);
|
2020-06-18 00:03:01 +08:00
|
|
|
let activeScene = SceneManager.getActiveScene();
|
|
|
|
|
if (activeScene){
|
|
|
|
|
let player = activeScene.findEntity("player");
|
|
|
|
|
if (player){
|
|
|
|
|
let mover = player.getComponent<Mover>(Mover);
|
|
|
|
|
mover.move(new Vector2(0, 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-15 12:16:23 +08:00
|
|
|
}
|
|
|
|
|
|
2020-06-08 16:23:48 +08:00
|
|
|
private async runGame() {
|
|
|
|
|
await this.loadResource();
|
2020-06-08 11:49:45 +08:00
|
|
|
this.createGameScene();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async loadResource() {
|
|
|
|
|
try {
|
|
|
|
|
const loadingView = new LoadingUI();
|
|
|
|
|
this.stage.addChild(loadingView);
|
|
|
|
|
await RES.loadConfig("resource/default.res.json", "resource/");
|
|
|
|
|
await this.loadTheme();
|
|
|
|
|
await RES.loadGroup("preload", 0, loadingView);
|
|
|
|
|
this.stage.removeChild(loadingView);
|
|
|
|
|
}
|
|
|
|
|
catch (e) {
|
|
|
|
|
console.error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private loadTheme() {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
// load skin theme configuration file, you can manually modify the file. And replace the default skin.
|
|
|
|
|
//加载皮肤主题配置文件,可以手动修改这个文件。替换默认皮肤。
|
|
|
|
|
let theme = new eui.Theme("resource/default.thm.json", this.stage);
|
|
|
|
|
theme.addEventListener(eui.UIEvent.COMPLETE, () => {
|
|
|
|
|
resolve();
|
|
|
|
|
}, this);
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建场景界面
|
|
|
|
|
* Create scene interface
|
|
|
|
|
*/
|
|
|
|
|
protected createGameScene(): void {
|
2020-06-18 23:22:54 +08:00
|
|
|
let image = new eui.Image(RES.getRes("checkbox_select_disabled_png"));
|
|
|
|
|
this.addChild(image);
|
2020-06-08 18:26:05 +08:00
|
|
|
let scene = SceneManager.createScene("main", new MainScene(this)).setActive();
|
2020-06-08 16:23:48 +08:00
|
|
|
let player = scene.createEntity("player");
|
2020-06-18 23:22:54 +08:00
|
|
|
player.addComponent(new SpriteRenderer()).setSprite(image)
|
2020-06-08 18:26:05 +08:00
|
|
|
player.addComponent(new SpawnComponent(EnemyType.worm));
|
2020-06-16 16:35:17 +08:00
|
|
|
player.addComponent(new BoxCollider()).setSize(100, 100).isTrigger = true;
|
2020-06-16 11:22:37 +08:00
|
|
|
player.addComponent(new Mover());
|
2020-06-18 23:22:54 +08:00
|
|
|
player.position = new Vector2(100, 100);
|
2020-06-15 12:16:23 +08:00
|
|
|
|
2020-06-16 00:04:28 +08:00
|
|
|
let player2 = scene.createEntity("player2");
|
2020-06-18 09:06:59 +08:00
|
|
|
player2.addComponent(new BoxCollider()).setSize(99, 99);
|
2020-06-16 00:04:28 +08:00
|
|
|
|
2020-06-16 11:22:37 +08:00
|
|
|
// Main.emitter.addObserver(CoreEmitterType.Update, ()=>{
|
|
|
|
|
// console.log("update emitter");
|
|
|
|
|
// });
|
2020-06-08 11:49:45 +08:00
|
|
|
}
|
|
|
|
|
}
|