private void DoPlaceUnit(GameObject piece, GameObject location) { if (piece.activeInHierarchy) { return; } piece.SetActive(true); piece.name = "" + piece.GetComponent <NetworkedUnit>().unitType + identity; piece.GetComponent <NetworkedUnit>().SetLocation(location); piece.GetComponent <NetworkedUnit>().owner = gameObject; piece.GetComponent <NetworkedUnit>().remainingMoves = 2; if (isLocalPlayer) { if (head != null) { DoublyLinkedListNode current = head; while (current.forward != head) { current = current.forward; } NetworkedUnit unit = piece.GetComponent <NetworkedUnit>(); DoublyLinkedListNode newNode = new DoublyLinkedListNode(unit, current, head); current.forward = newNode; head.prev = newNode; } else { DoublyLinkedListNode newHead = new DoublyLinkedListNode(piece.GetComponent <NetworkedUnit>()); newHead.forward = newHead; newHead.prev = newHead; head = newHead; } } }
public void SetLocation(GameObject newLoc) { // Check if gridElement has been assigned (this is for spawning) if (!gridElement) { FindGridElement(); } // Handle Collisions; We're assuming newLoc always has a GridElement NetworkedGridElement otherGE = newLoc.GetComponent <NetworkedGridElement>(); if (otherGE && otherGE.piece && otherGE.piece != gameObject) { //Debug.Log("Collided with: " + otherGE.piece.name); // Check to make sure we're working with a unit if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedUnit) { NetworkedUnit otherUnit = otherGE.piece.GetComponent <NetworkedUnit>(); otherUnit.GetComponent <NetworkedPlayer>().CmdReturnUnit(otherGE.piece); if (otherUnit is NetworkedPortalPlacer) { otherUnit.GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } otherGE.piece = null; // check to see if the other piece has the flag if (otherUnit.flag) { otherGE.piece = otherUnit.flag; } } else { // Check for flag if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedFlag) { Debug.Log("MAYDAY - A TRAP HAS LANDED ON THE FLAG AND THOMAS HASN'T FIGURED OUT HOW THIS SHOULD ACT."); } else if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedTrap) { Debug.Log("MAYDAY - A TRAP HAS LANDED ON A TRAP AND THOMAS HASN'T FIGURED OUT HOW THIS SHOULD ACT."); } } } transform.position = newLoc.transform.TransformPoint(Vector3.zero) + Vector3.forward * gameObject.transform.position.z; gridElement.piece = null; gridElement = newLoc.GetComponent <NetworkedGridElement>(); gridElement.piece = gameObject; }
private DoublyLinkedListNode FindNode(NetworkedUnit unit) { DoublyLinkedListNode current = head; if (current == null) { return(null); } do { if (current._item == unit) { break; } current = current.forward; } while (current.forward != head); return(current); }
public void RotateRight(NetworkedGridElement selectedGE) { DoublyLinkedListNode curNode = head; if (selectedGE.piece && selectedGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedUnit) { NetworkedUnit selectedUnit = selectedGE.piece.GetComponent <NetworkedUnit>(); curNode = FindNode(selectedUnit); } if (curNode == null) { return; } if (activeMenu is NetworkedGridMenu) { ((NetworkedGridMenu)activeMenu).ChangeElementSelected(curNode.prev._item.GetComponent <NetworkedUnit>().gridElement.gameObject); } }
public void SetLocation(GameObject newLoc) { transform.position = newLoc.transform.TransformPoint(Vector3.zero) + Vector3.forward * gameObject.transform.position.z; if (flag) { flag.transform.position = newLoc.transform.TransformPoint(Vector3.zero) + Vector3.forward * flag.transform.position.z; flag.GetComponent <NetworkedGamePiece>().gridElement = newLoc.GetComponent <NetworkedGridElement>(); if (newLoc.GetComponent <NetworkedGridElement>().goal) { owner.GetComponent <NetworkedPlayer>().CmdEndLevel(owner.GetComponent <NetworkedPlayer>().identity); //grid.gameMan.EndLevel(owner.GetComponent<NetworkedPlayer>().identity); } } // Check if gridElement has been assigned (this is for spawning) if (!gridElement) { if (!FindGridElement()) { Debug.Log(gridElement.piece); } } // Handle Collisions; We're assuming newLoc always has a GridElement NetworkedGridElement otherGE = newLoc.GetComponent <NetworkedGridElement>(); if (otherGE && otherGE.piece && otherGE.piece != gameObject) { //Debug.Log("Collided with: " + otherGE.piece.name); // Check to make sure we're working with a unit if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedUnit) { NetworkedUnit otherUnit = otherGE.piece.GetComponent <NetworkedUnit>(); otherUnit.owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(otherGE.piece); if (otherUnit.unitType == UnitType.Portalist) { otherUnit.GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } otherGE.piece = null; // check to see if the other piece has the flag if (otherUnit.flag) { otherGE.piece = otherUnit.flag; flag = null; } // make sure you don't have the flag if (flag) { otherGE.piece = flag; flag.GetComponent <NetworkedGamePiece>().gridElement = otherGE; flag = null; } // Don't forget to kill yourself owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(gameObject); if (unitType == UnitType.Portalist) { GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } gridElement.piece = null; return; } else { // Check for flag if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedFlag) { flag = otherGE.piece; canAct = false; remainingMoves = 0; } else if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedTrap) { if (unitType == UnitType.Portalist) { this.GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } if (gridElement.piece == gameObject) { gridElement.piece = null; } if (!grid) { grid = FindObjectOfType <NetworkedGridMenu>(); } owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(gameObject); if (flag) // flags will destroy traps; currently no piece can destroy traps, // so if a flag lands on one, it must either destroy the trap or the game is unwinnable // it may be better to have traps pull/pushable, while the flag remains aloof. This would // prevent the need to destroy the trap { Destroy(otherGE.piece); otherGE.piece = flag; flag.GetComponent <NetworkedGamePiece>().gridElement = otherGE; flag = null; } return; } } } gridElement.piece = null; gridElement = newLoc.GetComponent <NetworkedGridElement>(); gridElement.piece = gameObject; if (flag) { flag.GetComponent <NetworkedGamePiece>().gridElement = gridElement; if (gridElement.goal) { // Player has moved the flag into the goal! // Someone should probably contact the gamemanager owner.GetComponent <NetworkedPlayer>().CmdEndLevel(owner.GetComponent <NetworkedPlayer>().identity); //grid.gameMan.EndLevel(); } } if (grid == null) { grid = FindObjectOfType <NetworkedGridMenu>(); } grid.UpdateDescription(); }
public DoublyLinkedListNode(NetworkedUnit item, DoublyLinkedListNode prev = null, DoublyLinkedListNode forward = null) { _item = item; this.prev = prev; this.forward = forward; }
public void TwistBoard(GameObject twistLoc) { if (gridElement.northNeighbor && gridElement.eastNeighbor && gridElement.southNeighbor && gridElement.westNeighbor) { for (int i = 0; i < rotationAmount; ++i) { List <GameObject> neighbors = new List <GameObject>(); #region DisconnectWalls if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor) { gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().southWall = false; gridElement.northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().southWall = false; gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().southWall = false; } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor) { gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().westWall = false; gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().westWall = false; gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().westWall = false; } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor) { gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().northWall = false; gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().northWall = false; gridElement.southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().northWall = false; } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor) { gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().eastWall = false; gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().eastWall = false; gridElement.westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().eastWall = false; } #endregion #region Rotate Tiles gridElement.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.northNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.eastNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.southNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.westNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); #endregion #region Rotate Pieces if (gridElement.piece) { gridElement.piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.piece); } if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.northNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.northNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.southNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.southNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.westNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.westNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().piece); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().piece) { gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().piece.transform.RotateAround(gridElement.transform.position, Vector3.back, 90); neighbors.Add(gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().piece); } #endregion #region Fix Neighbors gridElement.FindNeighbors(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor) { gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor) { gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor) { gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor) { gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().FindNeighbors(); } #endregion #region FixWalls //this needs to correctly update neighbors too. UpdateWalls(gridElement); UpdateWalls(gridElement.northNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.southNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.westNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>()); UpdateWalls(gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>()); #endregion #region FixWallSprites gridElement.UpdateWalls(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor) { gridElement.northNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor) { gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor) { gridElement.southNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor) { gridElement.westNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); gridElement.westNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().UpdateWalls(); } #endregion #region Fix Piece Rotation and Position if (gridElement.piece) { UpdateRotation(gridElement.piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.northNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.southNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.westNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.northNeighbor.GetComponent <NetworkedGridElement>().westNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.eastNeighbor.GetComponent <NetworkedGridElement>().northNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.southNeighbor.GetComponent <NetworkedGridElement>().eastNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } if (gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().piece) { UpdateRotation(gridElement.westNeighbor.GetComponent <NetworkedGridElement>().southNeighbor.GetComponent <NetworkedGridElement>().piece.GetComponent <NetworkedGamePiece>()); } #endregion #region Fix Grid Attributes and Colors UpdateGridAttributes(); #endregion #region Fix Flag if carried foreach (GameObject neighbor in neighbors) { NetworkedUnit neighborNetworkedUnit = neighbor.GetComponent <NetworkedUnit>(); if (neighborNetworkedUnit && neighborNetworkedUnit.flag) { Vector3 flagPosn = neighbor.transform.position; flagPosn.z = neighborNetworkedUnit.flag.transform.position.z; neighborNetworkedUnit.flag.transform.position = flagPosn; } } #endregion } } GetComponent <AudioSource>().clip = act; GetComponent <AudioSource>().Play(); }