Example #1
0
        public void SetConstantStat(gamedataStatType stat, float value, GameSavedStatsData statsData)
        {
            var foundStat = false;

            foreach (Handle <GameStatModifierData> modifier in statsData.StatModifiers)
            {
                if (modifier.Value.GetType() == typeof(GameConstantStatModifierData))
                {
                    if (((GameConstantStatModifierData)modifier.Value).StatType == stat)
                    {
                        ((GameConstantStatModifierData)modifier.Value).Value = value;
                        foundStat = true;
                    }
                }
            }

            if (!foundStat)
            {
                var newModifierData = new GameConstantStatModifierData();
                newModifierData.ModifierType = gameStatModifierType.Additive;
                newModifierData.StatType     = stat;
                newModifierData.Value        = value;

                this.AddStat(typeof(GameConstantStatModifierData), statsData, newModifierData);
            }
        }
        public void SetConstantStat(gamedataStatType stat, float value, GameSavedStatsData statsData, gameStatModifierType mod = gameStatModifierType.Additive)
        {
            var foundStat = false;

            foreach (Handle <GameStatModifierData> modifier in statsData.StatModifiers)
            {
                if (modifier.Value is GameConstantStatModifierData constantModifier)
                {
                    if (constantModifier.StatType == stat && constantModifier.ModifierType == mod)
                    {
                        constantModifier.Value = value;
                        foundStat = true;
                    }
                }
            }

            if (!foundStat)
            {
                var newModifierData = new GameConstantStatModifierData
                {
                    ModifierType = mod,
                    StatType     = stat,
                    Value        = value
                };

                this.AddStat(typeof(GameConstantStatModifierData), statsData, newModifierData);
            }
        }
Example #3
0
        public uint AddStat(Type statType, GameSavedStatsData statsData, GameStatModifierData modifierData = null)
        {
            var newModifierData = Activator.CreateInstance(statType);

            if (statType == typeof(GameCurveStatModifierData))
            {
                ((GameCurveStatModifierData)newModifierData).ColumnName = "<null>";
                ((GameCurveStatModifierData)newModifierData).CurveName  = "<null>";
            }

            if (modifierData != null)
            {
                newModifierData = modifierData;
            }

            var newModifier = this.GetStatsContainer().CreateHandle <GameStatModifierData>((GameStatModifierData)newModifierData);

            statsData.StatModifiers = statsData.StatModifiers.Append(newModifier).ToArray();

            return(newModifier.Id);
        }
        public GameSavedStatsData CreateStatData(ItemData item, Random rand)
        {
            var randBytes = new byte[4];

            rand.NextBytes(randBytes);
            var newSeed = BitConverter.ToUInt32(randBytes);

            while (this.GetStatsMap().Values.Where(x => x.Seed == newSeed).FirstOrDefault() != null)
            {
                rand.NextBytes(randBytes);
                newSeed = BitConverter.ToUInt32(randBytes);
            }

            if (item.Data.GetType() != typeof(ItemData.SimpleItemData))
            {
                item.Header.Seed = newSeed;
            }
            else
            {
                newSeed = 2;
            }

            this.GetStatsMap().Keys = this.GetStatsMap().Keys.Append(new GameStatsObjectID
            {
                IdType     = gameStatIDType.ItemID,
                EntityHash = GetItemIdHash(item.ItemTdbId.Raw64, newSeed, 0)
            }).ToArray();

            var statsEntry = new GameSavedStatsData
            {
                RecordID      = item.ItemTdbId,
                Seed          = newSeed,
                StatModifiers = new Handle <GameStatModifierData> [0]
            };

            this.GetStatsMap().Values = this.GetStatsMap().Values.Append(statsEntry).ToArray();
            return(statsEntry);
        }
Example #5
0
        public void RemoveStat(Handle <GameStatModifierData> statsHandle, GameSavedStatsData statsData)
        {
            var modifiersList = statsData.StatModifiers.ToList();

            modifiersList.Remove(statsHandle);
            statsData.StatModifiers = modifiersList.ToArray();

            this.GetStatsContainer().RemoveHandle(statsHandle.Id);

            foreach (GameSavedStatsData value in this.GetStatsMap().Values)
            {
                if (value.StatModifiers != null)
                {
                    foreach (Handle <GameStatModifierData> modifierData in value.StatModifiers)
                    {
                        if (modifierData.Id > statsHandle.Id)
                        {
                            modifierData.Id = (modifierData.Id - 1);
                        }
                    }
                }
            }
        }