int lruCacheGet(int key) { struct LRUItem * foundItem = lruCacheFind(key); if (foundItem) { pickupItem(foundItem, foundItem->value); return foundItem->value; } return -1; }
void Parallaction::runZone(ZonePtr z) { debugC(3, kDebugExec, "runZone (%s)", z->_name); uint16 actionType = ACTIONTYPE(z); debugC(3, kDebugExec, "actionType = %x, itemType = %x", actionType, ITEMTYPE(z)); switch (actionType) { case kZoneExamine: enterCommentMode(z); return; case kZoneGet: pickupItem(z); break; case kZoneDoor: if (z->_flags & kFlagsLocked) break; updateDoor(z, !(z->_flags & kFlagsClosed)); break; case kZoneHear: if (z->u._hearChannel == MUSIC_HEAR_CHANNEL) { _soundMan->execute(SC_SETMUSICFILE, z->u._filename.c_str()); _soundMan->execute(SC_PLAYMUSIC); } else { _soundMan->execute(SC_SETSFXCHANNEL, z->u._hearChannel); _soundMan->execute(SC_SETSFXLOOPING, (int)((z->_flags & kFlagsLooping) == kFlagsLooping)); _soundMan->execute(SC_SETSFXVOLUME, 60); _soundMan->execute(SC_PLAYSFX, z->u._filename.c_str()); } break; case kZoneSpeak: if (z->u._speakDialogue) { enterDialogueMode(z); return; } break; } debugC(3, kDebugExec, "runZone completed"); _cmdExec->run(z->_commands, z); return; }
void lruCacheSet(int key, int value) { struct LRUItem * foundItem = lruCacheFind(key); if (foundItem == NULL) { // It's a new key. if (mCacheSize < mCapacity) { // The cache list capacity is not full, append a new item to head only. appendItem(key, value); } else { // The cache list capacity is full, must be eliminate a item. eliminateItem(key, value); } } else { // Pickup the item to head. pickupItem(foundItem, value); } }
void P_TouchSpecialMobj(mobj_t* special, mobj_t* toucher) { player_t* player; coord_t delta; itemtype_t item; delta = special->origin[VZ] - toucher->origin[VZ]; if(delta > toucher->height || delta < -8) { // Out of reach. return; } // Dead thing touching (can happen with a sliding player corpse). if(toucher->health <= 0) return; player = toucher->player; // Identify by sprite. if((item = getItemTypeBySprite(special->sprite)) != IT_NONE) { if(!pickupItem(player, item, (special->flags & MF_DROPPED)? true : false)) return; // Don't destroy the item. } else { App_Log(DE2_MAP_WARNING, "P_TouchSpecialMobj: Unknown gettable thing %i", (int) special->type); } if(special->flags & MF_COUNTITEM) { player->itemCount++; player->update |= PSF_COUNTERS; } P_MobjRemove(special, false); if(!mapSetup) player->bonusCount += BONUSADD; }