饭太稀
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
using Fantasy.Network.Route;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class C2G_CreateSubSceneAddressableRequestHandler : MessageRPC<C2G_CreateSubSceneAddressableRequest, G2C_CreateSubSceneAddressableResponse>
|
||||
{
|
||||
protected override async FTask Run(Session session, C2G_CreateSubSceneAddressableRequest request, G2C_CreateSubSceneAddressableResponse response, Action reply)
|
||||
{
|
||||
var scene = session.Scene;
|
||||
var subSceneRouteId = session.GetComponent<GateSubSceneFlagComponent>().SubSceneRouteId;
|
||||
// 1、向SubScene请求AddressableId
|
||||
var responseAddressableId = (SubScene2G_AddressableIdResponse)await scene.NetworkMessagingComponent.CallInnerRoute(subSceneRouteId, new G2SubScene_AddressableIdRequest());
|
||||
// 2、给session添加一个AddressableRouteComponent组件,这个组件很重要、能否转发Addressable协议主要是通过这个。
|
||||
var addressableRouteComponent = session.AddComponent<AddressableRouteComponent>();
|
||||
// 3、拿到SubScene返回的AddressableId赋值给addressableRouteComponent.AddressableId。
|
||||
addressableRouteComponent.AddressableId = responseAddressableId.AddressableId;
|
||||
}
|
||||
}
|
||||
26
Hotfix/Outer/SubScene/C2G_CreateSubSceneRequestHandler.cs
Normal file
26
Hotfix/Outer/SubScene/C2G_CreateSubSceneRequestHandler.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
using Fantasy.Platform.Net;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public sealed class C2G_CreateSubSceneRequestHandler : MessageRPC<C2G_CreateSubSceneRequest, G2C_CreateSubSceneResponse>
|
||||
{
|
||||
protected override async FTask Run(Session session, C2G_CreateSubSceneRequest request, G2C_CreateSubSceneResponse response, Action reply)
|
||||
{
|
||||
var scene = session.Scene;
|
||||
var sceneConfig = SceneConfigData.Instance.GetSceneBySceneType(SceneType.Map)[0];
|
||||
var createSubSceneResponse = (M2G_CreateSubSceneResponse)await scene.NetworkMessagingComponent.CallInnerRoute(sceneConfig.RouteId, new G2M_CreateSubSceneRequest());
|
||||
|
||||
if (createSubSceneResponse.ErrorCode != 0)
|
||||
{
|
||||
// 创建SubScene失败。
|
||||
response.ErrorCode = createSubSceneResponse.ErrorCode;
|
||||
return;
|
||||
}
|
||||
|
||||
// 记录下这个RouteId,以便后续的消息转发。
|
||||
session.AddComponent<GateSubSceneFlagComponent>().SubSceneRouteId = createSubSceneResponse.SubSceneRouteId;
|
||||
}
|
||||
}
|
||||
18
Hotfix/Outer/SubScene/C2G_SendToSubSceneMessageHandler.cs
Normal file
18
Hotfix/Outer/SubScene/C2G_SendToSubSceneMessageHandler.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public class C2G_SendToSubSceneMessageHandler : Message<C2G_SendToSubSceneMessage>
|
||||
{
|
||||
protected override async FTask Run(Session session, C2G_SendToSubSceneMessage message)
|
||||
{
|
||||
var subSceneRouteId = session.GetComponent<GateSubSceneFlagComponent>().SubSceneRouteId;
|
||||
session.Scene.NetworkMessagingComponent.SendInnerRoute(subSceneRouteId, new G2SubScene_SentMessage()
|
||||
{
|
||||
Tag = "Hi SubScene",
|
||||
});
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public class C2SubScene_TestDisposeMessageHandler : Addressable<Unit, C2SubScene_TestDisposeMessage>
|
||||
{
|
||||
protected override async FTask Run(Unit unit, C2SubScene_TestDisposeMessage message)
|
||||
{
|
||||
var unitScene = unit.Scene;
|
||||
var unitSceneSceneType = unitScene.SceneType;
|
||||
unitScene.Dispose();
|
||||
Log.Debug($"{unitSceneSceneType} {unitScene.RuntimeId} is Dispose!");
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
14
Hotfix/Outer/SubScene/C2SubScene_TestMessageHandler.cs
Normal file
14
Hotfix/Outer/SubScene/C2SubScene_TestMessageHandler.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy;
|
||||
|
||||
public class C2SubScene_TestMessageHandler : Addressable<Unit, C2SubScene_TestMessage>
|
||||
{
|
||||
protected override async FTask Run(Unit unit, C2SubScene_TestMessage message)
|
||||
{
|
||||
Log.Debug($"C2M_TestMessageHandler = {message.Tag} SceneType:{unit.Scene.SceneType} {unit.Scene.GetComponent<SubSceneTestComponent>() == null}");
|
||||
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user