mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2024-12-25 03:08:55 +00:00
Game settings, tool to regenerate
This commit is contained in:
parent
b1f8f66499
commit
1c30cb93ea
12
assets/Data.meta
Normal file
12
assets/Data.meta
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"ver": "1.1.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "c99ac9fe-c6a9-4142-a419-4d10885c744d",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"compressionType": {},
|
||||
"isRemoteBundle": {}
|
||||
}
|
||||
}
|
1
assets/Data/GameSettings.json
Normal file
1
assets/Data/GameSettings.json
Normal file
@ -0,0 +1 @@
|
||||
{"playerSettings":{"defaultHP":50,"requiredXP":[],"collisionDelay":0},"weaponSettings":{"strikeDelay":0.5,"newTest":33}}
|
11
assets/Data/GameSettings.json.meta
Normal file
11
assets/Data/GameSettings.json.meta
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "json",
|
||||
"imported": true,
|
||||
"uuid": "6828fb79-0a56-437e-b718-9f43bf234fbc",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@ -1068,66 +1068,6 @@
|
||||
},
|
||||
"_id": "c5hUW3WnRPzJB48SFIf+Ud"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "EnemySpawner",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 32
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 34
|
||||
}
|
||||
],
|
||||
"_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": "936Vpv3ydL8JZMvakVgAP5"
|
||||
},
|
||||
{
|
||||
"__type__": "8aa2aOTzVFLtKl5CV5vzpWp",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 33
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"enemies": [
|
||||
{
|
||||
"__uuid__": "fc9a455d-1b5f-460e-96eb-7c0ebf07d3d0",
|
||||
"__expectedType__": "cc.Prefab"
|
||||
}
|
||||
],
|
||||
"_id": "0bYOmE6uFKe6bZiYUsXVFn"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "XPSpawner",
|
||||
@ -1139,7 +1079,7 @@
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 36
|
||||
"__id__": 34
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@ -1176,7 +1116,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 35
|
||||
"__id__": 33
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
@ -1186,6 +1126,66 @@
|
||||
},
|
||||
"_id": "cbPY3r6KtPXJ5MuqA3BqfN"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "EnemySpawner",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 32
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"_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": "936Vpv3ydL8JZMvakVgAP5"
|
||||
},
|
||||
{
|
||||
"__type__": "8aa2aOTzVFLtKl5CV5vzpWp",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 35
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"enemies": [
|
||||
{
|
||||
"__uuid__": "fc9a455d-1b5f-460e-96eb-7c0ebf07d3d0",
|
||||
"__expectedType__": "cc.Prefab"
|
||||
}
|
||||
],
|
||||
"_id": "0bYOmE6uFKe6bZiYUsXVFn"
|
||||
},
|
||||
{
|
||||
"__type__": "c5416rtZLFCbpWbvH1cdF52",
|
||||
"_name": "",
|
||||
@ -1196,10 +1196,10 @@
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"enemySpawner": {
|
||||
"__id__": 34
|
||||
"__id__": 36
|
||||
},
|
||||
"xpSpawner": {
|
||||
"__id__": 36
|
||||
"__id__": 34
|
||||
},
|
||||
"_id": "389jvXDeVHmanyKnmtceKg"
|
||||
},
|
||||
@ -2836,6 +2836,10 @@
|
||||
"modalWindowManager": {
|
||||
"__id__": 75
|
||||
},
|
||||
"settingsAsset": {
|
||||
"__uuid__": "6828fb79-0a56-437e-b718-9f43bf234fbc",
|
||||
"__expectedType__": "cc.JsonAsset"
|
||||
},
|
||||
"_id": "3a9z1bqlFCGL4/WyDwU4L5"
|
||||
},
|
||||
{
|
||||
|
12
assets/Scripts/Game/Data.meta
Normal file
12
assets/Scripts/Game/Data.meta
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"ver": "1.1.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "0811e8aa-50a1-4cee-8c6f-1ce5e4085e07",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"compressionType": {},
|
||||
"isRemoteBundle": {}
|
||||
}
|
||||
}
|
14
assets/Scripts/Game/Data/GameSettings.ts
Normal file
14
assets/Scripts/Game/Data/GameSettings.ts
Normal file
@ -0,0 +1,14 @@
|
||||
export class GameSettings {
|
||||
public playerSettings: PlayerSettings = new PlayerSettings();
|
||||
public weaponSettings: WeaponSettings = new WeaponSettings();
|
||||
}
|
||||
|
||||
export class PlayerSettings {
|
||||
public defaultHP = 0;
|
||||
public requiredXP: number[] = [];
|
||||
public collisionDelay = 0;
|
||||
}
|
||||
|
||||
export class WeaponSettings {
|
||||
public strikeDelay = 0;
|
||||
}
|
9
assets/Scripts/Game/Data/GameSettings.ts.meta
Normal file
9
assets/Scripts/Game/Data/GameSettings.ts.meta
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "5f9b9fda-b2fa-4c93-a328-8699238bdf09",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@ -1,13 +1,16 @@
|
||||
import { Camera, CCFloat, CCInteger, Component, director, KeyCode, _decorator } from "cc";
|
||||
import { Camera, CCFloat, CCInteger, Component, director, JsonAsset, KeyCode, _decorator } from "cc";
|
||||
import { ModalWindowManager } from "../Services/ModalWindowSystem/ModalWindowManager";
|
||||
import { PlayerCollisionSystem } from "./Collision/PlayerCollisionSystem";
|
||||
import { WeaponCollisionSystem } from "./Collision/WeaponCollisionSystem";
|
||||
import { GameSettings } from "./Data/GameSettings";
|
||||
import { EnemyManager } from "./Enemy/EnemyManager";
|
||||
import { KeyboardInput } from "./Input/KeyboardInput";
|
||||
import { MultiInput } from "./Input/MultiInput";
|
||||
import { VirtualJoystic } from "./Input/VirtualJoystic";
|
||||
import { Player } from "./Player/Player";
|
||||
import { GameUI } from "./UI/GameUI";
|
||||
import { Upgrader } from "./Upgrades/Upgrader";
|
||||
import { UpgradeType } from "./Upgrades/UpgradeType";
|
||||
import { Weapon } from "./Weapon";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ -23,12 +26,19 @@ export class GameBootstrapper extends Component {
|
||||
@property(GameUI) private gameUI: GameUI;
|
||||
@property(Number) private requiredLevelXps: number[] = [];
|
||||
@property(ModalWindowManager) private modalWindowManager: ModalWindowManager;
|
||||
@property(JsonAsset) private settingsAsset: JsonAsset;
|
||||
@property(GameSettings) private settingsPref: GameSettings = new GameSettings();
|
||||
|
||||
private playerCollisionSystem: PlayerCollisionSystem;
|
||||
private upgrader: Upgrader;
|
||||
|
||||
private isPaused = false;
|
||||
|
||||
public start(): void {
|
||||
const gameSettings: GameSettings = <GameSettings>this.settingsAsset.json;
|
||||
console.log("Collision delay: " + gameSettings.playerSettings.collisionDelay);
|
||||
console.log(JSON.stringify(new GameSettings()));
|
||||
|
||||
this.virtualJoystic.init();
|
||||
this.weapon.init(this.strikeDelay);
|
||||
const wasd = new KeyboardInput(KeyCode.KEY_W, KeyCode.KEY_S, KeyCode.KEY_A, KeyCode.KEY_D);
|
||||
@ -39,11 +49,15 @@ export class GameBootstrapper extends Component {
|
||||
this.playerCollisionSystem = new PlayerCollisionSystem(this.player, this.collisionDelay);
|
||||
new WeaponCollisionSystem(this.weapon);
|
||||
|
||||
this.upgrader = new Upgrader(this.player);
|
||||
|
||||
this.enemyManager.init(this.player.node);
|
||||
|
||||
this.gameUI.init(this.player);
|
||||
|
||||
this.showModal();
|
||||
|
||||
//console.log("DEfault hp: " + gameSettings.playerSettings.defaultHP);
|
||||
}
|
||||
|
||||
public update(deltaTime: number): void {
|
||||
@ -58,7 +72,7 @@ export class GameBootstrapper extends Component {
|
||||
|
||||
private async showModal(): Promise<void> {
|
||||
this.isPaused = true;
|
||||
const result: string = await this.modalWindowManager.showModal<string, string>("LevelUpModalWindow", "test params");
|
||||
const result: UpgradeType = await this.modalWindowManager.showModal<string, UpgradeType>("LevelUpModalWindow", "test params");
|
||||
this.isPaused = false;
|
||||
console.log("Result: " + result);
|
||||
}
|
||||
|
@ -1,12 +1,13 @@
|
||||
import { CCString, instantiate, Node, Prefab, Vec3, _decorator } from "cc";
|
||||
import { instantiate, Node, Prefab, Vec3, _decorator } from "cc";
|
||||
import { ModalWindow } from "../../../Services/ModalWindowSystem/ModalWindow";
|
||||
import { delay } from "../../../Services/Utils/AsyncUtils";
|
||||
import { UpgradeType } from "../../Upgrades/UpgradeType";
|
||||
import { LevelUpSkill } from "./LevelUpSkill";
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass("LevelUpModalWindow")
|
||||
export class LevelUpModalWindow extends ModalWindow<string, string> {
|
||||
export class LevelUpModalWindow extends ModalWindow<string, UpgradeType> {
|
||||
@property(Prefab) private skillPrefab: Prefab;
|
||||
@property(Node) private skillParent: Node;
|
||||
|
||||
@ -24,6 +25,6 @@ export class LevelUpModalWindow extends ModalWindow<string, string> {
|
||||
}
|
||||
|
||||
private chooseSkill(skill: LevelUpSkill): void {
|
||||
this.dismiss("FInishedSuccessfuly");
|
||||
this.dismiss(UpgradeType.WeaponDamage);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,12 @@
|
||||
export enum UpgradeType {
|
||||
MaxHP,
|
||||
WeaponLength,
|
||||
WeaponDamage,
|
||||
HorizontalProjectile,
|
||||
VerticalProjectile,
|
||||
OverallDamage,
|
||||
Regeneration
|
||||
}
|
||||
|
||||
export enum MetaUpgradeType {
|
||||
MaxHp,
|
||||
OverallDamage
|
||||
}
|
||||
|
@ -5,16 +5,13 @@ export class Upgrader {
|
||||
private player: Player;
|
||||
private typeToAction: Map<UpgradeType, () => void> = new Map<UpgradeType, () => void>();
|
||||
private typeToLevel: Map<UpgradeType, number> = new Map<UpgradeType, number>();
|
||||
private typeToMaxLevel: Map<UpgradeType, number> = new Map<UpgradeType, number>();
|
||||
|
||||
public constructor(player: Player) {
|
||||
this.player = player;
|
||||
|
||||
this.typeToAction.set(UpgradeType.MaxHP, this.upgradeMaxHp);
|
||||
this.typeToAction.set(UpgradeType.WeaponLength, this.upgradeWeaponLength);
|
||||
this.typeToAction.set(UpgradeType.WeaponDamage, this.upgradeWeaponDamage);
|
||||
|
||||
this.typeToLevel.set(UpgradeType.MaxHP, 0);
|
||||
this.typeToLevel.set(UpgradeType.WeaponLength, 0);
|
||||
this.setTypeMaps(UpgradeType.WeaponLength, this.upgradeWeaponLength, 5);
|
||||
this.setTypeMaps(UpgradeType.WeaponDamage, this.upgradeWeaponDamage, 5);
|
||||
}
|
||||
|
||||
public upgradeSkill(type: UpgradeType): void {
|
||||
@ -22,11 +19,10 @@ export class Upgrader {
|
||||
this.typeToAction.get(type)();
|
||||
}
|
||||
|
||||
private upgradeMaxHp(): void {
|
||||
const healthIncrease = 5;
|
||||
const currentMax: number = this.player.Health.MaxHealthPoints;
|
||||
this.player.Health.setMaxHealth(currentMax + healthIncrease);
|
||||
this.player.Health.heal(healthIncrease);
|
||||
private setTypeMaps(upgradeType: UpgradeType, action: () => void, maxLevel: number): void {
|
||||
this.typeToAction.set(upgradeType, action);
|
||||
this.typeToLevel.set(upgradeType, 0);
|
||||
this.typeToMaxLevel.set(upgradeType, maxLevel);
|
||||
}
|
||||
|
||||
private upgradeWeaponLength(): void {
|
||||
|
22
package-lock.json
generated
22
package-lock.json
generated
@ -8,8 +8,10 @@
|
||||
"name": "VampSu",
|
||||
"version": "3.6.1",
|
||||
"dependencies": {
|
||||
"@types/lodash": "^4.14.190",
|
||||
"eslint": "^8.25.0",
|
||||
"jest": "^29.2.2",
|
||||
"lodash": "^4.17.21",
|
||||
"ts-jest": "^29.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -1154,6 +1156,11 @@
|
||||
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/lodash": {
|
||||
"version": "4.14.190",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz",
|
||||
"integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz",
|
||||
@ -3801,6 +3808,11 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash.memoize": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||
@ -5994,6 +6006,11 @@
|
||||
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/lodash": {
|
||||
"version": "4.14.190",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz",
|
||||
"integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz",
|
||||
@ -7862,6 +7879,11 @@
|
||||
"p-locate": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"lodash.memoize": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||
|
@ -10,13 +10,15 @@
|
||||
"test": "jest"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/lodash": "^4.14.190",
|
||||
"eslint": "^8.25.0",
|
||||
"jest": "^29.2.2",
|
||||
"lodash": "^4.17.21",
|
||||
"ts-jest": "^29.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.11.6",
|
||||
"@types/jest": "^29.2.0",
|
||||
"@types/node": "^18.11.6",
|
||||
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
|
15
utils/regenerateGameSettings.ts
Normal file
15
utils/regenerateGameSettings.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import { readFileSync, writeFileSync } from "fs";
|
||||
import { merge } from "lodash";
|
||||
import { GameSettings } from "../assets/Scripts/Game/Data/GameSettings";
|
||||
|
||||
regenerateGameSettings();
|
||||
function regenerateGameSettings(): void {
|
||||
const settingsPath: string = process.argv[2];
|
||||
|
||||
const blankSettings: GameSettings = new GameSettings();
|
||||
const savedSettingsJson: string = readFileSync(settingsPath, "utf8");
|
||||
const savedSettings: GameSettings = <GameSettings>JSON.parse(savedSettingsJson);
|
||||
|
||||
const result: GameSettings = merge(blankSettings, savedSettings);
|
||||
writeFileSync(settingsPath, JSON.stringify(result));
|
||||
}
|
Loading…
Reference in New Issue
Block a user