/********************************************************************
	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 "IceTile.hpp"
#include "world/level/Level.hpp"

IceTile::IceTile(int a, int b, Material* c) : HalfTransparentTile(a, b, c)
{
	setTicking(true);
}

int IceTile::getRenderLayer()
{
	return LAYER_ALPHA;
}

int IceTile::getResourceCount(Random* pRandom)
{
	return 0;
}

void IceTile::onRemove(Level* level, int x, int y, int z)
{
	Material* pMtlBelow = level->getMaterial(x, y - 1, z);
	if (pMtlBelow->blocksMotion() || pMtlBelow->isLiquid())
	{
		level->setTile(x, y, z, Tile::water->m_ID);
	}
}

bool IceTile::shouldRenderFace(LevelSource* level, int x, int y, int z, int dir)
{
	//@BUG: 1 - dir? This would only work to flip the YNEG and YPOS directions.
	return HalfTransparentTile::shouldRenderFace(level, x, y, z, 1 - dir);
}

void IceTile::tick(Level* level, int x, int y, int z, Random* random)
{
	if (level->getBrightness(LightLayer::Block, x, y, z) <= 11 - Tile::lightBlock[m_ID])
		return;

	spawnResources(level, x, y, z, level->getData(x, y, z));

	level->setTile(x, y, z, Tile::calmWater->m_ID);
}
