A classe SPG_InventoryManager existe para permitir a criação de itens de inventário baseados em Archetypes. No Platformer Kit ela é usada para a criação da arma do jogador.
O código da classe está abaixo:
O código da classe está abaixo:
class SPG_InventoryManager extends InventoryManager;
simulated function Inventory CreateInventoryArchetype(Inventory NewInventoryItemArchetype, optional bool bDoNotActivate)
{
local Inventory Inv;
// Ensure the inventory archetype is valid
if (NewInventoryItemArchetype != None)
{
// Spawn the inventory archetype
Inv = Spawn(NewInventoryItemArchetype.Class, Owner,,,, NewInventoryItemArchetype);
// Spawned the inventory, and add the inventory
if (Inv != None && !AddInventory(Inv, bDoNotActivate))
{
// Unable to add the inventory, so destroy the spawned inventory
Inv.Destroy();
Inv = None;
}
}
// Return the spawned inventory
return Inv;
}
defaultproperties
{
// Create the pending fire array
PendingFire(0)=0
PendingFire(1)=0
}
A função CreateInventoryArchetype() é chamada a partir da classe SPG_GameInfo. Ela utiliza a função Spawn() para criar uma instância da classe Inventory baseada no Archetype recebido como parâmetro.
A função Spawn() é definida na classe Actor e possui os seguintes parâmetros:
A função Spawn() é definida na classe Actor e possui os seguintes parâmetros:
native noexport final function coerce actor Spawn
(
class<actor> SpawnClass,
optional actor SpawnOwner,
optional name SpawnTag,
optional vector SpawnLocation,
optional rotator SpawnRotation,
optional Actor ActorTemplate,
optional bool bNoCollisionFail
);
Depois de criada a instância de Inventory, ela é adicionado ao inventário do jogador através da função AddInventory(). Você encontra o código desta função no meu artigo "PickupFactory e Inventory em UnrealScript".
Se por alguma razão não for possível adicionar o Inventory, deve ser chamada a função Destroy() para remover o objeto da memória. A função Destroy() não é executada imediatamente, por isso é necessário atribuir "None" à variável logo após a chamada à função Destroy().