bad-piggies-0.1.3-porting/Assets/Scripts/Assembly-CSharp/InfoPanelTutorial.cs

102 lines
2.2 KiB
C#
Raw Normal View History

2024-02-24 22:40:44 -05:00
using System.Collections;
using UnityEngine;
public class InfoPanelTutorial : WPFMonoBehaviour
{
private enum State
{
Initialized = 0,
Starting = 1,
BringingIn = 2,
Playing = 3,
Stopped = 4
}
private State m_state;
private GameObject m_background;
private float m_bringInTimer;
private void Start()
{
EventManager.Connect<GameStateChanged>(ReceiveGameStateChanged);
m_background = base.transform.FindChild("Background").gameObject;
m_background.SetActiveRecursively(false);
}
private void OnDestroy()
{
EventManager.Disconnect<GameStateChanged>(ReceiveGameStateChanged);
}
private void Update()
{
if (m_state == State.Starting)
{
m_state = State.BringingIn;
m_bringInTimer = 0f;
m_background.SetActiveRecursively(true);
m_background.transform.localScale = Vector3.zero;
}
else if (m_state == State.BringingIn)
{
m_bringInTimer += GameTime.RealTimeDelta;
if (m_bringInTimer < 0.75f)
{
float num = MathsUtil.EaseInOutQuad(m_bringInTimer, 0f, 1f, 0.75f);
m_background.transform.localScale = num * Vector3.one;
}
else
{
m_background.transform.localScale = Vector3.one;
m_state = State.Playing;
}
}
}
private void SetupTutorial()
{
m_state = State.Starting;
}
private void ReceiveGameStateChanged(GameStateChanged data)
{
if (data.state == LevelManager.GameState.Building)
{
if (m_state != State.Playing && m_state != State.BringingIn)
{
StartCoroutine(StartTutorial());
}
}
else if (data.state == LevelManager.GameState.PreviewWhileBuilding)
{
if (m_state != State.Stopped)
{
m_state = State.Initialized;
}
m_background.SetActiveRecursively(false);
}
else if (data.state == LevelManager.GameState.Running)
{
m_state = State.Stopped;
m_background.SetActiveRecursively(false);
}
}
private IEnumerator StartTutorial()
{
Vector3 cameraPosition;
do
{
cameraPosition = WPFMonoBehaviour.ingameCamera.transform.position;
yield return new WaitForSeconds(0.2f);
}
while (!(Vector3.Distance(WPFMonoBehaviour.ingameCamera.transform.position, cameraPosition) < 0.05f));
if (WPFMonoBehaviour.levelManager.gameState == LevelManager.GameState.Building)
{
SetupTutorial();
}
}
}