void BattleGroundAV::FillInitialWorldStates(WorldPacket& data) { bool stateok; for (uint32 i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i) { for (uint8 j = 0; j < BG_AV_MAX_STATES; j++) { stateok = (m_Nodes[i].State == j); data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_ALLIANCE)]) << uint32((m_Nodes[i].Owner == BG_TEAM_ALLIANCE && stateok) ? 1 : 0); data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_HORDE)]) << uint32((m_Nodes[i].Owner == BG_TEAM_HORDE && stateok) ? 1 : 0); } } if( m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].Owner == BG_AV_NEUTRAL_TEAM ) // cause neutral teams aren't handled generic data << uint32(AV_SNOWFALL_N) << uint32(1); data << uint32(BG_AV_Alliance_Score) << uint32(m_TeamScores[BG_TEAM_ALLIANCE]); data << uint32(BG_AV_Horde_Score) << uint32(m_TeamScores[BG_TEAM_HORDE]); if( GetStatus() == STATUS_IN_PROGRESS ) // only if game is running the teamscores are displayed { data << uint32(BG_AV_SHOW_A_SCORE) << uint32(1); data << uint32(BG_AV_SHOW_H_SCORE) << uint32(1); } else { data << uint32(BG_AV_SHOW_A_SCORE) << uint32(0); data << uint32(BG_AV_SHOW_H_SCORE) << uint32(0); } SendMineWorldStates(BG_AV_NORTH_MINE); SendMineWorldStates(BG_AV_SOUTH_MINE); }
void BattleGroundAV::FillInitialWorldStates() { bool stateok; for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i) { for (uint8 j = 0; j < BG_AV_MAX_STATES; ++j) { stateok = (m_Nodes[i].State == j); FillInitialWorldState(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_INDEX_ALLIANCE)], m_Nodes[i].Owner == TEAM_INDEX_ALLIANCE && stateok); FillInitialWorldState(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_INDEX_HORDE)], m_Nodes[i].Owner == TEAM_INDEX_HORDE && stateok); } } if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].Owner == TEAM_INDEX_NEUTRAL) // cause neutral teams aren't handled generic FillInitialWorldState(AV_SNOWFALL_N, WORLD_STATE_ADD); FillInitialWorldState(BG_AV_Alliance_Score, m_TeamScores[TEAM_INDEX_ALLIANCE]); FillInitialWorldState(BG_AV_Horde_Score, m_TeamScores[TEAM_INDEX_HORDE]); FillInitialWorldState(BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_Owner[BG_AV_NORTH_MINE]], WORLD_STATE_ADD); if (m_Mine_Owner[BG_AV_NORTH_MINE] != m_Mine_PrevOwner[BG_AV_NORTH_MINE]) FillInitialWorldState(BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_PrevOwner[BG_AV_NORTH_MINE]], WORLD_STATE_REMOVE); FillInitialWorldState( BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_Owner[BG_AV_SOUTH_MINE]], WORLD_STATE_ADD); if (m_Mine_Owner[BG_AV_SOUTH_MINE] != m_Mine_PrevOwner[BG_AV_SOUTH_MINE]) FillInitialWorldState(BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_PrevOwner[BG_AV_SOUTH_MINE]], WORLD_STATE_REMOVE); }
void BattleGroundAV::UpdateNodeWorldState(BG_AV_Nodes node) { UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State,m_Nodes[node].Owner)], 1); if (m_Nodes[node].PrevOwner == BG_AV_TEAM_NEUTRAL) // currently only snowfall is supported as neutral node UpdateWorldState(AV_SNOWFALL_N, 0); else UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState,m_Nodes[node].PrevOwner)], 0); }
void BattleGroundAV::UpdateNodeWorldState(BG_AV_Nodes node) { UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State, m_Nodes[node].Owner)], WORLD_STATE_ADD); if (m_Nodes[node].PrevOwner == TEAM_INDEX_NEUTRAL) // currently only snowfall is supported as neutral node UpdateWorldState(AV_SNOWFALL_N, WORLD_STATE_REMOVE); else UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState,m_Nodes[node].PrevOwner)], WORLD_STATE_REMOVE); }
void BattleGroundAV::FillInitialWorldStates(WorldPacket& data, uint32& count) { bool stateok; for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i) { for (uint8 j = 0; j < BG_AV_MAX_STATES; ++j) { stateok = (m_Nodes[i].State == j); FillInitialWorldState(data, count, BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_AV_TEAM_ALLIANCE)], m_Nodes[i].Owner == BG_AV_TEAM_ALLIANCE && stateok); FillInitialWorldState(data, count, BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_AV_TEAM_HORDE)], m_Nodes[i].Owner == BG_AV_TEAM_HORDE && stateok); } } if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].Owner == BG_AV_TEAM_NEUTRAL) // cause neutral teams aren't handled generic { FillInitialWorldState(data, count, AV_SNOWFALL_N, WORLD_STATE_ADD); } FillInitialWorldState(data, count, BG_AV_Alliance_Score, m_TeamScores[BG_TEAM_ALLIANCE]); FillInitialWorldState(data, count, BG_AV_Horde_Score, m_TeamScores[BG_TEAM_HORDE]); if (GetStatus() == STATUS_IN_PROGRESS) // only if game is running the teamscores are displayed { FillInitialWorldState(data, count, BG_AV_SHOW_A_SCORE, WORLD_STATE_ADD); FillInitialWorldState(data, count, BG_AV_SHOW_H_SCORE, WORLD_STATE_ADD); } else { FillInitialWorldState(data, count, BG_AV_SHOW_A_SCORE, WORLD_STATE_REMOVE); FillInitialWorldState(data, count, BG_AV_SHOW_H_SCORE, WORLD_STATE_REMOVE); } FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_Owner[BG_AV_NORTH_MINE]], WORLD_STATE_ADD); if (m_Mine_Owner[BG_AV_NORTH_MINE] != m_Mine_PrevOwner[BG_AV_NORTH_MINE]) { FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_PrevOwner[BG_AV_NORTH_MINE]], WORLD_STATE_REMOVE); } FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_Owner[BG_AV_SOUTH_MINE]], WORLD_STATE_ADD); if (m_Mine_Owner[BG_AV_SOUTH_MINE] != m_Mine_PrevOwner[BG_AV_SOUTH_MINE]) { FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_PrevOwner[BG_AV_SOUTH_MINE]], WORLD_STATE_REMOVE); } }