Ejemplo n.º 1
0
void ac_ChooseWorld()
{
	num_files = 0;
	memset(world_info, 0, sizeof(world_info));

	scan_for_wwd("./world");
#ifdef __linux__
	extern char homepath[256];

	scan_for_wwd(homepath);
#endif

	// Now choose the world
	SDL_Event event;
	MENU *m = &WorldMenu;
	m->num = num_files;
	m->sel = 0;

	done = 0;
	while(!done) {
		while(SDL_PollEvent(&event))
			if(event.type == SDL_KEYDOWN) {
				if(event.key.keysym.sym == SDLK_LEFT) {
					if(m->sel > 0) {
						m->sel--;
						PlaySound(0);
					}
				} else if(event.key.keysym.sym == SDLK_RIGHT) {
					if(m->sel < m->num - 1) {
						m->sel++;
						PlaySound(0);
					}
				} else if(event.key.keysym.sym == SDLK_RETURN ||
					  event.key.keysym.sym == SDLK_LCTRL) {
					// reload new brave world
					FreeWorld(wwd);
					wwd = LoadWorld(world_info[m->sel].fullname);
					PlaySound(1);
					done = 1;
				} else if(event.key.keysym.sym == SDLK_ESCAPE) {
					done = 1;
				}
			}

		RedrawMenu(m);

		MPrint(world_info[m->sel].title, 130, 254, 252);
		MPrint(world_info[m->sel].author, 140, 254, 252);
		MPrint(world_info[m->sel].areas, 150, 254, 252);
		MPrint("PRESS LEFT/RIGHT TO SELECT", 170, 255, 252);
		MPrint("<START> TO CONFIRM", 180, 255, 252);

		BlitAndWait(1);
	}

	done = 0;
}
Ejemplo n.º 2
0
/** The main event loop. */
void MainLoop() {

   XEvent event;

   keyRight = XKeysymToKeycode(display, XK_Right);
   keyLeft = XKeysymToKeycode(display, XK_Left);
   keyUp = XKeysymToKeycode(display, XK_Up);
   keyDown = XKeysymToKeycode(display, XK_Down);
   keyESC = XKeysymToKeycode(display, XK_Escape);
   keySpace = XKeysymToKeycode(display, XK_space);
   keyEnter = XKeysymToKeycode(display, XK_Return);
   keyBackspace = XKeysymToKeycode(display, XK_BackSpace);

   keyJ = XKeysymToKeycode(display, XK_J);
   keyK = XKeysymToKeycode(display, XK_K);
   keyL = XKeysymToKeycode(display, XK_L);
   keyI = XKeysymToKeycode(display, XK_I);

   ShowMenu();

   for(;;) {
      while(XPending(display) > 0) {
         XNextEvent(display, &event);
         switch(event.type) {
         case Expose:
            RedrawMenu();
            break;
         case KeyPress:
            if(event.xkey.keycode == keyDown
               || event.xkey.keycode == keyK) {
               MoveMenuDown();
            } else if(event.xkey.keycode == keyUp
               || event.xkey.keycode == keyI) {
               MoveMenuUp();
            } else if(event.xkey.keycode == keySpace
               || event.xkey.keycode == keyEnter) {
               if(!DoAction()) {
                  return;
               }
            }
            break;
         case ButtonPress:
            if(!DoAction()) {
               return;
            }
            break;
         case MotionNotify:
            SelectMenu(event.xmotion.x, event.xmotion.y);
            break;
         default:
            break;
         }
      }
   }

}
Ejemplo n.º 3
0
void BenchmarkMenu::OnClickUp(const Point2i &mousePosition, int button)
{
  if (tests->Contains(mousePosition)) {
    Widget *widget = tests->ClickUp(mousePosition, button);
    if (widget && widget!=graph) {
      Launch(static_cast<BenchItem*>(widget));
      RedrawMenu();
    } else if (widget) {
      graph->NeedRedrawing();
    }
  }
}
Ejemplo n.º 4
0
void RunMenu(MENU *m)
{
	int cnt = 0, TimeToDemo = 0;
	SDL_Event event;

	done = 0;

	while(!done) {
		while(SDL_PollEvent(&event))
			if(event.type == SDL_KEYDOWN) {
				if(event.key.keysym.sym == SDLK_UP && m->sel > 0) {
					cnt = 10;
					m->sel--;
					TimeToDemo = 0;
					PlaySound(0);
				} else if(event.key.keysym.sym ==  SDLK_DOWN && m->sel < m->num - 1) {
					cnt = 10;
					m->sel++;
					TimeToDemo = 0;
					PlaySound(0);
				} else if(event.key.keysym.sym == SDLK_RETURN ||
					  event.key.keysym.sym == SDLK_LCTRL) {
					PlaySound(1);
					if((m->menu + m->sel)->action) (*(m->menu + m->sel)->action)();
				} else if(event.key.keysym.sym == SDLK_ESCAPE) {
					cnt = 10;
					done = 1;
				}
			}

		TimeToDemo++;

		RedrawMenu(m);
		BlitAndWait(1);
  
		if(TimeToDemo == 1000) {
			// If no keys are pressed for a while, starts the demo
			srand(time(NULL));
			PlayGame(DEMO, rand() % wwd->numofareas, rand() % 5, (rand() % 2) + 1);
			//CLS : Fade 1
			//ShowCredits();
			ShowTop10(-1, -1);
			TimeToDemo = 0;
		}
	}
}
Ejemplo n.º 5
0
void Menu::key_down()
{
  widgets.SetFocusOnNextWidget();
  RedrawMenu();
}
Ejemplo n.º 6
0
void Menu::key_up()
{
  widgets.SetFocusOnPreviousWidget();
  RedrawMenu();
}