/******************************************************************** 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; }