Merge pull request #9 from CJ-SPT/controllers

Controllers prototypes
This commit is contained in:
clodanSPT
2025-01-07 09:05:47 +00:00
committed by GitHub
28 changed files with 1587 additions and 2 deletions
+7 -2
View File
@@ -1,4 +1,5 @@
using Core.Models.Common;
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
using Core.Models.Spt.Config;
@@ -83,10 +84,14 @@ public class BotController
{
throw new NotImplementedException();
}
public int GetBotCap()
{
throw new NotImplementedException();
}
public object GetAiBotBrainTypes() // TODO: Returns `any` in the node server
{
throw new NotImplementedException();
}
}
+66
View File
@@ -0,0 +1,66 @@
using Core.Models.Eft.Profile;
namespace Core.Controllers;
public class BuildController
{
/// <summary>
/// Handle client/handbook/builds/my/list
/// </summary>
/// <param name="sessionID"></param>
/// <returns></returns>
public UserBuilds GetUserBuilds(string sessionID)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/builds/weapon/save
/// </summary>
/// <param name="sessionId"></param>
/// <param name="body"></param>
public void SaveWeaponBuild(string sessionId, PresetBuildActionRequestData body)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/builds/equipment/save event
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
public void SaveEquipmentBuild(string sessionId, PresetBuildActionRequestData request)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/builds/delete
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
public void RemoveBuild(string sessionId, RemoveBuildReqestData request)
{
RemovePlayerBuild(request.id, sessionId);
}
/// <summary>
/// Handle client/builds/magazine/save
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
public void CreateMagazineTemplate(string sessionId, SetMagazineRequest request)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="idToRemove"></param>
/// <param name="sessionId"></param>
private void RemovePlayerBuild(string idToRemove, string sessionId)
{
throw new NotImplementedException();
}
}
+15
View File
@@ -0,0 +1,15 @@
using Core.Models.Spt.Logging;
namespace Core.Controllers;
public class ClientLogController
{
/// <summary>
/// Handle /singleplayer/log
/// </summary>
/// <param name="logRequest"></param>
public void ClientLog(ClientLogRequest logRequest)
{
throw new NotImplementedException();
}
}
+141
View File
@@ -0,0 +1,141 @@
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
using Core.Models.Eft.Hideout;
using Core.Models.Eft.Profile;
namespace Core.Controllers;
public class CustomizationController
{
/// <summary>
/// Get purchasable clothing items from trader that match players side (usec/bear)
/// </summary>
/// <param name="traderId">trader to look up clothing for</param>
/// <param name="sessionId">Session id</param>
/// <returns>Suit array</returns>
public Suit GetTraderSuits(string traderId, string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle CustomizationBuy event
/// Purchase/unlock a clothing item from a trader
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <param name="buyClothingRequest">Request object</param>
/// <param name="sessionId">Session id</param>
/// <returns>ItemEventRouterResponse</returns>
public ItemEventRouterResponse BuyClothing(
PmcData pmcData,
BuyClothingRequest buyClothingRequest,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Update output object and player profile with purchase details
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="pmcData">Player profile</param>
/// <param name="itemsToPayForClothingWith">Clothing purchased</param>
/// <param name="output">Client response</param>
private void PayForClothingItems(
string sessionId,
PmcData pmcData,
List<PaymentItemForClothing> itemsToPayForClothingWith,
ItemEventRouterResponse output)
{
throw new NotImplementedException();
}
/// <summary>
/// Update output object and player profile with purchase details for single piece of clothing
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="pmcData">Player profile</param>
/// <param name="paymentItemDetails">Payment details</param>
/// <param name="output">Client response</param>
private void PayForClothingItem(
string sessionId,
PmcData pmcData,
PaymentItemForClothing paymentItemDetails,
ItemEventRouterResponse output)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
private List<Suit> GetAllTraderSuits(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/hideout/customization/offer/list
/// </summary>
/// <param name="sessionId"></param>
/// <param name="info"></param>
/// <returns></returns>
public HideoutCustomisationStorage GetHideoutCustomisation(
string sessionId,
EmptyRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/customization/storage
/// </summary>
/// <param name="sessionId"></param>
/// <param name="info"></param>
/// <returns></returns>
public List<CustomisationStorage> GetCustomisationStorage(
string sessionId,
EmptyRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="profile"></param>
/// <returns></returns>
private string GetGameEdition(SptProfile profile)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle CustomizationSet event
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
/// <param name="pmcData"></param>
/// <returns></returns>
public ItemEventRouterResponse SetClothing(
string sessionId,
CustomizationSetRequest request,
PmcData pmcData)
{
throw new NotImplementedException();
}
/// <summary>
/// Applies a purchased suit to the players doll
/// </summary>
/// <param name="customization">Suit to apply to profile</param>
/// <param name="pmcData">Profile to update</param>
private void ApplyClothingItemToProfile(
CustomizationSetOption customization,
PmcData pmcData)
{
throw new NotImplementedException();
}
}
+250
View File
@@ -0,0 +1,250 @@
using Core.Models.Eft.Profile;
using Core.Models.Enums;
namespace Core.Controllers;
public class DialogueController
{
/// <summary>
///
/// </summary>
/// <param name="chatBot"></param>
public void RegisterChatBot(DialogueChatBot chatBot)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle onUpdate spt event
/// </summary>
public void Update()
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/friend/list
/// </summary>
/// <param name="sessionId">session id</param>
/// <returns>GetFriendListDataResponse</returns>
public GetFriendListDataResponse GetFriendList(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/list
/// Create array holding trader dialogs and mail interactions with player
/// Set the content of the dialogue on the list tab.
/// </summary>
/// <param name="sessionId">Session Id</param>
/// <returns>list of dialogs</returns>
public List<DialogueInfo> GenerateDialogueList(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Get the content of a dialogue
/// </summary>
/// <param name="dialogueId">Dialog id</param>
/// <param name="sessionId">Session Id</param>
/// <returns>DialogueInfo</returns>
public DialogueInfo GetDialogueInfo(
string dialogueId,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Get the users involved in a dialog (player + other party)
/// </summary>
/// <param name="dialogue">The dialog to check for users</param>
/// <param name="messageType">What type of message is being sent</param>
/// <param name="sessionId">Player id</param>
/// <returns>UserDialogInfo list</returns>
public List<UserDialogInfo> GetDialogueUsers(
Dialogue dialogue,
MessageType messageType,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/view
/// Handle player clicking 'messenger' and seeing all the messages they've received
/// Set the content of the dialogue on the details panel, showing all the messages
/// for the specified dialogue.
/// </summary>
/// <param name="request">Get dialog request</param>
/// <param name="sessionId">Session id</param>
/// <returns>GetMailDialogViewResponseData object</returns>
public GetMailDialogViewResponseData GenerateDialogueView(
GetMailDialogViewResponseData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Get dialog from player profile, create if doesn't exist
/// </summary>
/// <param name="profile">Player profile</param>
/// <param name="request">get dialog request</param>
/// <returns>Dialogue</returns>
private Dialogue GetDialogByIdFromProfile(
SptProfile profile,
GetMailDialogViewRequestData request)
{
throw new NotImplementedException();
}
/// <summary>
/// Get the users involved in a mail between two entities
/// </summary>
/// <param name="fullProfile">Player profile</param>
/// <param name="userDialogs">The participants of the mail</param>
/// <returns>UserDialogInfo list</returns>
private List<UserDialogInfo> GetProfilesForMail(
SptProfile fullProfile,
List<UserDialogInfo>? userDialogs)
{
throw new NotImplementedException();
}
/// <summary>
/// Get a count of messages with attachments from a particular dialog
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="dialogueId">Dialog id</param>
/// <returns>Count of messages with attachments</returns>
private int GetUnreadMessagesWithAttachmentsCount(
string sessionId,
string dialogueId)
{
throw new NotImplementedException();
}
/// <summary>
/// Does list have messages with uncollected rewards (includes expired rewards)
/// </summary>
/// <param name="messages">Messages to check</param>
/// <returns>true if uncollected rewards found</returns>
private bool MessagesHaveUncollectedRewards(List<Message> messages)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/remove
/// Remove an entire dialog with an entity (trader/user)
/// </summary>
/// <param name="dialogueId">id of the dialog to remove</param>
/// <param name="sessionId">Player id</param>
public void RemoveDialogue(
string dialogueId,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/pin && Handle client/mail/dialog/unpin
/// </summary>
/// <param name="dialogueId"></param>
/// <param name="shouldPin"></param>
/// <param name="sessionId"></param>
public void SetDialoguePin(
string dialogueId,
bool shouldPin,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/read
/// Set a dialog to be read (no number alert/attachment alert)
/// </summary>
/// <param name="dialogueIds">Dialog ids to set as read</param>
/// <param name="sessionId">Player profile id</param>
public void SetRead(
HashSet<string> dialogueIds,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/mail/dialog/getAllAttachments
/// Get all uncollected items attached to mail in a particular dialog
/// </summary>
/// <param name="dialogueId">Dialog to get mail attachments from</param>
/// <param name="sessionId">Session id</param>
/// <returns>GetAllAttachmentsResponse or null if dialogue doesnt exist</returns>
public GetAllAttachmentsResponse? GetAllAttachments(
string dialogueId,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// handle client/mail/msg/send
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
/// <returns></returns>
public string SendMessage(
string sessionId,
SendMessageRequest request)
{
throw new NotImplementedException();
}
/// <summary>
/// Get messages from a specific dialog that have items not expired
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="dialogueId">Dialog to get mail attachments from</param>
/// <returns>message list</returns>
private List<Message> GetActiveMessagesFromDialogue(
string sessionId,
string dialogueId)
{
throw new NotImplementedException();
}
/// <summary>
/// Return list of messages with uncollected items (includes expired)
/// </summary>
/// <param name="messages">Messages to parse</param>
/// <returns>messages with items to collect</returns>
private List<Message> GetMessageWithAttachments(List<Message> messages)
{
throw new NotImplementedException();
}
/// <summary>
/// Delete expired items from all messages in player profile. triggers when updating traders.
/// </summary>
/// <param name="sessionId">Session id</param>
private void RemoveExpiredItemsFromMessages(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Removes expired items from a message in player profile
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="dialogueId">Dialog id</param>
private void RemoveExpiredItemsFromMessage(
string sessionId,
string dialogueId)
{
throw new NotImplementedException();
}
}
+182
View File
@@ -0,0 +1,182 @@
using Core.Models.Eft.Common;
using Core.Models.Eft.Profile;
namespace Core.Controllers;
public class GameController
{
/// <summary>
/// Handle client/game/start
/// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionId"></param>
/// <param name="startTimeStampMs"></param>
public void GameStart(
string url,
EmptyRequestData info,
string sessionId,
long startTimeStampMs)
{
throw new NotImplementedException();
}
/// <summary>
/// Handles migrating profiles from older SPT versions
/// </summary>
/// <param name="fullProfile"></param>
/// <remarks>Formerly migrate39xProfile in node server</remarks>
private void MigrateProfile(SptProfile fullProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/game/config
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public GameConfigResponse GetGameConfig(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/game/mode
/// </summary>
/// <param name="sessionId"></param>
/// <param name="requestData"></param>
/// <returns></returns>
public object GetGameMode( // TODO: Returns `any` in node server
string sessionId,
GameModeRequestData requestData)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/server/list
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public List<ServerDetails> GetServer(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/match/group/current
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public CurrentGroupResponse GetCurrentGroup(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/checkVersion
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public CheckVersionResponse GetValidGameVersion(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/game/keepalive
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public GameKeepAliveResponse GetKeepAlive(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle singleplayer/settings/getRaidTime
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
/// <returns></returns>
public GetRaidTimeResponse GetRaidTime(
string sessionId,
GetRaidTimeRequest request)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public SurveyResponseData GetSurvey(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
/// </summary>
/// <param name="pmcProfile">Player profile</param>
private void WarnOnActiveBotReloadSkill(PmcData pmcProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// When player logs in, iterate over all active effects and reduce timer
/// </summary>
/// <param name="pmcProfile">Profile to adjust values for</param>
private void UpdateProfileHealthValues(PmcData pmcProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// Send starting gifts to profile after x days
/// </summary>
/// <param name="pmcProfile">Profile to add gifts to</param>
private void SendPraporGiftsToNewProfiles(PmcData pmcProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// Get a list of installed mods and save their details to the profile being used
/// </summary>
/// <param name="fullProfile">Profile to add mod details to</param>
private void SaveActiveModsToProfile(SptProfile fullProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// Add the logged in players name to PMC name pool
/// </summary>
/// <param name="pmcProfile">Profile of player to get name from</param>
private void AddPlayerToPmcNames(PmcData pmcProfile)
{
throw new NotImplementedException();
}
/// <summary>
/// Check for a dialog with the key 'undefined', and remove it
/// </summary>
/// <param name="fullProfile">Profile to check for dialog in</param>
private void CheckForAndRemoveUndefinedDialogues(SptProfile fullProfile)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="fullProfile"></param>
private void LogProfileDetails(SptProfile fullProfile)
{
throw new NotImplementedException();
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace Core.Controllers;
// TODO: This seems unused, is it even needed?
public class HandBookController
{
public void Load()
{
throw new NotImplementedException();
}
}
+68
View File
@@ -0,0 +1,68 @@
using Core.Models.Eft.Common;
using Core.Models.Eft.Health;
namespace Core.Controllers;
public class HealthController
{
/// <summary>
/// When healing in menu
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <param name="request">Healing request</param>
/// <param name="sessionId">Player id</param>
/// <returns>ItemEventRouterResponse</returns>
public ItemEventRouterResponse OffRaidHeal(
PmcData pmcData,
OffraidHealRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle Eat event
/// Consume food/water outside of a raid
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <param name="request">Eat request</param>
/// <param name="sessionId">Session id</param>
/// <returns>ItemEventRouterResponse</returns>
public ItemEventRouterResponse OffRaidEat(
PmcData pmcData,
OffraidEatRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle RestoreHealth event
/// Occurs on post-raid healing page
/// </summary>
/// <param name="pmcData">player profile</param>
/// <param name="request">Request data from client</param>
/// <param name="sessionId">Session id</param>
/// <returns></returns>
public ItemEventRouterResponse HealthTreatment(
PmcData pmcData,
HealthTreatmentRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// applies skills from hideout workout.
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <param name="info">Request data</param>
/// <param name="sessionId">session id</param>
public void ApplyWorkoutChanges(
PmcData pmcData,
WorkoutData info,
string sessionId)
{
throw new NotImplementedException();
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class HideoutController
{
// TODO
}
+64
View File
@@ -0,0 +1,64 @@
namespace Core.Controllers;
public class InRaidController
{
/// <summary>
/// Save locationId to active profiles in-raid object AND app context
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="info">Register player request</param>
public void AddPlayer(
string sessionId,
RegisterPlayerRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle raid/profile/scavsave
/// Save profile state to disk
/// Handles pmc/pscav
/// </summary>
/// <param name="offRaidProfileData"></param>
/// <param name="sessionId"></param>
public void SavePostRaidProfileForScav(
ScavSaveRequestData offRaidProfileData,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Get the inraid config from configs/inraid.json
/// </summary>
public void GetInRaidConfig()
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public float GetTraitorScavHostileChance(
string url,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public List<string> GetBossConvertSettings(
string url,
string sessionId)
{
throw new NotImplementedException();
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class InsuranceController
{
// TODO
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class InventoryController
{
// TODO
}
+146
View File
@@ -0,0 +1,146 @@
using Core.Models.Eft.Profile;
using Core.Models.Spt.Mod;
namespace Core.Controllers;
public class LauncherController
{
/// <summary>
///
/// </summary>
/// <returns></returns>
public ConnectResponse Connect()
{
throw new NotImplementedException();
}
/// <summary>
/// Get descriptive text for each of the profile edtions a player can choose, keyed by profile.json profile type
/// e.g. "Edge Of Darkness"
/// </summary>
/// <returns>Dictionary of profile types with related descriptive text</returns>
private Dictionary<string, string> GetProfileDescriptions()
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public Info Find(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public string Login(LoginRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public string Register(RegisterData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
private string CreateAccount(RegisterData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
private string GenerateProfileId()
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="timeStamp"></param>
/// <param name="counter"></param>
/// <returns></returns>
private string FormatId(
long timeStamp,
int counter)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public string ChangeUsername(ChangeRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public string ChangePassword(ChangeRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle launcher requesting profile be wiped
/// </summary>
/// <param name="info">RegisterData</param>
/// <returns>Session id</returns>
public string Wipe(RegisterData info)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public string GetCompatibleTarkovVersion()
{
throw new NotImplementedException();
}
/// <summary>
/// Get the mods the server has currently loaded
/// </summary>
/// <returns>Dictionary of mod name and mod details</returns>
public Dictionary<string, PackageJsonData> GetLoadedServerMods() // TODO: We no longer use a package.json
{
throw new NotImplementedException();
}
/// <summary>
/// Get the mods a profile has ever loaded into game with
/// </summary>
/// <param name="sessionId">Player id</param>
/// <returns>List of mod details</returns>
public List<ModDetails> GetServerModsProfileUsed(string sessionId)
{
throw new NotImplementedException();
}
}
+25
View File
@@ -0,0 +1,25 @@
namespace Core.Controllers;
public class LocationController
{
/// <summary>
/// Handle client/locations
/// Get all maps base location properties without loot data
/// </summary>
/// <param name="sessionId">Players Id</param>
/// <returns>LocationsGenerateAllResponse</returns>
public LocationsGenerateAllResponse GenerateAll(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/airdrop/loot
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public GetAirDropLootResponse GetAirDropLoot(GetAirDropLootRequest request)
{
throw new NotImplementedException();
}
}
+94
View File
@@ -0,0 +1,94 @@
namespace Core.Controllers;
public class MatchController
{
/// <summary>
///
/// </summary>
/// <returns></returns>
public bool GetEnabled()
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/match/group/delete
/// </summary>
/// <param name="info"></param>
public void DeleteGroup(object info) // TODO: info is `any` in the node server
{
throw new NotImplementedException();
}
/// <summary>
/// Handle match/group/start_game
/// </summary>
/// <param name="info"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ProfileStatusResponse JoinMatch(
MatchGroupStartGameRequest info,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/match/group/status
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public MatchGroupStatusReponse GetGroupStatus(
MatchGroupStatusRequest info)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle /client/raid/configuration
/// </summary>
/// <param name="request"></param>
/// <param name="sessionId"></param>
public void ConfigureOfflineRaid(
GetRaidConfigurationRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Convert a difficulty value from pre-raid screen to a bot difficulty
/// </summary>
/// <param name="botDifficulty">dropdown difficulty value</param>
/// <returns>bot difficulty</returns>
private string ConvertDifficultyDropdownIntoBotDifficulty(
string botDifficulty)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/match/local/start
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
/// <returns></returns>
public StartLocalRaidResponseData StartLocalRaid(
string sessionId,
StartLocalRaidRequestData request)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/match/local/end
/// </summary>
/// <param name="sessionId"></param>
/// <param name="request"></param>
public void EndLocalRaid(
string sessionId,
EndLocalRaidRequestData request)
{
throw new NotImplementedException();
}
}
+51
View File
@@ -0,0 +1,51 @@
using Core.Models.Eft.Common;
namespace Core.Controllers;
public class NoteController
{
/// <summary>
///
/// </summary>
/// <param name="pmcData"></param>
/// <param name="body"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse AddNote(
PmcData pmcData,
NoteActionBody body,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="pmcData"></param>
/// <param name="body"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse EditNote(
PmcData pmcData,
NoteActionBody body,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="pmcData"></param>
/// <param name="body"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse DeleteNote(
PmcData pmcData,
NoteActionBody body,
string sessionId)
{
throw new NotImplementedException();
}
}
+37
View File
@@ -0,0 +1,37 @@
namespace Core.Controllers;
public class NotifierController
{
/// <summary>
/// Resolve an array of session notifications.
///
/// If no notifications are currently queued then intermittently check for new notifications until either
/// one or more appear or when a timeout expires.
/// If no notifications are available after the timeout, use a default message.
/// </summary>
/// <param name="sessionId"></param>
public async Task NotifyAsync(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public string GetServer(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/notifier/channel/create
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public NotifierChannel GetChannel(string sessionId)
{
throw new NotImplementedException();
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace Core.Controllers;
public class PresetController
{
/// <summary>
///
/// </summary>
public void Initialize()
{
throw new NotImplementedException();
}
}
+32
View File
@@ -0,0 +1,32 @@
using Core.Models.Eft.Common.Tables;
namespace Core.Controllers;
public class PrestigeController
{
/// <summary>
/// Handle /client/prestige/list
/// </summary>
/// <param name="sessionId"></param>
/// <param name="info"></param>
/// <returns></returns>
public Prestige GetPrestige(
string sessionId,
EmptyRequestData info)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle /client/prestige/obtain
/// </summary>
/// <param name="sessionId"></param>
/// <param name="info"></param>
/// <returns></returns>
public object ObtainPrestige( // TODO: returns `any` in the node server, not implemented either
string sessionId,
EmptyRequestData info)
{
throw new NotImplementedException("Method not Implemented");
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class ProfileController
{
// TODO
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class QuestController
{
// TODO
}
+6
View File
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class RagfairController
{
// TODO
}
+39
View File
@@ -0,0 +1,39 @@
using Core.Models.Eft.Common;
namespace Core.Controllers;
public class RepairController
{
/// <summary>
/// Handle TraderRepair event
/// Repair with trader
/// </summary>
/// <param name="sessionId">session id</param>
/// <param name="body">endpoint request data</param>
/// <param name="pmcData">player profile</param>
/// <returns>item event router action</returns>
public ItemEventRouterResponse TraderRepair(
string sessionId,
TraderRepairActionDataRequest body,
PmcData pmcData)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle Repair event
/// Repair with repair kit
/// </summary>
/// <param name="sessionId">session id</param>
/// <param name="body">endpoint request data</param>
/// <param name="pmcData">player profile</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public ItemEventRouterResponse RepairWithKit(
string sessionId,
RepairActionDataRequest body,
PmcData pmcData)
{
throw new NotImplementedException();
}
}
@@ -0,0 +1,6 @@
namespace Core.Controllers;
public class RepeatableQuestController
{
// TODO
}
+147
View File
@@ -0,0 +1,147 @@
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
using Core.Models.Eft.Ragfair;
using Core.Models.Enums;
namespace Core.Controllers;
public class TradeController
{
/// <summary>
/// Handle TradingConfirm event
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse ConfirmTrading(
PmcData pmcData,
ProcessBaseTradeRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle RagFairBuyOffer event
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse ConfirmRagfairTrading(
PmcData pmcData,
ProcessRagfairTradeRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Buy an item off the flea sold by a trader
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="pmcData">Player profile</param>
/// <param name="fleaOffer">Offer being purchased</param>
/// <param name="offerRequest">request data from client</param>
/// <param name="output">Output to send back to client</param>
private void BuyTraderItemFromRagfair(
string sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
OfferRequest offerRequest,
ItemEventRouterResponse output)
{
throw new NotImplementedException();
}
/// <summary>
/// Buy an item off the flea sold by a PMC
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="pmcData">Player profile</param>
/// <param name="fleaOffer">Offer being purchased</param>
/// <param name="offerRequest">request data from client</param>
/// <param name="output">Output to send back to client</param>
private void BuyPmcItemFromRagfair(
string sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
OfferRequest offerRequest,
ItemEventRouterResponse output)
{
throw new NotImplementedException();
}
/// <summary>
/// Is the provided offerid and ownerid from a player made offer
/// </summary>
/// <param name="offerId">id of the offer</param>
/// <param name="offerOwnerId">Owner id</param>
/// <returns>true if offer was made by a player</returns>
private bool IsPlayerOffer(
string offerId,
string offerOwnerId)
{
throw new NotImplementedException();
}
/// <summary>
/// Does Player have necessary trader loyalty to purchase flea offer
/// </summary>
/// <param name="fleaOffer">Flea offer being bought</param>
/// <param name="pmcData">Player profile</param>
/// <returns>True if player can buy offer</returns>
private bool PlayerLacksTraderLoyaltyLevelToBuyOffer(
RagfairOffer fleaOffer,
PmcData pmcData)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle SellAllFromSavage event
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse SellScavItemsToFence(
PmcData pmcData,
SellScavItemsToFenceRequestData request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Send the specified rouble total to player as mail
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="roublesToSend">amount of roubles to send</param>
/// <param name="trader">Trader to sell items to</param>
private void MailMoneyToPlayer(
string sessionId,
int roublesToSend,
Traders trader) // TODO: This is a static class now and cannot be passed as a param.
{
throw new NotImplementedException();
}
/// <summary>
/// Looks up an items children and gets total handbook price for them
/// </summary>
/// <param name="parentItemId">parent item that has children we want to sum price of</param>
/// <param name="items">All items (parent + children)</param>
/// <param name="handbookPrices">Prices of items from handbook</param>
/// <param name="traderDetails">Trader being sold to, to perform buy category check against</param>
/// <returns>Rouble price</returns>
private int GetPriceOfItemAndChildren(
string parentItemId,
List<Item> items,
Dictionary<string, int> handbookPrices,
TraderBase traderDetails)
{
throw new NotImplementedException();
}
}
+85
View File
@@ -0,0 +1,85 @@
using Core.Models.Eft.Common.Tables;
namespace Core.Controllers;
public class TraderController
{
/// <summary>
/// Runs when onLoad event is fired
/// Iterate over traders, ensure a pristine copy of their assorts is stored in traderAssortService
/// Store timestamp of next assort refresh in nextResupply property of traders .base object
/// </summary>
public void Load()
{
throw new NotImplementedException();
}
/// <summary>
/// Runs when onUpdate is fired
/// If current time is > nextResupply(expire) time of trader, refresh traders assorts and
/// Fence is handled slightly differently
/// </summary>
/// <returns></returns>
public bool Update()
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/trading/api/traderSettings
/// </summary>
/// <param name="sessionId">session id</param>
/// <returns>Return a list of all traders</returns>
public List<TraderBase> GetAllTraders(string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Order traders by their traderId (Ttid)
/// </summary>
/// <param name="traderA">First trader to compare</param>
/// <param name="traderB">Second trader to compare</param>
/// <returns>1,-1 or 0</returns>
private int SortByTraderId(
TraderBase traderA,
TraderBase traderB)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/trading/api/getTrader
/// </summary>
/// <param name="sessionId"></param>
/// <param name="traderId"></param>
/// <returns></returns>
public TraderBase GetTrader(
string sessionId,
string traderId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/trading/api/getTraderAssort
/// </summary>
/// <param name="sessionId"></param>
/// <param name="traderId"></param>
/// <returns></returns>
public TraderAssort GetAssort(
string sessionId,
string traderId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/items/prices/TRADERID
/// </summary>
/// <returns></returns>
public GetItemPricesResponse GetItemPrices()
{
throw new NotImplementedException();
}
}
+23
View File
@@ -0,0 +1,23 @@
namespace Core.Controllers;
public class WeatherController
{
/// <summary>
/// Handle client/weather
/// </summary>
/// <returns></returns>
public WeatherData Generate()
{
throw new NotImplementedException();
}
/// <summary>
/// Handle client/localGame/weather
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public GetLocalWeatherResponseData GenerateLocal(string sessionId)
{
throw new NotImplementedException();
}
}
+51
View File
@@ -0,0 +1,51 @@
using Core.Models.Eft.Common;
namespace Core.Controllers;
public class WishlistController
{
/// <summary>
/// Handle AddToWishList
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse AddToWishList(
PmcData pmcData,
AddItemToWishlistRequest request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle RemoveFromWishList event
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse RemoveFromWishList(
PmcData pmcData,
RemoveFromWishlistRequest request,
string sessionId)
{
throw new NotImplementedException();
}
/// <summary>
/// Handle changeWishlistItemCategory event
/// </summary>
/// <param name="pmcData"></param>
/// <param name="request"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public ItemEventRouterResponse ChangeWishListItemCategory(
PmcData pmcData,
ChangeWishlistItemCategoryRequest request,
string sessionId)
{
throw new NotImplementedException();
}
}