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(); }