diff options
Diffstat (limited to 'Client/Assembly-CSharp/NumberOption.cs')
-rw-r--r-- | Client/Assembly-CSharp/NumberOption.cs | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/NumberOption.cs b/Client/Assembly-CSharp/NumberOption.cs new file mode 100644 index 0000000..ebe2f94 --- /dev/null +++ b/Client/Assembly-CSharp/NumberOption.cs @@ -0,0 +1,111 @@ +using System; +using UnityEngine; + +public class NumberOption : OptionBehaviour +{ + public TextRenderer TitleText; + + public TextRenderer ValueText; + + public float Value = 1f; + + private float oldValue = float.MaxValue; + + public float Increment; + + public FloatRange ValidRange = new FloatRange(0f, 2f); + + public string FormatString = "{0:0.0}x"; + + public bool ZeroIsInfinity; + + public void OnEnable() + { + this.TitleText.Text = DestroyableSingleton<TranslationController>.Instance.GetString(this.Title, Array.Empty<object>()); + this.ValueText.Text = string.Format(this.FormatString, this.Value); + GameOptionsData gameOptions = PlayerControl.GameOptions; + StringNames title = this.Title; + switch (title) + { + case StringNames.GameNumImpostors: + this.Value = (float)gameOptions.NumImpostors; + return; + case StringNames.GameNumMeetings: + this.Value = (float)gameOptions.NumEmergencyMeetings; + return; + case StringNames.GameDiscussTime: + this.Value = (float)gameOptions.DiscussionTime; + return; + case StringNames.GameVotingTime: + this.Value = (float)gameOptions.VotingTime; + return; + case StringNames.GamePlayerSpeed: + this.Value = gameOptions.PlayerSpeedMod; + return; + case StringNames.GameCrewLight: + this.Value = gameOptions.CrewLightMod; + return; + case StringNames.GameImpostorLight: + this.Value = gameOptions.ImpostorLightMod; + return; + case StringNames.GameKillCooldown: + this.Value = gameOptions.KillCooldown; + return; + case StringNames.GameKillDistance: + break; + case StringNames.GameCommonTasks: + this.Value = (float)gameOptions.NumCommonTasks; + return; + case StringNames.GameLongTasks: + this.Value = (float)gameOptions.NumLongTasks; + return; + case StringNames.GameShortTasks: + this.Value = (float)gameOptions.NumShortTasks; + return; + default: + if (title == StringNames.GameEmergencyCooldown) + { + this.Value = (float)gameOptions.EmergencyCooldown; + return; + } + break; + } + Debug.Log("Ono, unrecognized setting: " + this.Title); + } + + private void FixedUpdate() + { + if (this.oldValue != this.Value) + { + this.oldValue = this.Value; + if (this.ZeroIsInfinity && Mathf.Abs(this.Value) < 0.0001f) + { + this.ValueText.Text = string.Format(this.FormatString, "∞"); + return; + } + this.ValueText.Text = string.Format(this.FormatString, this.Value); + } + } + + public void Increase() + { + this.Value = this.ValidRange.Clamp(this.Value + this.Increment); + this.OnValueChanged(this); + } + + public void Decrease() + { + this.Value = this.ValidRange.Clamp(this.Value - this.Increment); + this.OnValueChanged(this); + } + + public override float GetFloat() + { + return this.Value; + } + + public override int GetInt() + { + return (int)this.Value; + } +} |