예제 #1
0
    public void AddElement(DiscoveryResult discoveryResult)
    {
        ServerListElement serverListElement = GameObject.Instantiate(serverListElementPrefab, transform).GetComponent <ServerListElement>();

        serverListElements.Add(serverListElement);
        serverListElement.Init(discoveryResult);

        UpdateColumnWidths();
    }
예제 #2
0
    void OnServerList(object sender, List <ServerListElement> list)
    {
        Debug.Log("Server List");
        //authSection.Visibility = Visibility.Hidden;
        //serverListSection.Visibility = Visibility.Visible;

        // Sort this list first.
        list = list.OrderByDescending(a => a.ServerListID).ThenBy(b => b.Status).ThenByDescending(c => c.PlayersOnline).ThenBy(d => d.Longname).ToList();

        //var i = 0;

        foreach (var server in list)
        {
            //Debug.Log(server.Longname + " - " + server.WorldIP);
            if (server.Longname.Equals(ServerToJoin))
            {
                serverSelected = server;
                Debug.Log("Joining " + ServerToJoin + server);

                /*if (serverSelected.WorldIP.Equals("127.0.0.1")) {
                 *  Debug.Log("Changing world IP since it's localhost");
                 *  serverSelected.WorldIP = "192.168.1.100";
                 * }*/
                login.Play(serverSelected);
            }
            //Debug.Log(server.Longname);

            /*serverGrid.RowDefinitions.Add(new StripDefinition(StripType.Fixed, 25));
             * var namefield = new TextBlock { Text = server.Longname, Font = serverNameHeader.Font, TextSize = serverNameHeader.TextSize, TextColor = serverNameHeader.TextColor };
             * namefield.SetGridColumn(0);
             * namefield.SetGridRow(i);
             * serverGrid.Children.Add(namefield);
             * var statusfield = new TextBlock { Text = server.Status == ServerStatus.Up ? server.PlayersOnline.ToString() : "Down", Font = serverNameHeader.Font, TextSize = serverNameHeader.TextSize, TextColor = serverNameHeader.TextColor };
             * statusfield.SetGridColumn(1);
             * statusfield.SetGridRow(i);
             * serverGrid.Children.Add(statusfield);
             * var serverButton = new Button { MouseOverImage = loginButton.MouseOverImage, NotPressedImage = loginButton.NotPressedImage, PressedImage = loginButton.PressedImage };
             * var buttonLabel = new TextBlock { Text = "Play", Font = serverNameHeader.Font, TextSize = 8, TextColor = serverNameHeader.TextColor, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center };
             * serverButton.Content = buttonLabel;
             * serverButton.SetGridColumn(2);
             * serverButton.SetGridRow(i++);
             * serverGrid.Children.Add(serverButton);
             * serverButton.Click += (s, e) => {
             *  ((Button)s).IsEnabled = false;
             *  Console.UnityEngine.Debug.Log($"Sending play request for {server.Longname}");
             *  login.Play(server);
             * };*/
        }
    }
예제 #3
0
        static void ConnectWorld(LoginStream ls, ServerListElement server)
        {
            WriteLine($"Selected {server}.  Connecting.");
            var worldStream = new WorldStream(server.WorldIP, 9000, ls.AccountID, ls.SessionKey);

            string charName = null;

            worldStream.CharacterList += (_, chars) => {
                WriteLine("Select a character:");
                WriteLine("0: Create a new character");
                chars.ForEach((@char, i) => WriteLine($"{i + 1}: {@char.Name} - Level {@char.Level}"));
                int ret;
                while (!int.TryParse(Input("Character number"), out ret) || ret < 0 || chars.Count < ret)
                {
                }
                if (ret == 0)
                {
                    CreateCharacter();
                }
                else
                {
                    worldStream.SendEnterWorld(new EnterWorld(charName = chars[ret - 1].Name, false, false));
                }
            };

            void CreateCharacter()
            {
                charName = Input("Name");
                worldStream.SendNameApproval(new NameApproval {
                    Name    = charName,
                    Class   = 3,
                    Race    = 1,
                    Unknown = 214
                });
            }

            worldStream.CharacterCreateNameApproval += (_, success) => {
                if (!success)
                {
                    WriteLine("Name not approved by server");
                    CreateCharacter();
                }
                else
                {
                    WriteLine("Name approved, creating");
                    worldStream.SendCharacterCreate(new CharCreate {
                        Class_          = 1,
                        Haircolor       = 255,
                        BeardColor      = 255,
                        Beard           = 255,
                        Gender          = 0,
                        Race            = 2,
                        StartZone       = 29,
                        HairStyle       = 255,
                        Deity           = 211,
                        STR             = 113,
                        STA             = 130,
                        AGI             = 87,
                        DEX             = 70,
                        WIS             = 70,
                        INT             = 60,
                        CHA             = 55,
                        Face            = 0,
                        EyeColor1       = 9,
                        EyeColor2       = 9,
                        DrakkinHeritage = 1,
                        DrakkinTattoo   = 0,
                        DrakkinDetails  = 0,
                        Tutorial        = 0
                    });
                }
            };

            worldStream.ZoneServer += (_, zs) => {
                WriteLine($"Got zone server at {zs.Host}:{zs.Port}.  Connecting");
                ConnectZone(charName, zs.Host, zs.Port);
            };
        }