using System; using System.Collections; using InnerNet; using PowerTools; using UnityEngine; public class CreateGameOptions : MonoBehaviour, IConnectButton { public AudioClip IntroMusic; public GameObject Content; public SpriteRenderer Foreground; public SpriteAnim connectIcon; public AnimationClip connectClip; public void Show() { if (NameTextBehaviour.Instance.ShakeIfInvalid()) { return; } if (StatsManager.Instance.AmBanned) { AmongUsClient.Instance.LastDisconnectReason = DisconnectReasons.IntentionalLeaving; DestroyableSingleton.Instance.Show(); return; } base.gameObject.SetActive(true); this.Content.SetActive(false); base.StartCoroutine(this.CoShow()); } private IEnumerator CoShow() { yield return Effects.ColorFade(this.Foreground, Color.clear, Color.black, 0.1f); this.Content.SetActive(true); yield return Effects.ColorFade(this.Foreground, Color.black, Color.clear, 0.1f); yield break; } public void StartIcon() { if (!this.connectIcon) { return; } this.connectIcon.Play(this.connectClip, 1f); } public void StopIcon() { if (!this.connectIcon) { return; } this.connectIcon.Stop(); this.connectIcon.GetComponent().sprite = null; } public void Hide() { base.StartCoroutine(this.CoHide()); } private IEnumerator CoHide() { yield return Effects.ColorFade(this.Foreground, Color.clear, Color.black, 0.1f); this.Content.SetActive(false); yield return Effects.ColorFade(this.Foreground, Color.black, Color.clear, 0.1f); base.gameObject.SetActive(false); yield break; } public void Confirm() { if (!DestroyableSingleton.Instance.Connecting(this)) { return; } base.StartCoroutine(this.CoStartGame()); } private IEnumerator CoStartGame() { SoundManager.Instance.CrossFadeSound("MainBG", null, 0.5f, 1.5f); yield return Effects.ColorFade(this.Foreground, Color.clear, Color.black, 0.2f); AmongUsClient.Instance.GameMode = GameModes.OnlineGame; AmongUsClient.Instance.SetEndpoint(DestroyableSingleton.Instance.OnlineNetAddress, 22023); AmongUsClient.Instance.MainMenuScene = "MMOnline"; AmongUsClient.Instance.OnlineScene = "OnlineGame"; AmongUsClient.Instance.Connect(MatchMakerModes.HostAndClient); yield return AmongUsClient.Instance.WaitForConnectionOrFail(); DestroyableSingleton.Instance.NotConnecting(); if (AmongUsClient.Instance.mode == MatchMakerModes.None) { SoundManager.Instance.CrossFadeSound("MainBG", this.IntroMusic, 0.5f, 1.5f); yield return Effects.ColorFade(this.Foreground, Color.black, Color.clear, 0.2f); } yield break; } }