Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
guo450212436
et
提交
df588fd9
E
et
项目概览
guo450212436
/
et
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
et
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
df588fd9
编写于
11月 03, 2017
作者:
T
tanghai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
客户端消息Handler还是需要带上Session,Session中可以保存消息上下文。
比如,做机器人,需要判断这个消息属于哪个机器人,这些信息可以保存在Session里面
上级
dcbd15bd
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
40 addition
and
24 deletion
+40
-24
Unity/Assets/Scripts/Base/Message/AMHandler.cs
Unity/Assets/Scripts/Base/Message/AMHandler.cs
+9
-3
Unity/Assets/Scripts/Base/Message/AMessage.cs
Unity/Assets/Scripts/Base/Message/AMessage.cs
+4
-0
Unity/Assets/Scripts/Base/Message/ClientDispatcher.cs
Unity/Assets/Scripts/Base/Message/ClientDispatcher.cs
+2
-2
Unity/Assets/Scripts/Base/Message/IMHandler.cs
Unity/Assets/Scripts/Base/Message/IMHandler.cs
+1
-1
Unity/Assets/Scripts/Component/ClientFrameComponent.cs
Unity/Assets/Scripts/Component/ClientFrameComponent.cs
+14
-8
Unity/Assets/Scripts/Component/MessageDispatherComponent.cs
Unity/Assets/Scripts/Component/MessageDispatherComponent.cs
+6
-6
Unity/Assets/Scripts/Handler/Actor_CreateUnitsHandler.cs
Unity/Assets/Scripts/Handler/Actor_CreateUnitsHandler.cs
+1
-1
Unity/Assets/Scripts/Handler/Actor_TestHandler.cs
Unity/Assets/Scripts/Handler/Actor_TestHandler.cs
+1
-1
Unity/Assets/Scripts/Handler/Frame_ClickMapHandler.cs
Unity/Assets/Scripts/Handler/Frame_ClickMapHandler.cs
+1
-1
Unity/Hotfix/Base/Message/IMHandler.cs
Unity/Hotfix/Base/Message/IMHandler.cs
+1
-1
未找到文件。
Unity/Assets/Scripts/Base/Message/AMHandler.cs
浏览文件 @
df588fd9
...
...
@@ -4,16 +4,22 @@ namespace Model
{
public
abstract
class
AMHandler
<
Message
>
:
IMHandler
where
Message
:
AMessage
{
protected
abstract
void
Run
(
Message
message
);
protected
abstract
void
Run
(
Session
session
,
Message
message
);
public
void
Handle
(
AMessage
msg
)
public
void
Handle
(
Session
session
,
AMessage
msg
)
{
Message
message
=
msg
as
Message
;
if
(
message
==
null
)
{
Log
.
Error
(
$"消息类型转换错误:
{
msg
.
GetType
().
Name
}
to
{
typeof
(
Message
).
Name
}
"
);
return
;
}
this
.
Run
(
message
);
if
(
session
.
Id
==
0
)
{
Log
.
Error
(
$"session disconnect
{
msg
}
"
);
return
;
}
this
.
Run
(
session
,
message
);
}
public
Type
GetMessageType
()
...
...
Unity/Assets/Scripts/Base/Message/AMessage.cs
浏览文件 @
df588fd9
...
...
@@ -8,6 +8,10 @@ namespace Model
[
BsonKnownTypes
(
typeof
(
AActorMessage
))]
public
abstract
class
AMessage
{
public
override
string
ToString
()
{
return
MongoHelper
.
ToJson
(
this
);
}
}
[
ProtoContract
]
...
...
Unity/Assets/Scripts/Base/Message/ClientDispatcher.cs
浏览文件 @
df588fd9
...
...
@@ -10,7 +10,7 @@ namespace Model
FrameMessage
frameMessage
=
message
as
FrameMessage
;
if
(
frameMessage
!=
null
)
{
Game
.
Scene
.
GetComponent
<
ClientFrameComponent
>().
Add
(
frameMessage
);
Game
.
Scene
.
GetComponent
<
ClientFrameComponent
>().
Add
(
session
,
frameMessage
);
return
;
}
...
...
@@ -18,7 +18,7 @@ namespace Model
if
(
message
is
AMessage
||
message
is
ARequest
)
{
MessageInfo
messageInfo
=
new
MessageInfo
(
opcode
,
message
);
Game
.
Scene
.
GetComponent
<
MessageDispatherComponent
>().
Handle
(
messageInfo
);
Game
.
Scene
.
GetComponent
<
MessageDispatherComponent
>().
Handle
(
session
,
messageInfo
);
return
;
}
...
...
Unity/Assets/Scripts/Base/Message/IMHandler.cs
浏览文件 @
df588fd9
...
...
@@ -4,7 +4,7 @@ namespace Model
{
public
interface
IMHandler
{
void
Handle
(
AMessage
message
);
void
Handle
(
Session
session
,
AMessage
message
);
Type
GetMessageType
();
}
}
\ No newline at end of file
Unity/Assets/Scripts/Component/ClientFrameComponent.cs
浏览文件 @
df588fd9
namespace
Model
{
public
struct
SessionFrameMessage
{
public
Session
Session
;
public
FrameMessage
FrameMessage
;
}
[
ObjectEvent
]
public
class
ClientFrameComponentEvent
:
ObjectEvent
<
ClientFrameComponent
>,
IStart
{
...
...
@@ -13,7 +19,7 @@
{
public
int
Frame
;
public
EQueue
<
FrameMessage
>
Queue
=
new
EQueue
<
FrameMessage
>();
public
EQueue
<
SessionFrameMessage
>
Queue
=
new
EQueue
<
Session
FrameMessage
>();
public
int
count
=
1
;
...
...
@@ -26,9 +32,9 @@
UpdateAsync
();
}
public
void
Add
(
FrameMessage
frameMessage
)
public
void
Add
(
Session
session
,
FrameMessage
frameMessage
)
{
this
.
Queue
.
Enqueue
(
frameMessage
);
this
.
Queue
.
Enqueue
(
new
SessionFrameMessage
()
{
Session
=
session
,
FrameMessage
=
frameMessage
}
);
}
public
async
void
UpdateAsync
()
...
...
@@ -65,14 +71,14 @@
{
return
;
}
FrameMessage
f
rameMessage
=
this
.
Queue
.
Dequeue
();
this
.
Frame
=
f
rameMessage
.
Frame
;
SessionFrameMessage
sessionF
rameMessage
=
this
.
Queue
.
Dequeue
();
this
.
Frame
=
sessionFrameMessage
.
F
rameMessage
.
Frame
;
for
(
int
i
=
0
;
i
<
f
rameMessage
.
Messages
.
Count
;
++
i
)
for
(
int
i
=
0
;
i
<
sessionFrameMessage
.
F
rameMessage
.
Messages
.
Count
;
++
i
)
{
AFrameMessage
message
=
f
rameMessage
.
Messages
[
i
];
AFrameMessage
message
=
sessionFrameMessage
.
F
rameMessage
.
Messages
[
i
];
Opcode
opcode
=
Game
.
Scene
.
GetComponent
<
OpcodeTypeComponent
>().
GetOpcode
(
message
.
GetType
());
Game
.
Scene
.
GetComponent
<
MessageDispatherComponent
>().
Handle
(
new
MessageInfo
()
{
Opcode
=
opcode
,
Message
=
message
});
Game
.
Scene
.
GetComponent
<
MessageDispatherComponent
>().
Handle
(
sessionFrameMessage
.
Session
,
new
MessageInfo
()
{
Opcode
=
opcode
,
Message
=
message
});
}
}
}
...
...
Unity/Assets/Scripts/Component/MessageDispatherComponent.cs
浏览文件 @
df588fd9
...
...
@@ -11,7 +11,7 @@ namespace Model
/// </summary>
public
interface
IMessageMethod
{
void
Run
(
AMessage
a
);
void
Run
(
Session
session
,
AMessage
a
);
}
public
class
IMessageMonoMethod
:
IMessageMethod
...
...
@@ -23,9 +23,9 @@ namespace Model
this
.
iMHandler
=
iMHandler
;
}
public
void
Run
(
AMessage
a
)
public
void
Run
(
Session
session
,
AMessage
a
)
{
this
.
iMHandler
.
Handle
(
a
);
this
.
iMHandler
.
Handle
(
session
,
a
);
}
}
...
...
@@ -45,7 +45,7 @@ namespace Model
this
.
param
=
new
object
[
n
];
}
public
void
Run
(
AMessage
a
)
public
void
Run
(
Session
session
,
AMessage
a
)
{
this
.
param
[
0
]
=
a
;
this
.
appDomain
.
Invoke
(
this
.
method
,
this
.
instance
,
param
);
...
...
@@ -126,7 +126,7 @@ namespace Model
}
}
public
void
Handle
(
MessageInfo
messageInfo
)
public
void
Handle
(
Session
session
,
MessageInfo
messageInfo
)
{
List
<
IMessageMethod
>
actions
;
if
(!
this
.
handlers
.
TryGetValue
(
messageInfo
.
Opcode
,
out
actions
))
...
...
@@ -139,7 +139,7 @@ namespace Model
{
try
{
ev
.
Run
(
messageInfo
.
Message
);
ev
.
Run
(
session
,
messageInfo
.
Message
);
}
catch
(
Exception
e
)
{
...
...
Unity/Assets/Scripts/Handler/Actor_CreateUnitsHandler.cs
浏览文件 @
df588fd9
...
...
@@ -5,7 +5,7 @@ namespace Model
[
MessageHandler
((
int
)
Opcode
.
Actor_CreateUnits
)]
public
class
Actor_CreateUnitsHandler
:
AMHandler
<
Actor_CreateUnits
>
{
protected
override
void
Run
(
Actor_CreateUnits
message
)
protected
override
void
Run
(
Session
session
,
Actor_CreateUnits
message
)
{
UnitComponent
unitComponent
=
Game
.
Scene
.
GetComponent
<
UnitComponent
>();
...
...
Unity/Assets/Scripts/Handler/Actor_TestHandler.cs
浏览文件 @
df588fd9
...
...
@@ -3,7 +3,7 @@
[
MessageHandler
((
int
)
Opcode
.
Actor_Test
)]
public
class
Actor_TestHandler
:
AMHandler
<
Actor_Test
>
{
protected
override
void
Run
(
Actor_Test
message
)
protected
override
void
Run
(
Session
session
,
Actor_Test
message
)
{
Log
.
Debug
(
message
.
Info
);
}
...
...
Unity/Assets/Scripts/Handler/Frame_ClickMapHandler.cs
浏览文件 @
df588fd9
...
...
@@ -5,7 +5,7 @@ namespace Model
[
MessageHandler
((
int
)
Opcode
.
Frame_ClickMap
)]
public
class
Frame_ClickMapHandler
:
AMHandler
<
Frame_ClickMap
>
{
protected
override
void
Run
(
Frame_ClickMap
message
)
protected
override
void
Run
(
Session
session
,
Frame_ClickMap
message
)
{
Unit
unit
=
Game
.
Scene
.
GetComponent
<
UnitComponent
>().
Get
(
message
.
Id
);
MoveComponent
moveComponent
=
unit
.
GetComponent
<
MoveComponent
>();
...
...
Unity/Hotfix/Base/Message/IMHandler.cs
浏览文件 @
df588fd9
...
...
@@ -6,7 +6,7 @@ namespace Hotfix
#if ILRuntime
public
interface
IMHandler
{
void
Handle
(
AMessage
message
);
void
Handle
(
Session
session
,
AMessage
message
);
Type
GetMessageType
();
}
#else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录