Esempio n. 1
0
        public static Dictionary <teResourceGUID, GameRulesetSchema> GetData()
        {
            var gameRulesets = new Dictionary <teResourceGUID, GameRulesetSchema>();

            foreach (teResourceGUID key in TrackedFiles[0xC6])
            {
                var rulesetSchema = GetInstance <STUGameRulesetSchema>(key);
                if (rulesetSchema == null)
                {
                    continue;
                }

                var ruleset = new GameRulesetSchema(rulesetSchema, key);
                gameRulesets[key] = ruleset;
            }

            return(gameRulesets);
        }
Esempio n. 2
0
        private static List <GameRulesetSchema> GetGameRulesets()
        {
            var gameRulesets = new List <GameRulesetSchema>();

            foreach (var key in TrackedFiles[0xC6])
            {
                var rulesetSchema = GetInstance <STUGameRulesetSchema>(key);
                if (rulesetSchema == null)
                {
                    continue;
                }

                var ruleset = new GameRulesetSchema(rulesetSchema, key);
                gameRulesets.Add(ruleset);
            }

            return(gameRulesets);
        }
Esempio n. 3
0
        private Dictionary <teResourceGUID, GameRuleset> GetData()
        {
            var @return = new Dictionary <teResourceGUID, GameRuleset>();

            // Hero rulesets that are used on Heroes
            var heroRulesetMapping = new Dictionary <teResourceGUID, RulesetSchemaMapping>();

            foreach (teResourceGUID key in TrackedFiles[0x75])
            {
                var hero = STUHelper.GetInstance <STUHero>(key);
                if (hero?.m_gameRulesetSchemas == null)
                {
                    continue;
                }

                foreach (var guid in hero.m_gameRulesetSchemas)
                {
                    var rulesetSchema = new GameRulesetSchema(guid);
                    if (rulesetSchema?.Entries == null)
                    {
                        continue;
                    }

                    foreach (var rulesetSchemaEntry in rulesetSchema.Entries)
                    {
                        heroRulesetMapping[rulesetSchemaEntry.Virtual01C] = new RulesetSchemaMapping {
                            GUID  = rulesetSchemaEntry.Virtual01C,
                            Name  = rulesetSchemaEntry.Name,
                            Value = rulesetSchemaEntry.Value
                        };
                    }
                }
            }

            foreach (teResourceGUID key in TrackedFiles[0xC0])
            {
                var ruleset = new GameRuleset(key);
                if (ruleset.GUID == 0)
                {
                    continue;
                }

                // Generate game rulesets schemas that are used for this gamemode
                var rulesetMapping = new Dictionary <teResourceGUID, RulesetSchemaMapping>();
                foreach (var guid in ruleset.GameMode.GameMode.GameRulesetSchemas)
                {
                    var rulesetSchema = new GameRulesetSchema(guid);

                    foreach (var rulesetSchemaEntry in rulesetSchema?.Entries)
                    {
                        rulesetMapping[rulesetSchemaEntry.Virtual01C] = new RulesetSchemaMapping {
                            GUID  = rulesetSchemaEntry.Virtual01C,
                            Name  = rulesetSchemaEntry.Name,
                            Value = rulesetSchemaEntry.Value
                        };
                    }
                }

                ruleset.GameMode.ConfigValues = ruleset.GameMode?.STU?.m_3CE93B76?
                                                .Select(configValuePair => GenerateConfigValues(configValuePair, rulesetMapping))
                                                .Where(x => x != null)
                                                .ToArray();

                foreach (var gameRulesetTeam in ruleset.GameMode?.Teams)
                {
                    gameRulesetTeam.ConfigValues = gameRulesetTeam.STU.m_CF58324E?
                                                   .Select(configValuePair => GenerateConfigValues(configValuePair, heroRulesetMapping))
                                                   .Where(x => x != null)
                                                   .ToArray();
                }

                if (ruleset.GameMode.ConfigValues?.Length == 0)
                {
                    ruleset.GameMode.ConfigValues = null;
                }

                @return[key] = ruleset;
            }

            return(@return);
        }