proper enums for message received, callback for getrooms
parent
d186dfdf9b
commit
837696ddca
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
|
@ -26,6 +27,14 @@ namespace VelNet
|
||||||
MESSAGE_GROUP = 5,
|
MESSAGE_GROUP = 5,
|
||||||
MESSAGE_SETGROUP = 6
|
MESSAGE_SETGROUP = 6
|
||||||
};
|
};
|
||||||
|
public enum MessageReceiveType
|
||||||
|
{
|
||||||
|
MESSAGE_LOGIN = 0,
|
||||||
|
MESSAGE_GETROOMS = 1,
|
||||||
|
MESSAGE_JOINROOM = 2,
|
||||||
|
MESSAGE_DATA = 3,
|
||||||
|
MESSAGE_MASTER_CLIENT = 4,
|
||||||
|
};
|
||||||
|
|
||||||
public enum MessageType : byte
|
public enum MessageType : byte
|
||||||
{
|
{
|
||||||
|
|
@ -106,18 +115,14 @@ namespace VelNet
|
||||||
public static bool InRoom => LocalPlayer != null && LocalPlayer.room != "-1" && LocalPlayer.room != "";
|
public static bool InRoom => LocalPlayer != null && LocalPlayer.room != "-1" && LocalPlayer.room != "";
|
||||||
public static string Room => LocalPlayer?.room;
|
public static string Room => LocalPlayer?.room;
|
||||||
|
|
||||||
|
public static List<VelNetPlayer> Players => instance.players.Values.ToList();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The player count in this room.
|
/// The player count in this room.
|
||||||
/// -1 if not in a room.
|
/// -1 if not in a room.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int PlayerCount => instance.players.Count;
|
public static int PlayerCount => instance.players.Count;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The player count in all rooms.
|
|
||||||
/// Will include players connected to the server but not in a room?
|
|
||||||
/// </summary>
|
|
||||||
public static int PlayerCountInAllRooms => PlayerCount; // TODO hook up to actual player count
|
|
||||||
|
|
||||||
public static bool IsConnected => instance != null && instance.connected && instance.udpConnected;
|
public static bool IsConnected => instance != null && instance.connected && instance.udpConnected;
|
||||||
|
|
||||||
//this is for sending udp packets
|
//this is for sending udp packets
|
||||||
|
|
@ -538,12 +543,12 @@ namespace VelNet
|
||||||
{
|
{
|
||||||
|
|
||||||
//read a byte
|
//read a byte
|
||||||
MessageSendType type = (MessageSendType)stream.ReadByte();
|
MessageReceiveType type = (MessageReceiveType)stream.ReadByte();
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
//login
|
//login
|
||||||
case MessageSendType.MESSAGE_LOGIN:
|
case MessageReceiveType.MESSAGE_LOGIN:
|
||||||
{
|
{
|
||||||
LoginMessage m = new LoginMessage();
|
LoginMessage m = new LoginMessage();
|
||||||
m.userId = GetIntFromBytes(ReadExact(stream, 4)); //not really the sender...
|
m.userId = GetIntFromBytes(ReadExact(stream, 4)); //not really the sender...
|
||||||
|
|
@ -551,7 +556,7 @@ namespace VelNet
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//rooms
|
//rooms
|
||||||
case MessageSendType.MESSAGE_GETROOMS:
|
case MessageReceiveType.MESSAGE_GETROOMS:
|
||||||
{
|
{
|
||||||
RoomsMessage m = new RoomsMessage();
|
RoomsMessage m = new RoomsMessage();
|
||||||
m.rooms = new List<ListedRoom>();
|
m.rooms = new List<ListedRoom>();
|
||||||
|
|
@ -577,7 +582,7 @@ namespace VelNet
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//joined
|
//joined
|
||||||
case MessageSendType.MESSAGE_JOINROOM:
|
case MessageReceiveType.MESSAGE_JOINROOM:
|
||||||
{
|
{
|
||||||
JoinMessage m = new JoinMessage();
|
JoinMessage m = new JoinMessage();
|
||||||
m.userId = GetIntFromBytes(ReadExact(stream, 4));
|
m.userId = GetIntFromBytes(ReadExact(stream, 4));
|
||||||
|
|
@ -588,10 +593,7 @@ namespace VelNet
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//data
|
//data
|
||||||
case MessageSendType.MESSAGE_OTHERS:
|
case MessageReceiveType.MESSAGE_DATA:
|
||||||
// case MessageSendType.MESSAGE_OTHERS_ORDERED:
|
|
||||||
// case MessageSendType.MESSAGE_ALL:
|
|
||||||
// case MessageSendType.MESSAGE_ALL_ORDERED:
|
|
||||||
{
|
{
|
||||||
DataMessage m = new DataMessage();
|
DataMessage m = new DataMessage();
|
||||||
m.senderId = GetIntFromBytes(ReadExact(stream, 4));
|
m.senderId = GetIntFromBytes(ReadExact(stream, 4));
|
||||||
|
|
@ -601,7 +603,7 @@ namespace VelNet
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//new master
|
//new master
|
||||||
case MessageSendType.MESSAGE_ALL:
|
case MessageReceiveType.MESSAGE_MASTER_CLIENT:
|
||||||
{
|
{
|
||||||
ChangeMasterMessage m = new ChangeMasterMessage();
|
ChangeMasterMessage m = new ChangeMasterMessage();
|
||||||
m.masterId = GetIntFromBytes(ReadExact(stream, 4)); //sender is the new master
|
m.masterId = GetIntFromBytes(ReadExact(stream, 4)); //sender is the new master
|
||||||
|
|
@ -658,12 +660,12 @@ namespace VelNet
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
int numReceived = udpSocket.Receive(buffer);
|
int numReceived = udpSocket.Receive(buffer);
|
||||||
switch (buffer[0])
|
switch ((MessageReceiveType)buffer[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case MessageReceiveType.MESSAGE_LOGIN:
|
||||||
Debug.Log("UDP connected");
|
Debug.Log("UDP connected");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case MessageReceiveType.MESSAGE_DATA:
|
||||||
{
|
{
|
||||||
DataMessage m = new DataMessage();
|
DataMessage m = new DataMessage();
|
||||||
//we should get the sender address
|
//we should get the sender address
|
||||||
|
|
@ -745,9 +747,20 @@ namespace VelNet
|
||||||
SendTcpMessage(stream.ToArray());
|
SendTcpMessage(stream.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void GetRooms()
|
public static void GetRooms(Action<RoomsMessage> callback = null)
|
||||||
{
|
{
|
||||||
SendTcpMessage(new byte[] { 1 }); //very simple message
|
SendTcpMessage(new byte[] { 1 }); // very simple message
|
||||||
|
|
||||||
|
if (callback != null)
|
||||||
|
{
|
||||||
|
RoomsReceived += RoomsReceivedCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RoomsReceivedCallback(RoomsMessage msg)
|
||||||
|
{
|
||||||
|
callback(msg);
|
||||||
|
RoomsReceived -= RoomsReceivedCallback;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace VelNet
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For instantiation
|
/// For instantiation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int lastObjectId;
|
internal int lastObjectId;
|
||||||
|
|
||||||
|
|
||||||
private bool isMaster;
|
private bool isMaster;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue