#pragma once #include "Tile.h" #include "../Util/Definitions.h" class Random; class Level; class ChunkRebuildData; class RedStoneDustTile : public Tile { friend ChunkRebuildData; public: static const std::wstring TEXTURE_CROSS; static const std::wstring TEXTURE_LINE; static const std::wstring TEXTURE_CROSS_OVERLAY; static const std::wstring TEXTURE_LINE_OVERLAY; private: bool shouldSignal; std::unordered_set toUpdate; Icon* iconCross; Icon* iconLine; Icon* iconCrossOver; Icon* iconLineOver; public: RedStoneDustTile(int id); virtual void updateDefaultShape(); // 4J Added override virtual AABB* getAABB(Level* level, int x, int y, int z); virtual bool isSolidRender(bool isServerLevel = false); virtual bool isCubeShaped(); virtual int getRenderShape(); virtual int getColor() const; // 4J Added virtual int getColor(LevelSource* level, int x, int y, int z); virtual int getColor(LevelSource* level, int x, int y, int z, int data); // 4J added virtual bool mayPlace(Level* level, int x, int y, int z); private: void updatePowerStrength(Level* level, int x, int y, int z); void updatePowerStrength(Level* level, int x, int y, int z, int xFrom, int yFrom, int zFrom); void checkCornerChangeAt(Level* level, int x, int y, int z); public: virtual void onPlace(Level* level, int x, int y, int z); virtual void onRemove(Level* level, int x, int y, int z, int id, int data); private: int checkTarget(Level* level, int x, int y, int z, int target); public: virtual void neighborChanged(Level* level, int x, int y, int z, int type); virtual int getResource(int data, Random* random, int playerBonusLevel); virtual int getDirectSignal(LevelSource* level, int x, int y, int z, int dir); virtual int getSignal(LevelSource* level, int x, int y, int z, int dir); virtual bool isSignalSource(); virtual void animateTick(Level* level, int x, int y, int z, Random* random); static bool shouldConnectTo(LevelSource* level, int x, int y, int z, int direction); static bool shouldReceivePowerFrom(LevelSource* level, int x, int y, int z, int direction); virtual int cloneTileId(Level* level, int x, int y, int z); void registerIcons(IconRegister* iconRegister); static Icon* getTexture(const std::wstring& name); };