Пример #1
0
    private void createStatPanel()
    {
        if (null == PrefStatPanel)
        {
            Log.Error("not found prefab stat panel");
            return;
        }

        if (null == StatListPanel)
        {
            Log.Error("not found stat list panel");
            return;
        }

        Array statTypeArray = Enum.GetValues(typeof(EStat));

        const int NUM_STAT = (int)EStat.MAX;

        for (int i = 0; i < NUM_STAT; ++i)
        {
            GameObject o = Instantiate(PrefStatPanel);
            o.transform.SetParent(StatListPanel.transform, false);

            EStat stat = (EStat)statTypeArray.GetValue(i);

            StatPanel p = o.GetComponent <StatPanel>();
            p.Set(stat);
        }
    }
Пример #2
0
 protected override void AugmentStat(EStat stat)
 {
     switch (stat)
     {
         case EStat.AbilityPower:
             //
             break;
         case EStat.Armor:
             //
             break;
         case EStat.AttackDamage:
             //
             break;
         case EStat.AttackSpeed:
             //
             break;
         case EStat.CooldownReduction:
             //
             break;
         case EStat.CriticalChance:
             //
             break;
         case EStat.MagicResistance:
             //
             break;
         case EStat.MovementSpeed:
             //
             break;
     }
 }
Пример #3
0
    protected float GetEffectMultiplier(EStat buff, EStat debuff, bool clamping = false, float clampMin = 0, float clampMax = 1)
    {
        float multiplier = 1.0f;

        if (m_effectsDictionary.ContainsKey(buff))
        {
            foreach (var buffEffect in m_effectsDictionary[buff])
            {
                multiplier += buffEffect.Magnitude;
            }
        }
        if (m_effectsDictionary.ContainsKey(debuff))
        {
            foreach (var debuffEffect in m_effectsDictionary[debuff])
            {
                multiplier -= debuffEffect.Magnitude;
            }
        }

        if (clamping)
        {
            multiplier = Mathf.Clamp(multiplier, clampMin, clampMax);
        }

        return(multiplier);
    }
Пример #4
0
    public void ResetStat(EStat stat)
    {
        switch (stat)
        {
        case EStat.LOYALTY:
            ArticyGlobalVariables.Default.rep.loyalty = 0;
            break;

        case EStat.DEATH_TOTAL:
            ArticyGlobalVariables.Default.rep.death_total = 0;
            break;

        case EStat.DEATH_DAILY:
            ArticyGlobalVariables.Default.day.death_count = 0;
            break;

        case EStat.MAX:
            break;

        case EStat.ECOLOGY:
            ArticyGlobalVariables.Default.rep.ecology = 0;
            break;

        case EStat.HEALTH:
            ArticyGlobalVariables.Default.rep.health = 0;
            break;

        case EStat.PROSPERITY:
            ArticyGlobalVariables.Default.rep.prosperity = 0;
            break;

        case EStat.PEACE:
            ArticyGlobalVariables.Default.rep.peace = 0;
            break;

        case EStat.SPARE_TOTAL:
            ArticyGlobalVariables.Default.rep.spare_total = 0;
            break;

        case EStat.SPARE_DAILY:
            ArticyGlobalVariables.Default.day.spare_count = 0;
            break;

        case EStat.ECOLOGY_DAILY:
            ArticyGlobalVariables.Default.day.ecology_change = 0;
            break;

        case EStat.HEALTH_DAILY:
            ArticyGlobalVariables.Default.day.health_change = 0;
            break;

        case EStat.PROSPERITY_DAILY:
            ArticyGlobalVariables.Default.day.prosperity_change = 0;
            break;

        case EStat.PEACE_DAILY:
            ArticyGlobalVariables.Default.day.peace_change = 0;
            break;
        }
    }
Пример #5
0
 public float GetStat(EStat stat, float divider = 1.0f)
 {
     if (CurrentStatDictionary.ContainsKey(stat))
     {
         return(CurrentStatDictionary[stat] / divider);
     }
     return(0.0f);
 }
