-char str[10];
-
-
-strcpy(levelfilename,"level1");
-
-initmenu();
-menumenu = MENU_LEVELEDITOR;
-show_menu = YES;
-
-loadshared();
-le_loadlevel();
-loadlevelgfx();
-
-selection = load_image(DATA_PREFIX "/images/leveleditor/select.png", USE_ALPHA);
-
-int done;
-done = 0;
-
-int x, y, i; /* for cicles */
-int pos_x, cursor_x, cursor_y, old_cursor_x, fire;
-
-pos_x = 0;
-cursor_x = 3*32;
-old_cursor_x = cursor_x;
-cursor_y = 2*32;
-fire = DOWN;
-
-SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
-
-SDL_Event event;
-SDLKey key;
-SDLMod keymod;
-
-while(1)
- {
- SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, bkgd_red, bkgd_green, bkgd_blue));
-
- keymod = SDL_GetModState();
-
- while(SDL_PollEvent(&event))
- {
- // testing SDL_KEYDOWN, SDL_KEYUP and SDL_QUIT events
- switch(event.type)
- {
- case SDL_KEYDOWN: // key pressed
- key = event.key.keysym.sym;
- if(show_menu)
- {
- menu_event(key);
- break;
- }
- switch(key)
- {
- case SDLK_LEFT:
- if(fire == DOWN)
- cursor_x -= KEY_CURSOR_SPEED;
- else
- cursor_x -= KEY_CURSOR_FASTSPEED;
-
- if(cursor_x < 0)
- cursor_x = 0;
- break;
- case SDLK_RIGHT:
- if(fire == DOWN)
- cursor_x += KEY_CURSOR_SPEED;
- else
- cursor_x += KEY_CURSOR_FASTSPEED;
-
- if(cursor_x > (level_width*32) - 1)
- cursor_x = (level_width*32) - 1;
- break;
- case SDLK_UP:
- if(fire == DOWN)
- cursor_y -= KEY_CURSOR_SPEED;
- else
- cursor_y -= KEY_CURSOR_FASTSPEED;
-
- if(cursor_y < 0)
- cursor_y = 0;
- break;
- case SDLK_DOWN:
- if(fire == DOWN)
- cursor_y += KEY_CURSOR_SPEED;
- else
- cursor_y += KEY_CURSOR_FASTSPEED;
-
- if(cursor_y > 480-32)
- cursor_y = 480-32;
- break;
- case SDLK_LCTRL:
- fire = UP;
- break;
- case SDLK_F1:
- showhelp();
- break;
- case SDLK_HOME:
- cursor_x = 0;
- break;
- case SDLK_END:
- cursor_x = (level_width * 32) - 32;
- break;
- case SDLK_PERIOD:
- le_change(cursor_x, cursor_y, 0, '.');
- break;
- case SDLK_a:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'A');
- else
- le_change(cursor_x, cursor_y, 0, 'a');
- break;
- case SDLK_b:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'B');
- break;
- case SDLK_c:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'C');
- else
- le_change(cursor_x, cursor_y, 0, 'c');
- break;
- case SDLK_d:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'D');
- else
- le_change(cursor_x, cursor_y, 0, 'd');
- break;
- case SDLK_e:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'E');
- else
- le_change(cursor_x, cursor_y, 0, 'e');
- break;
- case SDLK_f:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'F');
- else
- le_change(cursor_x, cursor_y, 0, 'f');
- break;
- case SDLK_g:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'G');
- else
- le_change(cursor_x, cursor_y, 0, 'g');
- break;
- case SDLK_h:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'H');
- else
- le_change(cursor_x, cursor_y, 0, 'h');
- break;
- case SDLK_i:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'I');
- else
- le_change(cursor_x, cursor_y, 0, 'i');
- break;
- case SDLK_j:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'J');
- else
- le_change(cursor_x, cursor_y, 0, 'j');
- break;
- case SDLK_x:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'X');
- else
- le_change(cursor_x, cursor_y, 0, 'x');
- break;
- case SDLK_y:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, 'Y');
- else
- le_change(cursor_x, cursor_y, 0, 'y');
- break;
- case SDLK_LEFTBRACKET:
- le_change(cursor_x, cursor_y, 0, '[');
- break;
- case SDLK_RIGHTBRACKET:
- le_change(cursor_x, cursor_y, 0, ']');
- break;
- case SDLK_HASH:
- case SDLK_3:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '#');
- break;
- case SDLK_DOLLAR:
- case SDLK_4:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '$');
- break;
- case SDLK_BACKSLASH:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '|');
- else
- le_change(cursor_x, cursor_y, 0, '\\');
- break;
- case SDLK_CARET:
- le_change(cursor_x, cursor_y, 0, '^');
- break;
- case SDLK_AMPERSAND:
- case SDLK_6:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '&');
- break;
- case SDLK_EQUALS:
- case SDLK_0:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '=');
- else /* let's add a bad guy */
- le_change(cursor_x, cursor_y, 0, '0');
-
- for(i = 0; i < NUM_BAD_GUYS; ++i)
- if (bad_guys[i].alive == NO)
- {
- bad_guys[i].alive = YES;
- bad_guys[i].kind = BAD_BSOD;
- bad_guys[i].x = (((int)cursor_x/32)*32);
- bad_guys[i].y = (((int)cursor_y/32)*32);
- i = NUM_BAD_GUYS;
- }
- break;
- case SDLK_1:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '!');
- else /* let's add a bad guy */
- le_change(cursor_x, cursor_y, 0, '1');
-
- for(i = 0; i < NUM_BAD_GUYS; ++i)
- if (bad_guys[i].alive == NO)
- {
- bad_guys[i].alive = YES;
- bad_guys[i].kind = BAD_LAPTOP;
- bad_guys[i].x = (((int)cursor_x/32)*32);
- bad_guys[i].y = (((int)cursor_y/32)*32);
- i = NUM_BAD_GUYS;
- }
- break;
- case SDLK_2:
- le_change(cursor_x, cursor_y, 0, '2');
-
- for(i = 0; i < NUM_BAD_GUYS; ++i)
- if (bad_guys[i].alive == NO)
- {
- bad_guys[i].alive = YES;
- bad_guys[i].kind = BAD_MONEY;
- bad_guys[i].x = (((int)cursor_x/32)*32);
- bad_guys[i].y = (((int)cursor_y/32)*32);
- i = NUM_BAD_GUYS;
- }
- break;
- case SDLK_PLUS:
- if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
- le_change(cursor_x, cursor_y, 0, '*');
- break;
- default:
- break;
- }
- break;
- case SDL_KEYUP: // key released
- switch(event.key.keysym.sym)
- {
- case SDLK_LCTRL:
- fire = DOWN;
- break;
- case SDLK_ESCAPE:
- if(!show_menu)
- show_menu = YES;
- else
- show_menu = NO;
- break;
- default:
- break;
- }
- break;
- case SDL_MOUSEBUTTONDOWN:
- if(event.button.button == SDL_BUTTON_LEFT)
- {
- x = event.motion.x;
- y = event.motion.y;
-
- cursor_x = ((int)(pos_x + x) / 32) * 32;
- cursor_y = ((int) y / 32) * 32;
- }
- break;
- case SDL_MOUSEMOTION:
- x = event.motion.x;
- y = event.motion.y;
-
- cursor_x = ((int)(pos_x + x) / 32) * 32;
- cursor_y = ((int) y / 32) * 32;
- break;
- case SDL_QUIT: // window closed
- done = DONE_QUIT;
- break;
- default:
- break;
- }
- }
-
- /* mouse movements */
- x = event.motion.x;
- if(x < MOUSE_LEFT_MARGIN)
- pos_x -= MOUSE_POS_SPEED;
- else if(x > MOUSE_RIGHT_MARGIN)
- pos_x += MOUSE_POS_SPEED;
-
- if(old_cursor_x != cursor_x)
- {
- if(cursor_x < pos_x + KEY_LEFT_MARGIN)
- pos_x = cursor_x - KEY_LEFT_MARGIN;
-
- if(cursor_x > pos_x + KEY_RIGHT_MARGIN)
- pos_x = cursor_x - KEY_RIGHT_MARGIN;
- }
-
- if(pos_x < 0)
- pos_x = 0;
- if(pos_x > (level_width * 32) - 640)
- pos_x = (level_width * 32) - 640;
-
- old_cursor_x = cursor_x;
-
- for (y = 0; y < 15; ++y)
- for (x = 0; x < 21; ++x)
- drawshape(x * 32, y * 32, tiles[y][x + (pos_x / 32)]);
-
- /* Draw the Bad guys: */
- for (i = 0; i < NUM_BAD_GUYS; ++i)
- {
-/* printf("\nbad_guys[%i].alive = %i", i, bad_guys[i].alive); */
- if(bad_guys[i].alive == NO)
- continue;
-/* to support frames: img_bsod_left[(frame / 5) % 4] */
- if(bad_guys[i].kind == BAD_BSOD)
- drawimage(img_bsod_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
- else if(bad_guys[i].kind == BAD_LAPTOP)
- drawimage(img_laptop_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
- else if (bad_guys[i].kind == BAD_MONEY)
- drawimage(img_money_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
- }
-
-
- drawimage(selection, ((int)(cursor_x - pos_x)/32)*32, cursor_y, NO_UPDATE);
-
- sprintf(str, "%d", time_left);
- drawtext("TIME", 324, 0, letters_blue, NO_UPDATE);
- drawtext(str, 404, 0, letters_gold, NO_UPDATE);
-
- sprintf(str, "%s", levelname);
- drawtext("NAME", 0, 0, letters_blue, NO_UPDATE);
- drawtext(str, 80, 0, letters_gold, NO_UPDATE);
-
- drawtext("F1 for Help", 10, 430, letters_blue, NO_UPDATE);
-
- if(show_menu)
- {
- done = drawmenu();
- if(done)
- return 0;
- }
- if(done == DONE_QUIT)
- return 1;
-
- SDL_Delay(50);
- SDL_Flip(screen);
- }
-
-unloadlevelgfx();
-unloadshared();
-
-SDL_FreeSurface(selection);
-
-/*if(done == DONE_SAVE)*/ /* let's save the changes */
-/* savelevel();*/
-/*
-if(done == DONE_CHANGELEVEL) change level
- return leveleditor(level);
-*/
-return done;
+ char str[10];
+
+
+ strcpy(levelfilename,"level1");
+
+ initmenu();
+ menumenu = MENU_LEVELEDITOR;
+ show_menu = YES;
+
+ loadshared();
+ le_loadlevel();
+ loadlevelgfx();
+
+ selection = load_image(DATA_PREFIX "/images/leveleditor/select.png", USE_ALPHA);
+
+ int done;
+ done = 0;
+
+ int x, y, i; /* for cicles */
+ int pos_x, cursor_x, cursor_y, old_cursor_x, fire;
+
+ pos_x = 0;
+ cursor_x = 3*32;
+ old_cursor_x = cursor_x;
+ cursor_y = 2*32;
+ fire = DOWN;
+
+ SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
+
+ SDL_Event event;
+ SDLKey key;
+ SDLMod keymod;
+
+ while(1)
+ {
+ SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, bkgd_red, bkgd_green, bkgd_blue));
+
+ keymod = SDL_GetModState();
+
+ while(SDL_PollEvent(&event))
+ {
+ // testing SDL_KEYDOWN, SDL_KEYUP and SDL_QUIT events
+ switch(event.type)
+ {
+ case SDL_KEYDOWN: // key pressed
+ key = event.key.keysym.sym;
+ if(show_menu)
+ {
+ menu_event(key);
+ break;
+ }
+ switch(key)
+ {
+ case SDLK_LEFT:
+ if(fire == DOWN)
+ cursor_x -= KEY_CURSOR_SPEED;
+ else
+ cursor_x -= KEY_CURSOR_FASTSPEED;
+
+ if(cursor_x < 0)
+ cursor_x = 0;
+ break;
+ case SDLK_RIGHT:
+ if(fire == DOWN)
+ cursor_x += KEY_CURSOR_SPEED;
+ else
+ cursor_x += KEY_CURSOR_FASTSPEED;
+
+ if(cursor_x > (level_width*32) - 1)
+ cursor_x = (level_width*32) - 1;
+ break;
+ case SDLK_UP:
+ if(fire == DOWN)
+ cursor_y -= KEY_CURSOR_SPEED;
+ else
+ cursor_y -= KEY_CURSOR_FASTSPEED;
+
+ if(cursor_y < 0)
+ cursor_y = 0;
+ break;
+ case SDLK_DOWN:
+ if(fire == DOWN)
+ cursor_y += KEY_CURSOR_SPEED;
+ else
+ cursor_y += KEY_CURSOR_FASTSPEED;
+
+ if(cursor_y > 480-32)
+ cursor_y = 480-32;
+ break;
+ case SDLK_LCTRL:
+ fire = UP;
+ break;
+ case SDLK_F1:
+ showhelp();
+ break;
+ case SDLK_HOME:
+ cursor_x = 0;
+ break;
+ case SDLK_END:
+ cursor_x = (level_width * 32) - 32;
+ break;
+ case SDLK_PERIOD:
+ le_change(cursor_x, cursor_y, 0, '.');
+ break;
+ case SDLK_a:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'A');
+ else
+ le_change(cursor_x, cursor_y, 0, 'a');
+ break;
+ case SDLK_b:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'B');
+ break;
+ case SDLK_c:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'C');
+ else
+ le_change(cursor_x, cursor_y, 0, 'c');
+ break;
+ case SDLK_d:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'D');
+ else
+ le_change(cursor_x, cursor_y, 0, 'd');
+ break;
+ case SDLK_e:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'E');
+ else
+ le_change(cursor_x, cursor_y, 0, 'e');
+ break;
+ case SDLK_f:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'F');
+ else
+ le_change(cursor_x, cursor_y, 0, 'f');
+ break;
+ case SDLK_g:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'G');
+ else
+ le_change(cursor_x, cursor_y, 0, 'g');
+ break;
+ case SDLK_h:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'H');
+ else
+ le_change(cursor_x, cursor_y, 0, 'h');
+ break;
+ case SDLK_i:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'I');
+ else
+ le_change(cursor_x, cursor_y, 0, 'i');
+ break;
+ case SDLK_j:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'J');
+ else
+ le_change(cursor_x, cursor_y, 0, 'j');
+ break;
+ case SDLK_x:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'X');
+ else
+ le_change(cursor_x, cursor_y, 0, 'x');
+ break;
+ case SDLK_y:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, 'Y');
+ else
+ le_change(cursor_x, cursor_y, 0, 'y');
+ break;
+ case SDLK_LEFTBRACKET:
+ le_change(cursor_x, cursor_y, 0, '[');
+ break;
+ case SDLK_RIGHTBRACKET:
+ le_change(cursor_x, cursor_y, 0, ']');
+ break;
+ case SDLK_HASH:
+ case SDLK_3:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '#');
+ break;
+ case SDLK_DOLLAR:
+ case SDLK_4:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '$');
+ break;
+ case SDLK_BACKSLASH:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '|');
+ else
+ le_change(cursor_x, cursor_y, 0, '\\');
+ break;
+ case SDLK_CARET:
+ le_change(cursor_x, cursor_y, 0, '^');
+ break;
+ case SDLK_AMPERSAND:
+ case SDLK_6:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '&');
+ break;
+ case SDLK_EQUALS:
+ case SDLK_0:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '=');
+ else /* let's add a bad guy */
+ le_change(cursor_x, cursor_y, 0, '0');
+
+ for(i = 0; i < NUM_BAD_GUYS; ++i)
+ if (bad_guys[i].alive == NO)
+ {
+ bad_guys[i].alive = YES;
+ bad_guys[i].kind = BAD_BSOD;
+ bad_guys[i].x = (((int)cursor_x/32)*32);
+ bad_guys[i].y = (((int)cursor_y/32)*32);
+ i = NUM_BAD_GUYS;
+ }
+ break;
+ case SDLK_1:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '!');
+ else /* let's add a bad guy */
+ le_change(cursor_x, cursor_y, 0, '1');
+
+ for(i = 0; i < NUM_BAD_GUYS; ++i)
+ if (bad_guys[i].alive == NO)
+ {
+ bad_guys[i].alive = YES;
+ bad_guys[i].kind = BAD_LAPTOP;
+ bad_guys[i].x = (((int)cursor_x/32)*32);
+ bad_guys[i].y = (((int)cursor_y/32)*32);
+ i = NUM_BAD_GUYS;
+ }
+ break;
+ case SDLK_2:
+ le_change(cursor_x, cursor_y, 0, '2');
+
+ for(i = 0; i < NUM_BAD_GUYS; ++i)
+ if (bad_guys[i].alive == NO)
+ {
+ bad_guys[i].alive = YES;
+ bad_guys[i].kind = BAD_MONEY;
+ bad_guys[i].x = (((int)cursor_x/32)*32);
+ bad_guys[i].y = (((int)cursor_y/32)*32);
+ i = NUM_BAD_GUYS;
+ }
+ break;
+ case SDLK_PLUS:
+ if(keymod == KMOD_LSHIFT || keymod == KMOD_RSHIFT || keymod == KMOD_CAPS)
+ le_change(cursor_x, cursor_y, 0, '*');
+ break;
+ default:
+ break;
+ }
+ break;
+ case SDL_KEYUP: // key released
+ switch(event.key.keysym.sym)
+ {
+ case SDLK_LCTRL:
+ fire = DOWN;
+ break;
+ case SDLK_ESCAPE:
+ if(!show_menu)
+ show_menu = YES;
+ else
+ show_menu = NO;
+ break;
+ default:
+ break;
+ }
+ break;
+ case SDL_MOUSEBUTTONDOWN:
+ if(event.button.button == SDL_BUTTON_LEFT)
+ {
+ x = event.motion.x;
+ y = event.motion.y;
+
+ cursor_x = ((int)(pos_x + x) / 32) * 32;
+ cursor_y = ((int) y / 32) * 32;
+ }
+ break;
+ case SDL_MOUSEMOTION:
+ x = event.motion.x;
+ y = event.motion.y;
+
+ cursor_x = ((int)(pos_x + x) / 32) * 32;
+ cursor_y = ((int) y / 32) * 32;
+ break;
+ case SDL_QUIT: // window closed
+ done = DONE_QUIT;
+ break;
+ default:
+ break;
+ }
+ }
+
+ /* mouse movements */
+ x = event.motion.x;
+ if(x < MOUSE_LEFT_MARGIN)
+ pos_x -= MOUSE_POS_SPEED;
+ else if(x > MOUSE_RIGHT_MARGIN)
+ pos_x += MOUSE_POS_SPEED;
+
+ if(old_cursor_x != cursor_x)
+ {
+ if(cursor_x < pos_x + KEY_LEFT_MARGIN)
+ pos_x = cursor_x - KEY_LEFT_MARGIN;
+
+ if(cursor_x > pos_x + KEY_RIGHT_MARGIN)
+ pos_x = cursor_x - KEY_RIGHT_MARGIN;
+ }
+
+ if(pos_x < 0)
+ pos_x = 0;
+ if(pos_x > (level_width * 32) - 640)
+ pos_x = (level_width * 32) - 640;
+
+ old_cursor_x = cursor_x;
+
+ for (y = 0; y < 15; ++y)
+ for (x = 0; x < 21; ++x)
+ drawshape(x * 32, y * 32, tiles[y][x + (pos_x / 32)]);
+
+ /* Draw the Bad guys: */
+ for (i = 0; i < NUM_BAD_GUYS; ++i)
+ {
+ /* printf("\nbad_guys[%i].alive = %i", i, bad_guys[i].alive); */
+ if(bad_guys[i].alive == NO)
+ continue;
+ /* to support frames: img_bsod_left[(frame / 5) % 4] */
+ if(bad_guys[i].kind == BAD_BSOD)
+ drawimage(img_bsod_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
+ else if(bad_guys[i].kind == BAD_LAPTOP)
+ drawimage(img_laptop_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
+ else if (bad_guys[i].kind == BAD_MONEY)
+ drawimage(img_money_left[0], ((int)(bad_guys[i].x - pos_x)/32)*32, bad_guys[i].y, NO_UPDATE);
+ }
+
+
+ drawimage(selection, ((int)(cursor_x - pos_x)/32)*32, cursor_y, NO_UPDATE);
+
+ sprintf(str, "%d", time_left);
+ drawtext("TIME", 324, 0, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 404, 0, letters_gold, NO_UPDATE, 1);
+
+ sprintf(str, "%s", levelname);
+ drawtext("NAME", 0, 0, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 80, 0, letters_gold, NO_UPDATE, 1);
+
+ drawtext("F1 for Help", 10, 430, letters_blue, NO_UPDATE, 1);
+
+ if(show_menu)
+ {
+ done = drawmenu();
+ if(done)
+ return 0;
+ }
+ if(done == DONE_QUIT)
+ return 1;
+
+ SDL_Delay(50);
+ SDL_Flip(screen);
+ }
+
+ unloadlevelgfx();
+ unloadshared();
+
+ SDL_FreeSurface(selection);
+
+ /*if(done == DONE_SAVE)*/ /* let's save the changes */
+ /* savelevel();*/
+ /*
+ if(done == DONE_CHANGELEVEL) change level
+ return leveleditor(level);
+ */
+ return done;