2013-12-20 20:02:42 +01:00
# ifndef REFERENCEABLECHECKSTAGE_H
# define REFERENCEABLECHECKSTAGE_H
# include "../world/universalid.hpp"
# include "../doc/stage.hpp"
# include "../world/data.hpp"
# include "../world/refiddata.hpp"
namespace CSMTools
{
class ReferenceableCheckStage : public CSMDoc : : Stage
{
public :
2013-12-29 21:02:53 +01:00
ReferenceableCheckStage ( const CSMWorld : : RefIdData & referenceable , const CSMWorld : : IdCollection < ESM : : Race > & races , const CSMWorld : : IdCollection < ESM : : Class > & classes , const CSMWorld : : IdCollection < ESM : : Faction > & factions ) ;
2013-12-20 20:02:42 +01:00
virtual void perform ( int stage , std : : vector < std : : string > & messages ) ;
virtual int setup ( ) ;
private :
2013-12-30 13:23:16 +01:00
//CONCRETE CHECKS
2013-12-20 20:02:42 +01:00
void bookCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Book > & records , std : : vector < std : : string > & messages ) ;
2013-12-20 22:31:17 +01:00
void activatorCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Activator > & records , std : : vector < std : : string > & messages ) ;
2013-12-21 12:07:40 +01:00
void potionCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Potion > & records , std : : vector < std : : string > & messages ) ;
void apparatusCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Apparatus > & records , std : : vector < std : : string > & messages ) ;
2013-12-22 14:22:03 +01:00
void armorCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Armor > & records , std : : vector < std : : string > & messages ) ;
2013-12-22 14:32:42 +01:00
void clothingCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Clothing > & records , std : : vector < std : : string > & messages ) ;
2013-12-22 14:42:17 +01:00
void containerCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Container > & records , std : : vector < std : : string > & messages ) ;
2013-12-23 12:32:35 +01:00
void creatureCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Creature > & records , std : : vector < std : : string > & messages ) ;
2013-12-26 12:59:43 +01:00
void doorCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Door > & records , std : : vector < std : : string > & messages ) ;
2013-12-30 13:23:16 +01:00
void ingredientCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Ingredient > & records , std : : vector < std : : string > & messages ) ;
void creaturesLevListCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : CreatureLevList > & records , std : : vector < std : : string > & messages ) ;
void itemLevelledListCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : ItemLevList > & records , std : : vector < std : : string > & messages ) ;
void lightCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Light > & records , std : : vector < std : : string > & messages ) ;
void lockpickCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Lockpick > & records , std : : vector < std : : string > & messages ) ;
void miscCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Miscellaneous > & records , std : : vector < std : : string > & messages ) ;
void npcCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : NPC > & records , std : : vector < std : : string > & messages ) ;
2014-01-03 11:31:54 +01:00
void weaponCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Weapon > & records , std : : vector < std : : string > & messages ) ;
void probeCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Probe > & records , std : : vector < std : : string > & messages ) ;
void repairCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Repair > & records , std : : vector < std : : string > & messages ) ;
void staticCheck ( int stage , const CSMWorld : : RefIdDataContainer < ESM : : Static > & records , std : : vector < std : : string > & messages ) ;
2014-01-06 18:43:44 +01:00
//FINAL CHECK
void finalCheck ( std : : vector < std : : string > & messages ) ;
2014-01-02 20:20:18 +01:00
//TEMPLATE CHECKS
2014-01-03 11:31:54 +01:00
template < typename ITEM > void inventoryItemCheck ( const ITEM & someitem , std : : vector < std : : string > & messages , const std : : string & someid , bool enchantable ) ; //for all enchantable items.
template < typename ITEM > void inventoryItemCheck ( const ITEM & someitem , std : : vector < std : : string > & messages , const std : : string & someid ) ; //for non-enchantable items.
template < typename TOOL > void toolCheck ( const TOOL & sometool , std : : vector < std : : string > & messages , const std : : string & someid , bool canbebroken ) ; //for tools with uses.
template < typename TOOL > void toolCheck ( const TOOL & sometool , std : : vector < std : : string > & messages , const std : : string & someid ) ; //for tools without uses.
2014-01-05 17:31:54 +01:00
template < typename LIST > void listCheck ( const LIST & somelist , std : : vector < std : : string > & messages , const std : : string & Som ) ;
2014-01-02 20:20:18 +01:00
2013-12-28 17:35:04 +01:00
const CSMWorld : : RefIdData & mReferencables ;
2013-12-30 13:23:16 +01:00
const CSMWorld : : IdCollection < ESM : : Race > & mRaces ;
const CSMWorld : : IdCollection < ESM : : Class > & mClasses ;
const CSMWorld : : IdCollection < ESM : : Faction > & mFactions ;
2014-01-06 18:43:44 +01:00
bool mPlayerPresent ;
2013-12-20 20:02:42 +01:00
} ;
}
# endif // REFERENCEABLECHECKSTAGE_H