Пример #6
0
    public void UpdateGlobeParticlesForStat(EStat stat)
    {
        EGoodBadNeutral status    = EGoodBadNeutral.Neutral;
        float           parameter = 0;
        PlayerState     player    = SaveManager.instance.GetCurrentPlayerState();

        if (stat == EStat.MAX)
        {
            parameter = (player.GetStat(EStat.ECOLOGY) + player.GetStat(EStat.PEACE) + player.GetStat(EStat.PROSPERITY) + player.GetStat(EStat.HEALTH)) / 4;

            if (parameter > GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Good])
            {
                status = EGoodBadNeutral.Good;
            }
            else if (parameter < GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Dire])
            {
                status = EGoodBadNeutral.Bad;
            }
        }
        else
        {
            parameter = player.GetStat(stat);

            if (parameter > 0)
            {
                status = EGoodBadNeutral.Good;
            }
            else if (parameter < 0)
            {
                status = EGoodBadNeutral.Bad;
            }
        }



        switch (stat)
        {
        case EStat.MAX:
            ParticleInside.SetStatus(status);
            break;

        case EStat.ECOLOGY_DAILY:
            ParticleEcology.SetStatus(status);
            break;

        case EStat.HEALTH_DAILY:
            ParticleHealth.SetStatus(status);
            break;

        case EStat.PROSPERITY_DAILY:
            ParticleProsperity.SetStatus(status);
            break;

        case EStat.PEACE_DAILY:
            ParticlePeace.SetStatus(status);
            break;
        }
    }
Пример #7
0
    public ConsumableItem merge(ConsumableItem other)
    {
        EStat childStat   = (Random.value > 0.5) ? this.target : other.target;
        int   childChange = (this.change < other.change) ?
                            Random.Range(this.change, other.change + 1) : // range is max-exclusive so +1
                            Random.Range(other.change, this.change + 1);

        return(new ConsumableItem(childStat, childChange));
    }
Пример #8
0
    private void onCharacterStatChanged(EStat statType, int value)
    {
        if (_statType != statType)
        {
            return;
        }

        setValue(value);
    }
Пример #9
0
    public int getStat(EStat targetStat)
    {
        if (!stats.ContainsKey(targetStat))
        {
            // No stat =>
            return(0);
        }

        return(stats[targetStat]);
    }
Пример #10
0
    protected float GetEffectMultiplier(EStat effect, bool startsAt1 = true)
    {
        float multiplier = startsAt1 ? 1.0f: 0.0f;

        if (m_effectsDictionary.ContainsKey(effect))
        {
            foreach (var buff in m_effectsDictionary[effect])
            {
                multiplier += buff.Magnitude;
            }
        }
        return(multiplier);
    }
Пример #11
0
    public int GetStat(EStat stat)
    {
        switch (stat)
        {
        case EStat.LOYALTY:
            return(ArticyGlobalVariables.Default.rep.loyalty);

        case EStat.DEATH_TOTAL:
            return(ArticyGlobalVariables.Default.rep.death_total);

        case EStat.DEATH_DAILY:
            return(ArticyGlobalVariables.Default.day.death_count);

        case EStat.ECOLOGY:
            return(ArticyGlobalVariables.Default.rep.ecology);

        case EStat.HEALTH:
            return(ArticyGlobalVariables.Default.rep.health);

        case EStat.PROSPERITY:
            return(ArticyGlobalVariables.Default.rep.prosperity);

        case EStat.PEACE:
            return(ArticyGlobalVariables.Default.rep.peace);

        case EStat.SPARE_TOTAL:
            return(ArticyGlobalVariables.Default.rep.spare_total);

        case EStat.SPARE_DAILY:
            return(ArticyGlobalVariables.Default.day.spare_count);

        case EStat.ECOLOGY_DAILY:
            return(ArticyGlobalVariables.Default.day.ecology_change);

        case EStat.HEALTH_DAILY:
            return(ArticyGlobalVariables.Default.day.health_change);

        case EStat.PROSPERITY_DAILY:
            return(ArticyGlobalVariables.Default.day.prosperity_change);

        case EStat.PEACE_DAILY:
            return(ArticyGlobalVariables.Default.day.peace_change);
        }

        Debug.LogError("Stat " + stat.ToString() + " did not return correct value!");
        return(0);
    }
