* Add Player::drop

This commit is contained in:
iProgramInCpp
2023-07-31 17:13:10 +03:00
parent 297f7f3cf4
commit cb085a8956
6 changed files with 63 additions and 4 deletions

View File

@@ -220,6 +220,45 @@ void Player::displayClientMessage(const std::string& msg)
}
void Player::drop(ItemInstance* pItemInstance)
{
drop(pItemInstance, false);
}
void Player::drop(ItemInstance* pItemInstance, bool b)
{
if (!pItemInstance)
return;
ItemEntity* pItemEntity = new ItemEntity(m_pLevel, m_pos.x, m_pos.y - 0.3f + getHeadHeight(), m_pos.z, pItemInstance);
pItemEntity->field_E4 = 40;
if (b)
{
float throwPower = 0.5f * m_random.nextFloat();
float throwAngle = m_random.nextFloat();
pItemEntity->m_vel.x = -(throwPower * Mth::sin(2 * float(M_PI) * throwAngle));
pItemEntity->m_vel.z = (throwPower * Mth::cos(2 * float(M_PI) * throwAngle));
pItemEntity->m_vel.y = 0.2f;
}
else
{
pItemEntity->m_vel.x = -(Mth::sin(m_yaw / 180.0f * float(M_PI)) * Mth::cos(m_pitch / 180.0f * float(M_PI))) * 0.3f;
pItemEntity->m_vel.z = (Mth::cos(m_yaw / 180.0f * float(M_PI)) * Mth::cos(m_pitch / 180.0f * float(M_PI))) * 0.3f;
pItemEntity->m_vel.y = 0.1f - Mth::sin(m_pitch / 180.0f * float(M_PI)) * 0.3f;
float f1 = m_random.nextFloat();
float f2 = m_random.nextFloat();
pItemEntity->m_vel.x += 0.02f * f2 * Mth::cos(2 * float(M_PI) * f1);
pItemEntity->m_vel.y += 0.1f * (m_random.nextFloat() - m_random.nextFloat());
pItemEntity->m_vel.z += 0.02f * f2 * Mth::sin(2 * float(M_PI) * f1);
}
reallyDrop(pItemEntity);
}
void Player::drop()
{
@@ -250,6 +289,11 @@ void Player::prepareCustomTextures()
}
void Player::reallyDrop(ItemEntity* pEnt)
{
m_pLevel->addEntity(pEnt);
}
void Player::respawn()
{