进入和离开地图和房间协议合并

This commit is contained in:
2025-09-09 00:18:10 +08:00
parent f1672122be
commit cb856ec8c4
13 changed files with 142 additions and 240 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using NBC;
using NBC.Entitas;
using UnityEngine;
@@ -19,25 +20,19 @@ namespace NBF.Fishing2
{
var root = App.Main;
var response = (Map2C_EnterMapResponse)await Net.Call(new C2Map_EnterMapRequest()
var response = (G2C_EnterMapResponse)await Net.Call(new C2G_EnterMapRequest()
{
MapId = mapId,
RoomId = roomCode
RoomCode = roomCode
});
Log.Info($"进入地图请求返回={response.ErrorCode}");
//如果有房间
if (!string.IsNullOrEmpty(roomCode))
{
//加入房间并请求获取房间数据
await RoomHelper.EnterRoom(roomCode);
// mapId = roomMapId;
}
await ChangeMap(response.MapId, response.RoomCode, response.Units);
// 等待场景切换完成
await root.GetComponent<ObjectWait>().Wait<Wait_SceneChangeFinish>();
// await root.GetComponent<ObjectWait>().Wait<Wait_SceneChangeFinish>();
Log.Info($"等待场景切换结束");
await root.EventComponent.PublishAsync(new EnterMapFinish());
LoadingPanel.Hide();
}
catch (Exception e)
{
@@ -49,7 +44,7 @@ namespace NBF.Fishing2
}
public static async FTask ChangeMap(int mapId)
public static async FTask ChangeMap(int mapId, string roomCode, List<MapUnitInfo> units)
{
LoadingPanel.Show();
@@ -58,24 +53,15 @@ namespace NBF.Fishing2
var map = App.Main.AddComponent<Map>();
map.MapId = mapId;
map.RoomCode = roomCode;
foreach (var mapUnitInfo in units)
{
map.CreateMapUnit(mapUnitInfo);
}
await map.LoadMap();
}
public static async FTask CreateRoomTest(int mapId)
{
// var roomResponse = (Map2C_CreateRoomResponse)await Net.Call(new C2Map_CreateRoomRequest()
// {
// MapId = mapId
// });
// Log.Info($"创建房间返回 Code={roomResponse.RoomCode} 房间玩家数量={roomResponse.Units.Count}");
//
// //执行进入房间
// var roomResponse2 = (G2C_EnterRoomResponse)await Net.Call(new C2G_EnterRoomRequest()
// {
// RoomCode = roomResponse.RoomCode
// });
// Log.Info($"进入房间返回 Code={roomResponse2.RoomCode} 房间玩家数量={roomResponse2.Units.Count}");
}
/// <summary>
/// 卸载旧场景
@@ -89,7 +75,6 @@ namespace NBF.Fishing2
public static async FTask LoadMap(this Map self)
{
var sceneName = "Map99";
self.CreteMapUnit();
//加载场景==
await SceneHelper.LoadScene(sceneName);
await self.LoadAllUnit();

View File

@@ -12,8 +12,7 @@ namespace NBF.Fishing2
MapUnitInfo mapUnit = new MapUnitInfo();
mapUnit.Id = self.RoleId;
mapUnit.RoleInfo = self.ToSimpleInfo();
mapUnit.Gears = self.Gears.First();
mapUnit.FishingInfo = new UnitFishingInfo();
mapUnit.Gears = self.Gears;
return mapUnit;
}

View File

@@ -1,22 +0,0 @@
using NBC;
namespace NBF.Fishing2
{
public class RoomHelper
{
public static async FTask EnterRoom(string roomCode)
{
var response = (G2C_EnterRoomResponse)await Net.Call(new C2G_EnterRoomRequest()
{
RoomCode = roomCode
});
Log.Info($"进入房间返回 Code={response.RoomCode} 房间玩家数量={response.Units.Count}");
// if (response.ErrorCode != 0)
// {
// return 0;
// }
// return response.MapId;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 0a565f17a34541a096ae34b8e67344d9
timeCreated: 1757244384

View File

@@ -10,7 +10,7 @@ namespace NBF
protected override async FTask Run(Session session, Map2C_ChangeMap message)
{
Log.Info($"收到地图切换消息=={message.MapId}");
await MapHelper.ChangeMap(message.MapId);
// await MapHelper.ChangeMap(message.MapId);
// await MapHelper.CreateRoomTest(message.MapId);
}

View File

@@ -9,32 +9,34 @@ namespace NBF.Fishing2
{
public int MapId;
public string RoomCode;
/// <summary>
/// 好友房地图
/// </summary>
public bool IsRoomMap;
public bool IsRoomMap => !string.IsNullOrEmpty(RoomCode);
/// <summary>
/// 地图中的单位
/// </summary>
public Dictionary<long, MapUnit> Units = new Dictionary<long, MapUnit>();
/// <summary>
/// 创建地图单位
/// </summary>
public void CreteMapUnit()
{
//创建自己
var role = Scene.GetComponent<Role>();
var mapUnitInfo = role.GetMapUnitInfo();
CreteMapUnit(mapUnitInfo);
//创建其他玩家
// //创建自己
// var role = Scene.GetComponent<Role>();
// var mapUnitInfo = role.GetMapUnitInfo();
// CreteMapUnit(mapUnitInfo);
//
// //创建其他玩家
}
public void CreteMapUnit(MapUnitInfo unitInfo)
public void CreateMapUnit(MapUnitInfo unitInfo)
{
var mapUnit = Entity.Create<MapUnit>(Scene, unitInfo.Id, true, true);
mapUnit.SetUnitInfo(unitInfo);

View File

@@ -62,7 +62,7 @@ namespace NBF.Fishing2
var numericComponent = GetOrAddComponent<NumericComponent>();
foreach (var kv in unitInfo.KV)
foreach (var kv in unitInfo.Propertys)
{
numericComponent.Set(kv.Key, kv.Value);
}

View File

@@ -26,9 +26,9 @@ namespace NBF.Fishing2
public int Level;
public void UpdateInfo(MapUnitInfo mapUnitInfo)
{
if (mapUnitInfo.RoleInfo == null) return;
NickName = mapUnitInfo.RoleInfo.NickName;
Head = mapUnitInfo.RoleInfo.Head;
Country = mapUnitInfo.RoleInfo.Country;

View File

@@ -377,27 +377,4 @@ namespace NBC
[ProtoMember(3)]
public int Exp { get; set; }
}
/// <summary>
/// 玩家当前使用钓组信息
/// </summary>
[ProtoContract]
public partial class GearInfo : AMessage, IProto
{
public static GearInfo Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<GearInfo>();
}
public override void Dispose()
{
Rod = default;
Rigs.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<GearInfo>(this);
#endif
}
[ProtoMember(1)]
public long Rod { get; set; }
[ProtoMember(2)]
public List<long> Rigs = new List<long>();
}
}

View File

@@ -62,56 +62,6 @@ namespace NBC
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求网关进入房间
/// </summary>
[ProtoContract]
public partial class C2G_EnterRoomRequest : AMessage, IRequest, IProto
{
public static C2G_EnterRoomRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2G_EnterRoomRequest>();
}
public override void Dispose()
{
RoomCode = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2G_EnterRoomRequest>(this);
#endif
}
[ProtoIgnore]
public G2C_EnterRoomResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2G_EnterRoomRequest; }
[ProtoMember(1)]
public string RoomCode { get; set; }
}
/// <summary>
/// 请求网关进入房间响应
/// </summary>
[ProtoContract]
public partial class G2C_EnterRoomResponse : AMessage, IResponse, IProto
{
public static G2C_EnterRoomResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<G2C_EnterRoomResponse>();
}
public override void Dispose()
{
ErrorCode = default;
RoomCode = default;
Units.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<G2C_EnterRoomResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.G2C_EnterRoomResponse; }
[ProtoMember(1)]
public string RoomCode { get; set; }
[ProtoMember(2)]
public List<MapUnitInfo> Units = new List<MapUnitInfo>();
[ProtoMember(3)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求网关离开房间
/// </summary>
[ProtoContract]
@@ -158,47 +108,60 @@ namespace NBC
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求网关进入地图
/// </summary>
[ProtoContract]
public partial class C2Map_EnterMapRequest : AMessage, ICustomRouteRequest, IProto
public partial class C2G_EnterMapRequest : AMessage, IRequest, IProto
{
public static C2Map_EnterMapRequest Create(Scene scene)
public static C2G_EnterMapRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Map_EnterMapRequest>();
return scene.MessagePoolComponent.Rent<C2G_EnterMapRequest>();
}
public override void Dispose()
{
RoomCode = default;
MapId = default;
RoomId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Map_EnterMapRequest>(this);
GetScene().MessagePoolComponent.Return<C2G_EnterMapRequest>(this);
#endif
}
[ProtoIgnore]
public Map2C_EnterMapResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Map_EnterMapRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.MapRoute;
public G2C_EnterMapResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2G_EnterMapRequest; }
[ProtoMember(1)]
public int MapId { get; set; }
public string RoomCode { get; set; }
[ProtoMember(2)]
public string RoomId { get; set; }
public int MapId { get; set; }
}
/// <summary>
/// 请求网关进入房间响应
/// </summary>
[ProtoContract]
public partial class Map2C_EnterMapResponse : AMessage, ICustomRouteResponse, IProto
public partial class G2C_EnterMapResponse : AMessage, IResponse, IProto
{
public static Map2C_EnterMapResponse Create(Scene scene)
public static G2C_EnterMapResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Map2C_EnterMapResponse>();
return scene.MessagePoolComponent.Rent<G2C_EnterMapResponse>();
}
public override void Dispose()
{
ErrorCode = default;
MapId = default;
RoomCode = default;
Units.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Map2C_EnterMapResponse>(this);
GetScene().MessagePoolComponent.Return<G2C_EnterMapResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Map2C_EnterMapResponse; }
public uint OpCode() { return OuterOpcode.G2C_EnterMapResponse; }
[ProtoMember(1)]
public int MapId { get; set; }
[ProtoMember(2)]
public string RoomCode { get; set; }
[ProtoMember(3)]
public List<MapUnitInfo> Units = new List<MapUnitInfo>();
[ProtoMember(4)]
public uint ErrorCode { get; set; }
}
/// <summary>

