Merge remote-tracking branch 'origin/ClearMetaMixin'

master
madmaxoft 2014-07-15 14:44:18 +02:00
commit 639dfdb67d
4 changed files with 34 additions and 12 deletions

View File

@ -3,17 +3,19 @@
#include "BlockHandler.h"
#include "../World.h"
#include "ClearMetaOnDrop.h"
class cBlockLadderHandler :
public cMetaRotator<cBlockHandler, 0x07, 0x02, 0x05, 0x03, 0x04>
public cClearMetaOnDrop<cMetaRotator<cBlockHandler, 0x07, 0x02, 0x05, 0x03, 0x04> >
{
typedef cClearMetaOnDrop<cMetaRotator<cBlockHandler, 0x07, 0x02, 0x05, 0x03, 0x04> > super;
public:
cBlockLadderHandler(BLOCKTYPE a_BlockType)
: cMetaRotator<cBlockHandler, 0x07, 0x02, 0x05, 0x03, 0x04>(a_BlockType)
: super(a_BlockType)
{
}

View File

@ -8,19 +8,14 @@
class cBlockLilypadHandler :
public cBlockHandler
public cClearMetaOnDrop<cBlockHandler>
{
typedef cClearMetaOnDrop<cBlockHandler> super;
public:
cBlockLilypadHandler(BLOCKTYPE a_BlockType)
: cBlockHandler(a_BlockType)
: super(a_BlockType)
{
}
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
{
// Reset meta to zero
a_Pickups.push_back(cItem(E_BLOCK_LILY_PAD, 1, 0));
}
};

View File

@ -6,11 +6,12 @@
class cBlockPumpkinHandler :
public cMetaRotator<cBlockHandler, 0x07, 0x02, 0x03, 0x00, 0x01, false>
public cClearMetaOnDrop<cMetaRotator<cBlockHandler, 0x07, 0x02, 0x03, 0x00, 0x01, false> >
{
typedef cClearMetaOnDrop<cMetaRotator<cBlockHandler, 0x07, 0x02, 0x03, 0x00, 0x01, false> > super;
public:
cBlockPumpkinHandler(BLOCKTYPE a_BlockType)
: cMetaRotator<cBlockHandler, 0x07, 0x02, 0x03, 0x00, 0x01, false>(a_BlockType)
: super(a_BlockType)
{
}

View File

@ -0,0 +1,24 @@
#pragma once
// mixin for use to clear meta values when the block is converted to a pickup
// Usage: inherit from this class, passing the parent class as the parameter Base
// For example to use in class Foo which should inherit Bar use
// class Foo : public cClearMetaOnDrop<Bar>;
template<class Base>
class cClearMetaOnDrop : public Base
{
public:
cClearMetaOnDrop(BLOCKTYPE a_BlockType) :
Base(a_BlockType)
{}
virtual ~cClearMetaOnDrop() {}
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
{
a_Pickups.push_back(cItem(this->m_BlockType));
}
};