Compare commits
17 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7f3921b163 | |
|
|
a885a394c0 | |
|
|
40d8710f37 | |
|
|
e4d89d821a | |
|
|
82a635ffa2 | |
|
|
da8167162a | |
|
|
cd0c8ca54d | |
|
|
cceee2b05a | |
|
|
a6cd2af2d0 | |
|
|
8aaf25d998 | |
|
|
76c8a3dc9a | |
|
|
33dd76ac5d | |
|
|
fbbe434809 | |
|
|
5f06a17ee3 | |
|
|
f217a3ad6c | |
|
|
9a791a0402 | |
|
|
099cccd2fb |
|
|
@ -2,7 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Guru
|
namespace DofLibrary
|
||||||
{
|
{
|
||||||
|
|
||||||
public class GameEventMgr
|
public class GameEventMgr
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ namespace DofLibrary
|
||||||
public IMessageSender sender { get; private set; } = new MessageSender();
|
public IMessageSender sender { get; private set; } = new MessageSender();
|
||||||
private IMessageReceiver _receiver;
|
private IMessageReceiver _receiver;
|
||||||
private bool _running;
|
private bool _running;
|
||||||
|
private int? _timeoutMillis;
|
||||||
|
|
||||||
public GameKcpClient(DotNetty.Unity.Level level = DotNetty.Unity.Level.ALL)
|
public GameKcpClient(DotNetty.Unity.Level level = DotNetty.Unity.Level.ALL)
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +55,8 @@ namespace DofLibrary
|
||||||
channelConfig.Crc32Check = false;
|
channelConfig.Crc32Check = false;
|
||||||
channelConfig.UseConvChannel = true;
|
channelConfig.UseConvChannel = true;
|
||||||
//channelConfig.Conv = UnityEngine.Random.Range(1, int.MaxValue);
|
//channelConfig.Conv = UnityEngine.Random.Range(1, int.MaxValue);
|
||||||
channelConfig.TimeoutMillis = 10000;
|
if(_timeoutMillis.HasValue)
|
||||||
|
channelConfig.TimeoutMillis = _timeoutMillis.Value;
|
||||||
|
|
||||||
_kcpClient = new KcpClient();
|
_kcpClient = new KcpClient();
|
||||||
_kcpClient.init(channelConfig);
|
_kcpClient.init(channelConfig);
|
||||||
|
|
@ -68,7 +70,7 @@ namespace DofLibrary
|
||||||
|
|
||||||
private void ProcessMessage(ServerMessage serverMessage)
|
private void ProcessMessage(ServerMessage serverMessage)
|
||||||
{
|
{
|
||||||
Debug.Log("[ProcessMessage]");
|
//Debug.Log("[ProcessMessage]");
|
||||||
if (serverMessage.PlayerEntered != null)
|
if (serverMessage.PlayerEntered != null)
|
||||||
{
|
{
|
||||||
//Debug.Log("[ProcessMessage]PlayerEntered");
|
//Debug.Log("[ProcessMessage]PlayerEntered");
|
||||||
|
|
@ -96,6 +98,11 @@ namespace DofLibrary
|
||||||
//Debug.Log("[ProcessMessage]GameFinish");
|
//Debug.Log("[ProcessMessage]GameFinish");
|
||||||
_receiver.OnGameFinish(serverMessage.GameFinish);
|
_receiver.OnGameFinish(serverMessage.GameFinish);
|
||||||
}
|
}
|
||||||
|
else if (serverMessage.Heartbeat != null)
|
||||||
|
{
|
||||||
|
//Debug.Log("[ProcessMessage]Heartbeat");
|
||||||
|
_receiver.OnHeartbeat(serverMessage.Heartbeat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -109,7 +116,7 @@ namespace DofLibrary
|
||||||
|
|
||||||
if (OnConnected != null)
|
if (OnConnected != null)
|
||||||
{
|
{
|
||||||
Loom.QueueOnMainThread(() =>
|
LoomUtil.QueueOnMainThread(() =>
|
||||||
{
|
{
|
||||||
OnConnected.Invoke();
|
OnConnected.Invoke();
|
||||||
});
|
});
|
||||||
|
|
@ -132,7 +139,7 @@ namespace DofLibrary
|
||||||
|
|
||||||
if (msg is ServerMessage server_msg)
|
if (msg is ServerMessage server_msg)
|
||||||
{
|
{
|
||||||
Loom.QueueOnMainThread(() =>
|
LoomUtil.QueueOnMainThread(() =>
|
||||||
{
|
{
|
||||||
ProcessMessage(server_msg);
|
ProcessMessage(server_msg);
|
||||||
});
|
});
|
||||||
|
|
@ -162,13 +169,18 @@ namespace DofLibrary
|
||||||
Debug.Log("[GameKcpClient]: Connection closed");
|
Debug.Log("[GameKcpClient]: Connection closed");
|
||||||
if (OnDisConnected != null)
|
if (OnDisConnected != null)
|
||||||
{
|
{
|
||||||
Loom.QueueOnMainThread(() =>
|
LoomUtil.QueueOnMainThread(() =>
|
||||||
{
|
{
|
||||||
OnDisConnected.Invoke();
|
OnDisConnected.Invoke();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTimeoutMillis(int timeoutMillis)
|
||||||
|
{
|
||||||
|
_timeoutMillis = timeoutMillis;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭 Client,应该在游戏结束时调用
|
/// 关闭 Client,应该在游戏结束时调用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -41,5 +41,10 @@ namespace DofLibrary
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="gameFinish">两个玩家的得分</param>
|
/// <param name="gameFinish">两个玩家的得分</param>
|
||||||
void OnGameFinish(GameFinish gameFinish);
|
void OnGameFinish(GameFinish gameFinish);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 心跳包
|
||||||
|
/// </summary>
|
||||||
|
void OnHeartbeat(Heartbeat heartbeat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,6 +56,11 @@ namespace DofLibrary
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void AllLevelEnd(float timeSpent);
|
void AllLevelEnd(float timeSpent);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发送 玩家中途离开房间 消息
|
||||||
|
/// </summary>
|
||||||
|
void PlayerLeave();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发送心跳包
|
/// 发送心跳包
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,17 @@ using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Guru
|
namespace DofLibrary
|
||||||
{
|
{
|
||||||
// Loom lets you easily run code on another thread and have that other thread run code on the main game thread when it needs to.
|
// Loom lets you easily run code on another thread and have that other thread run code on the main game thread when it needs to.
|
||||||
public class Loom : MonoBehaviour
|
public class LoomUtil : MonoBehaviour
|
||||||
{
|
{
|
||||||
public static int maxThreads = 10;
|
public static int maxThreads = 10;
|
||||||
|
|
||||||
private static int numThreads;
|
private static int numThreads;
|
||||||
private static Loom _instance;
|
private static LoomUtil _instance;
|
||||||
|
|
||||||
public static Loom Instance
|
public static LoomUtil Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -39,7 +39,7 @@ namespace Guru
|
||||||
initialized = true;
|
initialized = true;
|
||||||
var g = new GameObject("Loom");
|
var g = new GameObject("Loom");
|
||||||
DontDestroyOnLoad(g);
|
DontDestroyOnLoad(g);
|
||||||
_instance = g.AddComponent<Loom>();
|
_instance = g.AddComponent<LoomUtil>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(playerEnter);
|
Send(playerEnter);
|
||||||
Debug.Log("PlayerEnter message sent");
|
//Debug.Log("PlayerEnter message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LevelPrepared(string levelId)
|
public void LevelPrepared(string levelId)
|
||||||
|
|
@ -63,7 +63,7 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(message);
|
Send(message);
|
||||||
Debug.Log("LevelPrepared message sent");
|
//Debug.Log("LevelPrepared message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PointFound(string levelId, int pointId, float combo)
|
public void PointFound(string levelId, int pointId, float combo)
|
||||||
|
|
@ -79,7 +79,7 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(message);
|
Send(message);
|
||||||
Debug.Log("PointFound message sent");
|
//Debug.Log("PointFound message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LevelEnd(string levelId)
|
public void LevelEnd(string levelId)
|
||||||
|
|
@ -93,7 +93,7 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(message);
|
Send(message);
|
||||||
Debug.Log("LevelEnd message sent");
|
//Debug.Log("LevelEnd message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AllLevelEnd(float timeSpent)
|
public void AllLevelEnd(float timeSpent)
|
||||||
|
|
@ -107,9 +107,22 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(message);
|
Send(message);
|
||||||
Debug.Log("AllLevelEnd message sent");
|
//Debug.Log("AllLevelEnd message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PlayerLeave()
|
||||||
|
{
|
||||||
|
var message = new ClientMessage
|
||||||
|
{
|
||||||
|
PlayerLeave = new PlayerLeave
|
||||||
|
{
|
||||||
|
Cid = _cid
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Send(message);
|
||||||
|
//Debug.Log("PlayerLeave message sent");
|
||||||
|
}
|
||||||
|
|
||||||
public void Heartbeat(long timestamp)
|
public void Heartbeat(long timestamp)
|
||||||
{
|
{
|
||||||
var message = new ClientMessage
|
var message = new ClientMessage
|
||||||
|
|
@ -120,7 +133,7 @@ namespace DofLibrary
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Send(message);
|
Send(message);
|
||||||
Debug.Log("Heartbeat message sent");
|
//Debug.Log("Heartbeat message sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Send(ClientMessage message)
|
private void Send(ClientMessage message)
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,15 @@ namespace Dof
|
||||||
public bool ShouldSerializeGameFinish() => __pbn__actual.Is(5);
|
public bool ShouldSerializeGameFinish() => __pbn__actual.Is(5);
|
||||||
public void ResetGameFinish() => global::ProtoBuf.DiscriminatedUnionObject.Reset(ref __pbn__actual, 5);
|
public void ResetGameFinish() => global::ProtoBuf.DiscriminatedUnionObject.Reset(ref __pbn__actual, 5);
|
||||||
|
|
||||||
|
[global::ProtoBuf.ProtoMember(21, Name = @"heartbeat")]
|
||||||
|
public Heartbeat Heartbeat
|
||||||
|
{
|
||||||
|
get => __pbn__actual.Is(21) ? ((Heartbeat)__pbn__actual.Object) : default;
|
||||||
|
set => __pbn__actual = new global::ProtoBuf.DiscriminatedUnionObject(21, value);
|
||||||
|
}
|
||||||
|
public bool ShouldSerializeHeartbeat() => __pbn__actual.Is(21);
|
||||||
|
public void ResetHeartbeat() => global::ProtoBuf.DiscriminatedUnionObject.Reset(ref __pbn__actual, 21);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::ProtoBuf.ProtoContract()]
|
[global::ProtoBuf.ProtoContract()]
|
||||||
|
|
@ -191,6 +200,9 @@ namespace Dof
|
||||||
[global::System.ComponentModel.DefaultValue("")]
|
[global::System.ComponentModel.DefaultValue("")]
|
||||||
public string IosGeneration { get; set; } = "";
|
public string IosGeneration { get; set; } = "";
|
||||||
|
|
||||||
|
[global::ProtoBuf.ProtoMember(4, Name = @"diff_count")]
|
||||||
|
public int DiffCount { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::ProtoBuf.ProtoContract()]
|
[global::ProtoBuf.ProtoContract()]
|
||||||
|
|
@ -316,6 +328,12 @@ namespace Dof
|
||||||
[global::ProtoBuf.ProtoMember(2, Name = @"score")]
|
[global::ProtoBuf.ProtoMember(2, Name = @"score")]
|
||||||
public int Score { get; set; }
|
public int Score { get; set; }
|
||||||
|
|
||||||
|
[global::ProtoBuf.ProtoMember(3, Name = @"rank")]
|
||||||
|
public int Rank { get; set; }
|
||||||
|
|
||||||
|
[global::ProtoBuf.ProtoMember(4, Name = @"award")]
|
||||||
|
public int Award { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::ProtoBuf.ProtoContract()]
|
[global::ProtoBuf.ProtoContract()]
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using ProtoBuf.Meta;
|
using ProtoBuf.Meta;
|
||||||
|
|
||||||
namespace Guru
|
namespace DofLibrary
|
||||||
{
|
{
|
||||||
public interface ISupportInitialize
|
public interface ISupportInitialize
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ message ServerMessage {
|
||||||
LevelStart level_start = 3;
|
LevelStart level_start = 3;
|
||||||
PointFound point_found = 4;
|
PointFound point_found = 4;
|
||||||
GameFinish game_finish = 5;
|
GameFinish game_finish = 5;
|
||||||
|
|
||||||
|
Heartbeat heartbeat = 21;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -41,6 +43,7 @@ message LevelResource {
|
||||||
string level_id = 1;
|
string level_id = 1;
|
||||||
string android_generation = 2;
|
string android_generation = 2;
|
||||||
string ios_generation = 3;
|
string ios_generation = 3;
|
||||||
|
int32 diff_count = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PlayerEntered 服务端接收到 PlayerEnter 消息后发还给客户端的回执
|
// PlayerEntered 服务端接收到 PlayerEnter 消息后发还给客户端的回执
|
||||||
|
|
@ -82,6 +85,8 @@ message AllLevelEnd {
|
||||||
message GameScore {
|
message GameScore {
|
||||||
string uid = 1;
|
string uid = 1;
|
||||||
int32 score = 2;
|
int32 score = 2;
|
||||||
|
int32 rank = 3;
|
||||||
|
int32 award = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GameFinish {
|
message GameFinish {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "com.guru.unity.gurudoflib",
|
"name": "com.guru.unity.gurudoflib",
|
||||||
"displayName": "GuruDofLib",
|
"displayName": "GuruDofLib",
|
||||||
"version": "0.0.5",
|
"version": "0.1.2",
|
||||||
"description": "\u57fa\u4e8eGuru kcp\u5e93\u5b9e\u73b0\u7684\u5ba2\u6237\u7aef\u63a5\u53e3\u5c01\u88c5",
|
"description": "\u57fa\u4e8eGuru kcp\u5e93\u5b9e\u73b0\u7684\u5ba2\u6237\u7aef\u63a5\u53e3\u5c01\u88c5",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"unity",
|
"unity",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue