func (s *service) activeEvent(e exploration.Exploration, eventTime time.Time, evs ...event.Event) (exploration.Exploration, error) { if len(evs) == 0 { return e, nil } if ok, err := e.IsActive(); err != nil { return e, err } else if !ok { return e, nil } for _, ev := range evs { e.NowFloor().AddProgress(ev) e.NowFloor().AddEvent(ev, eventTime) switch { case ev.IsEnemyEncounter(): e.EnemyEncounter = battle.New(s.enemyFactory.CreateEnemy(character.EnemyIdentifier(ev.SubID), ev.Num)) case ev.IsPlayerDownEnd(): e.DownEnd(eventTime) case ev.IsPlayerEscapeEnd(): e.EscapeEnd(eventTime) case ev.IsPlayerClearEnd(): e.ClearEnd(eventTime) } } return e, nil }