mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2025-10-09 00:26:04 +00:00
Meta updates
This commit is contained in:
@@ -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();
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user