aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/StemTile_SPU.h
blob: 89cd3739c4d6046861cdd90dc64d3d5842abcc41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#pragma once
#include "Bush_SPU.h"

class StemTile_SPU : public Bush_SPU
{
private:
public:
	StemTile_SPU(int id) : Bush_SPU(id) {}

public:
	int getColor(int data) const
	{
		//int r = data * 32;
		//int g = 255 - data * 8;
		//int b = data * 4;
		//return r << 16 | g << 8 | b;

		int colour = 0;

		unsigned int minColour = ms_pTileData->stemTile_minColour;
		unsigned int maxColour = ms_pTileData->stemTile_maxColour;

		byte redComponent = ((minColour>>16)&0xFF) + (( (maxColour>>16)&0xFF - (minColour>>16)&0xFF)*( data/7.0f));
		byte greenComponent = ((minColour>>8)&0xFF) + (( (maxColour>>8)&0xFF - (minColour>>8)&0xFF)*( data/7.0f));
		byte blueComponent = ((minColour)&0xFF) + (( (maxColour)&0xFF - (minColour)&0xFF)*( data/7.0f));

		colour = redComponent<<16 | greenComponent<<8 | blueComponent;
		return colour;
	}

	virtual int getColor(ChunkRebuildData *level, int x, int y, int z) { 	return getColor(level->getData(x, y, z)); }
    virtual void updateDefaultShape()
	{    
		float ss = 0.125f;
		this->setShape(0.5f - ss, 0, 0.5f - ss, 0.5f + ss, 0.25f, 0.5f + ss);
	}

    virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL)	// 4J added forceData, forceEntity param
	{
		ms_pTileData->yy1[id] = (level->getData(x, y, z) * 2 + 2) / 16.0f;
		float ss = 0.125f;
		this->setShape(0.5f - ss, 0, 0.5f - ss, 0.5f + ss, (float) ms_pTileData->yy1[id], 0.5f + ss);
	}

	int getConnectDir(ChunkRebuildData *level, int x, int y, int z)
	{
		int fruitID = pumpkin_Id;
		if(id == melonStem_Id)
			fruitID = melon_Id;

		int d = level->getData(x, y, z);
		if (d < 7) return -1;
		if (level->getTile(x - 1, y, z) == fruitID) return 0;
		if (level->getTile(x + 1, y, z) == fruitID) return 1;
		if (level->getTile(x, y, z - 1) == fruitID) return 2;
		if (level->getTile(x, y, z + 1) == fruitID) return 3;
		return -1;
	}

	virtual int getRenderShape() { return Tile_SPU::SHAPE_STEM; }
	Icon_SPU *getAngledTexture() { 	return &ms_pTileData->stemTile_iconAngled; }
};