public void ShowList(Object sender, EventArgs e)
        {
            LinkButton btn = (LinkButton)sender;

            SqlDataSource1.SelectCommand = "SELECT LEAVE.id, LEAVE.start, LEAVE.days, LEAVE.reason, LEAVE.status from LEAVE WHERE empid = @userId AND status = @status ORDER BY LEAVE.start DESC";
            void switchView(Status.Type status, string text)
            {
                LblStatus.Text = text.ToUpper();
                currentStatus  = status;
                SqlDataSource1.SelectParameters["status"].DefaultValue = ((int)status).ToString();
                Repeater1.DataBind();
            }

            switch (btn.CommandArgument)
            {
            case "pending":
                switchView(Status.Type.Pending, "Pending");
                break;

            case "approved":
                switchView(Status.Type.Approved, "Approved");
                break;

            case "rejected":
                switchView(Status.Type.Rejected, "Rejected");
                break;

            case "cancelled":
                switchView(Status.Type.Cancelled, "Cancelled");
                break;

            default:
                break;
            }
        }
        public Status GetStatus(Status.Type type)
        {
            if (playerStatus.ContainsKey(type))
            {
                return(playerStatus[type]);
            }

            throw new UnityException($"No such status[{type}] available");
        }
        private void StatWarningBubble(Status.Type status)
        {
            if (ThoughtBubbleSpawner.Instance.LastBubbleCD)
            {
                return;
            }

            if (statusCooldown.ContainsKey(status))
            {
                if (statusCooldown[status] > 0)
                {
                    return;
                }
                statusCooldown[status] = CooldownTime;
                ResetRandomFloat();
            }
            else
            {
                statusCooldown.Add(status, CooldownTime);
            }

            int warningSprite = -1;;

            switch (status)
            {
            case Status.Type.Health:
                warningSprite = 0;
                break;

            case Status.Type.Energy:
                warningSprite = 1;
                break;

            case Status.Type.Mood:
                warningSprite = 2;
                break;

            case Status.Type.Hygiene:
                warningSprite = 3;
                break;

            case Status.Type.Bladder:
                warningSprite = 4;
                break;

            case Status.Type.Thirst:
                warningSprite = 5;
                break;

            case Status.Type.Hunger:
                warningSprite = 6;
                break;
            }
            ThoughtBubbleSpawner.Instance.SpawnBubble(Player.gameObject.transform, Player.gameObject.transform.position, status, null, warningSprite);
        }
        private static float StatBuffModifier(Status.Type type, float amount)
        {
            switch (type)
            {
            case Status.Type.Mood when amount > 0 && PlayerBuff.HasBuff <Freedom>():
                var statIncModifier = new StatIncreaseArgs(amount);
                PlayerBuff.GetBuff <Freedom>()?.TakeEffect(statIncModifier);
                amount = statIncModifier.Amount;
                break;

            case Status.Type.Health when PlayerBuff.HasBuff <Suppression>():
            {
                var statDecModifier = new StatDecreaseArgs(amount);
                PlayerBuff.GetBuff <Suppression>()?.TakeEffect(statDecModifier);
                amount = statDecModifier.Amount;
                break;
            }
            }

            return(amount);
        }
 public float GetStatusAmount(Status.Type type)
 {
     return(playerStatus[type].CurrentAmount);
 }
 public void AddStatusAmount(Status.Type type, float amount)
 {
     playerStatus[type].Add(amount);
 }
 public float GetStatusMaxAmount(Status.Type type)
 {
     return(playerStatus[type].MaxAmount);
 }
 public void IncreaseStatusMaxAmount(Status.Type type, float amount)
 {
     playerStatus[type].AddMax(amount);
 }
 public void AddStatusAmount(Status.Type type, float amount)
 {
     playerStatus[type].Add(StatBuffModifier(type, amount));
 }