Untitled diff

Created Diff never expires
0 removals
302 lines
55 additions
357 lines
using System;
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine.UI;


public class SessionHUD : UIScreen
public class SessionHUD : UIScreen
{
{
public override void OnStart()
public override void OnStart()
{
{
base.OnStart();
base.OnStart();
this.commentaryWidget.OnStart();
this.commentaryWidget.OnStart();
this.driverInfoHUD.OnStart();
this.driverInfoHUD.OnStart();
this.sessionTeamRadionWidget.OnStart();
this.sessionTeamRadionWidget.OnStart();
this.sabotageDriversButton.onClick.AddListener(new UnityAction(this.OnSabotageDriverButton));
this.sabotageDriversButton.onClick.AddListener(new UnityAction(this.OnSabotageDriverButton));
this.playBackWidget.OnStart();
this.playBackWidget.OnStart();
}
}


private void OnSabotageDriverButton()
private void OnSabotageDriverButton()
{
{
scSoundManager.Instance.PlaySound(SoundID.Button_Select, 0f);
scSoundManager.Instance.PlaySound(SoundID.Button_Select, 0f);
this.outOfRaceDriverSelectMenu.Show();
this.outOfRaceDriverSelectMenu.Show();
}
}


public override void OnUnload()
public override void OnUnload()
{
{
base.OnUnload();
base.OnUnload();
this.driverInfoHUD.OnUnload();
this.driverInfoHUD.OnUnload();
this.simulation2D.ClearSingletonInstance();
this.simulation2D.ClearSingletonInstance();
}
}


public override void OnEnter()
public override void OnEnter()
{
{
base.OnEnter();
base.OnEnter();
base.showNavigationBars = true;
base.showNavigationBars = true;
base.SetTopBarMode(UITopBar.Mode.Session);
base.SetTopBarMode(UITopBar.Mode.Session);
base.SetBottomBarMode(UIBottomBar.Mode.Session);
base.SetBottomBarMode(UIBottomBar.Mode.Session);
App.instance.cameraManager.ActivateMode(CameraManager.CameraMode.FreeRoam);
App.instance.cameraManager.ActivateMode(CameraManager.CameraMode.FreeRoam);
App.instance.cameraManager.gameCamera.SetBlurActive(false);
App.instance.cameraManager.gameCamera.SetBlurActive(false);
App.instance.cameraManager.SetRunningMode(false);
App.instance.cameraManager.SetRunningMode(false);
Game.instance.sessionManager.SetCircuitActive(true);
Game.instance.sessionManager.SetCircuitActive(true);
UITutorial componentInChildren = base.GetComponentInChildren<UITutorial>();
UITutorial componentInChildren = base.GetComponentInChildren<UITutorial>();
if (Game.instance.vehicleManager.vehicleCount > 1)
if (Game.instance.vehicleManager.vehicleCount > 1)
{
{
RacingVehicle[] playerVehicles = Game.instance.vehicleManager.GetPlayerVehicles();
RacingVehicle[] playerVehicles = Game.instance.vehicleManager.GetPlayerVehicles();
for (int i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
{
RacingVehicle racingVehicle = playerVehicles[i];
RacingVehicle racingVehicle = playerVehicles[i];
this.actionButtons[i].SetVehicle(racingVehicle, componentInChildren);
this.actionButtons[i].SetVehicle(racingVehicle, componentInChildren);
this.standingsWidget[i].SetVehicle(racingVehicle);
this.standingsWidget[i].SetVehicle(racingVehicle);
}
}
}
}
this.gridLights.SetActive(false);
this.gridLights.SetActive(false);
this.sessionTeamRadionWidget.OnEnter();
this.sessionTeamRadionWidget.OnEnter();
this.sessionFlagsWidget.OnEnter();
this.sessionFlagsWidget.OnEnter();
this.fastestLapWidget.OnEnter();
this.fastestLapWidget.OnEnter();
this.sprinklersWidget.OnEnter();
this.sprinklersWidget.OnEnter();
this.remainingLapsWidget.OnEnter();
this.remainingLapsWidget.OnEnter();
this.sponsorStatusChangeWidget.OnEnter();
this.sponsorStatusChangeWidget.OnEnter();
if (this.minimapWidget != null)
if (this.minimapWidget != null)
{
{
this.minimapWidget.Setup();
this.minimapWidget.Setup();
}
}
if (App.instance.gameStateManager.currentState is RaceGridState)
if (App.instance.gameStateManager.currentState is RaceGridState)
{
{
if (Game.instance.tutorialSystem.isTutorialActive)
if (Game.instance.tutorialSystem.isTutorialActive)
{
{
if (componentInChildren == null || !componentInChildren.IsTutorialOnRaceGrid())
if (componentInChildren == null || !componentInChildren.IsTutorialOnRaceGrid())
{
{
this.StartGridLightAnimation();
this.StartGridLightAnimation();
Game.instance.time.SetSpeed(GameTimer.Speed.Slow);
Game.instance.time.SetSpeed(GameTimer.Speed.Slow);
}
}
}
}
else if (Game.instance.sessionManager.championship.rules.raceStart == ChampionshipRules.RaceStart.StandingStart || !Game.instance.sessionManager.isRollingOut)
else if (Game.instance.sessionManager.championship.rules.raceStart == ChampionshipRules.RaceStart.StandingStart || !Game.instance.sessionManager.isRollingOut)
{
{
this.StartGridLightAnimation();
this.StartGridLightAnimation();
}
}
}
}
this.mSimulationTutorialIDS = new List<string>(new string[]
this.mSimulationTutorialIDS = new List<string>(new string[]
{
{
"PSG_10003404",
"PSG_10003404",
"PSG_10003404",
"PSG_10003404",
"PSG_10003397",
"PSG_10003397",
"PSG_10003389",
"PSG_10003389",
"PSG_10003402"
"PSG_10003402"
});
});
this.SetupNavigationBarsCanvases();
this.SetupNavigationBarsCanvases();
this.RegisterPracticeKnowledgeEvents();
this.RegisterPracticeKnowledgeEvents();
if (!Game.instance.tutorialSystem.isTutorialActive)
if (!Game.instance.tutorialSystem.isTutorialActive)
{
{
scSoundManager.Instance.PlaySound(SoundID.Sfx_TransitionScreen, 0f);
scSoundManager.Instance.PlaySound(SoundID.Sfx_TransitionScreen, 0f);
scMusicController.Race();
scMusicController.Race();
}
}
else if (!Game.instance.tutorialSystem.isTutorialFirstRaceActive)
else if (!Game.instance.tutorialSystem.isTutorialFirstRaceActive)
{
{
scMusicController.Stop();
scMusicController.Stop();
}
}
bool flag = !App.instance.preferencesManager.videoPreferences.isSimulationRunning2DMode;
bool flag = !App.instance.preferencesManager.videoPreferences.isSimulationRunning2DMode;
if (flag)
if (flag)
{
{
this.simulation2D.Hide();
this.simulation2D.Hide();
}
}
else
else
{
{
this.simulation2D.Show();
this.simulation2D.Show();
}
}
this.outOfRaceDriverSelectMenu.UpdateLabelsRemaining();
this.outOfRaceDriverSelectMenu.UpdateLabelsRemaining();
ChampionshipRules.RaceStart raceStart = Game.instance.sessionManager.championship.rules.raceStart;
ChampionshipRules.RaceStart raceStart = Game.instance.sessionManager.championship.rules.raceStart;
if (raceStart == ChampionshipRules.RaceStart.RollingStart)
if (raceStart == ChampionshipRules.RaceStart.RollingStart)
{
{
this.gridLightsAnimator.SetTrigger("RollingStart");
this.gridLightsAnimator.SetTrigger("RollingStart");
}
}
this.sessionHudStandingsWidget.OnModeChanged(UISessionStandingsModeWidget.StandingsModes.StandingsMini);
this.sessionHudStandingsWidget.OnModeChanged(UISessionStandingsModeWidget.StandingsModes.StandingsMini);
this.playBackWidget.OnEnter();
this.playBackWidget.OnEnter();
GameUtility.SetActive(this.sessionHudStandingsWidget, true);
GameUtility.SetActive(this.sessionHudStandingsWidget, true);
}
}


public void SetupNavigationBarsCanvases()
public void SetupNavigationBarsCanvases()
{
{
if (UIManager.instance.navigationBars.topBar.canvas.worldCamera != this.sessionHUDCamera)
if (UIManager.instance.navigationBars.topBar.canvas.worldCamera != this.sessionHUDCamera)
{
{
UIManager.instance.navigationBars.topBar.canvas.worldCamera = this.sessionHUDCamera;
UIManager.instance.navigationBars.topBar.canvas.worldCamera = this.sessionHUDCamera;
UIManager.instance.navigationBars.tutorialCanvas.worldCamera = this.sessionHUDCamera;
UIManager.instance.navigationBars.tutorialCanvas.worldCamera = this.sessionHUDCamera;
UIManager.instance.dialogBoxManager.canvas.worldCamera = this.sessionHUDCamera;
UIManager.instance.dialogBoxManager.canvas.worldCamera = this.sessionHUDCamera;
}
}
}
}


public void StartGridLightAnimation()
public void StartGridLightAnimation()
{
{
this.mSoundContainer = scSoundManager.Instance.PlaySound(SoundID.Sfx_RaceStartLights, 0f);
this.mSoundContainer = scSoundManager.Instance.PlaySound(SoundID.Sfx_RaceStartLights, 0f);
this.gridLights.SetActive(true);
this.gridLights.SetActive(true);
}
}


public override void OnExit()
public override void OnExit()
{
{
this.toggleStyleInilized = false;
base.OnExit();
base.OnExit();
this.ExitWidgets();
this.ExitWidgets();
UIManager.instance.SetupCanvasCamera(UIManager.instance.navigationBars.topBar.canvas);
UIManager.instance.SetupCanvasCamera(UIManager.instance.navigationBars.topBar.canvas);
UIManager.instance.SetupCanvasCamera(UIManager.instance.navigationBars.tutorialCanvas);
UIManager.instance.SetupCanvasCamera(UIManager.instance.navigationBars.tutorialCanvas);
UIManager.instance.SetupCanvasCamera(UIManager.instance.dialogBoxManager.canvas);
UIManager.instance.SetupCanvasCamera(UIManager.instance.dialogBoxManager.canvas);
App.instance.cameraManager.SetRunningMode(true);
App.instance.cameraManager.SetRunningMode(true);
this.simulation2D.Hide();
this.simulation2D.Hide();
}
}


public void ExitWidgets()
public void ExitWidgets()
{
{
this.sessionTeamRadionWidget.OnExit();
this.sessionTeamRadionWidget.OnExit();
this.fastestLapWidget.OnExit();
this.fastestLapWidget.OnExit();
this.remainingLapsWidget.OnExit();
this.remainingLapsWidget.OnExit();
this.sponsorStatusChangeWidget.OnExit();
this.sponsorStatusChangeWidget.OnExit();
this.sessionWaitLeaderWidget.OnExit();
this.sessionWaitLeaderWidget.OnExit();
for (int i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
{
this.actionButtons[i].OnExit();
this.actionButtons[i].OnExit();
}
}
}
}


public override void OnFocus()
public override void OnFocus()
{
{
base.OnFocus();
base.OnFocus();
this.SetupNavigationBarsCanvases();
this.SetupNavigationBarsCanvases();
}
}


private void Update()
private void Update()
{
{
this.SetupNavigationBarsCanvases();
this.SetupNavigationBarsCanvases();
GameUtility.SetActive(this.rollingStartWidget, Game.instance.sessionManager.isRollingOut);
GameUtility.SetActive(this.rollingStartWidget, Game.instance.sessionManager.isRollingOut);
this.sessionWaitLeaderWidget.CheckDisplay();
this.sessionWaitLeaderWidget.CheckDisplay();
if (this.mSimulationTutorialIDS.Count > 0)
if (this.mSimulationTutorialIDS.Count > 0)
{
{
this.mTimer -= GameTimer.deltaTime;
this.mTimer -= GameTimer.deltaTime;
if (this.mTimer <= 0f)
if (this.mTimer <= 0f)
{
{
DialogRule ruleByID = App.instance.dialogRulesManager.GetRuleByID(this.mSimulationTutorialIDS[0]);
DialogRule ruleByID = App.instance.dialogRulesManager.GetRuleByID(this.mSimulationTutorialIDS[0]);
App.instance.tutorialSimulation.AddTutorial(ruleByID);
App.instance.tutorialSimulation.AddTutorial(ruleByID);
this.mSimulationTutorialIDS.RemoveAt(0);
this.mSimulationTutorialIDS.RemoveAt(0);
this.mTimer = UnityEngine.Random.Range(20f, 30f);
this.mTimer = UnityEngine.Random.Range(20f, 30f);
}
}
}
}
if (!this.gridLights.activeSelf)
if (!this.gridLights.activeSelf)
{
{
this.sponsorStatusChangeWidget.CheckForStatusChange();
this.sponsorStatusChangeWidget.CheckForStatusChange();
}
}
if (Game.instance.sessionManager.flag == SessionManager.Flag.None)
if (Game.instance.sessionManager.flag == SessionManager.Flag.None)
{
{
if (Game.instance.time.isPaused)
if (Game.instance.time.isPaused)
{
{
if (this.mSoundContainer != null)
if (this.mSoundContainer != null)
{
{
this.mSoundContainer.Pause();
this.mSoundContainer.Pause();
}
}
this.gridLightsAnimator.speed = 0f;
this.gridLightsAnimator.speed = 0f;
}
}
else
else
{
{
if (this.mSoundContainer != null)
if (this.mSoundContainer != null)
{
{
this.mSoundContainer.UnPause();
this.mSoundContainer.UnPause();
}
}
this.gridLightsAnimator.speed = 1f;
this.gridLightsAnimator.speed = 1f;
}
}
}
}
GameUtility.SetActive(this.sabotageDriverContainer, Game.instance.sessionManager.sessionType == SessionDetails.SessionType.Race && Game.instance.challengeManager.challengeGameData.isSabotageDriverOptionActive && Game.instance.challengeManager.challengeGameData.sabotageDriverCount > 0);
GameUtility.SetActive(this.sabotageDriverContainer, Game.instance.sessionManager.sessionType == SessionDetails.SessionType.Race && Game.instance.challengeManager.challengeGameData.isSabotageDriverOptionActive && Game.instance.challengeManager.challengeGameData.sabotageDriverCount > 0);
this.sprinklersWidget.UpdateForActivation();
this.sprinklersWidget.UpdateForActivation();
SessionSimSpeedDirector.State state = Game.instance.sessionManager.raceDirector.sessionSimSpeedDirector.state;
SessionSimSpeedDirector.State state = Game.instance.sessionManager.raceDirector.sessionSimSpeedDirector.state;
bool activeSelf = this.miniCameraViewContainer.activeSelf;
bool activeSelf = this.miniCameraViewContainer.activeSelf;
bool flag = !App.instance.preferencesManager.videoPreferences.isRunning2DMode && SceneManager.instance.hasLoaded3DGeometry;
bool flag = !App.instance.preferencesManager.videoPreferences.isRunning2DMode && SceneManager.instance.hasLoaded3DGeometry;
GameUtility.SetActive(this.miniCameraViewContainer, flag && Simulation2D.instance.isActive && state != SessionSimSpeedDirector.State.Inactive && state != SessionSimSpeedDirector.State.Active);
GameUtility.SetActive(this.miniCameraViewContainer, flag && Simulation2D.instance.isActive && state != SessionSimSpeedDirector.State.Inactive && state != SessionSimSpeedDirector.State.Active);
if (activeSelf != this.miniCameraViewContainer.activeSelf)
if (activeSelf != this.miniCameraViewContainer.activeSelf)
{
{
this.miniCameraViewWidget.SetupText();
this.miniCameraViewWidget.SetupText();
}
}
}
}


private void RegisterPracticeKnowledgeEvents()
private void RegisterPracticeKnowledgeEvents()
{
{
SessionDetails.SessionType sessionType = Game.instance.sessionManager.sessionType;
SessionDetails.SessionType sessionType = Game.instance.sessionManager.sessionType;
PracticeReportSessionData playerPracticeReportData = Game.instance.persistentEventData.GetPlayerPracticeReportData();
PracticeReportSessionData playerPracticeReportData = Game.instance.persistentEventData.GetPlayerPracticeReportData();
PracticeReportKnowledgeData[] knowledgeData = playerPracticeReportData.GetKnowledgeData();
PracticeReportKnowledgeData[] knowledgeData = playerPracticeReportData.GetKnowledgeData();
if (sessionType == SessionDetails.SessionType.Practice)
if (sessionType == SessionDetails.SessionType.Practice)
{
{
for (int i = 0; i < knowledgeData.Length; i++)
for (int i = 0; i < knowledgeData.Length; i++)
{
{
knowledgeData[i].onLevelUnlocked.RemoveAllListeners();
knowledgeData[i].onLevelUnlocked.RemoveAllListeners();
knowledgeData[i].onLevelUnlocked.AddListener(new UnityAction<PracticeReportKnowledgeData>(this.OnKnowledgeLevelUnlocked));
knowledgeData[i].onLevelUnlocked.AddListener(new UnityAction<PracticeReportKnowledgeData>(this.OnKnowledgeLevelUnlocked));
}
}
}
}
else
else
{
{
for (int j = 0; j < knowledgeData.Length; j++)
for (int j = 0; j < knowledgeData.Length; j++)
{
{
knowledgeData[j].onLevelUnlocked.RemoveAllListeners();
knowledgeData[j].onLevelUnlocked.RemoveAllListeners();
}
}
GameUtility.SetActive(this.mPracticeKnowledgeUnlocked.gameObject, false);
GameUtility.SetActive(this.mPracticeKnowledgeUnlocked.gameObject, false);
}
}
}
}


private void OnKnowledgeLevelUnlocked(PracticeReportKnowledgeData inPracticeKnowledge)
private void OnKnowledgeLevelUnlocked(PracticeReportKnowledgeData inPracticeKnowledge)
{
{
this.mPracticeKnowledgeUnlocked.Show(inPracticeKnowledge);
this.mPracticeKnowledgeUnlocked.Show(inPracticeKnowledge);
}
}


private void OnGUI()
{
this.toggleStyle = GUI.skin.toggle;
this.InitializeToggle();
if (GUI.Toggle(this.firstRect, this.autoPit, "Auto Pit", this.toggleStyle) != this.autoPit)
{
this.autoPit = !this.autoPit;
if (this.autoPit)
{
ConsoleCommands.useAIForPitting = true;
return;
}
ConsoleCommands.useAIForPitting = false;
}
if (GUI.Toggle(this.secondRect, this.autoRace, "Auto Strategy", this.toggleStyle) != this.autoRace)
{
this.autoRace = !this.autoRace;
if (this.autoRace)
{
ConsoleCommands.useAIForDrivers = true;
return;
}
ConsoleCommands.useAIForDrivers = false;
}
}

public void InitializeToggle()
{
if (this.toggleStyleInilized)
{
return;
}
this.firstRect = new Rect((float)Screen.width * 0.30781f, (float)Screen.height * 0.86203f, (float)Screen.width * 0.07552f, (float)Screen.height * 0.049074f);
this.secondRect = new Rect((float)Screen.width * 0.61614f, (float)Screen.height * 0.86203f, (float)Screen.width * 0.07552f, (float)Screen.height * 0.049074f);
this.toggleStyle.border = new RectOffset(5, 5, 5, 5);
this.toggleStyle.imagePosition = ImagePosition.TextOnly;
this.toggleStyle.alignment = TextAnchor.MiddleCenter;
this.toggleStyle.margin = new RectOffset(0, 0, 0, 0);
this.toggleStyle.fontSize = Mathf.FloorToInt((float)Screen.height * 0.013f);
this.toggleStyleInilized = true;
}

public Camera sessionHUDCamera;
public Camera sessionHUDCamera;


public SprinklersWidget sprinklersWidget;
public SprinklersWidget sprinklersWidget;


public DriverActionButtons[] actionButtons;
public DriverActionButtons[] actionButtons;


public StandingsWidget[] standingsWidget;
public StandingsWidget[] standingsWidget;


public FastestLapWidget fastestLapWidget;
public FastestLapWidget fastestLapWidget;


public UISessionCommentaryWidget commentaryWidget;
public UISessionCommentaryWidget commentaryWidget;


public MinimapWidget minimapWidget;
public MinimapWidget minimapWidget;


public UIDriverInfoHUD driverInfoHUD;
public UIDriverInfoHUD driverInfoHUD;


public UISessionTeamRadioWidget sessionTeamRadionWidget;
public UISessionTeamRadioWidget sessionTeamRadionWidget;


public SessionFlagsWidget sessionFlagsWidget;
public SessionFlagsWidget sessionFlagsWidget;


public GameObject gridLights;
public GameObject gridLights;


public Animator gridLightsAnimator;
public Animator gridLightsAnimator;


public RemainingLapsWidget remainingLapsWidget;
public RemainingLapsWidget remainingLapsWidget;


public SponsorStatusChangeWidget sponsorStatusChangeWidget;
public SponsorStatusChangeWidget sponsorStatusChangeWidget;


public OutOfRaceDriverSelectionMenu outOfRaceDriverSelectMenu;
public OutOfRaceDriverSelectionMenu outOfRaceDriverSelectMenu;


public Button sabotageDriversButton;
public Button sabotageDriversButton;


public GameObject sabotageDriverContainer;
public GameObject sabotageDriverContainer;


public SessionHudStandingsWidget sessionHudStandingsWidget;
public SessionHudStandingsWidget sessionHudStandingsWidget;


public PlaybackWidget playBackWidget;
public PlaybackWidget playBackWidget;


public RollingStartWidget rollingStartWidget;
public RollingStartWidget rollingStartWidget;


public SessionWaitLeaderWidget sessionWaitLeaderWidget;
public SessionWaitLeaderWidget sessionWaitLeaderWidget;


public DriverSessionFormRollover driverSessionFormRollover;
public DriverSessionFormRollover driverSessionFormRollover;


public GameObject miniCameraViewContainer;
public GameObject miniCameraViewContainer;


public SuperSpeedSlowDownWidget miniCameraViewWidget;
public SuperSpeedSlowDownWidget miniCameraViewWidget;


public Simulation2D simulation2D;
public Simulation2D simulation2D;


[SerializeField]
[SerializeField]
private UISessionPracticeKnowledgeUnlockedWidget mPracticeKnowledgeUnlocked;
private UISessionPracticeKnowledgeUnlockedWidget mPracticeKnowledgeUnlocked;


private scSoundContainer mSoundContainer;
private scSoundContainer mSoundContainer;


private float mTimer;
private float mTimer;


private List<string> mSimulationTutorialIDS = new List<string>();
private List<string> mSimulationTutorialIDS = new List<string>();

private bool autoRace = ConsoleCommands.useAIForDrivers;

private GUIStyle toggleStyle;

public bool toggleStyleInilized;

private Rect firstRect;

private Rect secondRect;

private bool autoPit;
}
}