diff options
Diffstat (limited to 'source/game/items/StarMaterialItem.hpp')
-rw-r--r-- | source/game/items/StarMaterialItem.hpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/source/game/items/StarMaterialItem.hpp b/source/game/items/StarMaterialItem.hpp index ca345eb..e5b1f01 100644 --- a/source/game/items/StarMaterialItem.hpp +++ b/source/game/items/StarMaterialItem.hpp @@ -5,12 +5,15 @@ #include "StarFireableItem.hpp" #include "StarBeamItem.hpp" #include "StarEntityRendering.hpp" +#include "StarPreviewTileTool.hpp" +#include "StarRenderableItem.hpp" +#include "StarCollisionBlock.hpp" namespace Star { STAR_CLASS(MaterialItem); -class MaterialItem : public Item, public FireableItem, public BeamItem { +class MaterialItem : public Item, public FireableItem, public PreviewTileTool, public RenderableItem, public BeamItem { public: MaterialItem(Json const& config, String const& directory, Json const& settings); virtual ~MaterialItem() {} @@ -20,6 +23,7 @@ public: void init(ToolUserEntity* owner, ToolHand hand) override; void uninit() override; void update(float dt, FireMode fireMode, bool shifting, HashSet<MoveControlType> const& moves) override; + void render(RenderCallback* renderCallback, EntityRenderLayer renderLayer) override; List<Drawable> nonRotatedDrawables() const override; @@ -32,10 +36,14 @@ public: bool canPlace(bool shifting) const; bool multiplaceEnabled() const; - // FIXME: Why isn't this a PreviewTileTool then?? - List<PreviewTile> preview(bool shifting) const; + float& blockRadius(); + float& altBlockRadius(); + TileCollisionOverride& collisionOverride(); + List<PreviewTile> preview(bool shifting) const override; private: + float calcRadius(bool shifting) const; + List<Vec2I>& tileArea(float radius) const; MaterialHue placementHueShift(Vec2I const& position) const; MaterialId m_material; @@ -47,6 +55,10 @@ private: bool m_multiplace; StringList m_placeSounds; Maybe<Vec2F> m_lastAimPosition; + TileCollisionOverride m_collisionOverride; + + mutable float m_lastTileAreaRadiusCache; + mutable List<Vec2I> m_tileAreasCache; }; } |