93 lines
2.0 KiB
C++
93 lines
2.0 KiB
C++
#pragma once
|
|
#include "MaterialColor.h"
|
|
|
|
class ChunkRebuildData;
|
|
|
|
class Material
|
|
{
|
|
friend class ChunkRebuildData;
|
|
public:
|
|
static Material *air;
|
|
static Material *grass;
|
|
static Material *dirt;
|
|
static Material *wood;
|
|
static Material *stone;
|
|
static Material *metal;
|
|
static Material *heavyMetal;
|
|
static Material *water;
|
|
static Material *lava;
|
|
static Material *leaves;
|
|
static Material *plant;
|
|
static Material *replaceable_plant;
|
|
static Material *sponge;
|
|
static Material *cloth;
|
|
static Material *fire;
|
|
static Material *sand;
|
|
static Material *decoration;
|
|
static Material *clothDecoration;
|
|
static Material *glass;
|
|
static Material *buildable_glass;
|
|
static Material *explosive;
|
|
static Material *coral;
|
|
static Material *ice;
|
|
static Material *topSnow;
|
|
static Material *snow;
|
|
static Material *cactus;
|
|
static Material *clay;
|
|
static Material *vegetable;
|
|
static Material *egg;
|
|
static Material *portal;
|
|
static Material *cake;
|
|
static Material *web;
|
|
static Material *piston;
|
|
|
|
static const int PUSH_NORMAL = 0;
|
|
static const int PUSH_DESTROY = 1;
|
|
static const int PUSH_BLOCK = 2; // not pushable
|
|
|
|
static void staticCtor();
|
|
|
|
private:
|
|
bool _flammable, _replaceable, _neverBuildable;
|
|
|
|
public:
|
|
MaterialColor *color;
|
|
private:
|
|
bool _isAlwaysDestroyable;
|
|
int pushReaction;
|
|
bool destroyedByHand;
|
|
public:
|
|
|
|
Material(MaterialColor *color);
|
|
virtual bool isLiquid() ;
|
|
virtual bool letsWaterThrough();
|
|
virtual bool isSolid();
|
|
virtual bool blocksLight();
|
|
virtual bool blocksMotion();
|
|
|
|
private:
|
|
virtual Material *neverBuildable();
|
|
protected:
|
|
virtual Material *notAlwaysDestroyable();
|
|
virtual Material *flammable();
|
|
|
|
public:
|
|
virtual bool isFlammable();
|
|
virtual Material *replaceable();
|
|
virtual bool isReplaceable();
|
|
virtual bool isSolidBlocking();
|
|
virtual bool isAlwaysDestroyable();
|
|
virtual int getPushReaction();
|
|
|
|
protected:
|
|
Material *makeDestroyedByHand();
|
|
|
|
public:
|
|
bool isDestroyedByHand();
|
|
|
|
protected:
|
|
Material *destroyOnPush();
|
|
Material *notPushable();
|
|
};
|
|
|