diff options
author | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
commit | e9ea621b93fbb58d9edfca8375918791637bbd52 (patch) | |
tree | 19ce3b1c1f2d51eda6878c9d0f2c9edc27f13650 /Client/Assembly-CSharp/JoinGameButton.cs |
+init
Diffstat (limited to 'Client/Assembly-CSharp/JoinGameButton.cs')
-rw-r--r-- | Client/Assembly-CSharp/JoinGameButton.cs | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/JoinGameButton.cs b/Client/Assembly-CSharp/JoinGameButton.cs new file mode 100644 index 0000000..f9cea88 --- /dev/null +++ b/Client/Assembly-CSharp/JoinGameButton.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections; +using InnerNet; +using PowerTools; +using UnityEngine; + +public class JoinGameButton : MonoBehaviour, IConnectButton +{ + public AudioClip IntroMusic; + + public TextBox GameIdText; + + public TextRenderer gameNameText; + + public float timeRecieved; + + public SpriteRenderer FillScreen; + + public SpriteAnim connectIcon; + + public AnimationClip connectClip; + + public GameModes GameMode; + + public string netAddress; + + public void OnClick() + { + if (string.IsNullOrWhiteSpace(this.netAddress)) + { + return; + } + if (NameTextBehaviour.Instance.ShakeIfInvalid()) + { + return; + } + if (StatsManager.Instance.AmBanned) + { + AmongUsClient.Instance.LastDisconnectReason = DisconnectReasons.IntentionalLeaving; + DestroyableSingleton<DisconnectPopup>.Instance.Show(); + return; + } + if (!DestroyableSingleton<MatchMaker>.Instance.Connecting(this)) + { + return; + } + AmongUsClient.Instance.GameMode = this.GameMode; + if (this.GameMode == GameModes.OnlineGame) + { + AmongUsClient.Instance.SetEndpoint(DestroyableSingleton<ServerManager>.Instance.OnlineNetAddress, 22023); + AmongUsClient.Instance.MainMenuScene = "MMOnline"; + int num = InnerNetClient.GameNameToInt(this.GameIdText.text); + if (num == -1) + { + base.StartCoroutine(Effects.Shake(this.GameIdText.transform, 0.75f, 0.25f)); + DestroyableSingleton<MatchMaker>.Instance.NotConnecting(); + return; + } + AmongUsClient.Instance.GameId = num; + } + else + { + AmongUsClient.Instance.SetEndpoint(this.netAddress, 22023); + AmongUsClient.Instance.GameId = 32; + AmongUsClient.Instance.GameMode = GameModes.LocalGame; + AmongUsClient.Instance.MainMenuScene = "MatchMaking"; + } + base.StartCoroutine(this.JoinGame()); + } + + private IEnumerator JoinGame() + { + if (this.FillScreen) + { + SoundManager.Instance.CrossFadeSound("MainBG", null, 0.5f, 1.5f); + this.FillScreen.gameObject.SetActive(true); + for (float time = 0f; time < 0.25f; time += Time.deltaTime) + { + this.FillScreen.color = Color.Lerp(Color.clear, Color.black, time / 0.25f); + yield return null; + } + this.FillScreen.color = Color.black; + } + AmongUsClient.Instance.OnlineScene = "OnlineGame"; + AmongUsClient.Instance.Connect(MatchMakerModes.Client); + yield return AmongUsClient.Instance.WaitForConnectionOrFail(); + if (AmongUsClient.Instance.mode == MatchMakerModes.None) + { + if (this.FillScreen) + { + SoundManager.Instance.CrossFadeSound("MainBG", this.IntroMusic, 0.5f, 1.5f); + for (float time = 0f; time < 0.25f; time += Time.deltaTime) + { + this.FillScreen.color = Color.Lerp(Color.black, Color.clear, time / 0.25f); + yield return null; + } + this.FillScreen.color = Color.clear; + } + DestroyableSingleton<MatchMaker>.Instance.NotConnecting(); + } + yield break; + } + + public void SetGameName(string[] gameNameParts) + { + this.gameNameText.Text = gameNameParts[0] + " (" + gameNameParts[2] + "/10)"; + } + + public void StartIcon() + { + this.connectIcon.Play(this.connectClip, 1f); + } + + public void StopIcon() + { + this.connectIcon.Stop(); + this.connectIcon.GetComponent<SpriteRenderer>().sprite = null; + } +} |