FireBasedProcessingBlockComponent.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 burnLight;
  19. int ticksNeeded;
  20. Recipie* currentRecipie;
  21. int fuelBuffer;
  22. bool burning;
  23. public:
  24. FireBasedProcessingBlockComponent();
  25. virtual ~FireBasedProcessingBlockComponent();
  26. protected:
  27. void findRecipie();
  28. void consumeFuel();
  29. public:
  30. virtual void initialize(Block* zBlock) override;
  31. virtual bool tick(int numTicks) override;
  32. virtual Framework::XML::Element* getUIML() const override;
  33. virtual bool isAllAvailable(
  34. Framework::RCArray<RecipieInput>& inputs) override;
  35. virtual bool hasFreeSpace(const Item* zItem, int amount) override;
  36. virtual void consume(Framework::RCArray<RecipieInput>& inputs) override;
  37. virtual void addCraftingResult(ItemStack* zStack) override;
  38. virtual Framework::Vec3<float> getStorageLocation() const override;
  39. virtual int getStorageDimensionId() const override;
  40. virtual void loadComponent(Framework::StreamReader* zReader) override;
  41. virtual void saveComponent(Framework::StreamWriter* zWriter) const override;
  42. virtual bool isLightSource() const override;
  43. virtual int getLightColor() const override;
  44. friend class FireBasedProcessingBlockComponentFactory;
  45. };
  46. class FireBasedProcessingBlockComponentFactory
  47. : public SubTypeFactory<BlockComponent, FireBasedProcessingBlockComponent>
  48. {
  49. public:
  50. FireBasedProcessingBlockComponentFactory();
  51. FireBasedProcessingBlockComponent* fromJson(
  52. Framework::JSON::JSONObject* zJson) const override;
  53. Framework::JSON::JSONObject* toJsonObject(
  54. FireBasedProcessingBlockComponent* zObject) const override;
  55. JSONObjectValidationBuilder* addToValidator(
  56. JSONObjectValidationBuilder* builder) const override;
  57. const char* getTypeToken() const override;
  58. };