class idFireable{
void doFired();
}
class idProjectile{
doFired(){
// the projectile is fired in the aimed direction
}
}
class idDecorator{
fireable* idFireable;
idDecorator(idFireable fireable){
this.fireable = fireable;
}
override doFired(){
fireable.doFired();
}
}
class idGuided{
object* guidedObjectRepresentation = null;
idGuided(idFireabloe fireable){
super(fireable);
}
override doFired(){
doAdditionalFired();
super.doFired();
}
void doAdditionalFired(){
// Add enemy locking and guiding
}
}