public bool GetHasLevelData(EntityStatsLevelType levelType)
        {
            switch (levelType)
            {
            case EntityStatsLevelType.Main:
                return(hasMainLevel);
            }

            throw new System.Exception("No " + levelType + " level found.");
        }
Exemple #2
0
        private void OnValidate()
        {
            Array levelTypes = Enum.GetValues(typeof(EntityStatsLevelType));

            for (int i = 0; i < levelTypes.Length; i++)
            {
                EntityStatsLevelType levelType = (EntityStatsLevelType)levelTypes.GetValue(i);
                LevelData            levelData = GetLevelData(levelType);
                levelData?.SetLevelType(levelType);
            }
        }
Exemple #3
0
            private void HandleReevaluateLevelsStatsInfluences()
            {
                Array levelTypes = Enum.GetValues(typeof(EntityStatsLevelType));

                for (int i = 0; i < levelTypes.Length; i++)
                {
                    EntityStatsLevelType levelType = (EntityStatsLevelType)levelTypes.GetValue(i);
                    if (_data.GetHasLevelData(levelType))
                    {
                        GetLevelExperienceData(levelType).ReevaluateStatsInfluences();
                    }
                }
            }
Exemple #4
0
            public float EvaluateStatsLevelStat(EntityStatsLevelType resource, EntityStatsLevelStat stat, float baseAmount)
            {
                int indexOne = PinouUtils.Maths.Pow2toIndex((int)resource);
                int indexTwo = PinouUtils.Maths.Pow2toIndex((int)stat);

                if (indexOne < 0 || indexTwo < 0)
                {
                    return(baseAmount);
                }
                else
                {
                    return((baseAmount * _statsLevelStatsFactors[indexOne][indexTwo]) + _statsLevelStatsFlats[indexOne][indexTwo]);
                }
            }
            public void SetCurrentLevel(EntityStatsLevelType levelType, int value)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return;
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    mainExperience.SetLevel(value);
                    break;
                }
            }
            public void SetLevelExperienceData(EntityStatsLevelType levelType, LevelExperienceData experienceData)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return;
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    mainExperience = experienceData;
                    break;
                }
            }
            public void ModifyLevelExperiencePct(EntityStatsLevelType levelType, float experience)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return;
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    mainExperience.ModifyExperiencePct(experience);
                    break;
                }
            }
            public void ModifyCurrentLevel(EntityStatsLevelType levelType, int amount)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return;
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    mainExperience.ModifyLevel(amount);
                    break;
                }
            }
            public int GetCurrentLevel(EntityStatsLevelType levelType)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return(0);
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    return(mainExperience.Level);
                }

                throw new System.Exception("No " + levelType + " level found.");
            }
            //Generics
            public LevelExperienceData GetLevelExperienceData(EntityStatsLevelType levelType)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return(null);
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    return(mainExperience);
                }

                throw new System.Exception("No " + levelType + " level found.");
            }
            public float GetRemainingExperienceForNextLevel(EntityStatsLevelType levelType)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return(0f);
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    return(mainExperience.RemainingExperienceForNextLevel);
                }

                throw new System.Exception("No " + levelType + " level found.");
            }
Exemple #12
0
            private void HandleCreateLevelExperienceDatas()
            {
                Array levelTypes = Enum.GetValues(typeof(EntityStatsLevelType));

                for (int i = 0; i < levelTypes.Length; i++)
                {
                    EntityStatsLevelType levelType = (EntityStatsLevelType)levelTypes.GetValue(i);
                    if (_data.GetHasLevelData(levelType))
                    {
                        LevelExperienceData led = new LevelExperienceData(_data.GetLevelData(levelType));
                        SetLevelExperienceData(levelType, led);
                        StatsInfluenceData.StatsInfluence[] statsInfluences = led.MakeStatsInfluences();
                        _levelStatsInfluences.AddRange(statsInfluences);

                        led.OnLevelUp.SafeSubscribe(OnLevelUp, 10);
                    }
                }
            }
            public void ModifyLevelExperience(EntityStatsLevelType levelType, float experience, bool useStatsInfluence = true)
            {
                if (_data.GetHasLevelData(levelType) == false)
                {
                    return;
                }

                switch (levelType)
                {
                case EntityStatsLevelType.Main:
                    if (useStatsInfluence == true)
                    {
                        MainExperience.ModifyExperience(EvaluateStatsStat(EntityStatsStat.ExperienceGainedGlobalFactor, EvaluateStatsLevelStat(EntityStatsLevelType.Main, EntityStatsLevelStat.ExperienceGainedFactor, experience)));
                    }
                    else
                    {
                        mainExperience.ModifyExperience(experience);
                    }
                    break;
                }
            }
Exemple #14
0
 public void SetLevelType(EntityStatsLevelType type)
 {
     levelType = type;
 }