the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 89 lines 2.4 kB view raw
1#pragma once 2#include "Tile.h" 3#include "TilePos.h" 4#include "Definitions.h" 5 6class Random; 7class HitResult; 8class ChunkRebuildData; 9 10using namespace std; 11 12class BaseRailTile : public Tile 13{ 14 friend class Tile; 15 friend class ChunkRebuildData; 16public: 17 static const int DIR_FLAT_Z = 0; 18 static const int DIR_FLAT_X = 1; 19 // the data bit is used by boosters and detectors, so they can't turn 20 static const int RAIL_DATA_BIT = 8; 21 static const int RAIL_DIRECTION_MASK = 7; 22 23private: 24 Icon *iconTurn; 25 26protected: 27 bool usesDataBit; 28 29 class Rail 30 { 31 friend class BaseRailTile; 32 friend class RailTile; 33 private: 34 Level *level; 35 int x, y, z; 36 bool usesDataBit; 37 vector<TilePos *> connections; 38 bool m_bValidRail; // 4J added 39 40 public: 41 Rail(Level *level, int x, int y, int z); 42 ~Rail(); 43 private: 44 void updateConnections(int direction); 45 void removeSoftConnections(); 46 bool hasRail(int x, int y, int z); 47 Rail *getRail(TilePos *p); 48 bool connectsTo(Rail *rail); 49 bool hasConnection(int x, int y, int z); 50 51 protected: 52 int countPotentialConnections(); 53 54 private: 55 bool canConnectTo(Rail *rail); 56 void connectTo(Rail *rail); 57 bool hasNeighborRail(int x, int y, int z); 58 public: 59 void place(bool hasSignal, bool first); 60 }; 61public: 62 static bool isRail(Level *level, int x, int y, int z); 63 static bool isRail(int id); 64protected: 65 BaseRailTile(int id, bool usesDataBit); 66public: 67 using Tile::getResourceCount; 68 69 bool isUsesDataBit(); 70 virtual AABB *getAABB(Level *level, int x, int y, int z); 71 virtual bool blocksLight(); 72 virtual bool isSolidRender(bool isServerLevel = false); 73 virtual HitResult *clip(Level *level, int xt, int yt, int zt, Vec3 *a, Vec3 *b); 74 virtual void updateShape(LevelSource *level, int x, int y, int z, int forceData = -1, shared_ptr<TileEntity> forceEntity = shared_ptr<TileEntity>()); // 4J added forceData, forceEntity param 75 virtual bool isCubeShaped(); 76 virtual int getRenderShape(); 77 virtual int getResourceCount(Random random); 78 virtual bool mayPlace(Level *level, int x, int y, int z); 79 virtual void onPlace(Level *level, int x, int y, int z); 80 virtual void neighborChanged(Level *level, int x, int y, int z, int type); 81 82protected: 83 virtual void updateState(Level *level, int x, int y, int z, int data, int dir, int type); 84 virtual void updateDir(Level *level, int x, int y, int z, bool first); 85 86public: 87 int getPistonPushReaction(); 88 void onRemove(Level *level, int x, int y, int z, int id, int data); 89};