
/**@class		InventorySlots
 * @brief		provides access to slot configuration
 **/
class InventorySlots
{	
	/**@NOTE: engine pre-populates this class with first 32 slots from CfgSlots (uppercased)
	 **/
	
	/** \name C++ constants
		Constants filled in from C++
	*/
	//@{
	//! Amount of pre-populated slots (32)
	const int COUNT;
	//! Invalid slot (-1)
	const int INVALID;
	//@}
	
	#ifdef DIAG_DEVELOPER
	private void InventorySlots() {}
	private void ~InventorySlots() {}
	#else
	void InventorySlots() {}
	void ~InventorySlots() {}
	#endif

	/**@fn		GetSlotIdFromString
	 * @brief	converts string to slot_id
	 * @param[in]	slot_name	\p	slot name to be find.
	 * @return		slot id or InventorySlots.INVALID
	 *
	 * @example 
	 *		int slot = InventorySlots.GetSlotIdFromString("FireWood");
	 *		if (slot != InventorySlots.INVALID)
	 *
	 * @NOTE the example looks in the DZ/data/config.cpp and searches for class entry Slot_##slot_name
	 *		class Slot_Firewood { whatever };
	 *
	 * i.e. it does NOT look at name= or displayName= attributes of the entry!
	 **/
	static proto native int GetSlotIdFromString(string slot_name);
	/**@fn		GetSlotName
	 * @brief	converts slot_id to string
	 * @param[in]	slot_id	\p	slot id to be find.
	 * @return		string or null string
	 **/
	static proto native owned string GetSlotName(int id);
	/**@fn		GetSlotDisplayName
	 * @brief	converts slot_id to string
	 * @param[in]	slot_id	\p	slot id to be find.
	 * @return		string or null string
	 **/
	static proto native owned string GetSlotDisplayName(int id);
	/**@fn		IsSlotIdValid
	 * @brief	verifies existence of the slot id
	 * @return	true if slot valid
	 **/
	static proto native bool IsSlotIdValid(int slotId);
	/**@fn		GetStackMaxForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @return	stackMax attribute from corresponding entry (or default value == 1)
	 **/
	static proto native int GetStackMaxForSlotId(int slot_Id);
	/**@fn		GetShowForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @return	show attribute from corresponding entry (or default value == true)
	 **/
	static proto native bool GetShowForSlotId(int slot_Id);
	/**@fn		GetAutoAttachForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @return	auto attach attribute from corresponding entry (or default value == 1)
	 **/
	static proto native bool GetAutoAttachForSlotId(int slot_Id);
	/**@fn		GetBoneNameForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @param[out]	bone_name	\p	selection filled with attribute from corresponding entry
	 * @return	true if slot valid
	 **/	
	static proto bool GetBoneNameForSlotId(int slot_Id, out string bone_name);
	/**@fn		GetSelectionForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @param[out]	selection	\p	selection filled with attribute from corresponding entry
	 * @return	true if slot valid
	 **/
	static proto bool GetSelectionForSlotId(int slot_Id, out string selection);

	/**@fn		GetBoneIndexForSlotId
	 * @param[in]	slot_id	\p	queried slot
	 * @return	stackMax attribute from corresponding entry (or default value == 1)
	 **/
	//static proto native int GetBoneIndexForSlotId (int slot_Id);
};


