I have wrote collision detection for my arcade shooter game.
In the game, there is one ship and a row of the same type of monsters. Ship shoots laser and monsters shoot its lightning skill.
Here is how my collision detection work:
Laser and Monster lightning skill do not collide.
Ship's Laser and Monster lightning skill are the only objects that checks collision.
Ship's Laser checks any object that is of a Monster Type Class.
Monster lightning skill checks any object that is of a Ship Type Class.
The only issue I have is if I want to add a different monster skill then it will need to required the same duplicated collision code from the lightning skill I already have in order to check collision on the ship. The duplication can be far worse if I extend the number of the monster skills in the game to be more than two.