Пример #12
0
    public void SetStat(EStat eStat, int stat)
    {
        switch (eStat)
        {
        case EStat.EXP:
            m_nExp += stat; break;

        case EStat.M_HP:
            m_nHp += stat; break;

        case EStat.STR:
            m_nStr += stat; break;

        case EStat.SHIELD:
            m_nShield += stat; break;

        case EStat.HITSPEED:
            m_nHitSpeed += stat; break;

        case EStat.CRITICALITY:
            m_nCriticality += stat; break;

        case EStat.CDMAGE:
            m_nCDamage += stat; break;

        case EStat.EFFECTRESIST:
            m_nEffectResist += stat; break;

        case EStat.EFFECTHIT:
            m_nEffectHit += stat; break;

        case EStat.LEVEL:
            m_nLevel += stat; break;

        case EStat.M_LEVEL:
            m_nMaxLevel = 10; break;

        case EStat.STAR:
            m_nStar = 1; break;

        case EStat.SKILLPOINTE:
            m_nSkillpointe = stat; break;

        case EStat.HP:
            m_nHp += stat; break;
        }
    }
Пример #13
0
    public void Set(EStat statType, int value)
    {
        if (EStat.MAX == statType)
        {
            Log.Error("invalid stat type");
            return;
        }

        _statType = statType;

        int  statId = (int)statType;
        Stat stat   = Manager.Instance.DT.Stat[statId];

        setNameText(stat.name);

        setValue(value);
    }
Пример #14
0
    public int GetStat(EStat eStat)
    {
        switch (eStat)
        {
        case EStat.EXP:
            return(m_nExp);

        case EStat.M_HP:
            return(m_nMaxHp);

        case EStat.HP:
            return(m_nHp);

        case EStat.STR:
            return(m_nStr);

        case EStat.SHIELD:
            return(m_nShield);

        case EStat.HITSPEED:
            return(m_nHitSpeed);

        case EStat.CRITICALITY:
            return(m_nCriticality);

        case EStat.CDMAGE:
            return(m_nCDamage);

        case EStat.EFFECTRESIST:
            return(m_nEffectResist);

        case EStat.EFFECTHIT:
            return(m_nEffectHit);

        case EStat.LEVEL:
            return(m_nLevel);

        case EStat.M_LEVEL:
            return(m_nMaxLevel);

        case EStat.STAR:
            return(m_nStar);
        }
        return(0);
    }
Пример #15
0
        public int GetStat(EStat statType)
        {
            switch (statType)
            {
            case EStat.STRESS:
                return(Stress);

            case EStat.CHARM:
                return(Charm);

            case EStat.SENSIBILITY:
                return(Sensibility);

            case EStat.ARTS:
                return(Arts);

            default:
                Log.Error(string.Format("invalid stat type : {0}", statType));
                return(Def.MIN_STAT);
            }
        }
Пример #16
0
 public StatWeight(EStat statType, int weight)
 {
     _statType = statType;
     _weight = weight;
 }
