Beispiel #1
0
    public override bool Execute(BoardTile a_tile)
    {
        if (m_disaster == null)
        {
            if (a_tile.Disaster == null)
            {
                CreateDisaster(m_disasterType, a_tile);
                m_disaster       = Owner.ControlledDisaster;
                m_stepsRemaining = 1;
            }
            else
            {
                m_disaster = a_tile.Disaster;
                m_disaster.Advance();
                if (m_disaster.IsAlive == false)
                {
                    return(true);
                }
                m_stepsRemaining = (m_disaster.DisasterType == m_disasterType) ? 2 : 1;
            }
            var sound = (m_disasterType == DisasterType.Fire) ? Board.instance.SoundFire : Board.instance.SoundWater;
            AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
            return(false);
        }
        m_disaster.SetDirection(m_disaster.Head, a_tile);

        --m_stepsRemaining;
        if (m_stepsRemaining > 0)
        {
            m_disaster.Advance();
            // stop if the disaster halts advancement
            if (m_disaster.IsAlive == false)
            {
                return(true);
            }
        }
        return(m_stepsRemaining <= 0);
    }