Files
Fishing2/Assets/Scripts/Fishing2/Helper/MapHelper.cs
2025-09-01 23:57:00 +08:00

109 lines
3.2 KiB
C#

using System;
using NBC;
using NBC.Entitas;
namespace NBF.Fishing2
{
public static class MapHelper
{
#region Map
/// <summary>
/// 开始进入地图
/// </summary>
public static async FTask<int> EnterMap(int mapId, long roomId = 0)
{
try
{
var root = App.Main;
var response = (Map2C_EnterMapResponse)await Net.Call(new C2Map_EnterMapRequest()
{
MapId = mapId,
RoomId = roomId
});
Log.Info($"进入地图请求返回={response.ErrorCode}");
//如果有房间
if (roomId > 0)
{
//加入房间并请求获取房间数据
}
// 等待场景切换完成
await root.GetComponent<ObjectWait>().Wait<Wait_SceneChangeFinish>();
Log.Info($"等待场景切换结束");
await root.EventComponent.PublishAsync(new EnterMapFinish());
}
catch (Exception e)
{
Log.Error(e);
return ErrorCode.Error;
}
return ErrorCode.Success;
}
public static async FTask ChangeMap(int mapId)
{
LoadingPanel.Show();
var oldMap = App.Main.GetComponent<Map>();
await oldMap.UnLoadMap();
var map = App.Main.AddComponent<Map>();
map.MapId = mapId;
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>
/// 卸载旧场景
/// </summary>
/// <param name="self"></param>
public static async FTask UnLoadMap(this Map self)
{
await FTask.CompletedTask;
}
public static async FTask LoadMap(this Map self)
{
var sceneName = "Map99";
//加载场景==
await SceneHelper.LoadScene(sceneName);
self.CreteSelfMapUnit();
await self.LoadAllUnit();
FishingPanel.Show();
// 通知等待场景切换的协程
App.Main.GetComponent<ObjectWait>().Notify(new Wait_SceneChangeFinish());
}
#endregion
#region Unit
/// <summary>
/// 加载所有unit单位
/// </summary>
/// <param name="self"></param>
public static async FTask LoadAllUnit(this Map self)
{
}
#endregion
}
}