/// Metodo per piazzare per la prima volta una nave /// E' anche l'unico modo con cui una nave può essere dichiarata IN GIOCO public void Piazza(Casella CasellaTarget) { CasellaTarget.Occupante = this; CasellaOccupata = CasellaTarget; _ingioco = true; Piazzata?.Invoke(this, EventArgs.Empty); }
public bool Attacco(Casella casella, bool consumaMovimento) { bool esito = Attacco(casella.Occupante); if (esito) casella.Occupante = null; if (consumaMovimento) this._mossa = true; return esito; }
/// Muove la nave da una casella a un'altra. public void Muovi(Casella CasellaPartenza, Casella CasellaTarget) { CasellaPartenza.Occupante = null; CasellaTarget.Occupante = this; CasellaOccupata = CasellaTarget; this._mossa = true; }
/// <summary> Avvia il pathfinder per calcolare tutte le caselle raggiungibili. </summary> /// <param name="Partenza">Casella di partenza</param> /// <param name="muoveInDiagonale">determina se il movimento diagonale è abilitato</param> public void Start(Casella Partenza, bool muoveInDiagonale) { if (_partito) return; // ignora chiamate successive multiple del metodo Start _muoveInDiagonale = muoveInDiagonale; if (Partenza != null) { _partito = true; _nave = Partenza.Occupante; if (_nave == null) throw new ArgumentNullException("Pathfinder chiamato con una casella di partenza su cui non c'è nessuna nave!!!"); crawl(Partenza.ID, 0, new int[0], Direzioni.nessuna); } }