Files
mcpe/source/world/level/Material.cpp
Brent a0f71c7b27 C++03 Support & Partial Xbox 360 Support (#37)
* WIP C++03 + Xbox 360 Support

* math.h & _USE_MATH_DEFINES on Level.hpp
Updated Xenon vcxproj file for new file structure.

* * Fix bad GUI scale setup.

* * Gui: Use ratios instead of hardcoded sub-1 floating point values, to make the mechanism more clear.

* Add Direct Connect Button and Screen (#30)

* Add Direct Connect Button and Screen

* Remove accidental extra build directories for wasm

* Add DirectConnectScreen.cpp to the CMake

* Use Hungarian coding style notation

* * Fix errors caused by #30

* * Improve the Chat Screen

* * Improve the DirectConnectScreen, among other things.

* * Update the game title once again.

* * Add build-wasm.bat.

* * Add info about compiling for wasm

* * Fix send to specific GUID actually broadcasting to everyone

* * Add command manager.

* * Add writeable configuration.

* * Allow dynamic screen size change on windows

* * Allow the same thing on the emscripten version.

* WIP C++03 + Xbox 360 Support

* Fixed a possible merging issue that broke RakNet?

* Additional Xbox 360 compatability fixes

---------

Co-authored-by: Brent Da Mage <BrentDaMage@users.noreply.github.com>
Co-authored-by: iProgramInCpp <iprogramincpp@gmail.com>
Co-authored-by: ts <124226059+uniformization@users.noreply.github.com>
2023-08-07 15:48:52 +03:00

187 lines
3.5 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include "Material.hpp"
Material::Material() :
m_bFlammable(false)
{
}
Material::Material(bool bFlammable) :
m_bFlammable(bFlammable)
{
}
Material::~Material()
{
}
Material
* Material::air,
* Material::dirt,
* Material::wood,
* Material::stone,
* Material::metal,
* Material::water,
* Material::lava,
* Material::leaves,
* Material::plant,
* Material::sponge,
* Material::cloth,
* Material::fire,
* Material::sand,
* Material::decoration,
* Material::glass,
* Material::explosive,
* Material::coral,
* Material::ice,
* Material::topSnow,
* Material::snow,
* Material::cactus,
* Material::clay,
* Material::vegetable,
* Material::portal,
* Material::cake;
void Material::initMaterials()
{
air = new GasMaterial();
dirt = new Material();
wood = new Material(true);
stone = new Material();
metal = new Material();
water = new LiquidMaterial();
lava = new LiquidMaterial();
leaves = new Material(true);
plant = new DecorationMaterial();
sponge = new Material();
cloth = new Material(true);
fire = new GasMaterial();
sand = new Material();
decoration = new DecorationMaterial();
glass = new Material();
explosive = new Material(true);
coral = new Material();
ice = new Material();
topSnow = new DecorationMaterial();
snow = new Material();
cactus = new Material();
clay = new Material();
vegetable = new Material();
portal = new Material();
cake = new Material();
}
void Material::teardownMaterials()
{
if (air) delete air;
if (dirt) delete dirt;
if (wood) delete wood;
if (stone) delete stone;
if (metal) delete metal;
if (water) delete water;
if (lava) delete lava;
if (leaves) delete leaves;
if (plant) delete plant;
if (sponge) delete sponge;
if (cloth) delete cloth;
if (fire) delete fire;
if (sand) delete sand;
if (decoration) delete decoration;
if (glass) delete glass;
if (explosive) delete explosive;
if (coral) delete coral;
if (ice) delete ice;
if (topSnow) delete topSnow;
if (snow) delete snow;
if (cactus) delete cactus;
if (clay) delete clay;
if (vegetable) delete vegetable;
if (portal) delete portal;
if (cake) delete cake;
}
bool Material::isLiquid() const
{
return false;
}
bool Material::letsWaterThrough() const
{
if (isLiquid())
return false;
return !isSolid();
}
bool Material::isSolid() const
{
return true;
}
bool Material::isFlammable() const
{
return m_bFlammable;
}
bool Material::blocksLight() const
{
return true;
}
bool Material::blocksMotion() const
{
return true;
}
bool GasMaterial::isSolid() const
{
return false;
}
bool GasMaterial::blocksLight() const
{
return false;
}
bool GasMaterial::blocksMotion() const
{
return false;
}
bool DecorationMaterial::isSolid() const
{
return false;
}
bool DecorationMaterial::blocksLight() const
{
return false;
}
bool DecorationMaterial::blocksMotion() const
{
return false;
}
bool LiquidMaterial::isLiquid() const
{
return true;
}
bool LiquidMaterial::isSolid() const
{
return false;
}
bool LiquidMaterial::blocksMotion() const
{
return false;
}