From 667234a8557db879e30acc85c929873155ae6cb9 Mon Sep 17 00:00:00 2001 From: Mytiaoga <32819046+Mytiaoga@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:21:17 +0800 Subject: [PATCH] First Contact - slight change on Mission Control --- .../Games/FirstContact/FirstContact.cs | 714 +++++++++--------- .../Games/FirstContact/FirstContact.cs.meta | 22 +- 2 files changed, 367 insertions(+), 369 deletions(-) diff --git a/Assets/Scripts/Games/FirstContact/FirstContact.cs b/Assets/Scripts/Games/FirstContact/FirstContact.cs index 76d0a400..c39216fe 100644 --- a/Assets/Scripts/Games/FirstContact/FirstContact.cs +++ b/Assets/Scripts/Games/FirstContact/FirstContact.cs @@ -1,358 +1,356 @@ -using System.Collections.Generic; -using UnityEngine; -using HeavenStudio.Util; - -namespace HeavenStudio.Games.Loaders -{ - using static Minigames; - public static class CtrFirstContact - { - public static Minigame AddGame(EventCaller eventCaller) - { - return new Minigame("firstContact", "First Contact", "008c97", false, false, new List() - { - new GameAction("beat intervals", delegate { FirstContact.instance.SetIntervalStart(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 4f, true), - new GameAction("alien speak", delegate { FirstContact.instance.alienSpeak(eventCaller.currentEntity.beat, eventCaller.currentEntity.valA); }, 0.5f, false, new List() - { - new Param("valA", new EntityTypes.Float(.8f, 1.5f, 1f), "Pitch") - }), - new GameAction("alien turnover", delegate { FirstContact.instance.alienTurnOver(eventCaller.currentEntity.beat); }, 0.5f, false), - new GameAction("alien success", delegate { FirstContact.instance.alienSuccess(eventCaller.currentEntity.beat); }, 1f, false), - new GameAction("mission control", delegate { FirstContact.instance.missionControlDisplay(eventCaller.currentEntity.beat, eventCaller.currentEntity.toggle, eventCaller.currentEntity.length); }, 1f, true, new List - { - new Param("toggle", false, "Stay", "If it's the end of the remix/song") - }), - new GameAction("look at", delegate { FirstContact.instance.lookAtDirection(eventCaller.currentEntity.type, eventCaller.currentEntity.type2); }, .5f, false, new List() - { - new Param("type", FirstContact.alienLookAt.lookAtTranslator, "alien look at what", "[Alien] will look at what"), - new Param("type", FirstContact.translatorLookAt.lookAtAlien, "translator look at what", "[Translator] will look at what"), - }), - - //new GameAction("Version of First Contact", delegate { FirstContact.instance.versionOfFirstContact(eventCaller.currentEntity.type); }, .5f, false, new List - //{ - // new Param("type", FirstContact.VersionOfContact.FirstContact, "Version", "Version of First Contact to play"), - //}), - }); - } - } -} - -namespace HeavenStudio.Games -{ - //using Scripts_FirstContact; - - public class FirstContact : Minigame - { - public static FirstContact instance { get; private set; } - - [Header("Properties")] - public int alienSpeakCount; - public int translatorSpeakCount; - public bool hasMissed; - private float lastReportedBeat = 0; - - [Header("Components")] - [SerializeField] GameObject alien; - [SerializeField] GameObject translator; - //[SerializeField] GameObject alienSpeech; - [SerializeField] GameObject dummyHolder; - [SerializeField] GameObject missionControl; - [SerializeField] GameObject liveBar; - - [Header("Variables")] - public bool intervalStarted; - //float intervalStartBeat; - public float beatInterval = 4f; - public bool isCorrect, noHitOnce, isSpeaking; - //public int version; - public float lookAtLength = 1f; - - - //public enum VersionOfContact - //{ - // FirstContact, - // CitrusRemix, - // SecondContact - //} - - public enum alienLookAt - { - lookAtTranslator, - idle - } - - public enum translatorLookAt - { - lookAtAlien, - idle - } - - private void Awake() - { - instance = this; - } - - public void SetIntervalStart(float beat, float interval = 4f) - { - if (!intervalStarted) - { - //alienSpeakCount = 0; - //translatorSpeakCount = 0; - intervalStarted = true; - } - - //intervalStartBeat = beat; - beatInterval = interval; - } - - private void Update() - { - //This is taken from the conductor script - if (Conductor.instance.ReportBeat(ref lastReportedBeat)) - { - liveBar.GetComponent().Play("liveBar", 0, 0); - } - else if(Conductor.instance.songPositionInBeats < lastReportedBeat) - { - lastReportedBeat = Mathf.Round(Conductor.instance.songPositionInBeats); - } - - if (PlayerInput.Pressed() && !IsExpectingInputNow() && !noHitOnce && !isSpeaking) - { - Jukebox.PlayOneShotGame("firstContact/" + randomizerLines()); - BeatAction.New(this.gameObject, new List() - { - new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_speak", 0, 0);}), - }); - } - if ((PlayerInput.Pressed() && !IsExpectingInputNow() && isSpeaking)) - { - hasMissed = true; - } - } - - //public void versionOfFirstContact(int type) - //{ - // version = type; - //} - - public void lookAtDirection(int alienLookAt, int translatorLookAt) - { - switch (alienLookAt) - { - case 0: - alien.GetComponent().Play("alien_lookAt", 0, 0); - break; - case 1: - alien.GetComponent().Play("alien_idle", 0, 0); - break; - } - - switch (translatorLookAt) - { - case 0: - translator.GetComponent().Play("translator_lookAtAlien", 0, 0); - break; - case 1: - translator.GetComponent().Play("translator_idle", 0, 0); - break; - } - - } - - public void alienSpeak(float beat, float pitch) - { - Jukebox.PlayOneShotGame("firstContact/alien", beat, pitch); - ++alienSpeakCount; - var random = Random.Range(0, 2); - string textToPut = ""; - if(random == 0) - { - textToPut = "translator_lookAtAlien"; - } - else - { - textToPut = "translator_lookAtAlien_nod"; - } - - ScheduleInput(beat, beatInterval, InputType.STANDARD_DOWN, alienTapping, alienOnMiss, AlienEmpty); - - BeatAction.New(alien, new List() - { - new BeatAction.Action(beat, delegate { alien.GetComponent().Play("alien_talk", 0, 0); }), - new BeatAction.Action(beat, delegate - { - if (!isSpeaking) - { - translator.GetComponent().Play(textToPut, 0, 0); - } - }), - }); - } - - public void alienTurnOver(float beat) - { - if (!intervalStarted) - { - SetIntervalStart(beat, beatInterval); - } - if (intervalStarted) - { - SetIntervalStart(beat, beatInterval); - } - - Jukebox.PlayOneShotGame("firstContact/turnover"); - - BeatAction.New(alien, new List() - { - new BeatAction.Action(beat, delegate { alien.GetComponent().Play("alien_point", 0, 0); }), - new BeatAction.Action(beat + .5f, delegate { alien.GetComponent().Play("alien_idle", 0, 0); }), - new BeatAction.Action(beat + .5f, - delegate - { - if (!isSpeaking) - { - translator.GetComponent().Play("translator_idle", 0, 0); - } - }) - }); - - isSpeaking = true; - } - - public void alienSuccess(float beat) - { - string[] sfxStrings = { "", "" }; - string animString = ""; - - if (alienSpeakCount == translatorSpeakCount) - { - sfxStrings[0] = "firstContact/success_1"; - sfxStrings[1] = "firstContact/success_2"; - animString = "alien_success"; - Debug.Log("success"); - } - else if (alienSpeakCount != translatorSpeakCount) - { - sfxStrings[0] = "firstContact/failAlien_1"; - sfxStrings[1] = "firstContact/failAlien_2"; - animString = "alien_fail"; - Debug.Log("fail"); - } - - string[] sounds = new string[] { sfxStrings[0], sfxStrings[0] }; - var sound = new MultiSound.Sound[] - { - new MultiSound.Sound(sounds[0], beat), - new MultiSound.Sound(sounds[1], beat + .5f) - }; - - MultiSound.Play(sound); - - BeatAction.New(alien, new List() - { - new BeatAction.Action(beat, delegate { alien.GetComponent().Play(animString, 0, 0); }), - new BeatAction.Action(beat + .5f, delegate { alien.GetComponent().Play(animString, 0, 0); }) - }); - - BeatAction.New(translator.gameObject, new List() - { - new BeatAction.Action(beat, delegate { translator.GetComponent().Play("translator_idle", 0, 0); }), - }); - - - alienSpeakCount = 0; - translatorSpeakCount = 0; - isSpeaking = false; - hasMissed = false; - noHitOnce = false; - } - - public void missionControlDisplay(float beat, bool stay, float length) - { - missionControl.SetActive(true); - string textToPut = ""; - - if (alienSpeakCount == translatorSpeakCount) - { - textToPut = "missionControl_success"; - } - else - { - textToPut = "missionControl_fail"; - } - - BeatAction.New(missionControl, new List() - { - new BeatAction.Action(length, delegate { missionControl.GetComponentInParent().Play(textToPut, 0, 0); }), - new BeatAction.Action(length, delegate { alien.GetComponentInParent().Play("alien_idle", 0, 0); }), - new BeatAction.Action(length, delegate { translator.GetComponent().Play("translator_idle", 0, 0); }), - - }); - - if (!stay) - { - BeatAction.New(missionControl, new List() - { - new BeatAction.Action(length + 1f, delegate { missionControl.SetActive(false); }), - }); - } - else - { - missionControl.SetActive(true); - } - - alienSpeakCount = 0; - translatorSpeakCount = 0; - isSpeaking = false; - } - - public void alienTapping(PlayerActionEvent caller, float beat) //OnHit - { - if (!noHitOnce) - { - ++translatorSpeakCount; - Jukebox.PlayOneShotGame("firstContact/" + randomizerLines()); - isCorrect = true; - - BeatAction.New(this.gameObject, new List() - { - new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_speak", 0, 0);}), - }); - } - else if (noHitOnce) - { - Jukebox.PlayOneShotGame("firstContact/slightlyFail"); - BeatAction.New(this.gameObject, new List() - { - new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_eh", 0, 0);}), - }); - } - } - - public void alienOnMiss(PlayerActionEvent caller) //OnMiss - { - if (!noHitOnce) - { - Jukebox.PlayOneShotGame("firstContact/alienNoHit"); - noHitOnce = true; - } - - BeatAction.New(alien, new List() - { - new BeatAction.Action(.5f, delegate { alien.GetComponent().Play("alien_noHit", 0, 0); }), - }); - } - - public void AlienEmpty(PlayerActionEvent caller) //OnEmpty - { - //empty - } - - public int randomizerLines() - { - return Random.Range(1, 11); - } - } -} - +using System.Collections.Generic; +using UnityEngine; +using HeavenStudio.Util; + +namespace HeavenStudio.Games.Loaders +{ + using static Minigames; + public static class CtrFirstContact + { + public static Minigame AddGame(EventCaller eventCaller) + { + return new Minigame("firstContact", "First Contact", "008c97", false, false, new List() + { + new GameAction("beat intervals", delegate { FirstContact.instance.SetIntervalStart(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 4f, true), + new GameAction("alien speak", delegate { FirstContact.instance.alienSpeak(eventCaller.currentEntity.beat, eventCaller.currentEntity.valA); }, 0.5f, false, new List() + { + new Param("valA", new EntityTypes.Float(.8f, 1.5f, 1f), "Pitch") + }), + new GameAction("alien turnover", delegate { FirstContact.instance.alienTurnOver(eventCaller.currentEntity.beat); }, 0.5f, false), + new GameAction("alien success", delegate { FirstContact.instance.alienSuccess(eventCaller.currentEntity.beat); }, 1f, false), + new GameAction("mission control", delegate { FirstContact.instance.missionControlDisplay(eventCaller.currentEntity.beat, eventCaller.currentEntity.toggle, eventCaller.currentEntity.length); }, 1f, true, new List + { + new Param("toggle", false, "Stay", "If it's the end of the remix/song") + }), + new GameAction("look at", delegate { FirstContact.instance.lookAtDirection(eventCaller.currentEntity.type, eventCaller.currentEntity.type2); }, .5f, false, new List() + { + new Param("type", FirstContact.alienLookAt.lookAtTranslator, "alien look at what", "[Alien] will look at what"), + new Param("type", FirstContact.translatorLookAt.lookAtAlien, "translator look at what", "[Translator] will look at what"), + }), + + //new GameAction("Version of First Contact", delegate { FirstContact.instance.versionOfFirstContact(eventCaller.currentEntity.type); }, .5f, false, new List + //{ + // new Param("type", FirstContact.VersionOfContact.FirstContact, "Version", "Version of First Contact to play"), + //}), + }); + } + } +} + +namespace HeavenStudio.Games +{ + //using Scripts_FirstContact; + + public class FirstContact : Minigame + { + public static FirstContact instance { get; private set; } + + [Header("Properties")] + public int alienSpeakCount; + public int translatorSpeakCount; + public bool hasMissed; + private float lastReportedBeat = 0; + + [Header("Components")] + [SerializeField] GameObject alien; + [SerializeField] GameObject translator; + //[SerializeField] GameObject alienSpeech; + [SerializeField] GameObject dummyHolder; + [SerializeField] GameObject missionControl; + [SerializeField] GameObject liveBar; + + [Header("Variables")] + public bool intervalStarted; + //float intervalStartBeat; + public float beatInterval = 4f; + public bool isCorrect, noHitOnce, isSpeaking; + //public int version; + public float lookAtLength = 1f; + + + //public enum VersionOfContact + //{ + // FirstContact, + // CitrusRemix, + // SecondContact + //} + + public enum alienLookAt + { + lookAtTranslator, + idle + } + + public enum translatorLookAt + { + lookAtAlien, + idle + } + + private void Awake() + { + instance = this; + } + + public void SetIntervalStart(float beat, float interval = 4f) + { + if (!intervalStarted) + { + //alienSpeakCount = 0; + //translatorSpeakCount = 0; + intervalStarted = true; + } + + //intervalStartBeat = beat; + beatInterval = interval; + } + + private void Update() + { + //This is taken from the conductor script + if (Conductor.instance.ReportBeat(ref lastReportedBeat)) + { + liveBar.GetComponent().Play("liveBar", 0, 0); + } + else if(Conductor.instance.songPositionInBeats < lastReportedBeat) + { + lastReportedBeat = Mathf.Round(Conductor.instance.songPositionInBeats); + } + + if (PlayerInput.Pressed() && !IsExpectingInputNow() && !noHitOnce && !isSpeaking) + { + Jukebox.PlayOneShotGame("firstContact/" + randomizerLines()); + BeatAction.New(this.gameObject, new List() + { + new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_speak", 0, 0);}), + }); + } + if ((PlayerInput.Pressed() && !IsExpectingInputNow() && isSpeaking)) + { + hasMissed = true; + } + } + + //public void versionOfFirstContact(int type) + //{ + // version = type; + //} + + public void lookAtDirection(int alienLookAt, int translatorLookAt) + { + switch (alienLookAt) + { + case 0: + alien.GetComponent().Play("alien_lookAt", 0, 0); + break; + case 1: + alien.GetComponent().Play("alien_idle", 0, 0); + break; + } + + switch (translatorLookAt) + { + case 0: + translator.GetComponent().Play("translator_lookAtAlien", 0, 0); + break; + case 1: + translator.GetComponent().Play("translator_idle", 0, 0); + break; + } + + } + + public void alienSpeak(float beat, float pitch) + { + Jukebox.PlayOneShotGame("firstContact/alien", beat, pitch); + ++alienSpeakCount; + var random = Random.Range(0, 2); + string textToPut = ""; + if(random == 0) + { + textToPut = "translator_lookAtAlien"; + } + else + { + textToPut = "translator_lookAtAlien_nod"; + } + + ScheduleInput(beat, beatInterval, InputType.STANDARD_DOWN, alienTapping, alienOnMiss, AlienEmpty); + + BeatAction.New(alien, new List() + { + new BeatAction.Action(beat, delegate { alien.GetComponent().Play("alien_talk", 0, 0); }), + new BeatAction.Action(beat, delegate + { + if (!isSpeaking) + { + translator.GetComponent().Play(textToPut, 0, 0); + } + }), + }); + } + + public void alienTurnOver(float beat) + { + if (!intervalStarted) + { + SetIntervalStart(beat, beatInterval); + } + if (intervalStarted) + { + SetIntervalStart(beat, beatInterval); + } + + Jukebox.PlayOneShotGame("firstContact/turnover"); + + BeatAction.New(alien, new List() + { + new BeatAction.Action(beat, delegate { alien.GetComponent().Play("alien_point", 0, 0); }), + new BeatAction.Action(beat + .5f, delegate { alien.GetComponent().Play("alien_idle", 0, 0); }), + new BeatAction.Action(beat + .5f, + delegate + { + if (!isSpeaking) + { + translator.GetComponent().Play("translator_idle", 0, 0); + } + }) + }); + + isSpeaking = true; + } + + public void alienSuccess(float beat) + { + string[] sfxStrings = { "", "" }; + string animString = ""; + + if (alienSpeakCount == translatorSpeakCount) + { + sfxStrings[0] = "firstContact/success_1"; + sfxStrings[1] = "firstContact/success_2"; + animString = "alien_success"; + } + else if (alienSpeakCount != translatorSpeakCount) + { + sfxStrings[0] = "firstContact/failAlien_1"; + sfxStrings[1] = "firstContact/failAlien_2"; + animString = "alien_fail"; + } + + string[] sounds = new string[] { sfxStrings[0], sfxStrings[0] }; + var sound = new MultiSound.Sound[] + { + new MultiSound.Sound(sounds[0], beat), + new MultiSound.Sound(sounds[1], beat + .5f) + }; + + MultiSound.Play(sound); + + BeatAction.New(alien, new List() + { + new BeatAction.Action(beat, delegate { alien.GetComponent().Play(animString, 0, 0); }), + new BeatAction.Action(beat + .5f, delegate { alien.GetComponent().Play(animString, 0, 0); }) + }); + + BeatAction.New(translator.gameObject, new List() + { + new BeatAction.Action(beat, delegate { translator.GetComponent().Play("translator_idle", 0, 0); }), + }); + + + alienSpeakCount = 0; + translatorSpeakCount = 0; + isSpeaking = false; + hasMissed = false; + noHitOnce = false; + } + + public void missionControlDisplay(float beat, bool stay, float length) + { + missionControl.SetActive(true); + string textToPut = ""; + + if (alienSpeakCount == translatorSpeakCount) + { + textToPut = "missionControl_success"; + } + else + { + textToPut = "missionControl_fail"; + } + + BeatAction.New(missionControl, new List() + { + new BeatAction.Action(length, delegate { missionControl.GetComponentInParent().Play(textToPut, 0, 0); }), + new BeatAction.Action(length, delegate { alien.GetComponentInParent().Play("alien_idle", 0, 0); }), + new BeatAction.Action(length, delegate { translator.GetComponent().Play("translator_idle", 0, 0); }), + + }); + + if (!stay) + { + BeatAction.New(missionControl, new List() + { + new BeatAction.Action(length, delegate { missionControl.SetActive(false); }), + }); + } + else + { + missionControl.SetActive(true); + } + + alienSpeakCount = 0; + translatorSpeakCount = 0; + isSpeaking = false; + } + + public void alienTapping(PlayerActionEvent caller, float beat) //OnHit + { + if (!noHitOnce) + { + ++translatorSpeakCount; + Jukebox.PlayOneShotGame("firstContact/" + randomizerLines()); + isCorrect = true; + + BeatAction.New(this.gameObject, new List() + { + new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_speak", 0, 0);}), + }); + } + else if (noHitOnce) + { + Jukebox.PlayOneShotGame("firstContact/slightlyFail"); + BeatAction.New(this.gameObject, new List() + { + new BeatAction.Action(.5f, delegate { translator.GetComponent().Play("translator_eh", 0, 0);}), + }); + } + } + + public void alienOnMiss(PlayerActionEvent caller) //OnMiss + { + if (!noHitOnce) + { + Jukebox.PlayOneShotGame("firstContact/alienNoHit"); + noHitOnce = true; + } + + BeatAction.New(alien, new List() + { + new BeatAction.Action(.5f, delegate { alien.GetComponent().Play("alien_noHit", 0, 0); }), + }); + } + + public void AlienEmpty(PlayerActionEvent caller) //OnEmpty + { + //empty + } + + public int randomizerLines() + { + return Random.Range(1, 11); + } + } +} + diff --git a/Assets/Scripts/Games/FirstContact/FirstContact.cs.meta b/Assets/Scripts/Games/FirstContact/FirstContact.cs.meta index c94df2fb..407017ac 100644 --- a/Assets/Scripts/Games/FirstContact/FirstContact.cs.meta +++ b/Assets/Scripts/Games/FirstContact/FirstContact.cs.meta @@ -1,11 +1,11 @@ -fileFormatVersion: 2 -guid: 3f2575369f43af4419d4d92d0de9e23b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: +fileFormatVersion: 2 +guid: 3f2575369f43af4419d4d92d0de9e23b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: