mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2025-10-09 00:26:04 +00:00
Meta upgrades
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
export class GameSettings {
|
||||
public player: PlayerSettings = new PlayerSettings();
|
||||
public upgrades: UpgradeSettings = new UpgradeSettings();
|
||||
public metaUpgrades: MetaUpgradeSettings = new MetaUpgradeSettings();
|
||||
public metaUpgrades: MetaUpgradesSettings = new MetaUpgradesSettings();
|
||||
public enemyManager: EnemyManagerSettings = new EnemyManagerSettings();
|
||||
}
|
||||
|
||||
@@ -50,13 +50,18 @@ export class UpgradeSettings {
|
||||
public maxRegenerationUpgrades = 0;
|
||||
}
|
||||
|
||||
export class MetaUpgradesSettings {
|
||||
public health = new MetaUpgradeSettings();
|
||||
public overallDamage = new MetaUpgradeSettings();
|
||||
public projectilePiercing = new MetaUpgradeSettings();
|
||||
public movementSpeed = new MetaUpgradeSettings();
|
||||
public xpGatherer = new MetaUpgradeSettings();
|
||||
public goldGatherer = new MetaUpgradeSettings();
|
||||
}
|
||||
|
||||
export class MetaUpgradeSettings {
|
||||
public healthPointsPerLevel = 0;
|
||||
public bonusDamagePerLevel = 0;
|
||||
public projectilePiercingPerLevel = 0;
|
||||
public movementSpeedPerLevel = 0;
|
||||
public xpBonusPerLevel = 0;
|
||||
public goldBonusPerLevel = 0;
|
||||
public costs: number[] = [];
|
||||
public bonuses: number[] = [];
|
||||
}
|
||||
|
||||
export class EnemyManagerSettings {
|
||||
|
@@ -11,8 +11,8 @@ export class GameData {
|
||||
}
|
||||
|
||||
export class MetaUpgradesData {
|
||||
public maxHpLevel = 0;
|
||||
public bonusDamageLevel = 2;
|
||||
public healthLevel = 0;
|
||||
public overallDamageLevel = 2;
|
||||
public projectilePiercingLevel = 0;
|
||||
public movementSpeedLevel = 0;
|
||||
public xpGathererLevel = 0;
|
||||
|
@@ -142,7 +142,7 @@ export class Game extends Component {
|
||||
private createPlayerData(settings: PlayerSettings, metaUpgrades: MetaUpgrades): PlayerData {
|
||||
const playerData: PlayerData = Object.assign(new PlayerData(), settings);
|
||||
|
||||
playerData.maxHp = metaUpgrades.getUpgradeValue(MetaUpgradeType.MaxHp) + settings.defaultHP;
|
||||
playerData.maxHp = metaUpgrades.getUpgradeValue(MetaUpgradeType.Health) + settings.defaultHP;
|
||||
playerData.requiredXP = settings.requiredXP;
|
||||
playerData.speed = metaUpgrades.getUpgradeValue(MetaUpgradeType.MovementSpeed) + settings.speed;
|
||||
playerData.regenerationDelay = settings.regenerationDelay;
|
||||
|
@@ -24,8 +24,8 @@ export class TestGameRunner extends Component {
|
||||
while (Game.Instance == null || AppRoot.Instance == null) await delay(100);
|
||||
|
||||
const testUserData = new UserData();
|
||||
testUserData.game.metaUpgrades.maxHpLevel = this.maxHpLevel;
|
||||
testUserData.game.metaUpgrades.bonusDamageLevel = this.bonusDamageLevel;
|
||||
testUserData.game.metaUpgrades.healthLevel = this.maxHpLevel;
|
||||
testUserData.game.metaUpgrades.overallDamageLevel = this.bonusDamageLevel;
|
||||
testUserData.game.metaUpgrades.projectilePiercingLevel = this.projectilePiercingLevel;
|
||||
testUserData.game.metaUpgrades.movementSpeedLevel = this.movementSpeedLevel;
|
||||
testUserData.game.metaUpgrades.xpGathererLevel = this.xpGathererLevel;
|
||||
|
@@ -1,16 +1,26 @@
|
||||
import { MetaUpgradeSettings } from "../../Data/GameSettings";
|
||||
import { MetaUpgradesSettings } from "../../Data/GameSettings";
|
||||
import { MetaUpgradesData } from "../../Data/UserData";
|
||||
import { MetaUpgradeType } from "../../Upgrades/UpgradeType";
|
||||
|
||||
export class MetaUpgrades {
|
||||
private upgradeTypeToValue = new Map<MetaUpgradeType, number>();
|
||||
public constructor(data: MetaUpgradesData, settings: MetaUpgradeSettings) {
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.MaxHp, data.maxHpLevel * settings.healthPointsPerLevel);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.OverallDamage, data.bonusDamageLevel * settings.bonusDamagePerLevel);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.ProjectilePiercing, data.projectilePiercingLevel * settings.projectilePiercingPerLevel);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.MovementSpeed, data.movementSpeedLevel * settings.movementSpeedPerLevel);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.XPGatherer, data.xpGathererLevel * settings.xpBonusPerLevel);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.GoldGatherer, data.goldGathererLevel * settings.goldBonusPerLevel);
|
||||
public constructor(data: MetaUpgradesData, settings: MetaUpgradesSettings) {
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.Health, this.getBonusValue(data.healthLevel, settings.health.bonuses));
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.OverallDamage, this.getBonusValue(data.overallDamageLevel, settings.overallDamage.bonuses));
|
||||
this.upgradeTypeToValue.set(
|
||||
MetaUpgradeType.ProjectilePiercing,
|
||||
this.getBonusValue(data.projectilePiercingLevel, settings.projectilePiercing.bonuses)
|
||||
);
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.MovementSpeed, this.getBonusValue(data.movementSpeedLevel, settings.movementSpeed.bonuses));
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.XPGatherer, this.getBonusValue(data.xpGathererLevel, settings.xpGatherer.bonuses));
|
||||
this.upgradeTypeToValue.set(MetaUpgradeType.GoldGatherer, this.getBonusValue(data.goldGathererLevel, settings.goldGatherer.bonuses));
|
||||
}
|
||||
|
||||
private getBonusValue(level: number, bonuses: number[]): number {
|
||||
if (level <= 0) return 0;
|
||||
if (bonuses.length < level) throw new Error(`Meta upgrade does not have settings for level ${level}`);
|
||||
|
||||
return bonuses[level - 1];
|
||||
}
|
||||
|
||||
public getUpgradeValue(type: MetaUpgradeType): number {
|
||||
|
@@ -8,10 +8,10 @@ export enum UpgradeType {
|
||||
}
|
||||
|
||||
export enum MetaUpgradeType {
|
||||
MaxHp,
|
||||
OverallDamage,
|
||||
ProjectilePiercing,
|
||||
MovementSpeed,
|
||||
XPGatherer,
|
||||
GoldGatherer
|
||||
Health = "META_HEALTH",
|
||||
OverallDamage = "META_OVERALL_DAMAGE",
|
||||
ProjectilePiercing = "META_PROJECTILE_PIERCING",
|
||||
MovementSpeed = "META_MOVEMENT_SPEED",
|
||||
XPGatherer = "META_XP_GATHERER",
|
||||
GoldGatherer = "META_GOLD_GATHERER"
|
||||
}
|
||||
|
Reference in New Issue
Block a user