Files
DanhengServer-OpenSource/GameServer/Game/TrainParty/TrainPartyManager.cs
2025-04-15 16:44:46 +08:00

62 lines
1.7 KiB
C#

using EggLink.DanhengServer.Data;
using EggLink.DanhengServer.Database;
using EggLink.DanhengServer.Database.TrainParty;
using EggLink.DanhengServer.GameServer.Game.Player;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Game.TrainParty;
public class TrainPartyManager(PlayerInstance player) : BasePlayerManager(player)
{
public TrainData Data { get; } =
DatabaseHelper.Instance!.GetInstanceOrCreateNew<TrainData>(player.Uid);
public TrainAreaInfo? SetDynamicId(int areaId, int slotId, int dynamicId)
{
if (!Data.Areas.TryGetValue(areaId, out var area)) return null;
area.DynamicInfo[slotId] = dynamicId;
return area;
}
public TrainPartyInfo ToProto()
{
var proto = new TrainPartyInfo
{
TrainPartyDetail = ToPartyInfo(),
PassengerInfo = ToPassenger(),
UnlockAreaNum = 6
};
return proto;
}
public TrainPartyDetail ToPartyInfo()
{
var proto = new TrainPartyDetail
{
EEBNAAPBKCN = 30,
CurFund = (uint)Data.Fund,
AreaList = { Data.Areas.Values.Select(x => x.ToProto()) },
DynamicIdList = { GameData.TrainPartyDynamicConfigData.Select(x => (uint)x.Key) },
};
return proto;
}
public static TrainPartyPassengerInfo ToPassenger()
{
var info = new TrainPartyPassengerInfo();
info.PassengerInfoList.AddRange(
GameData.TrainPartyPassengerConfigData.Select(x =>
{
return new TrainPartyPassenger
{
PassengerId = (uint)x.Key
};
})
);
return info;
}
}