// Token: 0x06000BF1 RID: 3057 RVA: 0x00054608 File Offset: 0x00052808 public static Dictionary <string, PlayerFactionSelection> GetFactionOptions(LevelManager levelManager, DLCManager dlcManager, PlayerType playerType, bool useOwnedDLCOnly) { Dictionary <string, PlayerFactionSelection> dictionary = new Dictionary <string, PlayerFactionSelection>(6); if (levelManager != null) { CommanderAttributes[] commanderAttributes = levelManager.CommanderAttributes; if (commanderAttributes != null) { for (int i = 0; i < commanderAttributes.Length; i++) { CommanderAttributes commanderAttributes2 = commanderAttributes[i]; string key = string.IsNullOrEmpty(commanderAttributes2.NameLocID) ? commanderAttributes2.Name : commanderAttributes2.NameLocID; PlayerFactionSelection value = new PlayerFactionSelection((CustomizationFactionSetting)i, DLCPackID.kInvalidID, false); dictionary.Add(key, value); } } } if (dlcManager != null) { IEnumerable <DLCPackDescriptor> enumerable = useOwnedDLCOnly ? dlcManager.OwnedDLCPacks : dlcManager.AllDLCPacks; foreach (DLCPackDescriptor dlcpackDescriptor in enumerable) { if (dlcpackDescriptor.DLCPackType == DLCType.Faction) { UnitFactionDLCPack unitFactionDLCPack = (UnitFactionDLCPack)dlcManager.GetDLCPackHeader(dlcpackDescriptor.DLCPackID); if (!(unitFactionDLCPack == null)) { if (playerType == PlayerType.AI) { CommanderAttributesData commanderAttributesData = unitFactionDLCPack.CommanderAttrs as CommanderAttributesData; if (commanderAttributesData == null || commanderAttributesData.AIArchetypeAssets.IsNullOrEmpty <AIArchetypeAttributesAsset>()) { continue; } } string dlcpackLocID = dlcpackDescriptor.DLCPackLocID; PlayerFactionSelection value2 = new PlayerFactionSelection(unitFactionDLCPack.CustomizesFaction, dlcpackDescriptor.DLCPackID, false); dictionary.Add(dlcpackLocID, value2); } } } } PlayerFactionSelection value3 = new PlayerFactionSelection(CustomizationFactionSetting.Coalition, DLCPackID.kInvalidID, true); // MOD if (playerType == PlayerType.AI) { dictionary.Remove("SPECTATOR"); dictionary.Remove("FATHERSHIP"); dictionary.Remove("NONE"); } // MOD dictionary.Add("ID_UI_FE_MP_RANDOM_253", value3); return(dictionary); }
// Token: 0x060015BD RID: 5565 RVA: 0x000790FC File Offset: 0x000772FC private void ResetEntityManager() { ShipbreakersMain.sEntityTypes.Clear(); ShipbreakersMain.sEntityTypes = null; ShipbreakersMain.EntitySystem.Teardown(); HashSet <ScriptableObject> hashSet = new HashSet <ScriptableObject>(); foreach (DLCAssetBundleBase dlcassetBundleBase in ShipbreakersMain.sDLCManager.GetAllLoadedHeadersOfType(DLCType.Faction)) { UnitFactionDLCPack unitFactionDLCPack = dlcassetBundleBase as UnitFactionDLCPack; if (unitFactionDLCPack != null) { foreach (UnitFactionDLCPack.ReplacementMapping replacementMapping in unitFactionDLCPack.NewEntities) { if (replacementMapping.NewEntityType is IEntityTypeRegistrationRequired) { hashSet.Add(replacementMapping.NewEntityType); } } CommanderAttributesData commanderAttributesData = unitFactionDLCPack.CommanderAttrs as CommanderAttributesData; if (commanderAttributesData != null) { FactionAttributesData factionAttributesData = commanderAttributesData.FactionAttributes.Data as FactionAttributesData; if (factionAttributesData != null) { ScriptableObject techTree = factionAttributesData.TechTree; if (techTree != null) { hashSet.Add(techTree); } } } } } ShipbreakersMain.InitializeEntityManager(this.m_RegistryAsset, hashSet); // MOD: Load unit stat mods using subsystem if (MapModManager.GameType != GameMode.SinglePlayer) { new AttributeLoader().LoadAttributes(ShipbreakersMain.sEntityTypes, "Managed/fathership.json"); // Default game-wide fathership modifications } new AttributeLoader().LoadAttributes(ShipbreakersMain.sEntityTypes); // MOD }