AppRoot loading

This commit is contained in:
Martin 2023-01-02 11:14:44 +01:00
parent 6961e48c15
commit d32340471b
4 changed files with 157 additions and 36 deletions

View File

@ -27,11 +27,11 @@
"_active": true, "_active": true,
"_components": [], "_components": [],
"_prefab": { "_prefab": {
"__id__": 104 "__id__": 107
}, },
"autoReleaseAssets": false, "autoReleaseAssets": false,
"_globals": { "_globals": {
"__id__": 109 "__id__": 112
}, },
"_id": "cffa5b19-2043-4cef-8221-1a10ab7a2c1f" "_id": "cffa5b19-2043-4cef-8221-1a10ab7a2c1f"
}, },
@ -245,21 +245,24 @@
}, },
{ {
"__id__": 62 "__id__": 62
},
{
"__id__": 100
} }
], ],
"_active": true, "_active": true,
"_components": [ "_components": [
{
"__id__": 100
},
{
"__id__": 101
},
{
"__id__": 102
},
{ {
"__id__": 103 "__id__": 103
},
{
"__id__": 104
},
{
"__id__": 105
},
{
"__id__": 106
} }
], ],
"_prefab": null, "_prefab": null,
@ -2823,6 +2826,111 @@
}, },
"_id": "bau/7eItRFrKKoAZZb/uYL" "_id": "bau/7eItRFrKKoAZZb/uYL"
}, },
{
"__type__": "cc.Node",
"_name": "BlackScreen",
"_objFlags": 0,
"_parent": {
"__id__": 12
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 101
},
{
"__id__": 102
}
],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": "f1qlIT/nRNuIKxwJCYVTPM"
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 100
},
"_enabled": true,
"__prefab": null,
"_contentSize": {
"__type__": "cc.Size",
"width": 1000,
"height": 1000
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": "fdOZJb68xNc5vijRoOMRnI"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 100
},
"_enabled": true,
"__prefab": null,
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_spriteFrame": {
"__uuid__": "0a917d5c-2810-46e1-8332-63f00395d63a@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": "a8XQuQ3opI3Ks9qtPgAfJk"
},
{ {
"__type__": "cc.UITransform", "__type__": "cc.UITransform",
"_name": "", "_name": "",
@ -2924,12 +3032,15 @@
"__id__": 99 "__id__": 99
}, },
"gameCanvas": { "gameCanvas": {
"__id__": 101 "__id__": 104
}, },
"background": { "background": {
"__id__": 23 "__id__": 23
}, },
"gameAudioAdapter": null, "gameAudioAdapter": null,
"blackScreen": {
"__id__": 100
},
"_id": "3a9z1bqlFCGL4/WyDwU4L5" "_id": "3a9z1bqlFCGL4/WyDwU4L5"
}, },
{ {
@ -2937,10 +3048,10 @@
"fileId": "cffa5b19-2043-4cef-8221-1a10ab7a2c1f", "fileId": "cffa5b19-2043-4cef-8221-1a10ab7a2c1f",
"targetOverrides": [ "targetOverrides": [
{ {
"__id__": 105 "__id__": 108
}, },
{ {
"__id__": 107 "__id__": 110
} }
], ],
"nestedPrefabInstanceRoots": [ "nestedPrefabInstanceRoots": [
@ -2958,7 +3069,7 @@
{ {
"__type__": "cc.TargetOverrideInfo", "__type__": "cc.TargetOverrideInfo",
"source": { "source": {
"__id__": 103 "__id__": 106
}, },
"sourceInfo": null, "sourceInfo": null,
"propertyPath": [ "propertyPath": [
@ -2968,7 +3079,7 @@
"__id__": 34 "__id__": 34
}, },
"targetInfo": { "targetInfo": {
"__id__": 106 "__id__": 109
} }
}, },
{ {
@ -2980,7 +3091,7 @@
{ {
"__type__": "cc.TargetOverrideInfo", "__type__": "cc.TargetOverrideInfo",
"source": { "source": {
"__id__": 103 "__id__": 106
}, },
"sourceInfo": null, "sourceInfo": null,
"propertyPath": [ "propertyPath": [
@ -2990,7 +3101,7 @@
"__id__": 13 "__id__": 13
}, },
"targetInfo": { "targetInfo": {
"__id__": 108 "__id__": 111
} }
}, },
{ {
@ -3002,19 +3113,19 @@
{ {
"__type__": "cc.SceneGlobals", "__type__": "cc.SceneGlobals",
"ambient": { "ambient": {
"__id__": 110
},
"shadows": {
"__id__": 111
},
"_skybox": {
"__id__": 112
},
"fog": {
"__id__": 113 "__id__": 113
}, },
"octree": { "shadows": {
"__id__": 114 "__id__": 114
},
"_skybox": {
"__id__": 115
},
"fog": {
"__id__": 116
},
"octree": {
"__id__": 117
} }
}, },
{ {

View File

@ -60,6 +60,8 @@ export class PlayerCollisionSystem {
} }
private resolveContact(otherCollider: Collider2D): void { private resolveContact(otherCollider: Collider2D): void {
if (!this.player.Health.IsAlive) return;
if (this.groupToResolver.has(otherCollider.group)) { if (this.groupToResolver.has(otherCollider.group)) {
this.groupToResolver.get(otherCollider.group)(otherCollider); this.groupToResolver.get(otherCollider.group)(otherCollider);
} else { } else {

View File

@ -1,4 +1,4 @@
import { Canvas, Component, KeyCode, Vec2, _decorator } from "cc"; import { Canvas, Component, KeyCode, Vec2, _decorator, Node } from "cc";
import { AppRoot } from "../AppRoot/AppRoot"; import { AppRoot } from "../AppRoot/AppRoot";
import { requireAppRootAsync } from "../AppRoot/AppRootUtils"; import { requireAppRootAsync } from "../AppRoot/AppRootUtils";
import { delay } from "../Services/Utils/AsyncUtils"; import { delay } from "../Services/Utils/AsyncUtils";
@ -50,6 +50,7 @@ export class Game extends Component {
@property(Canvas) private gameCanvas: Canvas; @property(Canvas) private gameCanvas: Canvas;
@property(Background) private background: Background; @property(Background) private background: Background;
@property(GameAudioAdapter) private gameAudioAdapter: GameAudioAdapter; @property(GameAudioAdapter) private gameAudioAdapter: GameAudioAdapter;
@property(Node) private blackScreen: Node;
private playerCollisionSystem: PlayerCollisionSystem; private playerCollisionSystem: PlayerCollisionSystem;
private haloProjectileLauncher: HaloProjectileLauncher; private haloProjectileLauncher: HaloProjectileLauncher;
@ -70,11 +71,8 @@ export class Game extends Component {
return this.instance; return this.instance;
} }
public async start(): Promise<void> { public start(): void {
this.gamePauser.pause(); this.gamePauser.pause();
this.node.active = false; // make sure that nothing is rendered until the app root is ready
await requireAppRootAsync();
this.node.active = true;
Game.instance = this; Game.instance = this;
} }
@ -84,6 +82,7 @@ export class Game extends Component {
translationData: TranslationData, translationData: TranslationData,
testValues?: TestValues testValues?: TestValues
): Promise<GameResult> { ): Promise<GameResult> {
await requireAppRootAsync();
this.gameCanvas.cameraComponent = AppRoot.Instance.MainCamera; this.gameCanvas.cameraComponent = AppRoot.Instance.MainCamera;
this.gameResult = new GameResult(); this.gameResult = new GameResult();
@ -174,15 +173,18 @@ export class Game extends Component {
this.haloProjectileLauncher this.haloProjectileLauncher
); );
this.gamePauser.resume(); this.gamePauser.resume();
this.blackScreen.active = false;
AppRoot.Instance.ScreenFader.playClose(); AppRoot.Instance.ScreenFader.playClose();
while (!this.gameResult.hasExitManually && this.player.Health.IsAlive) await delay(100); while (!this.gameResult.hasExitManually && this.player.Health.IsAlive) await delay(100);
if (!this.gameResult.hasExitManually) {
await delay(1000);
}
this.gamePauser.pause(); this.gamePauser.pause();
Game.instance = null; Game.instance = null;
this.gameResult.score = this.timeAlive; this.gameResult.score = this.timeAlive;
if (!this.gameResult.hasExitManually) {
await delay(2000);
}
return this.gameResult; return this.gameResult;
} }

View File

@ -73,6 +73,8 @@ export class Player extends Component {
} }
private move(deltaTime: number): void { private move(deltaTime: number): void {
if (!this.health.IsAlive) return;
const movement: Vec2 = this.input.getAxis(); const movement: Vec2 = this.input.getAxis();
if (!movement.equals(Vec2.ZERO)) { if (!movement.equals(Vec2.ZERO)) {
movement.x *= deltaTime * this.speed; movement.x *= deltaTime * this.speed;
@ -111,6 +113,10 @@ export class Player extends Component {
await delay(100); await delay(100);
this.sprite.color = Color.WHITE; this.sprite.color = Color.WHITE;
if (!this.health.IsAlive) {
this.animation.play("Die");
}
} }
} }