Files
esengine/demo/src/game/MainScene.ts

95 lines
3.4 KiB
TypeScript
Raw Normal View History

2020-06-08 18:26:05 +08:00
class MainScene extends Scene {
2020-06-29 15:41:02 +08:00
constructor() {
2020-06-23 16:18:14 +08:00
super();
2020-06-08 18:26:05 +08:00
// this.addEntityProcessor(new SpawnerSystem(new Matcher()));
2020-06-09 19:45:09 +08:00
this.astarTest();
this.dijkstraTest();
this.breadthfirstTest();
}
public async onStart() {
2020-07-01 14:19:40 +08:00
let sprite = new Sprite(RES.getRes("checkbox_select_disabled_png"));
let bg = this.createEntity("bg");
2020-07-01 14:19:40 +08:00
bg.addComponent(new SpriteRenderer()).setSprite(sprite).setColor(0xff0000);
bg.addComponent(new PlayerController());
bg.addComponent(new Mover());
2020-07-07 21:40:57 +08:00
bg.addComponent(new ScrollingSpriteRenderer(sprite));
bg.addComponent(new BoxCollider());
2020-07-01 14:19:40 +08:00
bg.position = new Vector2(Math.random() * 200, Math.random() * 200);
2020-06-29 15:41:02 +08:00
2020-07-22 20:07:14 +08:00
for (let i = 0; i < 1; i++) {
let sprite = new Sprite(RES.getRes("checkbox_select_disabled_png"));
let player2 = this.createEntity("player2");
player2.addComponent(new SpriteRenderer()).setSprite(sprite);
2020-07-22 20:07:14 +08:00
player2.position = new Vector2(Math.random() * 100, Math.random() * 100);
player2.addComponent(new BoxCollider());
}
2020-06-29 15:41:02 +08:00
2020-07-01 14:19:40 +08:00
this.camera.follow(bg, CameraStyle.lockOn);
2020-06-30 22:22:52 +08:00
let pool = new ComponentPool<SimplePooled>(SimplePooled);
let c1 = pool.obtain();
let c2 = pool.obtain();
pool.free(c1);
let c1b = pool.obtain();
console.log(c1 != c2);
console.log(c1 == c1b);
let button = new eui.Button();
button.label = "切换场景";
this.addChild(button);
button.addEventListener(egret.TouchEvent.TOUCH_TAP, () => {
SceneManager.startSceneTransition(new FadeTransition(() => {
return new MainScene();
}));
}, this);
Main.emitter.addObserver(CoreEmitterType.Update, this.handleFuncTest, this);
}
/** 测试Emitter */
private handleFuncTest(){
Main.emitter.removeObserver(CoreEmitterType.Update, this.handleFuncTest);
}
2020-06-29 15:41:02 +08:00
public breadthfirstTest() {
let graph = new UnweightedGraph<string>();
graph.addEdgesForNode("a", ["b"]); // a->b
graph.addEdgesForNode("b", ["a", "c", "d"]); // b->a b->c b->d
graph.addEdgesForNode("c", ["a"]); // c->a
graph.addEdgesForNode("d", ["e", "a"]); // d->e d->a
graph.addEdgesForNode("e", ["b"]); // e->b
// 计算从c到e的路径
let path = BreadthFirstPathfinder.search(graph, "c", "e");
console.log(path);
}
2020-06-29 15:41:02 +08:00
public dijkstraTest() {
let graph = new WeightedGridGraph(20, 20);
2020-07-08 15:15:15 +08:00
graph.weightedNodes.push(new Vector2(3, 3));
graph.weightedNodes.push(new Vector2(3, 4));
graph.weightedNodes.push(new Vector2(4, 3));
graph.weightedNodes.push(new Vector2(4, 4));
2020-07-08 15:15:15 +08:00
let path = graph.search(new Vector2(3, 4), new Vector2(15, 17));
console.log(path);
2020-06-09 19:45:09 +08:00
}
2020-06-29 15:41:02 +08:00
public astarTest() {
let graph = new AstarGridGraph(30, 30);
2020-06-09 19:45:09 +08:00
// graph.weightedNodes.push(new Vector2(3, 3));
// graph.weightedNodes.push(new Vector2(3, 4));
// graph.weightedNodes.push(new Vector2(4, 3));
// graph.weightedNodes.push(new Vector2(4, 4));
2020-06-09 19:45:09 +08:00
let startTime = egret.getTimer();
let path = graph.search(new Vector2(1, 1), new Vector2(29, 29));
console.log(egret.getTimer() - startTime);
2020-06-08 18:26:05 +08:00
}
}