Beispiel #1
0
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);
	}
}
Beispiel #3
0
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();
}
Beispiel #4
0
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));
    }
}
Beispiel #5
0
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));
    }
}
Beispiel #6
0
/**
 * 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);
}
Beispiel #7
0
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);
}