Stai confondendo la classe del nemico, concentrandoti nell'eseguire qualsiasi cosa e tutto ciò che è relativo a quel particolare nemico con la sua rappresentazione nella classe di gioco.
La classe nemica dovrebbe sapere cosa significa attaccare, ma non dovrebbe interessarsi agli effetti in altre classi se non è un effetto diretto dell'attacco. In altre parole, un nemico potrebbe aver bisogno di eseguire alcune operazioni sul suo obiettivo, ma non avrebbe bisogno di conservare le informazioni di stato relative al fatto che non abbia già attaccato o meno.
Il chiamante dovrebbe saperlo e dovrebbe tenere traccia di ciò, e presumo che il chiamante sia la stessa classe di gioco. Se questo è il caso, allora la soluzione è semplice. La tua classe di gioco dovrebbe contenere due liste: una con un elenco di nemici che non hanno attaccato e un altro con un elenco di nemici che hanno. Crea un metodo privato nella tua classe di gioco che esegue la chiamata "attacco" per un nemico particolare. Dopo la chiamata, la rimuovi dall'elenco di nemici che non hanno attaccato e la aggiungi all'elenco dei nemici che hanno attaccato.
Le operazioni eseguite su tutti i nemici richiederebbero semplicemente due passaggi, uno per ciascuna lista.
Se la classe di gioco non chiama l'attacco di Enemy, allora Enemy richiederà un semplice sistema di gestione degli eventi che permetta ad altri oggetti di ascoltare. Il gioco sarà quindi iscritto all'evento di attacco di tutte le sue istanze nemiche. Quando si verifica un attacco, tiene traccia di quali nemici hanno attaccato e che non hanno utilizzato il sistema di elenchi di cui sopra.
Considera l'utilizzo del pattern del bus degli eventi per centralizzare tutti gli eventi nel tuo programma se senti la necessità di utilizzare molti eventi come questo. Avere un'istanza che consente a un chiamante di ascoltare o attivare un evento per nome. Quindi crei un nome "nemico.attaccante" per indicare un evento specifico per un nemico che attacca. Allo stesso modo puoi fare lo stesso per altri eventi.
Spero che questo aiuti!