using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Match; using SPTarkov.Server.Core.Services; using SPTarkov.Server.Core.Utils; using static SPTarkov.Server.Core.Services.MatchLocationService; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class MatchCallbacks( HttpResponseUtil httpResponseUtil, MatchController matchController, DatabaseService databaseService ) { /// /// Handle client/match/updatePing /// /// /// /// Session/player id /// public ValueTask UpdatePing(string url, UpdatePingRequestData info, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/exit /// /// /// /// Session/player id /// public ValueTask ExitMatch(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/group/exit_from_menu /// /// public ValueTask ExitFromMenu(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/group/current /// /// public ValueTask GroupCurrent(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask( httpResponseUtil.GetBody(new MatchGroupCurrentResponse { Squad = [] }) ); } /// /// Handle client/match/group/looking/start /// /// public ValueTask StartGroupSearch(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/group/looking/stop /// /// public ValueTask StopGroupSearch(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/group/invite/send /// /// public ValueTask SendGroupInvite( string url, MatchGroupInviteSendRequest info, MongoId sessionID ) { return new ValueTask(httpResponseUtil.GetBody("2427943f23698ay9f2863735")); } /// /// Handle client/match/group/invite/accept /// /// public ValueTask AcceptGroupInvite(string url, RequestIdRequest info, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(new List { new() })); } /// /// Handle client/match/group/invite/decline /// /// /// /// Session/player id /// public ValueTask DeclineGroupInvite( string url, RequestIdRequest info, MongoId sessionID ) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/invite/cancel /// /// /// /// Session/player id /// public ValueTask CancelGroupInvite(string url, RequestIdRequest info, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/transfer /// /// /// /// Session/player id /// public ValueTask TransferGroup( string url, MatchGroupTransferRequest info, MongoId sessionID ) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/invite/cancel-all /// /// public ValueTask CancelAllGroupInvite(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/putMetrics /// /// public ValueTask PutMetrics(string url, PutMetricsRequestData info, MongoId sessionID) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/analytics/event-disconnect /// /// public ValueTask EventDisconnect( string url, PutMetricsRequestData info, string sessionID ) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/available /// /// public ValueTask ServerAvailable(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(matchController.GetEnabled())); } /// /// Handle match/group/start_game /// /// public ValueTask JoinMatch(string url, MatchGroupJoinRequest request, MongoId sessionID) { return new ValueTask( httpResponseUtil.GetBody(matchController.JoinMatch(request, sessionID)) ); } /// /// Handle client/getMetricsConfig /// /// public ValueTask GetMetrics(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetMatch().Metrics)); } /// /// Called periodically while in a group /// Handle client/match/group/status /// /// public ValueTask GetGroupStatus( string url, MatchGroupStatusRequest info, MongoId sessionID ) { return new ValueTask( httpResponseUtil.GetBody(matchController.GetGroupStatus(info)) ); } /// /// Handle client/match/group/delete /// /// public ValueTask DeleteGroup(string url, DeleteGroupRequest info, MongoId sessionID) { matchController.DeleteGroup(info); return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/leave /// /// public ValueTask LeaveGroup(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/player/remove /// /// public ValueTask RemovePlayerFromGroup( string url, MatchGroupPlayerRemoveRequest info, MongoId sessionID ) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/local/start /// /// public ValueTask StartLocalRaid( string url, StartLocalRaidRequestData info, MongoId sessionID ) { return new ValueTask( httpResponseUtil.GetBody(matchController.StartLocalRaid(sessionID, info)) ); } /// /// Handle client/match/local/end /// /// public ValueTask EndLocalRaid( string url, EndLocalRaidRequestData info, MongoId sessionID ) { matchController.EndLocalRaid(sessionID, info); return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/raid/configuration /// /// public ValueTask GetRaidConfiguration( string url, GetRaidConfigurationRequestData info, MongoId sessionID ) { matchController.ConfigureOfflineRaid(info, sessionID); return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/raid/configuration-by-profile /// /// /// /// Session/player id /// public ValueTask GetConfigurationByProfile( string url, GetRaidConfigurationRequestData info, MongoId sessionID ) { return new ValueTask(httpResponseUtil.NullResponse()); } /// /// Handle client/match/group/raid/ready /// /// public ValueTask RaidReady(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/raid/not-ready /// /// /// /// Session/player id /// public ValueTask NotRaidReady(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(true)); } /// /// Handle client/match/group/start_game /// public Task StartGameAsGroupLeader( string url, MatchGroupStartGameRequest? request, MongoId? sessionId ) { // returns a ProfileStatusResponse object throw new NotImplementedException(); } }