/// <summary> /// Effettua il setup del controllo grafico. /// </summary> /// <param name="FPS">Massima quantità fissata di frame disegnati al secondo</param> private void setup(byte FPS) { /* Impostazioni come controllo grafico: * Metto il double buffering, così da ridurre il flickering * Rendo il controllo tale da riempire tutto il clientsize del padre (client size = spazio dove mettere i controlli figli) * Aggiungo un colore solido al background */ this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.Dock = DockStyle.Fill; this.BackColor = SystemColors.ControlDarkDark; /* Impostazioni come GameViewport: * Setting del Frame Per Second Rate * Setting del Milliseconds Per Frame (in funzione del FPSRate) */ if (FPS <= 10) { FPS = 10; } this.fpsRate = FPS; this.mspF = 1000 / this.fpsRate; //Creo il cronometro utile per la temporizzazione. this.timer = new Stopwatch(); //Creo la coda di eventi "mouse e keyboard" this.queue = new KeyboardMouseEventBundle(); }
/// <summary> /// Dispatcha la gestione della coda degli eventi alla scena attiva, se c'è. /// </summary> /// <param name="bundle">Coda degli eventi passata al gestore.</param> public void HandleEvent(KeyboardMouseEventBundle bundle) { IIndipendentlyAnimable scene = this.getScene(selectedID); if (scene != null) { scene.HandleEvent(bundle); } else { Console.WriteLine("Il bundle sembra vuoto..."); } }
/// <summary> /// Gestisce la coda di eventi passata come parametro, modificandola. /// </summary> /// <param name="bundle">Coda di eventi passata al gestore</param> abstract public void HandleEvent(KeyboardMouseEventBundle bundle);