コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 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();
 }
コード例 #6
0
 internal void UpdatePowerUsagePerSecond()
 {
     if (_powerUsage == null)
     {
         return;
     }
     _powerUsage.text = $"<size=100><color=Green>{_mono.PowerManager.GetEnergyPerSecond()}</color>{Environment.NewLine}{HydroponicHarvestersBuildable.PowerUnitPerSecond()}</size>";
 }
コード例 #7
0
        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);
        }
コード例 #8
0
 internal void OnContainerUpdate(int arg1, int arg2)
 {
     UpdateDna();
     _itemsCount.text = string.Format(HydroponicHarvestersBuildable.AmountOfItems(),
                                      $"<color=aqua>{_mono.HydroHarvContainer.GetTotal()}/{_mono.HydroHarvContainer.StorageLimit}</color>");
 }
コード例 #9
0
        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");
            }
        }