| 42 | |
| 43 | |
| 44 | void cMapDecorator::Update(void) |
| 45 | { |
| 46 | if (m_Player != NULL) |
| 47 | { |
| 48 | ASSERT(m_Map != NULL); |
| 49 | unsigned int PixelWidth = m_Map->GetPixelWidth(); |
| 50 | |
| 51 | int InsideWidth = (m_Map->GetWidth() / 2) - 1; |
| 52 | int InsideHeight = (m_Map->GetHeight() / 2) - 1; |
| 53 | |
| 54 | int PixelX = (int) (m_Player->GetPosX() - m_Map->GetCenterX()) / PixelWidth; |
| 55 | int PixelZ = (int) (m_Player->GetPosZ() - m_Map->GetCenterZ()) / PixelWidth; |
| 56 | |
| 57 | // Center of pixel |
| 58 | m_PixelX = (2 * PixelX) + 1; |
| 59 | m_PixelZ = (2 * PixelZ) + 1; |
| 60 | |
| 61 | if ((PixelX > -InsideWidth) && (PixelX <= InsideWidth) && (PixelZ > -InsideHeight) && (PixelZ <= InsideHeight)) |
| 62 | { |
| 63 | double Yaw = m_Player->GetYaw(); |
| 64 | |
| 65 | if (m_Map->GetDimension() == dimNether) |
| 66 | { |
| 67 | cFastRandom Random; |
| 68 | |
| 69 | Int64 WorldAge = m_Player->GetWorld()->GetWorldAge(); |
| 70 | |
| 71 | // TODO 2014-02-19 xdot: Refine |
| 72 | m_Rot = Random.NextInt(16, (int) WorldAge); |
| 73 | } |
| 74 | else |
| 75 | { |
| 76 | m_Rot = (int) (Yaw * 16) / 360; |
| 77 | } |
| 78 | |
| 79 | m_Type = E_TYPE_PLAYER; |
| 80 | } |
| 81 | else |
| 82 | { |
| 83 | if ((abs(PixelX) > 320.0) || (abs(PixelZ) > 320.0)) |
| 84 | { |
| 85 | // TODO 2014-02-18 xdot: Remove decorator |
| 86 | } |
| 87 | |
| 88 | m_Rot = 0; |
| 89 | |
| 90 | m_Type = E_TYPE_PLAYER_OUTSIDE; |
| 91 | |
| 92 | // Move to border |
| 93 | if (PixelX <= -InsideWidth) |
| 94 | { |
| 95 | m_PixelX = (2 * -InsideWidth) + 1; |
| 96 | } |
| 97 | if (PixelZ <= -InsideHeight) |
| 98 | { |
| 99 | m_PixelZ = (2 * -InsideHeight) + 1; |
| 100 | } |
| 101 | if (PixelX > InsideWidth) |
no test coverage detected