public bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { var dna = pickupable.GetComponent <FCSDNA>(); if (dna == null) { return(false); } if (IsFull) { QuickLogger.Message(HydroponicHarvestersBuildable.StorageFull(), true); return(false); } dna.GetDnaData(); if (_currentEnvironment != dna.Environment) { QuickLogger.Message(HydroponicHarvestersBuildable.IncorrectEnvironment(), true); return(false); } var result = CanBeStored(_mono.DumpContainer.GetCount() + 1, pickupable.GetTechType()); if (!result) { QuickLogger.Message(HydroponicHarvestersBuildable.StorageFull(), true); } return(result); }
private void UpdateSpeedModeText() { switch (_mono.CurrentSpeedMode) { case SpeedModes.Off: _powerLevelText.text = HydroponicHarvestersBuildable.Off(); break; case SpeedModes.Max: _powerLevelText.text = HydroponicHarvestersBuildable.Max(); break; case SpeedModes.High: _powerLevelText.text = HydroponicHarvestersBuildable.High(); break; case SpeedModes.Low: _powerLevelText.text = HydroponicHarvestersBuildable.Low(); break; case SpeedModes.Min: _powerLevelText.text = HydroponicHarvestersBuildable.Min(); break; } }
public bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { QuickLogger.Debug( $"Current TechType: {pickupable.GetTechType()} || FlorKleen TechType: {QPatch.FloraKleen.TechType}"); if (pickupable.GetTechType() == QPatch.FloraKleen.TechType) { if (_isDirty) { return(true); } QuickLogger.Message(HydroponicHarvestersBuildable.UnitIsntDirty(), true); } else { QuickLogger.Message(HydroponicHarvestersBuildable.NotAllowedItem(), true); } return(false); }
internal void DeleteItemFromContainer(TechType item) { if (!Items.ContainsKey(item)) { return; } //TODO Add Message to confirm Delete; if (Items[item] > 0) { QuickLogger.Message(HydroponicHarvestersBuildable.CannotDeleteDNAItem(Language.main.Get(item)), true); return; } if (_mono.HydroHarvGrowBed.GetDnaCount(item) <= 1) { Items.Remove(item); } _mono.HydroHarvGrowBed.RemoveDNA(item); OnContainerUpdate?.Invoke(); }
internal void UpdateTimeLeft(string hms) { if (!QPatch.Configuration.Config.GetsDirtyOverTime && _timeLeft.text.Equals(HydroponicHarvestersBuildable.NotAvailable())) { return; } _timeLeft.text = QPatch.Configuration.Config.GetsDirtyOverTime ? string.Format(HydroponicHarvestersBuildable.HMSTime(), $"<color=aqua>{hms}</color>") : HydroponicHarvestersBuildable.NotAvailable(); }
internal void UpdatePowerUsagePerSecond() { if (_powerUsage == null) { return; } _powerUsage.text = $"<size=100><color=Green>{_mono.PowerManager.GetEnergyPerSecond()}</color>{Environment.NewLine}{HydroponicHarvestersBuildable.PowerUnitPerSecond()}</size>"; }
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); }
internal void OnContainerUpdate(int arg1, int arg2) { UpdateDna(); _itemsCount.text = string.Format(HydroponicHarvestersBuildable.AmountOfItems(), $"<color=aqua>{_mono.HydroHarvContainer.GetTotal()}/{_mono.HydroHarvContainer.StorageLimit}</color>"); }
private static void AddTechFabricatorItems() { var dnaIcon = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "DNA.png")); var icon = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "LargeHydroponicHarvester.png")); var eatableIcon = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "eatableIcon.png")); var usableIcon = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "usableIcon.png")); var decorIcon = ImageUtils.LoadSpriteFromFile(Path.Combine(Mod.GetAssetFolder(), "BluePalm_FCSDNA.png")); var craftingTab = new CraftingTab(Mod.HydroHarvTabID, Mod.ModFriendlyName, icon); var largeHydroHarv = new FCSKit(Mod.LargeHydroHarvKitClassID, Mod.LargeFriendlyName, craftingTab, Mod.LargeHydroHarvIngredients); largeHydroHarv.Patch(FcTechFabricatorService.PublicAPI, FcAssetBundlesService.PublicAPI); var mediumHydroHarv = new FCSKit(Mod.MediumHydroHarvKitClassID, Mod.MediumFriendlyName, craftingTab, Mod.MediumHydroHarvIngredients); mediumHydroHarv.Patch(FcTechFabricatorService.PublicAPI, FcAssetBundlesService.PublicAPI); var smallHydroHarv = new FCSKit(Mod.SmallHydroHarvKitClassID, Mod.SmallFriendlyName, craftingTab, Mod.SmallHydroHarvIngredients); smallHydroHarv.Patch(FcTechFabricatorService.PublicAPI, FcAssetBundlesService.PublicAPI); FcTechFabricatorService.PublicAPI.AddTabNode("DNASample", "DNA Samples", dnaIcon); FcTechFabricatorService.PublicAPI.AddTabNode("FCS_EatableDNA", "Eatable DNA Samples", eatableIcon, "DNASample"); FcTechFabricatorService.PublicAPI.AddTabNode("FCS_UsableDNA", "Usable DNA Samples", usableIcon, "DNASample"); FcTechFabricatorService.PublicAPI.AddTabNode("FCS_DecorDNA", "Decor DNA Samples", decorIcon, "DNASample"); foreach (var dnaSample in Mod.EatableDNASamples) { var dna = new FCSDNASample(dnaSample.ClassID, dnaSample.Friendly, dnaSample.Description, dnaSample.Ingredient, dnaSample.Amount); dna.ChangeIconLocation(Mod.GetAssetFolder()); dna.Patch(); FcTechFabricatorService.PublicAPI.AddCraftNode(dna, "FCS_EatableDNA"); } foreach (var dnaSample in Mod.UsableDNASamples) { var dna = new FCSDNASample(dnaSample.ClassID, dnaSample.Friendly, dnaSample.Description, dnaSample.Ingredient, dnaSample.Amount); dna.ChangeIconLocation(Mod.GetAssetFolder()); dna.Patch(); FcTechFabricatorService.PublicAPI.AddCraftNode(dna, "FCS_UsableDNA"); } foreach (var dnaSample in Mod.DecorSamples) { var dna = new FCSDNASample(dnaSample.ClassID, dnaSample.Friendly, dnaSample.Description, dnaSample.Ingredient, dnaSample.Amount); dna.ChangeIconLocation(Mod.GetAssetFolder()); dna.Patch(); FcTechFabricatorService.PublicAPI.AddCraftNode(dna, "FCS_DecorDNA"); } if (HydroponicHarvestersModelPrefab.GetPrefabs()) { var hydroHarvesterLarge = new HydroponicHarvestersBuildable(Mod.LargeClassID, Mod.LargeFriendlyName, Mod.LargeDescription, new Vector3(2.13536f, 2.379217f, 2.341017f), new Vector3(0f, 1.556781f, 0f), Mod.LargeHydroHarvKitClassID.ToTechType(), HydroponicHarvestersModelPrefab.LargePrefab, Mod.LargeBubblesLocations); hydroHarvesterLarge.Patch(); QuickLogger.Debug("Patched Large"); var hydroHarvesterMedium = new HydroponicHarvestersBuildable(Mod.MediumClassID, Mod.MediumFriendlyName, Mod.MediumDescription, new Vector3(1.654228f, 2.46076f, 2.274961f), new Vector3(-0.02562737f, 1.505608f, 0.02242398f), Mod.MediumHydroHarvKitClassID.ToTechType(), HydroponicHarvestersModelPrefab.MediumPrefab, Mod.MediumBubblesLocations); hydroHarvesterMedium.Patch(); QuickLogger.Debug("Patched Medium"); var hydroHarvesterSmall = new HydroponicHarvestersBuildable(Mod.SmallClassID, Mod.SmallFriendlyName, Mod.SmallDescription, new Vector3(1.648565f, 2.492922f, 1.784077f), new Vector3(-0.01223725f, 1.492922f, 0.1544394f), Mod.SmallHydroHarvKitClassID.ToTechType(), HydroponicHarvestersModelPrefab.SmallPrefab, Mod.SmallBubblesLocations); hydroHarvesterSmall.Patch(); FloraKleen = new FloraKleenPatcher(Mod.FloraKleenClassID, Mod.FloraKleenFriendlyName, Mod.FloraKleenDescription, craftingTab); FloraKleen.Register(); FloraKleen.Patch(FcTechFabricatorService.PublicAPI, FcAssetBundlesService.PublicAPI); QuickLogger.Debug("Patched Small"); } else { throw new PatchTerminatedException("Failed to get the prefabs from the asset bundle"); } }