public void AddElement(DiscoveryResult discoveryResult) { ServerListElement serverListElement = GameObject.Instantiate(serverListElementPrefab, transform).GetComponent <ServerListElement>(); serverListElements.Add(serverListElement); serverListElement.Init(discoveryResult); UpdateColumnWidths(); }
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); * };*/ } }
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); }; }