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; }
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); } } } } }
public void Reset() { _adjacentTiles.Clear(); _currentTile = false; _targetTile = false; _selectableTile = false; _visited = false; _parent = null; _distance = 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); } } }
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; }
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(); } }
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); } }
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); } }
void Start() { _obstacle = GetComponent <TilesScript>(); _obstacle.walkableTile = false; }