示例#1
0
 /// 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);
 }
示例#2
0
 public bool Attacco(Casella casella, bool consumaMovimento)
 {
     bool esito = Attacco(casella.Occupante);
     if (esito) casella.Occupante = null;
     if (consumaMovimento) this._mossa = true;
     return esito;
 }
示例#3
0
 /// 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;
 }
示例#4
0
        /// <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);
            }
        }