CResourceDef * CItemSpawn::FixDef() { ADDTOCALLSTACK("CitemSpawn:FixDef"); // Get a proper RESOURCE_ID from the id provided. // RETURN: true = ok. RESOURCE_ID_BASE rid = ( IsType(IT_SPAWN_ITEM) ? m_itSpawnItem.m_ItemID : m_itSpawnChar.m_CharID ); if ( rid.GetResType() != RES_UNKNOWN ) { return STATIC_CAST <CResourceDef *>(g_Cfg.ResourceGetDef(rid)); } // No type info here !? if ( IsType(IT_SPAWN_ITEM)) { ITEMID_TYPE id = static_cast<ITEMID_TYPE>(rid.GetResIndex()); if ( id < ITEMID_TEMPLATE ) { return( TryItem( id ) ); } else { // try a template. rid = RESOURCE_ID( RES_TEMPLATE, id ); CResourceDef * pDef = g_Cfg.ResourceGetDef(rid); if ( pDef ) { m_itSpawnItem.m_ItemID = rid; return( STATIC_CAST <CResourceDef *>( pDef )); } //if fails return( TryItem( id ) ); } } else { CREID_TYPE id = static_cast<CREID_TYPE>(rid.GetResIndex()); if ( id < SPAWNTYPE_START ) { return( TryChar( id )); } else { // try a spawn group. rid = RESOURCE_ID( RES_SPAWN, id ); CResourceDef * pDef = g_Cfg.ResourceGetDef(rid); if ( pDef ) { m_itSpawnChar.m_CharID = rid; return( STATIC_CAST <CResourceDef *>( pDef )); } //if fails return( TryChar( id )); } } }
CResourceDef *CItemSpawn::FixDef() { ADDTOCALLSTACK("CitemSpawn:FixDef"); RESOURCE_ID_BASE rid = (IsType(IT_SPAWN_ITEM) ? m_itSpawnItem.m_ItemID : m_itSpawnChar.m_CharID); if ( rid.GetResType() != RES_UNKNOWN ) return static_cast<CResourceDef *>(g_Cfg.ResourceGetDef(rid)); // No type info here !? if ( IsType(IT_SPAWN_CHAR) ) { CREID_TYPE id = static_cast<CREID_TYPE>(rid.GetResIndex()); if ( id < SPAWNTYPE_START ) return TryChar(id); // try a spawn group. rid = RESOURCE_ID(RES_SPAWN, id); CResourceDef *pDef = g_Cfg.ResourceGetDef(rid); if ( pDef ) { m_itSpawnChar.m_CharID = rid; return pDef; } return TryChar(id); } else { ITEMID_TYPE id = static_cast<ITEMID_TYPE>(rid.GetResIndex()); if ( id < ITEMID_TEMPLATE ) return TryItem(id); // try a template. rid = RESOURCE_ID(RES_TEMPLATE, id); CResourceDef *pDef = g_Cfg.ResourceGetDef(rid); if ( pDef ) { m_itSpawnItem.m_ItemID = rid; return pDef; } return TryItem(id); } }