Пример #17
0
    public int GetParameterThresholdIndex(EStat stat, float parameter)
    {
        switch (stat)
        {
        case EStat.LOYALTY:
        {
            float avg = (ArticyGlobalVariables.Default.rep.ecology + ArticyGlobalVariables.Default.rep.peace + ArticyGlobalVariables.Default.rep.prosperity + ArticyGlobalVariables.Default.rep.health) / 4;
            if (parameter < 0)
            {
                return(Mathf.Max(GetParameterThresholdIndex(EStat.MAX, avg) - 1, 0));
            }
            else if (parameter > 0)
            {
                return(Mathf.Min(GetParameterThresholdIndex(EStat.MAX, avg) + 1, 4));
            }
            else
            {
                return(GetParameterThresholdIndex(EStat.MAX, avg));
            }
        }

        case EStat.DEATH_TOTAL:
            break;

        case EStat.DEATH_DAILY:
            break;

        case EStat.SPARE_TOTAL:
            break;

        case EStat.SPARE_DAILY:
            break;

        case EStat.ECOLOGY:
        case EStat.HEALTH:
        case EStat.PROSPERITY:
        case EStat.PEACE:
        {
            if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Critical])     // -infinity to -350
            {
                //shit
                return(0);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Dire])     // -349 to -100
            {
                //low
                return(1);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Good])     // -99 to 100
            {
                //med
                return(2);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Utopian])     // 101 to 350
            {
                //high
                return(3);
            }
            else     // 351 to +infinity
            {
                //super
                return(4);
            }
        }

        case EStat.ECOLOGY_DAILY:
        {
            if (parameter < 0)
            {
                return(Mathf.Max(GetParameterThresholdIndex(EStat.ECOLOGY, ArticyGlobalVariables.Default.rep.ecology) - 1, 0));
            }
            else if (parameter > 0)
            {
                return(Mathf.Min(GetParameterThresholdIndex(EStat.ECOLOGY, ArticyGlobalVariables.Default.rep.ecology) + 1, 4));
            }
            else
            {
                return(GetParameterThresholdIndex(EStat.ECOLOGY, ArticyGlobalVariables.Default.rep.ecology));
            }
        }

        case EStat.HEALTH_DAILY:
        {
            if (parameter < 0)
            {
                return(Mathf.Max(GetParameterThresholdIndex(EStat.HEALTH, ArticyGlobalVariables.Default.rep.health) - 1, 0));
            }
            else if (parameter > 0)
            {
                return(Mathf.Min(GetParameterThresholdIndex(EStat.HEALTH, ArticyGlobalVariables.Default.rep.health) + 1, 4));
            }
            else
            {
                return(GetParameterThresholdIndex(EStat.HEALTH, ArticyGlobalVariables.Default.rep.health));
            }
        }

        case EStat.PROSPERITY_DAILY:
        {
            if (parameter < 0)
            {
                return(Mathf.Max(GetParameterThresholdIndex(EStat.PROSPERITY, ArticyGlobalVariables.Default.rep.prosperity) - 1, 0));
            }
            else if (parameter > 0)
            {
                return(Mathf.Min(GetParameterThresholdIndex(EStat.PROSPERITY, ArticyGlobalVariables.Default.rep.prosperity) + 1, 4));
            }
            else
            {
                return(GetParameterThresholdIndex(EStat.PROSPERITY, ArticyGlobalVariables.Default.rep.prosperity));
            }
        }

        case EStat.PEACE_DAILY:
        {
            if (parameter < 0)
            {
                return(Mathf.Max(GetParameterThresholdIndex(EStat.PEACE, ArticyGlobalVariables.Default.rep.peace) - 1, 0));
            }
            else if (parameter > 0)
            {
                return(Mathf.Min(GetParameterThresholdIndex(EStat.PEACE, ArticyGlobalVariables.Default.rep.peace) + 1, 4));
            }
            else
            {
                return(GetParameterThresholdIndex(EStat.PEACE, ArticyGlobalVariables.Default.rep.peace));
            }
        }

        case EStat.MAX:
        {
            if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Critical])     // -infinity to -350
            {
                //shit
                return(0);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Dire])     // -349 to -100
            {
                //low
                return(1);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Good])     // -99 to 100
            {
                //med
                return(2);
            }
            else if (parameter <= GameManager.instance.ChaosThresholds[(int)EChaosThreshold.Utopian])     // 101 to 350
            {
                //high
                return(3);
            }
            else     // 351 to +infinity
            {
                //super
                return(4);
            }
        }
        }

        return(0);
    }
Пример #18
0
 public ConsumableItem(EStat target, int change)
 {
     this.target = target;
     this.change = change;
 }
Пример #19
0
 //상태값 변경
 public void ChangeStat(EStat s)
 {
     NowStat = s;
 }
Пример #20
0
    public float GetFinalStat(EStat stat)
    {
        var statValue = 1 + m_data.Stats.GetStat(stat, 100.0f); //Default to 1.0f if stat does not have a base value

        return(statValue * GetEffectMultiplier(stat));          //TODO: Do I multiply buffs and debuffs or do I make them additive instead?!?
    }
Пример #21
0
 protected abstract void AugmentStat(EStat stat);
Пример #22
0
 public void Invoke(EStat statType, int value) { _event.Invoke(statType, value); }
Пример #23
0
 // default handler
 private void onCharacterStatChanged(EStat statType, int value)
 {
     Log.Debug(string.Format("onCharacterStatChanged; {0}: {1}", statType, value));
 }
