void AgiEngine::selectItems(int n) { int fsel = 0; bool exit_select = false; while (!exit_select && !(shouldQuit() || _restartGame)) { if (n > 0) printItem(fsel, STATUS_BG, STATUS_FG); switch (waitAnyKey()) { case KEY_ENTER: setvar(vSelItem, _intobj[fsel]); exit_select = true; break; case KEY_ESCAPE: setvar(vSelItem, 0xff); exit_select = true; break; case KEY_UP: if (fsel >= 2) fsel -= 2; break; case KEY_DOWN: if (fsel + 2 < n) fsel += 2; break; case KEY_LEFT: if (fsel % 2 == 1) fsel--; break; case KEY_RIGHT: if (fsel % 2 == 0 && fsel + 1 < n) fsel++; break; case BUTTON_LEFT:{ int i = findItem(); if (i >= 0 && i < n) { setvar(vSelItem, _intobj[fsel = i]); debugC(6, kDebugLevelInventory, "item found: %d", fsel); showItems(); printItem(fsel, STATUS_BG, STATUS_FG); _gfx->doUpdate(); exit_select = true; } break; } default: break; } if (!exit_select) { showItems(); _gfx->doUpdate(); } } debugC(6, kDebugLevelInventory, "selected: %d", fsel); }
void HelpKeywordView::updateVisibleItems(bool visible) { static Hb::SceneItems items = Hb::TitleBarItem | Hb::StatusBarItem; if(visible) { showItems(items); } else { hideItems(items); } }
void GalaGV::setGala(int gala) { hideItems(mData->systeme.value(mData->gala)); if(mData->chosen != NULL){ delete mData->chosen; mData->showOwn = NULL; } if(mData->showESysteme.second){ hideItems(mData->eSysteme.value(mData->showESysteme.first+";"+QString::number(mData->gala))); } if( mData->showOwn){ hideItems(mData->own.value(mData->gala)); } if(mData->systeme.value(mData->gala).contains(mData->momentPos.first)) mData->momentPos.second->hide(); if(!mData->systeme.contains(gala)){ const QHash<QString,System> & sys = mDB->systeme(gala); QHashIterator<QString, System> i(sys); QHash<QString, QGraphicsEllipseItem *> hash; while(i.hasNext()){ i.next(); const System &s = i.value(); QGraphicsEllipseItem *i = makeMarkerItem(s.cords,s.sysnr,StandardSystem); hash.insert(s.sysnr,i); scene()->addItem(i); } mData->systeme.insert(gala,hash); } showItems(mData->systeme.value(gala)); mData->gala = gala; if(mData->showOwn) showOwn(true); if(mData->showESysteme.second) showESysteme(mData->showESysteme.first,true); if(mData->systeme.value(gala).contains(mData->momentPos.first)) setMomentPos(mData->momentPos.first); setGate(); }
void GalaGV::showOwn(bool show) { mData->showOwn = show; if(!mData->own.contains(mData->gala)){ QList<ODPlanet> l =mDB->loadOwnPlanis(mData->gala); QHash<QString,QGraphicsEllipseItem*> hash; for (int var = 0; var < l.size(); ++var) { const ODPlanet & p = l.at(var); QGraphicsEllipseItem *item = makeMarkerItem(p.cords,p.sys,Own,Qt::green,Mark); item->setFlags(QGraphicsItem::ItemIsSelectable); item->setToolTip(p.sysname + "("+ p.name+")"); hash.insert(p.index,item); scene()->addItem(item); } mData->own.insert(mData->gala,hash); } if(show){ showItems(mData->own.value(mData->gala)); }else { hideItems(mData->own.value(mData->gala)); } }
void GalaGV::showESysteme(const QString &ally, bool show) { if(!ally.isEmpty()){ mData->showESysteme.first = ally; mData->showESysteme.second = show; int gala =mData->gala; QString key = ally+";"+QString::number(gala); if(!mData->eSysteme.contains(key)){ QList<ESystem> l =mDB->eSysteme(ally,gala); QString cords; QHash<QString,QGraphicsEllipseItem*> hash; for (int var = 0; var < l.size(); ++var) { const ESystem & s = l.at(var); cords = s.cords; if(cords== "") cords = mData->systeme.value(mData->gala).value(s.id)->data(Cords).toString(); QGraphicsEllipseItem *item = makeMarkerItem(cords,s.id,Ally,s.isWerft?Qt::yellow:QColor("#E87A1A"),Mark); if(s.isChecked){ item->setOpacity(0.5); } item->setData(Esystem,QVariant::fromValue(s)); item->setFlag(QGraphicsItem::ItemIsSelectable,true); item->setToolTip(s.namen.join(",")+" : "+(s.isWerft?"Werft":"")); hash.insert(s.id,item); scene()->addItem(item); } mData->eSysteme.insert(key,hash); qDebug() << Q_FUNC_INFO << mData->eSysteme.keys()<< mData->eSysteme.value(key).count(); } if(show) showItems(mData->eSysteme.value(key)); else hideItems(mData->eSysteme.value(key)); } }
/** * Display inventory items. */ void AgiEngine::inventory() { int oldFg, oldBg; int n; // screen is white with black text oldFg = _game.colorFg; oldBg = _game.colorBg; _game.colorFg = 0; _game.colorBg = 15; _gfx->clearScreen(_game.colorBg); switch (getLanguage()) { case Common::RU_RUS: printText(YOUHAVE_MSG_RU, 0, YOUHAVE_X_RU, YOUHAVE_Y_RU, 40, STATUS_FG, STATUS_BG); break; default: printText(YOUHAVE_MSG, 0, YOUHAVE_X, YOUHAVE_Y, 40, STATUS_FG, STATUS_BG); break; } // FIXME: doesn't check if objects overflow off screen... _intobj = (uint8 *)malloc(4 + _game.numObjects); memset(_intobj, 0, (4 + _game.numObjects)); n = showItems(); switch (getLanguage()) { case Common::RU_RUS: if (getflag(fStatusSelectsItems)) { printText(SELECT_MSG_RU, 0, SELECT_X_RU, SELECT_Y_RU, 40, STATUS_FG, STATUS_BG); } else { printText(ANY_KEY_MSG_RU, 0, ANY_KEY_X_RU, ANY_KEY_Y_RU, 40, STATUS_FG, STATUS_BG); } break; default: if (getflag(fStatusSelectsItems)) { printText(SELECT_MSG, 0, SELECT_X, SELECT_Y, 40, STATUS_FG, STATUS_BG); } else { printText(ANY_KEY_MSG, 0, ANY_KEY_X, ANY_KEY_Y, 40, STATUS_FG, STATUS_BG); } break; } _gfx->flushScreen(); // If flag 13 is set, we want to highlight & select an item. // opon selection, put objnum in var 25. Then on esc put in // var 25 = 0xff. if (getflag(fStatusSelectsItems)) selectItems(n); free(_intobj); if (!getflag(fStatusSelectsItems)) waitAnyKey(); _gfx->clearScreen(0); writeStatus(); _picture->showPic(); _game.colorFg = oldFg; _game.colorBg = oldBg; _game.hasPrompt = 0; flushLines(_game.lineUserInput, 24); }
int main() { int i; printf("Test: New list.\n"); list_t* list = listInit(freeItem); listDebugShow(list,LIST_DEBUG_SHOW_BACKWARD|LIST_DEBUG_SHOW_FORWARD); listItem* it; printf("\nTest: Appending 4 items to list.\n"); listAppendData(list, mkItem(1, "Fisk") ); listAppendData(list, mkItem(2, "Hund") ); it=listAppendData(list, mkItem(3, "Hest") ); listAppendData(list, mkItem(4, "Rose") ); listDebugShow(list,LIST_DEBUG_SHOW_SHORT); showItems(list); printf("\nTest: Prepending 4 items.\n"); listPrependData(list, mkItem(5, "Laks") ); listPrependData(list, mkItem(6, "Ko") ); listPrependData(list, mkItem(7, "Tiger") ); listPrependData(list, mkItem(8, "Zebra") ); listDebugShow(list,LIST_DEBUG_SHOW_SHORT); showItems(list); printf("\nTest: Removing item (Hest) from list.\n"); listRemoveItem(list,it, LIST_PREV); listDebugShow(list,LIST_DEBUG_SHOW_SHORT); showItems(list); printf("\nTest: Inserting 4 items\n"); listInsertAtIdx(list, mkItem(1, "New Pos 0"), 0 ); it=listInsertAtIdx(list, mkItem(1, "New Pos 2"), 2 ); listInsertAtIdx(list, mkItem(1, "New Pos 8"), 8 ); listInsertAtIdx(list, mkItem(list->count, "New Last Pos"), list->count ); listDebugShow(list,LIST_DEBUG_SHOW_SHORT); showItems(list); printf("\nTest: Insert after item %p (New Pos 2)\n"); listInsertAfterItem(list, it, mkItem(2, "New Pos 3") ); listDebugShow(list,LIST_DEBUG_SHOW_SHORT); showItems(list); printf("\nTest: Getting data.\n"); for(i=0; i < list->count; i++) { printf(" Idx %i Got data: %p\n", i, listGetItemAt(list, i )->data ); } printf("\nTest: Filling list into array.\n"); item** arr = (item**)listAddToArray( malloc(sizeof(void*)*list->count), list ); int idx; for(idx=0; idx < list->count; idx++) { printf(" Arr[%i] = %p\n",idx,arr[idx] ); showItem(arr[idx]); } printf("\nTest: Appending array to list2.\n"); list_t* list2 = listAddFromArray(listInit(NULL), (void*)arr, list->count); listDebugShow(list2,LIST_DEBUG_SHOW_SHORT); showItems(list2); list_t* list3 = listAddFromArray(listInit(NULL), (void*)arr, list->count); free(arr); printf("\nRemoving all list2 elements individually in a forward loop."); it=&list2->begin; while( LISTFWD(list2,it) ) { it=listRemoveItem(list2,it, LIST_PREV); } listDebugShow(list2, LIST_DEBUG_SHOW_BACKWARD|LIST_DEBUG_SHOW_FORWARD); printf("\nRemoving all list3 elements individually in a reverse loop."); it=&list3->end; while( LISTBCK(list3, it) ) { it=listRemoveItem(list3,it,LIST_NEXT); } listDebugShow(list3, LIST_DEBUG_SHOW_BACKWARD|LIST_DEBUG_SHOW_FORWARD); printf("\nTest: Freeing lists.\n"); listFree(list); listFree(list2); printf("\nTests done, it's up to you to figure out if they passed, <nelson>hahaaa!</nelson>\n"); return(0); }