[source lang="cpp"]void Bomb::handleMessage(const Message & msg){ if(msg.msg==MessageType::HIT_BY_BOMB) { alive=false; gameWorld->cancelAllMessagesTo(this); gameWorld->getGameMap().onExit(currentLoc.x, currentLoc.y, this); //I'm having problem here... for(Entity * eachEntity : gameWorld->getAllEntitiesWithin(currentLoc.x, currentLoc.y, range); gameWorld->getPostOffice().sendMessage(this, eachEntity, MessageType::HIT_BY_BOMB); }}[/source]
As you can see when a bomb receives a message that it got hit by an another bomb, it sends out messages to every single entities within the range of the bomb.
This is how messages would get delivered if bomb A explodes
A->C, E
C->A, B, D, E
E->C, A
B-> C, D
D->C, B
...
As you can see, there are many redundant message delivery. This slows down my game so much.
What is a better design to this problem?







