summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/CreateOptionsPicker.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/CreateOptionsPicker.cs
+init
Diffstat (limited to 'Client/Assembly-CSharp/CreateOptionsPicker.cs')
-rw-r--r--Client/Assembly-CSharp/CreateOptionsPicker.cs165
1 files changed, 165 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/CreateOptionsPicker.cs b/Client/Assembly-CSharp/CreateOptionsPicker.cs
new file mode 100644
index 0000000..9210446
--- /dev/null
+++ b/Client/Assembly-CSharp/CreateOptionsPicker.cs
@@ -0,0 +1,165 @@
+using System;
+using InnerNet;
+using UnityEngine;
+
+public class CreateOptionsPicker : MonoBehaviour
+{
+ public SpriteRenderer[] MaxPlayerButtons;
+
+ public SpriteRenderer[] ImpostorButtons;
+
+ public SpriteRenderer[] LanguageButtons;
+
+ public SpriteRenderer[] MapButtons;
+
+ public SettingsMode mode;
+
+ public CrewVisualizer CrewArea;
+
+ public void Start()
+ {
+ this.MapButtons[1].gameObject.SetActive(false);
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ this.UpdateImpostorsButtons(targetOptions.NumImpostors);
+ this.UpdateMaxPlayersButtons(targetOptions);
+ this.UpdateLanguageButtons(targetOptions.Keywords & GameKeywords.AllLanguages);
+ this.UpdateMapButtons((int)targetOptions.MapId);
+ }
+
+ private GameOptionsData GetTargetOptions()
+ {
+ if (this.mode == SettingsMode.Host)
+ {
+ return SaveManager.GameHostOptions;
+ }
+ GameOptionsData gameSearchOptions = SaveManager.GameSearchOptions;
+ if (gameSearchOptions.MapId == 0)
+ {
+ gameSearchOptions.ToggleMapFilter(0);
+ SaveManager.GameSearchOptions = gameSearchOptions;
+ }
+ return gameSearchOptions;
+ }
+
+ private void SetTargetOptions(GameOptionsData data)
+ {
+ if (this.mode == SettingsMode.Host)
+ {
+ SaveManager.GameHostOptions = data;
+ return;
+ }
+ SaveManager.GameSearchOptions = data;
+ }
+
+ public void SetMaxPlayersButtons(int maxPlayers)
+ {
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ if (maxPlayers < GameOptionsData.MinPlayers[targetOptions.NumImpostors])
+ {
+ return;
+ }
+ targetOptions.MaxPlayers = maxPlayers;
+ this.SetTargetOptions(targetOptions);
+ if (DestroyableSingleton<FindAGameManager>.InstanceExists)
+ {
+ DestroyableSingleton<FindAGameManager>.Instance.ResetTimer();
+ }
+ this.UpdateMaxPlayersButtons(targetOptions);
+ }
+
+ private void UpdateMaxPlayersButtons(GameOptionsData opts)
+ {
+ if (this.CrewArea)
+ {
+ this.CrewArea.SetCrewSize(opts.MaxPlayers, opts.NumImpostors);
+ }
+ for (int i = 0; i < this.MaxPlayerButtons.Length; i++)
+ {
+ SpriteRenderer spriteRenderer = this.MaxPlayerButtons[i];
+ spriteRenderer.enabled = (spriteRenderer.name == opts.MaxPlayers.ToString());
+ spriteRenderer.GetComponentInChildren<TextRenderer>().Color = ((int.Parse(spriteRenderer.name) < GameOptionsData.MinPlayers[opts.NumImpostors]) ? Palette.DisabledGrey : Color.white);
+ }
+ }
+
+ public void SetImpostorButtons(int numImpostors)
+ {
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ targetOptions.NumImpostors = numImpostors;
+ this.SetTargetOptions(targetOptions);
+ this.SetMaxPlayersButtons(Mathf.Max(targetOptions.MaxPlayers, GameOptionsData.MinPlayers[numImpostors]));
+ this.UpdateImpostorsButtons(numImpostors);
+ }
+
+ private void UpdateImpostorsButtons(int numImpostors)
+ {
+ for (int i = 0; i < this.ImpostorButtons.Length; i++)
+ {
+ SpriteRenderer spriteRenderer = this.ImpostorButtons[i];
+ spriteRenderer.enabled = (spriteRenderer.name == numImpostors.ToString());
+ }
+ }
+
+ public void SetMap(int mapid)
+ {
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ if (this.mode == SettingsMode.Host)
+ {
+ targetOptions.MapId = (byte)mapid;
+ }
+ else
+ {
+ targetOptions.ToggleMapFilter((byte)mapid);
+ }
+ this.SetTargetOptions(targetOptions);
+ if (DestroyableSingleton<FindAGameManager>.InstanceExists)
+ {
+ DestroyableSingleton<FindAGameManager>.Instance.ResetTimer();
+ }
+ this.UpdateMapButtons(mapid);
+ }
+
+ private void UpdateMapButtons(int mapid)
+ {
+ if (this.mode == SettingsMode.Host)
+ {
+ if (this.CrewArea)
+ {
+ this.CrewArea.SetMap(mapid);
+ }
+ for (int i = 0; i < this.MapButtons.Length; i++)
+ {
+ SpriteRenderer spriteRenderer = this.MapButtons[i];
+ spriteRenderer.color = ((spriteRenderer.name == mapid.ToString()) ? Color.white : Palette.DisabledGrey);
+ }
+ return;
+ }
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ for (int j = 0; j < this.MapButtons.Length; j++)
+ {
+ SpriteRenderer spriteRenderer2 = this.MapButtons[j];
+ spriteRenderer2.color = (targetOptions.FilterContainsMap(byte.Parse(spriteRenderer2.name)) ? Color.white : Palette.DisabledGrey);
+ }
+ }
+
+ public void SetLanguageFilter(int keyword)
+ {
+ GameOptionsData targetOptions = this.GetTargetOptions();
+ targetOptions.Keywords &= ~GameKeywords.AllLanguages;
+ targetOptions.Keywords |= (GameKeywords)keyword;
+ this.SetTargetOptions(targetOptions);
+ if (DestroyableSingleton<FindAGameManager>.InstanceExists)
+ {
+ DestroyableSingleton<FindAGameManager>.Instance.ResetTimer();
+ }
+ this.UpdateLanguageButtons((GameKeywords)keyword);
+ }
+
+ private void UpdateLanguageButtons(GameKeywords button)
+ {
+ for (int i = 0; i < this.LanguageButtons.Length; i++)
+ {
+ SpriteRenderer spriteRenderer = this.LanguageButtons[i];
+ spriteRenderer.enabled = (spriteRenderer.name == button.ToString());
+ }
+ }
+}