mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
62 lines
1.7 KiB
C#
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;
|
|
}
|
|
} |