Пример #24
0
    public IEnumerator SwitchParameterSpriteRoutine(EStat stat, int targetSpriteIndex)
    {
        SpriteRenderer targetRenderer = null;
        SpriteRenderer baseRenderer   = null;
        Sprite         targetSprite   = null;

        switch (stat)
        {
        case EStat.ECOLOGY:
            targetRenderer = EcologyTargetRenderer;
            baseRenderer   = EcologyRenderer;
            targetSprite   = EcologySprites[targetSpriteIndex];
            break;

        case EStat.HEALTH:
            targetRenderer = HealthTargetRenderer;
            baseRenderer   = HealthRenderer;
            targetSprite   = HealthSprites[targetSpriteIndex];

            break;

        case EStat.PROSPERITY:
            targetRenderer = ProsperityTargetRenderer;
            baseRenderer   = ProsperityRenderer;
            targetSprite   = ProsperitySprites[targetSpriteIndex];

            break;

        case EStat.PEACE:
            targetRenderer = PeaceTargetRenderer;
            baseRenderer   = PeaceRenderer;
            targetSprite   = PeaceSprites[targetSpriteIndex];

            break;

        case EStat.MAX:
            targetRenderer = InsideTargetRenderer;
            baseRenderer   = InsideRenderer;
            targetSprite   = InsideSprites[targetSpriteIndex];

            break;
        }
        if (targetSprite != baseRenderer.sprite)
        {
            float elapsedTime = 0.0f;
            float duration    = 1.0f;
            float alpha       = 0.0f;
            Color col         = baseRenderer.color;
            targetRenderer.sprite = targetSprite;
            while (elapsedTime < duration)
            {
                elapsedTime = Mathf.Clamp(elapsedTime + Time.deltaTime, 0.0f, duration);
                alpha       = Mathf.Clamp(elapsedTime / duration, 0.0f, 1.0f);

                col.a = 1.0f - alpha;
                baseRenderer.color = col;
                col.a = alpha;
                targetRenderer.color = col;


                yield return(null);
            }

            baseRenderer.sprite = targetSprite;
            col.a = 1.0f;
            baseRenderer.color = col;
            col.a = 0.0f;
            targetRenderer.color = col;
        }
        else
        {
            yield return(null);
        }
    }
Пример #25
0
    public void ModifyStat(EStat stat, int amount)
    {
        if (amount != 0)
        {
            switch (stat)
            {
            case EStat.LOYALTY:
                ArticyGlobalVariables.Default.rep.loyalty += amount;
                break;

            case EStat.DEATH_TOTAL:
                ArticyGlobalVariables.Default.rep.death_total += amount;
                break;

            case EStat.DEATH_DAILY:
                ArticyGlobalVariables.Default.day.death_count += amount;
                if (ArticyGlobalVariables.Default.day.death_count >= DesktopManager.instance.GetProfileCountForCurrentDay())
                {
                    ArticyGlobalVariables.Default.day.death_count = -1;     //all
                }
                break;

            case EStat.MAX:
                break;

            case EStat.ECOLOGY:
                ArticyGlobalVariables.Default.rep.ecology += amount;
                break;

            case EStat.ECOLOGY_DAILY:
                ArticyGlobalVariables.Default.day.ecology_change += amount;
                break;

            case EStat.HEALTH:
                ArticyGlobalVariables.Default.rep.health += amount;
                break;

            case EStat.HEALTH_DAILY:
                ArticyGlobalVariables.Default.day.health_change += amount;
                break;

            case EStat.PROSPERITY:
                ArticyGlobalVariables.Default.rep.prosperity += amount;
                break;

            case EStat.PROSPERITY_DAILY:
                ArticyGlobalVariables.Default.day.prosperity_change += amount;
                break;

            case EStat.PEACE:
                ArticyGlobalVariables.Default.rep.peace += amount;
                break;

            case EStat.PEACE_DAILY:
                ArticyGlobalVariables.Default.day.peace_change += amount;
                break;

            case EStat.SPARE_TOTAL:
                ArticyGlobalVariables.Default.rep.spare_total += amount;
                break;

            case EStat.SPARE_DAILY:
                ArticyGlobalVariables.Default.day.spare_count += amount;
                if (ArticyGlobalVariables.Default.day.spare_count >= DesktopManager.instance.GetProfileCountForCurrentDay())
                {
                    ArticyGlobalVariables.Default.day.spare_count = -1;     //all
                }
                break;
            }
            Debug.Log("Modified stat " + stat.ToString() + " by " + amount.ToString() + " from " + (GetStat(stat) - amount).ToString() + " to " + GetStat(stat).ToString());
        }
        SaveManager.instance.MarkSavegameDirty();
    }