public void Start() { var methodName = "Start"; LogTrace(methodName); if (_missionProcessorState == MissionProcessorStates.Idle || _missionProcessorState == MissionProcessorStates.Finished) { _missionProcessorState = MissionProcessorStates.GetMissionRecord; } }
public void Reset() { var methodName = "Reset"; LogTrace(methodName); //Reset all variables _missionProcessorState = MissionProcessorStates.Idle; _timeoutExpired = DateTime.MinValue; _timesClear = 3; _currentRoom = 0; _nextRoomGateQueued = false; _actions.Clear(); _lootCanBlacklist.Clear(); }
private bool GetMissionRecord() { var methodName = "GetMissionRecord"; LogTrace(methodName); var actions = GetActionsForMission(); if (actions == null) { return(false); } _actions = actions; LogMessage(methodName, LogSeverityTypes.Standard, "Got action set for mission \"{0}\", waiting for arrival at mission.", StealthBot.MissionRunner.ActiveMission.Name); _missionProcessorState = MissionProcessorStates.WaitForArrival; return(true); }
private bool ReloadMissionRecord() { var methodName = "ReloadMissionRecord"; LogTrace(methodName); var actions = GetActionsForMission(); if (actions == null) { return(false); } //Clear the old action list _actions.Clear(); foreach (var action in actions) { if (_currentRoom > 0) { if (action.Name == "NextRoom") { _currentRoom--; _actions.Add(action); } } else { _actions.Add(action); } } LogMessage(methodName, LogSeverityTypes.Standard, "Re-loaded action set for mission \"{0}\" after fleeing.", StealthBot.MissionRunner.ActiveMission.Name); _missionProcessorState = MissionProcessorStates.WaitForArrival; return(true); }
public override void Pulse() { if (!ShouldPulse()) { return; } StartPulseProfiling(); switch (_missionProcessorState) { case MissionProcessorStates.Idle: //Do nothing break; case MissionProcessorStates.GetMissionRecord: //If we finished getting mission record.. if (GetMissionRecord()) { //And the current state is waitForArrival if (_missionProcessorState == MissionProcessorStates.WaitForArrival) { //goto the case goto case MissionProcessorStates.WaitForArrival; } } break; case MissionProcessorStates.WaitForArrival: //If I'm at the mission bookmark, go ahead and start //if (StealthBot.MissionRunner.ActiveMission.IsAtMissionStartBookmark()) var isAtMissionStartbookmark = StealthBot.MissionCache.IsAtMissionStartBookmark(StealthBot.MissionRunner.ActiveMission); if (isAtMissionStartbookmark) { _missionProcessorState = MissionProcessorStates.ProcessMission; goto case MissionProcessorStates.ProcessMission; } break; case MissionProcessorStates.Fleeing: if (!StealthBot.Defense.IsFleeing) { //If we finished reloading mission record.. if (ReloadMissionRecord()) { //And the current state is waitForArrival if (_missionProcessorState == MissionProcessorStates.WaitForArrival) { //goto the case goto case MissionProcessorStates.WaitForArrival; } } } break; case MissionProcessorStates.ProcessMission: if (StealthBot.Defense.IsFleeing) { _missionProcessorState = MissionProcessorStates.Fleeing; goto case MissionProcessorStates.Fleeing; } ProcessMission(); break; case MissionProcessorStates.Finished: //Also do nothing break; } EndPulseProfiling(); }
private void ProcessMission() { var methodName = "ProcessMission"; LogTrace(methodName); if (_actions.Count > 0) { if (_lastNpcCount == 0) { _lastNpcCount = GetCurrentNpcCount(); } var action = _actions[0]; var removeAction = ProcessAction(action); if (!removeAction) { /* Uncomment this later when I want to experiment with it * if (_actions.Count > 1) * { * Action firstAction = _actions[0], secondAction = _actions[1]; * * //If I can "look ahead" * if ((firstAction.Name == "ClearRoom" || firstAction.Name == "Kill") && * !Core.StealthBot.Movement.IsMoving) * { * * } * } */ } else { //If this is the last clear room before a gate, or the last clear room, create a salvage bookmark if (_shouldSalvageRoom && !action.PreventSalvageBookmark) { var shouldCreateBookmark = false; //If this is the last action period, create a salvage bookmark if (_actions.Count == 1) { LogMessage(methodName, LogSeverityTypes.Debug, "This action is the last action. We should create a salvage bookmark."); shouldCreateBookmark = true; } else { //If the next action is 'next room', create a salvage bookmark var nextAction = _actions[1]; if (nextAction.Name == "NextRoom") { LogMessage(methodName, LogSeverityTypes.Debug, "The action after this action is a NextRoom. We should create a salvage bookmark."); shouldCreateBookmark = true; } } if (shouldCreateBookmark) { _shouldSalvageRoom = false; StealthBot.Bookmarks.CreateSalvagingBookmark(); } } LogMessage(methodName, LogSeverityTypes.Standard, "Action \"{0}\" completed; removing.", action.Name); _actions.RemoveAt(0); } return; } _lastNpcCount = 0; LogMessage(methodName, LogSeverityTypes.Standard, "No more actions for this mission; finished."); _missionProcessorState = MissionProcessorStates.Finished; }