using System; using UnityEngine; public class UseButtonManager : MonoBehaviour { private static readonly Color DisabledColor = new Color(1f, 1f, 1f, 0.3f); private static readonly Color EnabledColor = new Color(1f, 1f, 1f, 1f); public SpriteRenderer UseButton; public Sprite UseImage; public Sprite SabotageImage; public Sprite VentImage; public Sprite AdminMapImage; public Sprite SecurityImage; public Sprite OptionsImage; private IUsable currentTarget; public void SetTarget(IUsable target) { this.currentTarget = target; if (target != null) { if (target is Vent) { this.UseButton.sprite = this.VentImage; } else if (target is MapConsole) { this.UseButton.sprite = this.AdminMapImage; } else if (target is OptionsConsole) { this.UseButton.sprite = this.OptionsImage; } else if (target is SystemConsole) { SystemConsole systemConsole = (SystemConsole)target; if (systemConsole.name.StartsWith("Surv")) { this.UseButton.sprite = this.SecurityImage; } else if (systemConsole.name.StartsWith("TaskAdd")) { this.UseButton.sprite = this.OptionsImage; } else { this.UseButton.sprite = this.UseImage; } } else { this.UseButton.sprite = this.UseImage; } this.UseButton.SetCooldownNormalizedUvs(); this.UseButton.material.SetFloat("_Percent", target.PercentCool); this.UseButton.color = UseButtonManager.EnabledColor; return; } if (PlayerControl.LocalPlayer.Data.IsImpostor && PlayerControl.LocalPlayer.CanMove) { this.UseButton.sprite = this.SabotageImage; this.UseButton.SetCooldownNormalizedUvs(); this.UseButton.color = UseButtonManager.EnabledColor; return; } this.UseButton.sprite = this.UseImage; this.UseButton.color = UseButtonManager.DisabledColor; } public void DoClick() { if (!base.isActiveAndEnabled) { return; } if (!PlayerControl.LocalPlayer) { return; } GameData.PlayerInfo data = PlayerControl.LocalPlayer.Data; if (this.currentTarget != null) { PlayerControl.LocalPlayer.UseClosest(); return; } if (data != null && data.IsImpostor) { DestroyableSingleton.Instance.ShowMap(delegate(MapBehaviour m) { m.ShowInfectedMap(); }); } } internal void Refresh() { this.SetTarget(this.currentTarget); } }