Exemplo n.º 1
0
    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());
    }
Exemplo n.º 2
0
    // 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;
     }
 }
Exemplo n.º 4
0
    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;
            }
        }
    }