int GlobalMessageQueueList::compact() { int *useList = new int[size() + 2]; for (uint i = 0; i < size() + 2; i++) useList[i] = 0; for (uint i = 0; i < size();) { if (_storage[i]->_isFinished) { disableQueueById(_storage[i]->_id); remove_at(i); } else { if ((uint)_storage[i]->_id < size() + 2) useList[_storage[i]->_id] = 1; i++; } } uint i; for (i = 1; i < size() + 2; i++) { if (!useList[i]) break; } delete [] useList; return i; }
void GlobalMessageQueueList::deleteQueueById(int id) { for (uint i = 0; i < size(); i++) if (_storage[i]->_id == id) { remove_at(i); disableQueueById(id); return; } }
void GlobalMessageQueueList::removeQueueById(int id) { for (uint i = 0; i < size(); i++) if (_storage[i]->_id == id) { _storage[i]->_flags &= 0xFD; // It is quite pointless remove_at(i); disableQueueById(id); return; } }
void AgentSet::move() { // go through backwards so remove does not affect later agents for (size_t i = size() - 1; i != paftl::npos; i--) { at(i).onMove(); if (at(i).getFrame() >= m_lifetime) { remove_at(i); } } }
int GlobalMessageQueueList::compact() { for (uint i = 0; i < size();) { if (((MessageQueue *)_storage[i])->_isFinished) { disableQueueById(_storage[i]->_id); remove_at(i); } else { i++; } } return size() + 1; }
void SpriteSets::remove(int idx) { if (idx >= 0) { if (idx < ((int)size() - 1)) { delete (*this)[idx]; (*this)[idx] = nullptr; } else { do { remove_at(size() - 1); } while (size() > 0 && (*this)[size() - 1] == nullptr); } if (_assetCount > 0) --_assetCount; } }
void SpriteSets::remove(int idx) { if (idx == SPRITE_SLOTS_MAX_SIZE) { delete _uiSprites; _uiSprites = nullptr; } else if (idx >= 0 && idx < (int)size()) { delete (*this)[idx]; if (idx < ((int)size() - 1)) { (*this)[idx] = nullptr; } else { do { remove_at(size() - 1); } while (size() > 0 && (*this)[size() - 1] == nullptr); } } }
void bridge_compound_rep::notify_remove (path p, int nr) { // cout << "Remove " << p << ", " << nr << " in " << st << "\n"; ASSERT (!is_nil (p), "nil path"); if (is_atom (p) || is_nil (body)) bridge_rep::notify_remove (p, nr); else { // bool mp_flag= is_multi_paragraph (st); if (is_func (fun, XMACRO, 2)) notify_macro (MACRO_REMOVE, fun[0]->label, -1, p, tree (as_string (nr))); else if (is_applicable (fun) && (p->item < N(fun))) notify_macro (MACRO_REMOVE, fun[p->item-delta]->label, -1, p->next, tree (as_string (nr))); st= remove_at (st, p, nr); // if (mp_flag != is_multi_paragraph (st)) valid= false; } status= CORRUPTED; }
int Inventory::deleteItemFromInventory(const Common::String &name) { int invNum = -1; for (int idx = 0; idx < (int)size() && invNum == -1; ++idx) { if (name.equalsIgnoreCase((*this)[idx]._name)) invNum = idx; } if (invNum == -1) // Item not present return 0; // Item found, so delete it remove_at(invNum); --_holdings; return 1; }
int remove_suscription(int sender_id, int console) { CPOSITION it; struct key_suscription *s; it = get_head_position(&t[console].suscribers); while(it != NULL) { s = (struct key_suscription *)get_next(&it); if(s->taskid == sender_id) { remove_at(&t[console].suscribers, it); free(s); return 0; // success } } return 1; }
int main(void) { // test_is_alowed(); initscr(); noecho(); keypad(stdscr,TRUE); refresh(); int ch;// = getch(); int x=0, y=0; board_t *board = new_board(10); bool turn_a = true; while (ch != 'q'){ switch(ch) { case KEY_LEFT: x--; break; case KEY_RIGHT: x++; break; case KEY_UP: y--; break; case KEY_DOWN: y++; break; case 'x': remove_at(y,x,0,0, board); break; case 't': turn_a = !turn_a ; break; case 's': shoot(y,x,0,0, board, turn_a); break; case 'r': dumb_fill(board->player_b, board->length);break; case 'p': place(y,x,0,0, board); break; default: show_board(0, 0, board, turn_a); } show_board(0, 0, board, turn_a); move(y,x); // printw("Hello World !!!"); ch = getch(); refresh(); } endwin(); return 0; }
void UISlots::draw(bool updateFlag, bool delFlag) { Scene &scene = _vm->_game->_scene; UserInterface &userInterface = scene._userInterface; DirtyArea *dirtyAreaPtr = nullptr; // Loop through setting up the dirty areas for (uint idx = 0; idx < size(); ++idx) { DirtyArea &dirtyArea = userInterface._dirtyAreas[idx]; UISlot &slot = (*this)[idx]; if (slot._flags >= IMG_STATIC) { dirtyArea._active = false; } else { dirtyArea.setUISlot(&slot); dirtyArea._textActive = true; if (slot._segmentId == IMG_SPINNING_OBJECT && slot._flags == IMG_FULL_UPDATE) { dirtyArea._active = false; dirtyAreaPtr = &dirtyArea; } } } userInterface._dirtyAreas.merge(1, userInterface._uiSlots.size()); if (dirtyAreaPtr) dirtyAreaPtr->_active = true; // Copy parts of the user interface background that need to be erased for (uint idx = 0; idx < size(); ++idx) { DirtyArea &dirtyArea = userInterface._dirtyAreas[idx]; UISlot &slot = (*this)[idx]; if (dirtyArea._active && dirtyArea._bounds.width() > 0 && dirtyArea._bounds.height() > 0 && slot._flags > -20) { if (slot._flags >= IMG_ERASE) { // Merge area userInterface.mergeFrom(&userInterface._surface, dirtyArea._bounds, Common::Point(dirtyArea._bounds.left, dirtyArea._bounds.top)); } else { // Copy area userInterface._surface.copyTo(&userInterface, dirtyArea._bounds, Common::Point(dirtyArea._bounds.left, dirtyArea._bounds.top)); } } } for (uint idx = 0; idx < size(); ++idx) { DirtyArea &dirtyArea = userInterface._dirtyAreas[idx]; UISlot &slot = (*this)[idx]; int slotType = slot._flags; if (slotType >= IMG_STATIC) { dirtyArea.setUISlot(&slot); if (!updateFlag) slotType &= ~0x40; dirtyArea._textActive = slotType > 0; slot._flags &= 0x40; } } userInterface._dirtyAreas.merge(1, userInterface._uiSlots.size()); for (uint idx = 0; idx < size(); ++idx) { DirtyArea *dirtyArea = &userInterface._dirtyAreas[idx]; UISlot &slot = (*this)[idx]; if (slot._flags >= IMG_STATIC && !(slot._flags & 0x40)) { if (!dirtyArea->_active) { do { dirtyArea = dirtyArea->_mergedArea; } while (!dirtyArea->_active); } if (dirtyArea->_textActive) { SpriteAsset *asset = scene._sprites[slot._spritesIndex]; // Get the frame details int frameNumber = ABS(slot._frameNumber); bool flipped = slot._frameNumber < 0; if (slot._segmentId == IMG_SPINNING_OBJECT) { MSprite *sprite = asset->getFrame(frameNumber - 1); sprite->copyTo(&userInterface, slot._position, sprite->getTransparencyIndex()); } else { MSprite *sprite = asset->getFrame(frameNumber - 1); if (flipped) { MSurface *spr = sprite->flipHorizontal(); userInterface.mergeFrom(spr, spr->getBounds(), slot._position, sprite->getTransparencyIndex()); delete spr; } else { userInterface.mergeFrom(sprite, sprite->getBounds(), slot._position, sprite->getTransparencyIndex()); } } } } } // Mark areas of the screen surface for updating if (updateFlag) { for (uint idx = 0; idx < size(); ++idx) { DirtyArea &dirtyArea = userInterface._dirtyAreas[idx]; if (dirtyArea._active && dirtyArea._textActive && dirtyArea._bounds.width() > 0 && dirtyArea._bounds.height() > 0) { // Flag area of screen as needing update Common::Rect r = dirtyArea._bounds; r.translate(0, scene._interfaceY); _vm->_screen.copyRectToScreen(r); } } } // Post-processing to remove slots no longer needed for (int idx = (int)size() - 1; idx >= 0; --idx) { UISlot &slot = (*this)[idx]; if (slot._flags < IMG_STATIC) { if (delFlag || updateFlag) remove_at(idx); else if (slot._flags > -20) slot._flags -= 20; } else { if (updateFlag) slot._flags &= ~0x40; else slot._flags |= 0x40; } } }
void SpriteSlots::cleanUp() { for (int i = (int)size() - 1; i >= 0; --i) { if ((*this)[i]._flags < IMG_STATIC) remove_at(i); } }
void SpriteSlots::deleteEntry(int index) { remove_at(index); }
void List::remove_item (int item) { remove_at (get_position (item)); }