public bool SetToMainAgent(Agent agent) { if (agent != null) { if (Mission.MainAgent == agent || agent.Team != Mission.PlayerTeam) { return(false); } if (!Utility.IsPlayerDead()) { MissionEvent.OnMainAgentWillBeChangedToAnotherOne(agent); MissionLibrary.Event.MissionEvent.OnMainAgentWillBeChangedToAnotherOne(agent); Utility.AIControlMainAgent(false); } GameTexts.SetVariable("ControlledTroopName", agent.Name); Utility.DisplayLocalizedText("str_rts_camera_control_troop"); bool shouldSmoothMoveToAgent = Utility.BeforeSetMainAgent(); if (_switchFreeCameraLogic.IsSpectatorCamera) { Mission.MainAgent = agent; Utility.AfterSetMainAgent(shouldSmoothMoveToAgent, _flyCameraMissionView.MissionScreen, false); } else { Utility.PlayerControlAgent(agent); Utility.AfterSetMainAgent(shouldSmoothMoveToAgent, _flyCameraMissionView.MissionScreen, true); } return(true); } Utility.DisplayLocalizedText("str_rts_camera_no_troop_to_control"); return(false); }
public override void OnRemoveBehaviour() { base.OnRemoveBehaviour(); CommanderLogic.OnRemoveBehaviour(); FixScoreBoardAfterPlayerDeadLogic.OnRemoveBehaviour(); SwitchFreeCameraLogic.OnRemoveBehaviour(); MissionEvent.Clear(); MissionLibrary.Event.MissionEvent.Clear(); }
internal void ReceiveMissionEvent(MissionEvent missionEvent) { foreach (Mission mission in activeMissions) { if (mission.missionData.TypeOfMission == missionEvent) { mission.ObjectiveAchieved++; } if (mission.ObjectiveAchieved == mission.missionData.ObjectiveTotal) { mission.Completed = true; } } }
public void SwapTeam() { if (!NativeConfig.CheatMode) { return; } if (Mission.PlayerEnemyTeam == null) { return; } if (Mission.GetMissionBehaviour <SiegeDeploymentHandler>() != null) { return; } bool firstTime = Mission.PlayerEnemyTeam.PlayerOrderController.Owner == null; var targetAgent = Mission.PlayerEnemyTeam.PlayerOrderController.Owner; // Fix a rare crash in e1.4.3 when targetAgent.Team == null && targetAgent.IsDeleted == true and even **targetAgent.IsActive() == true**. targetAgent = !Utility.IsAgentDead(targetAgent) && targetAgent?.Team != null ? Mission.PlayerEnemyTeam.PlayerOrderController.Owner : !Utility.IsAgentDead(Mission.PlayerEnemyTeam.GeneralAgent) ? Mission.PlayerEnemyTeam.GeneralAgent : Mission.PlayerEnemyTeam.Leader; if (Utility.IsAgentDead(targetAgent)) { Utility.DisplayLocalizedText("str_rts_camera_enemy_wiped_out"); return; } Utility.DisplayLocalizedText("str_rts_camera_switch_to_enemy_team"); MissionEvent.OnPreSwitchTeam(); MissionLibrary.Event.MissionEvent.OnPreSwitchTeam(); Mission.PlayerEnemyTeam.PlayerOrderController.Owner = targetAgent; Mission.PlayerTeam = Mission.PlayerEnemyTeam; _controlTroopLogic.SetToMainAgent(targetAgent); MissionLibrary.Event.MissionEvent.OnPostSwitchTeam(); MissionEvent.OnPostSwitchTeam(); if (firstTime) { foreach (var formation in Mission.PlayerTeam.FormationsIncludingEmpty) { bool isAIControlled = formation.IsAIControlled; formation.PlayerOwner = Mission.MainAgent; formation.IsAIControlled = isAIControlled; } } }
public bool ForceControlAgent(Agent agent) { try { if (agent != null) { if (agent.Controller == Agent.ControllerType.Player || agent.Team != Mission.PlayerTeam) { return(false); } if (!Utility.IsPlayerDead() && Mission.MainAgent != agent) { MissionEvent.OnMainAgentWillBeChangedToAnotherOne(agent); MissionLibrary.Event.MissionEvent.OnMainAgentWillBeChangedToAnotherOne(agent); Utility.AIControlMainAgent(false); } bool shouldSmoothMoveToAgent = Utility.BeforeSetMainAgent(); if (_switchFreeCameraLogic.IsSpectatorCamera) { Mission.MainAgent = agent; _switchFreeCameraLogic.SwitchCamera(); } else { Utility.PlayerControlAgent(agent); } Utility.AfterSetMainAgent(shouldSmoothMoveToAgent, _flyCameraMissionView.MissionScreen); return(true); } else { Utility.DisplayLocalizedText("str_rts_camera_no_troop_to_control"); return(false); } } catch (Exception e) { Utility.DisplayMessage(e.ToString()); } return(false); }
// Use this for initialization void Awake() { if (S == null) { S = this; } NewMissionAssigned = new MissionEvent(); NewMissionAssigned.AddListener(UpdateMissionPlanetDisplay); player = GameObject.FindObjectOfType <PlayerShip>(); gameController = GameObject.FindObjectOfType <GameController>(); Invoke("AssignFirstMission", 0.5f); // Set up IPausable fields Paused = new UnityEvent(); Unpaused = new UnityEvent(); isPaused = false; // Set up stuff that's normally just in the inspector missionTimeFill = GameObject.Find("MissionTimeFill").GetComponent <Image>(); missionLabel = GameObject.Find("MissionLabel").GetComponent <Text>(); }
public override void Action() { EventDispatcher.Dispatch(MissionEvent.Prepare(Mission, StateToSet)); }
public void Process(MissionEvent ev) { switch (_currentState) { case MissionState.LAUNCHING: if (ev == MissionEvent.LAUNCHED) { _currentState = MissionState.SPIN_WHEEL; _lightsManager.SetWheelMission(); } break; case MissionState.SPIN_WHEEL: if (ev == MissionEvent.WHEEL_FILL) { if (Random.value < 0.5) { _currentState = MissionState.TAKE_RAMP; _lightsManager.SetRampMission(); } else { _currentState = MissionState.HIT_TARGETS; _lightsManager.SetTargetsMission(); } _scoreManager.AddScore(ScoreManager.MISSION_SCORE); } if (ev == MissionEvent.BALL_LOST) { _currentState = MissionState.LAUNCHING; _ballManager.LoseBall(); } break; case MissionState.TAKE_RAMP: if (ev == MissionEvent.RAMP_TAKEN) { _currentState = MissionState.LOCK_BALL; _lightsManager.SetLockMission(); _scoreManager.AddScore(ScoreManager.MISSION_SCORE); } if (ev == MissionEvent.BALL_LOST) { _currentState = MissionState.LAUNCHING; _ballManager.LoseBall(); } break; case MissionState.HIT_TARGETS: if (ev == MissionEvent.TARGET_FILL) { _currentState = MissionState.LOCK_BALL; _lightsManager.SetLockMission(); _scoreManager.AddScore(ScoreManager.MISSION_SCORE); } if (ev == MissionEvent.BALL_LOST) { _currentState = MissionState.LAUNCHING; _ballManager.LoseBall(); } break; case MissionState.LOCK_BALL: if (ev == MissionEvent.BALL_LOCKED) { _missionCount++; if (_missionCount == MissionsRequired) { _currentState = MissionState.MULTIBALL; _multiballCount = 3; } else { _currentState = MissionState.LAUNCHING; } _scoreManager.AddScore(ScoreManager.MISSION_SCORE); } if (ev == MissionEvent.BALL_LOST) { _currentState = MissionState.LAUNCHING; _ballManager.LoseBall(); } break; case MissionState.MULTIBALL: if (ev == MissionEvent.BALL_LOST) { _multiballCount--; if (_multiballCount == 1) { _currentState = MissionState.SPIN_WHEEL; _lightsManager.SetWheelMission(); } } break; } }