View File

@@ -78,31 +78,43 @@ namespace NBC
[ProtoMember(4)]
public float w { get; set; }
}
/// <summary>
/// 玩家当前使用钓组信息
/// </summary>
[ProtoContract]
public partial class UnitFishingInfo : AMessage, IProto
public partial class GearInfo : AMessage, IProto
{
public static UnitFishingInfo Create(Scene scene)
public static GearInfo Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<UnitFishingInfo>();
return scene.MessagePoolComponent.Rent<GearInfo>();
}
public override void Dispose()
{
Rod = default;
Rigs.Clear();
LineLength = default;
ReelSpeed = default;
OpenLight = default;
RodSetting = default;
State = default;
Position = default;
Rotation = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<UnitFishingInfo>(this);
GetScene().MessagePoolComponent.Return<GearInfo>(this);
#endif
}
[ProtoMember(1)]
public float LineLength { get; set; }
public long Rod { get; set; }
[ProtoMember(2)]
public float ReelSpeed { get; set; }
public List<long> Rigs = new List<long>();
[ProtoMember(3)]
public bool OpenLight { get; set; }
public float LineLength { get; set; }
[ProtoMember(4)]
public int RodSetting { get; set; }
public float ReelSpeed { get; set; }
[ProtoMember(5)]
public int State { get; set; }
[ProtoMember(6)]
public Vector3Info Position { get; set; }
[ProtoMember(7)]
public Vector3Info Rotation { get; set; }
}
[ProtoContract]
public partial class UnitStateInfo : AMessage, IProto
@@ -138,9 +150,8 @@ namespace NBC
Position = default;
Rotation = default;
State = default;
Gears = default;
FishingInfo = default;
KV.Clear();
Gears.Clear();
Propertys.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<MapUnitInfo>(this);
#endif
@@ -156,10 +167,8 @@ namespace NBC
[ProtoMember(5)]
public UnitStateInfo State { get; set; }
[ProtoMember(6)]
public GearInfo Gears { get; set; }
public List<GearInfo> Gears = new List<GearInfo>();
[ProtoMember(7)]
public UnitFishingInfo FishingInfo { get; set; }
[ProtoMember(8)]
public List<KeyValueInt32> KV = new List<KeyValueInt32>();
public List<KeyValueInt32> Propertys = new List<KeyValueInt32>();
}
}

