Ho un gioco con eventi come GameOver, GameStart, PlayerWin, ecc. Ho solo una classe che sta ascoltando su questi eventi, allo scopo di inviare questi eventi come messaggi json TCP a un client (giocatore).
Ma per ogni funzione di gioco importante che scrivo, devo scrivere un event
e poi chiamare
if(MyEvent != null)
MyEvent(this, new GameEventArgs("gameover"));
Potrei facilmente evitare di scrivere event
per ogni azione importante e includere invece il listener come classe istanziata e semplicemente inviare messaggi in questo modo.
private GameListener gameListner = new GameListener();
private void GameOver(){
this.turnTimer.enabled = false;
this.winner = player; //etc
gameListener.GameOver(player);
}
class GameListener{
public void GameOver(Player player){
JSON json = EncodeJson(GAME_OVER, player);
SendClientData(json);
}
}
C'è qualche ragione per cui dovrei attenermi agli eventi e ai delegati?