1
0
KF2-Dev-Scripts/IpDrv/Classes/McpUserInventoryBase.uc
2020-12-13 18:01:13 +03:00

327 lines
13 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*
* This is the base interface for manipulating a user's inventory
*/
class McpUserInventoryBase extends McpServiceBase
abstract
config(Engine);
/** The class name to use in the factory method to create our instance */
var config string McpUserInventoryClassName;
/**
* Item property which was generated from attribute tables for the item when it was instanced
*/
struct McpInventoryItemAttribute
{
/** The unique id for the attribute */
var string AttributeId;
/** The instanced value for this attribute */
var int Value;
};
/**
* Instanced inventory item aquired via (purchase,earn,etc)
*/
struct McpInventoryItem
{
/** The unique id of the item instance */
var string InstanceItemId;
/** The id of the original template this item was instanced from */
var string GlobalItemId;
/** Total earned amount of this item */
var int Quantity;
/** Total IAP aquired amount of this item */
var int QuantityIAP;
/** Scalar that persists from when the item was instanced */
var float Scalar;
/** The last time (UTC) when this item was modified */
var string LastUpdateTime;
/** Attributes that were generated when instanced to define the item properties */
var array<McpInventoryItemAttribute> Attributes;
};
/**
* Allows for specifying list of global items and quantities
*/
struct McpInventoryItemContainer
{
/** The id of the template item */
var string GlobalItemId;
/** Total amount of this item */
var int Quantity;
};
/**
* Holds a single user's save slot information for inventory items
*/
struct McpInventorySaveSlot
{
/** The owner of this save slot */
var string OwningMcpId;
/** The save slot id */
var string SaveSlotId;
/** The list of inventory items in this save slot */
var array<McpInventoryItem> Items;
};
/**
* @return the object that implements this interface or none if missing or failed to create/load
*/
final static function McpUserInventoryBase CreateInstance()
{
local class<McpUserInventoryBase> McpUserInventoryBaseClass;
local McpUserInventoryBase NewInstance;
McpUserInventoryBaseClass = class<McpUserInventoryBase>(DynamicLoadObject(default.McpUserInventoryClassName,class'Class'));
// If the class was loaded successfully, create a new instance of it
if (McpUserInventoryBaseClass != None)
{
NewInstance = new McpUserInventoryBaseClass;
NewInstance.Init();
}
return NewInstance;
}
/**
* Creates a new save slot for the user
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that is being create
* @param ParentSaveSlotId [optional] if specified then all existing IAP purchases
* from the parent save slot carry over to the newly created save slot
*/
function CreateSaveSlot(string McpId, string SaveSlotId, optional string ParentSaveSlotId);
/**
* Called once save slot creation completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that was created
* @param bWasSuccessful whether the creation succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnCreateSaveSlotComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error);
/**
* Deletes an existing user save slot and all the inventory items that belong to it
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that is being deleted
*/
function DeleteSaveSlot(string McpId, string SaveSlotId);
/**
* Called once save slot deletion completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that was deleted
* @param bWasSuccessful whether the deletion succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnDeleteSaveSlotComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error);
/**
* Query for the list of save slots that exist for the user
*
* @param McpId the id of the user that made the request
*/
function QuerySaveSlotList(string McpId);
/**
* Get the cached list of save slot ids for a user
*
* @param McpId the id of the user that made the request
*
* @return the list of save slot ids for the user
*/
function array<string> GetSaveSlotList(string McpId);
/**
* Called once save slot enumeration query completes
*
* @param McpId the id of the user that made the request
* @param bWasSuccessful whether the deletion succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnQuerySaveSlotListComplete(string McpId, bool bWasSuccessful, string Error);
/**
* Query for the list of current inventory items that exist for the user within a save slot
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot to find items for
*/
function QueryInventoryItems(string McpId, string SaveSlotId);
/**
* Called once inventory items enumeration query completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot to find items for
* @param bWasSuccessful whether the deletion succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnQueryInventoryItemsComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error);
/**
* Access the currently cached inventory items that have been downloaded for a user's save slot
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot to find items for
* @param OutInventoryItems the list of inventory items that should be filled in
*/
function GetInventoryItems(string McpId, string SaveSlotId, out array<McpInventoryItem> OutInventoryItems);
/**
* Access the currently cached inventory item that have been downloaded for a user's save slot by global id
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot to find items for
* @param InstanceItemId id for the item that is to be found
* @param OutInventoryItem the item that should be filled in
*
* @return true if found
*/
function bool GetInventoryItem(string McpId, string SaveSlotId, string InstanceItemId, out McpInventoryItem OutInventoryItem);
/**
* Purchase item and add it to the user's inventory
* Server determines the transaction is valid
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param GlobalItemId id for the item that is being purchased
* @param PurchaseItemIds list of instance item ids to be used when making the purchase
* @param StoreVersion current known version # of backend store by client
* @param Scalar to associate with the item and pass back to client
*/
function PurchaseItem(string McpId, string SaveSlotId, string GlobalItemId, array<string> PurchaseItemIds, int Quantity, int StoreVersion, float Scalar);
/**
* Called once item purchase completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param GlobalItemId id for the item that is being purchased
* @param UpdatedItemIds list of global item ids for inventory items that were updated
* @param bWasSuccessful whether the item purchase succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnPurchaseItemComplete(string McpId, string SaveSlotId, string GlobalItemId, array<string> UpdatedItemIds, bool bWasSuccessful, string Error);
/**
* Sell item and remove it from the user's inventory
* Server determines the transaction is valid
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being sold
* @param StoreVersion current known version # of backend store by client
* @param ExpectedResultItems optional list of items/quantities that the client expects to receive from the sale
*/
function SellItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion, optional const out array<McpInventoryItemContainer> ExpectedResultItems);
/**
* Called once item sell completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being sold
* @param UpdatedItemIds list of global item ids for inventory items that were updated
* @param bWasSuccessful whether the item sell succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnSellItemComplete(string McpId, string SaveSlotId, string InstanceItemId, array<string> UpdatedItemIds, bool bWasSuccessful, string Error);
/**
* Earn item and add it to the user's inventory
* Server determines the transaction is valid
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param GlobalItemId id for the item that is being earned
* @param Quantity number of the items that were earned
* @param StoreVersion current known version # of backend store by client
*/
function EarnItem(string McpId, string SaveSlotId, string GlobalItemId, int Quantity, int StoreVersion);
/**
* Called once item earn completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param GlobalItemId id for the item that is being earned
* @param UpdatedItemIds list of global item ids for inventory items that were updated
* @param bWasSuccessful whether the item earn succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnEarnItemComplete(string McpId, string SaveSlotId, string GlobalItemId, array<string> UpdatedItemIds, bool bWasSuccessful, string Error);
/**
* Consume item and remove it's consumed quantity from the user's inventory
* Server determines the transaction is valid
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being consumed
* @param Quantity number of the items that were consumed
* @param StoreVersion current known version # of backend store by client
*/
function ConsumeItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion);
/**
* Called once item consume completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being consumed
* @param UpdatedItemIds list of global item ids for inventory items that were updated
* @param bWasSuccessful whether the item consume succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnConsumeItemComplete(string McpId, string SaveSlotId, string InstanceItemId, array<string> UpdatedItemIds, bool bWasSuccessful, string Error);
/**
* Delete item and remove it from the user's inventory
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being deleted
* @param StoreVersion current known version # of backend store by client
*/
function DeleteItem(string McpId, string SaveSlotId, string InstanceItemId, int StoreVersion);
/**
* Called once item delete completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item is in
* @param InstanceItemId id for the item that is being deleted
* @param bWasSuccessful whether the item delete succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnDeleteItemComplete(string McpId, string SaveSlotId, string InstanceItemId, bool bWasSuccessful, string Error);
/**
* Record an IAP (In App Purchase) by sending receipt to server for validation
* Results in list of items being added to inventory if successful
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item(s) will be placed in once validated
* @param Receipt IAP receipt to validate the purchase on the server
*/
function RecordIap(string McpId, string SaveSlotId, string Receipt);
/**
* Called once record IAP operation completes
*
* @param McpId the id of the user that made the request
* @param SaveSlotId the save slot that the item(s) will be placed in once validated
* @param UpdatedItemIds list of item ids for inventory items that were updated
* @param bWasSuccessful whether the IAP succeeded and was validated or not
* @param Error string information about the error (if an error)
*/
delegate OnRecordIapComplete(string McpId, string SaveSlotId, array<string> UpdatedItemIds, bool bWasSuccessful, string Error);