public AzioneSpecialDestroyer(Quantum quantum, Casella casellaPartenza)
        {
            _partenza = casellaPartenza;
            this.quantum = quantum;
            _naveMossa = casellaPartenza.Occupante;

            int[] disponibili =
                Tile.Tiles(t => t.PresenzaAlleata(quantum.getGestoreDiGiocatori().getGiocatoreDiTurno())).Select(t => t.ID).ToArray();

            quantum.getGUI().Tabellone.IlluminaCaselle(disponibili);
            quantum.getGUI().Tabellone.ResetSelezioneMouse();
            Interfaccia.ConsoleMessaggi.NuovoMessaggio("Scegli l'alleato con cui fare il warp:");
        }
        public AzioneSelezionePianeta(Quantum quantum, Pianeta pianeta)
        {
            this.quantum = quantum;
            this.pianeta = pianeta;

            GuiManager gui = quantum.getGUI();

            Vector2 pos = gui.Tabellone.Tile2Pixel(pianeta);

            pos += new Vector2(gui.Tabellone.LatoCasella / 2, - gui.Tabellone.LatoCasella / 3);

            colonizza = new Widget(pos, doveDisegnoWidget.destra, widget.Colonizza, pianeta.Colonizzabile(quantum.getGestoreDiGiocatori().getGiocatoreDiTurno()));

            colonizza.Click += Colonizza;
            gui.Iscrivi(colonizza);
            gui.Tabellone.ResetSelezioneMouse();
            gui.Tabellone.MostraSelezione = false;
        }
        public AzioneSpecialBattlestation(Quantum quantum, Casella posizioneIniziale)
        {
            this.quantum = quantum;
            this.posizione = posizioneIniziale;
            this.nave = posizione.Occupante;

            var bersagli = Tile.Tiles(
                (Tile t) =>
                {
                    var c = t as Casella;
                    return c?.Adiacente(posizione, false) == true && c?.Occupante?.Alleato(quantum.getGestoreDiGiocatori().getGiocatoreDiTurno()) == false;

                }).Select(c => c.ID).ToArray();

            quantum.getGUI().Tabellone.IlluminaCaselle(bersagli);
            quantum.getGUI().Tabellone.ResetSelezioneMouse();
            ConsoleMessaggi.NuovoMessaggio("Scegli l'avversario da attaccare");
        }
        public AzioneInizioPartitaOffLine(Quantum quantum)
        {
            //EDIT: faccio tutto nel costruttore, tanto è una botta e via questa
            //REPLY: OK! Se il problema è che ti sta scomodo passare quantum, questa azione necessita
            // solo di GestoreDiAzioni e GestoreDiGiocatori per funzionare (in termini di memoria sono solo due liste, molto ragionevole).
            //Quindi si puo' costruirla come public AzioneInizioPartitaOffLine(GestoreDiAzioni a, GestoreDiGiocatori b).
            //Probabilmente vale anche per le altre azioni, avevo messo quantum in via provvisoria
            //EDIT2: serve anche la GUI a meno di non attivare i bottoni in qualche altro modo

            quantum.getGestoreDiAzioni().IncodaAzione(new AzioneStampaAConsole("Partita iniziata!"));

            foreach (Bottone b in quantum.getGUI().Bottoni)
            {
                b.Click += b.associatedEvent;
            }
            //probabilmente ha senso creare un'azione di inizio turno (che verrà usata anche dal bottone passa turno)
            quantum.getGestoreDiGiocatori().getGiocatoreDiTurno().Init();
            quantum.getGestoreDiAzioni().IncodaAzione(new AzioneSelezione(quantum));
            Cleanup();
        }