Settings and translation into app root

This commit is contained in:
Martin 2022-12-16 12:01:25 +01:00
parent 40ebf267e0
commit 6521ce1f92
5 changed files with 27 additions and 10 deletions

View File

@ -66,6 +66,14 @@
"__prefab": {
"__id__": 3
},
"settingsAsset": {
"__uuid__": "4a156ee8-535e-4443-8bf5-8b979a08d232",
"__expectedType__": "cc.JsonAsset"
},
"engTranslationAsset": {
"__uuid__": "7d43843c-0765-427c-9161-2fd9030369c8",
"__expectedType__": "cc.JsonAsset"
},
"_id": ""
},
{

View File

@ -1,4 +1,6 @@
import { _decorator, Component, Node, director, AudioSource } from "cc";
import { _decorator, Component, Node, director, AudioSource, JsonAsset } from "cc";
import { GameSettings } from "../Game/Data/GameSettings";
import { TranslationData } from "../Game/Data/TranslationData";
import { SaveSystem } from "./SaveSystem";
const { ccclass, property } = _decorator;
@ -6,6 +8,8 @@ const { ccclass, property } = _decorator;
export class AppRoot extends Component {
@property(AudioSource) private soundSource: AudioSource;
@property(AudioSource) private musicSource: AudioSource;
@property(JsonAsset) private settingsAsset: JsonAsset;
@property(JsonAsset) private engTranslationAsset: JsonAsset;
private static instance: AppRoot;
private saveSystem: SaveSystem;
@ -18,6 +22,14 @@ export class AppRoot extends Component {
return this.saveSystem;
}
public get Settings(): GameSettings {
return <GameSettings>this.settingsAsset.json;
}
public get TranslationData(): TranslationData {
return <TranslationData>this.engTranslationAsset.json;
}
public start(): void {
if (AppRoot.Instance == null) {
AppRoot.instance = this;

View File

@ -37,8 +37,6 @@ export class Game extends Component {
@property(GameUI) private gameUI: GameUI;
@property(Background) private background: Background;
@property(ModalWindowManager) private modalWindowManager: ModalWindowManager;
@property(JsonAsset) private settingsAsset: JsonAsset;
@property(JsonAsset) private translationAsset: JsonAsset;
private playerCollisionSystem: PlayerCollisionSystem;
private haloProjectileLauncher: HaloProjectileLauncher;
@ -59,9 +57,7 @@ export class Game extends Component {
this.gamePauser.pause();
}
public async playGame(userData: UserData): Promise<GameResult> {
const translationData = <TranslationData>this.translationAsset.json;
const settings = <GameSettings>this.settingsAsset.json;
public async playGame(userData: UserData, settings: GameSettings, translationData: TranslationData): Promise<GameResult> {
const metaUpgrades = new MetaUpgrades(userData.game.metaUpgrades, settings.metaUpgrades);
this.virtualJoystic.init();

View File

@ -1,4 +1,5 @@
import { CCInteger, Component, _decorator } from "cc";
import { approx, CCInteger, Component, _decorator } from "cc";
import { AppRoot } from "../AppRoot/AppRoot";
import { GameRunner } from "../Menu/GameRunner";
import { delay } from "../Services/Utils/AsyncUtils";
import { UserData } from "./Data/UserData";
@ -20,7 +21,7 @@ export class TestGameRunner extends Component {
}
public async playTestGameAsync(): Promise<void> {
while (Game.Instance == null) await delay(100);
while (Game.Instance == null || AppRoot.Instance == null) await delay(100);
const testUserData = new UserData();
testUserData.game.metaUpgrades.maxHpLevel = this.maxHpLevel;
@ -29,6 +30,6 @@ export class TestGameRunner extends Component {
testUserData.game.metaUpgrades.movementSpeedLevel = this.movementSpeedLevel;
testUserData.game.metaUpgrades.xpGathererLevel = this.xpGathererLevel;
testUserData.game.metaUpgrades.goldGathererLevel = this.goldGathererLevel;
Game.Instance.playGame(testUserData);
Game.Instance.playGame(testUserData, AppRoot.Instance.Settings, AppRoot.Instance.TranslationData);
}
}

View File

@ -25,7 +25,7 @@ export class GameRunner {
director.loadScene("Game");
const userData: UserData = AppRoot.Instance.SaveSystem.load();
while (Game.Instance == null) await delay(10);
const result: GameResult = await Game.Instance.playGame(userData);
const result: GameResult = await Game.Instance.playGame(userData, AppRoot.Instance.Settings, AppRoot.Instance.TranslationData);
userData.game.goldCoins += result.goldCoins;
if (userData.game.highscore < result.score) {