View File

@@ -4,60 +4,58 @@ namespace Fantasy
{
public const uint C2Map_CreateRoomRequest = 2281711377;
public const uint Map2C_CreateRoomResponse = 2415929105;
public const uint C2G_EnterRoomRequest = 268445457;
public const uint G2C_EnterRoomResponse = 402663185;
public const uint C2G_ExitRoomRequest = 268445458;
public const uint G2C_ExitRoomResponse = 402663186;
public const uint C2Map_EnterMapRequest = 2281711378;
public const uint Map2C_EnterMapResponse = 2415929106;
public const uint C2G_ExitRoomRequest = 268445457;
public const uint G2C_ExitRoomResponse = 402663185;
public const uint C2G_EnterMapRequest = 268445458;
public const uint G2C_EnterMapResponse = 402663186;
public const uint Map2C_ChangeMap = 2147493649;
public const uint C2A_LoginRequest = 268445459;
public const uint A2C_LoginResponse = 402663187;
public const uint C2G_LoginRequest = 268445460;
public const uint G2C_LoginResponse = 402663188;
public const uint G2C_RepeatLogin = 134227729;
public const uint C2Game_GetRoleInfoRequest = 2281711379;
public const uint Game2C_GetRoleInfoResponse = 2415929107;
public const uint C2Game_GetRoleInfoRequest = 2281711378;
public const uint Game2C_GetRoleInfoResponse = 2415929106;
public const uint Map2C_RoleEnterRoomNotify = 2147493650;
public const uint Map2C_RoleExitRoomNotify = 2147493651;
public const uint Map2C_RoleStateNotify = 2147493652;
public const uint Map2C_RoleGearStateNotify = 2147493653;
public const uint Map2C_RoleGearChangeNotify = 2147493654;
public const uint Map2C_RoleGearChangeNotify = 2147493653;
public const uint Map2C_RolePropertyChangeNotify = 2147493654;
public const uint C2Map_Move = 2147493655;
public const uint C2Map_Look = 2147493656;
public const uint Map2C_MoveNotify = 2147493657;
public const uint Map2C_LookeNotify = 2147493658;
public const uint C2S_GetConversationsRequest = 2281711380;
public const uint S2C_GetConversationsResponse = 2415929108;
public const uint C2S_SendMailRequest = 2281711381;
public const uint S2C_SendMailResponse = 2415929109;
public const uint C2S_DeleteMailRequest = 2281711382;
public const uint S2C_DeleteMailResponse = 2415929110;
public const uint C2S_GetConversationsRequest = 2281711379;
public const uint S2C_GetConversationsResponse = 2415929107;
public const uint C2S_SendMailRequest = 2281711380;
public const uint S2C_SendMailResponse = 2415929108;
public const uint C2S_DeleteMailRequest = 2281711381;
public const uint S2C_DeleteMailResponse = 2415929109;
public const uint S2C_HaveMail = 2147493659;
public const uint S2C_MailState = 2147493660;
public const uint C2S_CreateChannelRequest = 2281711383;
public const uint S2C_CreateChannelResponse = 2415929111;
public const uint C2S_JoinChannelRequest = 2281711384;
public const uint S2C_JoinChannelResponse = 2415929112;
public const uint C2S_SendMessageRequest = 2281711385;
public const uint S2C_SendMessageResponse = 2415929113;
public const uint C2S_CreateChannelRequest = 2281711382;
public const uint S2C_CreateChannelResponse = 2415929110;
public const uint C2S_JoinChannelRequest = 2281711383;
public const uint S2C_JoinChannelResponse = 2415929111;
public const uint C2S_SendMessageRequest = 2281711384;
public const uint S2C_SendMessageResponse = 2415929112;
public const uint S2C_Message = 2147493661;
public const uint C2S_CreateClubRequest = 2281711386;
public const uint S2C_CreateClubResponse = 2415929114;
public const uint C2S_GetClubInfoRequest = 2281711387;
public const uint S2C_GetClubInfoResponse = 2415929115;
public const uint C2S_GetMemberListRequest = 2281711388;
public const uint S2C_GetMemberListResponse = 2415929116;
public const uint C2S_GetClubListRequest = 2281711389;
public const uint S2C_GetClubListResponse = 2415929117;
public const uint C2S_JoinClubRequest = 2281711390;
public const uint S2C_JoinClubResponse = 2415929118;
public const uint C2S_LeaveClubRequest = 2281711391;
public const uint S2C_LeaveClubResponse = 2415929119;
public const uint C2S_DissolveClubRequest = 2281711392;
public const uint S2C_DissolveClubResponse = 2415929120;
public const uint C2S_DisposeJoinRequest = 2281711393;
public const uint S2C_DisposeJoinResponse = 2415929121;
public const uint C2S_CreateClubRequest = 2281711385;
public const uint S2C_CreateClubResponse = 2415929113;
public const uint C2S_GetClubInfoRequest = 2281711386;
public const uint S2C_GetClubInfoResponse = 2415929114;
public const uint C2S_GetMemberListRequest = 2281711387;
public const uint S2C_GetMemberListResponse = 2415929115;
public const uint C2S_GetClubListRequest = 2281711388;
public const uint S2C_GetClubListResponse = 2415929116;
public const uint C2S_JoinClubRequest = 2281711389;
public const uint S2C_JoinClubResponse = 2415929117;
public const uint C2S_LeaveClubRequest = 2281711390;
public const uint S2C_LeaveClubResponse = 2415929118;
public const uint C2S_DissolveClubRequest = 2281711391;
public const uint S2C_DissolveClubResponse = 2415929119;
public const uint C2S_DisposeJoinRequest = 2281711392;
public const uint S2C_DisposeJoinResponse = 2415929120;
public const uint S2C_ClubChange = 2147493662;
}
}

