Aimbot-ParallelEnv/Assets/Script/UI/StartUIManager.cs

109 lines
3.7 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class StartUIManager : MonoBehaviour
{
[SerializeField] private int waitTimeLimit = 45;
[SerializeField] private GameObject sceneLoaderObj;
[SerializeField] private GameObject targetLevelProbabilityPanelOBJ;
[SerializeField] private TextMeshProUGUI messageTextObj;
[SerializeField] private TextMeshProUGUI waitTimeTextObj;
private SceneLoader sceneLoader;
private ButtonActivateColorChanger buttonActivateColorChanger;
private LevelProbabilityPanel startMenuProbabilityPanel;
private CommonParameterContainer commonParameterContainer;
private float startTime;
private float nowTime;
// Start is called before the first frame update
void Start()
{
sceneLoader = sceneLoaderObj.GetComponent<SceneLoader>();
buttonActivateColorChanger = GetComponent<ButtonActivateColorChanger>();
startMenuProbabilityPanel = targetLevelProbabilityPanelOBJ.GetComponent<LevelProbabilityPanel>();
commonParameterContainer = CommonParameterContainer.Instance;
messageTextObj.text = "";
buttonActivateColorChanger.InitializeAllButtonColor();
}
private void Update()
{
// update time limit left;
float leftTime = waitTimeLimit - Time.realtimeSinceStartup;
waitTimeTextObj.text = ((int)Math.Round(leftTime)).ToString();
if (leftTime <= 1)
{
// if time limit is over, end game
# if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
StopGame();
#endif
}
}
// while StartButton-Play Pressed
public void OnPlayButtonPressed()
{
commonParameterContainer.gameMode = 1;
sceneLoader.LoadGameScene(SceneLoader.SceneType.Play);
messageTextObj.text = "Loading Play Scene...";
}
public void OnAttackTrainButtonPressed()
{
// while Train-Attack-Button Pressed
commonParameterContainer.attackProb = 1f;
ApplicateProbabilityToData();
LoadTrainScene();
}
public void OnGotoTrainButtonPressed()
{
// while Train-Goto-Button Pressed
commonParameterContainer.gotoProb = 1f;
ApplicateProbabilityToData();
LoadTrainScene();
}
public void OnFreeTrainButtonPressed()
{
// while Train-Free-Button Pressed
commonParameterContainer.attackProb = 0f;
commonParameterContainer.gotoProb = 0f;
commonParameterContainer.defenceProb = 0f;
LoadTrainScene();
}
public void OnMixTrainButtonPressed()
{
// while Train-Mix-Button Pressed
commonParameterContainer.attackProb = 0.333f;
commonParameterContainer.gotoProb = 0.333f;
LoadTrainScene();
}
private void LoadTrainScene()
{
// load Train Scene
sceneLoader.LoadGameScene(SceneLoader.SceneType.Train);
messageTextObj.text = "Loading Train Scene...";
}
private void ApplicateProbabilityToData()
{
for(int targetIndex = 0;targetIndex < commonParameterContainer.scenePrefabSet.targetLevels.Length; targetIndex++)
{
Targets nowTarget = commonParameterContainer.scenePrefabSet.targets[targetIndex];
for(int levelIndex = 0; levelIndex < commonParameterContainer.scenePrefabSet.targetLevels[targetIndex].levelSize; levelIndex++)
{
commonParameterContainer.levelProbs[nowTarget] = startMenuProbabilityPanel.targetLevelProbabilityPanel[targetIndex].GetTargetProb();
}
}
}
private void StopGame()
{
// stop game,end program
Debug.Log("Game End");
Application.Quit();
}
}