private void SynHandleRoomCommand(string[] number, int startIndex, int count)
    {
        int msgType = int.Parse(number[startIndex++]);
        int player  = int.Parse(number[startIndex++]);

        count++;
        if (msgType == 0)
        {
            RoomMenuLogic._instance.ReceiveNewIncomer(player);
        }
        else if (msgType == 1)
        {
            RoomMenuLogic._instance.SetPlayerReady(player);
        }
        else if (msgType == 2)
        {
            int character = int.Parse(number[startIndex++]);
            RoomMenuLogic._instance.SetPlayerCharacter(player, character);
        }
        else if (msgType == 3)
        {
            int map = int.Parse(number[startIndex++]);
            RoomMenuLogic._instance.SetMap(map);
        }
        else if (msgType == 4)
        {
            RoomMenuLogic._instance.SetPlayerQuit(player);
        }
        else if (msgType == 5)
        {
            RoomMenuLogic._instance.SetPlayerNoReady(player);
        }
        else if (msgType == 6)
        {
            Vector2 positionToSet = new Vector2(float.Parse(number[startIndex++]), float.Parse(number[startIndex++]));
            int     dirCount      = int.Parse(number[startIndex++]);
            switch (player)
            {
            case 1:
                pm1.SetNextPosition(positionToSet);
                pm1.SetDirection(dirCount);
                break;

            case 2:
                pm2.SetNextPosition(positionToSet);
                pm2.SetDirection(dirCount);
                break;

            case 3:
                pm3.SetNextPosition(positionToSet);
                pm3.SetDirection(dirCount);
                break;
            }
        }
        else if (msgType == 7)
        {
            Vector2 positionToSet = new Vector2(float.Parse(number[startIndex++]), float.Parse(number[startIndex++]));

            switch (player)
            {
            case 1:
                pa1.SetFireCommand(positionToSet);
                break;

            case 2:
                pa2.SetFireCommand(positionToSet);
                break;

            case 3:
                pa3.SetFireCommand(positionToSet);
                break;
            }
        }
        else if (msgType == 8)
        {
            float hpChange = float.Parse(number[startIndex++]);

            switch (player)
            {
            case 1:
                ps1.hpChange = hpChange;
                break;

            case 2:
                ps2.hpChange = hpChange;
                break;

            case 3:
                ps3.hpChange = hpChange;
                break;
            }
        }
        else if (msgType == 9)
        {
            PlayerStatusControl_Level3._instance.playerReady[player - 1] = true;
        }
        else if (msgType == 10)
        {
            switch (PlayerStatusControl_Level3._instance.playerIdentity)
            {
            case 1:
                pm1.starTeleport = true;
                pm1.starRemain   = 6f;
                break;

            case 2:
                pm2.starTeleport = true;
                pm2.starRemain   = 6f;
                break;

            case 3:
                pm3.starTeleport = true;
                pm3.starRemain   = 6f;
                break;
            }
        }

        /*
         * else if(msgType == 11)
         * {
         *      Vector2 positionToSet = new Vector2(float.Parse(number[startIndex++]),float.Parse(number[startIndex++]));
         *      int dirCount = int.Parse(number[startIndex++]);
         *      int fire = int.Parse(number[startIndex++]);
         *      Vector2 firePositionToSet = new Vector2(float.Parse(number[startIndex++]),float.Parse(number[startIndex++]));
         *      float hp = float.Parse(number[startIndex++]);
         *      int teleport = int.Parse(number[startIndex]);
         *      switch(player)
         *      {
         *              case 1:
         *                      pm1.SetNextPosition(positionToSet);
         *                      pm1.SetDirection(dirCount);
         *                      break;
         *              case 2:
         *                      pm2.SetNextPosition(positionToSet);
         *                      pm2.SetDirection(dirCount);
         *                      break;
         *              case 3:
         *                      pm3.SetNextPosition(positionToSet);
         *                      pm3.SetDirection(dirCount);
         *                      break;
         *      }
         *      if(fire > 0)
         *      {
         *              switch(player)
         *              {
         *                      case 1:
         *                              pa1.SetFireCommand(firePositionToSet);
         *                              break;
         *                      case 2:
         *                              pa2.SetFireCommand(firePositionToSet);
         *                              break;
         *                      case 3:
         *                              pa3.SetFireCommand(firePositionToSet);
         *                              break;
         *              }
         *      }
         *      switch(player)
         *      {
         *              case 1:
         *                      ps1.UpdateHp(hp);
         *                      break;
         *              case 2:
         *                      ps2.UpdateHp(hp);
         *                      break;
         *              case 3:
         *                      ps3.UpdateHp(hp);
         *                      break;
         *      }
         *      if(teleport > 0)
         *      {
         *              switch(PlayerStatusControl_Level3._instance.playerIdentity)
         *              {
         *                      case 1:
         *                              pm1.starTeleport = true;
         *                              pm1.starRemain = 6f;
         *                              break;
         *                      case 2:
         *                              pm2.starTeleport = true;
         *                              pm2.starRemain = 6f;
         *                              break;
         *                      case 3:
         *                              pm3.starTeleport = true;
         *                              pm3.starRemain = 6f;
         *                              break;
         *              }
         *      }
         *
         * }
         */
        else if (msgType == 999)
        {
            RoomMenuLogic._instance.gameStart = true;
        }

        if (startIndex < number.Length && count < 3)
        {
            SynHandleRoomCommand(number, startIndex, count);
        }
    }
    void HandleSynMessage(string[] number, int startIndex)
    {
        int msgType = int.Parse(number[startIndex++]);
        int player  = int.Parse(number[startIndex++]);

        if (msgType == 0)
        {
            Vector2 positionToSet = new Vector2(float.Parse(number[startIndex++]), float.Parse(number[startIndex++]));
            int     dirCount      = int.Parse(number[startIndex++]);
            switch (player)
            {
            case 1:
                if (PlayerStatusControl_Level3._instance.playerIdentity != 1)
                {
                    pm1.SetNextPosition(positionToSet);
                    pm1.SetDirection(dirCount);
                }
                break;

            case 2:
                if (PlayerStatusControl_Level3._instance.playerIdentity != 2)
                {
                    pm2.SetNextPosition(positionToSet);
                    pm2.SetDirection(dirCount);
                }
                break;

            case 3:
                if (PlayerStatusControl_Level3._instance.playerIdentity != 3)
                {
                    pm3.SetNextPosition(positionToSet);
                    pm3.SetDirection(dirCount);
                }
                break;
            }
            if (number.Length > startIndex)
            {
                HandleSynMessage(number, startIndex);
            }
        }
        else if (msgType == 1)
        {
            Vector2 positionToSet = new Vector2(float.Parse(number[startIndex++]), float.Parse(number[startIndex++]));

            switch (player)
            {
            case 1:
                pa1.SetFireCommand(positionToSet);
                break;

            case 2:
                pa2.SetFireCommand(positionToSet);
                break;

            case 3:
                pa3.SetFireCommand(positionToSet);
                break;
            }
            if (number.Length > startIndex)
            {
                HandleSynMessage(number, startIndex);
            }
        }
        else if (msgType == 2)
        {
            float hpChange = float.Parse(number[startIndex++]);

            switch (player)
            {
            case 1:
                ps1.hpChange = hpChange;
                break;

            case 2:
                ps2.hpChange = hpChange;
                break;

            case 3:
                ps3.hpChange = hpChange;
                break;
            }
            if (number.Length > startIndex)
            {
                HandleSynMessage(number, startIndex);
            }
        }
    }