SHADE_Y3/Assets/Scripts/Gameplay/SC_GameManager.cs

161 lines
4.7 KiB
C#
Raw Normal View History

using SHADE;
2023-02-03 00:40:22 +08:00
using SHADE_Scripting.Audio;
using System;
using System.Collections.Generic;
public class GameManager : Script
{
public enum GameState
{
START,
WIN,
LOSE
}
public uint winScene = 92009475;
public uint loseScene = 91685359;
[NonSerialized]
public GameState currGameState;
[NonSerialized]
public int totalItemCount;
[NonSerialized]
public int Score;
[NonSerialized]
public float timer;
2022-11-23 20:26:53 +08:00
public GameObject scoreText;
public GameObject timeText;
//mulitpler info
public GameObject multiplierText;
public float maxMultiplierDuration = 5.0f;
public float currMultiplierDuration { get; set; }
public int maxMultiplierCombo = 10;
public bool itemScored {get;set;}
public int currMultiplierCombo { get; set;}
public float multiplierFont = 60.0f;
private Vector3 fontScalar;
public static GameManager Instance { get; private set; }
//public static int highScore { get; private set; } maybe need
public bool GamePause { get; set; }
2022-11-23 20:26:53 +08:00
2023-02-04 01:44:00 +08:00
protected override void start()
{
2023-02-04 01:44:00 +08:00
base.start();
2023-02-03 00:40:22 +08:00
AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive");
AudioHandler.audioClipHandlers["BGMAdaptive"].Play();
2023-02-04 01:44:00 +08:00
2023-02-04 00:23:05 +08:00
Audio.SetParameter("Detected", 0.0f);
2023-02-04 01:44:00 +08:00
2023-02-04 00:23:05 +08:00
AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen");
AudioHandler.audioClipHandlers["KitchenAmbience"].Play();
2023-02-04 01:44:00 +08:00
2023-02-04 00:23:05 +08:00
AudioHandler.audioClipHandlers["SFXHumming"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_humming");
AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f);
AudioHandler.audioClipHandlers["SFXHumming"].Play();
2023-02-04 01:44:00 +08:00
}
protected override void awake()
{
if (Instance != null && Instance != this)
RemoveScript<GameManager>();
else
Instance = this;
//AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f);
//Audio.PlayBGMOnce2D("event:/Music/player_undetected");
//Audio.PlayBGMOnce2D("event:/Ambience/roomtone_kitchen");
totalItemCount = 0;
Score = 0;
currGameState = GameState.START;
itemScored = false;
currMultiplierCombo = 1;
currMultiplierDuration = 0;
fontScalar = new Vector3(multiplierFont / maxMultiplierDuration, multiplierFont / maxMultiplierDuration , multiplierFont / maxMultiplierDuration);
2023-02-04 00:23:05 +08:00
AudioHandler.audioClipHandlers["BGMWin"] = Audio.CreateAudioClip("event:/Music/stingers/game_win");
AudioHandler.audioClipHandlers["BGMLose"] = Audio.CreateAudioClip("event:/Music/stingers/game_lose");
}
protected override void update()
{
if (GamePause)
{
return;
}
2022-11-23 20:26:53 +08:00
if (currGameState == GameState.START)
{
timer -= Time.DeltaTimeF;
2022-11-23 20:26:53 +08:00
if(scoreText)
scoreText.GetComponent<TextRenderable>().Text = $"Score: {Score}";
if(timeText)
timeText.GetComponent<TextRenderable>().Text = $"Time Left: {timer.ToString("0.00")}";
if (itemScored)
{
multiplierText.GetComponent<TextRenderable>().Text = $"X {currMultiplierCombo}";
multiplierText.GetComponent<Transform>().LocalScale -= fontScalar * Time.DeltaTimeF;
currMultiplierDuration += Time.DeltaTimeF;
if (currMultiplierDuration >= maxMultiplierDuration)
{
itemScored = false;
currMultiplierCombo = 1;
currMultiplierDuration = 0;
}
}
else
{
multiplierText.GetComponent<Transform>().LocalScale = Vector3.Zero;
}
if ((timer > 0 && totalItemCount <= 0) || Input.GetKeyDown(Input.KeyCode.F1))
{
currGameState = GameState.WIN;
2023-02-04 01:44:00 +08:00
//Audio.StopAllSounds(); //Calling this outright breaks audio clip handlers
AudioHandler.stopAllSounds(false);
AudioHandler.audioClipHandlers["BGMWin"].Play();
SceneManager.ChangeScene(winScene);
2023-02-04 00:23:05 +08:00
//Audio.PlaySFXOnce2D("event:/Music/stingers/game_win");
2023-02-04 01:44:00 +08:00
}
else if(timer < 0 || Input.GetKeyDown(Input.KeyCode.F2))
2022-11-23 20:26:53 +08:00
{
currGameState = GameState.LOSE;
2023-02-04 01:44:00 +08:00
//Audio.StopAllSounds();
AudioHandler.stopAllSounds(false);
AudioHandler.audioClipHandlers["BGMLose"].Play();
2022-11-23 20:26:53 +08:00
SceneManager.ChangeScene(loseScene);
2023-02-04 00:23:05 +08:00
//Audio.PlaySFXOnce2D("event:/Music/stingers/game_lose");
2023-02-04 01:44:00 +08:00
2022-11-23 20:26:53 +08:00
}
}
}
protected override void onDestroy()
{
if (Instance == this)
Instance = null;
}
public void ItemScored()
{
totalItemCount -= 1;
itemScored = true;
currMultiplierDuration = 0;
multiplierText.GetComponent<Transform>().LocalScale = new Vector3(multiplierFont, multiplierFont, multiplierFont);
if (currMultiplierCombo < maxMultiplierCombo)
currMultiplierCombo += 1;
}
}