Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
6.0 kB · 192 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192#include "stdafx.h"#include "Material.h"#include "DecorationMaterial.h"#include "GasMaterial.h"#include "LiquidMaterial.h"#include "PortalMaterial.h"#include "WebMaterial.h"// 4J added, Java version just does a local alteration when instantiating the Material for webs to get the same thing
Material *Material::air = NULL;Material *Material::grass = NULL;Material *Material::dirt = NULL;Material *Material::wood = NULL;Material *Material::stone = NULL;Material *Material::metal = NULL;Material *Material::heavyMetal = NULL;Material *Material::water = NULL;Material *Material::lava = NULL;Material *Material::leaves = NULL;Material *Material::plant = NULL;Material *Material::replaceable_plant = NULL;Material *Material::sponge = NULL;Material *Material::cloth = NULL;Material *Material::fire = NULL;Material *Material::sand = NULL;Material *Material::decoration = NULL;Material *Material::clothDecoration = NULL;Material *Material::glass = NULL;Material *Material::buildable_glass = NULL;Material *Material::explosive = NULL;Material *Material::coral = NULL;Material *Material::ice = NULL;Material *Material::topSnow = NULL;Material *Material::snow = NULL;Material *Material::cactus = NULL;Material *Material::clay = NULL;Material *Material::vegetable = NULL;Material *Material::egg = NULL;Material *Material::portal = NULL;Material *Material::cake = NULL;Material *Material::piston = NULL;Material *Material::web = NULL;
void Material::staticCtor(){ Material::air = new GasMaterial(MaterialColor::none); Material::grass = new Material(MaterialColor::grass); Material::dirt = new Material(MaterialColor::dirt); Material::wood = (new Material(MaterialColor::wood))->flammable(); Material::stone = (new Material(MaterialColor::stone))->notAlwaysDestroyable(); Material::metal = (new Material(MaterialColor::metal))->notAlwaysDestroyable(); Material::heavyMetal = (new Material(MaterialColor::metal))->notAlwaysDestroyable()->notPushable(); Material::water = (new LiquidMaterial(MaterialColor::water))->destroyOnPush(); Material::lava = (new LiquidMaterial(MaterialColor::fire))->destroyOnPush(); Material::leaves = (new Material(MaterialColor::plant))->flammable()->neverBuildable()->destroyOnPush(); Material::plant = (new DecorationMaterial(MaterialColor::plant))->destroyOnPush(); Material::replaceable_plant = (new DecorationMaterial(MaterialColor::plant))->flammable()->destroyOnPush()->replaceable(); Material::sponge = new Material(MaterialColor::cloth); Material::cloth = (new Material(MaterialColor::cloth))->flammable(); Material::fire = (new GasMaterial(MaterialColor::none))->destroyOnPush(); Material::sand = new Material(MaterialColor::sand); Material::decoration = (new DecorationMaterial(MaterialColor::none))->destroyOnPush(); Material::clothDecoration = (new DecorationMaterial(MaterialColor::cloth))->flammable(); Material::glass = (new Material(MaterialColor::none))->neverBuildable()->makeDestroyedByHand(); Material::buildable_glass = (new Material(MaterialColor::none))->makeDestroyedByHand(); Material::explosive = (new Material(MaterialColor::fire))->flammable()->neverBuildable(); Material::coral = (new Material(MaterialColor::plant))->destroyOnPush(); Material::ice = (new Material(MaterialColor::ice))->neverBuildable()->makeDestroyedByHand(); Material::topSnow = (new DecorationMaterial(MaterialColor::snow))->replaceable()->neverBuildable()->notAlwaysDestroyable()->destroyOnPush(); Material::snow = (new Material(MaterialColor::snow))->notAlwaysDestroyable(); Material::cactus = (new Material(MaterialColor::plant))->neverBuildable()->destroyOnPush(); Material::clay = (new Material(MaterialColor::clay)); Material::vegetable = (new Material(MaterialColor::plant))->destroyOnPush(); Material::egg = ( new Material(MaterialColor::plant))->destroyOnPush(); Material::portal = (new PortalMaterial(MaterialColor::none))->notPushable(); Material::cake = (new Material(MaterialColor::none))->destroyOnPush(); // 4J added WebMaterial, Java version just does a local alteration when instantiating the Material for webs to get the same thing Material::web = (new WebMaterial(MaterialColor::cloth))->notAlwaysDestroyable()->destroyOnPush(); Material::piston = (new Material(MaterialColor::stone))->notPushable();}
Material::Material(MaterialColor *color){ this->color = color;
// 4J Stu - Default inits _flammable = false; _replaceable = false; _neverBuildable = false; _isAlwaysDestroyable = true; pushReaction = 0; destroyedByHand = false;}
bool Material::isLiquid(){ return false;}
bool Material::letsWaterThrough(){ return (!isLiquid() && !isSolid());}
bool Material::isSolid(){ return true;}
bool Material::blocksLight(){ return true;}
bool Material::blocksMotion(){ return true;}
Material *Material::neverBuildable(){ this->_neverBuildable = true; return this;}
Material *Material::notAlwaysDestroyable(){ this->_isAlwaysDestroyable = false; return this;}
Material *Material::flammable(){ this->_flammable = true; return this;}
bool Material::isFlammable(){ return _flammable;}
Material *Material::replaceable(){ this->_replaceable = true; return this;}
bool Material::isReplaceable(){ return _replaceable;}
bool Material::isSolidBlocking(){ if (_neverBuildable) return false; return blocksMotion();}
bool Material::isAlwaysDestroyable(){ // these materials will always drop resources when destroyed, regardless // of player's equipment return _isAlwaysDestroyable;}
int Material::getPushReaction(){ return pushReaction;}
Material *Material::makeDestroyedByHand(){ this->destroyedByHand = true; return this;}
bool Material::isDestroyedByHand(){ return destroyedByHand;}
Material *Material::destroyOnPush(){ pushReaction = PUSH_DESTROY; return this;}
Material *Material::notPushable(){ pushReaction = PUSH_BLOCK; return this;}