summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/JoinGameButton.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-12-30 20:59:04 +0800
committerchai <chaifix@163.com>2020-12-30 20:59:04 +0800
commite9ea621b93fbb58d9edfca8375918791637bbd52 (patch)
tree19ce3b1c1f2d51eda6878c9d0f2c9edc27f13650 /Client/Assembly-CSharp/JoinGameButton.cs
+init
Diffstat (limited to 'Client/Assembly-CSharp/JoinGameButton.cs')
-rw-r--r--Client/Assembly-CSharp/JoinGameButton.cs119
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;
+ }
+}