public Entity ReplaceMaterialReference(MaterialStorage newStorage)
 {
     var component = CreateComponent<MaterialReferenceComponent>(ComponentIds.MaterialReference);
     component.storage = newStorage;
     ReplaceComponent(ComponentIds.MaterialReference, component);
     return this;
 }
Beispiel #2
0
        public override void Entry(IModHelper helper)
        {
            _config          = helper.ReadConfig <ModConfig>();
            _materialStorage = new MaterialStorage(Monitor, _config);
            _materialStorage.RegisterEvents(helper);
            var chestSelected   = helper.Content.Load <Texture2D>("assets/workbench-1.png");
            var chestDeselected = helper.Content.Load <Texture2D>("assets/workbench-2.png");

            _uiHandler = new UIHandler(chestSelected, chestDeselected, _config, _materialStorage, Helper, Monitor);
            _uiHandler.RegisterUIEvents(helper);

            _refreshConfigKey = InputUtils.ParseButton(_config.ConfigReloadKey, Monitor);
            helper.Events.Input.ButtonPressed += OnButtonPressed;

            BluePrintPatch.Initialize(Monitor, _config, _materialStorage);
            var harmony = HarmonyInstance.Create(ModManifest.UniqueID);

            harmony.Patch(
                AccessTools.Method(typeof(StardewValley.BluePrint), nameof(StardewValley.BluePrint.doesFarmerHaveEnoughResourcesToBuild)),
                new HarmonyMethod(typeof(BluePrintPatch), nameof(BluePrintPatch.doesFarmerHaveEnoughResourcesToBuild_Prefix)),
                new HarmonyMethod(typeof(BluePrintPatch), nameof(BluePrintPatch.doesFarmerHaveEnoughResourcesToBuild_Postfix)));
            harmony.Patch(
                AccessTools.Method(typeof(StardewValley.BluePrint), nameof(StardewValley.BluePrint.consumeResources)),
                new HarmonyMethod(typeof(BluePrintPatch), nameof(BluePrintPatch.consumeResources_Prefix)));
        }
Beispiel #3
0
        /// <summary>
        /// 新建产品
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CreateProductbutton_Click(object sender, EventArgs e)
        {
            string          TempPName    = "新产品_" + (Program.SystemContainer.MaterialStorageList.Count + 1).ToString();
            MaterialStorage TempMStorage = new MaterialStorage()
            {
                ProductName  = TempPName,
                MaterialList = new List <Material>()
            };

            Program.SystemContainer.MaterialStorageList.Add(new MaterialStorage(TempMStorage));
            InitTree();
        }
Beispiel #4
0
        public void InitMaterialList(MaterialStorage materialStorage)
        {
            List <MaterialRecord> materialRecords = materialStorage.MaterialRecordList;

            materialList.Clear();
            materialList.AddItems(materialRecords.Count);
            for (int i = 0; i < materialRecords.Count; i++)
            {
                GUI_ExoFabMaterialEntry item = materialList.Entries[i] as GUI_ExoFabMaterialEntry;
                item.ReInit(materialRecords[i]);
            }
        }
Beispiel #5
0
        public void InitMaterialList(MaterialStorage materialStorage)
        {
            var materialRecords = materialStorage.MaterialList;

            materialList.Clear();
            materialList.AddItems(materialRecords.Count);
            var i = 0;

            foreach (var material in materialRecords.Keys)
            {
                GUI_AutolatheMaterialEntry item = materialList.Entries[i] as GUI_AutolatheMaterialEntry;
                item.ReInit(material, materialRecords[material]);
                i++;
            }
        }
Beispiel #6
0
 /// <summary>
 /// Updates the material count for each material
 /// </summary>
 /// <param name="exofab"></param>
 public void UpdateMaterialList(MaterialStorage materialStorage)
 {
     InitMaterialList(materialStorage);
 }
 public Entity AddMaterialReference(MaterialStorage newStorage)
 {
     var component = CreateComponent<MaterialReferenceComponent>(ComponentIds.MaterialReference);
     component.storage = newStorage;
     return AddComponent(ComponentIds.MaterialReference, component);
 }
 public void EnsureInit()
 {
     spriteHandler   = GetComponentInChildren <SpriteHandler>();
     materialStorage = this.GetComponent <MaterialStorage>();
 }
Beispiel #9
0
 public void EnsureInit()
 {
     SyncSprite(ExosuitFabricatorState.Idle, ExosuitFabricatorState.Idle);
     materialStorage = this.GetComponent <MaterialStorage>();
 }