HullPluginManager() { VanillaHullMaxType = Enum.GetValues(typeof(EHullType)).Length; Logger.Info($"MaxTypeint = {VanillaHullMaxType - 1}"); foreach (PulsarPlugin plugin in PluginManager.Instance.GetAllPlugins()) { Assembly asm = plugin.GetType().Assembly; Type HullPlugin = typeof(HullPlugin); foreach (Type t in asm.GetTypes()) { if (HullPlugin.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract) { Logger.Info("Loading Hull from assembly"); HullPlugin HullPluginHandler = (HullPlugin)Activator.CreateInstance(t); if (GetHullIDFromName(HullPluginHandler.Name) == -1) { HullTypes.Add(HullPluginHandler); Logger.Info($"Added Hull: '{HullPluginHandler.Name}' with ID '{GetHullIDFromName(HullPluginHandler.Name)}'"); } else { Logger.Info($"Could not add Hull from {plugin.Name} with the duplicate name of '{HullPluginHandler.Name}'"); } } } } }
public static PLHull CreateHull(int Subtype, int level) { PLHull InHull; if (Subtype >= Instance.VanillaHullMaxType) { InHull = new PLHull(EHullType.E_MAX, level); int subtypeformodded = Subtype - Instance.VanillaHullMaxType; if (Global.DebugLogging) { Logger.Info($"Subtype for modded is {subtypeformodded}"); } if (subtypeformodded <= Instance.HullTypes.Count && subtypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating Hull from list info"); } HullPlugin HullType = Instance.HullTypes[Subtype - Instance.VanillaHullMaxType]; InHull.SubType = Subtype; InHull.Name = HullType.Name; InHull.Desc = HullType.Description; InHull.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, HullType.IconTexture); InHull.Max = HullType.HullMax; InHull.Armor = HullType.Armor; InHull.Defense = HullType.Defense; InHull.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, (ObscuredInt)HullType.MarketPrice); InHull.CargoVisualPrefabID = HullType.CargoVisualID; InHull.CanBeDroppedOnShipDeath = HullType.CanBeDroppedOnShipDeath; InHull.Experimental = HullType.Experimental; InHull.Unstable = HullType.Unstable; InHull.Contraband = HullType.Contraband; InHull.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, (ObscuredFloat)HullType.Price_LevelMultiplierExponent); InHull.Max *= 2f; InHull.Current = InHull.Max; } } else { InHull = new PLHull((EHullType)Subtype, level); } return(InHull); }