package agents import ( "fmt" "mmgame/internal/scripts" ) type DMAgent struct { Script *scripts.Script currentPhaseIndex int releasedClues []string } func NewDMAgent(script *scripts.Script) *DMAgent { return &DMAgent{Script: script} } func (a *DMAgent) GetOpening() string { return fmt.Sprintf("欢迎来到【%s】。%s", a.Script.Title, a.Script.Background) } func (a *DMAgent) Act(phaseIndex int, playerProgress, context string) map[string]interface{} { result := DMGenerate(a.Script, phaseIndex, a.releasedClues, context) if len(result) > 0 { return result } phases := a.Script.Phases phase := &phases[len(phases)-1] if phaseIndex < len(phases) { phase = &phases[phaseIndex] } return map[string]interface{}{"action": "narrate", "content": "【" + phase.Name + "】" + phase.Description} } func (a *DMAgent) GetReplaySummary() string { return fmt.Sprintf("剧本:%s\n真相:%s", a.Script.Title, a.Script.Truth) }