public void IdentifyMovableNodes(TurnCharacter ch) { CharacterGridMovement gm = ch.CharGO.GetComponent <CharacterGridMovement>(); GridMovableNode currentN = gm.CurrentNode; gm.MovableNodes.Add(currentN); foreach (GridMovableNode n in currentN.AllNeighborNodes) { if (!CheckIfNodeOccupied(n)) { if (!gm.MovableNodes.Contains(n)) { gm.MovableNodes.Add(n); } for (int i = 1; i < this.moveDistance; i++) { foreach (GridMovableNode ni in n.AllNeighborNodes) { if (!gm.MovableNodes.Contains(ni)) { gm.MovableNodes.Add(ni); } } } } } AssignNodeMatsFromCharacter(gm); }
private void StartPlaceCharacters() { turnMgr = TurnManager.Instance; turnMgr.Init(); turnMgr.AssignGridManager(this); ActiveCharsGO = new List <GameObject>(); AllCharsGO = new List <GameObject>(); bool teamOne = true; int charNum = 1; // This list, populated manually in inspector, determines how many dinos to spawn and what their positions will be. foreach (Vector2Int pos in charStartingPositions) { GameObject currentCharGO; TurnCharacter currentChar; // Spawn a dino on a team, alternating which team's dino to spawn with a bool. Also create an abstracted "character" in the turn manager if (teamOne) { currentCharGO = Instantiate(characterOnePrefab, GetNodeContainer(GetNode(pos.x, pos.y)).gameObject.transform.position, Quaternion.identity); currentChar = turnMgr.CreateActiveCharacter(1, currentCharGO); } else { currentCharGO = Instantiate(characterTwoPrefab, GetNodeContainer(GetNode(pos.x, pos.y)).gameObject.transform.position, Quaternion.identity); currentChar = turnMgr.CreateActiveCharacter(2, currentCharGO); } CharacterGridMovement currentCharGridMov = currentCharGO.GetComponent <CharacterGridMovement>(); currentCharGridMov.GridPosX = pos.x; currentCharGridMov.GridPosZ = pos.y; currentCharGridMov.SetCurrentNode(); currentCharGO.GetComponent <UnityCharacterTurnInfo>().CharacterNumber = charNum; if (!teamOne) { charNum++; // Increment character number after we've given the current number to both sides } ActiveCharsGO.Add(currentCharGO); // Add to list for public reference AllCharsGO.Add(currentCharGO); teamOne = !teamOne; // Alternate teams } // Get the ball rolling and start index 0's turn after we're done building the lists turnMgr.StartTurnByNumber(0); }
public void AssignNodeMatsFromCharacter(CharacterGridMovement gm) { foreach (GridMovableNode na in nodeList) { if (gm.MovableNodes.Contains(na)) { GetNodeContainer(na).SetVisualBarriersMaterial(reachableMaterial); } else { GetNodeContainer(na).SetVisualBarriersMaterial(unreachableMaterial); } } }