FluidContainer.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #pragma once
  2. #include <Vec3.h>
  3. #include "Item.h"
  4. #include "ItemSkill.h"
  5. class FluidContainerItemType;
  6. class FluidContainerItem : public Item
  7. {
  8. private:
  9. int fluidTypeId;
  10. int fluidAmount;
  11. public:
  12. FluidContainerItem(int itemTypeId, const char* name);
  13. virtual const BlockType* zPlacedBlockType() const override;
  14. virtual bool canBeStackedWith(const Item* zItem) const override;
  15. virtual bool canBePlacedAt(
  16. int dimensionId, Framework::Vec3<int> worldPos) const override;
  17. virtual void onPlaced();
  18. virtual Framework::Text getTooltipUIML() const override;
  19. virtual bool applyFoodEffects(Entity* zTarget) override;
  20. virtual bool canApplyFoodEffectsFully(Entity* zTarget) const override;
  21. int getAmount() const;
  22. void setAmount(int amount);
  23. int getFluidTypeId() const;
  24. void setFluidTypeId(int fluidTypeId);
  25. friend FluidContainerItemType;
  26. };
  27. class FluidContainerItemSkillLevelUpRule;
  28. class FluidContainerItemSkill : public ItemSkill
  29. {
  30. int level;
  31. float xp;
  32. float maxXP;
  33. public:
  34. FluidContainerItemSkill(int itemTypeId);
  35. virtual bool use(Entity* zActor, Item* zUsedItem, Block* zTarget) override;
  36. virtual bool use(Entity* zActor, Item* zUsedItem, Entity* zTarget) override;
  37. friend FluidContainerItemType;
  38. friend FluidContainerItemSkillLevelUpRule;
  39. };
  40. class FluidContainerItemSkillLevelUpRule : public ItemSkillLevelUpRule
  41. {
  42. public:
  43. FluidContainerItemSkillLevelUpRule();
  44. void applyOn(ItemSkill* zSkill) override;
  45. };
  46. class FluidContainerItemType : public ItemType
  47. {
  48. private:
  49. int maxFluidAmount;
  50. protected:
  51. virtual void loadSuperItem(
  52. Item* zItem, Framework::StreamReader* zReader) const override;
  53. virtual void saveSuperItem(
  54. const Item* zItem, Framework::StreamWriter* zWriter) const override;
  55. virtual void loadSuperItemSkill(
  56. ItemSkill* zSkill, Framework::StreamReader* zReader) const override;
  57. virtual void saveSuperItemSkill(const ItemSkill* zSkill,
  58. Framework::StreamWriter* zWriter) const override;
  59. public:
  60. FluidContainerItemType(int typeId, const char* name, ModelInfo model);
  61. virtual Item* createItem() const override;
  62. virtual ItemSkill* createDefaultItemSkill() const override;
  63. virtual void setItemAttribute(Item* zItem,
  64. Framework::Text name,
  65. Framework::JSON::JSONValue* zValue) const override;
  66. virtual void addItemAttributes(
  67. Item* zItem, Framework::JSON::JSONObject* zItemObjet) const override;
  68. int getMaxFluidAmount() const;
  69. FluidContainerItemType* setMaxFluidAmount(int maxFluidAmount);
  70. };