81 lines
1.2 KiB
C++
81 lines
1.2 KiB
C++
|
|
#pragma once
|
|
|
|
#include "BlockHandler.h"
|
|
#include "../MersenneTwister.h"
|
|
#include "../World.h"
|
|
|
|
|
|
|
|
|
|
|
|
class cBlockOreHandler :
|
|
public cBlockHandler
|
|
{
|
|
public:
|
|
cBlockOreHandler(BLOCKTYPE a_BlockType)
|
|
: cBlockHandler(a_BlockType)
|
|
{
|
|
}
|
|
|
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
|
{
|
|
short ItemType = m_BlockType;
|
|
char Count = 1;
|
|
short Meta = 0;
|
|
|
|
MTRand r1;
|
|
switch (m_BlockType)
|
|
{
|
|
case E_BLOCK_LAPIS_ORE:
|
|
{
|
|
ItemType = E_ITEM_DYE;
|
|
Count = 4 + (char)r1.randInt(4);
|
|
Meta = 4;
|
|
break;
|
|
}
|
|
case E_BLOCK_REDSTONE_ORE:
|
|
case E_BLOCK_REDSTONE_ORE_GLOWING:
|
|
{
|
|
Count = 4 + (char)r1.randInt(1);
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
Count = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (m_BlockType)
|
|
{
|
|
case E_BLOCK_DIAMOND_ORE:
|
|
{
|
|
ItemType = E_ITEM_DIAMOND;
|
|
break;
|
|
}
|
|
case E_BLOCK_REDSTONE_ORE:
|
|
case E_BLOCK_REDSTONE_ORE_GLOWING:
|
|
{
|
|
ItemType = E_ITEM_REDSTONE_DUST;
|
|
break;
|
|
}
|
|
case E_BLOCK_EMERALD_ORE:
|
|
{
|
|
ItemType = E_ITEM_EMERALD;
|
|
break;
|
|
}
|
|
case E_BLOCK_COAL_ORE:
|
|
{
|
|
ItemType = E_ITEM_COAL;
|
|
break;
|
|
}
|
|
}
|
|
a_Pickups.push_back(cItem(ItemType, Count, Meta));
|
|
}
|
|
} ;
|
|
|
|
|
|
|
|
|