|
|
package model
|
|
|
|
|
|
import "time"
|
|
|
|
|
|
// TownPausePersisted mirrors HeroMovement fields needed to resume resting, an in-town NPC tour,
|
|
|
// or a mid-adventure excursion after reconnect or during offline catch-up.
|
|
|
// Stored in heroes.town_pause (JSONB).
|
|
|
type TownPausePersisted struct {
|
|
|
RestUntil *time.Time `json:"restUntil,omitempty"`
|
|
|
RestKind RestKind `json:"restKind,omitempty"`
|
|
|
TownRestHealRemainder float64 `json:"townRestHealRemainder,omitempty"`
|
|
|
RestHealRemainder float64 `json:"restHealRemainder,omitempty"`
|
|
|
|
|
|
NPCQueue []int64 `json:"npcQueue,omitempty"`
|
|
|
NextTownNPCRollAt *time.Time `json:"nextTownNPCRollAt,omitempty"`
|
|
|
TownLeaveAt *time.Time `json:"townLeaveAt,omitempty"`
|
|
|
TownVisitNPCName string `json:"townVisitNPCName,omitempty"`
|
|
|
TownVisitNPCType string `json:"townVisitNPCType,omitempty"`
|
|
|
TownVisitStartedAt *time.Time `json:"townVisitStartedAt,omitempty"`
|
|
|
TownVisitLogsEmitted int `json:"townVisitLogsEmitted,omitempty"`
|
|
|
|
|
|
// Walk-to-NPC: hero moves toward stand point (npcWalkTargetId + to); position is hero x/y + speed×dt.
|
|
|
NPCWalkTargetID int64 `json:"npcWalkTargetId,omitempty"`
|
|
|
NPCWalkToX float64 `json:"npcWalkToX,omitempty"`
|
|
|
NPCWalkToY float64 `json:"npcWalkToY,omitempty"`
|
|
|
|
|
|
// After the last NPC visit: stand near them until this time (paused while dialog UI lock is on).
|
|
|
TownLastNPCLingerUntil *time.Time `json:"townLastNpcLingerUntil,omitempty"`
|
|
|
|
|
|
// Plaza: walk to town center after NPC tour, then wait/rest before leaving.
|
|
|
TownPlazaHealActive bool `json:"townPlazaHealActive,omitempty"`
|
|
|
CenterWalkActive bool `json:"centerWalkActive,omitempty"`
|
|
|
CenterWalkToX float64 `json:"centerWalkToX,omitempty"`
|
|
|
CenterWalkToY float64 `json:"centerWalkToY,omitempty"`
|
|
|
// CenterWalkStart: legacy rows only (time-based walk). New saves use centerWalkActive + to.
|
|
|
CenterWalkStart *time.Time `json:"centerWalkStart,omitempty"`
|
|
|
|
|
|
// Excursion (mini-adventure) session persisted for reconnect / offline resume.
|
|
|
Excursion *ExcursionPersisted `json:"excursion,omitempty"`
|
|
|
}
|