FireBasedProcessingBlockComponent.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include "BlockComponent.h"
  3. #include "CraftingStorage.h"
  4. #include "TypeRegistry.h"
  5. #include "UIObservable.h"
  6. class ItemFilter;
  7. class FireBasedProcessingBlockComponent : public BlockComponent,
  8. public CraftingStorage
  9. {
  10. private:
  11. UIObservable fuelObservable;
  12. UIObservable progressObservable;
  13. Block* zBlock;
  14. ItemFilter* fireStartingItemFilter;
  15. ItemFilter* fuelItemFilter;
  16. Framework::Text recipieGroup;
  17. Framework::Text fuelInventorySlotName;
  18. Framework::Text fireStartingInventorySlotName;
  19. Framework::Text inputInventorySlotName;
  20. Framework::Text outputInventorySlotName;
  21. int burnLight;
  22. int ticksNeeded;
  23. Recipie* currentRecipie;
  24. int maxFuelBuffer;
  25. int fuelBuffer;
  26. bool burning;
  27. public:
  28. FireBasedProcessingBlockComponent();
  29. virtual ~FireBasedProcessingBlockComponent();
  30. protected:
  31. bool findRecipie();
  32. bool consumeFuel();
  33. void createProgressMessage(NetworkMessage* message) const;
  34. void createFuelMessage(NetworkMessage* message) const;
  35. public:
  36. virtual void initialize(Block* zBlock) override;
  37. virtual bool tick(int numTicks) override;
  38. virtual void api(Framework::StreamReader* zRequest,
  39. NetworkMessage* zResponse,
  40. Entity* zSource) override;
  41. virtual Framework::XML::Element* getTooltipUIML() const override;
  42. virtual bool isAllAvailable(
  43. Framework::RCArray<RecipieInput>& inputs) override;
  44. virtual bool hasFreeSpace(const Item* zItem, int amount) override;
  45. virtual void consume(Framework::RCArray<RecipieInput>& inputs) override;
  46. virtual void addCraftingResult(ItemStack* zStack) override;
  47. virtual Framework::Vec3<float> getStorageLocation() const override;
  48. virtual int getStorageDimensionId() const override;
  49. virtual void loadComponent(Framework::StreamReader* zReader) override;
  50. virtual void saveComponent(Framework::StreamWriter* zWriter) const override;
  51. virtual bool isLightSource() const override;
  52. virtual int getLightColor() const override;
  53. friend class FireBasedProcessingBlockComponentFactory;
  54. };
  55. class FireBasedProcessingBlockComponentFactory
  56. : public SubTypeFactory<BlockComponent, FireBasedProcessingBlockComponent>
  57. {
  58. public:
  59. FireBasedProcessingBlockComponentFactory();
  60. FireBasedProcessingBlockComponent* fromJson(
  61. Framework::JSON::JSONObject* zJson) const override;
  62. Framework::JSON::JSONObject* toJsonObject(
  63. FireBasedProcessingBlockComponent* zObject) const override;
  64. JSONObjectValidationBuilder* addToValidator(
  65. JSONObjectValidationBuilder* builder) const override;
  66. const char* getTypeToken() const override;
  67. };