#pragma once #include "DiodeTile.h" class RepeaterTile : public DiodeTile { public: static const int DELAY_MASK = DIRECTION_INV_MASK; static const int DELAY_SHIFT = 2; static const double DELAY_RENDER_OFFSETS[4]; private: static const int DELAYS[4]; public: RepeaterTile(int id, bool on); virtual bool use(Level* level, int x, int y, int z, std::shared_ptr player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); protected: virtual int getTurnOnDelay(int data); virtual DiodeTile* getOnTile(); virtual DiodeTile* getOffTile(); public: virtual int getResource(int data, Random* random, int playerBonusLevel); virtual int cloneTileId(Level* level, int x, int y, int z); virtual int getRenderShape(); virtual bool isLocked(LevelSource* level, int x, int y, int z, int data); protected: virtual bool isAlternateInput(int tile); public: void animateTick(Level* level, int xt, int yt, int zt, Random* random); void onRemove(Level* level, int x, int y, int z, int id, int data); virtual bool TestUse(); };