void cBeaconEntity::UpdateBeacon(void) { int OldBeaconLevel = m_BeaconLevel; if (IsBeaconBlocked()) { m_IsActive = false; m_BeaconLevel = 0; } else { m_BeaconLevel = CalculatePyramidLevel(); m_IsActive = (m_BeaconLevel > 0); } if (m_BeaconLevel != OldBeaconLevel) { // Send window update: if (GetWindow() != nullptr) { GetWindow()->SetProperty(0, m_BeaconLevel); } } // TODO: Add achievement }
void cBeaconEntity::UpdateBeacon(void) { int OldBeaconLevel = m_BeaconLevel; if (IsBeaconBlocked()) { m_IsActive = false; m_BeaconLevel = 0; } else { m_BeaconLevel = CalculatePyramidLevel(); m_IsActive = (m_BeaconLevel > 0); } if ((m_BeaconLevel != OldBeaconLevel) && (m_BeaconLevel == 4)) { // Send window update: if (GetWindow() != nullptr) { GetWindow()->SetProperty(0, m_BeaconLevel); } Vector3d BeaconPosition(m_PosX, m_PosY, m_PosZ); GetWorld()->ForEachPlayer([=](cPlayer & a_Player) { Vector3d Distance = BeaconPosition - a_Player.GetPosition(); if ( (std::abs(Distance.y) <= 14) && (std::abs(Distance.x) <= 20) && (std::abs(Distance.z) <= 20) ) { a_Player.AwardAchievement(eStatistic::achFullBeacon); } return false; } ); } }