internal void Setup() { ShowAllAttachments(); FCSDeepDrillerBuildable.ApplyShaders(_gameObject); HideAllAttachments(); HideAllBatteries(); }
internal void Setup(FCSDeepDrillerController mono) { _mono = mono; _isConstructed = () => mono.IsConstructed; if (_containerRoot == null) { QuickLogger.Debug("Initializing Deep Driller StorageRoot"); var storageRoot = new GameObject("DeepDrillerStorageRoot"); storageRoot.transform.SetParent(mono.transform, false); _containerRoot = storageRoot.AddComponent <ChildObjectIdentifier>(); } if (_container == null) { QuickLogger.Debug("Initializing Deep Driller Container"); _container = new ItemsContainer(_containerWidth, _containerHeight, _containerRoot.transform, FCSDeepDrillerBuildable.StorageContainerLabel(), null); _container.Resize(_containerWidth, _containerHeight); _container.isAllowedToAdd += IsAllowedToAdd; _container.onRemoveItem += OnRemoveItemEvent; } DayNightCycle main = DayNightCycle.main; //if (_timeSpawnMedKit < 0.0 && main) //{ // this._timeSpawnMedKit = (float)(main.timePassed + (!this.startWithMedKit ? (double)MedKitSpawnInterval : 0.0)); //} }
private bool GetFunctionName(string functionString, out string result) { var methodName = string.Empty; result = string.Empty; //Spit by "." var parts = functionString.Split('.'); if (parts.Length <= 0) { return(false); } for (int i = 0; i < parts.Length; i++) { var item = parts[i].Trim(); if (item.EndsWith(";") && item.Contains("(") && item.Contains(")")) { methodName = item.GetUntilOrEmpty(); if (_classes.Any(x => x.FunctionName == methodName)) { QuickLogger.Debug($"Method Name = {methodName}", true); result = methodName; return(true); } } } QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.InvalidFunctionFormat(), methodName), true); return(false); }
internal static bool IsValid(string[] paraResults, out int amountPerDay) { amountPerDay = 0; try { if (paraResults.Length != 1) { //TODO Show Message Box with error of incorrect parameters QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.IncorrectAmountOfParameterFormat(), "1", paraResults.Length), true); return(false); } if (int.TryParse(paraResults[0], out var result)) { amountPerDay = Convert.ToInt32(result); } else { QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.IncorrectParameterFormat(), "INT", "OS.OresPerDay(10);"), true); return(false); } } catch (Exception e) { //TODO Show Message Box with error of incorrect parameters QuickLogger.Error(e.Message); QuickLogger.Error(e.StackTrace); return(false); } return(true); }
private bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { if (pickupable.gameObject.GetComponent <FCSTechFabricatorTag>() != null) { if (pickupable.GetTechType() == TechTypeHelper.BatteryAttachmentTechType() || pickupable.GetTechType() == TechTypeHelper.SolarAttachmentTechType()) { if (_powerModuleAttached) { QuickLogger.Message(FCSDeepDrillerBuildable.OnePowerAttachmentAllowed(), true); return(false); } } else if (pickupable.GetTechType() == TechTypeHelper.DrillerMK1TechType() || pickupable.GetTechType() == TechTypeHelper.DrillerMK2TechType() || pickupable.GetTechType() == TechTypeHelper.DrillerMK3TechType()) { if (_upgradeAttached) { QuickLogger.Message(FCSDeepDrillerBuildable.OneUpgradeAllowed(), true); return(false); } } return(true); } QuickLogger.Message(FCSDeepDrillerBuildable.DDAttachmentsOnly(), true); return(false); }
internal void Setup(FCSDeepDrillerController mono) { _mono = mono; _isConstructed = () => mono.IsConstructed; var equipmentRoot = new GameObject("BEquipmentRoot"); equipmentRoot.transform.SetParent(gameObject.transform, false); equipmentRoot.AddComponent <ChildObjectIdentifier>(); equipmentRoot.SetActive(false); _equipment = new Equipment(gameObject, equipmentRoot.transform); _equipment.SetLabel(FCSDeepDrillerBuildable.BEquipmentContainerLabel()); _equipment.isAllowedToAdd = IsAllowedToAdd; _equipment.isAllowedToRemove = IsAllowedToRemove; _equipment.onEquip += OnEquipmentAdded; _equipment.onUnequip += OnEquipmentRemoved; AddMoreSlots(); if (_equipment == null) { QuickLogger.Error("Equipment is null on creation"); } }
private void OnLoadItemsGrid(DisplayData data) { try { if (_isBeingDestroyed) { return; } QuickLogger.Debug($"OnLoadBaseItemsGrid : {data.ItemsGrid}", true); _itemsGrid.ClearPage(); var grouped = _mono.DeepDrillerContainer.GetItemsWithin(); if (data.EndPosition > grouped.Count) { data.EndPosition = grouped.Count; } for (int i = data.StartPosition; i < data.EndPosition; i++) { GameObject buttonPrefab = Instantiate(data.ItemsPrefab); if (buttonPrefab == null || data.ItemsGrid == null) { if (buttonPrefab != null) { Destroy(buttonPrefab); } return; } buttonPrefab.transform.SetParent(data.ItemsGrid.transform, false); var amount = buttonPrefab.GetComponentInChildren <Text>(); amount.text = grouped.ElementAt(i).Value.ToString(); var itemBTN = buttonPrefab.AddComponent <InterfaceButton>(); itemBTN.ButtonMode = InterfaceButtonMode.Background; itemBTN.STARTING_COLOR = _startColor; itemBTN.HOVER_COLOR = _hoverColor; itemBTN.BtnName = "ItemBTN"; itemBTN.TextLineOne = string.Format(FCSDeepDrillerBuildable.TakeFormatted(), Language.main.Get(grouped.ElementAt(i).Key)); itemBTN.Tag = grouped.ElementAt(i).Key; itemBTN.OnButtonClick = OnButtonClick; uGUI_Icon trashIcon = InterfaceHelpers.FindGameObject(buttonPrefab, "Icon").AddComponent <uGUI_Icon>(); trashIcon.sprite = SpriteManager.Get(grouped.ElementAt(i).Key); } _itemsGrid.UpdaterPaginator(grouped.Count()); } catch (Exception e) { QuickLogger.Error("Error Caught"); QuickLogger.Error($"Error Message: {e.Message}"); QuickLogger.Error($"Error StackTrace: {e.StackTrace}"); } }
public void OnHandHover(GUIHand hand) { HandReticle main = HandReticle.main; #if SUBNAUTICA main.SetInteractText(FCSDeepDrillerBuildable.OnBatteryHoverText()); #elif BELOWZERO main.SetText(HandReticle.TextType.Hand, FCSDeepDrillerBuildable.OnBatteryHoverText(), false); #endif main.SetIcon(HandReticle.IconType.Hand, 1f); }
private void UpdateFocusStates() { if (_mono.GetFocusedState()) { _focusBtnText.text = FCSDeepDrillerBuildable.Focusing(); } else { _focusBtnText.text = FCSDeepDrillerBuildable.Focus(); //RemoveFocusOnItems(); } }
private bool IsAllowedToRemove(Pickupable pickupable, bool verbose) { if (pickupable.GetTechType() == TechTypeHelper.BatteryAttachmentTechType()) { if (_mono.BatteryController.GetController().HasBatteries()) { QuickLogger.Message(FCSDeepDrillerBuildable.BatteryAttachmentHasBatteries(), true); return(false); } } return(true); }
private bool ValidateClassType(string functionString) { //Spit by "." var parts = functionString.Split('.'); //If the command has more than zero parts and contains os as the first item the class is valid var result = parts.Length > 0 && parts.Select(t => t.Trim()).Any(item => item.ToLower().Equals("os")); if (!result) { QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.InvalidClassFormat(), parts.Length > 0 ? parts[0] : "N/A"), true); } return(result); }
public bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { if (pickupable.GetTechType() != TechType.Lubricant) { QuickLogger.Message(FCSDeepDrillerBuildable.ItemNotAllowed(), true); return(false); } if (!CanBeStored(_mono.OilDumpContainer.GetCount(), TechType.Lubricant)) { QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.OilTankNotEmpty(), TimeTilRefuel()), true); return(false); } return(true); }
public override bool CanDeconstruct(out string reason) { reason = string.Empty; if (IsInitialized == false) { return(true); } if (DeepDrillerContainer.HasItems()) { reason = FCSDeepDrillerBuildable.RemoveAllItems(); return(false); } return(true); }
internal static bool IsValid(string[] paraResults, out Tuple <TechType, int> data) { data = null; try { if (paraResults.Length != 2) { //TODO Show Message Box with error of incorrect parameters QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.IncorrectAmountOfParameterFormat(), "2", paraResults.Length), true); return(false); } int amount; if (int.TryParse(paraResults[1], out var result)) { amount = Convert.ToInt32(result); } else { QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.IncorrectParameterFormat(), "TechType,INT", "OS.MaxOreCount(Silver,10);"), true); return(false); } TechType techType; if (BiomeManager.IsApproved(paraResults[0].ToTechType())) { techType = paraResults[0].ToTechType(); } else { QuickLogger.Message(string.Format(FCSDeepDrillerBuildable.NotOreErrorFormat(), paraResults[0]), true); return(false); } data = new Tuple <TechType, int>(techType, amount); } catch (Exception e) { //TODO Show Message Box with error of incorrect parameters QuickLogger.Error(e.Message); QuickLogger.Error(e.StackTrace); return(false); } return(true); }
public static void Patch() { var assembly = Assembly.GetExecutingAssembly(); QuickLogger.Info("Started patching. Version: " + QuickLogger.GetAssemblyVersion(assembly)); #if DEBUG QuickLogger.DebugLogsEnabled = true; QuickLogger.Debug("Debug logs enabled"); #endif #if USE_ExStorageDepot QuickLogger.Info("Ex-Storage Version"); #endif try { Configuration = Mod.LoadConfiguration(); Configuration.Convert(); OptionsPanelHandler.RegisterModOptions(new Options()); AddItemsToTechFabricator(); GlobalBundle = FcAssetBundlesService.PublicAPI.GetAssetBundleByName(FcAssetBundlesService.PublicAPI.GlobalBundleName); FCSDeepDrillerBuildable.PatchHelper(); SandSpawnable.PatchHelper(); var harmony = new Harmony("com.fcsdeepdriller.fcstudios"); harmony.PatchAll(Assembly.GetExecutingAssembly()); QuickLogger.Info("Finished patching"); } catch (Exception ex) { QuickLogger.Error(ex); } }
internal void Setup(FCSDeepDrillerController mono) { _mono = mono; _isConstructed = () => mono.IsConstructed; var equipmentRoot = new GameObject("EquipmentRoot"); equipmentRoot.transform.SetParent(_mono.transform, false); equipmentRoot.AddComponent <ChildObjectIdentifier>(); equipmentRoot.SetActive(false); _equipment = new Equipment(mono.gameObject, equipmentRoot.transform); _equipment.SetLabel(FCSDeepDrillerBuildable.EquipmentContainerLabel()); _equipment.isAllowedToAdd = IsAllowedToAdd; _equipment.isAllowedToRemove = IsAllowedToRemove; _equipment.compatibleSlotDelegate = CompatibleSlotDelegate; _equipment.onEquip += OnEquipmentAdded; _equipment.onUnequip += OnEquipmentRemoved; _equipment.AddSlot(EquipmentConfiguration.SlotIDs[4]); _equipment.AddSlot(EquipmentConfiguration.SlotIDs[5]); _equipment.AddSlot(EquipmentConfiguration.SlotIDs[6]); }
private bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { bool flag = false; var techType = pickupable.GetTechType(); #if SUBNAUTICA var equipType = CraftData.GetEquipmentType(techType); #elif BELOWZERO var equipType = TechData.GetEquipmentType(techType); #endif if (equipType == EquipmentType.PowerCellCharger) { flag = true; } else { ErrorMessage.AddMessage(FCSDeepDrillerBuildable.OnlyPowercellsAllowed()); } return(flag); }
public override void Initialize() { QuickLogger.Debug($"Initializing"); var listSolar = new List <GameObject> { GameObjectHelpers.FindGameObject(gameObject, "Cube_2_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2_3"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1_4"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2_4") }; foreach (GameObject solarObj in listSolar) { var sController = solarObj.AddComponent <FCSDeepDrillerSolarController>(); sController.Setup(this); } ExtendStateHash = Animator.StringToHash("LegState"); ShaftStateHash = Animator.StringToHash("ShaftState"); ScreenStateHash = Animator.StringToHash("ScreenState"); BitSpinState = Animator.StringToHash("BitSpinState"); BitDamageState = Animator.StringToHash("BitDamageState"); SolarStateHash = Animator.StringToHash("SolarState"); _prefabId = GetComponentInParent <PrefabIdentifier>() ?? GetComponent <PrefabIdentifier>(); InvokeRepeating(nameof(UpdateDrillShaftSate), 1, 1); if (OilHandler == null) { OilHandler = gameObject.AddComponent <FCSDeepDrillerOilHandler>(); OilHandler.Initialize(this); } if (_prefabId == null) { QuickLogger.Error("Prefab Identifier Component was not found"); } if (_buildable == null) { _buildable = GetComponentInParent <Constructable>(); } OreGenerator = gameObject.AddComponent <OreGenerator>(); OreGenerator.Initialize(this); OreGenerator.OnAddCreated += OreGeneratorOnAddCreated; if (PowerManager == null) { PowerManager = gameObject.AddComponent <FCSDeepDrillerPowerHandler>(); PowerManager.Initialize(this); PowerManager.OnPowerUpdate += OnPowerUpdate; var powerRelay = gameObject.AddComponent <PowerRelay>(); PowerManager.SetPowerRelay(powerRelay); } if (LaserManager == null) { LaserManager = new LaserManager(); LaserManager.Setup(this); } if (ColorManager == null) { ColorManager = gameObject.AddComponent <ColorManager>(); ColorManager.Initialize(gameObject, FCSDeepDrillerBuildable.BodyMaterial); } AudioManager = new AudioManager(gameObject.GetComponent <FMOD_CustomLoopingEmitter>()); HealthManager = gameObject.AddComponent <FCSDeepDrillerHealthHandler>(); HealthManager.Initialize(this); HealthManager.SetHealth(100); HealthManager.OnDamaged += OnDamaged; HealthManager.OnRepaired += OnRepaired; DeepDrillerContainer = new FCSDeepDrillerContainer(); DeepDrillerContainer.Setup(this); AnimationHandler = gameObject.AddComponent <FCSDeepDrillerAnimationHandler>(); AnimationHandler.Initialize(this); LavaPitHandler = gameObject.AddComponent <FCSDeepDrillerLavaPitHandler>(); LavaPitHandler.Initialize(this); if (OilDumpContainer == null) { OilDumpContainer = gameObject.AddComponent <DumpContainer>(); OilDumpContainer.Initialize(transform, FCSDeepDrillerBuildable.OilDropContainerTitle(), FCSDeepDrillerBuildable.NotAllowedItem(), FCSDeepDrillerBuildable.StorageFull(), OilHandler, 4, 4); } if (PowercellDumpContainer == null) { PowercellDumpContainer = gameObject.AddComponent <DumpContainer>(); PowercellDumpContainer.Initialize(transform, FCSDeepDrillerBuildable.PowercellDumpContainerTitle(), FCSDeepDrillerBuildable.NotAllowedItem(), FCSDeepDrillerBuildable.StorageFull(), PowerManager, 1, 1); } if (UpgradeManager == null) { UpgradeManager = gameObject.AddComponent <UpgradeManager>(); UpgradeManager.Initialize(this); } UpdateSystemLights(PowerManager.GetPowerState()); OnGenerate(); IsInitialized = true; QuickLogger.Debug($"Initializing Completed"); }
public override bool FindAllComponents() { QuickLogger.Debug("Find All Components"); #region Canvas var canvasGameObject = gameObject.GetComponentInChildren <Canvas>()?.gameObject; if (canvasGameObject == null) { QuickLogger.Error("Canvas not found."); return(false); } #endregion #region Power Button var powerBTN = canvasGameObject.FindChild("PowerBTN")?.gameObject; if (powerBTN == null) { QuickLogger.Error("Power Button not found."); return(false); } var powerBtn = powerBTN.AddComponent <InterfaceButton>(); powerBtn.OnButtonClick = OnButtonClick; powerBtn.BtnName = "PowerBTN"; powerBtn.ButtonMode = InterfaceButtonMode.Background; powerBtn.TextLineOne = $"Toggle {Mod.ModFriendlyName} Power"; #endregion #region Open Storage Button var openStorageBTN = canvasGameObject.FindChild("Open_BTN").FindChild("OPEN_LBL")?.gameObject; if (openStorageBTN == null) { QuickLogger.Error("Open Storage Button not found."); return(false); } var openStorageBtn = openStorageBTN.AddComponent <InterfaceButton>(); openStorageBtn.OnButtonClick = OnButtonClick; openStorageBtn.BtnName = "Open_BTN"; openStorageBtn.ButtonMode = InterfaceButtonMode.TextColor; openStorageBtn.TextComponent = openStorageBtn.GetComponent <Text>(); openStorageBtn.TextLineOne = $"Open {Mod.ModFriendlyName} Storage"; #endregion #region Open Modules Button var openModuleDoor = canvasGameObject.FindChild("Module_BTN").FindChild("OPEN_LBL")?.gameObject; if (openModuleDoor == null) { QuickLogger.Error("Open module door not found."); return(false); } var moduleDoor = openModuleDoor.AddComponent <InterfaceButton>(); moduleDoor.OnButtonClick = OnButtonClick; moduleDoor.BtnName = "Module_Door"; moduleDoor.ButtonMode = InterfaceButtonMode.TextColor; moduleDoor.TextComponent = openModuleDoor.GetComponent <Text>(); moduleDoor.TextLineOne = $"Open {Mod.ModFriendlyName} Modular"; #endregion var main = gameObject.FindChild("model").FindChild("Scanner_Screen_Attachment").FindChild("Canvas").FindChild("Home")?.gameObject; #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 _grid = main.FindChild("Grid")?.gameObject; if (_grid == null) { QuickLogger.Error("Could not find the grid"); return(false); } var previousPageGameObject = main.FindChild("Arrow_Up")?.gameObject; if (previousPageGameObject == null) { QuickLogger.Error("Could not find the Arrow_Up"); return(false); } var prevPageBTN = previousPageGameObject.AddComponent <PaginatorButton>(); prevPageBTN.OnChangePageBy = ChangePageBy; prevPageBTN.AmountToChangePageBy = -1; prevPageBTN.HoverTextLineTwo = FCSDeepDrillerBuildable.PrevPage(); var nextPageGameObject = main.FindChild("Arrow_Down")?.gameObject; if (nextPageGameObject == null) { QuickLogger.Error("Could not find the Arrow_Down"); return(false); } var nextPageBTN = nextPageGameObject.AddComponent <PaginatorButton>(); nextPageBTN.OnChangePageBy = ChangePageBy; nextPageBTN.AmountToChangePageBy = 1; nextPageBTN.HoverTextLineTwo = FCSDeepDrillerBuildable.NextPage(); _pageNumber = main.FindChild("Paginator").GetComponent <Text>(); if (_pageNumber == null) { QuickLogger.Error("Could not find the Paginator"); return(false); } var focusBtn = main.FindChild("Button")?.gameObject; if (focusBtn == null) { QuickLogger.Error("Could not find the Button"); return(false); } var focusBTN = focusBtn.AddComponent <InterfaceButton>(); focusBTN.BtnName = "Focus"; focusBTN.OnButtonClick = OnButtonClick; focusBTN.ButtonMode = InterfaceButtonMode.TextColor; focusBTN.TextComponent = focusBtn.FindChild("Text").GetComponent <Text>(); _focusBtnText = focusBtn.gameObject.GetComponentInChildren <Text>(); _healthPercentage = main.FindChild("Health_LBL").GetComponent <Text>(); _biomeTxt = main.FindChild("BiomeTXT").GetComponent <Text>(); _solarValue = main.FindChild("Solar_LBL").GetComponent <Text>(); return(true); }
internal void UpdateBiome(string biome) { _biomeTxt.text = $"{FCSDeepDrillerBuildable.Biome()}: {biome}"; }
public override void Initialize() { QuickLogger.Debug($"Initializing"); var listSolar = new List <GameObject> { GameObjectHelpers.FindGameObject(gameObject, "Cube_2_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2_3"), GameObjectHelpers.FindGameObject(gameObject, "Cube_1_4"), GameObjectHelpers.FindGameObject(gameObject, "Cube_2_4") }; foreach (GameObject solarObj in listSolar) { var sController = solarObj.AddComponent <FCSDeepDrillerSolarController>(); sController.Setup(this); } SolarStateHash = Animator.StringToHash("SolarState"); InvokeRepeating(nameof(UpdateDrillShaftSate), 1, 1); if (OilHandler == null) { OilHandler = gameObject.AddComponent <FCSDeepDrillerOilHandler>(); OilHandler.Initialize(this); } if (_prefabId == null) { QuickLogger.Error("Prefab Identifier Component was not found"); } if (_buildable == null) { _buildable = GetComponentInParent <Constructable>(); } OreGenerator = gameObject.AddComponent <FCSDeepDrillerOreGenerator>(); OreGenerator.Initialize(this); OreGenerator.OnAddCreated += OreGeneratorOnAddCreated; if (PowerManager == null) { PowerManager = gameObject.AddComponent <FCSDeepDrillerPowerHandler>(); PowerManager.Initialize(this); var powerRelay = gameObject.AddComponent <PowerRelay>(); PowerManager.SetPowerRelay(powerRelay); } if (LaserManager == null) { LaserManager = new LaserManager(); LaserManager.Setup(this); } if (ColorManager == null) { ColorManager = gameObject.AddComponent <ColorManager>(); ColorManager.Initialize(gameObject, FCSDeepDrillerBuildable.BodyMaterial); } AudioManager = new AudioManager(gameObject.GetComponent <FMOD_CustomLoopingEmitter>()); DeepDrillerContainer = new FCSDeepDrillerContainer(); DeepDrillerContainer.Setup(this); AnimationHandler = gameObject.AddComponent <FCSDeepDrillerAnimationHandler>(); AnimationHandler.Initialize(this); LavaPitHandler = gameObject.AddComponent <FCSDeepDrillerLavaPitHandler>(); LavaPitHandler.Initialize(this); if (OilDumpContainer == null) { OilDumpContainer = gameObject.AddComponent <DumpContainer>(); OilDumpContainer.Initialize(transform, FCSDeepDrillerBuildable.OilDropContainerTitle(), FCSDeepDrillerBuildable.NotAllowedItem(), FCSDeepDrillerBuildable.StorageFull(), OilHandler, 4, 4); } if (PowercellDumpContainer == null) { PowercellDumpContainer = gameObject.AddComponent <DumpContainer>(); PowercellDumpContainer.Initialize(transform, FCSDeepDrillerBuildable.PowercellDumpContainerTitle(), FCSDeepDrillerBuildable.NotAllowedItem(), FCSDeepDrillerBuildable.StorageFull(), PowerManager, 1, 1); } if (TransferManager == null) { TransferManager = gameObject.AddComponent <FCSDeepDrillerTransferManager>(); TransferManager.Initialize(this); } if (UpgradeManager == null) { UpgradeManager = gameObject.AddComponent <FCSDeepDrillerUpgradeManager>(); UpgradeManager.Initialize(this); } _line = gameObject.GetComponent <LineRenderer>(); _line.SetVertexCount(Segments + 1); _line.useWorldSpace = false; if (FCSConnectableDevice == null) { FCSConnectableDevice = gameObject.AddComponent <FCSConnectableDevice>(); FCSConnectableDevice.Initialize(this, DeepDrillerContainer, PowerManager); FCSTechFabricator.FcTechFabricatorService.PublicAPI.RegisterDevice(FCSConnectableDevice, GetPrefabID(), Mod.DeepDrillerTabID); } OnGenerate(); IsInitialized = true; QuickLogger.Debug($"Initializing Completed"); }
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 homePage = InterfaceHelpers.FindGameObject(canvasGameObject, "HomePage"); #endregion #region Color Picker var colorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPickerPage"); #endregion #region Items Page var itemsPage = InterfaceHelpers.FindGameObject(canvasGameObject, "ItemsPage"); #endregion #region Settings Page var settingsPage = InterfaceHelpers.FindGameObject(canvasGameObject, "SettingsPage"); #endregion #region Maintenance Page var maintenancePage = InterfaceHelpers.FindGameObject(canvasGameObject, "MaintenancePage"); #endregion #region Powered Off Page var poweredOffPage = InterfaceHelpers.FindGameObject(canvasGameObject, "PoweredOffPage"); #endregion #region Powered Off Page var programmingPage = InterfaceHelpers.FindGameObject(canvasGameObject, "ProgrammingPage"); #endregion //================= Home Page ================// #region Items Button var itemsBTN = GameObjectHelpers.FindGameObject(homePage, "ItemsBTN"); InterfaceHelpers.CreateButton(itemsBTN, "ItemsBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.ItemsButton()); #endregion #region Maintenance Button var maintenanceBTN = GameObjectHelpers.FindGameObject(homePage, "MaintenanceBTN"); InterfaceHelpers.CreateButton(maintenanceBTN, "MaintenanceBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.MaintenanceButton()); #endregion #region Programming Button var programmingBTN = GameObjectHelpers.FindGameObject(homePage, "ProgrammingBTN"); InterfaceHelpers.CreateButton(programmingBTN, "ProgrammingBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.ProgrammingButton()); #endregion #region Programming Button var settingsBTN = GameObjectHelpers.FindGameObject(homePage, "SettingsBTN"); InterfaceHelpers.CreateButton(settingsBTN, "SettingsBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.SettingsButton()); #endregion #region Power Button var hPowerBtn = GameObjectHelpers.FindGameObject(homePage, "PowerBTN"); InterfaceHelpers.CreateButton(hPowerBtn, "PowerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.PowerButton()); #endregion #region Battery Meter var batteryMeter = GameObjectHelpers.FindGameObject(homePage, "battery"); _batteryFill = batteryMeter?.FindChild("Fill")?.GetComponent <Image>(); if (_batteryFill != null) { _batteryFill.color = _colorEmpty; _batteryFill.fillAmount = 0f; } _batteryPercentage = batteryMeter?.FindChild("Percentage")?.GetComponent <Text>(); #endregion #region Oil Meter var oilMeter = GameObjectHelpers.FindGameObject(homePage, "Oil"); _oilFill = oilMeter?.FindChild("Fill")?.GetComponent <Image>(); if (_oilFill != null) { _oilFill.color = _colorEmpty; _oilFill.fillAmount = 0f; } #endregion #region Items Per Day _itemsPerDay = GameObjectHelpers.FindGameObject(homePage, "ItemsPerDayLBL")?.GetComponent <Text>(); #endregion #region Power Usage _powerUsage = GameObjectHelpers.FindGameObject(homePage, "PowerUsageLBL")?.GetComponent <Text>(); #endregion //================= Power Off Page ================// #region Power Button var pPowerBtn = GameObjectHelpers.FindGameObject(poweredOffPage, "PowerBTN"); InterfaceHelpers.CreateButton(pPowerBtn, "PowerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.PowerButton()); #endregion //================= Items Page ================// #region Items Grid _itemsGrid = _mono.gameObject.AddComponent <GridHelper>(); _itemsGrid.OnLoadDisplay += OnLoadItemsGrid; _itemsGrid.Setup(9, FCSDeepDrillerBuildable.ItemPrefab, itemsPage, _startColor, _hoverColor, OnButtonClick); #endregion _itemCounter = GameObjectHelpers.FindGameObject(itemsPage, "ItemsCounter")?.GetComponent <Text>(); //================= Settings Page ================// #region Filter Grid _filterGrid = _mono.gameObject.AddComponent <GridHelper>(); _filterGrid.OnLoadDisplay += OnLoadFilterGrid; _filterGrid.Setup(4, FCSDeepDrillerBuildable.ListItemPrefab, settingsPage, _startColor, _hoverColor, OnButtonClick); #endregion #region Solar Panel Button var solarPanelBTN = GameObjectHelpers.FindGameObject(settingsPage, "SolarPanelBTN"); _solarPanelBtnIcon = GameObjectHelpers.FindGameObject(solarPanelBTN, "Icon")?.GetComponent <Image>(); InterfaceHelpers.CreateButton(solarPanelBTN, "SolarPanelBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.SolarButton()); #endregion #region Filter Toggle Button var filterToggleBTN = GameObjectHelpers.FindGameObject(settingsPage, "FilterBTN"); _filterBTNText = filterToggleBTN.GetComponentInChildren <Text>(); InterfaceHelpers.CreateButton(filterToggleBTN, "FilterBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.FilterButton()); #endregion #region Export Toggle Button var exportToggleBTN = GameObjectHelpers.FindGameObject(settingsPage, "ExportToggleBTN"); _exportToggleBTNText = exportToggleBTN.GetComponentInChildren <Text>(); InterfaceHelpers.CreateButton(exportToggleBTN, "ExportToggleBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.ExportToggleButton()); #endregion #region Blacklist Toggle _blackListToggle = GameObjectHelpers.FindGameObject(settingsPage, "Toggle").GetComponent <Toggle>(); _blackListToggle.onValueChanged.AddListener((toggleState) => { _mono.OreGenerator.SetBlackListMode(toggleState); }); #endregion #region Color Picker Button var colorPickerBTN = GameObjectHelpers.FindGameObject(settingsPage, "ColorPickerBTN"); InterfaceHelpers.CreateButton(colorPickerBTN, "ColorPickerBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.ColorButton()); #endregion #region ColorPage _colorPage.SetupGrid(36, FCSDeepDrillerBuildable.ColorItemPrefab, colorPicker, OnButtonClick, _startColor, _hoverColor); #endregion #region Solar Panel Button var rangeToggleBTN = GameObjectHelpers.FindGameObject(settingsPage, "RangeToggleBTN"); _rangeToggleBTNIcon = GameObjectHelpers.FindGameObject(rangeToggleBTN, "Icon")?.GetComponent <Image>(); InterfaceHelpers.CreateButton(rangeToggleBTN, "RangeToggleBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.ToggleRangeButton()); #endregion //================= Maintenance Page ================// #region Maintenance Home Button var maintenanceHomeBTN = GameObjectHelpers.FindGameObject(maintenancePage, "HomeBTN"); InterfaceHelpers.CreateButton(maintenanceHomeBTN, "HomeBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.MaintenanceButton()); #endregion #region Oil Dump Button var oilDumpBTN = GameObjectHelpers.FindGameObject(maintenancePage, "OilBTN"); InterfaceHelpers.CreateButton(oilDumpBTN, "OilDumpBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.AddOil()); #endregion #region Powercell Dump Button var powercellDumpBTN = GameObjectHelpers.FindGameObject(maintenancePage, "PowerBTN"); InterfaceHelpers.CreateButton(powercellDumpBTN, "PowercellDumpBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.AddPower()); #endregion //================= Programming Page ================// #region Programming Grid _programmingGrid = _mono.gameObject.AddComponent <GridHelper>(); _programmingGrid.OnLoadDisplay += OnLoadProgrammingGrid; _programmingGrid.Setup(6, FCSDeepDrillerBuildable.ProgrammingItemPrefab, programmingPage, _startColor, _hoverColor, OnButtonClick); var addBTN = GameObjectHelpers.FindGameObject(programmingPage, "AddBTN"); InterfaceHelpers.CreateButton(addBTN, "AddProgramBTN", InterfaceButtonMode.Background, OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, FCSDeepDrillerBuildable.AddProgramButton()); #endregion #region Find Unit _unitID = GameObjectHelpers.FindGameObject(homePage, "UnitID")?.GetComponent <Text>(); #endregion } catch (Exception e) { QuickLogger.Error("Error Has been caught:"); QuickLogger.Error($"Message:\n {e.Message}"); QuickLogger.Error($"StackTrace:\n {e.StackTrace}"); return(false); } return(true); }
internal void UpdateDisplayValues() { _powerUsage.text = string.Format(FCSDeepDrillerBuildable.PowerUsageFormat(), _mono.PowerManager.GetPowerUsage()); _itemsPerDay.text = _mono.OreGenerator.GetItemsPerDay(); }
private void UpdatePowerUsage() { _powerUsage.text = string.Format(FCSDeepDrillerBuildable.PowerUsageFormat(), _mono.PowerManager.GetPowerUsage()); }