Meta updates

This commit is contained in:
Martin
2022-12-13 15:56:13 +01:00
parent 8057a24345
commit ad1be40f2b
6 changed files with 44 additions and 240 deletions

View File

@@ -8,6 +8,7 @@ export class GameSettings {
export class PlayerSettings {
public defaultHP = 0;
public requiredXP: number[] = [];
public speed = 0;
public regenerationDelay = 0;
public collisionDelay = 0;
public weapon: WeaponSettings = new WeaponSettings();

View File

@@ -5,7 +5,7 @@ import { Background } from "./Background/Background";
import { PlayerCollisionSystem } from "./Collision/PlayerCollisionSystem";
import { PlayerProjectileCollisionSystem } from "./Collision/PlayerProjectileCollisionSystem";
import { WeaponCollisionSystem } from "./Collision/WeaponCollisionSystem";
import { GameSettings } from "./Data/GameSettings";
import { GameSettings, PlayerSettings } from "./Data/GameSettings";
import { UserData } from "./Data/UserData";
import { KeyboardInput } from "./Input/KeyboardInput";
import { MultiInput } from "./Input/MultiInput";
@@ -66,13 +66,7 @@ export class Game extends Component {
const arrowKeys = new KeyboardInput(KeyCode.ARROW_UP, KeyCode.ARROW_DOWN, KeyCode.ARROW_LEFT, KeyCode.ARROW_RIGHT);
const multiInput: MultiInput = new MultiInput([this.virtualJoystic, wasd, arrowKeys]);
const playerData: PlayerData = Object.assign(new PlayerData(), settings.player);
playerData.bonusHp = metaUpgrades.getUpgradeValue(MetaUpgradeType.MaxHp);
playerData.bonusDamage = metaUpgrades.getUpgradeValue(MetaUpgradeType.OverallDamage);
playerData.bonusSpeed = metaUpgrades.getUpgradeValue(MetaUpgradeType.MovementSpeed);
playerData.bonusXP = metaUpgrades.getUpgradeValue(MetaUpgradeType.XPGatherer);
playerData.bonusGold = metaUpgrades.getUpgradeValue(MetaUpgradeType.GoldGatherer);
this.player.init(multiInput, playerData);
this.player.init(multiInput, this.createPlayerData(settings.player, metaUpgrades));
this.playerCollisionSystem = new PlayerCollisionSystem(this.player, settings.player.collisionDelay);
new WeaponCollisionSystem(this.player.Weapon);
@@ -141,4 +135,20 @@ export class Game extends Component {
this.camera.node.worldPosition = this.player.node.worldPosition;
}
private createPlayerData(settings: PlayerSettings, metaUpgrades: MetaUpgrades): PlayerData {
const playerData: PlayerData = Object.assign(new PlayerData(), settings);
playerData.maxHp = metaUpgrades.getUpgradeValue(MetaUpgradeType.MaxHp) + settings.defaultHP;
playerData.requiredXP = settings.requiredXP;
playerData.speed = metaUpgrades.getUpgradeValue(MetaUpgradeType.MovementSpeed) + settings.speed;
playerData.regenerationDelay = settings.regenerationDelay;
playerData.xpMultiplier = metaUpgrades.getUpgradeValue(MetaUpgradeType.XPGatherer) + 1;
playerData.goldMultiplier = metaUpgrades.getUpgradeValue(MetaUpgradeType.GoldGatherer) + 1;
playerData.damage = metaUpgrades.getUpgradeValue(MetaUpgradeType.OverallDamage) + settings.weapon.damage;
playerData.strikeDelay = settings.weapon.strikeDelay;
return playerData;
}
}

View File

@@ -1,5 +1,4 @@
import { BoxCollider2D, Collider2D, Component, Vec2, Vec3, _decorator } from "cc";
import { PlayerSettings } from "../../Data/GameSettings";
import { IInput } from "../../Input/IInput";
import { UnitHealth } from "../UnitHealth";
import { UnitLevel } from "../UnitLevel";
@@ -11,7 +10,6 @@ const { ccclass, property } = _decorator;
@ccclass("Player")
export class Player extends Component {
@property private speed = 0;
@property(BoxCollider2D) private collider: BoxCollider2D;
@property(PlayerUI) private playerUI: PlayerUI;
@property(Weapon) private weapon: Weapon;
@@ -20,18 +18,18 @@ export class Player extends Component {
private health: UnitHealth;
private level: UnitLevel;
private regeneration: PlayerRegeneration;
private speed: number;
public init(input: IInput, settings: PlayerData): void {
public init(input: IInput, data: PlayerData): void {
this.input = input;
this.health = new UnitHealth(settings.defaultHP);
this.level = new UnitLevel(settings.requiredXP);
this.regeneration = new PlayerRegeneration(this.health, settings.regenerationDelay);
this.health = new UnitHealth(data.maxHp);
this.level = new UnitLevel(data.requiredXP, data.xpMultiplier);
this.regeneration = new PlayerRegeneration(this.health, data.regenerationDelay);
this.speed = data.speed;
this.weapon.init(settings.weapon);
this.weapon.init(data.strikeDelay, data.damage);
this.playerUI.init(this.health);
console.log("Bonus damage " + settings.bonusDamage);
}
public get Health(): UnitHealth {
@@ -70,10 +68,15 @@ export class Player extends Component {
}
}
export class PlayerData extends PlayerSettings {
public bonusDamage = 0;
public bonusHp = 0;
public bonusSpeed = 0;
public bonusXP = 0;
public bonusGold = 0;
export class PlayerData {
public requiredXP: number[] = [];
public speed = 0;
public maxHp = 0;
public regenerationDelay = 0;
public xpMultiplier = 0;
public goldMultiplier = 0;
// Weapon
public strikeDelay = 0;
public damage = 0;
}

View File

@@ -14,9 +14,9 @@ export class Weapon extends Component {
private strikeState: AnimationState;
private damage: number;
public init(settings: WeaponSettings): void {
this.strikeTimer = new GameTimer(settings.strikeDelay);
this.damage = settings.damage;
public init(strikeDelay: number, damage: number): void {
this.strikeTimer = new GameTimer(strikeDelay);
this.damage = damage;
this.node.active = false;
this.weaponAnimation.on(Animation.EventType.FINISHED, this.endStrike, this);

View File

@@ -3,17 +3,15 @@ import { Signal } from "../../Services/EventSystem/Signal";
export class UnitLevel {
private xp = 0;
private requiredXPs: number[];
private currentLevel = 0;
private levelUpEvent: Signal<number> = new Signal<number>();
private xpAddedEvent: Signal<number> = new Signal<number>();
public constructor(requiredXPs: number[]) {
this.requiredXPs = requiredXPs;
}
public constructor(private requiredXPs: number[], private xpMultiplier: number) {}
public addXp(points: number): void {
this.xp += points;
this.xp += points * this.xpMultiplier;
this.xpAddedEvent.trigger(this.xp);
this.tryLevelUp();
}