//Public Domain //Original version written by Paul Aspinall. //Versione commentata da Francesco Malatesta in Italiano :) // Direttive using per l'inclusione dei namespace interessati. using System; using System.Drawing; using SdlDotNet.Core; using SdlDotNet.Graphics; using SdlDotNet.Input; namespace SdlDotNetExamples.SmallDemos { public class Template { /* * Questo metodo base è statico ed è il punto d'ingresso nella nostra applicazione. Da qui, infatti, * dichiareremo una nuova variabile di tipo Template ed eseguiremo il metodo Go. */ [STAThread] public static void Main() { Template game = new Template(); game.Go(); } /* * Il costruttore Template attualmente è vuoto ma generalmente è molto utile per inizializzare variabili * che verranno successivamente usate nel gioco. */ public Template() { } /* * Il metodo Go, in questo caso, definisce la risoluzione della finestra di gioco (800 x 600) e avvia il metodo * AddHandlers, che analizzeremo tra poco. In ultimo, inoltre, lancia il metodo Events.Run(), facendo partire * in questo modo il Loop principale del gioco. */ public void Go() { Video.SetVideoMode(800, 600); this.AddHandlers(); Events.Run(); } /* * AddHandlers è un metodo che si occupa di gestire il sistema ad eventi, definendo con facilità tutti quelli * che dovranno essere contemplati dal nostro programma. In questo caso abbiamo aggiunto degli Handler per * l'evento Quit (uscita dal programma) e Tick (evento che si presenta ad ogni frame). */ private void AddHandlers() { Events.Quit += new EventHandler(this.Events_Quit); Events.Tick += new EventHandler(this.Events_Tick); } /* * RemoveHandlers() toglie quello che AddHandlers() aveva aggiunto: vengono rimossi gli Handler ai vari eventi * e, come vedremo successivamente, questo metodo viene utilizzato in fase di uscita dal gioco. */ private void RemoveHandlers() { Events.Quit -= new EventHandler(this.Events_Quit); Events.Tick -= new EventHandler(this.Events_Tick); } /* * Events_Tick è il metodo contemplato per l'evento Tick: quello che fa è semplice. Inizialmente riempie * la finestra di blue, tramite il metodo Fill della Surface Screen. Successivamente aggiorna il tutto tramite * il metodo Update(), provvedendo in questo modo a mandare sullo schermo i risultati dell'elaborazione. */ private void Events_Tick(object sender, TickEventArgs e) { Video.Screen.Fill(System.Drawing.Color.Blue); Video.Screen.Update(); } /* * Come già detto precedentemente, Events_Quit provvede a rimuovere i vari EventHandlers tramite il metodo * RemoveHandlers() e successivamente esce dal programma, tramite il metodo Events.QuitApplication(). */ private void Events_Quit(object sender, QuitEventArgs e) { RemoveHandlers(); Events.QuitApplication(); } } }