
///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_InventoryGroup_Weapons.h
// Author : Andy Tate
// Date   : 26-Nov-2007
//
// Copyright (C) 2007 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __AVP_INVENTORYGROUP_WEAPONS_H__
#define __AVP_INVENTORYGROUP_WEAPONS_H__

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "Inventory/AVP_Inventory_Group.h"
#include "Inventory/AVP_Inventory_HashIDs.h"
#include "Inventory/AVP_Inventory_ItemTypes.h"

////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////

class AVP_InventoryItem_Weapon;

////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class        : AVP_InventoryGroup_Weapons
// Author       : Andy Tate
// Date         : 26-Nov-2007
//
// Description  : Class to handle the control of the weapon inventory.
////////////////////////////////////////////////////////////////////////////////

class AVP_InventoryGroup_Weapons : public AVP_Inventory_Group
{
public:
	enum InventoryWeaponSlotType
	{
		AVP_INVENTORYWEAPON_SLOT_LOWER,
		AVP_INVENTORYWEAPON_SLOT_MIDDLE,
		AVP_INVENTORYWEAPON_SLOT_TOP,

		NUM_AVP_INVENTORYWEAPONSLOTTYPES
	};

	AVP_InventoryGroup_Weapons(AVP_Inventory_System& xSystem);

	virtual void Update(void);

	const AVP_InventoryItem_Weapon* GetItemOfType( AVPInventoryItemType eType ) const;

protected:
	virtual AVP_Inventory_Item*	CreateItemFromBlueprint(const Asura_Hash_ID uBlueprintHash, const Asura_Hash_ID uNameHash);
	virtual AVP_Inventory_Item*	CreateItemFromType( const int iType, const Asura_Hash_ID uBlueprintHash, const Asura_Hash_ID uNameHash );

	virtual void OnStateChange(const u_int uOldState, const u_int uNewState);

	virtual bool GetCanSetNewItem(const bool bInstant) const;

private:
	typedef AVP_Inventory_Group PARENT;

	AVP_InventoryGroup_Weapons(void);
	AVP_InventoryGroup_Weapons(const AVP_InventoryGroup_Weapons& xOther);
	AVP_InventoryGroup_Weapons&	operator=(const AVP_InventoryGroup_Weapons& xOther);
};

#endif   // ifndef __AVP_INVENTORYGROUP_WEAPONS_H__

/// End of file. ///
