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/CreateOptionsPicker.cs |
+init
Diffstat (limited to 'Client/Assembly-CSharp/CreateOptionsPicker.cs')
-rw-r--r-- | Client/Assembly-CSharp/CreateOptionsPicker.cs | 165 |
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()); + } + } +} |