using RPG.Network.Proto; using RPG.Services.Gameserver.Game.Team; using RPG.Services.Gameserver.Modules.Attributes; using RPG.Services.Gameserver.Session; namespace RPG.Services.Gameserver.Modules; internal class TeamModule : BaseModule { private static readonly uint[] StartingLineup = [1007, 1102, 1101, 1003]; public PlayerTeam Team { get; } = new(); public TeamModule(ModuleManager moduleManager) : base(moduleManager) { } public override Task OnLogin() { for (uint i = 0; i < StartingLineup.Length; i++) { Team.Join(StartingLineup[i], AvatarType.AvatarFormalType, i); } return Task.CompletedTask; } [OnCommand(CmdType.CmdChangeLineupLeaderCsReq)] public Task OnCmdChangeLineupLeaderCsReq(PlayerSession session, ReadOnlyMemory body) { ChangeLineupLeaderCsReq req = ChangeLineupLeaderCsReq.Parser.ParseFrom(body.Span); Send(session, CmdType.CmdChangeLineupLeaderScRsp, new ChangeLineupLeaderScRsp { Retcode = 0, Slot = req.Slot }); return Task.CompletedTask; } [OnCommand(CmdType.CmdGetAllLineupDataCsReq)] public Task OnCmdGetAllLineupDataCsReq(PlayerSession session, ReadOnlyMemory _) { GetAllLineupDataScRsp rsp = new(); rsp.LineupList.Add(Team.LineupInfo); Send(session, CmdType.CmdGetAllLineupDataScRsp, rsp); return Task.CompletedTask; } [OnCommand(CmdType.CmdGetCurLineupDataCsReq)] public Task OnCmdGetCurLineupDataCsReq(PlayerSession session, ReadOnlyMemory _) { Send(session, CmdType.CmdGetCurLineupDataScRsp, new GetCurLineupDataScRsp { Retcode = 0, Lineup = Team.LineupInfo }); return Task.CompletedTask; } }