diff options
| author | historia <[not public]> | 2026-06-25 00:44:47 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-25 00:44:47 -0400 |
| commit | 94a06fbbe682701ca4d4bd2a70cd74d8df29c932 (patch) | |
| tree | eb49fb1893e61092138164d419e863ee3fe0d1e2 /internal/action/action.go | |
| parent | 15b7e221b799ef107dec44ecdb294026dfd3d059 (diff) | |
| download | thehouseoficarus-94a06fbbe682701ca4d4bd2a70cd74d8df29c932.tar.gz | |
refactor: replaced map[string]any with typed structs for Data
Diffstat (limited to 'internal/action/action.go')
| -rw-r--r-- | internal/action/action.go | 138 |
1 files changed, 135 insertions, 3 deletions
diff --git a/internal/action/action.go b/internal/action/action.go index 5e66708..a72f6ca 100644 --- a/internal/action/action.go +++ b/internal/action/action.go @@ -23,13 +23,40 @@ func WordPrefixMatch(input, name string) bool { return true } +type ActionType string + +const ( + TypeGather ActionType = "gather" + TypeSteal ActionType = "steal" + TypeTalk ActionType = "talk" + TypeUse ActionType = "use" + TypeBurn ActionType = "burn" + TypeStoke ActionType = "stoke" + TypeSearch ActionType = "search" + TypeIdentify ActionType = "identify" + TypePlant ActionType = "plant" + TypeHarvest ActionType = "harvest" + TypeRake ActionType = "rake" + TypeWater ActionType = "water" + TypeCure ActionType = "cure" + TypeObstacle ActionType = "obstacle" + TypeFletch ActionType = "fletch" + TypeClean ActionType = "clean" + TypeCook ActionType = "cook" + TypeSmelt ActionType = "smelt" + TypeSmith ActionType = "smith" + TypeCraft ActionType = "craft" + TypeCombine ActionType = "combine" + TypeMix ActionType = "mix" + TypeConstruct ActionType = "construct" +) + type Action struct { - Type string + Type ActionType TargetID string TargetName string - Step int WaitLeft int - Data map[string]any + Data any } func (a *Action) Advance() bool { @@ -40,6 +67,111 @@ func (a *Action) Advance() bool { return true } +type GatherData struct { + ObjDefID string + InstanceKey string + InstanceIdx int + EffectiveWait float64 + DepleteTimer bool + Step int + Verb string + ToolName string +} + +type ProductionData struct { + ItemID string + Phase int + Wait float64 + StartMsg string + EndMsg string + Remaining int + NextStepIndex int + StepsAccumulatedTicks float64 +} + +type StealData struct { + TargetType string + StealTable string + StealLevel int + StealXP int + StealSpeed float64 + TargetName string + MobInstanceID string + ObjDefID string + GuardMob string + GuardWatching bool +} + +type TalkData struct { + Node string + Cfg *TalkConfig + EstateDirectory bool + StealGuard bool +} + +type UseData struct { + Cfg *UseConfig + Step int +} + +type BurnData struct { + ItemID string + ToolSpeed float64 + Level int + XP int + BurnTicks float64 + Phase int +} + +type IdentifyData struct { + JunkID string + XPPer int +} + +type ObstacleData struct { + CourseID string + Phase int + ObstacleIndex int + TotalObstacles int + NextRoom int + StartRoom int + ObstacleXP int + CompletionXP int + FailChance float64 + FailDamageMin int + FailDamageMax int + Messages []any + TicksPerPhase float64 + RequiredLevel int +} + +type FarmData struct { + Prefix string + SeedID string + XP float64 + Product string + MinYield float64 + MaxYield float64 +} + +type SearchData struct { + ItemID string + SlotIdx int + Started bool +} + +type FletchData struct { + ItemID string + Phase int + Wait float64 + Remaining int +} + +type CleanData struct { + Phase int + Filter string +} + type DropEntry struct { ItemID string `yaml:"item_id"` Table string `yaml:"table"` |
