/// <summary> /// 设置船mod 或是船装备mod数据 /// </summary> /// <param name="equipmentModL1"></param> /// <param name="GeneralModContainer"></param> /// <param name="ExclusivelyModContainer"></param> private void SetShipModOrShipEquipModData(EquipmentModL1 equipmentModL1, IModContainer GeneralModContainer, IModContainer ExclusivelyModContainer) { for (int i = 0; i < m_ModCellList.Count; i++) { m_ModCellList[i].Cleanup(); if (i < GeneralModContainer.GetCurrentSizeMax()) { m_ModCellList[i].SetBaseData(equipmentModL1, EquipmentModL2.General, GeneralModContainer.GetUID(), i); } else { m_ModCellList[i].SetBaseData(equipmentModL1, EquipmentModL2.Exclusively, ExclusivelyModContainer.GetUID(), i - (int)GeneralModContainer.GetCurrentSizeMax()); } } IMod[] mods = GeneralModContainer.GetMods(); if (mods != null && mods.Length > 0) { for (int i = 0; i < mods.Length; i++) { m_ModCellList[mods[i].GetPos()].SetData(mods[i]); } } mods = ExclusivelyModContainer.GetMods(); int GeneralModCount = (int)GeneralModContainer.GetCurrentSizeMax(); if (mods != null && mods.Length > 0) { for (int i = 0; i < mods.Length; i++) { m_ModCellList[mods[i].GetPos() + GeneralModCount].SetData(mods[i]); } } }
private void Init() { _mods = new ModContainer(_stats, _events); Instance = this; _health = GetComponent <IHealthContainer>(); _unlocks = GetComponent <IUnlockList>(); _resources = GetComponent <IResourceContainer>(); _inventory = GetComponent <IInventory>(); if (_resources != null) { _resources?.ChangeResource(CreditsResource, 0); } ResourceEarningMultiplier = new Dictionary <string, IStatReference>(); _resourceFractionTrackers = new Dictionary <string, float>(); Resource[] resources = Content.GetAll <Resource>("*/Resources"); foreach (Resource resource in resources) { ResourceEarningMultiplier.Add(resource.Identifier, _stats.AddStat(GenerateStatInfo(resource), 1f)); _resourceFractionTrackers.Add(resource.Identifier, 0f); } OnNewPlayerInstance?.Invoke(this); }
public static void RecalculateStack(this IModContainer container, string identifier) { Mod[] nonUnique = container.GetModsOfIdentifier(identifier); container.GetUniqueModOfIdentifier(identifier).StackWith(nonUnique); }
public static Mod GetUniqueModOfIdentifier(this IModContainer container, string identifier) { return(container.GetUniqueMods().FirstOrDefault(x => x.StackIdentifier == identifier)); }
public static Mod GetUniqueModOfType(this IModContainer container, Type type) { return(container.GetUniqueMods().FirstOrDefault(x => type.IsInstanceOfType(x))); }
public static T GetUniqueModOfType <T> (this IModContainer container) where T : Mod { return((T)container.GetUniqueMods().FirstOrDefault(x => x is T)); }
public static Mod[] GetModsOfIdentifier(this IModContainer container, string identifier) { return(container.GetMods().Where(x => x.StackIdentifier == identifier).ToArray()); }
public static Mod[] GetModsOfType(this IModContainer container, Type type) { return(container.GetMods().Where(x => type.IsInstanceOfType(x)).ToArray()); }
public static T[] GetModsOfType <T> (this IModContainer container) where T : Mod { return((T[])container.GetMods().Where(x => x is T).ToArray()); }