@ -85,28 +85,29 @@ void MWWorld::ContainerStore::storeState (const LiveCellRef<T>& ref, ESM::Object
ref . save ( state ) ;
}
/// \todo make this method const once const-correct ContainerStoreIterators are available
template < typename T >
void MWWorld : : ContainerStore : : storeStates ( const CellRefList < T > & collection ,
std : : vector < std : : pair < ESM : : ObjectState , int > > & states , bool equipable ) const
void MWWorld : : ContainerStore : : storeStates ( CellRefList < T > & collection ,
std : : vector < std : : pair < ESM : : ObjectState , int > > & states , bool equipable )
{
for ( typename CellRefList < T > : : List : : const_ iterator iter ( collection . mList . begin ( ) ) ;
for ( typename CellRefList < T > : : List : : iterator iter ( collection . mList . begin ( ) ) ;
iter ! = collection . mList . end ( ) ; + + iter )
{
if ( iter - > mData . getCount ( ) = = 0 )
continue ;
ESM : : ObjectState state ;
storeState ( * iter , state ) ;
int slot = equipable ? get Slot ( * iter ) : - 1 ;
int slot = equipable ? get RelativeSlot ( MWWorld : : ContainerStoreIterator ( this , iter ) ) : - 1 ;
states . push_back ( std : : make_pair ( state , slot ) ) ;
}
}
int MWWorld : : ContainerStore : : get Slot ( const MWWorld : : LiveCellRefBase& ref ) const
int MWWorld : : ContainerStore : : get Relative Slot ( const MWWorld : : ContainerStoreIterator& iter ) const
{
return - 1 ;
}
void MWWorld : : ContainerStore : : set Slot ( const MWWorld : : ContainerStoreIterator & iter , int slot ) { }
void MWWorld : : ContainerStore : : set Relative Slot ( const MWWorld : : ContainerStoreIterator & iter , int slot ) { }
const std : : string MWWorld : : ContainerStore : : sGoldId = " gold_001 " ;
@ -641,7 +642,7 @@ MWWorld::Ptr MWWorld::ContainerStore::search (const std::string& id)
return Ptr ( ) ;
}
void MWWorld : : ContainerStore : : writeState ( ESM : : InventoryState & state ) const
void MWWorld : : ContainerStore : : writeState ( ESM : : InventoryState & state )
{
state . mItems . clear ( ) ;
@ -678,16 +679,16 @@ void MWWorld::ContainerStore::readState (const ESM::InventoryState& state)
{
case ESM : : REC_ALCH : getState ( potions , iter - > first ) ; break ;
case ESM : : REC_APPA : getState ( appas , iter - > first ) ; break ;
case ESM : : REC_ARMO : set Slot ( getState ( armors , iter - > first ) , slot ) ; break ;
case ESM : : REC_ARMO : set Relative Slot ( getState ( armors , iter - > first ) , slot ) ; break ;
case ESM : : REC_BOOK : getState ( books , iter - > first ) ; break ;
case ESM : : REC_CLOT : set Slot ( getState ( clothes , iter - > first ) , slot ) ; break ;
case ESM : : REC_CLOT : set Relative Slot ( getState ( clothes , iter - > first ) , slot ) ; break ;
case ESM : : REC_INGR : getState ( ingreds , iter - > first ) ; break ;
case ESM : : REC_LOCK : set Slot ( getState ( lockpicks , iter - > first ) , slot ) ; break ;
case ESM : : REC_LOCK : set Relative Slot ( getState ( lockpicks , iter - > first ) , slot ) ; break ;
case ESM : : REC_MISC : getState ( miscItems , iter - > first ) ; break ;
case ESM : : REC_PROB : set Slot ( getState ( probes , iter - > first ) , slot ) ; break ;
case ESM : : REC_PROB : set Relative Slot ( getState ( probes , iter - > first ) , slot ) ; break ;
case ESM : : REC_REPA : getState ( repairs , iter - > first ) ; break ;
case ESM : : REC_WEAP : set Slot ( getState ( weapons , iter - > first ) , slot ) ; break ;
case ESM : : REC_LIGH : set Slot ( getState ( lights , iter - > first ) , slot ) ; break ;
case ESM : : REC_WEAP : set Relative Slot ( getState ( weapons , iter - > first ) , slot ) ; break ;
case ESM : : REC_LIGH : set Relative Slot ( getState ( lights , iter - > first ) , slot ) ; break ;
default :
std : : cerr < < " invalid item type in inventory state, refid " < < state . mRef . mRefID < < std : : endl ;