diff --git a/packages/core-test/tests/commands/unit/equip.test.ts b/packages/core-test/tests/commands/unit/equip.test.ts index 1324b27..009faea 100644 --- a/packages/core-test/tests/commands/unit/equip.test.ts +++ b/packages/core-test/tests/commands/unit/equip.test.ts @@ -1,4 +1,4 @@ -import { EquipmentSlot, ItemType, StashLocation, UnitCommand } from "@rpg-village/core"; +import { EquipmentSlot, ItemType, UnitCommand } from "@rpg-village/core"; import { test } from "../../utils"; @@ -17,15 +17,12 @@ test("should be able to equip item", { args: { unitId: "test-hero-id", itemId: "test-item-id", - stash: StashLocation.Unit, }, }, ], expectedState: { units: { - "test-hero-id": { - equipment: { [EquipmentSlot.Torso]: { id: "test-item-id", itemType: ItemType.Armor } }, - }, + "test-hero-id": { equipment: { [EquipmentSlot.Torso]: { id: "test-item-id", itemType: ItemType.Armor } } }, }, }, }); @@ -39,16 +36,7 @@ test("should remove item from the stash", { }, }, }, - commands: [ - { - command: UnitCommand.EquipItem, - args: { - unitId: "test-hero-id", - itemId: "test-item-id", - stash: StashLocation.Unit, - }, - }, - ], + commands: [{ command: UnitCommand.EquipItem, args: { unitId: "test-hero-id", itemId: "test-item-id" } }], expectedState: { units: { "test-hero-id": { stash: { items: [] } } } }, }); @@ -64,18 +52,12 @@ test("should keep original on no available item id", { commands: [ { command: UnitCommand.EquipItem, - args: { - unitId: "test-hero-id", - itemId: "missing-item-id", - stash: StashLocation.Unit, - }, + args: { unitId: "test-hero-id", itemId: "missing-item-id" }, }, ], expectedState: { units: { - "test-hero-id": { - equipment: { [EquipmentSlot.Torso]: { id: "stay" } }, - }, + "test-hero-id": { equipment: { [EquipmentSlot.Torso]: { id: "stay" } } }, }, }, }); @@ -89,16 +71,7 @@ test("should unequip the current equipped item on same place target", { }, }, }, - commands: [ - { - command: UnitCommand.EquipItem, - args: { - unitId: "test-hero-id", - itemId: "new-item-id", - stash: StashLocation.Unit, - }, - }, - ], + commands: [{ command: UnitCommand.EquipItem, args: { unitId: "test-hero-id", itemId: "new-item-id" } }], expectedState: { units: { "test-hero-id": { diff --git a/packages/core-test/tests/commands/unit/unequip.test.ts b/packages/core-test/tests/commands/unit/unequip.test.ts index 519b14a..5802b3b 100644 --- a/packages/core-test/tests/commands/unit/unequip.test.ts +++ b/packages/core-test/tests/commands/unit/unequip.test.ts @@ -14,7 +14,7 @@ test("should be able to un-equip item", { commands: [ { command: UnitCommand.UnequipItem, - args: { unitId: "test-hero-id", itemId: "test-item-id", stash: StashLocation.Unit }, + args: { unitId: "test-hero-id", itemId: "test-item-id" }, }, ], expectedState: { units: { "test-hero-id": { equipment: {} } } }, @@ -41,25 +41,3 @@ test("should add un-equiped item to the unit stash", { }, }, }); - -test("should add un-equiped item to the village stash", { - initState: { - units: { - "test-hero-id": { - equipment: { [EquipmentSlot.Torso]: { id: "test-item-id" } }, - stash: { items: [] }, - }, - }, - }, - commands: [ - { - command: UnitCommand.UnequipItem, - args: { unitId: "test-hero-id", itemId: "test-item-id", stash: StashLocation.Village }, - }, - ], - expectedState: { - village: { - stash: { items: [{ id: "test-item-id" }] }, - }, - }, -}); diff --git a/packages/core-test/tests/utils/create-state.ts b/packages/core-test/tests/utils/create-state.ts index f363523..031fa3c 100644 --- a/packages/core-test/tests/utils/create-state.ts +++ b/packages/core-test/tests/utils/create-state.ts @@ -127,10 +127,7 @@ function createCallback(createdState: GameState) { y: 0, }); - createMapReference({ - mapSize: MapSize.Endless, - mapLocationIds: [village.locationId], - }); + return village.locationId; } function createActivityReference(activityArgs: Partial) { diff --git a/packages/core/src/features/index.ts b/packages/core/src/features/index.ts index f212128..2ab3c0f 100644 --- a/packages/core/src/features/index.ts +++ b/packages/core/src/features/index.ts @@ -1 +1,2 @@ export * from "./soul"; +export * from "./unit"; diff --git a/packages/core/src/features/tsconfig.json b/packages/core/src/features/tsconfig.json index 75d7603..bbffa14 100644 --- a/packages/core/src/features/tsconfig.json +++ b/packages/core/src/features/tsconfig.json @@ -1,5 +1,5 @@ { "extends": "../../tsconfig-base.json", "include": ["./index.ts"], - "references": [{ "path": "./soul" }] + "references": [{ "path": "./soul" }, { "path": "./unit" }] } diff --git a/packages/core/src/modules/unit/index.ts b/packages/core/src/features/unit/index.ts similarity index 100% rename from packages/core/src/modules/unit/index.ts rename to packages/core/src/features/unit/index.ts diff --git a/packages/core/src/modules/unit/interfaces/index.ts b/packages/core/src/features/unit/interfaces/index.ts similarity index 100% rename from packages/core/src/modules/unit/interfaces/index.ts rename to packages/core/src/features/unit/interfaces/index.ts diff --git a/packages/core/src/modules/unit/interfaces/unit-base.ts b/packages/core/src/features/unit/interfaces/unit-base.ts similarity index 100% rename from packages/core/src/modules/unit/interfaces/unit-base.ts rename to packages/core/src/features/unit/interfaces/unit-base.ts diff --git a/packages/core/src/modules/unit/interfaces/unit-command.ts b/packages/core/src/features/unit/interfaces/unit-command.ts similarity index 68% rename from packages/core/src/modules/unit/interfaces/unit-command.ts rename to packages/core/src/features/unit/interfaces/unit-command.ts index b93e00f..e66d29a 100644 --- a/packages/core/src/modules/unit/interfaces/unit-command.ts +++ b/packages/core/src/features/unit/interfaces/unit-command.ts @@ -1,25 +1,18 @@ import { ItemID } from "@models"; -import { UnitID } from "../interfaces"; +import { UnitID } from "."; export enum UnitCommand { EquipItem = "unit/equip-item", UnequipItem = "unit/unequip-item", } -export enum StashLocation { - Unit, - Village, -} - export interface UnitCommandEquipItemArgs { unitId: UnitID; itemId: ItemID; - stash: StashLocation; } export interface UnitCommandUnequipItemArgs { unitId: UnitID; itemId: ItemID; - stash: StashLocation; } diff --git a/packages/core/src/modules/unit/lib/calculate-unit-stats-with-effects.ts b/packages/core/src/features/unit/lib/calculate-unit-stats-with-effects.ts similarity index 100% rename from packages/core/src/modules/unit/lib/calculate-unit-stats-with-effects.ts rename to packages/core/src/features/unit/lib/calculate-unit-stats-with-effects.ts diff --git a/packages/core/src/modules/unit/lib/get-equipment-slot.ts b/packages/core/src/features/unit/lib/get-equipment-slot.ts similarity index 100% rename from packages/core/src/modules/unit/lib/get-equipment-slot.ts rename to packages/core/src/features/unit/lib/get-equipment-slot.ts diff --git a/packages/core/src/modules/unit/lib/get-unit-effects.ts b/packages/core/src/features/unit/lib/get-unit-effects.ts similarity index 100% rename from packages/core/src/modules/unit/lib/get-unit-effects.ts rename to packages/core/src/features/unit/lib/get-unit-effects.ts diff --git a/packages/core/src/modules/unit/lib/index.ts b/packages/core/src/features/unit/lib/index.ts similarity index 100% rename from packages/core/src/modules/unit/lib/index.ts rename to packages/core/src/features/unit/lib/index.ts diff --git a/packages/core/src/modules/unit/lib/is-alive.ts b/packages/core/src/features/unit/lib/is-alive.ts similarity index 100% rename from packages/core/src/modules/unit/lib/is-alive.ts rename to packages/core/src/features/unit/lib/is-alive.ts diff --git a/packages/core/src/modules/unit/lib/is-hero.ts b/packages/core/src/features/unit/lib/is-hero.ts similarity index 100% rename from packages/core/src/modules/unit/lib/is-hero.ts rename to packages/core/src/features/unit/lib/is-hero.ts diff --git a/packages/core/src/modules/unit/lib/next-level-xp.ts b/packages/core/src/features/unit/lib/next-level-xp.ts similarity index 100% rename from packages/core/src/modules/unit/lib/next-level-xp.ts rename to packages/core/src/features/unit/lib/next-level-xp.ts diff --git a/packages/core/src/features/unit/tsconfig.json b/packages/core/src/features/unit/tsconfig.json new file mode 100644 index 0000000..0bb4e80 --- /dev/null +++ b/packages/core/src/features/unit/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../tsconfig-base.json", + "include": ["**/*.ts"], + "references": [{ "path": "../../core" }, { "path": "../../models" }] +} diff --git a/packages/core/src/modules/unit/types/command.ts b/packages/core/src/features/unit/types/command.ts similarity index 100% rename from packages/core/src/modules/unit/types/command.ts rename to packages/core/src/features/unit/types/command.ts diff --git a/packages/core/src/modules/unit/types/game-state.ts b/packages/core/src/features/unit/types/game-state.ts similarity index 100% rename from packages/core/src/modules/unit/types/game-state.ts rename to packages/core/src/features/unit/types/game-state.ts diff --git a/packages/core/src/modules/unit/types/index.ts b/packages/core/src/features/unit/types/index.ts similarity index 100% rename from packages/core/src/modules/unit/types/index.ts rename to packages/core/src/features/unit/types/index.ts diff --git a/packages/core/src/features/unit/unit-command-handler.ts b/packages/core/src/features/unit/unit-command-handler.ts new file mode 100644 index 0000000..7afe08b --- /dev/null +++ b/packages/core/src/features/unit/unit-command-handler.ts @@ -0,0 +1,29 @@ +import { injectable } from "inversify"; + +import { commandHandler } from "@core"; + +import { UnitCommand, UnitCommandEquipItemArgs, UnitCommandUnequipItemArgs } from "./interfaces"; +import { UnitService } from "./unit-service"; + +@injectable() +export class UnitCommandHandler { + constructor(private unitService: UnitService) {} + + @commandHandler(UnitCommand.EquipItem) + equipItem({ unitId, itemId }: UnitCommandEquipItemArgs) { + const item = this.unitService.takeItemFromStash(unitId, itemId); + + if (!item) return; + + this.unitService.equipItem(unitId, item); + } + + @commandHandler(UnitCommand.UnequipItem) + unequipEquipment({ unitId, itemId }: UnitCommandUnequipItemArgs) { + const item = this.unitService.unequipEquipment(unitId, itemId); + + if (!item) return; + + this.unitService.stashItems(unitId, [item]); + } +} diff --git a/packages/core/src/modules/unit/unit-module.ts b/packages/core/src/features/unit/unit-module.ts similarity index 100% rename from packages/core/src/modules/unit/unit-module.ts rename to packages/core/src/features/unit/unit-module.ts diff --git a/packages/core/src/modules/unit/unit-service.ts b/packages/core/src/features/unit/unit-service.ts similarity index 75% rename from packages/core/src/modules/unit/unit-service.ts rename to packages/core/src/features/unit/unit-service.ts index d6b13ab..34f359e 100644 --- a/packages/core/src/modules/unit/unit-service.ts +++ b/packages/core/src/features/unit/unit-service.ts @@ -1,9 +1,20 @@ import { injectable } from "inversify"; import { add, always, assoc, dissoc, evolve, find, inc, map, propEq, toPairs, when } from "rambda"; -import { Equipment, EquipmentItem, EquipmentSlot, Item, ItemID, addItems, getItem, removeItem } from "@models"; +import { + Equipment, + EquipmentItem, + EquipmentSlot, + Item, + ItemID, + addItems, + getItem, + isEquipmentItem, + removeItem, +} from "@models"; import { UnitID, UnitStash } from "./interfaces"; +import { getEquipmentSlot } from "./lib"; import { nextLevelXp } from "./lib/next-level-xp"; import { UnitStore } from "./unit-store"; @@ -79,4 +90,31 @@ export class UnitService { return item; } + + equipItem(unitId: UnitID, item: Item): void { + if (!isEquipmentItem(item)) return; + + const slot = getEquipmentSlot(item); + + if (!slot) return; + + const oldItem = this.getEquipmentBySlot(unitId, slot); + + if (oldItem) { + this.unequipEquipment(unitId, oldItem.id); + this.stashItems(unitId, [oldItem]); + } + + this.setEquipment(unitId, slot, item); + } + + unequipEquipment(unitId: UnitID, itemId: ItemID): EquipmentItem | undefined { + const equipment = this.getEquipmentByItemId(unitId, itemId); + + if (!equipment) return; + + this.setEquipment(unitId, equipment[0], undefined); + + return equipment[1]; + } } diff --git a/packages/core/src/modules/unit/unit-store.ts b/packages/core/src/features/unit/unit-store.ts similarity index 100% rename from packages/core/src/modules/unit/unit-store.ts rename to packages/core/src/features/unit/unit-store.ts diff --git a/packages/core/src/game/create-game-instance.ts b/packages/core/src/game/create-game-instance.ts index 9b3e63f..1f1e2da 100644 --- a/packages/core/src/game/create-game-instance.ts +++ b/packages/core/src/game/create-game-instance.ts @@ -21,7 +21,6 @@ import { GameInstance } from "./interfaces"; export type CreateGameInstance = (config?: GameConfig) => GameInstance; const coreModules = [ - modules.unitModule, modules.activityModule, modules.gameModule, modules.mapModule, @@ -33,6 +32,7 @@ const coreModules = [ modules.shopModule, modules.optionsModule, features.soulModule, + features.unitModule, ]; export const createGameInstance: CreateGameInstance = (config?: GameConfig) => { diff --git a/packages/core/src/modules/battle/battle-activity.ts b/packages/core/src/modules/battle/battle-activity.ts index 9d65313..edb10e1 100644 --- a/packages/core/src/modules/battle/battle-activity.ts +++ b/packages/core/src/modules/battle/battle-activity.ts @@ -3,9 +3,9 @@ import { complement, prop } from "rambda"; import { ModuleConfig, ModuleConfigToken } from "@core"; +import { isAlive } from "@features/unit"; import { IActivityHandler } from "@modules/activity"; import { PartyActivity, PartyID, PartyService } from "@modules/party"; -import { isAlive } from "@modules/unit"; import { VillageConfig, VillageStashService } from "@modules/village"; import { BattleService } from "./battle-service"; diff --git a/packages/core/src/modules/battle/battle-service.ts b/packages/core/src/modules/battle/battle-service.ts index 182ce07..792ee23 100644 --- a/packages/core/src/modules/battle/battle-service.ts +++ b/packages/core/src/modules/battle/battle-service.ts @@ -1,8 +1,8 @@ import { injectable } from "inversify"; import { forEach } from "rambda"; +import { UnitStore } from "@features/unit"; import { PartyID, PartyService } from "@modules/party"; -import { UnitStore } from "@modules/unit"; import { Battle } from "./battle"; import { BattleStore } from "./battle-store"; diff --git a/packages/core/src/modules/battle/battle.ts b/packages/core/src/modules/battle/battle.ts index afb83fe..c18a547 100644 --- a/packages/core/src/modules/battle/battle.ts +++ b/packages/core/src/modules/battle/battle.ts @@ -2,7 +2,7 @@ import { all, clone, complement, forEach } from "rambda"; import { sample } from "@lib/sample"; -import { Unit, calculateUnitStatsWithEffects, isAlive } from "@modules/unit"; +import { Unit, calculateUnitStatsWithEffects, isAlive } from "@features/unit"; import { BattleParty, BattleState } from "./interfaces"; diff --git a/packages/core/src/modules/battle/interfaces/battle-state.ts b/packages/core/src/modules/battle/interfaces/battle-state.ts index 8099879..6112baa 100644 --- a/packages/core/src/modules/battle/interfaces/battle-state.ts +++ b/packages/core/src/modules/battle/interfaces/battle-state.ts @@ -1,4 +1,4 @@ -import { Unit } from "@modules/unit"; +import { Unit } from "@features/unit"; export interface BattleState { attackerParty: BattleParty; diff --git a/packages/core/src/modules/battle/lib/calculate-loot.ts b/packages/core/src/modules/battle/lib/calculate-loot.ts index 08798a3..57111f0 100644 --- a/packages/core/src/modules/battle/lib/calculate-loot.ts +++ b/packages/core/src/modules/battle/lib/calculate-loot.ts @@ -1,5 +1,5 @@ +import { Unit } from "@features/unit"; import { Loot } from "@models"; -import { Unit } from "@modules/unit"; export function calculateLoot(units: Unit[]): Loot { return { diff --git a/packages/core/src/modules/battle/lib/calculate-unit-strength.ts b/packages/core/src/modules/battle/lib/calculate-unit-strength.ts index 3d2618b..98e1c89 100644 --- a/packages/core/src/modules/battle/lib/calculate-unit-strength.ts +++ b/packages/core/src/modules/battle/lib/calculate-unit-strength.ts @@ -1,4 +1,4 @@ -import { Unit, calculateUnitStatsWithEffects } from "@modules/unit"; +import { Unit, calculateUnitStatsWithEffects } from "@features/unit"; export function calculateUnitStrength(unit: Unit): number { const battleStats = calculateUnitStatsWithEffects(unit); diff --git a/packages/core/src/modules/battle/lib/calculate-xp-gain.ts b/packages/core/src/modules/battle/lib/calculate-xp-gain.ts index f8eb54e..0169186 100644 --- a/packages/core/src/modules/battle/lib/calculate-xp-gain.ts +++ b/packages/core/src/modules/battle/lib/calculate-xp-gain.ts @@ -1,6 +1,6 @@ import { sum } from "rambda"; -import { Unit } from "@modules/unit"; +import { Unit } from "@features/unit"; export function calculateXpGain(units: Unit[]): number { return sum(units.map(unit => unit.level * 25)); diff --git a/packages/core/src/modules/index.ts b/packages/core/src/modules/index.ts index d498339..12e21da 100644 --- a/packages/core/src/modules/index.ts +++ b/packages/core/src/modules/index.ts @@ -3,7 +3,6 @@ import "@core-types"; export * from "./game"; export * from "./activity"; export * from "./battle"; -export * from "./unit"; export * from "./party"; export * from "./village"; export * from "./map"; diff --git a/packages/core/src/modules/map/lib/generate-enemy.ts b/packages/core/src/modules/map/lib/generate-enemy.ts index d0f2ddd..85de638 100644 --- a/packages/core/src/modules/map/lib/generate-enemy.ts +++ b/packages/core/src/modules/map/lib/generate-enemy.ts @@ -1,6 +1,6 @@ +import { Unit, UnitType, calculateEffectsValue } from "@features/unit"; import { EffectStatic, MiscEffectType } from "@models"; import { PartyStash } from "@modules/party"; -import { Unit, UnitType, calculateEffectsValue } from "@modules/unit"; export interface EnemyPartyGeneration { units: Omit[]; diff --git a/packages/core/src/modules/map/map-event-handler.ts b/packages/core/src/modules/map/map-event-handler.ts index 065adef..32f1dce 100644 --- a/packages/core/src/modules/map/map-event-handler.ts +++ b/packages/core/src/modules/map/map-event-handler.ts @@ -3,9 +3,9 @@ import { append, evolve } from "rambda"; import { eventHandler } from "@core"; +import { UnitStore } from "@features/unit"; import { EffectStatic } from "@models"; import { PartyOwner, PartyService } from "@modules/party"; -import { UnitStore } from "@modules/unit"; import { MapEvent, MapEventNewLocationArgs, MapID, MapLocationID, MapLocationType } from "./interfaces"; import { generateEnemyParty } from "./lib"; diff --git a/packages/core/src/modules/party/interfaces/party.ts b/packages/core/src/modules/party/interfaces/party.ts index a4b3963..72401d0 100644 --- a/packages/core/src/modules/party/interfaces/party.ts +++ b/packages/core/src/modules/party/interfaces/party.ts @@ -1,6 +1,6 @@ +import { UnitID } from "@features/unit"; import { ItemStash, ResourceStash } from "@models"; import { ActivityID } from "@modules/activity"; -import { UnitID } from "@modules/unit"; import { PartyOwner } from "./party-owner"; diff --git a/packages/core/src/modules/party/party-service.ts b/packages/core/src/modules/party/party-service.ts index 0576c40..e697e26 100644 --- a/packages/core/src/modules/party/party-service.ts +++ b/packages/core/src/modules/party/party-service.ts @@ -1,9 +1,9 @@ import { injectable } from "inversify"; import { any, without } from "rambda"; +import { Unit, UnitID, UnitService, UnitStore, isAlive } from "@features/unit"; import { Loot, addResource } from "@models"; import { ActivityStore } from "@modules/activity"; -import { Unit, UnitID, UnitService, UnitStore, isAlive } from "@modules/unit"; import { Party, PartyID, PartyStash } from "./interfaces"; import { PartyStore } from "./party-store"; diff --git a/packages/core/src/modules/unit/unit-command-handler.ts b/packages/core/src/modules/unit/unit-command-handler.ts deleted file mode 100644 index 6cb34e0..0000000 --- a/packages/core/src/modules/unit/unit-command-handler.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { injectable } from "inversify"; - -import { commandHandler } from "@core"; - -import { isEquipmentItem } from "@models"; -import { VillageStashService } from "@modules/village"; - -import { StashLocation, UnitCommand, UnitCommandEquipItemArgs, UnitCommandUnequipItemArgs } from "./interfaces"; -import { getEquipmentSlot } from "./lib"; -import { UnitService } from "./unit-service"; - -@injectable() -export class UnitCommandHandler { - constructor(private unitService: UnitService, private villageStash: VillageStashService) {} - - @commandHandler(UnitCommand.EquipItem) - equipItem({ unitId, itemId, stash }: UnitCommandEquipItemArgs) { - const item = - stash === StashLocation.Unit - ? this.unitService.takeItemFromStash(unitId, itemId) - : this.villageStash.takeItem(itemId); - - if (!item) return; - - if (!isEquipmentItem(item)) return; - - const slot = getEquipmentSlot(item); - - if (!slot) return; - - const oldItem = this.unitService.getEquipmentBySlot(unitId, slot); - if (oldItem) { - this.unequipEquipment({ unitId, itemId: oldItem.id, stash }); - } - - this.unitService.setEquipment(unitId, slot, item); - } - - @commandHandler(UnitCommand.UnequipItem) - unequipEquipment({ unitId, itemId, stash }: UnitCommandUnequipItemArgs) { - const equipment = this.unitService.getEquipmentByItemId(unitId, itemId); - - if (!equipment) return; - - this.unitService.setEquipment(unitId, equipment[0], undefined); - - if (stash === StashLocation.Unit) { - this.unitService.stashItems(unitId, [equipment[1]]); - } - - if (stash === StashLocation.Village) { - this.villageStash.addItems([equipment[1]]); - } - } -} diff --git a/packages/core/src/modules/village/activities/village-heal.ts b/packages/core/src/modules/village/activities/village-heal.ts index 291a5d0..1318f0b 100644 --- a/packages/core/src/modules/village/activities/village-heal.ts +++ b/packages/core/src/modules/village/activities/village-heal.ts @@ -1,9 +1,9 @@ import { injectable } from "inversify"; import { filter, forEach, map } from "rambda"; +import { UnitID, UnitService, UnitStore } from "@features/unit"; import { IActivityHandlerCancelable } from "@modules/activity"; import { PartyActivity, PartyID, PartyStore } from "@modules/party"; -import { UnitID, UnitService, UnitStore } from "@modules/unit"; type VillageHealState = { partyId: PartyID; diff --git a/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command-handler.ts b/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command-handler.ts index 777d6cc..6971a70 100644 --- a/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command-handler.ts +++ b/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command-handler.ts @@ -3,9 +3,9 @@ import { append, evolve } from "rambda"; import { commandHandler } from "@core"; +import { UnitID, UnitService } from "@features/unit"; import { AttackEffectType, Effect, EffectType, EquipmentItem, Item, ItemID, ItemType } from "@models"; -import { StashLocation, UnitID, UnitService } from "@modules/unit"; -import { VillageStashService } from "@modules/village"; +import { StashLocation, VillageStashService } from "@modules/village"; import { armorFactory, shieldFactory, weaponFactory } from "@modules/village/lib/equipment-factory"; import { diff --git a/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command.ts b/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command.ts index 01ea49f..385c0f3 100644 --- a/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command.ts +++ b/packages/core/src/modules/village/buildings/blacksmith/blacksmith-command.ts @@ -1,5 +1,6 @@ +import { UnitID } from "@features/unit"; import { ItemID, ItemType } from "@models"; -import { StashLocation, UnitID } from "@modules/unit"; +import { StashLocation } from "@modules/village"; export enum BlacksmithCommand { UpgradeItem = "blacksmith/upgrade-item", diff --git a/packages/core/src/modules/village/buildings/training-field/activities/train-activity.ts b/packages/core/src/modules/village/buildings/training-field/activities/train-activity.ts index aaee39a..5603718 100644 --- a/packages/core/src/modules/village/buildings/training-field/activities/train-activity.ts +++ b/packages/core/src/modules/village/buildings/training-field/activities/train-activity.ts @@ -1,9 +1,9 @@ import { injectable } from "inversify"; import { dec, evolve, forEach } from "rambda"; +import { UnitService } from "@features/unit"; import { IActivityHandler } from "@modules/activity"; import { PartyActivity, PartyID, PartyStore } from "@modules/party"; -import { UnitService } from "@modules/unit"; type TrainingFieldState = { partyId: PartyID; diff --git a/packages/core/src/modules/village/interfaces/index.ts b/packages/core/src/modules/village/interfaces/index.ts index b3afe5c..4e2291d 100644 --- a/packages/core/src/modules/village/interfaces/index.ts +++ b/packages/core/src/modules/village/interfaces/index.ts @@ -4,3 +4,4 @@ export * from "./village-activity"; export * from "./village-config"; export * from "./village-buildings"; export * from "./village-event"; +export * from "./stash-location"; diff --git a/packages/core/src/modules/village/interfaces/stash-location.ts b/packages/core/src/modules/village/interfaces/stash-location.ts new file mode 100644 index 0000000..6f371af --- /dev/null +++ b/packages/core/src/modules/village/interfaces/stash-location.ts @@ -0,0 +1,4 @@ +export enum StashLocation { + Unit, + Village, +} diff --git a/packages/core/src/modules/village/interfaces/village-state.ts b/packages/core/src/modules/village/interfaces/village-state.ts index 4b1d82a..cd52aef 100644 --- a/packages/core/src/modules/village/interfaces/village-state.ts +++ b/packages/core/src/modules/village/interfaces/village-state.ts @@ -1,7 +1,7 @@ +import { UnitID } from "@features/unit"; import { ItemStash, ResourceStash } from "@models"; import { MapLocationID } from "@modules/map"; import { ShopID } from "@modules/shop"; -import { UnitID } from "@modules/unit"; export type VillageStash = ItemStash & ResourceStash; diff --git a/packages/core/src/modules/village/lib/hero-factory.ts b/packages/core/src/modules/village/lib/hero-factory.ts index 6e47907..5558f30 100644 --- a/packages/core/src/modules/village/lib/hero-factory.ts +++ b/packages/core/src/modules/village/lib/hero-factory.ts @@ -1,6 +1,6 @@ import { sample } from "@lib/sample"; -import { Unit, UnitType } from "@modules/unit"; +import { Unit, UnitType } from "@features/unit"; import { armorFactory, shieldFactory, weaponFactory } from "./equipment-factory"; diff --git a/packages/core/src/modules/village/village-command-handler.ts b/packages/core/src/modules/village/village-command-handler.ts index 6e10914..d58eaae 100644 --- a/packages/core/src/modules/village/village-command-handler.ts +++ b/packages/core/src/modules/village/village-command-handler.ts @@ -3,12 +3,12 @@ import { append, find, head, values, whereEq } from "rambda"; import { commandHandler } from "@core"; +import { UnitStore, isAlive } from "@features/unit"; import { Resource } from "@models"; import { ActivityManager, ActivityStore } from "@modules/activity"; import { GameCommand, GeneralGameStore } from "@modules/game"; import { MapLocationType, MapService, MapSize, PartyMapService } from "@modules/map"; import { PartyActivityManager, PartyOwner, PartyService } from "@modules/party"; -import { UnitStore, isAlive } from "@modules/unit"; import { VillageActivity, VillageBuilding, VillageCommand, VillageCommandHealPartyArgs } from "./interfaces"; import { heroFactory, newBuildingCost, newHeroCost } from "./lib";