private Func <bool> TryGetUseItemAction(InteractableObject item, InteractableObject target, RoomState roomState) { if (roomState == null) { Debug.LogError("ROOM STATE IS NULL IN INVENTORY"); } /* * if(item.Id == StatefulGameObjectId.Money) * { * switch(target.Id) * { * case StatefulGameObjectId.ElectricityBill: * return () => roomState.PayElectricityBill(); * * case StatefulGameObjectId.Trash: * return () => { GuideText.Instance.SetText("You tried putting money in the trash"); return false; }; * } * } * else */if (item.Id == StatefulGameObjectId.WateringCan) { switch (target.Id) { case StatefulGameObjectId.Flower: var waterCanState = RoomGenerator.Instance.GetRoomStateByRoom(CurrentPickedObject.ParentRoom).WaterCanState; if (waterCanState == WaterCanState.FallenDown) { return(() => { GuideText.Instance.SetText("There is no water in the watering can"); return false; }); } if (waterCanState == WaterCanState.Filled) { if (roomState.FlowerState == FlowerState.Dead) { return(() => { GuideText.Instance.SetText("There flower is already dead. Watering does not help.."); return false; }); } return(() => { roomState.WaterPlant(); GuideText.Instance.SetText("You watered the plant"); return false; }); } break; case StatefulGameObjectId.Tap: if (roomState.WaterPipeState == WaterPipeState.Fixed) { return(() => { if (roomState.FillWateringCan()) { var filledCan = item.GetComponentInParent <StatefulGameObject>().GetStateObject("Filled"); if (filledCan != null) { this.CurrentPickedObject = filledCan.GetComponentInChildren <InteractableObject>(); GuideText.Instance.SetText("You filled the watering can"); } } return false; }); } else { return(() => { GuideText.Instance.SetText("The tap doesnt work because the pipe is broken"); return false; }); } break; } } else if (item.Id == StatefulGameObjectId.Tape) { switch (target.Id) { case StatefulGameObjectId.WaterPipe: if (roomState.WaterPipeState == WaterPipeState.PipeBroken) { return(() => roomState.FixPipe()); } break; } } else if (item.Id == StatefulGameObjectId.Ball) { switch (target.Id) { case StatefulGameObjectId.Dog: if (roomState.DogState == DogState.Angry) { return(() => roomState.AddBallToDog()); } else if (roomState.DogState == DogState.Sleeping) { return(() => { GuideText.Instance.SetText("The dog is sleeping, it doesnt want to play with the ball right now"); return false; }); } else if (roomState.DogState == DogState.Happy) { return(() => { GuideText.Instance.SetText("The dog is already happy!"); return false; }); } break; } } return(() => { GuideText.Instance.SetText("Nothing happens..."); return false; }); }