FireBasedProcessingBlockComponent.h 2.2 KB

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