142 | | void |
143 | | MessageDeliverer::Visit(PlayerMapType &m) |
144 | | { |
145 | | for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter) |
146 | | { |
147 | | if( i_toSelf || iter->getSource() != &i_player) |
148 | | { |
149 | | if(WorldSession* session = iter->getSource()->GetSession()) |
150 | | session->SendPacket(i_message); |
151 | | } |
152 | | } |
153 | | } |
154 | | |
155 | | void |
156 | | ObjectMessageDeliverer::Visit(PlayerMapType &m) |
157 | | { |
158 | | for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter) |
159 | | { |
160 | | if(WorldSession* session = iter->getSource()->GetSession()) |
| 144 | void |
| 145 | Deliverer::Visit(PlayerMapType &m) |
| 146 | { |
| 147 | for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter) |
| 148 | { |
| 149 | if (!i_dist || iter->getSource()->GetDistance(&i_source) <= i_dist) |
| 150 | { |
| 151 | // Send packet to possessor |
| 152 | if (iter->getSource()->isPossessedByPlayer()) |
| 153 | SendPacket((Player*)iter->getSource()->GetCharmer()); |
| 154 | VisitObject(iter->getSource()); |
| 155 | } |
| 156 | } |
| 157 | } |
| 158 | |
| 159 | void |
| 160 | Deliverer::Visit(CreatureMapType &m) |
| 161 | { |
| 162 | for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) |
| 163 | { |
| 164 | if (!i_dist || iter->getSource()->GetDistance(&i_source) <= i_dist) |
| 165 | { |
| 166 | // Send packet to possessor |
| 167 | if (iter->getSource()->isPossessedByPlayer()) |
| 168 | SendPacket((Player*)iter->getSource()->GetCharmer()); |
| 169 | } |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | void |
| 174 | Deliverer::SendPacket(Player* plr) |
| 175 | { |
| 176 | if (!plr) |
| 177 | return; |
| 178 | // Don't send the packet to possesor if not supposed to |
| 179 | if (!i_toPossessor && plr->isPossessing() && plr->GetCharmGUID() == i_source.GetGUID()) |
| 180 | return; |
| 181 | |
| 182 | if (plr_list.find(plr->GetGUID()) == plr_list.end()) |
| 183 | { |
| 184 | if (WorldSession* session = plr->GetSession()) |
162 | | } |
163 | | } |
164 | | |
165 | | void |
166 | | MessageDistDeliverer::Visit(PlayerMapType &m) |
167 | | { |
168 | | for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter) |
169 | | { |
170 | | if( (i_toSelf || iter->getSource() != &i_player ) && |
171 | | (!i_ownTeamOnly || iter->getSource()->GetTeam() == i_player.GetTeam() ) && |
172 | | (!i_dist || iter->getSource()->GetDistance(&i_player) <= i_dist) ) |
173 | | { |
174 | | if(WorldSession* session = iter->getSource()->GetSession()) |
175 | | session->SendPacket(i_message); |
176 | | } |
177 | | } |
178 | | } |
179 | | |
180 | | void |
181 | | ObjectMessageDistDeliverer::Visit(PlayerMapType &m) |
182 | | { |
183 | | for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter) |
184 | | { |
185 | | if( !i_dist || iter->getSource()->GetDistance(&i_object) <= i_dist ) |
186 | | { |
187 | | if(WorldSession* session = iter->getSource()->GetSession()) |
188 | | session->SendPacket(i_message); |
189 | | } |
| 186 | plr_list.insert(plr->GetGUID()); |
| 187 | } |
| 188 | } |
| 189 | |
| 190 | void |
| 191 | MessageDeliverer::VisitObject(Player* plr) |
| 192 | { |
| 193 | if (i_toSelf || plr != &i_source) |
| 194 | SendPacket(plr); |
| 195 | } |
| 196 | |
| 197 | void |
| 198 | MessageDistDeliverer::VisitObject(Player* plr) |
| 199 | { |
| 200 | if( (i_toSelf || plr != &i_source ) && |
| 201 | (!i_ownTeamOnly || (i_source.GetTypeId() == TYPEID_PLAYER && plr->GetTeam() == ((Player&)i_source).GetTeam())) ) |
| 202 | { |
| 203 | SendPacket(plr); |