Пример #1
0
 public static void Postfix(Vehicle __instance, int slotID, TechType techType, bool added)
 {
     if (techType == Main.buildermodule.TechType && added)
     {
         if (__instance.GetType() == typeof(SeaMoth))
         {
             BuilderModuleMono seamoth_control = __instance.gameObject.EnsureComponent <BuilderModuleMono>();
             seamoth_control.ModuleSlotID = slotID;
             return;
         }
         else if (__instance.GetType() == typeof(Exosuit))
         {
             BuilderModuleMono exosuit_control = __instance.gameObject.EnsureComponent <BuilderModuleMono>();
             exosuit_control.ModuleSlotID = slotID;
             return;
         }
         else
         {
             Logger.Log(Logger.Level.Error, "Unidentified Vehicle Type!");
         }
     }
 }
Пример #2
0
        public static void Postfix(object __instance, int slotID, TechType techType, bool added)
        {
            var validTech = Main.builderModules.Contains(techType);

            if (!validTech)
            {
                return;
            }

            var noneEquipped = true;
            var foundMono    = false;
            BuilderModuleMono builderModule = null;

            switch (__instance)
            {
            case Vehicle vehicle:
                noneEquipped = !vehicle.modules.equippedCount.TryGetValue(techType, out _);
                foundMono    = vehicle.gameObject.TryGetComponent(out builderModule);
                if (added && !foundMono)
                {
                    builderModule                 = vehicle.gameObject.AddComponent <BuilderModuleMono>();
                    builderModule.vehicle         = vehicle;
                    builderModule.energyInterface = vehicle.energyInterface;
                    builderModule.ModuleSlotID    = slotID;
                    vehicle.onToggle             += builderModule.OnToggle;
                }
                break;

#if BZ
            case SeaTruckUpgrades seaTruck:
                noneEquipped = !seaTruck.modules.equippedCount.TryGetValue(techType, out _);
                foundMono    = seaTruck.gameObject.TryGetComponent(out builderModule);
                if (added && !foundMono)
                {
                    builderModule              = seaTruck.gameObject.AddComponent <BuilderModuleMono>();
                    builderModule.seaTruck     = seaTruck;
                    builderModule.lights       = seaTruck.GetComponentInChildren <SeaTruckLights>();
                    builderModule.powerRelay   = seaTruck.relay;
                    builderModule.ModuleSlotID = slotID;
                }
                break;

            case Hoverbike hoverbike:
                noneEquipped = !hoverbike.modules.equippedCount.TryGetValue(techType, out _);
                foundMono    = hoverbike.gameObject.TryGetComponent(out builderModule);
                if (added && !foundMono)
                {
                    builderModule              = hoverbike.gameObject.AddComponent <BuilderModuleMono>();
                    builderModule.hoverbike    = hoverbike;
                    builderModule.energyMixin  = hoverbike.energyMixin;
                    builderModule.ModuleSlotID = slotID;
                }
                break;
#endif
            }

            if (!added && noneEquipped && foundMono)
            {
                Object.Destroy(builderModule);
            }
        }