Beispiel #1
0
 public void Move(TilesScript newCurrentTiles)
 {
     //Debug.Log("Tile de base : " + m_currentTile.Id + " et la nouvelle Tile : " + newCurrentTiles.Id);
     m_currentTile.currentPlayerOnTile = null;
     m_currentTile = newCurrentTiles;
     m_currentTile.currentPlayerOnTile = this;
 }
Beispiel #2
0
        private void FindSelectableTiles()
        {
            ComputeAdjacencyLists();
            _currentTile = GetCurrentTile(m_currentPlayer);

            // Start BFS

            Queue <TilesScript> _process = new Queue <TilesScript>();

            _process.Enqueue(_currentTile);
            _currentTile.visited = true;

            while (_process.Count > 0)
            {
                TilesScript t = _process.Dequeue();

                _selectableTiles.Add(t);
                t.selectableTile = true;

                if (t.distance < m_diceValue)
                {
                    foreach (TilesScript tile in t._adjacentTiles)
                    {
                        if (!tile.visited)
                        {
                            tile.parent   = t;
                            tile.visited  = true;
                            tile.distance = 1 + t.distance;
                            _process.Enqueue(tile);
                        }
                    }
                }
            }
        }
Beispiel #3
0
    public void Reset()
    {
        _adjacentTiles.Clear();

        _currentTile    = false;
        _targetTile     = false;
        _selectableTile = false;

        _visited  = false;
        _parent   = null;
        _distance = 0;
    }
Beispiel #4
0
    private void CheckTile()
    {
        Collider2D[] _colliders = Physics2D.OverlapBoxAll(transform.position, _size, 45.0f);

        foreach (Collider2D item in _colliders)
        {
            TilesScript tile = item.GetComponent <TilesScript>(); //check si c'est bien une tile
            if (tile != null && tile._walkableTile)
            {
                _adjacentTiles.Add(tile);
            }
        }
    }
Beispiel #5
0
    public int FindIndex(TilesScript ts)
    {
        for (int i = 0; i < tiles.Length; i++)
        {
            if (tiles[i] != null)
            {
                if (tiles[i] == ts)
                {
                    return i;
                }
            }
        }

        return -1;
    }
Beispiel #6
0
        public void MovePlayer(GameObject tile)//appelé lorsqu'on click sur une tiles accessible par le player;
        {
            if (tile.GetComponent <TilesScript>().walkableTile)
            {
                GetCurrentTile(m_currentPlayer).walkableTile = true;
                m_currentPlayer.transform.position           = tile.transform.position;
                TilesScript tileObject = tile.GetComponent <TilesScript>();
                diceValue -= tileObject.distance;
                tileObject.walkableTile = false;
                foreach (TilesScript t in m_tilesTab)
                {
                    t.Reset();
                }

                FindSelectableTiles();
            }
        }
Beispiel #7
0
    private void GetAffectedTileLeft()
    {
        List <TilesScript> m_affectedTilesL = new List <TilesScript>();

        Collider2D[] _collidersL = Physics2D.OverlapBoxAll(new Vector2(transform.position.x - m_offset, transform.position.y), m_boxSizeH, 0); //Le collider sur le côté L

        foreach (Collider2D item in _collidersL)
        {
            TilesScript tile = item.GetComponent <TilesScript>(); //check si c'est bien une tile
            if (tile != null)
            {
                m_affectedTilesL.Add(tile);
            }
        }

        m_affectedTilesL.Sort((a, b) => (b.Id.CompareTo(a.Id)));

        int count = 0;

        for (count = 0; count < m_affectedTilesL.Count; count++)
        {
            if (m_affectedTilesL[count].m_currentTilesType == TilesScript.TilesType.BORDER)
            {
                break;
            }
            else if (m_affectedTilesL[count].m_currentTilesType == TilesScript.TilesType.WALL)
            {
                count++;
                break;
            }
        }

        if (m_affectedTilesL.Count > 0)
        {
            for (int i = m_affectedTilesL.Count - 1; i > count - 1; i--)
            {
                m_affectedTilesL.RemoveAt(i);
            }
        }

        foreach (TilesScript tile in m_affectedTilesL)
        {
            m_affectedTiles.Add(tile);
        }
    }
Beispiel #8
0
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = _camera.ScreenPointToRay(Input.mousePosition);
            RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);

            if (hit)
            {
                if (Vector2.Distance(emptySpace.position, hit.transform.position) < 2.1)
                {
                    Vector2 lastEmptySpacePosition = emptySpace.position;
                    TilesScript thisTile = hit.transform.GetComponent<TilesScript>();
                    emptySpace.position = thisTile.targetPosition;
                    thisTile.targetPosition = lastEmptySpacePosition;
                    int tileIndex = FindIndex(thisTile);
                    tiles[_emptySpaceIndex] = tiles[tileIndex];
                    tiles[tileIndex] = null;
                    _emptySpaceIndex = tileIndex;
                }
            }
        }

        int correctTiles = 0;
        foreach (var a in tiles)
        {
            if (a != null)
            {


                if (a.inRightPlace)

                    correctTiles++;
            }
        }

        if (correctTiles == tiles.Length - 1)
        {
            _isFinished = true;
            _endPanel.SetActive(true);
        }
    }
Beispiel #9
0
 void Start()
 {
     _obstacle = GetComponent <TilesScript>();
     _obstacle.walkableTile = false;
 }