} // end method CheckAdjacentRoad public void AddRoad(string pHexPrefabName, string pSideName) { bool foundHex = false; bool validRoad = true; string outputString; string roadName; Vector3 roadPosition = new Vector3(-100f, 100f, 0f); Vector3 roadOffset; float roadRotation = 0f; RoadDataScript tempRoadData; roadName = "Road" + (roadList.Count + 1).ToString(); switch (pSideName) { case "LeftSide": roadOffset = new Vector3(-0.5f, 0f, -0.1f); roadRotation = 0f; break; case "RightSide": roadOffset = new Vector3(0.5f, 0f, -0.1f); roadRotation = 0f; break; case "ULSide": roadOffset = new Vector3(-0.25f, 0.4296876f, -0.1f); roadRotation = 120f; break; case "URSide": roadOffset = new Vector3(0.25f, 0.4296876f, -0.1f); roadRotation = 60f; break; case "LLSide": roadOffset = new Vector3(-0.25f, -0.4296876f, -0.1f); roadRotation = 60f; break; case "LRSide": roadOffset = new Vector3(0.25f, -0.4296876f, -0.1f); roadRotation = 120f; break; default: validRoad = false; roadOffset = new Vector3(-100f, 100f, 0f); roadRotation = 0f; outputString = "GameControlScript method AddRoad was passed " + "the following invalid side name: " + pSideName; Debug.Log(outputString); break; } // end switch if (!validRoad) { HelperScript.enableRoads = true; return; } foreach (HexDataScript hexData in hexList) { if (!foundHex && hexData.hexDataName == pHexPrefabName) { Vector3 newPosition = hexData.hexDataPosition + roadOffset; if (!RoadPositionEmpty(newPosition)) { HelperScript.enableRoads = true; return; } else { GameObject newRoad = (GameObject)Instantiate(roadPrefab, newPosition, Quaternion.Euler(0, 0, roadRotation)); newRoad.name = roadName; newRoad.GetComponent <RoadPrefabData>().SetRoadName(newRoad.name); newRoad.GetComponent <RoadPrefabData>().SetRoadID(roadList.Count + 1); newRoad.GetComponent <RoadPrefabData>().SetRoadColor(playerList[0].playerColor); roadPosition = newRoad.transform.position; foundHex = true; } } } tempRoadData = new RoadDataScript(); tempRoadData.roadDataName = roadName; tempRoadData.roadDataID = roadList.Count + 1; tempRoadData.roadDataColor = playerList[0].playerColor; tempRoadData.roadDataPosition = roadPosition; tempRoadData.roadDataPlayer = playerList[0].playerName; tempRoadData.roadHexNeighbors = CalcRoadHexNeighbors(roadPosition, roadRotation); roadList.Add(tempRoadData); tempRoadData.LogRoadData(); HelperScript.enableRoads = false; // turn off road adding } // end method AddRoad
public void AddRoad(string pHexPrefabName, string pSideName) { bool foundHex = false; bool validRoad = true; string outputString; string roadName; Vector3 roadPosition = new Vector3(-100f, 100f, 0f); Vector3 roadOffset; float roadRotation = 0f; RoadDataScript tempRoadData; roadName = "Road" + (roadList.Count + 1).ToString(); switch (pSideName) { case "LeftSide": roadOffset = new Vector3(-0.5f, 0f, -0.1f); roadRotation = 0f; break; case "RightSide": roadOffset = new Vector3(0.5f, 0f, -0.1f); roadRotation = 0f; break; case "ULSide": roadOffset = new Vector3(-0.25f, 0.4296876f, -0.1f); roadRotation = 120f; break; case "URSide": roadOffset = new Vector3(0.25f, 0.4296876f, -0.1f); roadRotation = 60f; break; case "LLSide": roadOffset = new Vector3(-0.25f, -0.4296876f, -0.1f); roadRotation = 60f; break; case "LRSide": roadOffset = new Vector3(0.25f, -0.4296876f, -0.1f); roadRotation = 120f; break; default: validRoad = false; roadOffset = new Vector3(-100f, 100f, 0f); roadRotation = 0f; outputString = "GameControlScript method AddRoad was passed " + "the following invalid side name: " + pSideName; Debug.Log(outputString); break; } // end switch if (!validRoad) { HelperScript.enableRoads = true; return; } foreach (HexDataScript hexData in hexList) { if (!foundHex && hexData.hexDataName == pHexPrefabName) { Vector3 newPosition = hexData.hexDataPosition + roadOffset; if (!RoadPositionEmpty(newPosition)) { HelperScript.enableRoads = true; return; } else { GameObject newRoad = (GameObject)Instantiate(roadPrefab, newPosition, Quaternion.Euler(0, 0, roadRotation)); newRoad.name = roadName; newRoad.GetComponent<RoadPrefabData>().SetRoadName(newRoad.name); newRoad.GetComponent<RoadPrefabData>().SetRoadID(roadList.Count + 1); newRoad.GetComponent<RoadPrefabData>().SetRoadColor(playerList[0].playerColor); roadPosition = newRoad.transform.position; foundHex = true; } } } tempRoadData = new RoadDataScript(); tempRoadData.roadDataName = roadName; tempRoadData.roadDataID = roadList.Count + 1; tempRoadData.roadDataColor = playerList[0].playerColor; tempRoadData.roadDataPosition = roadPosition; tempRoadData.roadDataPlayer = playerList[0].playerName; tempRoadData.roadHexNeighbors = CalcRoadHexNeighbors(roadPosition, roadRotation); roadList.Add(tempRoadData); tempRoadData.LogRoadData(); HelperScript.enableRoads = false; // turn off road adding }