public void AStar(GridTiles gridTiles) { Dictionary <GridTile, GridTile> cameFrom = new Dictionary <GridTile, GridTile>(); Dictionary <GridTile, float> costSoFar = new Dictionary <GridTile, float>(); Debug.Log(gridTiles.begin); if (gridTiles.begin != null) { Debug.Log(gridTiles.begin); open.Add(gridTiles.begin); } while (!endReached) { GridTile lowestF = open[0]; if (lowestF == gridTiles.end) { return; } else { closed.Add(lowestF); List <GridTile> neighbours = FindNeighbours(lowestF.arrayPosition, gridTiles); foreach (GridTile neighbour in neighbours) { if (neighbour.g < lowestF.g && closed.BinarySearch(neighbour) > 0) { } Debug.Log(neighbour.arrayPosition); } } endReached = true; } }
public void Move() { if (path.Count > 0) { GridTiles t = path.Peek(); Vector3 target = t.transform.position; //Calculate the unit's position on top of the target tile target.y += halfHeight; //+ t.GetComponent<Collider>().bounds.extents.y; if (Vector3.Distance(transform.position, target) >= 0.05f) { CalculateHeading(target); SetHorizotalVelocity(); //Locomotion transform.forward = heading; //transform.position += velocity * Time.deltaTime; } else { //Tile center reached transform.position = target; path.Pop(); } } else { RemoveSelectableTiles(); isMoving = false; } }
protected GridTiles FindEndTile(GridTiles t) { Stack <GridTiles> tempPath = new Stack <GridTiles>(); GridTiles next = t.parent; while (next != null) { tempPath.Push(next); next = next.parent; } if (tempPath.Count <= attackArea) { if (t.parent.gameObject.tag == "Ramp") { GridTiles temp = t.parent; return(temp.parent); } return(t.parent); } GridTiles endTile = null; for (int i = 0; i <= attackArea; i++) { endTile = tempPath.Pop(); } if (endTile.gameObject.tag == "Ramp") { Debug.Log("hdfksjflk me"); return(endTile.parent); } return(endTile); }
public void ComputeAdjacencyLists(float jumpHeight, GridTiles target) { AssignArray(tiles); foreach (GameObject tile in tiles) { tile.GetComponent <GridTiles>().FindNeighbors(jumpHeight, target); } }
private List <GridTile> FindNeighbours(Vector2Int baseArrayPosition, GridTiles gridTiles) { List <GridTile> neighbourTiles = new List <GridTile>(); neighbourTiles.Add(gridTiles.tiles[baseArrayPosition.x--, baseArrayPosition.y]); neighbourTiles.Add(gridTiles.tiles[baseArrayPosition.x, baseArrayPosition.y++]); neighbourTiles.Add(gridTiles.tiles[baseArrayPosition.x++, baseArrayPosition.y]); neighbourTiles.Add(gridTiles.tiles[baseArrayPosition.x, baseArrayPosition.y--]); return(neighbourTiles); }
void CalculatePath() { GridTiles targetTile = GetTargetTile(target); if (targetTile == null) { Debug.Log("How"); } FindPath(targetTile); }
public Vector2Int GetRandomTile(GridTiles tiles, Vector2Int position) { Vector2Int result = Vector2Int.zero; do { int index = Random.Range(0, tiles.walkableTiles.Count); result = tiles.walkableTiles[index]; }while (result == position); return(result); }
public void MoveToTile(GridTiles tile) { path.Clear(); tile.target = true; isMoving = true; GridTiles next = tile; while (next != null) { path.Push(next); next = next.parent; } }
protected GridTiles FindLowestF(List <GridTiles> list) { GridTiles lowest = list[0]; foreach (GridTiles t in list) { if (t.f < lowest.f) { lowest = t; } } list.Remove(lowest); return(lowest); }
public void FindSelectableTiles() { ComputeAdjacencyLists(jumpHeight, null); GetCurrentTile(); Queue <GridTiles> process = new Queue <GridTiles>(); process.Enqueue(currentTile); currentTile.visited = true; //currentTile.parent = ?? leave as null while (process.Count > 0) { GridTiles t = process.Dequeue(); selectableTiles.Add(t); t.selectable = true; if (t.distance < move) { foreach (GridTiles tile in t.adjacencyList) { if (!tile.visited) { tile.parent = t; tile.visited = true; tile.distance = 1 + t.distance; process.Enqueue(tile); } } /*foreach (GridTiles tile in t.attackList) * { * if (!tile.visited) * { * attackTile.Add(tile); * tile.parent = t; * tile.visited = true; * tile.distance = 1 + t.distance; * tile.selectable = false; * tile.attack = true; * } * }*/ } } }
public IEnumerator GoMove(GridTiles tile) { isMoving = true; MoveToTile(tile); Move(); do { Move(); yield return(new WaitForSeconds(0.01f)); } while (isMoving); if (gameObject.transform.localRotation != tile.transform.localRotation) { gameObject.transform.localRotation = tile.transform.localRotation; } GameObject.FindObjectOfType <PlayerUnitMenu>().moveDoubleClick = false; HideMove(); }
public Vector2Int getNearestWallkableTile(GridTiles tiles, Vector2 target) { float min = 1000; Vector2Int result = Vector2Int.zero; foreach (var tile in tiles.walkableTiles) { var dist = Vector2.Distance(tile, target); if (dist < min) { //if its the current closest to target min = dist; result = tile; } } return(result); }
public GridTiles FindBossSpawns() { MapLocation map = GameObject.FindObjectOfType <MapLocation>(); GridTiles tiles = new GridTiles(); foreach (Rows row in map.allRows) { map.allTiles = row.GetComponentsInChildren <GridTiles>(); foreach (GridTiles tile in map.allTiles) { if (tile.bossSpawn && tile.walkable) { return(tile); } } } return(tiles); }
public GridTiles GetTargetTile(GameObject target) { RaycastHit hit; GridTiles tile = null; if (Physics.Raycast(target.transform.position, -Vector3.up, out hit, 3)) { if (hit.collider.GetComponent <GridTiles>() == null) { Debug.Log("thudfdjs"); tile = hit.collider.GetComponentInParent <GridTiles>(); } else { tile = hit.collider.GetComponent <GridTiles>(); } } return(tile); }
public GridTiles FindPlayerLocaton() { MapLocation map = FindMap(); GridTiles tiles = null; foreach (Rows row in map.allRows) { map.allTiles = row.GetComponentsInChildren <GridTiles>(); foreach (GridTiles tile in map.allTiles) { if (tile.unit != null) { if (tile.unit.GetComponent <UnitParty>() != null && tile.unit.GetComponent <MCMove>() != null) { return(tile); } } } } return(tiles); }
protected void RemoveSelectableTiles() { if (currentTile != null) { currentTile.current = false; currentTile = null; } foreach (GridTiles tile in attackTile) { tile.Reset(); } foreach (GridTiles tile in selectableTiles) { tile.Reset(); } selectableTiles.Clear(); attackTile.Clear(); }
public GridTiles InitGrid(Tilemap TileMap) { GridTiles tiles = new GridTiles(); tiles.walkableTiles = new List <Vector2Int>(); RoyT.AStar.Grid grid = new RoyT.AStar.Grid(startX + endX, startY + endY, 1.0f); for (int i = -startX; i < endX; i++) { for (int j = -startY; j < endY; j++) { if (GameManager.instance.isWall(TileMap, new Vector2Int(i, j))) { grid.BlockCell(new Position(i + startX, j + startY)); } else if (!GameManager.instance.isGhostArea(new Vector2Int(i, j))) { tiles.walkableTiles.Add(new Vector2Int(i, j)); } } } tiles.grid = grid; return(tiles); }
public int CompareTo(GridTiles other) { return(this.id.CompareTo(other.id)); }
protected void FindPath(GridTiles target) { ComputeAdjacencyLists(jumpHeight, target); GetCurrentTile(); List <GridTiles> openList = new List <GridTiles>(); List <GridTiles> closedList = new List <GridTiles>(); openList.Add(currentTile); //currentTile.parent = ?? currentTile.h = Vector3.Distance(currentTile.transform.position, target.transform.position); currentTile.f = currentTile.h; while (openList.Count > 0) { GridTiles t = FindLowestF(openList); closedList.Add(t); if (t == target) { actualTargetTile = FindEndTile(t); MoveToTile(actualTargetTile); return; } foreach (GridTiles tile in t.adjacencyList) { if (closedList.Contains(tile)) { //Do nothing, already processed } else if (openList.Contains(tile)) { float tempG = t.g + Vector3.Distance(tile.transform.position, t.transform.position); if (tempG < tile.g) { tile.parent = t; tile.g = tempG; tile.f = tile.g + tile.h; } } else { tile.parent = t; tile.g = t.g + Vector3.Distance(tile.transform.position, t.transform.position); tile.h = Vector3.Distance(tile.transform.position, target.transform.position); tile.f = tile.g + tile.h; openList.Add(tile); } } } // GameObject.FindObjectOfType<MoveSwitch>().gridOn = false; Debug.Log("Make A Better Map you nit wit"); }
public void GetCurrentTile() { currentTile = GetTargetTile(gameObject); currentTile.current = true; }
void GetCollumAndRow() { EventDriver eventDriver = GameObject.FindObjectOfType <EventDriver>(); Debug.Log(eventDriver.FindMap()); if (eventDriver.FindMap() != null) { if (eventDriver.FindMap() == gameObject.GetComponent <MapLocation>()) { GridTiles playerLocation = eventDriver.FindPlayerLocaton(); GridTiles enemyLocation = eventDriver.FindPartyLocaton(); if (enemyLocation == null || playerLocation == null) { return; } newEnemyTag = enemyLocation.gameObject.name; newPlayerTag = playerLocation.gameObject.name; enemyGL = ""; int j = 0; for (int i = 2; i < newEnemyTag.Length; i++) { enemyGL += newEnemyTag[i].ToString(); j++; } playerGL = ""; j = 0; for (int i = 2; i < newPlayerTag.Length; i++) { playerGL += newPlayerTag[i].ToString(); j++; } for (int i = 0; i < enemyGL.Length; i++) { if (enemyGL[i].ToString() == "r") { rowEnemyStart = i + 1; collumEnemyEnd = i - 1; } } for (int i = 0; i < playerGL.Length; i++) { if (playerGL[i].ToString() == "r") { rowPlayerStart = i + 1; collumPlayerEnd = i - 1; } } eCollums = ""; Debug.Log(collumEnemyEnd); if (collumEnemyEnd > 0) { j = 0; for (int i = collumEnemyEnd; i >= 0; i--) { eCollums += enemyGL[j].ToString(); j++; } } else { eCollums = enemyGL[0].ToString(); } eRows = ""; for (int i = rowEnemyStart; i < enemyGL.Length; i++) { eRows += enemyGL[i].ToString(); j++; } pCollums = ""; if (collumPlayerEnd > 0) { int playerGLength = playerGL.Length; j = 0; for (int i = collumPlayerEnd; i >= 0; i--) { pCollums += playerGL[j].ToString(); j++; } } else { pCollums = playerGL[0].ToString(); } pRows = ""; j = 0; for (int i = rowPlayerStart; i < playerGL.Length; i++) { //if (i < 0 && i <= playerGL.Length) pRows += playerGL[i].ToString(); j++; } pcNum = int.Parse(pCollums); prNum = int.Parse(pRows); ecNum = int.Parse(eCollums); erNum = int.Parse(eRows); //enemy collum,row then player collum,row mapEventDriver.AssignInts(ecNum, erNum, pcNum, prNum); GetQuads(); } } }
public void ifClick() { // string name = GetComponent<Button>().name; string name = EventSystem.current.currentSelectedGameObject.name; GameObject go = GameObject.Find("GameController"); GridTiles gridTiles = go.GetComponent <GridTiles>(); List <int> disableList = gridTiles.disableList; Debug.Log("Name.........." + name); int key = PlayerPrefs.GetInt("Key"); Debug.Log("Key........" + key); if (name.Equals("22") && isKey) { Application.LoadLevel(0); int level; if (PlayerPrefs.GetInt("Level").Equals(0)) { level = 1; } else { level = PlayerPrefs.GetInt("Level") + 1; } PlayerPrefs.SetInt("Level", level); } if (!disableList.Contains(key) && name.Equals(key.ToString())) { GameObject.Find(22.ToString()).GetComponent <Image>().color = Color.green; Debug.Log("Key Success"); isKey = true; } else { if (!disableList.Contains(int.Parse(name))) { int c1 = int.Parse(name) - 5; int c2 = int.Parse(name) - 1; int c3 = int.Parse(name) + 1; int c4 = int.Parse(name) + 5; GameObject.Find(name).GetComponent <Image>().color = Color.gray; if (c1.Equals(key) || c2.Equals(key) || c3.Equals(key) || c4.Equals(key)) { GameObject.Find(key.ToString()).GetComponent <Image>().color = Color.yellow; disableList.Remove(key); } if (!c1.Equals(22) && c1 <= 24 && c1 >= 0 && disableList.Contains(c1) && !c1.Equals(key)) { GameObject.Find(c1.ToString()).GetComponent <Image>().color = Color.blue; disableList.Remove(c1); } if (!c2.Equals(22) && c2 <= 24 && c2 >= 0 && disableList.Contains(c2) && !c2.Equals(key) && !name.Equals("5") && !name.Equals("10") && !name.Equals("15") && !name.Equals("20")) { GameObject.Find(c2.ToString()).GetComponent <Image>().color = Color.blue; disableList.Remove(c2); } if (!c3.Equals(22) && c3 <= 24 && c3 >= 0 && disableList.Contains(c3) && !c3.Equals(key) && !name.Equals("4") && !name.Equals("9") && !name.Equals("14") && !name.Equals("19")) { GameObject.Find(c3.ToString()).GetComponent <Image>().color = Color.blue; disableList.Remove(c3); } if (!c4.Equals(22) && c4 <= 24 && c4 >= 0 && disableList.Contains(c4) && !c4.Equals(key)) { GameObject.Find(c4.ToString()).GetComponent <Image>().color = Color.blue; disableList.Remove(c4); } } } }
public void OnPointerClick(PointerEventData eventData) { if (oneTile) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } if (twoTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } if (threeTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); tile3 = FindAssociatedTile.FindMyTile(holder3.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile3.unit != null) { tile3.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } if (fourTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); tile3 = FindAssociatedTile.FindMyTile(holder3.transform.localPosition, gameObject); tile4 = FindAssociatedTile.FindMyTile(holder4.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile3.unit != null) { tile3.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile4.unit != null) { tile4.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } if (fiveTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); tile3 = FindAssociatedTile.FindMyTile(holder3.transform.localPosition, gameObject); tile4 = FindAssociatedTile.FindMyTile(holder4.transform.localPosition, gameObject); tile5 = FindAssociatedTile.FindMyTile(holder5.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile3.unit != null) { tile3.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile4.unit != null) { tile4.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile5.unit != null) { tile5.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } else if (sixTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); tile3 = FindAssociatedTile.FindMyTile(holder3.transform.localPosition, gameObject); tile4 = FindAssociatedTile.FindMyTile(holder4.transform.localPosition, gameObject); tile5 = FindAssociatedTile.FindMyTile(holder5.transform.localPosition, gameObject); tile6 = FindAssociatedTile.FindMyTile(holder6.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile3.unit != null) { tile3.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile4.unit != null) { tile4.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile5.unit != null) { tile5.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile6.unit != null) { tile6.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } if (sevenTiles) { tile1 = FindAssociatedTile.FindMyTile(holder1.transform.localPosition, gameObject); tile2 = FindAssociatedTile.FindMyTile(holder2.transform.localPosition, gameObject); tile3 = FindAssociatedTile.FindMyTile(holder3.transform.localPosition, gameObject); tile4 = FindAssociatedTile.FindMyTile(holder4.transform.localPosition, gameObject); tile5 = FindAssociatedTile.FindMyTile(holder5.transform.localPosition, gameObject); tile6 = FindAssociatedTile.FindMyTile(holder6.transform.localPosition, gameObject); tile7 = FindAssociatedTile.FindMyTile(holder7.transform.localPosition, gameObject); if (tile1.unit != null) { tile1.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile2.unit != null) { tile2.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile3.unit != null) { tile3.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile4.unit != null) { tile4.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile5.unit != null) { tile5.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile6.unit != null) { tile6.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } if (tile7.unit != null) { tile7.unit.GetComponent <Stats>().Skill(GameObject.FindObjectOfType <MapManager>().currentUser.GetComponent <Stats>()); } GameObject.FindObjectOfType <MapManager>().PlayerSkill(); } }