private void Start() { chatInput.TextEnterEvent += SendChatText; _connection = new Connection((connection, message) => { switch (message.Type) { case MessageType.Register: break; case MessageType.ConnectData: var connectData = message.ConnectData; _id = connectData.Id; _remoteEp = new IPEndPoint(IPAddress.Parse(ServerIpString), connectData.ServerPort); break; case MessageType.Text: AddChatText(message.String); break; case MessageType.Vector2: break; case MessageType.Int: break; case MessageType.FieldPositions: lock (_fieldPositionsLock) { _fieldPositions = message.FieldPositions; } break; case MessageType.Ping: _pingStart = DateTime.Now; break; case MessageType.Info: _serverInfo = message.ServerInfo; break; default: throw new ArgumentOutOfRangeException(); } }, new IPEndPoint(IPAddress.Parse(ServerIpString), ServerMainPort)); StartCoroutine(RequestConn()); StartCoroutine(CreateConn()); StartCoroutine(DebugText()); StartCoroutine(ChatText()); StartCoroutine(CheckFieldPositions()); StartCoroutine(CheckPing()); StartCoroutine(CheckInfo()); }
// Use this for initialization void Start() { TeamManager[] teams = FindObjectsOfType <TeamManager>(); otherTeam = name.Equals(teams[0].gameObject.name) ? teams[1] : teams[0]; print("This team:" + name); print("Other team:" + teams[0].gameObject.name); //check role of other team //if undefined, default to fielding if (otherTeam.role == TeamRole.fielding) { role = TeamRole.batting; fieldPositions = GameObject.Find("Batting Positions").transform; } else { fieldPositions = GameObject.Find("Fielding Positions").transform; } for (int i = 0; i < maxPlayers; i++) { //Instantiate player prefab GameObject newPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity, this.transform); newPlayer.name = "Player " + (i + 1); //Loop through field positions until empty position is found for (int c = 0; c < fieldPositions.childCount; c++) { FieldPositions position = fieldPositions.GetChild(c).GetComponent <FieldPositions>(); //If empty position is found, move player to position location and break; if (!position.positionOccupied) { print("Adding player to position: " + position.gameObject.name); //If the posisition is a batter, create a bat object and attach it to the player's hand if (position.name.Equals("Batting")) { newPlayer.name = "Batting"; GameObject hand = null; //Gets all of the children objects of the player Transform[] children = GetComponentsInChildren <Transform>(); foreach (Transform child in children) { if (child.name.Equals("mixamorig:RightHand")) { //Gets the right hand object hand = child.gameObject; } } position.isBatter = true; //Creates a bat and places in the right hand of the player GameObject bat = Instantiate(baseballBat, hand.transform.position, hand.transform.rotation); //Attaches the bat so it will move with the player's hand bat.transform.parent = hand.transform.transform.parent; } if (position.name.Equals("Pitcher")) { newPlayer.name = position.name; } position.positionOccupied = true; newPlayer.transform.position = position.transform.position; break; } } //Assign new player to empty position } }
public void VerifyCustomFieldPosition(FieldPositions fieldPosition, int fieldId) { switch(fieldPosition) { case FieldPositions.Below: UIUtil.DefaultProvider.VerifyElementDisplay(string.Format("//*[@for='{0}']/following-sibling::*[@id='{0}']", fieldId.ToString()), true, LocateBy.XPath); break; case FieldPositions.Above: UIUtil.DefaultProvider.VerifyElementDisplay(string.Format("//*[@id='{0}']/following-sibling::*[@for='{0}']", fieldId.ToString()), true, LocateBy.XPath); break; case FieldPositions.Left: UIUtil.DefaultProvider.VerifyElementDisplay(string.Format("//*[@id='{0}']/../following-sibling::*//*[@for='{0}']", fieldId.ToString()), true, LocateBy.XPath); break; case FieldPositions.Right: UIUtil.DefaultProvider.VerifyElementDisplay(string.Format("//*[@for='{0}']/../following-sibling::*//*[@id='{0}']", fieldId.ToString()), true, LocateBy.XPath); break; default: break; } }
private IEnumerator CheckFieldPositions() { while (true) { while (_fieldPositions == null || !_fieldPositions.Any()) { yield return(null); } lock (_fieldPositionsLock) { var food = new Dictionary <Vector2, GameObject>(); foreach (var f in _food) { food.Add(f.transform.position, f); } foreach (var fieldPosition in _fieldPositions) { switch (fieldPosition.Type) { case FieldPositionType.Player: if (fieldPosition.Id == _id) { Player.transform.position = fieldPosition.Position; } if (players.ContainsKey(fieldPosition.Id)) { players[fieldPosition.Id].transform.position = fieldPosition.Position; } else { var playerObject = Instantiate(CubePref, fieldPosition.Position, Quaternion.identity); players.Add(fieldPosition.Id, playerObject); } break; case FieldPositionType.Food: if (!food.ContainsKey(fieldPosition.Position)) { var fo = Instantiate(FoodPref, fieldPosition.Position, Quaternion.identity); _food.Add(fo); food.Add(fieldPosition.Position, fo); } break; default: throw new ArgumentOutOfRangeException(); } } foreach (var missedId in players.Keys.Except(_fieldPositions.Select(fp => fp.Id).ToArray()).ToArray()) { Destroy(players[missedId]); players.Remove(missedId); } foreach (var missedPos in food.Keys.Except(_fieldPositions.Select(fp => fp.Position).ToArray()).ToArray()) { _food.Remove(food[missedPos]); Destroy(food[missedPos]); } _fieldPositions = null; } } }