public override bool FindAllComponents() { QuickLogger.Debug("Find All Components"); #region Canvas CanvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (CanvasGameObject == null) { QuickLogger.Error("Canvas not found."); return(false); } #endregion // == Canvas Elements == // #region Home Screen _homePage = CanvasGameObject.transform.Find("HomePage")?.gameObject; if (_homePage == null) { QuickLogger.Error("Screen: Home Page not found."); return(false); } #endregion #region Depth _depth = _homePage.transform.Find("Depth")?.gameObject; if (_depth == null) { QuickLogger.Error("Panel: Depth not found."); return(false); } #endregion #region Depth Value _depthValue = _depth.transform.Find("Depth_Value")?.GetComponent <Text>(); if (_depthValue == null) { QuickLogger.Error("Text: Depth Value not found."); return(false); } #endregion #region Turbine Speed _turbineSpeed = _homePage.transform.Find("TurbineSpeed")?.gameObject; if (_turbineSpeed == null) { QuickLogger.Error("GameObject: Turbine Speed not found."); return(false); } #endregion #region Home Screen Power BTN _homeScreenPowerBTN = _homePage.transform.Find("Power_BTN")?.gameObject; if (_homeScreenPowerBTN == null) { QuickLogger.Error("Screen: Powered Off Screen Button not found."); return(false); } var homeScreenPowerBTN = _homeScreenPowerBTN.AddComponent <InterfaceButton>(); homeScreenPowerBTN.ButtonMode = InterfaceButtonMode.Background; homeScreenPowerBTN.OnButtonClick = OnButtonClick; homeScreenPowerBTN.BtnName = "HPPBtn"; #endregion #region Health Meter _healthMeters = _homePage.transform.Find("Health_Meter")?.gameObject; if (_healthMeters == null) { QuickLogger.Error("Screen: Health Meter not found."); return(false); } #endregion #region Health Meter Bar _healthSlider = _healthMeters.transform.Find("Slider")?.gameObject; if (_healthSlider == null) { QuickLogger.Error("Screen: Health Slider not found."); return(false); } #endregion #region Health Meter Percentage _healthPercentage = _healthSlider.transform.Find("Heath_Percentage")?.gameObject; if (_healthPercentage == null) { QuickLogger.Error("Screen: Health Percentage not found."); return(false); } #endregion #region Power Meter _powerMeters = _homePage.transform.Find("Power_Meter")?.gameObject; if (_powerMeters == null) { QuickLogger.Error("Screen: Power Meter not found."); return(false); } #endregion #region Power Meter Bar _powerSlider = _powerMeters.transform.Find("Slider")?.gameObject; if (_powerSlider == null) { QuickLogger.Error("Screen: Power Slider not found."); return(false); } #endregion #region Power Meter Percentage _powerPercentage = _powerSlider.transform.Find("Power_Percentage")?.gameObject; if (_powerPercentage == null) { QuickLogger.Error("Screen: Power Percentage not found."); return(false); } #endregion #region Background _background = CanvasGameObject.transform.Find("Background")?.gameObject; if (_background == null) { QuickLogger.Error("Screen: Background not found."); return(false); } #endregion #region PowerOff _poweredOffScreen = CanvasGameObject.transform.Find("PowerOffPage")?.gameObject; if (_poweredOffScreen == null) { QuickLogger.Error("Screen: Powered Off Page not found."); return(false); } #endregion #region Power BTN _poweredScreenPowerBTN = _poweredOffScreen.transform.Find("Power_BTN")?.gameObject; if (_poweredScreenPowerBTN == null) { QuickLogger.Error("Screen: Powered Off Screen Button not found."); return(false); } var poweredOffScreenBTN = _poweredScreenPowerBTN.AddComponent <InterfaceButton>(); poweredOffScreenBTN.ButtonMode = InterfaceButtonMode.Background; poweredOffScreenBTN.OnButtonClick = OnButtonClick; poweredOffScreenBTN.BtnName = "PPBtn"; #endregion return(true); }
internal static Pickupable ConvertToPickupable(ItemData itemData) { QuickLogger.Debug("ConvertToPickupable", true); if (itemData == null) { QuickLogger.Debug("Item Data is null", true); return(null); } QuickLogger.Debug("1"); if (EggHandler.GetDiscoveredEgg(itemData.TechType, out TechType value)) { return(CraftData.InstantiateFromPrefab(value).GetComponent <Pickupable>()); } QuickLogger.Debug("2"); var gameObject = CraftData.GetPrefabForTechType(itemData.TechType); QuickLogger.Debug("3"); if (gameObject == null) { QuickLogger.Error($"Couldn't get the prefab for the tech-type {itemData.TechType}"); return(null); } QuickLogger.Debug("4"); var go = GameObject.Instantiate(gameObject); QuickLogger.Debug("5"); if (go == null) { QuickLogger.Debug("GameObject is null in convert to pickupable", true); QuickLogger.Debug($"TechType = {itemData.Type}", true); return(null); } switch (itemData.Type) { case ItemType.Battery: go.GetComponent <Battery>()._charge = itemData.BatteryData.Charge; break; case ItemType.Food: var eatable = go.GetComponent <Eatable>(); eatable.foodValue = itemData.FoodData.FoodValue; eatable.waterValue = itemData.FoodData.WaterValue; break; case ItemType.Fuel: go.GetComponent <FireExtinguisher>().fuel = itemData.FuelData.Fuel; break; case ItemType.PlayerTool: if (itemData.PlayerToolData.HasBattery) { var batteryTechType = itemData.PlayerToolData.BatteryInfo.TechType; var tempBattery = CraftData.GetPrefabForTechType(batteryTechType); var capacity = tempBattery?.gameObject.GetComponent <IBattery>()?.capacity; if (itemData.PlayerToolData.HasBattery && capacity != null && capacity > 0) { //var pickup = CraftData.InstantiateFromPrefab(itemData.TechType).GetComponent<Pickupable>(); var energyMixin = go.gameObject.GetComponent <EnergyMixin>(); var normalizedCharge = itemData.PlayerToolData.BatteryInfo.BatteryCharge / capacity; if (energyMixin.GetBattery() != null) { QuickLogger.Debug("Battery was already in device destroying"); } if (!energyMixin.compatibleBatteries.Contains(batteryTechType)) { energyMixin.compatibleBatteries.Add(batteryTechType); } energyMixin.SetBattery(itemData.PlayerToolData.BatteryInfo.TechType, (float)normalizedCharge); QuickLogger.Info($"Gave Player Player tool {itemData.PlayerToolData.TechType} with battery {batteryTechType}"); } else { QuickLogger.Error("While trying to get the batter capacity of the battery it returned null or 0."); } } break; case ItemType.FCSFilteredStorage: var storage = go.GetComponent <FCSFilteredStorage>(); storage.Items = itemData.FcsFilteredStorage; storage.Filters = itemData.FcsFilters; storage.ForceUpdateDisplay(); break; } QuickLogger.Debug("6"); return(go.GetComponent <Pickupable>()); }
public override GameObject GetGameObject() { try { QuickLogger.Debug("Making GameObject"); QuickLogger.Debug("Instantiate GameObject"); var prefab = GameObject.Instantiate(_Prefab); var transmitter = GameObject.Instantiate(CraftData.GetPrefabForTechType(TechType.PowerTransmitter)); // Add large world entity ALLOWS YOU TO SAVE ON TERRAIN var lwe = prefab.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Far; var model = prefab.FindChild("model"); SkyApplier skyApplier = prefab.AddComponent <SkyApplier>(); skyApplier.renderers = model.GetComponentsInChildren <MeshRenderer>(); skyApplier.anchorSky = Skies.Auto; //========== Allows the building animation and material colors ==========// QuickLogger.Debug("Adding Constructible"); // Add constructible var constructable = prefab.AddComponent <Constructable>(); constructable.allowedOnWall = false; constructable.allowedOnGround = true; constructable.allowedInSub = false; constructable.allowedInBase = false; constructable.allowedOnCeiling = false; constructable.allowedOutside = true; constructable.model = model; constructable.rotationEnabled = true; constructable.allowedOnConstructables = false; constructable.techType = TechType; var center = new Vector3(0f, 2.970485f, 0f); var size = new Vector3(4.03422f, 5.701298f, 3.179399f); GameObjectHelpers.AddConstructableBounds(prefab, size, center); PrefabIdentifier prefabID = prefab.AddComponent <PrefabIdentifier>(); prefabID.ClassId = this.ClassID; var lm = prefab.AddComponent <LiveMixin>(); lm.data = CustomLiveMixinData.Get(); prefab.AddComponent <TechTag>().type = TechType; prefab.AddComponent <BeaconController>(); prefab.AddComponent <AIJetStreamT242Display>(); prefab.AddComponent <AIJetStreamT242PowerManager>(); prefab.AddComponent <AIJetStreamT242HealthManager>(); prefab.AddComponent <AIJetStreamT242AnimationManager>(); prefab.AddComponent <AIJetStreamT242Controller>(); return(prefab); } catch (Exception e) { QuickLogger.Error(e.Message); return(null); } }
public override bool FindAllComponents() { try { #region Canvas var canvas = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvas == null) { QuickLogger.Error("Canvas could not be found!"); return(false); } #endregion #region Home Screen var home = InterfaceHelpers.FindGameObject(canvas, "Home"); #endregion #region Multiplier var multiplier = InterfaceHelpers.FindGameObject(home, "Multiplier"); #endregion #region Item Count _itemCount = InterfaceHelpers.FindGameObject(home, "StorageAmount")?.GetComponent <Text>(); #endregion #region Plier _plier = InterfaceHelpers.FindGameObject(multiplier, "plier")?.GetComponent <Text>(); #endregion #region Storage Labels _storageLabels = InterfaceHelpers.FindGameObject(home, "Storage_Labels"); #endregion #region Grid var grid = InterfaceHelpers.FindGameObject(home, "Grid"); _grid = _mono.gameObject.AddComponent <GridHelper>(); _grid.OnLoadDisplay += OnLoadDisplay; _grid.Setup(16, ExStorageDepotBuildable.ItemPrefab, home, _startColor, _hoverColor, OnButtonClick); #endregion #region Dump Button var dumpBTN = InterfaceHelpers.FindGameObject(home, "Dump_Button"); InterfaceHelpers.CreateButton(dumpBTN, "DumpBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ExStorageDepotBuildable.AddToExStorage()); #endregion #region Rename Button var renameBTN = InterfaceHelpers.FindGameObject(home, "Rename_Button"); InterfaceHelpers.CreateButton(renameBTN, "RenameBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ExStorageDepotBuildable.RenameStorage()); #endregion #region Multiplier Previous Button var multiplierPrevBtn = InterfaceHelpers.FindGameObject(multiplier, "Prev_BTN"); InterfaceHelpers.CreateButton(multiplierPrevBtn, "LButton", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ""); #endregion #region Multiplier Next Button var multiplierNextBtn = InterfaceHelpers.FindGameObject(multiplier, "Next_BTN"); InterfaceHelpers.CreateButton(multiplierNextBtn, "RButton", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ""); #endregion } catch (Exception e) { QuickLogger.Error($"{e.Message}:\n{e.StackTrace}"); return(false); } return(true); }
public override bool FindAllComponents() { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Main var main = canvasGameObject.FindChild("Main")?.gameObject; if (main == null) { QuickLogger.Error("Main cannot be found"); return(false); } #endregion #region Status_LBL var statuslbl = main.FindChild("Status_LBL")?.gameObject.GetComponent <Text>(); if (statuslbl == null) { QuickLogger.Error("Status_LBL cannot be found"); return(false); } statuslbl.text = AIPowerCellSocketBuildable.Status(); #endregion #region Slot1 var slot1 = main.FindChild("Battery_1")?.gameObject; if (slot1 == null) { QuickLogger.Error("Battery_1 cannot be found"); return(false); } _s1Percent = slot1.FindChild("percentage").GetComponent <Text>(); _s1Percent.text = Language.main.Get("ChargerSlotEmpty"); _s1Fill = slot1.FindChild("Fill").GetComponent <Image>(); _s1Fill.color = _colorEmpty; _s1Fill.fillAmount = 0f; #endregion #region Slot2 var slot2 = main.FindChild("Battery_2")?.gameObject; if (slot2 == null) { QuickLogger.Error("Battery_2 cannot be found"); return(false); } _s2Percent = slot2.FindChild("percentage").GetComponent <Text>(); _s2Percent.text = Language.main.Get("ChargerSlotEmpty"); _s2Fill = slot2.FindChild("Fill").GetComponent <Image>(); _s2Fill.color = _colorEmpty; _s2Fill.fillAmount = 0f; #endregion #region Slot3 var slot3 = main.FindChild("Battery_3")?.gameObject; if (slot3 == null) { QuickLogger.Error("Battery_3 cannot be found"); return(false); } _s3Percent = slot3.FindChild("percentage").GetComponent <Text>(); _s3Percent.text = Language.main.Get("ChargerSlotEmpty"); _s3Fill = slot3.FindChild("Fill").GetComponent <Image>(); _s3Fill.color = _colorEmpty; _s3Fill.fillAmount = 0f; #endregion #region Slot4 var slot4 = main.FindChild("Battery_4")?.gameObject; if (slot4 == null) { QuickLogger.Error("Battery_4 cannot be found"); return(false); } _s4Percent = slot4.FindChild("percentage").GetComponent <Text>(); _s4Percent.text = Language.main.Get("ChargerSlotEmpty"); _s4Fill = slot4.FindChild("Fill").GetComponent <Image>(); _s4Fill.color = _colorEmpty; _s4Fill.fillAmount = 0f; #endregion return(true); }
private static void PatchEasyCraft(Harmony harmony) { var isEasyCraftInstalled = QModServices.Main.ModPresent("EasyCraft"); if (isEasyCraftInstalled) { QuickLogger.Debug("EasyCraft is installed"); var easyCraftClosestItemContainersType = Type.GetType("EasyCraft.ClosestItemContainers, EasyCraft"); var easyCraftMainType = Type.GetType("EasyCraft.Main, EasyCraft"); var easyCraftSettingsType = Type.GetType("EasyCraft.Settings, EasyCraft"); if (easyCraftMainType != null) { QuickLogger.Debug("Got EasyCraft Main Type"); EasyCraftSettingsInstance = easyCraftMainType .GetField("settings", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null); if (EasyCraftSettingsInstance != null) { QuickLogger.Debug("Got EasyCraft Settings Field Info"); if (easyCraftSettingsType != null) { QuickLogger.Debug("Got EasyCraft Settings type"); QuickLogger.Debug($"Got EasyCraft Settings type: {easyCraftSettingsType.Name}"); var autoCraft = easyCraftSettingsType.GetField("autoCraft").GetValue(EasyCraftSettingsInstance); UseStorage = easyCraftSettingsType.GetField("useStorage"); var returnSurplus = easyCraftSettingsType.GetField("returnSurplus") .GetValue(EasyCraftSettingsInstance); } } } if (easyCraftClosestItemContainersType != null) { QuickLogger.Debug("Got EasyCraft Type"); var destroyItemMethodInfo = easyCraftClosestItemContainersType.GetMethod("DestroyItem"); var getPickupCountMethodInfo = easyCraftClosestItemContainersType.GetMethod("GetPickupCount"); if (destroyItemMethodInfo != null) { QuickLogger.Debug("Got EasyCraft DestroyItem Method"); var postfix = typeof(EasyCraft_Patch).GetMethod("DestroyItem"); harmony.Patch(destroyItemMethodInfo, null, new HarmonyMethod(postfix)); } if (getPickupCountMethodInfo != null) { QuickLogger.Debug("Got EasyCraft GetPickupCount Method"); var postfix = typeof(EasyCraft_Patch).GetMethod("GetPickupCount"); harmony.Patch(getPickupCountMethodInfo, null, new HarmonyMethod(postfix)); } } else { QuickLogger.Error("Failed to get EasyCraft Type"); } } else { QuickLogger.Debug("EasyCraft not installed"); } }
public override GameObject GetGameObject() { try { if (GetPrefabs()) { var prefab = GameObject.Instantiate(Prefab); //Scale the object prefab.transform.localScale += new Vector3(0.24f, 0.24f, 0.24f); var size = new Vector3(2.493512f, 1.875936f, 1.439421f); var center = new Vector3(0.07963049f, 1.088284f, 0f); GameObjectHelpers.AddConstructableBounds(prefab, size, center); var model = prefab.FindChild("model"); //========== Allows the building animation and material colors ==========// Shader shader = Shader.Find("MarmosetUBER"); Renderer[] renderers = prefab.GetComponentsInChildren <Renderer>(); SkyApplier skyApplier = prefab.EnsureComponent <SkyApplier>(); skyApplier.renderers = renderers; skyApplier.anchorSky = Skies.Auto; //========== Allows the building animation and material colors ==========// // Add large world entity ALLOWS YOU TO SAVE ON TERRAIN var lwe = prefab.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Far; // Add constructible var constructable = prefab.AddComponent <Constructable>(); constructable.allowedOutside = true; constructable.allowedInBase = true; constructable.allowedOnGround = true; constructable.allowedOnWall = false; constructable.rotationEnabled = true; constructable.allowedOnCeiling = false; constructable.allowedInSub = false; constructable.allowedOnConstructables = false; constructable.model = model; constructable.techType = TechType; PrefabIdentifier prefabID = prefab.AddComponent <PrefabIdentifier>(); prefabID.ClassId = ClassID; //AddBubbles(prefab); PowerRelay solarPowerRelay = CraftData.GetPrefabForTechType(TechType.SolarPanel).GetComponent <PowerRelay>(); var ps = prefab.AddComponent <PowerSource>(); ps.maxPower = 500f; var pFX = prefab.AddComponent <PowerFX>(); pFX.vfxPrefab = solarPowerRelay.powerFX.vfxPrefab; pFX.attachPoint = prefab.transform; var pr = prefab.AddComponent <PowerRelay>(); pr.powerFX = pFX; pr.maxOutboundDistance = 15; pr.internalPowerSource = ps; prefab.AddComponent <TechTag>().type = TechType; prefab.AddComponent <AlterraGenController>(); Resources.UnloadAsset(solarPowerRelay); //Apply the glass shader here because of autosort lockers for some reason doesnt like it. MaterialHelpers.ApplyGlassShaderTemplate(prefab, "_glass", Mod.ModName); return(prefab); } } catch (Exception e) { QuickLogger.Error(e.Message); } return(null); }
public override bool FindAllComponents() { try { if (_isInitialized) { return(true); } #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Home var home = InterfaceHelpers.FindGameObject(canvasGameObject, "Home"); #endregion #region Amount _amountOfPodsCount = InterfaceHelpers.FindGameObject(home, "AmountOfPodsCount")?.GetComponent <Text>(); #endregion #region GasPodButton var gasPodButtonObj = InterfaceHelpers.FindGameObject(home, "GasPodButton"); InterfaceHelpers.CreateButton(gasPodButtonObj, "GasPodBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, GaspodCollectorBuildable.TakeGaspod()); var image = gasPodButtonObj.transform.Find("Image"); var guiIcon = image.gameObject.EnsureComponent <uGUI_Icon>(); guiIcon.sprite = SpriteManager.Get(TechType.GasPod); #endregion #region DumpBTNButton var dumpBTNButtonObj = InterfaceHelpers.FindGameObject(home, "DumpBTN"); InterfaceHelpers.CreateButton(dumpBTNButtonObj, "DumpBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, GaspodCollectorBuildable.DumpPull(), GaspodCollectorBuildable.DumpMessage()); #endregion #region Messages InterfaceHelpers.FindGameObject(home, "AmountOfPods").GetComponent <Text>().text = GaspodCollectorBuildable.AmountOfPodsMessage(); InterfaceHelpers.FindGameObject(home, "ClickToTake").GetComponent <Text>().text = GaspodCollectorBuildable.InstructionsMessage(); InterfaceHelpers.FindGameObject(home, "Battery (1)").FindChild("Battery Label").GetComponent <Text>().text = $"{GaspodCollectorBuildable.Battery()} 1"; InterfaceHelpers.FindGameObject(home, "Battery (2)").FindChild("Battery Label").GetComponent <Text>().text = $"{GaspodCollectorBuildable.Battery()} 2"; #endregion #region ColorPicker Button var colorBTN = InterfaceHelpers.FindGameObject(home, "ColorBTN"); InterfaceHelpers.CreateButton(colorBTN, "ColorBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, GaspodCollectorBuildable.ColorPicker()); #endregion #region Battery Button var batteryBTN = InterfaceHelpers.FindGameObject(home, "BatteryBTN").FindChild("Fill"); InterfaceHelpers.CreateButton(batteryBTN, "BatteryBTN", InterfaceButtonMode.Background, OnButtonClick, _greenColor, _fireBrickColor, MAX_INTERACTION_DISTANCE, GaspodCollectorBuildable.BatteryReceptacle()); #endregion #region ColorPicker var colorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPicker"); #endregion #region Color Paginator var _colorPaginator = InterfaceHelpers.FindGameObject(colorPicker, "Paginator"); #endregion #region Color Grid var _colorGrid = InterfaceHelpers.FindGameObject(colorPicker, "Grid"); #endregion #region ColorPage _colorPage.SetupGrid(66, GaspodCollectorBuildable.ColorItemPrefab, _colorGrid, _colorPaginator.GetComponent <Text>(), OnButtonClick); #endregion #region Prev Color Button var prevColorBtn = InterfaceHelpers.FindGameObject(colorPicker, "PrevBTN"); InterfaceHelpers.CreatePaginator(prevColorBtn, -1, _colorPage.ChangeColorPageBy, _startColor, _hoverColor); #endregion #region Next Color Button var nextColorBtn = InterfaceHelpers.FindGameObject(colorPicker, "NextBTN"); InterfaceHelpers.CreatePaginator(nextColorBtn, 1, _colorPage.ChangeColorPageBy, _startColor, _hoverColor); #endregion #region HomeButton var homeBTN = InterfaceHelpers.FindGameObject(colorPicker, "HomeBTN"); InterfaceHelpers.CreateButton(homeBTN, "HomeBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, GaspodCollectorBuildable.GoHome()); #endregion #region Batteries var b1 = InterfaceHelpers.FindGameObject(home, "Battery (1)"); var b2 = InterfaceHelpers.FindGameObject(home, "Battery (2)"); _b1Fill = InterfaceHelpers.FindGameObject(b1, "Fill")?.GetComponent <Image>(); _b2Fill = InterfaceHelpers.FindGameObject(b2, "Fill")?.GetComponent <Image>(); _b1Amount = InterfaceHelpers.FindGameObject(b1, "Amount")?.GetComponent <Text>(); _b2Amount = InterfaceHelpers.FindGameObject(b2, "Amount")?.GetComponent <Text>(); #endregion return(true); } catch (Exception e) { QuickLogger.Error <GasopodCollectorDisplayManager>($"{e.Message}\n{e.StackTrace}"); return(false); } }
public override bool FindAllComponents() { try { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Home var home = InterfaceHelpers.FindGameObject(canvasGameObject, "Home"); #endregion #region NotOnBase var notOnbase = InterfaceHelpers.FindGameObject(canvasGameObject, "NotOnBase")?.GetComponentInChildren <Text>(); if (notOnbase != null) { notOnbase.text = HydroponicHarvestersBuildable.NotOnBaseMessage(); } #endregion #region Controls var controls = InterfaceHelpers.FindGameObject(home, "Controls"); #endregion #region LightButton var lightBTN = InterfaceHelpers.FindGameObject(controls, "LightBTN"); InterfaceHelpers.CreateButton(lightBTN, "LightBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.ToggleLightMessage()); var ligtIcon = InterfaceHelpers.FindGameObject(lightBTN, "Icon").AddComponent <uGUI_Icon>(); ligtIcon.sprite = SpriteManager.Get(TechType.Flashlight); #endregion #region DNA Counter _dnaCounter = InterfaceHelpers.FindGameObject(home, "Limit")?.GetComponent <Text>(); #endregion #region Power Usage _powerUsage = InterfaceHelpers.FindGameObject(home, "PowerUsage")?.GetComponent <Text>(); #endregion #region ItemsCount _itemsCount = InterfaceHelpers.FindGameObject(home, "ItemsCount")?.GetComponent <Text>(); #endregion #region TimeLeft _timeLeft = InterfaceHelpers.FindGameObject(home, "TimeLeft")?.GetComponent <Text>(); #endregion #region CleanerButton var cleanerButtonObj = InterfaceHelpers.FindGameObject(controls, "CleanerBTN"); var cleanerIcon = InterfaceHelpers.FindGameObject(cleanerButtonObj, "Icon").AddComponent <uGUI_Icon>(); cleanerIcon.sprite = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "FloraKleen.png")); InterfaceHelpers.CreateButton(cleanerButtonObj, "CleanerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.CleanerBTNMessage()); #endregion #region DumpBTNButton var dumpBTNButtonObj = InterfaceHelpers.FindGameObject(controls, "DumpBTN"); InterfaceHelpers.CreateButton(dumpBTNButtonObj, "DumpBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.DumpBTNMessage()); #endregion #region ColorPicker Button var colorBTN = InterfaceHelpers.FindGameObject(controls, "ColorBTN"); InterfaceHelpers.CreateButton(colorBTN, "ColorBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.ColorPickerBTNMessage()); #endregion #region ColorPicker var colorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPicker"); #endregion #region ColorPage _colorPage.SetupGrid(50, HydroponicHarvestersModelPrefab.ColorItemPrefab, colorPicker, OnButtonClick, _startColor, _hoverColor); #endregion #region PowerLevelButton var powerLevelBTN = InterfaceHelpers.FindGameObject(controls, "PowerLevelBTN"); _powerLevelText = InterfaceHelpers.FindGameObject(powerLevelBTN, "Text").GetComponent <Text>(); InterfaceHelpers.CreateButton(powerLevelBTN, "PowerLevelBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.PowerLevelBTNMessage()); #endregion #region DNA _dnaGrid = _mono.gameObject.AddComponent <GridHelper>(); _dnaGrid.OnLoadDisplay += OnLoadDnaGrid; _dnaGrid.Setup(4, HydroponicHarvestersModelPrefab.ItemPrefab, home, _startColor, _hoverColor, OnButtonClick, 5, string.Empty, string.Empty, "Slots", string.Empty, string.Empty); #endregion #region ModeButton var modeBTN = InterfaceHelpers.FindGameObject(controls, "ModeBTN"); _modeIcon = InterfaceHelpers.FindGameObject(modeBTN, "Icon").AddComponent <uGUI_Icon>(); _modeIcon.sprite = MelonIconSprite; InterfaceHelpers.CreateButton(modeBTN, "ModeBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, HydroponicHarvestersBuildable.ModeBTNMessage()); #endregion } catch (Exception e) { QuickLogger.Error($"Message: {e.Message} || StackTrace: {e.StackTrace}"); return(false); } return(true); }
private void AddComponentsToPrefab() { var go = FcAssetBundlesService.PublicAPI.GetAssetBundleByName(FcAssetBundlesService.PublicAPI.GlobalBundleName); if (go != null) { OriginalPrefab = go.LoadAsset <GameObject>("FloraKleen_Bottle"); } else { QuickLogger.Error <FloraKleenPatcher>("Couldnt find bundle in the bundle service."); return; } if (OriginalPrefab == null) { QuickLogger.Error("Freon prefab not found"); return; } var rigidbody = OriginalPrefab.AddComponent <Rigidbody>(); // Make the object drop slowly in water var wf = OriginalPrefab.AddComponent <WorldForces>(); wf.underwaterGravity = 0; wf.underwaterDrag = 10f; wf.enabled = true; wf.useRigidbody = rigidbody; // Add fabricating animation var fabricatingA = OriginalPrefab.AddComponent <VFXFabricating>(); fabricatingA.localMinY = -0.1f; fabricatingA.localMaxY = 0.6f; fabricatingA.posOffset = new Vector3(0f, 0f, 0f); fabricatingA.eulerOffset = new Vector3(0f, 0f, 0f); fabricatingA.scaleFactor = 1.0f; //// Set proper shaders (for crafting animation) Shader marmosetUber = Shader.Find("MarmosetUBER"); var renderer = OriginalPrefab.GetComponentInChildren <Renderer>(); renderer.material.shader = marmosetUber; // Update sky applier var applier = OriginalPrefab.GetComponent <SkyApplier>(); if (applier == null) { applier = OriginalPrefab.AddComponent <SkyApplier>(); } applier.renderers = new Renderer[] { renderer }; applier.anchorSky = Skies.Auto; // We can pick this item var pickupable = OriginalPrefab.AddComponent <Pickupable>(); pickupable.isPickupable = true; pickupable.randomizeRotationWhenDropped = true; // Set collider var collider = OriginalPrefab.GetComponent <BoxCollider>(); collider.enabled = true; collider.isTrigger = true; var placeTool = OriginalPrefab.AddComponent <PlaceTool>(); placeTool.allowedInBase = true; placeTool.allowedOnBase = false; placeTool.allowedOnCeiling = false; placeTool.allowedOnConstructable = true; placeTool.allowedOnGround = true; placeTool.allowedOnRigidBody = true; placeTool.allowedOnWalls = false; placeTool.allowedOutside = false; placeTool.rotationEnabled = true; placeTool.enabled = true; placeTool.hasAnimations = false; placeTool.hasBashAnimation = false; placeTool.hasFirstUseAnimation = false; placeTool.mainCollider = collider; placeTool.pickupable = pickupable; placeTool.drawTime = 0.5f; placeTool.dropTime = 1; placeTool.holsterTime = 0.35f; OriginalPrefab.EnsureComponent <FCSTechFabricatorTag>(); ApplyShaders(); }
internal void Register() { HydroponicHarvestersModelPrefab.GetPrefabs(); _prefab = HydroponicHarvestersModelPrefab.BottlePrefab; if (_prefab == null) { QuickLogger.Error("FloraKleen prefab is null"); return; } GameObjectHelpers.AddConstructableBounds(_prefab, new Vector3(0.1969692f, 0.25098f, 0.1916926f), new Vector3(0, -0.01675579f, 0)); QuickLogger.Debug("Added Constructable Bounds"); //Make the rigid body isKinematic so it doesnt shake the cyclops var rb = _prefab.AddComponent <Rigidbody>(); rb.isKinematic = true; QuickLogger.Debug("Added Rigid Body"); // Set collider var collider = _prefab.GetComponentInChildren <Collider>(); collider.enabled = true; collider.isTrigger = true; QuickLogger.Debug("Added Getting Collider"); // Make the object drop slowly in water var wf = _prefab.EnsureComponent <WorldForces>(); wf.underwaterGravity = 0; wf.underwaterDrag = 10f; wf.enabled = true; QuickLogger.Debug("Ensuring World Forces"); // Add fabricating animation var fabricatingA = _prefab.EnsureComponent <VFXFabricating>(); fabricatingA.localMinY = -0.1f; fabricatingA.localMaxY = 0.6f; fabricatingA.posOffset = new Vector3(0f, 0f, 0f); fabricatingA.eulerOffset = new Vector3(0f, 0f, 0f); fabricatingA.scaleFactor = 1.0f; QuickLogger.Debug("Ensuring VFXFabricating"); //// Set proper shaders (for crafting animation) var renderer = _prefab.GetComponentInChildren <Renderer>(); QuickLogger.Debug("Getting Renderer"); // Update sky applier var applier = _prefab.EnsureComponent <SkyApplier>(); applier.renderers = new Renderer[] { renderer }; applier.anchorSky = Skies.Auto; QuickLogger.Debug("Ensuring SkyApplier"); // We can pick this item var pickupable = _prefab.EnsureComponent <Pickupable>(); pickupable.isPickupable = true; pickupable.randomizeRotationWhenDropped = true; QuickLogger.Debug("Ensuring Pickupable"); //Allow this kit to be placed on surfaces in these situations var placeTool = _prefab.EnsureComponent <PlaceTool>(); placeTool.allowedInBase = true; placeTool.allowedOnBase = false; placeTool.allowedOnCeiling = false; placeTool.allowedOnConstructable = true; placeTool.allowedOnGround = true; placeTool.allowedOnRigidBody = true; placeTool.allowedOnWalls = false; placeTool.allowedOutside = false; placeTool.rotationEnabled = true; placeTool.enabled = true; placeTool.hasAnimations = false; placeTool.hasBashAnimation = false; placeTool.hasFirstUseAnimation = false; placeTool.mainCollider = collider; placeTool.pickupable = pickupable; placeTool.drawTime = 0.5f; placeTool.dropTime = 1; placeTool.holsterTime = 0.35f; QuickLogger.Debug("Ensuring PlaceTool"); }
/// <summary> /// Gets the prefabs from the bundle /// </summary> /// <returns></returns> internal static bool GetPrefabs() { if (!_initialized) { QuickLogger.Debug("GetPrefabs"); AssetBundle assetBundle = AssetHelper.Asset(Mod.ModFolderName, Mod.BundleName); //If the result is null return false. if (assetBundle == null) { QuickLogger.Error($"AssetBundle is Null!"); return(false); } QuickLogger.Debug($"AssetBundle Set"); //We have found the asset bundle and now we are going to continue by looking for the model. GameObject prefab = assetBundle.LoadAsset <GameObject>(Mod.ModName); GameObject screenPrefab = assetBundle.LoadAsset <GameObject>(Mod.ModScreenName); //If the prefab isn't null lets add the shader to the materials if (prefab != null) { ApplyShaders(prefab, assetBundle); OxstationPrefab = prefab; QuickLogger.Debug($"Oxstation Prefab Found!"); } else { QuickLogger.Error($"Oxstation Prefab Not Found!"); return(false); } //If the prefab isn't null lets add the shader to the materials if (screenPrefab != null) { ApplyShaders(screenPrefab, assetBundle); OxstationScreenPrefab = screenPrefab; QuickLogger.Debug($"Oxstation Screen Prefab Found!"); } else { QuickLogger.Error($"Oxstation Screen Prefab Not Found!"); return(false); } GameObject item = assetBundle.LoadAsset <GameObject>("OxStation_Item"); if (item != null) { ItemPrefab = item; } else { QuickLogger.Error($"OxStation_Item Not Found!"); return(false); } _initialized = true; } return(true); }
public override void Initialize() { _prefabIdentifier = GetComponent <PrefabIdentifier>().Id ?? GetComponentInParent <PrefabIdentifier>().Id; _spinTitle = Animator.StringToHash("SpinTitle"); var target = gameObject.FindChild("targetPos"); if (target == null) { QuickLogger.Error("Cant find trigger targetPos"); return; } if (_buildable == null) { _buildable = GetComponentInParent <Constructable>() ?? GetComponent <Constructable>(); } if (ColorManager == null) { ColorManager = new ColorManager(); } ColorManager.Initialize(gameObject, QuantumTeleporterBuildable.BodyMaterial); TeleportManager.Initialize(); if (NameController == null) { NameController = gameObject.EnsureComponent <NameController>(); } if (AnimationManager == null) { AnimationManager = gameObject.GetComponent <AnimationManager>(); } if (DisplayManager == null) { DisplayManager = gameObject.GetComponent <QTDisplayManager>(); } if (SubRoot == null) { SubRoot = GetComponentInParent <SubRoot>(); } if (Manager == null) { Manager = BaseManager.FindManager(SubRoot); } if (AudioManager == null) { AudioManager = new AudioManager(gameObject.GetComponent <FMOD_CustomLoopingEmitter>()); } AudioManager.LoadFModAssets("/env/use_teleporter_use_loop", "use_teleporter_use_loop"); if (PowerManager == null) { PowerManager = new QTPowerManager(this); } //var pingInstance = gameObject.GetComponent<PingInstance>() ?? // gameObject.GetComponentInChildren<PingInstance>(); //if (QTPingManager == null) // QTPingManager = new QTPingManager(); //QTPingManager.Initialize(pingInstance); DisplayManager.Setup(this); NameController.Initialize(QuantumTeleporterBuildable.Submit(), Mod.FriendlyName); NameController.SetCurrentName(GetNewName(), DisplayManager.GetNameTextBox()); NameController.OnLabelChanged += OnLabelChanged; Manager.OnBaseUnitsChanged += OnBaseUnitsChanged; AddToManager(); AnimationManager.SetBoolHash(_spinTitle, true); if (QTDoorManager == null) { QTDoorManager = gameObject.FindChild("model").FindChild("anims").FindChild("door").AddComponent <QTDoorManager>(); } QTDoorManager.Initalize(this); var trigger = target.AddComponent <QTTriggerBoxManager>(); trigger.OnPlayerExit += QTDoorManager.OnPlayerExit; _target = target.transform; IsInitialized = true; }
public override bool FindAllComponents() { try { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Home var home = InterfaceHelpers.FindGameObject(canvasGameObject, "Home"); #endregion #region Powered Off Page var poweredOffPage = InterfaceHelpers.FindGameObject(canvasGameObject, "PoweredOff"); #endregion #region ColorPickerPage var colorPickerPage = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPage"); #endregion #region OpenRackBTNButton var openRackBTN = InterfaceHelpers.FindGameObject(home, "OpenBTN"); InterfaceHelpers.CreateButton(openRackBTN, "OpenBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.OpenServerRackPage()); #endregion #region CloseRackBTNButton var closeBTN = InterfaceHelpers.FindGameObject(home, "CloseBTN"); InterfaceHelpers.CreateButton(closeBTN, "CloseBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.CloseServerRackPage()); #endregion #region ColorPickerBTN var colorPickerBTN = InterfaceHelpers.FindGameObject(home, "ColorPicker"); InterfaceHelpers.CreateButton(colorPickerBTN, "ColorPickerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.ColorPage()); #endregion #region ColorPickerMainHomeBTN var colorPickerHomeBTN = InterfaceHelpers.FindGameObject(colorPickerPage, "HomeBTN"); InterfaceHelpers.CreateButton(colorPickerHomeBTN, "HomeBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.GoToHome()); #endregion #region ColorPage _colorPickerPage.SetupGrid(20, DSSModelPrefab.ColorItemPrefab, colorPickerPage, OnButtonClick, _startColor, _hoverColor); #endregion #region AddServerBTN var addServerBTN = InterfaceHelpers.FindGameObject(home, "AddServerBTN"); InterfaceHelpers.CreateButton(addServerBTN, "AddServerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.AddServer()); #endregion _counter = InterfaceHelpers.FindGameObject(home, "Counter")?.GetComponent <Text>(); var poweredOffMessage = InterfaceHelpers.FindGameObject(poweredOffPage, "Text")?.GetComponent <Text>(); poweredOffMessage.text = AuxPatchers.PoweredOff(); return(true); } catch (Exception e) { QuickLogger.Error($"{e.Message} || {e.StackTrace}"); return(false); } }
public override GameObject GetGameObject() { try { if (_prefab == null) { QuickLogger.Error("Bottle Prefab is null", true); return(null); } var prefab = GameObject.Instantiate(_prefab); prefab.name = this.PrefabFileName; PrefabIdentifier prefabID = prefab.EnsureComponent <PrefabIdentifier>(); prefabID.ClassId = this.ClassID; var techTag = prefab.EnsureComponent <TechTag>(); techTag.type = TechType; //Add the FCSTechFabricatorTag component prefab.AddComponent <FCSTechFabricatorTag>(); // Set collider var collider = prefab.GetComponentInChildren <Collider>(); collider.enabled = true; collider.isTrigger = true; QuickLogger.Debug("Added Getting Collider"); // We can pick this item var pickupable = prefab.EnsureComponent <Pickupable>(); pickupable.isPickupable = true; pickupable.randomizeRotationWhenDropped = true; QuickLogger.Debug("Ensuring Pickupable"); //Allow this kit to be placed on surfaces in these situations var placeTool = prefab.EnsureComponent <PlaceTool>(); placeTool.allowedInBase = true; placeTool.allowedOnBase = false; placeTool.allowedOnCeiling = false; placeTool.allowedOnConstructable = true; placeTool.allowedOnGround = true; placeTool.allowedOnRigidBody = true; placeTool.allowedOnWalls = false; placeTool.allowedOutside = false; placeTool.rotationEnabled = true; placeTool.enabled = true; placeTool.hasAnimations = false; placeTool.hasBashAnimation = false; placeTool.hasFirstUseAnimation = false; placeTool.mainCollider = collider; placeTool.pickupable = pickupable; placeTool.drawTime = 0.5f; placeTool.dropTime = 1; placeTool.holsterTime = 0.35f; QuickLogger.Debug("Ensuring PlaceTool"); MaterialHelpers.ApplyAlphaShader(HydroponicHarvestersModelPrefab.BodyMaterial, prefab); return(prefab); } catch (Exception e) { QuickLogger.Error(e.Message); return(null); } }
public bool GetPrefabs() { QuickLogger.Debug("GetPrefabs"); AssetBundle assetBundle = AssetHelper.Asset(Mod.ModFolderName, Mod.BundleName); //If the result is null return false. if (assetBundle == null) { QuickLogger.Error($"AssetBundle is Null!"); return(false); } _assetBundle = assetBundle; QuickLogger.Debug($"AssetBundle Set"); //We have found the asset bundle and now we are going to continue by looking for the model. GameObject prefab = assetBundle.LoadAsset <GameObject>(Mod.GameObjectName); //If the prefab isn't null lets add the shader to the materials if (prefab != null) { _Prefab = prefab; //Lets apply the material shader ApplyShaders(prefab); QuickLogger.Debug($"{this.FriendlyName} Prefab Found!"); } else { QuickLogger.Error($"{this.FriendlyName} Prefab Not Found!"); return(false); } var itemPrefab = assetBundle.LoadAsset <GameObject>("Item"); //If the prefab isn't null lets add the shader to the materials if (itemPrefab != null) { ItemPrefab = itemPrefab; QuickLogger.Debug($"{this.FriendlyName} Item Prefab Found!"); } else { QuickLogger.Error($"{this.FriendlyName} Item Prefab Not Found!"); return(false); } var colorItemPrefab = assetBundle.LoadAsset <GameObject>("ColorItem"); //If the prefab isn't null lets add the shader to the materials if (colorItemPrefab != null) { ColorItemPrefab = colorItemPrefab; QuickLogger.Debug($"{this.FriendlyName} Color Item Prefab Found!"); } else { QuickLogger.Error($"{this.FriendlyName} Color Item Prefab Not Found!"); return(false); } return(true); }
private bool FindAllComponents() { #region Canvas _canvasGameObject = this.gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (_canvasGameObject == null) { QuickLogger.Error("Canvas not found."); return(false); } #endregion #region HandTarget var storage = _canvasGameObject.FindChild("HandTarget"); if (storage == null) { QuickLogger.Error("Storage not found."); return(false); } var storageTarget = storage.AddComponent <InterfaceButton>(); storageTarget.BtnName = "StorageBTN"; storageTarget.ButtonMode = InterfaceButtonMode.None; storageTarget.OnButtonClick = OnButtonClick; storageTarget.TextLineOne = GetLanguage(AMMiniMedBayBuildable.OpenStorageKey); storageTarget.Container = _mono.Container; #endregion #region MainPage var mainPage = _canvasGameObject.FindChild("Main")?.gameObject; if (mainPage == null) { QuickLogger.Error("Main Page not found."); return(false); } #endregion #region Color Picker Page var colorPickerPage = _canvasGameObject.FindChild("ColorPicker")?.gameObject; if (colorPickerPage == null) { QuickLogger.Error("Color Picker Page not found."); return(false); } #endregion #region Power Page var powerPage = _canvasGameObject.FindChild("NoPower")?.gameObject; if (powerPage == null) { QuickLogger.Error("Power Page not found."); return(false); } #endregion #region Storage Text _storageTxt = _canvasGameObject.FindChild("StorageTXT").GetComponent <Text>(); if (_storageTxt == null) { QuickLogger.Error("Storage Text not found."); return(false); } #endregion #region Heal Button _healButton = mainPage.FindChild("HealBTN")?.gameObject; if (_healButton == null) { QuickLogger.Error("Heal button not found."); return(false); } var healBtn = _healButton.AddComponent <InterfaceButton>(); healBtn.BtnName = "HealBTN"; healBtn.ButtonMode = InterfaceButtonMode.Background; healBtn.OnButtonClick = OnButtonClick; healBtn.TextLineOne = GetLanguage(AMMiniMedBayBuildable.HealKey); #endregion #region Home Button var homeButton = colorPickerPage.FindChild("Image")?.gameObject; if (homeButton == null) { QuickLogger.Error("Home Button Not Found not found."); return(false); } var homeBtn = homeButton.AddComponent <InterfaceButton>(); homeBtn.BtnName = "HomeBTN"; homeBtn.ButtonMode = InterfaceButtonMode.Background; homeBtn.OnButtonClick = OnButtonClick; homeBtn.TextLineOne = GetLanguage(AMMiniMedBayBuildable.HomeKey); #endregion #region Color Picker Button var cPButton = mainPage.FindChild("Paint_Spray")?.gameObject; if (cPButton == null) { QuickLogger.Error("Color Picker Button not found."); return(false); } var cpBtn = cPButton.AddComponent <InterfaceButton>(); cpBtn.BtnName = "CPBTN"; cpBtn.ButtonMode = InterfaceButtonMode.Background; cpBtn.OnButtonClick = OnButtonClick; cpBtn.TextLineOne = GetLanguage(AMMiniMedBayBuildable.ColorPickerKey); #endregion #region L Nav var lNavButton = colorPickerPage.FindChild("L_Nav")?.gameObject; if (lNavButton == null) { QuickLogger.Error("LNav button not found."); return(false); } var lNavBtn = lNavButton.AddComponent <PaginatorButton>(); lNavBtn.AmountToChangePageBy = -1; lNavBtn.ChangePageBy = ChangeColorPageBy; lNavBtn.HoverTextLineOne = GetLanguage(AMMiniMedBayBuildable.OnHoverLPaginatorKey); #endregion #region R Nav var rNavButton = colorPickerPage.FindChild("R_Nav")?.gameObject; if (rNavButton == null) { QuickLogger.Error("RNav button not found."); return(false); } var rNavBtn = rNavButton.AddComponent <PaginatorButton>(); rNavBtn.AmountToChangePageBy = 1; rNavBtn.ChangePageBy = ChangeColorPageBy; rNavBtn.HoverTextLineOne = GetLanguage(AMMiniMedBayBuildable.OnHoverRPaginatorKey); #endregion #region Page Number _colorPageNumber = colorPickerPage.FindChild("Text").GetComponent <Text>(); if (_colorPageNumber == null) { QuickLogger.Error("Page Number not found"); return(false); } #endregion #region Color Container _colorPageContainer = colorPickerPage.FindChild("Grid")?.gameObject; if (_colorPageContainer == null) { QuickLogger.Error("Color Grid not found"); return(false); } #endregion #region Health Staus Text var health_LBL = mainPage.FindChild("Health_LBL").GetComponent <Text>(); if (health_LBL == null) { QuickLogger.Error("Health Status label not found."); return(false); } health_LBL.text = GetLanguage(AMMiniMedBayBuildable.HealthStatusLBLKey); #endregion #region N2 Status Text _n2Status = mainPage.FindChild("N2TXT")?.gameObject; if (_n2Status == null) { QuickLogger.Error("N2 Status label not found."); return(false); } #endregion #region Health Text _healthPercentage = mainPage.FindChild("PlayerHealthTXT").GetComponent <Text>(); if (_healthPercentage == null) { QuickLogger.Error("Player Health TXT label not found."); return(false); } #endregion #region No Power Text var noPowerText = powerPage.FindChild("NoPowerTxt").GetComponent <Text>(); if (noPowerText == null) { QuickLogger.Error("No Power TXT label not found."); return(false); } noPowerText.text = GetLanguage(AMMiniMedBayBuildable.NoPowerKey); #endregion #region No Power Message var noPowerMessageText = powerPage.FindChild("MessageTXT").GetComponent <Text>(); if (noPowerMessageText == null) { QuickLogger.Error("No Power Message TXT label not found."); return(false); } noPowerMessageText.text = GetLanguage(AMMiniMedBayBuildable.NoPowerMessage); #endregion return(true); }
private bool GetPrefabs() { QuickLogger.Debug("GetPrefabs"); AssetBundle assetBundle = AssetHelper.Asset(Mod.ModFolderName, Mod.BundleName); //If the result is null return false. if (assetBundle == null) { QuickLogger.Error($"AssetBundle is Null!"); return(false); } AssetBundle = assetBundle; QuickLogger.Debug($"AssetBundle Set"); //We have found the asset bundle and now we are going to continue by looking for the model. GameObject prefab = assetBundle.LoadAsset <GameObject>("AlterraDeepDriller"); //If the prefab isn't null lets add the shader to the materials if (prefab != null) { _prefab = prefab; //Lets apply the material shader ApplyShaders(prefab); QuickLogger.Debug($"{this.FriendlyName} Prefab Found!"); } else { QuickLogger.Error($"{this.FriendlyName} Prefab Not Found!"); return(false); } //We have found the asset bundle and now we are going to continue by looking for the model. GameObject listItem = assetBundle.LoadAsset <GameObject>("ListButton"); //If the prefab isn't null lets add the shader to the materials if (listItem != null) { ItemPrefab = listItem; QuickLogger.Debug("List item Prefab Found!"); } else { QuickLogger.Error("List item Prefab Not Found!"); return(false); } #region Battery Module //We have found the asset bundle and now we are going to continue by looking for the model. GameObject batteryModule = assetBundle.LoadAsset <GameObject>("Battery_Attachment"); //If the prefab isn't null lets add the shader to the materials if (batteryModule != null) { ApplyShaders(batteryModule); BatteryModule = batteryModule; QuickLogger.Debug($"Battery Module Prefab Found!"); } else { QuickLogger.Error($"Battery Module Prefab Not Found!"); return(false); } #endregion #region Solar Module //We have found the asset bundle and now we are going to continue by looking for the model. GameObject solarModule = assetBundle.LoadAsset <GameObject>("Solar_Panel_Attachment"); //If the prefab isn't null lets add the shader to the materials if (solarModule != null) { ApplyShaders(solarModule); SolarModule = solarModule; QuickLogger.Debug($"Solar Module Prefab Found!"); } else { QuickLogger.Error($"Solar Module Prefab Not Found!"); return(false); } #endregion #region Focus Module //We have found the asset bundle and now we are going to continue by looking for the model. GameObject focusModule = assetBundle.LoadAsset <GameObject>("Scanner_Screen_Attachment"); //If the prefab isn't null lets add the shader to the materials if (focusModule != null) { ApplyShaders(focusModule); FocusModule = focusModule; QuickLogger.Debug($"Focus Module Prefab Found!"); } else { QuickLogger.Error($"Solar Module Prefab Not Found!"); return(false); } #endregion return(true); }
private bool FindAllComponents() { #region Speed Text _speedText = gameObject.FindChild("Speed").FindChild("Text")?.GetComponent <Text>(); if (_speedText == null) { QuickLogger.Error("Speed Text not found."); return(false); } #endregion #region Depth Text _depthText = gameObject.FindChild("Depth").FindChild("Text")?.GetComponent <Text>(); if (_depthText == null) { QuickLogger.Error("Depth Text not found."); return(false); } #endregion #region Health _health = gameObject.FindChild("Health")?.gameObject; if (_health == null) { QuickLogger.Error("Health not found."); return(false); } #endregion #region Health Label _healthLbl = _health.FindChild("Health_LBL")?.gameObject; if (_healthLbl == null) { QuickLogger.Error("Health Label not found."); return(false); } #endregion #region Health Text _healthText = _healthLbl?.GetComponent <Text>(); if (_healthText == null) { QuickLogger.Error("Health Text not found."); return(false); } #endregion #region Health Color _healthColor = _healthText.color; if (_healthColor == null) { QuickLogger.Error("Health Color not found."); return(false); } #endregion #region Damaged _damaged = gameObject.FindChild("Damaged")?.gameObject; if (_damaged == null) { QuickLogger.Error("Damaged not found."); return(false); } #endregion #region Damaged Label _damagedLbl = _damaged.FindChild("DamagedLBL")?.gameObject; if (_damagedLbl == null) { QuickLogger.Error("Damaged Label not found."); return(false); } #endregion #region Damaged Label _damagedText = _damagedLbl.GetComponent <Text>(); if (_damagedLbl == null) { QuickLogger.Error("Damaged Text not found."); return(false); } #endregion #region Ping BTN _pingBTN = gameObject.FindChild("PingBTN")?.gameObject; if (_pingBTN == null) { QuickLogger.Error("Ping BTN not found."); return(false); } _pingBTNText = _pingBTN?.GetComponentInChildren <Text>(); if (_pingBTNText == null) { QuickLogger.Error("Ping BTN Text not found."); return(false); } var pingBTN = _pingBTN.AddComponent <InterfaceButton>(); pingBTN.OnButtonClick = Display.OnButtonClick; pingBTN.STARTING_COLOR = new Color(0.06640625f, 0.62109375f, 0.8828125f); pingBTN.BtnName = "PingBTN"; pingBTN.ButtonMode = InterfaceButtonMode.BackgroundScale; pingBTN.TextComponent = _pingBTNText; pingBTN.IncreaseButtonBy = 0.013282f; pingBTN.Tag = this; #endregion #region Power BTN PowerBTN = gameObject.FindChild("PowerBTN")?.gameObject; if (PowerBTN == null) { QuickLogger.Error("Power BTN not found."); return(false); } _powerBTNText = PowerBTN.GetComponentInChildren <Text>(); if (_powerBTNText == null) { QuickLogger.Error("Power BTN Text not found."); return(false); } var powerBTN = PowerBTN.AddComponent <InterfaceButton>(); powerBTN.OnButtonClick = Display.OnButtonClick; powerBTN.BtnName = "PowerBTN"; powerBTN.ButtonMode = InterfaceButtonMode.BackgroundScale; powerBTN.STARTING_COLOR = new Color(0.05859375f, 0.73828125f, 0.59375f); powerBTN.TextComponent = _powerBTNText; powerBTN.IncreaseButtonBy = 0.013282f; powerBTN.Tag = this; #endregion _foundComponents = true; return(true); }
internal static List <TechType> FindBiomeLoot(Transform tr, string currentBiome) { Dictionary <BiomeType, List <TechType> > biomeLoot = new Dictionary <BiomeType, List <TechType> >(); var loot = new List <TechType>(); foreach (BiomeType biomeType in Enum.GetValues(typeof(BiomeType))) { if (tr == null) { QuickLogger.Debug("FindBiomeLoot: Transform cannot be null"); return(null); } if (string.IsNullOrEmpty(currentBiome)) { QuickLogger.Error($"No biome found!"); return(null); } //QuickLogger.Debug($"Biome Found: {currentBiome}"); FindMatchingBiome(currentBiome, out var matchingBiome); if (biomeType.AsString().StartsWith(matchingBiome, StringComparison.OrdinalIgnoreCase)) { if (Mod.LootDistributionData == null) { QuickLogger.Debug("LootDistributionData is null"); return(null); } if (!Mod.LootDistributionData.GetBiomeLoot(biomeType, out LootDistributionData.DstData data)) { QuickLogger.Debug("DstData is null"); continue; } foreach (LootDistributionData.PrefabData prefabData in data.prefabs) { if (prefabData.classId.ToLower() != "none") { if (WorldEntityDatabase.TryGetInfo(prefabData.classId, out WorldEntityInfo wei)) { if (wei == null) { QuickLogger.Debug("WorldEntityInfo is null"); continue; } if (Resources.Contains(wei.techType)) { if (!biomeLoot.ContainsKey(biomeType)) { biomeLoot[biomeType] = new List <TechType>(); } biomeLoot[biomeType].Add(wei.techType); QuickLogger.Debug($"Added Resource: {wei.techType} in biome {biomeType}"); } } } } } } foreach (KeyValuePair <BiomeType, List <TechType> > pair in biomeLoot) { foreach (TechType techType in pair.Value) { if (techType.ToString().EndsWith("Chunk", StringComparison.OrdinalIgnoreCase) || techType.ToString().StartsWith("Drillable", StringComparison.OrdinalIgnoreCase)) { GetResourceForSpecial(techType, loot); } else { loot.Add(techType); } loot = loot.Distinct().ToList(); } } var lootWithAdditions = AdditionalLoot(loot, currentBiome); return(lootWithAdditions); }
public override bool FindAllComponents() { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Home var home = canvasGameObject.FindChild("Home")?.gameObject; if (home == null) { QuickLogger.Error("Home cannot be found"); return(false); } #endregion #region Oxygen Preloader var oxPreloaderlbl = home.FindChild("Ox_Preloader")?.FindChild("percentage")?.GetComponent <Text>(); if (oxPreloaderlbl == null) { QuickLogger.Error("Ox_Preloader cannot be found"); return(false); } _oxPreloaderLBL = oxPreloaderlbl; #endregion #region Oxygen Preloader Bar var oxPreloaderBar = home.FindChild("Ox_Preloader")?.FindChild("PreLoader_Bar_Front")?.GetComponent <Image>(); if (oxPreloaderBar == null) { QuickLogger.Error("Ox_Preloader Bar cannot be found"); return(false); } _oxPreloaderBar = oxPreloaderBar; #endregion #region Health Preloader var healthPreloaderlbl = home.FindChild("Health_Preloader")?.FindChild("percentage")?.GetComponent <Text>(); if (healthPreloaderlbl == null) { QuickLogger.Error("Health_Preloader cannot be found"); return(false); } _healthPreloaderlbl = healthPreloaderlbl; #endregion #region Health Preloader Bar var healthPreloaderBar = home.FindChild("Health_Preloader")?.FindChild("PreLoader_Bar_Front")?.GetComponent <Image>(); if (healthPreloaderBar == null) { QuickLogger.Error("Health_Preloader Bar cannot be found"); return(false); } _healthPreloaderBar = healthPreloaderBar; #endregion #region Take O2 BTN _giveO2BTN = home.transform.Find("Button")?.gameObject; if (_giveO2BTN == null) { QuickLogger.Error("Button not found."); return(false); } _giveOIntBtn = _giveO2BTN.AddComponent <InterfaceButton>(); _giveOIntBtn.ButtonMode = InterfaceButtonMode.Background; _giveOIntBtn.STARTING_COLOR = dark_bg; _giveOIntBtn.OnButtonClick = OnButtonClick; _giveOIntBtn.BtnName = "giveO2"; #endregion #region Take O2 BTN LBL _buttonLbl = home.transform.Find("Button").Find("Text")?.gameObject.GetComponent <Text>(); if (_buttonLbl == null) { QuickLogger.Error("Button Text not found."); return(false); } _buttonLbl.text = OxStationBuildable.TakeOxygen(); #endregion #region Power Usage var powerUsage = home.transform.Find("Power_Usage")?.GetComponent <Text>(); if (powerUsage == null) { QuickLogger.Error("Power_Usage not found."); return(false); } _powerUsage = powerUsage; #endregion return(true); }
public override GameObject GetGameObject() { try { var prefab = GameObject.Instantiate(_prefab); if (QPatch.Configuration.Config.UseCustomBoundingBox) { var center = QPatch.Configuration.Config.BoundingCenter; var size = QPatch.Configuration.Config.BoundingSize; GameObjectHelpers.AddConstructableBounds(prefab, size.ToVector3(), center.ToVector3()); } var model = prefab.FindChild("model"); //========== Allows the building animation and material colors ==========// Shader shader = Shader.Find("MarmosetUBER"); Renderer[] renderers = prefab.GetComponentsInChildren <Renderer>(); SkyApplier skyApplier = prefab.EnsureComponent <SkyApplier>(); skyApplier.renderers = renderers; skyApplier.anchorSky = Skies.Auto; // Add large world entity ALLOWS YOU TO SAVE ON TERRAIN var lwe = prefab.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Far; //========== Allows the building animation and material colors ==========// // Add constructible var constructable = prefab.AddComponent <Constructable>(); constructable.allowedOutside = QPatch.Configuration.Config.AllowedOutside; constructable.allowedInBase = QPatch.Configuration.Config.AllowedInBase; constructable.allowedOnGround = QPatch.Configuration.Config.AllowedOnGround; constructable.allowedOnWall = QPatch.Configuration.Config.AllowedOnWall; constructable.rotationEnabled = QPatch.Configuration.Config.RotationEnabled; constructable.allowedOnCeiling = QPatch.Configuration.Config.AllowedOnCeiling; constructable.allowedInSub = QPatch.Configuration.Config.AllowedInSub; constructable.allowedOnConstructables = QPatch.Configuration.Config.AllowedOnConstructables; constructable.placeMaxDistance = QPatch.Configuration.Config.PlaceMaxDistance; //7f; constructable.placeMinDistance = QPatch.Configuration.Config.PlaceMinDistance; //5f; constructable.placeDefaultDistance = QPatch.Configuration.Config.PlaceDefaultDistance; //6f; constructable.model = model; constructable.techType = Singleton.TechType; PrefabIdentifier prefabID = prefab.AddComponent <PrefabIdentifier>(); prefabID.ClassId = Singleton.ClassID; MaterialHelpers.AddNewBubbles(prefab, new Vector3(0.722f, 1.03f, 0.775f), new Vector3(270f, 266f, 0f)); MaterialHelpers.AddNewBubbles(prefab, new Vector3(0.826f, 1.03f, -0.715f), new Vector3(270f, 266f, 0f)); MaterialHelpers.AddNewBubbles(prefab, new Vector3(-0.796f, 1.03f, -0.828f), new Vector3(270f, 266f, 0f)); MaterialHelpers.AddNewBubbles(prefab, new Vector3(-0.801f, 1.03f, 0.711f), new Vector3(270f, 266f, 0f)); prefab.AddComponent <TechTag>().type = Singleton.TechType; prefab.AddComponent <FCSDemoController>(); //Add the FCSTechFabricatorTag component prefab.AddComponent <FCSTechFabricatorTag>(); return(prefab); } catch (Exception e) { QuickLogger.Error(e.Message); return(null); } }
public override void Initialize() { _prefabId = GetComponentInParent <PrefabIdentifier>(); if (_prefabId == null) { QuickLogger.Error("Prefab Identifier Component was not found"); } if (_buildable == null) { _buildable = GetComponentInParent <Constructable>() ?? GetComponent <Constructable>(); } if (!FindAllComponents()) { IsInitialized = false; throw new MissingComponentException("Failed to find all components"); } if (PowerManager == null) { PowerManager = gameObject.EnsureComponent <AMMiniMedBayPowerManager>(); } if (PlayerTrigger == null) { PlayerTrigger = gameObject.FindChild("model").FindChild("Trigger").EnsureComponent <AMMiniMedBayTrigger>(); } if (PlayerTrigger != null) { PlayerTrigger.OnPlayerStay += OnPlayerStay; PlayerTrigger.OnPlayerExit += OnPlayerExit; } else { QuickLogger.Error("Player Trigger Component was not found"); } if (AnimationManager == null) { AnimationManager = gameObject.EnsureComponent <AMMiniMedBayAnimationManager>(); } if (PowerManager != null) { PowerManager.Initialize(this); PowerManager.OnPowerOutage += OnPowerOutage; PowerManager.OnPowerResume += OnPowerResume; //Setting to true to prevent power consumption when not in use on load PowerManager.SetHasBreakerTripped(true); } else { QuickLogger.Error("Power Manager Component was not found"); } PageHash = UnityEngine.Animator.StringToHash("state"); if (AudioHandler == null) { AudioHandler = new AMMiniMedBayAudioManager(gameObject.GetComponent <FMOD_CustomLoopingEmitter>()); } if (Container == null) { Container = new AMMiniMedBayContainer(this); } if (_display == null) { _display = gameObject.AddComponent <AMMiniMedBayDisplay>(); } if (Player.main.gameObject.GetComponent <NitrogenLevel>() != null) { _nitrogenLevel = Player.main.gameObject.GetComponent <NitrogenLevel>(); InvokeRepeating(nameof(UpdateNitrogenDisplay), 1, 0.5f); } IsInitialized = true; }
public override bool FindAllComponents() { try { #region Canvas var canvas = GameObjectHelpers.FindGameObject(gameObject, "Canvas"); #endregion #region Home Page var homePage = GameObjectHelpers.FindGameObject(canvas, "HomePage"); //Battery Fill _batteryFill = GameObjectHelpers.FindGameObject(homePage, "BatteryFrameFill")?.GetComponent <Image>(); //Power State GameObjectHelpers.FindGameObject(homePage, "PowerState_LBL").GetComponent <Text>().text = AlterraGenBuildable.PowerStateLBL(); _powerStateValue = GameObjectHelpers.FindGameObject(homePage, "PoweredState_Value")?.GetComponent <Text>(); //Power Unit GameObjectHelpers.FindGameObject(homePage, "PowerUnit_LBL").GetComponent <Text>().text = AlterraGenBuildable.PowerUnitLBL(); _powerUnitValue = GameObjectHelpers.FindGameObject(homePage, "PowerUnit_Value")?.GetComponent <Text>(); //Battery Percentage GameObjectHelpers.FindGameObject(homePage, "BatteryPercentage_LBL").GetComponent <Text>().text = AlterraGenBuildable.BatteryPercentageLBL(); _batteryPercentageValue = GameObjectHelpers.FindGameObject(homePage, "BatteryPercentage_Percentage")?.GetComponent <Text>(); //Breaker State GameObjectHelpers.FindGameObject(homePage, "BreakerState_LBL").GetComponent <Text>().text = AlterraGenBuildable.BreakerStateLBL(); _breakerStatusLight = GameObjectHelpers.FindGameObject(homePage, "BreakerState_StatusLight")?.GetComponent <Image>(); //Power Button var powerBTNObject = GameObjectHelpers.FindGameObject(homePage, "PowerBTN"); InterfaceHelpers.CreateButton(powerBTNObject, "PowerBTN", InterfaceButtonMode.Background, OnButtonClick, Color.white, Color.cyan, MAX_INTERACTION_DISTANCE); //Dump Button var dumpBTN = GameObjectHelpers.FindGameObject(homePage, "DumpBTN"); InterfaceHelpers.CreateButton(dumpBTN, "DumpBTN", InterfaceButtonMode.Background, OnButtonClick, Color.gray, Color.white, MAX_INTERACTION_DISTANCE); //Color Picker BTN var colorPickerBTN = GameObjectHelpers.FindGameObject(homePage, "ColorPickerBTN"); InterfaceHelpers.CreateButton(colorPickerBTN, "ColorPickerBTN", InterfaceButtonMode.Background, OnButtonClick, Color.gray, Color.white, MAX_INTERACTION_DISTANCE); _grid = _mono.gameObject.AddComponent <GridHelper>(); _grid.OnLoadDisplay += OnLoadItemsGrid; _grid.Setup(3, AlterraGenBuildable.ItemPrefab, homePage, Color.gray, Color.gray, OnButtonClick); #endregion #region PowerOff Page var poweroffPage = GameObjectHelpers.FindGameObject(canvas, "PowerOff"); var powerBTNObject2 = GameObjectHelpers.FindGameObject(poweroffPage, "PowerBTN"); InterfaceHelpers.CreateButton(powerBTNObject2, "PowerBTN", InterfaceButtonMode.Background, OnButtonClick, Color.white, Color.cyan, MAX_INTERACTION_DISTANCE); #endregion #region Color Page var colorPage = GameObjectHelpers.FindGameObject(canvas, "ColorPage"); _colorPage.SetupGrid(35, AlterraGenBuildable.ColorItemPrefab, colorPage, OnButtonClick, Color.white, Color.cyan); #endregion } catch (Exception e) { QuickLogger.Error(e.Message); return(false); } return(true); }
/// <summary> /// Writes an ERROR level log to the log file. Can be optionally printed to screen. /// </summary> /// <param name="logmessage">The log message to write.</param> /// <param name="showOnScreen">if set to <c>true</c> the log message will show on screen.</param> public void Error(string logmessage, bool showOnScreen = false) { QuickLogger.Error(logmessage, showOnScreen, Assembly.GetCallingAssembly().GetName()); }
public override bool FindAllComponents() { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas cannot be found"); return(false); } #endregion #region Home var home = canvasGameObject.FindChild("Home")?.gameObject; if (home == null) { QuickLogger.Error("Unable to find Home GameObject"); return(false); } #endregion #region Settings var settings = canvasGameObject.FindChild("Settings")?.gameObject; if (settings == null) { QuickLogger.Error("Unable to find Settings GameObject"); return(false); } #endregion #region ColorPicker var colorPicker = canvasGameObject.FindChild("ColorPicker")?.gameObject; if (colorPicker == null) { QuickLogger.Error("Unable to find colorPicker GameObject"); return(false); } #endregion #region Doors var doorsResult = InterfaceHelpers.FindGameObject(canvasGameObject, "Doors", out var doorsOutput); if (!doorsResult) { return(false); } var doors = doorsOutput; #endregion #region Start Button var startButtonResult = InterfaceHelpers.CreateButton(home, "Button", "startBTN", InterfaceButtonMode.Background, _startColor, _hoverColor, OnButtonClick, out var startButton); startButton.TextLineOne = "Start Cooking"; if (!startButtonResult) { return(false); } _startButton = startButton; #endregion #region Color Picker var colorPickerResult = InterfaceHelpers.CreateButton(settings, "Paint_BTN", "colorPickerBTN", InterfaceButtonMode.Background, OnButtonClick, out var colorPickerButton); colorPickerButton.TextLineOne = "Color Picker Page"; if (!colorPickerResult) { return(false); } #endregion #region Settings BTN var settingsResult = InterfaceHelpers.CreateButton(home, "Settings", "settingsBTN", InterfaceButtonMode.Background, OnButtonClick, out var settingsButton); settingsButton.TextLineOne = SeaCookerBuildable.GoToSettingsPage(); if (!settingsResult) { return(false); } #endregion #region Fuel Tank BTN var fuelTankResult = InterfaceHelpers.CreateButton(home, "Tank_BTN", "fuelTankBTN", InterfaceButtonMode.Background, OnButtonClick, out var fuelTankButton); fuelTankButton.TextLineOne = "Open Fuel Tank"; if (!fuelTankResult) { return(false); } #endregion #region Settings Color BTN var settingsCResult = InterfaceHelpers.CreateButton(colorPicker, "Home_BTN", "settingsBTN", InterfaceButtonMode.TextColor, OnButtonClick, out var settings_C_BTN); settings_C_BTN.ChangeText($"< {SeaCookerBuildable.SettingsPage()}"); settings_C_BTN.TextLineOne = $"{SeaCookerBuildable.GoToSettingsPage()}"; if (!settingsCResult) { QuickLogger.Error($"Can't find settingsBTN"); return(false); } #endregion #region Open Input BTN var openInputBTN = InterfaceHelpers.CreateButton(doors, "Open_Input", "openInputBTN", InterfaceButtonMode.TextColor, OnButtonClick, out var openInputButton); openInputButton.TextLineOne = "Open Input Container"; if (!openInputBTN) { return(false); } #endregion #region Open Export BTN var openExportBTN = InterfaceHelpers.CreateButton(doors, "Open_Export", "openExportBTN", InterfaceButtonMode.TextColor, OnButtonClick, out var openExportButton); openExportButton.TextLineOne = "Open Export Container"; if (!openExportBTN) { return(false); } #endregion #region Next BTN var nextBTN = InterfaceHelpers.CreatePaginator(colorPicker, "NextPage", 1, _colorPage.ChangeColorPageBy, out var nextButton); nextButton.TextLineOne = "Next Page"; if (!nextBTN) { return(false); } #endregion #region Prev BTN var prevBTN = InterfaceHelpers.CreatePaginator(colorPicker, "PrevPage", -1, _colorPage.ChangeColorPageBy, out var prevButton); prevButton.TextLineOne = "Previous Page"; if (!prevBTN) { return(false); } #endregion #region Color Grid var colorGridResult = InterfaceHelpers.FindGameObject(colorPicker, "Grid", out var colorGrid); if (!colorGridResult) { return(false); } _colorGrid = colorGrid; #endregion #region SeaBreeze Grid var seaBreezeGridResult = InterfaceHelpers.FindGameObject(settings, "Grid", out var seaBreezeGrid); if (!seaBreezeGridResult) { return(false); } _seaBreezeGrid.Setup(4, SeaCookerBuildable.SeaBreezeItemPrefab, settings, Color.white, new Color(0.07f, 0.38f, 0.7f, 1f), OnButtonClick); _seaBreezeGrid.OnLoadDisplay += OnLoadDisplay; #endregion #region From Image OMIT //var fromImage = InterfaceHelpers.FindGameObject(home, "from_Image", out var from_Image); //if (!fromImage) //{ // return false; //} //_fromImage = from_Image; //uGUI_Icon fromIcon = _fromImage.gameObject.AddComponent<uGUI_Icon>(); #endregion #region To Image OMIT var toImage = InterfaceHelpers.FindGameObject(home, "to_Image", out var to_Image); if (!toImage) { return(false); } _toImage = to_Image; uGUI_Icon toIcon = _toImage.gameObject.AddComponent <uGUI_Icon>(); #endregion #region Percentage Bar var percentageResult = InterfaceHelpers.FindGameObject(home, "Preloader_Bar", out var percentage); if (!percentageResult) { return(false); } _percentage = percentage.GetComponent <Image>(); #endregion #region Fuel Percentage var fuelResult = InterfaceHelpers.FindGameObject(home, "FuelPercentage", out var fuelPercentage); if (!fuelResult) { return(false); } _fuelPercentage = fuelPercentage.GetComponent <Text>(); _fuelPercentage.text = $"{SeaCookerBuildable.TankPercentage()}: (0%)"; #endregion #region Version var versionResult = InterfaceHelpers.FindGameObject(canvasGameObject, "Version", out var version); if (!versionResult) { return(false); } var versionLbl = version.GetComponent <Text>(); versionLbl.text = $"{SeaCookerBuildable.Version()}: {QPatch.Version}"; #endregion #region Paginator var paginatorResult = InterfaceHelpers.FindGameObject(colorPicker, "Paginator", out var paginator); if (!paginatorResult) { return(false); } _paginator = paginator.GetComponent <Text>(); #endregion #region Seabreeze Toggle var toggleResult = InterfaceHelpers.FindGameObject(settings, "Toggle_SB_Export", out var toggle); if (!toggleResult) { QuickLogger.Error($"Cannot find Toggle_SB_Export on GameObject"); return(false); } _cusToggle = toggle.AddComponent <CustomToggle>(); _cusToggle.BtnName = "seaBreezeToggle"; _cusToggle.ButtonMode = InterfaceButtonMode.Background; _cusToggle.OnButtonClick = OnButtonClick; _cusToggle.Tag = _cusToggle; #endregion #region Auto Toggle var autoResult = InterfaceHelpers.FindGameObject(settings, "Auto_Toggle", out var autoToggle); if (!autoResult) { QuickLogger.Error($"Cannot find Auto_Toggle on GameObject"); return(false); } _autoToggle = autoToggle.AddComponent <CustomToggle>(); _autoToggle.BtnName = "autoToggle"; _autoToggle.ButtonMode = InterfaceButtonMode.Background; _autoToggle.OnButtonClick = OnButtonClick; _autoToggle.Tag = _autoToggle; #endregion return(true); }
public override bool FindAllComponents() { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas not found."); return(false); } #endregion // == Canvas Elements == // #region Navigation Dock var navigationDock = canvasGameObject.transform.Find("Navigation_Dock")?.gameObject; if (navigationDock == null) { QuickLogger.Error("Dock: Navigation_Dock not found."); return(false); } #endregion // == Navigation Button Elements == // #region Screen Holder GameObject screenHolder = canvasGameObject.transform.Find("Screens")?.gameObject; if (screenHolder == null) { QuickLogger.Error("Screen Holder GameObject not found."); return(false); } #endregion // == Screen Holder Elements == // #region Welcome Screen var welcomeScreen = screenHolder.FindChild("WelcomePage")?.gameObject; if (welcomeScreen == null) { QuickLogger.Error("Screen: WelcomeScreen not found."); return(false); } #endregion #region Version Label var versionLbl = welcomeScreen.FindChild("Logo_Intro").FindChild("Version_Text")?.gameObject; if (versionLbl == null) { QuickLogger.Error("Cannot find Version_Text Game Object"); } string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); versionLbl.GetComponent <Text>().text = $"V{assemblyVersion}"; #endregion #region Settings Screen var settingsScreen = screenHolder.FindChild("SettingsPage")?.gameObject; if (settingsScreen == null) { QuickLogger.Error("Screen: SettingsPage not found."); return(false); } #endregion #region Battery Monitor Page var batteryMonitorPage = screenHolder.FindChild("BatteryMonitorPage")?.gameObject; if (batteryMonitorPage == null) { QuickLogger.Error("Screen: BatteryMonitorPage not found."); return(false); } QuickLogger.Info("Finding Meters"); #endregion #region Battery Grid _batteryGrid = batteryMonitorPage.FindChild("Grid")?.gameObject; if (_batteryGrid == null) { QuickLogger.Error("Screen: BatteryMonitorPage not found."); return(false); } QuickLogger.Debug($"Meter Count {_batteryGrid.transform.childCount}"); for (int i = 0; i < _mono.BatteryCount; i++) { QuickLogger.Info($"Meter {i}"); var powercell = _mono.PowerManager.GetPowerCell(i); QuickLogger.Debug($"Battery {powercell.GetName()}"); powercell.SetMeter(_batteryGrid.transform.GetChild(i).gameObject); } #endregion #region Power Off Page var powerOffPage = screenHolder.FindChild("PowerOffPage")?.gameObject; if (powerOffPage == null) { QuickLogger.Error("Screen: PowerOffPage not found."); return(false); } #endregion #region Boot Page var bootingPage = screenHolder.FindChild("BootingPage")?.gameObject; if (bootingPage == null) { QuickLogger.Error("Screen: BootingPage not found."); return(false); } #endregion // == Powered off Elements #region PoweredOff LBL var poweredOffLbl = powerOffPage.FindChild("Powered_Off_LBL").GetComponent <Text>(); if (poweredOffLbl == null) { QuickLogger.Error("Screen: Powered_Off_LBL not found."); return(false); } poweredOffLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.PoweredOffKey); #endregion // == Battery MonitorPage Elements #region Battery Monitor Power Amount Label _batteryMonitorAmountLbl = batteryMonitorPage.FindChild("Battery_Monitor_Amount_LBL").GetComponent <Text>(); if (_batteryMonitorAmountLbl == null) { QuickLogger.Error("Screen: Battery_Monitor_Amount_LBL not found."); return(false); } #endregion #region Battery Monitor Label var batteryMonitorLbl = batteryMonitorPage.FindChild("Battery_Monitor_LBL").GetComponent <Text>(); if (batteryMonitorLbl == null) { QuickLogger.Error("Screen: Battery_Monitor_LBL not found."); return(false); } batteryMonitorLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BatteryMetersKey); #endregion #region Trickle Mode BTN var trickleModeBtn = batteryMonitorPage.FindChild("Trickle_Mode")?.gameObject; if (trickleModeBtn == null) { QuickLogger.Error("Screen: Trickle_Mode not found."); return(false); } InterfaceButton trickleBTN = trickleModeBtn.AddComponent <InterfaceButton>(); trickleBTN.OnButtonClick += OnButtonClick; trickleBTN.ButtonMode = InterfaceButtonMode.None; trickleBTN.BtnName = "TrickleModeBTN"; #endregion #region Charge Mode BTN var chargeModeBtn = batteryMonitorPage.FindChild("Charge_Mode")?.gameObject; if (chargeModeBtn == null) { QuickLogger.Error("Screen: Charge_Mode not found."); return(false); } InterfaceButton chargeBTN = chargeModeBtn.AddComponent <InterfaceButton>(); chargeBTN.ButtonMode = InterfaceButtonMode.None; chargeBTN.OnButtonClick += OnButtonClick; chargeBTN.BtnName = "ChargeModeBTN"; #endregion // == Boot Page Elements == // #region Booting LBL var bootingLbl = bootingPage.FindChild("Booting_TXT").GetComponent <Text>(); if (bootingLbl == null) { QuickLogger.Error("Screen: _bootingLBL not found."); return(false); } bootingLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BootingKey); #endregion // == Settings Page Elements == // #region Color Picker var colorPicker = settingsScreen.FindChild("Color_Picker")?.gameObject; if (colorPicker == null) { QuickLogger.Error("Screen: _color_Picker not found."); return(false); } InterfaceButton colorPickerBTN = colorPicker.AddComponent <InterfaceButton>(); colorPickerBTN.OnButtonClick += OnButtonClick; colorPickerBTN.ButtonMode = InterfaceButtonMode.None; colorPickerBTN.BtnName = "ColorPickerBTN"; #endregion #region Color Picker LBL var colorPickerLbl = colorPicker.FindChild("Label").GetComponent <Text>(); if (colorPickerLbl == null) { QuickLogger.Error("Screen: Color Picker Label not found."); return(false); } colorPickerLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.ColorPickerKey); #endregion #region Settings LBL var settingsLbl = settingsScreen.FindChild("Setting_LBL").GetComponent <Text>(); if (settingsLbl == null) { QuickLogger.Error("Screen: Settings Page Label not found."); return(false); } settingsLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.SettingsKey); #endregion #region System Settings LBL var storageModeLbl = settingsScreen.FindChild("System_Settings_LBL").GetComponent <Text>(); if (storageModeLbl == null) { QuickLogger.Error("Screen: Storage Mode Label not found."); return(false); } storageModeLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.SystemSettingsLblKey); #endregion #region Grid var grid = settingsScreen.FindChild("Grid")?.gameObject; if (grid == null) { QuickLogger.Error("Screen: Grid not found."); return(false); } #endregion #region Auto Activate BTN var autoActivateBtn = grid.FindChild("Auto_Activate")?.gameObject; if (autoActivateBtn == null) { QuickLogger.Error("Screen: Auto_Activate not found."); return(false); } var autoActivateTxt = autoActivateBtn.FindChild("Label").GetComponent <Text>(); if (autoActivateTxt == null) { QuickLogger.Error("Screen: Auto_Activate text not found."); return(false); } autoActivateTxt.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.AutoActivateKey); InterfaceButton autoABTN = autoActivateBtn.AddComponent <InterfaceButton>(); autoABTN.ButtonMode = InterfaceButtonMode.None; autoABTN.OnButtonClick += OnButtonClick; autoABTN.BtnName = "AutoActivateBTN"; #endregion #region Sync BTN var syncBtn = grid.FindChild("Sync")?.gameObject; if (syncBtn == null) { QuickLogger.Error("Screen: Sync not found."); return(false); } var syncAllBtnTxt = syncBtn.FindChild("Label").GetComponent <Text>(); if (syncAllBtnTxt == null) { QuickLogger.Error("Screen: Sync All text not found."); return(false); } syncAllBtnTxt.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.SyncAllKey); InterfaceButton syncBTN = syncBtn.AddComponent <InterfaceButton>(); syncBTN.ButtonMode = InterfaceButtonMode.None; syncBTN.OnButtonClick += OnButtonClick; syncBTN.BtnName = "SyncBTN"; #endregion #region Auto Activate Limit var autoActivateLimitBtn = grid.FindChild("Auto_Activate_Limit")?.gameObject; if (autoActivateLimitBtn == null) { QuickLogger.Error("Screen: Auto_Activate_Limit not found."); return(false); } var autoActivateLimitTxt = autoActivateLimitBtn.FindChild("Label").GetComponent <Text>(); if (autoActivateLimitTxt == null) { QuickLogger.Error("Screen: Auto_Activate_limit text not found."); return(false); } autoActivateLimitTxt.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.AutoActivateAtKey); var autoActivateLimitTextBox = autoActivateLimitBtn.FindChild("Background").FindChild("Text")?.gameObject; if (autoActivateLimitTextBox == null) { QuickLogger.Error("Screen:btnName Text not found."); return(false); } _autoActivateTextB = autoActivateLimitTextBox.GetComponent <Text>(); _autoActivateTextB.text = _mono.GetAutoActivateAt().ToString(); var autoActivateResult = CreateSystemButton(autoActivateLimitTextBox, LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.AutoActivateDescKey), LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.AutoActivateOnHoverKey), _mono.GetAutoActivateAt, _mono.ValidateAutoConfigUnits); if (!autoActivateResult) { return(false); } #endregion #region Base Drain Protection BTN var baseDrainProtectionBtn = grid.FindChild("Base_Drain_Protection")?.gameObject; if (baseDrainProtectionBtn == null) { QuickLogger.Error("Screen: Base_Drain_Protection not found."); return(false); } var baseDrianProtectionTxt = baseDrainProtectionBtn.FindChild("Label").GetComponent <Text>(); if (baseDrianProtectionTxt == null) { QuickLogger.Error("Screen: Base_Drain_protection text not found."); return(false); } baseDrianProtectionTxt.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BaseDrainProtectionKey); InterfaceButton bDPBTN = baseDrainProtectionBtn.AddComponent <InterfaceButton>(); bDPBTN.ButtonMode = InterfaceButtonMode.None; bDPBTN.OnButtonClick += OnButtonClick; bDPBTN.BtnName = "BaseDrainBTN"; #endregion #region Base Drain Limit var baseDrainlimitBtn = grid.FindChild("Base_Drain_Limit")?.gameObject; if (baseDrainlimitBtn == null) { QuickLogger.Error("Screen: Base_Drain_Limit not found."); return(false); } var baseDrianLimitTxt = baseDrainlimitBtn.FindChild("Label").GetComponent <Text>(); if (baseDrianLimitTxt == null) { QuickLogger.Error("Screen: Base_Drain_Limit text not found."); return(false); } baseDrianLimitTxt.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BaseDrainLimitKey); var baseDrainlimitTextBox = baseDrainlimitBtn.FindChild("Background").FindChild("Text")?.gameObject; if (baseDrainlimitTextBox == null) { QuickLogger.Error("Screen:baseDrainlimitTextBox Text not found."); return(false); } _baseDrainLimitTextB = baseDrainlimitTextBox.GetComponent <Text>(); _baseDrainLimitTextB.text = _mono.GetBasePowerProtectionGoal().ToString(); var baseDrainResult = CreateSystemButton(baseDrainlimitTextBox, LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BaseDrainLimitDescKey), LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.BaseDrainLimitOnHoverKey), _mono.GetBasePowerProtectionGoal, _mono.ValidateBaseProtectionUnits); if (!baseDrainResult) { return(false); } #endregion //TODO Add langugae for btns #region Discharge Mode LBL var trickleModeLbl = trickleModeBtn.FindChild("Label").GetComponent <Text>(); if (trickleModeLbl == null) { QuickLogger.Error("Screen: TrickleModeLabel not found."); return(false); } trickleModeLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.DischargeKey); #endregion #region Charge Mode LBL var chargeModeLbl = chargeModeBtn.FindChild("Label").GetComponent <Text>(); if (chargeModeLbl == null) { QuickLogger.Error("Screen: Charge Mode LBL not found."); return(false); } chargeModeLbl.text = LanguageHelpers.GetLanguage(FCSPowerStorageBuildable.ChargeKey); #endregion // == Color Picker Elements == // #region Color Picker Page var colorPickerPage = screenHolder.FindChild("ColorPickerPage")?.gameObject; if (colorPickerPage == null) { QuickLogger.Error("Screen: ColorPicker not found."); return(false); } #endregion _colorPicker = colorPickerPage.FindChild("ColorPicker")?.gameObject; if (_colorPicker == null) { QuickLogger.Error("GameObject: ColorPicker not found."); return(false); } #region Color Picker Previous Page BTN _previousPageGameObject = colorPickerPage.FindChild("Back_Arrow_BTN")?.gameObject; if (_previousPageGameObject == null) { QuickLogger.Error("Screen: Back_Arrow_BTN not found."); return(false); } var prevPageBTN = _previousPageGameObject.AddComponent <PaginatorButton>(); prevPageBTN.AmountToChangePageBy = -1; prevPageBTN.ChangePageBy = ChangePageBy; #endregion #region Color Picker Next Page BTN _nextPageGameObject = colorPickerPage.FindChild("Forward_Arrow_BTN")?.gameObject; if (_nextPageGameObject == null) { QuickLogger.Error("Screen: Forward_Arrow_BTN not found."); return(false); } var nextPageBTN = _nextPageGameObject.AddComponent <PaginatorButton>(); nextPageBTN.ChangePageBy = ChangePageBy; nextPageBTN.AmountToChangePageBy = 1; #endregion #region Color Picker Page Counter _pageCounter = colorPickerPage.FindChild("Page_Number")?.gameObject; if (_pageCounter == null) { QuickLogger.Error("Screen: Page_Number not found."); return(false); } _pageCounterText = _pageCounter.GetComponent <Text>(); if (_pageCounterText == null) { QuickLogger.Error("Screen: _pageCounterText not found."); return(false); } #endregion // == Navigation Dock Elements == // #region Settings Button var settingButton = navigationDock.transform.Find("Settings_BTN")?.gameObject; if (settingButton == null) { QuickLogger.Error("Dock: Settings_BTN not found."); return(false); } InterfaceButton settingsBTN = settingButton.AddComponent <InterfaceButton>(); settingsBTN.OnButtonClick = OnButtonClick; settingsBTN.BtnName = "SettingsBTN"; settingsBTN.ButtonMode = InterfaceButtonMode.Background; #endregion #region Home Button var homeButton = navigationDock.transform.Find("Home_BTN")?.gameObject; if (homeButton == null) { QuickLogger.Error("Dock: Home_BTN not found."); return(false); } InterfaceButton home = homeButton.AddComponent <InterfaceButton>(); home.OnButtonClick = OnButtonClick; home.BtnName = "HomeBTN"; home.ButtonMode = InterfaceButtonMode.Background; #endregion #region Power Button var powerButton = navigationDock.transform.Find("Power_BTN")?.gameObject; if (powerButton == null) { QuickLogger.Error("Dock: Power_BTN not found."); return(false); } InterfaceButton power = powerButton.AddComponent <InterfaceButton>(); power.OnButtonClick = OnButtonClick; power.BtnName = "PowerBTN"; power.ButtonMode = InterfaceButtonMode.Background; #endregion return(true); }
public static bool GetPrefabs() { try { if (!_initialized) { QuickLogger.Debug($"AssetBundle Set"); QuickLogger.Debug("GetPrefabs"); AssetBundle assetBundle = AssetHelper.Asset(Mod.ModFolderName, Mod.BundleName); Bundle = assetBundle; //We have found the asset bundle and now we are going to continue by looking for the model. GameObject wallMountRackPrefab = assetBundle.LoadAsset <GameObject>(Mod.WallMountedRackPrefabName); GameObject floorMountRackPrefab = assetBundle.LoadAsset <GameObject>(Mod.FloorMountedRackPrefabName); GameObject terminalPrefab = assetBundle.LoadAsset <GameObject>(Mod.TerminalPrefabName); GameObject colorItem = QPatch.GlobalBundle.LoadAsset <GameObject>("ColorItem"); GameObject serverModel = assetBundle.LoadAsset <GameObject>(Mod.ServerPrefabName); GameObject baseItem = assetBundle.LoadAsset <GameObject>("DSS_Base_Item"); GameObject vehicleItem = assetBundle.LoadAsset <GameObject>("DSS_Vehicle_Item"); GameObject item = assetBundle.LoadAsset <GameObject>("DSS_Item"); GameObject antenna = assetBundle.LoadAsset <GameObject>(Mod.AntennaPrefabName); GameObject formatMachine = assetBundle.LoadAsset <GameObject>(Mod.ServerFormattingStationPrefabName); GameObject filterItemPrefab = assetBundle.LoadAsset <GameObject>("FilterItem"); //If the prefab isn't null lets add the shader to the materials if (wallMountRackPrefab != null) { //Lets apply the material shader ApplyShaders(wallMountRackPrefab, assetBundle); WallMountRackPrefab = wallMountRackPrefab; QuickLogger.Debug($"Wall Mount Rack Prefab Found!"); } else { QuickLogger.Error($"Wall Mount Rack Prefab Not Found!"); return(false); } //Floor Mounted Rack Has Been Cut //if (floorMountRackPrefab != null) //{ // //Lets apply the material shader // ApplyShaders(floorMountRackPrefab, assetBundle); // FloorMountRackPrefab = floorMountRackPrefab; // QuickLogger.Debug($"Floor Mount Rack Prefab Found!"); //} //else //{ // QuickLogger.Error($"Floor Mount Rack Prefab Not Found!"); // return false; //} if (terminalPrefab != null) { //Lets apply the material shader ApplyShaders(terminalPrefab, assetBundle); TerminalPrefab = terminalPrefab; QuickLogger.Debug($"Terminal Prefab Found!"); } else { QuickLogger.Error($"Terminal Prefab Not Found!"); return(false); } if (colorItem != null) { ColorItemPrefab = colorItem; } else { QuickLogger.Error($"Color Item Not Found!"); return(false); } if (serverModel != null) { ApplyShaders(serverModel, assetBundle); ServerPrefab = serverModel; } else { QuickLogger.Error($"HydroponicHarvesterBottleModel Not Found!"); return(false); } if (baseItem != null) { BaseItemPrefab = baseItem; } else { QuickLogger.Error($"DSS_Base_Item Not Found!"); return(false); } if (vehicleItem != null) { VehicleItemPrefab = vehicleItem; } else { QuickLogger.Error($"DSS_Vehicle_Item Not Found!"); return(false); } if (item != null) { ItemPrefab = item; } else { QuickLogger.Error($"DSS_Item Not Found!"); return(false); } if (antenna != null) { ApplyShaders(antenna, assetBundle); AntennaPrefab = antenna; } else { QuickLogger.Error($"Antenna Not Found!"); return(false); } if (formatMachine != null) { ApplyShaders(formatMachine, assetBundle); ServerFormatStationPrefab = formatMachine; } else { QuickLogger.Error($"Format Machine Not Found!"); return(false); } if (filterItemPrefab != null) { FilterItemPrefab = filterItemPrefab; } else { QuickLogger.Error($"Filter Item Not Found!"); return(false); } _initialized = true; } return(true); } catch (Exception e) { QuickLogger.Error <DSSModelPrefab>(e.Message); return(false); } }
public override bool FindAllComponents() { try { #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas not found."); return(false); } #endregion #region Home var home = InterfaceHelpers.FindGameObject(canvasGameObject, "HomeScreen"); #endregion #region Battery var homeBattery = InterfaceHelpers.FindGameObject(home, "Battery"); _batteryPercent = InterfaceHelpers.FindGameObject(homeBattery, "Text").GetComponent <Text>(); _batteryFill = InterfaceHelpers.FindGameObject(homeBattery, "Fill").GetComponent <Image>(); #endregion #region Food var food = InterfaceHelpers.FindGameObject(canvasGameObject, "FoodScreen"); #endregion #region Drinks var drinks = InterfaceHelpers.FindGameObject(canvasGameObject, "DrinksScreen"); #endregion #region Trash var trash = InterfaceHelpers.FindGameObject(canvasGameObject, "TrashScreen"); #endregion #region Color Picker var colorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPicker"); #endregion #region PowerOff var powerOff = InterfaceHelpers.FindGameObject(canvasGameObject, "PoweredOffScreen"); #endregion #region PowerButton var powerBtn = InterfaceHelpers.FindGameObject(home, "Power_BTN"); InterfaceHelpers.CreateButton(powerBtn, "HPPBtn", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.PowerBTNMessage()); #endregion #region PowerOFf PowerButton var ppowerBtn = InterfaceHelpers.FindGameObject(powerOff, "Power_BTN"); InterfaceHelpers.CreateButton(ppowerBtn, "PPBtn", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.PowerBTNMessage()); #endregion #region PowerOFf PowerButton var powerOffLbl = InterfaceHelpers.FindGameObject(powerOff, "Powered_Off_LBL"); powerOffLbl.GetComponent <Text>().text = ARSSeaBreezeFCS32Buildable.NoPower(); #endregion #region DumpBTNButton var dumpBtn = InterfaceHelpers.FindGameObject(home, "DumpBTN"); InterfaceHelpers.CreateButton(dumpBtn, "DumpBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.DumpButton(), ARSSeaBreezeFCS32Buildable.DumpMessage()); #endregion #region FoodCButton var foodContainterBtn = InterfaceHelpers.FindGameObject(home, "FoodCBTN"); InterfaceHelpers.CreateButton(foodContainterBtn, "FoodCBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.FoodCButton()); #endregion #region WaterCButton var WaterContainterBtn = InterfaceHelpers.FindGameObject(home, "WaterCBTN"); InterfaceHelpers.CreateButton(WaterContainterBtn, "WaterCBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.WaterCButton()); #endregion #region Rename Button var RenameBtn = InterfaceHelpers.FindGameObject(home, "RenameBTN"); InterfaceHelpers.CreateButton(RenameBtn, "RenameBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.RenameButton()); #endregion #region Trash Button var TrashBtn = InterfaceHelpers.FindGameObject(home, "TrashCBTN"); InterfaceHelpers.CreateButton(TrashBtn, "TrashBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.TrashButton(), ARSSeaBreezeFCS32Buildable.TrashMessage()); #endregion #region ColorBTN Button var colorBtn = InterfaceHelpers.FindGameObject(home, "ColorPickerBTN"); InterfaceHelpers.CreateButton(colorBtn, "ColorBTN", InterfaceButtonMode.Background, OnButtonClick, Color.black, Color.white, MAX_INTERACTION_DISTANCE, ARSSeaBreezeFCS32Buildable.ColorPicker()); #endregion #region ColorPage _colorPage.SetupGrid(48, ARSSeaBreezeFCS32Buildable.ColorItemPrefab, colorPicker, OnButtonClick, _startColor, _hoverColor); #endregion #region Food Page _foodPage = _mono.gameObject.AddComponent <GridHelper>(); _foodPage.OnLoadDisplay += OnLoadFoodDisplay; _foodPage.Setup(17, ARSSeaBreezeFCS32Buildable.ItemPrefab, food, _startColor, _hoverColor, OnButtonClick); #endregion #region Drink Page _waterPage = _mono.gameObject.AddComponent <GridHelper>(); _waterPage.OnLoadDisplay += OnLoadWaterDisplay; _waterPage.Setup(17, ARSSeaBreezeFCS32Buildable.ItemPrefab, drinks, _startColor, _hoverColor, OnButtonClick); #endregion #region Trash Page _trashPage = _mono.gameObject.AddComponent <GridHelper>(); _trashPage.OnLoadDisplay += OnLoadTrashDisplay; _trashPage.Setup(17, ARSSeaBreezeFCS32Buildable.ItemPrefab, trash, _startColor, _hoverColor, OnButtonClick); #endregion #region StorageAmount _itemCounter_LBL = InterfaceHelpers.FindGameObject(home, "ItemCounter_LBL").GetComponent <Text>(); #endregion #region Unit Name _seaBreeze_LBL = InterfaceHelpers.FindGameObject(home, "SeaBreeze_LBL").GetComponent <Text>(); #endregion } catch (Exception e) { QuickLogger.Error($"{e.Message}:\n{e.StackTrace}"); return(false); } return(true); }
private bool GetPrefabs() { QuickLogger.Debug("GetPrefabs"); AssetBundle assetBundle = AssetHelper.Asset(Mod.ModFolderName, Mod.BundleName); //If the result is null return false. if (assetBundle == null) { QuickLogger.Error($"AssetBundle is Null!"); return(false); } AssetBundle = assetBundle; QuickLogger.Debug($"AssetBundle Set"); //We have found the asset bundle and now we are going to continue by looking for the model. GameObject prefab = assetBundle.LoadAsset <GameObject>("AlterraDeepDriller"); //If the prefab isn't null lets add the shader to the materials if (prefab != null) { //Lets apply the material shader ApplyShaders(prefab); _prefab = prefab; QuickLogger.Debug($"{this.FriendlyName} Prefab Found!"); } else { QuickLogger.Error($"{this.FriendlyName} Prefab Not Found!"); return(false); } //We have found the asset bundle and now we are going to continue by looking for the model. GameObject itemButton = assetBundle.LoadAsset <GameObject>("ItemButton"); //If the prefab isn't null lets add the shader to the materials if (itemButton != null) { ItemPrefab = itemButton; QuickLogger.Debug("Item Button Prefab Found!"); } else { QuickLogger.Error("Item Button Prefab Not Found!"); return(false); } //We have found the asset bundle and now we are going to continue by looking for the model. GameObject programmingItemButton = assetBundle.LoadAsset <GameObject>("ProgrammingItem"); //If the prefab isn't null lets add the shader to the materials if (programmingItemButton != null) { ProgrammingItemPrefab = programmingItemButton; QuickLogger.Debug("Programming Item Button Prefab Found!"); } else { QuickLogger.Error("Programming Item Button Prefab Not Found!"); return(false); } GameObject listItemButton = assetBundle.LoadAsset <GameObject>("TransferToggleButton"); if (listItemButton != null) { ListItemPrefab = listItemButton; QuickLogger.Debug("List Item Button Prefab Found!"); } else { QuickLogger.Error("Item Button Prefab Not Found!"); return(false); } GameObject colorItem = QPatch.GlobalBundle.LoadAsset <GameObject>("ColorItem"); if (colorItem != null) { ColorItemPrefab = colorItem; } else { QuickLogger.Error($"Color Item Not Found!"); return(false); } return(GetOres()); }