fix: define stats as an enum for easier iteration
authorxangelo <git@xangelo.ca>
Wed, 12 Jul 2023 18:40:36 +0000 (14:40 -0400)
committerxangelo <git@xangelo.ca>
Wed, 12 Jul 2023 18:40:36 +0000 (14:40 -0400)
Stats make more sense as a string-based enum for most of our usecases,
even accounting for odd typescript enum things.

src/shared/player.ts
src/shared/stats.ts

index e571ae168844b7ee0e1dd4287d56845f3a98dddf..7762a41549fb1077840e40a95c725aaa4b6579e1 100644 (file)
@@ -1,5 +1,5 @@
 import { Profession } from './profession'; 
-
+import { Stat } from './stats';
 import { SkillDefinition, Skill } from './skills';
 
 export type Player = {
@@ -18,6 +18,7 @@ export type Player = {
   gold: number;
   hp: number;
   city_id: number;
+  stat_points: number;
 }
 
 export type PlayerWithSkills = Player & {
@@ -37,3 +38,35 @@ export function expToLevel(level: number): number {
   }
 }
 
+
+export type StatDisplay = {
+  id: Stat,
+  display: string;
+  abbrv: string;
+}
+
+export const StatDef: Map<Stat, StatDisplay> = new Map<Stat, StatDisplay>();
+
+StatDef.set(Stat.strength, {
+  id: Stat.strength,
+  display: 'Strength',
+  abbrv: 'STR'
+});
+
+StatDef.set(Stat.constitution, {
+  id: Stat.constitution,
+  display: 'Constitution',
+  abbrv: 'CON'
+});
+
+StatDef.set(Stat.dexterity, {
+  id: Stat.dexterity,
+  display: 'Dexterity',
+  abbrv: 'DEX'
+});
+
+StatDef.set(Stat.intelligence, {
+  id: Stat.intelligence,
+  display: 'Intelligence',
+  abbrv: 'INT'
+});
index 48e4bf61ea1b1e92009b224f8564ce1e8c23b8e5..a553bd4e0c86407491d7cd79967b0439f3a598a8 100644 (file)
@@ -1 +1,6 @@
-export type Stats = 'strength' | 'constitution' | 'intelligence' | 'dexterity';
+export enum Stat {
+  strength = 'strength',
+  constitution = 'constitution',
+  dexterity = 'dexterity',
+  intelligence = 'intelligence'
+};