View File

@@ -82,32 +82,6 @@ namespace NBC
public UnitStateInfo State { get; set; }
}
/// <summary>
/// 玩家钓组状态变化
/// </summary>
[ProtoContract]
public partial class Map2C_RoleGearStateNotify : AMessage, ICustomRouteMessage, IProto
{
public static Map2C_RoleGearStateNotify Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Map2C_RoleGearStateNotify>();
}
public override void Dispose()
{
Id = default;
State = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Map2C_RoleGearStateNotify>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Map2C_RoleGearStateNotify; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.MapRoute;
[ProtoMember(1)]
public long Id { get; set; }
[ProtoMember(2)]
public UnitFishingInfo State { get; set; }
}
/// <summary>
/// 玩家钓组变化
/// </summary>
[ProtoContract]
@@ -120,7 +94,7 @@ namespace NBC
public override void Dispose()
{
Id = default;
Gears = default;
Gears.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Map2C_RoleGearChangeNotify>(this);
#endif
@@ -131,7 +105,27 @@ namespace NBC
[ProtoMember(1)]
public long Id { get; set; }
[ProtoMember(2)]
public GearInfo Gears { get; set; }
public List<GearInfo> Gears = new List<GearInfo>();
}
[ProtoContract]
public partial class Map2C_RolePropertyChangeNotify : AMessage, ICustomRouteMessage, IProto
{
public static Map2C_RolePropertyChangeNotify Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Map2C_RolePropertyChangeNotify>();
}
public override void Dispose()
{
Propertys.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Map2C_RolePropertyChangeNotify>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Map2C_RolePropertyChangeNotify; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.MapRoute;
[ProtoMember(1)]
public List<KeyValueInt32> Propertys = new List<KeyValueInt32>();
}
[ProtoContract]
public partial class C2Map_Move : AMessage, ICustomRouteMessage, IProto