wip_feat(PS3): Implement SPU variants for a portion of TU19's blocks

crashes at a stack overflow, cant be assed to fix it atm
This commit is contained in:
2026-07-14 19:52:30 +03:00
parent 976f55c46d
commit 2dfad97503
41 changed files with 574 additions and 308 deletions
@@ -242,11 +242,10 @@ C4JSpursJob_ChunkUpdate::C4JSpursJob_ChunkUpdate(ChunkRebuildData* pDataIn, Chun
extern const CellSpursJobHeader JOBHEADER_SYMBOL(ChunkUpdate);
//E create job
m_job256.header = JOBHEADER_SYMBOL(ChunkUpdate);
m_job256.header.sizeStack = (60*1024)>>4;
m_job256.header.sizeStack = (58*1024)>>4;
m_job256.workArea.userData[0] = (uintptr_t)pDataIn;
m_job256.workArea.userData[1] = (uintptr_t)pDataOut;
assert(cellSpursJobQueueCheckJob(&m_job256, 256, 256) == CELL_OK);
}
C4JSpursJob_LevelRenderer_cull::C4JSpursJob_LevelRenderer_cull(LevelRenderer_cull_DataIn* pDataIn)
@@ -0,0 +1,21 @@
#pragma once
#include "BaseRailTile_SPU.h"
class ActivatorRailTile_SPU : public BaseRailTile_SPU
{
public:
ActivatorRailTile_SPU(int id) : BaseRailTile_SPU(id) {}
Icon_SPU *getTexture(int face, int data)
{
if ((data & RAIL_DATA_BIT) == 0)
{
return &ms_pTileData->activatorRailTile_icon;
}
else
{
return &ms_pTileData->activatorRailTile_iconPowered;
}
};
};
@@ -0,0 +1,41 @@
#include "stdafx.h"
#include "BasePressurePlateTile_SPU.h"
#include "ChunkRebuildData.h"
bool BasePressurePlateTile_SPU::isSolidRender(bool isServerLevel)
{
return false;
}
bool BasePressurePlateTile_SPU::blocksLight()
{
return false;
}
void BasePressurePlateTile_SPU::updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData, TileEntity* forceEntity) // 4J added forceData, forceEntity param
{
int data = level->getData(x, y, z);
bool pressed = getSignalForData(data) > 0; // 0 is Redstone::SIGNAL_NONE
float o = 1 / 16.0f;
if (pressed)
{
setShape(o, 0, o, 1 - o, 0.5f / 16.0f, 1 - o);
}
else
{
setShape(o, 0, o, 1 - o, 1 / 16.0f, 1 - o);
}
}
void BasePressurePlateTile_SPU::updateDefaultShape()
{
float x = 8 / 16.0f;
float y = 2 / 16.0f;
float z = 8 / 16.0f;
setShape(0.5f - x, 0.5f - y, 0.5f - z, 0.5f + x, 0.5f + y, 0.5f + z);
}
@@ -0,0 +1,16 @@
#pragma once
#include "Tile_SPU.h"
class BasePressurePlateTile_SPU : public Tile_SPU
{
public:
BasePressurePlateTile_SPU(int id) : Tile_SPU(id) {}
virtual bool isSolidRender(bool isServerLevel = false);
virtual bool blocksLight();
virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL); // 4J added forceData, forceEntity param
virtual void updateDefaultShape();
protected:
virtual int getSignalForData(int data) = 0;
};
@@ -0,0 +1,31 @@
#pragma once
#include "Tile_SPU.h"
class BaseRailTile_SPU : public Tile_SPU
{
public:
static const int RAIL_DATA_BIT = 8;
static const int RAIL_DIRECTION_MASK = 7;
BaseRailTile_SPU(int id) : Tile_SPU(id) {}
virtual bool isSolidRender(bool isServerLevel = false) { return false; }
virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL) // 4J added forceData, forceEntity param
{
int data = level->getData(x, y, z);
if (data >= 2 && data <= 5)
{
setShape(0, 0, 0, 1, 2 / 16.0f + 0.5f, 1);
} else
{
setShape(0, 0, 0, 1, 2 / 16.0f, 1);
}
}
virtual int getRenderShape() { return Tile_SPU::SHAPE_RAIL; }
bool isUsesDataBit()
{
if(id == goldenRail_Id || id == detectorRail_Id || id == activatorRail_Id)
return true;
return false;
}
};
@@ -13,7 +13,7 @@ public:
if(id == Tile_SPU::button_wood_Id)
return TileRef_SPU(wood_Id)->getTexture(Facing::UP);
else
return TileRef_SPU(rock_Id)->getTexture(Facing::UP);
return TileRef_SPU(stone_Id)->getTexture(Facing::UP);
}
virtual bool blocksLight() { return false; }
virtual bool isSolidRender(bool isServerLevel = false) { return false; }
@@ -39,7 +39,7 @@ static const int Level_MAX_BRIGHTNESS = 15;
#include "TileRenderer_SPU.h"
#include "Tile_SPU.h"
#include "ChunkRebuildData.h"
TileData_SPU g_tileSPUData;
//TileData_SPU g_tileSPUData;
static const int MAX_LEVEL_SIZE = 30000000;
static const int MAX_BRIGHTNESS = 15;
@@ -89,30 +89,30 @@ void ChunkRebuildData::disableUnseenTiles()
// Establish whether this tile and its neighbours are all made of rock, dirt, unbreakable tiles, or have already
// been determined to meet this criteria themselves and have a tile of 255 set.
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
tileID = getTile(iX-1, iY, iZ);
flags = getFlags(iX-1, iY, iZ);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
tileID = getTile(iX+1, iY, iZ);
flags = getFlags(iX+1, iY, iZ);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
tileID = getTile(iX, iY, iZ-1);
flags = getFlags(iX, iY, iZ-1);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
tileID = getTile(iX, iY, iZ+1);
flags = getFlags(iX, iY, iZ+1);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
// Treat the bottom of the world differently - we shouldn't ever be able to look up at this, so consider tiles as invisible
// if they are surrounded on sides other than the bottom
if( iY > 0 )
{
tileID = getTile(iX, iY-1, iZ);
flags = getFlags(iX, iY-1, iZ);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
}
tileID = getTile(iX, iY+1, iZ);
flags = getFlags(iX, iY+1, iZ);
if( !( ( tileID == Tile_SPU::rock_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
if( !( ( tileID == Tile_SPU::stone_Id ) || ( tileID == Tile_SPU::dirt_Id ) || ( tileID == Tile_SPU::unbreakable_Id ) || ( flags & e_flag_NoRender) ) ) continue;
// This tile is surrounded. Flag it as not requiring to be rendered by setting its id to 255.
setFlag(iX, iY, iZ, e_flag_NoRender);
@@ -157,7 +157,7 @@ void ChunkRebuildData::buildMaterials()
buildMaterial(Material_SPU::plant_Id, Material::plant);
buildMaterial(Material_SPU::replaceable_plant_Id, Material::replaceable_plant);
buildMaterial(Material_SPU::sponge_Id, Material::sponge);
buildMaterial(Material_SPU::cloth_Id, Material::cloth);
buildMaterial(Material_SPU::wool_Id, Material::cloth);
buildMaterial(Material_SPU::fire_Id, Material::fire);
buildMaterial(Material_SPU::sand_Id, Material::sand);
buildMaterial(Material_SPU::decoration_Id, Material::decoration);
@@ -195,7 +195,7 @@ int ChunkRebuildData::getMaterialID(Tile* pTile)
if(m == Material::plant) return Material_SPU::plant_Id;
if(m == Material::replaceable_plant)return Material_SPU::replaceable_plant_Id;
if(m == Material::sponge) return Material_SPU::sponge_Id;
if(m == Material::cloth) return Material_SPU::cloth_Id;
if(m == Material::cloth) return Material_SPU::wool_Id;
if(m == Material::fire) return Material_SPU::fire_Id;
if(m == Material::sand) return Material_SPU::sand_Id;
if(m == Material::decoration) return Material_SPU::decoration_Id;
@@ -341,9 +341,17 @@ void ChunkRebuildData::createTileData()
setIconSPUFromIcon(&m_tileData.dispenserTile_iconFront, ((DispenserTile*)Tile::dispenser)->iconFront);
setIconSPUFromIcon(&m_tileData.dispenserTile_iconFrontVertical, ((DispenserTile*)Tile::dispenser)->iconFrontVertical);
setIconSPUFromIcon(&m_tileData.dropperTile_iconFront, ((DropperTile*)Tile::dropper)->iconFront);
setIconSPUFromIcon(&m_tileData.dropperTile_iconFrontVertical, ((DropperTile*)Tile::dropper)->iconFrontVertical);
// RailTile
setIconSPUFromIcon(&m_tileData.railTile_iconTurn, ((RailTile*)Tile::rail)->iconTurn);
setIconSPUFromIcon(&m_tileData.railTile_iconTurnGolden, ((RailTile*)Tile::goldenRail)->iconTurn);
setIconSPUFromIcon(&m_tileData.poweredRailTile_icon, ((PoweredRailTile*)Tile::goldenRail)->icon);
setIconSPUFromIcon(&m_tileData.poweredRailTile_iconPowered, ((PoweredRailTile*)Tile::goldenRail)->iconPowered);
setIconSPUFromIcon(&m_tileData.activatorRailTile_icon, ((PoweredRailTile*)Tile::activatorRail)->icon);
setIconSPUFromIcon(&m_tileData.activatorRailTile_iconPowered, ((PoweredRailTile*)Tile::activatorRail)->iconPowered);
for(int i=0;i<2;i++)
setIconSPUFromIcon(&m_tileData.detectorRailTile_icons[i], ((DetectorRailTile*)Tile::detectorRail)->icons[i]);
@@ -413,8 +421,12 @@ void ChunkRebuildData::createTileData()
setIconSPUFromIcon(&m_tileData.stoneSlab_iconSide, ((StoneSlabTile*)(Tile::stoneSlab))->iconSide);
//ColoredTile
for(int i=0;i<16;i++)
setIconSPUFromIcon(&m_tileData.clothTile_icons[i], ((ColoredTile*)Tile::wool)->icons[i]);
setIconSPUFromIcon(&m_tileData.woolTile_icons[i], ((ColoredTile*)Tile::wool)->icons[i]);
for(int i=0;i<16;i++)
setIconSPUFromIcon(&m_tileData.clayHardened_colored_icons[i], ((ColoredTile*)Tile::clayHardened_colored)->icons[i]);
// CarrotTile
for(int i=0;i<4;i++)
@@ -438,6 +450,13 @@ void ChunkRebuildData::createTileData()
setIconSPUFromIcon(&m_tileData.quartzBlock_iconTop, ((QuartzBlockTile*)Tile::quartzBlock)->iconTop);
setIconSPUFromIcon(&m_tileData.quartzBlock_iconBottom, ((QuartzBlockTile*)Tile::quartzBlock)->iconBottom);
// HayBlockTile
setIconSPUFromIcon(&m_tileData.hayBlockTile_iconTop, ((HayBlockTile*)Tile::hayBlock)->iconTop);
setIconSPUFromIcon(&m_tileData.hayBlockTile_icon, ((HayBlockTile*)Tile::hayBlock)->icon);
// DaylightDetectorTile
for(int i=0;i<1;i++)
setIconSPUFromIcon(&m_tileData.daylightDetector_icons[i], ((DaylightDetectorTile*)Tile::daylightDetector)->icons[i]);
}
// extern int g_lastHitBlockX;
@@ -59,7 +59,7 @@ public:
int m_lastHitBlockX;
int m_lastHitBlockY;
int m_lastHitBlockZ;
unsigned int m_pad[5];// padding to 16 byte alignment
unsigned int m_pad[3];// padding to 16 byte alignment
int getTileIdx(int x, int y, int z) { return (( x - m_x0 )*sc_size*sc_size) + (( y - m_y0 )*sc_size) + ( z - m_z0 ); }
@@ -115,6 +115,7 @@
<ClInclude Include="WorkbenchTile_SPU.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="BasePressurePlateTile_SPU.cpp" />
<ClCompile Include="ChunkRebuildData.cpp" />
<ClCompile Include="DiodeTile_SPU.cpp" />
<ClCompile Include="Direction_SPU.cpp" />
@@ -126,7 +127,6 @@
<ClCompile Include="Icon_SPU.cpp" />
<ClCompile Include="LeafTile_SPU.cpp" />
<ClCompile Include="LiquidTile_SPU.cpp" />
<ClCompile Include="PressurePlateTile_SPU.cpp" />
<ClCompile Include="StairTile_SPU.cpp" />
<ClCompile Include="TallGrass_SPU.cpp" />
<ClCompile Include="task.cpp" />
@@ -142,9 +142,6 @@
<ClCompile Include="LiquidTile_SPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="PressurePlateTile_SPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="StairTile_SPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -166,5 +163,8 @@
<ClCompile Include="TileRenderer_SPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BasePressurePlateTile_SPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
@@ -1,11 +0,0 @@
#pragma once
#include "Tile_SPU.h"
class ClothTile_SPU : public Tile_SPU
{
public:
ClothTile_SPU(int id) : Tile_SPU(id) {}
virtual Icon_SPU *getTexture(int face, int data) { return &ms_pTileData->clothTile_icons[data]; }
};
@@ -0,0 +1,11 @@
#pragma once
#include "Tile_SPU.h"
class ColoredClay_SPU : public Tile_SPU
{
public:
ColoredClay_SPU(int id) : Tile_SPU(id) {}
virtual Icon_SPU *getTexture(int face, int data) { return &ms_pTileData->clayHardened_colored_icons[data]; }
};
@@ -0,0 +1,21 @@
#pragma once
#include "EntityTile_SPU.h"
class DaylightDetectorTile_SPU : public EntityTile_SPU
{
public:
DaylightDetectorTile_SPU(int id) : EntityTile_SPU(id) {}
Icon_SPU *getTexture(int face, int data) {
if (face == Facing::UP)
{
return &ms_pTileData->daylightDetector_icons[0];
}
return &ms_pTileData->daylightDetector_icons[1];
};
virtual bool isSolidRender(bool isServerLevel = false) { return false; }
virtual void updateDefaultShape() { setShape(0, 0, 0, 1, 6.0f / 16.0f, 1); };
virtual void updateShape() { setShape(0, 0, 0, 1, 6.0f / 16.0f, 1); };
};
@@ -2,10 +2,10 @@
#include "RailTile_SPU.h"
class DetectorRailTile_SPU : public RailTile_SPU
class DetectorRailTile_SPU : public BaseRailTile_SPU
{
public:
DetectorRailTile_SPU(int id) : RailTile_SPU(id) {}
DetectorRailTile_SPU(int id) : BaseRailTile_SPU(id) {}
Icon_SPU *getTexture(int face, int data)
{
if ((data & RAIL_DATA_BIT) != 0)
@@ -21,9 +21,9 @@ public:
{
if (id==diode_on_Id)
{
return TileRef_SPU(notGate_on_Id)->getTexture(face);
return TileRef_SPU(redstoneTorch_on_Id)->getTexture(face);
}
return TileRef_SPU(notGate_off_Id)->getTexture(face);
return TileRef_SPU(redstoneTorch_off_Id)->getTexture(face);
}
if (face == Facing::UP)
{
@@ -0,0 +1,37 @@
#pragma once
#include "DispenserTile_SPU.h"
#include "Facing_SPU.h"
class DropperTile_SPU : public DispenserTile_SPU
{
public:
DropperTile_SPU(int id) : DispenserTile_SPU(id) {}
public:
virtual Icon_SPU *getTexture(int face, int data)
{
int dir = data & FACING_MASK;
if (face == dir)
{
if (dir == Facing::UP || dir == Facing::DOWN)
{
return &ms_pTileData->dropperTile_iconFrontVertical;
}
else
{
return &ms_pTileData->dropperTile_iconFront;
}
}
if (dir == Facing::UP || dir == Facing::DOWN)
{
return &ms_pTileData->dispenserTile_iconTop;
}
else if (face == Facing::UP || face == Facing::DOWN)
{
return &ms_pTileData->dispenserTile_iconTop;
}
return icon();
}
};
@@ -33,7 +33,7 @@ public:
case Tile_SPU::bookshelf_Id:
case Tile_SPU::tnt_Id:
case Tile_SPU::tallgrass_Id:
case Tile_SPU::cloth_Id:
case Tile_SPU::wool_Id:
case Tile_SPU::vine_Id:
return true;
default:
@@ -0,0 +1,19 @@
#pragma once
#include "RotatedPillarTile_SPU.h"
class HayBlockTile_SPU : public RotatedPillarTile_SPU
{
friend class ChunkRebuildData;
public:
HayBlockTile_SPU(int id) : RotatedPillarTile_SPU(id) {}
protected:
Icon_SPU *getTopTexture(int type) {
return &ms_pTileData->hayBlockTile_iconTop;
};
Icon_SPU *getTypeTexture(int type) {
return &ms_pTileData->hayBlockTile_icon;
};
};
@@ -14,8 +14,8 @@ public:
Icon_SPU *getTexture(int face, int data)
{
Icon_SPU* icons = ms_pTileData->hugeMushroom_icons;
int type = 0; // hugeMushroom1_Id
if(id == hugeMushroom2_Id)
int type = 0; // hugemushroom_brown_Id
if(id == hugeMushroom_red_Id)
type = 1;
// 123
// 456 10
@@ -19,7 +19,7 @@ public:
static const int plant_Id = 9;
static const int replaceable_plant_Id = 10;
static const int sponge_Id = 11;
static const int cloth_Id = 12;
static const int wool_Id = 12;
static const int fire_Id = 13;
static const int sand_Id = 14;
static const int decoration_Id = 15;
@@ -0,0 +1,21 @@
#pragma once
#include "BaseRailTile_SPU.h"
class PoweredRailTile_SPU : public BaseRailTile_SPU
{
public:
PoweredRailTile_SPU(int id) : BaseRailTile_SPU(id) {}
Icon_SPU *getTexture(int face, int data)
{
if ((data & RAIL_DATA_BIT) == 0)
{
return &ms_pTileData->poweredRailTile_icon;
}
else
{
return &ms_pTileData->poweredRailTile_iconPowered;
}
};
};
@@ -1,41 +0,0 @@
#include "stdafx.h"
#include "PressurePlateTile_SPU.h"
#include "ChunkRebuildData.h"
bool PressurePlateTile_SPU::isSolidRender(bool isServerLevel)
{
return false;
}
bool PressurePlateTile_SPU::blocksLight()
{
return false;
}
void PressurePlateTile_SPU::updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData, TileEntity* forceEntity) // 4J added forceData, forceEntity param
{
bool pressed = level->getData(x, y, z) == 1;
float o = 1 / 16.0f;
if (pressed)
{
this->setShape(o, 0, o, 1 - o, 0.5f / 16.0f, 1 - o);
}
else
{
setShape(o, 0, o, 1 - o, 1 / 16.0f, 1 - o);
}
}
void PressurePlateTile_SPU::updateDefaultShape()
{
float x = 8 / 16.0f;
float y = 2 / 16.0f;
float z = 8 / 16.0f;
setShape(0.5f - x, 0.5f - y, 0.5f - z, 0.5f + x, 0.5f + y, 0.5f + z);
}
@@ -1,21 +1,23 @@
#pragma once
#include "Tile_SPU.h"
#include "BasePressurePlateTile_SPU.h"
class PressurePlateTile_SPU : public Tile_SPU
class PressurePlateTile_SPU : public BasePressurePlateTile_SPU
{
public:
enum Sensitivity
enum Sensitivity
{
everything,
mobs,
players
};
everything, mobs, players
};
PressurePlateTile_SPU(int id) : Tile_SPU(id) {}
virtual bool isSolidRender(bool isServerLevel = false);
virtual bool blocksLight();
private:
Sensitivity sensitivity;
virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL); // 4J added forceData, forceEntity param
virtual void updateDefaultShape();
};
public:
PressurePlateTile_SPU(int id) : BasePressurePlateTile_SPU(id) {}
protected:
virtual int getSignalForData(int data) {
// 15 is Redstone::SIGNAL_MAX
return data == 1 ? 15 : 0;
};
};
@@ -1,58 +1,21 @@
#pragma once
#include "Tile_SPU.h"
class RailTile_SPU : public Tile_SPU
#include "BaseRailTile_SPU.h"
class RailTile_SPU : public BaseRailTile_SPU
{
public:
static const int RAIL_DATA_BIT = 8;
static const int RAIL_DIRECTION_MASK = 7;
RailTile_SPU(int id) : BaseRailTile_SPU(id) {}
RailTile_SPU(int id) : Tile_SPU(id) {}
virtual bool isSolidRender(bool isServerLevel = false) { return false; }
virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL) // 4J added forceData, forceEntity param
Icon_SPU *getTexture(int face, int data)
{
int data = level->getData(x, y, z);
if (data >= 2 && data <= 5)
if (data >= 6)
{
setShape(0, 0, 0, 1, 2 / 16.0f + 0.5f, 1);
} else
{
setShape(0, 0, 0, 1, 2 / 16.0f, 1);
return &ms_pTileData->railTile_iconTurn;
}
}
virtual Icon_SPU *getTexture(int face, int data)
{
bool usesDataBit = false;
Icon_SPU* iconTurn = &ms_pTileData->railTile_iconTurn;
if(id == goldenRail_Id)
else
{
usesDataBit = true;
iconTurn = &ms_pTileData->railTile_iconTurnGolden;
return icon();
}
if (usesDataBit)
{
// if (id == Tile::goldenRail_Id)
// {
if ((data & RAIL_DATA_BIT) == 0)
{
return icon();
}
else
{
return iconTurn; // Actually the powered rail on version
}
// }
} else if (data >= 6) return iconTurn;
return icon();
}
virtual int getRenderShape() { return Tile_SPU::SHAPE_RAIL; }
bool isUsesDataBit()
{
if(id == goldenRail_Id || id == detectorRail_Id)
return true;
return false;
}
};
};
@@ -0,0 +1,45 @@
#pragma once
#include "Tile_SPU.h"
#include "Facing_SPU.h"
class RotatedPillarTile_SPU : public Tile_SPU
{
public:
static const int MASK_TYPE = 0x3;
static const int MASK_FACING = 0xC;
static const int FACING_Y = 0 << 2;
static const int FACING_X = 1 << 2;
static const int FACING_Z = 2 << 2;
protected:
RotatedPillarTile_SPU(int id) : Tile_SPU(id) {}
public:
virtual int getRenderShape() { return Tile_SPU::SHAPE_TREE; };
virtual Icon_SPU *getTexture(int face, int data) {
int dir = data & MASK_FACING;
int type = data & MASK_TYPE;
if (dir == FACING_Y && (face == Facing::UP || face == Facing::DOWN))
{
return getTopTexture(type);
}
else if (dir == FACING_X && (face == Facing::EAST || face == Facing::WEST))
{
return getTopTexture(type);
}
else if (dir == FACING_Z && (face == Facing::NORTH || face == Facing::SOUTH))
{
return getTopTexture(type);
}
return getTypeTexture(type);
};
protected:
virtual Icon_SPU *getTypeTexture(int type) = 0;
virtual Icon_SPU *getTopTexture(int type) = 0;
};
@@ -43,5 +43,5 @@ public:
}
}
Icon_SPU *getTexture(int face, int data) { return TileRef_SPU(hellSand_Id)->getTexture(face); }
Icon_SPU *getTexture(int face, int data) { return TileRef_SPU(netherRack_Id)->getTexture(face); }
};
@@ -39,7 +39,7 @@ bool StairTile_SPU::isStairs(int id)
case Tile_SPU::stairs_wood_Id:
case Tile_SPU::stairs_stone_Id:
case Tile_SPU::stairs_bricks_Id:
case Tile_SPU::stairs_stoneBrickSmooth_Id:
case Tile_SPU::stairs_stoneBrick_Id:
case Tile_SPU::stairs_netherBricks_Id:
case Tile_SPU::stairs_sandstone_Id:
case Tile_SPU::stairs_sprucewood_Id:
@@ -21,12 +21,12 @@ public:
{
if (data == HOST_COBBLE)
{
return TileRef_SPU(stoneBrick_Id)->getTexture(face);
return TileRef_SPU(cobblestone_Id)->getTexture(face);
}
if (data == HOST_STONEBRICK)
{
return TileRef_SPU(stoneBrickSmooth_Id)->getTexture(face);
return TileRef_SPU(stoneBrick_Id)->getTexture(face);
}
return TileRef_SPU(rock_Id)->getTexture(face);
return TileRef_SPU(stone_Id)->getTexture(face);
}
};
@@ -41,11 +41,11 @@ public:
case WOOD_SLAB:
return TileRef_SPU(wood_Id)->getTexture(face); //Tile::wood->getTexture(face);
case COBBLESTONE_SLAB:
return TileRef_SPU(stoneBrick_Id)->getTexture(face); //Tile::stoneBrick->getTexture(face);
return TileRef_SPU(cobblestone_Id)->getTexture(face); //Tile::stoneBrick->getTexture(face);
case BRICK_SLAB:
return TileRef_SPU(redBrick_Id)->getTexture(face); //Tile::redBrick->getTexture(face);
case SMOOTHBRICK_SLAB:
return TileRef_SPU(stoneBrickSmooth_Id)->getTexture(face); //Tile::stoneBrickSmooth->getTexture(face, SmoothStoneBrickTile::TYPE_DEFAULT);
return TileRef_SPU(stoneBrick_Id)->getTexture(face); //Tile::stoneBrickSmooth->getTexture(face, SmoothStoneBrickTile::TYPE_DEFAULT);
case NETHERBRICK_SLAB:
return TileRef_SPU(netherBrick_Id)->getTexture(Facing::UP); //Tile::netherBrick->getTexture(Facing::UP);
case QUARTZ_SLAB:
@@ -12,6 +12,7 @@
#include "DirtTile_SPU.h"
#include "DoorTile_SPU.h"
#include "PressurePlateTile_SPU.h"
#include "WeightedPressurePlateTile_SPU.h"
#include "FarmTile_SPU.h"
#include "Bush_SPU.h"
#include "TallGrass_SPU.h"
@@ -32,7 +33,10 @@
#include "IceTile_SPU.h"
#include "PortalTile_SPU.h"
#include "DispenserTile_SPU.h"
#include "DropperTile_SPU.h"
#include "RailTile_SPU.h"
#include "PoweredRailTile_SPU.h"
#include "ActivatorRailTile_SPU.h"
#include "DetectorRailTile_SPU.h"
#include "TntTile_SPU.h"
#include "BookshelfTile_SPU.h"
@@ -71,7 +75,7 @@
#include "EggTile_SPU.h"
#include "CocoaTile_SPU.h"
#include "RedlightTile_SPU.h"
#include "ClothTile_SPU.h"
#include "WoolTile_SPU.h"
#include "SkullTile_SPU.h"
#include "MobSpawnerTile_SPU.h"
#include "EnderChestTile_SPU.h"
@@ -83,6 +87,9 @@
#include "PotatoTile_SPU.h"
#include "QuartzBlockTile_SPU.h"
#include "WoolCarpetTile_SPU.h"
#include "ColoredClay_SPU.h"
#include "HayBlockTile_SPU.h"
#include "DaylightDetectorTile_SPU.h"
#ifdef SN_TARGET_PS3_SPU
#include "..\Common\spu_assert.h"
@@ -514,7 +521,7 @@ void Tile_SPU::updateDefaultShape()
// void Tile_SPU::playerDestroy(Level *level, shared_ptr<Player> player, int x, int y, int z, int data)
// {
// // 4J Stu - Special case - only record a crop destroy if is fully grown
// if(id==Tile_SPU::crops_Id)
// if(id==Tile_SPU::wheat_Id)
// {
// if( Tile_SPU::crops->getResource(data, NULL, 0) > 0 )
// player->awardStat(Stats::blocksMined[id], 1);
@@ -681,6 +688,7 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(woodSlabHalf_Id, WoodSlabTile_SPU);
CREATE_TILE_TYPE(chest_Id, ChestTile_SPU);
CREATE_TILE_TYPE(chest_trap_Id, ChestTile_SPU);
CREATE_TILE_TYPE(ironFence_Id, ThinFenceTile_SPU);
CREATE_TILE_TYPE(thinGlass_Id, ThinFenceTile_SPU);
@@ -691,7 +699,7 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(stairs_wood_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_stone_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_bricks_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_stoneBrickSmooth_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_stoneBrick_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_netherBricks_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_sandstone_Id, StairTile_SPU);
CREATE_TILE_TYPE(stairs_sprucewood_Id, StairTile_SPU);
@@ -706,6 +714,9 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(pressurePlate_stone_Id, PressurePlateTile_SPU);
CREATE_TILE_TYPE(pressurePlate_wood_Id, PressurePlateTile_SPU);
CREATE_TILE_TYPE(weightedPlate_light_Id, WeightedPressurePlateTile_SPU);
CREATE_TILE_TYPE(weightedPlate_heavy_Id, WeightedPressurePlateTile_SPU);
CREATE_TILE_TYPE(farmland_Id, FarmTile_SPU);
CREATE_TILE_TYPE(flower_Id, Bush_SPU);
@@ -722,19 +733,19 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(leaves_Id, LeafTile_SPU);
CREATE_TILE_TYPE(crops_Id, CropTile_SPU);
CREATE_TILE_TYPE(wheat_Id, CropTile_SPU);
CREATE_TILE_TYPE(reeds_Id, ReedTile_SPU);
CREATE_TILE_TYPE(torch_Id, TorchTile_SPU);
CREATE_TILE_TYPE(notGate_off_Id, TorchTile_SPU); // TorchTile->NotGateTile
CREATE_TILE_TYPE(notGate_on_Id, TorchTile_SPU); // TorchTile->NotGateTile
CREATE_TILE_TYPE(redstoneTorch_off_Id, TorchTile_SPU); // TorchTile->NotGateTile
CREATE_TILE_TYPE(redstoneTorch_on_Id, TorchTile_SPU); // TorchTile->NotGateTile
CREATE_TILE_TYPE(mushroom1_Id, Mushroom_SPU);
CREATE_TILE_TYPE(mushroom2_Id, Mushroom_SPU);
CREATE_TILE_TYPE(mushroom_brown_Id, Mushroom_SPU);
CREATE_TILE_TYPE(mushroom_red_Id, Mushroom_SPU);
CREATE_TILE_TYPE(mobSpawner_Id, MobSpawnerTile_SPU);
CREATE_TILE_TYPE(musicBlock_Id, EntityTile_SPU); // MusicTile->EntityTile
CREATE_TILE_TYPE(noteblock_Id, EntityTile_SPU); // MusicTile->EntityTile
CREATE_TILE_TYPE(furnace_Id, FurnaceTile_SPU);
CREATE_TILE_TYPE(furnace_lit_Id, FurnaceTile_SPU);
@@ -757,9 +768,12 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(portalTile_Id, PortalTile_SPU);
CREATE_TILE_TYPE(dispenser_Id, DispenserTile_SPU);
CREATE_TILE_TYPE(dropper_Id, DropperTile_SPU);
CREATE_TILE_TYPE(rail_Id, RailTile_SPU);
CREATE_TILE_TYPE(goldenRail_Id, RailTile_SPU);
CREATE_TILE_TYPE(goldenRail_Id, PoweredRailTile_SPU);
CREATE_TILE_TYPE(activatorRail_Id, ActivatorRailTile_SPU);
CREATE_TILE_TYPE(detectorRail_Id, DetectorRailTile_SPU);
@@ -781,7 +795,7 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(cactus_Id, CactusTile_SPU);
CREATE_TILE_TYPE(recordPlayer_Id, RecordPlayerTile_SPU);
CREATE_TILE_TYPE(jukebox_Id, RecordPlayerTile_SPU);
CREATE_TILE_TYPE(pumpkin_Id, PumpkinTile_SPU);
CREATE_TILE_TYPE(litPumpkin_Id, PumpkinTile_SPU);
@@ -792,10 +806,10 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(monsterStoneEgg_Id, StoneMonsterTile_SPU);
CREATE_TILE_TYPE(stoneBrickSmooth_Id, SmoothStoneBrickTile_SPU);
CREATE_TILE_TYPE(stoneBrick_Id, SmoothStoneBrickTile_SPU);
CREATE_TILE_TYPE(hugeMushroom1_Id, HugeMushroomTile_SPU);
CREATE_TILE_TYPE(hugeMushroom2_Id, HugeMushroomTile_SPU);
CREATE_TILE_TYPE(hugeMushroom_brown_Id, HugeMushroomTile_SPU);
CREATE_TILE_TYPE(hugeMushroom_red_Id, HugeMushroomTile_SPU);
CREATE_TILE_TYPE(melon_Id, MelonTile_SPU);
@@ -847,16 +861,18 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(skull_Id, SkullTile_SPU);
// these tile types don't have any additional code that we need.
CREATE_TILE_TYPE(stoneBrick_Id, Tile_SPU); // Tile
// these tile types don't have any additional code that we need.
CREATE_TILE_TYPE(cobblestone_Id, Tile_SPU); // Tile
CREATE_TILE_TYPE(lapisBlock_Id, Tile_SPU);
CREATE_TILE_TYPE(redBrick_Id, Tile_SPU);
CREATE_TILE_TYPE(mossStone_Id, Tile_SPU);
CREATE_TILE_TYPE(mossyCobblestone_Id, Tile_SPU);
CREATE_TILE_TYPE(netherBrick_Id, Tile_SPU);
CREATE_TILE_TYPE(whiteStone_Id, Tile_SPU);
CREATE_TILE_TYPE(endStone_Id, Tile_SPU);
CREATE_TILE_TYPE(unbreakable_Id, Tile_SPU);
CREATE_TILE_TYPE(sponge_Id, Tile_SPU);
CREATE_TILE_TYPE(rock_Id, Tile_SPU); // StoneTile
CREATE_TILE_TYPE(coalBlock_Id, Tile_SPU);
CREATE_TILE_TYPE(redstoneBlock_Id, Tile_SPU);
CREATE_TILE_TYPE(stone_Id, Tile_SPU); // StoneTile
CREATE_TILE_TYPE(obsidian_Id, Tile_SPU); // StoneTile->ObsidianTile
CREATE_TILE_TYPE(sand_Id, Tile_SPU); // HeavyTile
CREATE_TILE_TYPE(gravel_Id, Tile_SPU); // GravelTile
@@ -872,12 +888,15 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(ironBlock_Id, Tile_SPU); // MetalTile
CREATE_TILE_TYPE(diamondBlock_Id, Tile_SPU); // MetalTile
CREATE_TILE_TYPE(snow_Id, Tile_SPU); // SnowTile
CREATE_TILE_TYPE(hellRock_Id, Tile_SPU); // HellStoneTile
CREATE_TILE_TYPE(hellSand_Id, Tile_SPU); // HellSandTile
CREATE_TILE_TYPE(lightGem_Id, Tile_SPU); // LightGemTile
CREATE_TILE_TYPE(aprilFoolsJoke_Id, Tile_SPU); // LockedChestTile
CREATE_TILE_TYPE(netherRack_Id, Tile_SPU); // NetherrackTile
CREATE_TILE_TYPE(soulsand_Id, Tile_SPU); // SoulSandTile
CREATE_TILE_TYPE(glowstone_Id, Tile_SPU); // Glowstonetile
// got replaced by stained_glass_Id, rest in peace locked chest
//CREATE_TILE_TYPE(aprilFoolsJoke_Id , Tile_SPU); // LockedChestTile
CREATE_TILE_TYPE(clayHardened_Id, Tile_SPU); // ColoredTile
CREATE_TILE_TYPE(cloth_Id, ClothTile_SPU); // wool
CREATE_TILE_TYPE(wool_Id, WoolTile_SPU); // wool
CREATE_TILE_TYPE(clayHardened_colored_Id, ColoredClay_SPU); // wool
CREATE_TILE_TYPE(emeraldOre_Id, Tile_SPU); // OreTile
@@ -895,5 +914,6 @@ void Tile_SPU::initTilePointers()
CREATE_TILE_TYPE(quartzBlock_Id, QuartzBlockTile_SPU);
CREATE_TILE_TYPE(stairs_quartz_Id, StairTile_SPU);
CREATE_TILE_TYPE(woolCarpet_Id, WoolCarpetTile_SPU);
CREATE_TILE_TYPE(hayBlock_Id, HayBlockTile_SPU);
CREATE_TILE_TYPE(daylightDetector_Id, DaylightDetectorTile_SPU);
};
@@ -129,8 +129,14 @@ public:
Icon_SPU dispenserTile_iconFront;
Icon_SPU dispenserTile_iconFrontVertical;
Icon_SPU dropperTile_iconFront;
Icon_SPU dropperTile_iconFrontVertical;
Icon_SPU railTile_iconTurn;
Icon_SPU railTile_iconTurnGolden;
Icon_SPU poweredRailTile_icon;
Icon_SPU poweredRailTile_iconPowered;
Icon_SPU activatorRailTile_icon;
Icon_SPU activatorRailTile_iconPowered;
Icon_SPU detectorRailTile_icons[2];
@@ -178,7 +184,7 @@ public:
Icon_SPU redStoneDust_iconCrossOver;
Icon_SPU redStoneDust_iconLineOver;
Icon_SPU clothTile_icons[16];
Icon_SPU woolTile_icons[16];
Icon_SPU stoneSlab_iconSide;
@@ -193,6 +199,12 @@ public:
Icon_SPU quartzBlock_iconTop;
Icon_SPU quartzBlock_iconBottom;
Icon_SPU clayHardened_colored_icons[16];
Icon_SPU hayBlockTile_icon;
Icon_SPU hayBlockTile_iconTop;
Icon_SPU daylightDetector_icons[2];
int anvilPart; // normally part of the AnvilTile class
@@ -296,19 +308,24 @@ public:
static const int SHAPE_FLOWER_POT = 33;
static const int SHAPE_BEACON = 34;
static const int SHAPE_ANVIL = 35;
static const int SHAPE_HOPPER = 38;
static const int SHAPE_QUARTZ = 39;
static const int SHAPE_THIN_PANE = 40;
static const int SHAPE_COUNT = 41;
// 4J - this array of simple constants made so the compiler can optimise references to Ids that were previous of the form Tile_SPU::<whatever>->id, and are now simply Tile_SPU::whatever_Id
static const int rock_Id = 1;
static const int stone_Id = 1;
static const int grass_Id = 2;
static const int dirt_Id = 3;
static const int stoneBrick_Id = 4;
static const int cobblestone_Id = 4;
static const int wood_Id = 5;
static const int sapling_Id = 6;
static const int unbreakable_Id = 7;
static const int water_Id = 8;
static const int calmWater_Id = 9;
static const int lava_Id = 10;
static const int calmLava_Id = 11;
static const int sand_Id = 12;
static const int gravel_Id = 13;
@@ -319,26 +336,29 @@ public:
static const int leaves_Id = 18;
static const int sponge_Id = 19;
static const int glass_Id = 20;
static const int lapisOre_Id = 21;
static const int lapisBlock_Id = 22;
static const int dispenser_Id = 23;
static const int sandStone_Id = 24;
static const int musicBlock_Id = 25;
static const int noteblock_Id = 25;
static const int bed_Id = 26;
static const int goldenRail_Id = 27;
static const int detectorRail_Id = 28;
static const int pistonStickyBase_Id = 29;
static const int web_Id = 30;
static const int tallgrass_Id = 31;
static const int deadBush_Id = 32;
static const int pistonBase_Id = 33;
static const int pistonExtensionPiece_Id = 34;
static const int cloth_Id = 35;
static const int wool_Id = 35;
static const int pistonMovingPiece_Id = 36;
static const int flower_Id = 37;
static const int rose_Id = 38;
static const int mushroom1_Id = 39;
static const int mushroom2_Id = 40;
static const int mushroom_brown_Id = 39;
static const int mushroom_red_Id = 40;
static const int goldBlock_Id = 41;
static const int ironBlock_Id = 42;
static const int stoneSlab_Id = 43;
@@ -346,9 +366,10 @@ public:
static const int redBrick_Id = 45;
static const int tnt_Id = 46;
static const int bookshelf_Id = 47;
static const int mossStone_Id = 48;
static const int mossyCobblestone_Id = 48;
static const int obsidian_Id = 49;
static const int torch_Id = 50;
static const int fire_Id = 51;
static const int mobSpawner_Id = 52;
static const int stairs_wood_Id = 53;
@@ -357,8 +378,9 @@ public:
static const int diamondOre_Id = 56;
static const int diamondBlock_Id = 57;
static const int workBench_Id = 58;
static const int crops_Id = 59;
static const int wheat_Id = 59;
static const int farmland_Id = 60;
static const int furnace_Id = 61;
static const int furnace_lit_Id = 62;
static const int sign_Id = 63;
@@ -369,37 +391,40 @@ public:
static const int wallSign_Id = 68;
static const int lever_Id = 69;
static const int pressurePlate_stone_Id = 70;
static const int door_iron_Id = 71;
static const int pressurePlate_wood_Id = 72;
static const int redStoneOre_Id = 73;
static const int redStoneOre_lit_Id = 74;
static const int notGate_off_Id = 75;
static const int notGate_on_Id = 76;
static const int redstoneTorch_off_Id = 75;
static const int redstoneTorch_on_Id = 76;
static const int button_stone_Id = 77;
static const int topSnow_Id = 78;
static const int ice_Id = 79;
static const int snow_Id = 80;
static const int cactus_Id = 81;
static const int clay_Id = 82;
static const int reeds_Id = 83;
static const int recordPlayer_Id = 84;
static const int jukebox_Id = 84;
static const int fence_Id = 85;
static const int pumpkin_Id = 86;
static const int hellRock_Id = 87;
static const int hellSand_Id = 88;
static const int lightGem_Id = 89;
static const int netherRack_Id = 87;
static const int soulsand_Id = 88;
static const int glowstone_Id = 89;
static const int portalTile_Id = 90;
static const int litPumpkin_Id = 91;
static const int cake_Id = 92;
static const int diode_off_Id = 93;
static const int diode_on_Id = 94;
static const int aprilFoolsJoke_Id = 95;
static const int stained_glass_Id = 95;
static const int trapdoor_Id = 96;
static const int monsterStoneEgg_Id = 97;
static const int stoneBrickSmooth_Id = 98;
static const int hugeMushroom1_Id = 99;
static const int hugeMushroom2_Id = 100;
static const int stoneBrick_Id = 98;
static const int hugeMushroom_brown_Id = 99;
static const int hugeMushroom_red_Id = 100;
static const int ironFence_Id = 101;
static const int thinGlass_Id = 102;
static const int melon_Id = 103;
@@ -408,9 +433,9 @@ public:
static const int vine_Id = 106;
static const int fenceGate_Id = 107;
static const int stairs_bricks_Id = 108;
static const int stairs_stoneBrickSmooth_Id = 109;
static const int stairs_stoneBrick_Id = 109;
static const int mycel_Id = 110;
static const int waterLily_Id = 111;
static const int netherBrick_Id = 112;
static const int netherFence_Id = 113;
@@ -421,36 +446,55 @@ public:
static const int cauldron_Id = 118;
static const int endPortalTile_Id = 119;
static const int endPortalFrameTile_Id = 120;
static const int whiteStone_Id = 121;
static const int endStone_Id = 121;
static const int dragonEgg_Id = 122;
static const int redstoneLight_Id = 123;
static const int redstoneLight_lit_Id = 124;
static const int woodSlab_Id = 125;
static const int woodSlabHalf_Id = 126;
static const int cocoa_Id = 127;
static const int stairs_sandstone_Id = 128;
static const int stairs_sprucewood_Id = 134;
static const int stairs_birchwood_Id = 135;
static const int stairs_junglewood_Id = 136;
static const int emeraldOre_Id = 129;
static const int enderChest_Id = 130;
static const int tripWireSource_Id = 131;
static const int tripWire_Id = 132;
static const int emeraldBlock_Id = 133;
static const int stairs_sprucewood_Id = 134;
static const int stairs_birchwood_Id = 135;
static const int stairs_junglewood_Id = 136;
static const int commandBlock_Id = 137;
static const int beacon_Id = 138;
static const int cobbleWall_Id = 139;
static const int flowerPot_Id = 140;
static const int carrots_Id = 141;
static const int potatoes_Id = 142;
static const int anvil_Id = 145;
static const int button_wood_Id = 143;
static const int skull_Id = 144;
static const int anvil_Id = 145;
static const int chest_trap_Id = 146;
static const int weightedPlate_light_Id = 147;
static const int weightedPlate_heavy_Id = 148;
static const int comparator_off_Id = 149;
static const int comparator_on_Id = 150;
static const int daylightDetector_Id = 151;
static const int redstoneBlock_Id = 152;
static const int netherQuartz_Id = 153;
static const int hopper_Id = 154;
static const int quartzBlock_Id = 155;
static const int stairs_quartz_Id = 156;
static const int activatorRail_Id = 157;
static const int dropper_Id = 158;
static const int clayHardened_colored_Id = 159;
static const int stained_glass_pane_Id = 160;
static const int hayBlock_Id = 170;
static const int woolCarpet_Id = 171;
static const int clayHardened_Id = 172;
static const int coalBlock_Id = 173;
static Tile_SPU m_tiles[256];
@@ -1,10 +1,10 @@
#pragma once
#include "Tile_SPU.h"
#include "RotatedPillarTile_SPU.h"
class Player;
class TreeTile_SPU : public Tile_SPU
class TreeTile_SPU : public RotatedPillarTile_SPU
{
public:
static const int DARK_TRUNK = 1;
@@ -19,29 +19,14 @@ public:
static const int TREE_NAMES_LENGTH = 4;
TreeTile_SPU(int id) : Tile_SPU(id) {}
int getRenderShape() { return Tile_SPU::SHAPE_TREE; }
TreeTile_SPU(int id) : RotatedPillarTile_SPU(id) {}
public:
Icon_SPU *getTexture(int face, int data)
{
int dir = data & MASK_FACING;
int type = data & MASK_TYPE;
if (dir == FACING_Y && (face == Facing::UP || face == Facing::DOWN))
{
return &ms_pTileData->treeTile_icons_top[type];
}
else if (dir == FACING_X && (face == Facing::EAST || face == Facing::WEST))
{
return &ms_pTileData->treeTile_icons_top[type];
}
else if (dir == FACING_Z && (face == Facing::NORTH || face == Facing::SOUTH))
{
return &ms_pTileData->treeTile_icons_top[type];
}
Icon_SPU *getTypeTexture(int type) {
return &ms_pTileData->treeTile_icons_side[type];
}
};
Icon_SPU *getTopTexture(int type) {
return &ms_pTileData->treeTile_icons_top[type];
};
};
@@ -22,7 +22,7 @@ public:
{
if (data == TYPE_MOSSY)
{
return TileRef_SPU(mossStone_Id)->getTexture(face);
return TileRef_SPU(mossyCobblestone_Id)->getTexture(face);
}
return TileRef_SPU(stoneBrick_Id)->getTexture(face);
@@ -0,0 +1,22 @@
#pragma once
#include "BasePressurePlateTile_SPU.h"
class WeightedPressurePlateTile_SPU : public BasePressurePlateTile_SPU
{
public:
enum Sensitivity
{
everything, mobs, players
};
private:
Sensitivity sensitivity;
public:
WeightedPressurePlateTile_SPU(int id) : BasePressurePlateTile_SPU(id) {}
protected:
virtual int getSignalForData(int data) {
return data;
};
};
@@ -7,7 +7,7 @@ class WoolCarpetTile_SPU : public Tile_SPU
public:
WoolCarpetTile_SPU(int id) : Tile_SPU(id) {}
Icon_SPU *getTexture(int face, int data) { return TileRef_SPU(cloth_Id)->getTexture(face, data); }
Icon_SPU *getTexture(int face, int data) { return TileRef_SPU(wool_Id)->getTexture(face, data); }
bool isSolidRender(bool isServerLevel = false) { return false; }
void updateDefaultShape() { updateShape(0); }
void updateShape(ChunkRebuildData *level, int x, int y, int z) { updateShape(level->getData(x, y, z)); }
@@ -0,0 +1,11 @@
#pragma once
#include "Tile_SPU.h"
class WoolTile_SPU : public Tile_SPU
{
public:
WoolTile_SPU(int id) : Tile_SPU(id) {}
virtual Icon_SPU *getTexture(int face, int data) { return &ms_pTileData->woolTile_icons[data]; }
};