refactor: make `ShopItem` a subset of `InventoryItem`
authorxangelo <git@xangelo.ca>
Mon, 10 Jul 2023 18:00:28 +0000 (14:00 -0400)
committerxangelo <git@xangelo.ca>
Mon, 10 Jul 2023 18:00:28 +0000 (14:00 -0400)
The `ShopItem` type takes the `InventoryItem` type and removes the
unnecessary params and adds its own. That way we maintain the parity
between the two but enforce a much simpler mental model of the
inheritance hierarchy.

src/shared/inventory.ts

index ed28fd1421818680298d7c1d201d07ed151cb081..925446db699fb21ae4ab8d765eebc0b61fc45f2c 100644 (file)
@@ -9,8 +9,9 @@ export type WeaponEquipmentSlot = 'LEFT_HAND' | 'RIGHT_HAND' | 'TWO_HANDED' | 'A
 export type EquipmentSlot = ArmourEquipmentSlot | WeaponEquipmentSlot;
 
 
-export type ShopItem = {
-  id: number;
+export type InventoryItem = {
+  item_id: string;
+  player_id: string;
   name: string;
   type: InventoryType;
   profession:  Profession;
@@ -34,10 +35,11 @@ export type ShopItem = {
   currentAp: number;
   maxAp: number;
   affectedSkills: SkillID[];
-  location_id: number;
 }
 
-export type InventoryItem = Omit<ShopItem, 'id' | 'location_id'> & {
-  item_id: string;
-  player_id: string;
+// shop items have a numeric id since they're tracked in a separate spreadsheet 
+// and they are also tied to a specific location
+export type ShopItem = Omit<InventoryItem, 'id' | 'player_id'> & {
+  id: number;
+  location_id: number;
 };