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.InstanceExists) { DestroyableSingleton.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().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.InstanceExists) { DestroyableSingleton.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.InstanceExists) { DestroyableSingleton.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()); } } }