[FIX] fix users not being sent with lobbies

This commit is contained in:
Sem van der Hoeven
2020-10-21 19:35:52 +02:00
parent 76cd392525
commit 24701f8bb3
7 changed files with 42 additions and 5 deletions

View File

@@ -99,6 +99,7 @@ namespace Client
switch (lobbyIdentifier)
{
case LobbyIdentifier.LIST:
Debug.WriteLine("got lobbies list");
Lobbies = JSONConvert.GetLobbiesFromMessage(payload);
OnLobbiesListReceived?.Invoke();
break;

View File

@@ -72,13 +72,25 @@ namespace Client
private void updateLobbies()
{
Debug.WriteLine("updating lobbies...");
Lobby[] lobbiesArr = client.Lobbies;
Application.Current.Dispatcher.Invoke(delegate
{
foreach (Lobby lobby in lobbiesArr)
for (int i = 0; i < lobbiesArr.Length; i++)
{
_lobbies.Add(lobby);
Lobby lobby = lobbiesArr[i];
Debug.WriteLine(lobby.PlayersIn);
if (i < _lobbies.Count && _lobbies[i].ID == lobby.ID)
{
_lobbies[i].Set(lobby);
} else
{
_lobbies.Add(lobbiesArr[i]);
}
}
});
}

View File

@@ -149,11 +149,13 @@ namespace Server.Models
Lobby created = ServerCommunication.INSTANCE.HostForLobby(this.User);
Debug.WriteLine("[SERVERCLIENT] created lobby");
sendMessage(JSONConvert.ConstructLobbyHostCreatedMessage(created));
sendMessage(JSONConvert.ConstructLobbyListMessage(ServerCommunication.INSTANCE.lobbies.ToArray()));
break;
case LobbyIdentifier.JOIN:
int id = JSONConvert.GetLobbyID(payload);
ServerCommunication.INSTANCE.JoinLobby(this.User,id);
sendMessage(JSONConvert.ConstructLobbyJoinSuccessMessage());
sendMessage(JSONConvert.ConstructLobbyListMessage(ServerCommunication.INSTANCE.lobbies.ToArray()));
break;
}
}

View File

@@ -129,6 +129,7 @@ namespace Server.Models
{
bool succ;
l.AddUser(user, out succ);
Debug.WriteLine("[SERVERCOMM] added user to lobby, now contains " + l.PlayersIn);
if (!succ)
{
// TODO send lobby full message

View File

@@ -110,8 +110,14 @@ namespace SharedClientServer
{
dynamic payload = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json));
JArray lobbiesArray = payload.lobbies;
Debug.WriteLine(lobbiesArray.ToString());
return lobbiesArray.ToObject<Lobby[]>();
Debug.WriteLine("[JSONCONVERT] got lobbies from message" + lobbiesArray.ToString());
Lobby[] lobbiesTemp = lobbiesArray.ToObject<Lobby[]>();
Debug.WriteLine("lobbies in array: ");
foreach (Lobby l in lobbiesTemp)
{
Debug.WriteLine("players: " + l.PlayersIn);
}
return lobbiesTemp;
}
public static int GetLobbyID(byte[] json)

View File

@@ -68,12 +68,25 @@ namespace Client
set { _playersIn = value; }
}
public void Set(Lobby lobby)
{
this._id = lobby._id;
this._users = lobby._users;
this._maxPlayers = lobby._maxPlayers;
}
public int MaxPlayers
{
get { return _maxPlayers; }
set { _maxPlayers = value; }
}
public List<User> Users
{
get { return _users; }
set { _users = value; }
}
}
}

View File

@@ -1,4 +1,5 @@
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
@@ -10,6 +11,7 @@ namespace SharedClientServer
private int _score;
private bool _host;
[JsonConstructor]
public User(string username, int score, bool host)
{
_username = username;