Lines 78-87
Link Here
|
78 |
{ |
78 |
{ |
79 |
if (player.shield > 0) |
79 |
if (player.shield > 0) |
80 |
{ |
80 |
{ |
81 |
if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) |
81 |
if (IS_FIRE_PRESSED()) |
82 |
fireBullet(&player, 0); |
82 |
fireBullet(&player, 0); |
83 |
|
83 |
|
84 |
if ((engine.keyState[SDLK_SPACE]) && (player.weaponType[1] != W_NONE)) |
84 |
if (IS_CHARGE_PRESSED() && (player.weaponType[1] != W_NONE)) |
85 |
{ |
85 |
{ |
86 |
if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER) && (player.ammo[1] > 0)) |
86 |
if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER) && (player.ammo[1] > 0)) |
87 |
{ |
87 |
{ |
Lines 105-111
Link Here
|
105 |
|
105 |
|
106 |
if (player.weaponType[1] == W_CHARGER) |
106 |
if (player.weaponType[1] == W_CHARGER) |
107 |
{ |
107 |
{ |
108 |
if (engine.keyState[SDLK_SPACE]) |
108 |
if (IS_CHARGE_PRESSED()) |
109 |
{ |
109 |
{ |
110 |
Math::limitChar(&(++player.ammo[1]), 0, 200); |
110 |
Math::limitChar(&(++player.ammo[1]), 0, 200); |
111 |
} |
111 |
} |
Lines 117-123
Link Here
|
117 |
} |
117 |
} |
118 |
} |
118 |
} |
119 |
|
119 |
|
120 |
if ((engine.keyState[SDLK_LSHIFT]) || (engine.keyState[SDLK_RSHIFT])) |
120 |
if (IS_CHANGE_PRESSED()) |
121 |
{ |
121 |
{ |
122 |
if (player.ammo[0] < 1) |
122 |
if (player.ammo[0] < 1) |
123 |
{ |
123 |
{ |
Lines 190-228
Link Here
|
190 |
} |
190 |
} |
191 |
} |
191 |
} |
192 |
|
192 |
|
193 |
engine.keyState[SDLK_LSHIFT] = engine.keyState[SDLK_RSHIFT] = 0; |
193 |
RESET_CHANGE(); |
194 |
} |
194 |
} |
195 |
|
195 |
|
196 |
Math::limitChar(&--player.reload[0], 0, 999); |
196 |
Math::limitChar(&--player.reload[0], 0, 999); |
197 |
Math::limitChar(&--player.reload[1], 0, 999); |
197 |
Math::limitChar(&--player.reload[1], 0, 999); |
198 |
|
198 |
|
199 |
if (engine.keyState[SDLK_UP]) |
199 |
if (IS_UP_PRESSED()) |
200 |
{ |
200 |
{ |
201 |
player.y -= player.speed; |
201 |
player.y -= player.speed; |
202 |
engine.ssy += 0.1; |
202 |
engine.ssy += 0.1; |
203 |
} |
203 |
} |
204 |
|
204 |
|
205 |
if (engine.keyState[SDLK_DOWN]) |
205 |
if (IS_DOWN_PRESSED()) |
206 |
{ |
206 |
{ |
207 |
player.y += player.speed; |
207 |
player.y += player.speed; |
208 |
engine.ssy -= 0.1; |
208 |
engine.ssy -= 0.1; |
209 |
} |
209 |
} |
210 |
|
210 |
|
211 |
if (engine.keyState[SDLK_LEFT]) |
211 |
if (IS_LEFT_PRESSED()) |
212 |
{ |
212 |
{ |
213 |
player.x -= player.speed; |
213 |
player.x -= player.speed; |
214 |
engine.ssx += 0.1; |
214 |
engine.ssx += 0.1; |
215 |
player.face = 1; |
215 |
player.face = 1; |
216 |
} |
216 |
} |
217 |
|
217 |
|
218 |
if (engine.keyState[SDLK_RIGHT]) |
218 |
if (IS_RIGHT_PRESSED()) |
219 |
{ |
219 |
{ |
220 |
player.x += player.speed; |
220 |
player.x += player.speed; |
221 |
engine.ssx -= 0.1; |
221 |
engine.ssx -= 0.1; |
222 |
player.face = 0; |
222 |
player.face = 0; |
223 |
} |
223 |
} |
224 |
|
224 |
|
225 |
if (engine.keyState[SDLK_ESCAPE]) |
225 |
if (IS_QUIT_PRESSED()) |
226 |
{ |
226 |
{ |
227 |
if ((engine.done == 0) && (engine.gameSection == SECTION_GAME) && (currentMission.remainingObjectives1 == 0)) |
227 |
if ((engine.done == 0) && (engine.gameSection == SECTION_GAME) && (currentMission.remainingObjectives1 == 0)) |
228 |
{ |
228 |
{ |
Lines 232-251
Link Here
|
232 |
} |
232 |
} |
233 |
} |
233 |
} |
234 |
|
234 |
|
235 |
if (engine.keyState[SDLK_p]) |
235 |
if (IS_PAUSE_PRESSED()) |
236 |
{ |
236 |
{ |
237 |
engine.paused = 1; |
237 |
engine.paused = 1; |
238 |
engine.keyState[SDLK_p] = 0; |
238 |
RESET_PAUSE(); |
239 |
} |
239 |
} |
240 |
|
240 |
|
241 |
if ((engine.keyState[SDLK_t]) && (currentGame.area != 10)) |
241 |
if (IS_TIMER_PRESSED() && (currentGame.area != 10)) |
242 |
{ |
242 |
{ |
243 |
if (engine.targetArrowTimer == -1) |
243 |
if (engine.targetArrowTimer == -1) |
244 |
engine.targetArrowTimer = 0; |
244 |
engine.targetArrowTimer = 0; |
245 |
else |
245 |
else |
246 |
engine.targetArrowTimer = -1; |
246 |
engine.targetArrowTimer = -1; |
247 |
|
247 |
|
248 |
engine.keyState[SDLK_t] = 0; |
248 |
RESET_TIMER(); |
249 |
} |
249 |
} |
250 |
|
250 |
|
251 |
if ((engine.missionCompleteTimer == 0) && (engine.targetArrowTimer == -1)) |
251 |
if ((engine.missionCompleteTimer == 0) && (engine.targetArrowTimer == -1)) |
Lines 304-310
Link Here
|
304 |
playSound(SFX_EXPLOSION); |
304 |
playSound(SFX_EXPLOSION); |
305 |
} |
305 |
} |
306 |
|
306 |
|
307 |
engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0; |
307 |
RESET_STEER(); |
308 |
if ((rand() % 3) == 0) |
308 |
if ((rand() % 3) == 0) |
309 |
addExplosion(player.x + Math::rrand(-10, 10), player.y + Math::rrand(-10, 10), E_BIG_EXPLOSION); |
309 |
addExplosion(player.x + Math::rrand(-10, 10), player.y + Math::rrand(-10, 10), E_BIG_EXPLOSION); |
310 |
if (player.shield == -99) |
310 |
if (player.shield == -99) |
Lines 334-377
Link Here
|
334 |
|
334 |
|
335 |
void flushInput() |
335 |
void flushInput() |
336 |
{ |
336 |
{ |
337 |
for (int i = 0 ; i < 350 ; i++) |
|
|
338 |
engine.keyState[i] = 0; |
339 |
|
340 |
while (SDL_PollEvent(&engine.event)){} |
337 |
while (SDL_PollEvent(&engine.event)){} |
341 |
} |
338 |
} |
342 |
|
339 |
|
343 |
void getPlayerInput() |
340 |
void getPlayerInput() |
344 |
{ |
341 |
{ |
345 |
if (engine.gameSection == SECTION_INTERMISSION) |
342 |
while (SDL_PollEvent(&engine.event)) |
346 |
{ |
|
|
347 |
// Get the current mouse position |
348 |
int x, y; |
349 |
SDL_GetMouseState(&x, &y); |
350 |
engine.cursor_x = x; |
351 |
engine.cursor_y = y; |
352 |
} |
353 |
|
354 |
if (SDL_PollEvent(&engine.event)) |
355 |
{ |
343 |
{ |
356 |
switch (engine.event.type) |
344 |
switch (engine.event.type) |
357 |
{ |
345 |
{ |
358 |
case SDL_QUIT: |
346 |
case SDL_QUIT: |
359 |
exit(0); |
347 |
exit(0); |
360 |
break; |
348 |
break; |
361 |
|
349 |
case SDL_MOUSEMOTION: |
|
|
350 |
/* Mouse motion reacts only between missions. */ |
351 |
if(engine.gameSection == SECTION_INTERMISSION) { |
352 |
engine.cursor_x += engine.event.motion.xrel; |
353 |
engine.cursor_y += engine.event.motion.yrel; |
354 |
} |
355 |
break; |
356 |
case SDL_MOUSEBUTTONUP: |
362 |
case SDL_MOUSEBUTTONDOWN: |
357 |
case SDL_MOUSEBUTTONDOWN: |
363 |
if (engine.gameSection == SECTION_INTERMISSION) |
358 |
// Treats mouse as input events. |
364 |
{ |
359 |
switch(engine.event.button.button) { |
365 |
if (engine.event.button.button == SDL_BUTTON_LEFT) engine.keyState[SDLK_LCTRL] = 1; |
360 |
case SDL_BUTTON_LEFT: |
366 |
if (engine.event.button.button == SDL_BUTTON_RIGHT) engine.keyState[SDLK_SPACE] = 1; |
361 |
engine.playerControl.fire = engine.event.button.state;; |
|
|
362 |
break; |
363 |
case SDL_BUTTON_RIGHT: |
364 |
engine.playerControl.charge = engine.event.button.state; |
365 |
break; |
366 |
case SDL_BUTTON_WHEELUP: |
367 |
// Allows menu control. |
368 |
engine.playerControl.up = engine.event.button.state; |
369 |
break; |
370 |
case SDL_BUTTON_WHEELDOWN: |
371 |
// Allows menu control. |
372 |
engine.playerControl.down = engine.event.button.state; |
373 |
break; |
367 |
} |
374 |
} |
368 |
break; |
375 |
break; |
369 |
|
|
|
370 |
case SDL_KEYDOWN: |
376 |
case SDL_KEYDOWN: |
371 |
if (engine.gameSection == SECTION_TITLE) |
377 |
if (engine.gameSection == SECTION_TITLE) |
372 |
addKeyEvent(SDL_GetKeyName(engine.event.key.keysym.sym)); |
378 |
addKeyEvent(SDL_GetKeyName(engine.event.key.keysym.sym)); |
373 |
|
379 |
|
374 |
engine.keyState[engine.event.key.keysym.sym] = 1; |
380 |
switch(engine.event.key.keysym.sym) { |
|
|
381 |
case SDLK_LEFT: |
382 |
engine.playerControl.left = 1; |
383 |
break; |
384 |
case SDLK_RIGHT: |
385 |
engine.playerControl.right = 1; |
386 |
break; |
387 |
case SDLK_UP: |
388 |
engine.playerControl.up = 1; |
389 |
break; |
390 |
case SDLK_DOWN: |
391 |
engine.playerControl.down = 1; |
392 |
break; |
393 |
case SDLK_LSHIFT: |
394 |
case SDLK_RSHIFT: |
395 |
engine.playerControl.change = 1; |
396 |
break; |
397 |
case SDLK_LCTRL: |
398 |
case SDLK_RCTRL: |
399 |
engine.playerControl.fire = 1; |
400 |
break; |
401 |
case SDLK_SPACE: |
402 |
engine.playerControl.charge = 1; |
403 |
break; |
404 |
case SDLK_ESCAPE: |
405 |
engine.playerControl.quit = 1; |
406 |
break; |
407 |
case SDLK_t: |
408 |
engine.playerControl.timer = 1; |
409 |
break; |
410 |
case SDLK_p: |
411 |
engine.playerControl.pause = 1; |
412 |
break; |
413 |
case SDLK_RETURN: |
414 |
engine.playerControl.invoke = 1; |
415 |
break; |
416 |
default: |
417 |
break; |
418 |
} |
375 |
|
419 |
|
376 |
if (engine.gameSection != SECTION_GAME) |
420 |
if (engine.gameSection != SECTION_GAME) |
377 |
engine.paused = 0; |
421 |
engine.paused = 0; |
Lines 379-398
Link Here
|
379 |
break; |
423 |
break; |
380 |
|
424 |
|
381 |
case SDL_KEYUP: |
425 |
case SDL_KEYUP: |
382 |
if (engine.event.key.keysym.sym != SDLK_p) |
426 |
switch(engine.event.key.keysym.sym) { |
383 |
engine.keyState[engine.event.key.keysym.sym] = 0; |
427 |
case SDLK_LEFT: |
|
|
428 |
engine.playerControl.left = 0; |
429 |
break; |
430 |
case SDLK_RIGHT: |
431 |
engine.playerControl.right = 0; |
432 |
break; |
433 |
case SDLK_UP: |
434 |
engine.playerControl.up = 0; |
435 |
break; |
436 |
case SDLK_DOWN: |
437 |
engine.playerControl.down = 0; |
438 |
break; |
439 |
case SDLK_LSHIFT: |
440 |
case SDLK_RSHIFT: |
441 |
engine.playerControl.change = 0; |
442 |
break; |
443 |
case SDLK_LCTRL: |
444 |
case SDLK_RCTRL: |
445 |
engine.playerControl.fire = 0; |
446 |
break; |
447 |
case SDLK_SPACE: |
448 |
engine.playerControl.charge = 0; |
449 |
break; |
450 |
case SDLK_ESCAPE: |
451 |
engine.playerControl.quit = 0; |
452 |
break; |
453 |
case SDLK_t: |
454 |
engine.playerControl.timer = 0; |
455 |
break; |
456 |
case SDLK_p: |
457 |
engine.playerControl.pause = 0; |
458 |
break; |
459 |
case SDLK_RETURN: |
460 |
engine.playerControl.invoke = 0; |
461 |
break; |
462 |
default: |
463 |
break; |
464 |
} |
384 |
break; |
465 |
break; |
385 |
|
466 |
case SDL_JOYAXISMOTION: |
386 |
default: |
467 |
switch(engine.event.jaxis.axis) { |
|
|
468 |
case 0: |
469 |
if(engine.event.jaxis.value < -AXIS_THRESHOLD) { |
470 |
engine.playerControl.left = 1; |
471 |
} else if(engine.event.jaxis.value > AXIS_THRESHOLD) { |
472 |
engine.playerControl.right = 1; |
473 |
} else { |
474 |
engine.playerControl.left = |
475 |
engine.playerControl.right = 0; |
476 |
} |
477 |
break; |
478 |
case 1: |
479 |
if(engine.event.jaxis.value < -AXIS_THRESHOLD) { |
480 |
engine.playerControl.up = 1; |
481 |
} else if(engine.event.jaxis.value > AXIS_THRESHOLD) { |
482 |
engine.playerControl.down = 1; |
483 |
} else { |
484 |
engine.playerControl.up = |
485 |
engine.playerControl.down = 0; |
486 |
} |
487 |
break; |
488 |
default: |
489 |
break; |
490 |
} |
387 |
break; |
491 |
break; |
|
|
492 |
case SDL_JOYBUTTONUP: |
493 |
case SDL_JOYBUTTONDOWN: |
494 |
switch(engine.event.jbutton.button) { |
495 |
case 0: |
496 |
engine.playerControl.fire = engine.event.jbutton.state; |
497 |
break; |
498 |
case 1: |
499 |
engine.playerControl.charge = engine.event.jbutton.state; |
500 |
break; |
501 |
case 2: |
502 |
engine.playerControl.change = engine.event.jbutton.state; |
503 |
break; |
504 |
case 3: |
505 |
engine.playerControl.pause = engine.event.jbutton.state; |
506 |
break; |
507 |
case 4: |
508 |
engine.playerControl.quit = engine.event.jbutton.state; |
509 |
break; |
510 |
default: |
511 |
engine.playerControl.invoke = engine.event.jbutton.state; |
512 |
break; |
513 |
} |
388 |
} |
514 |
} |
|
|
515 |
|
389 |
} |
516 |
} |
|
|
517 |
|
518 |
/* Moves cursor around. */ |
519 |
if(engine.gameSection == SECTION_INTERMISSION) { |
520 |
engine.cursor_x += (engine.playerControl.right-engine.playerControl.left)*MOVE_MULT; |
521 |
engine.cursor_y += (engine.playerControl.down-engine.playerControl.up)*MOVE_MULT; |
522 |
} |
523 |
|
390 |
} |
524 |
} |
391 |
|
525 |
|
392 |
void leaveSector() |
526 |
void leaveSector() |
393 |
{ |
527 |
{ |
394 |
engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0; |
528 |
RESET_STEER(); |
395 |
engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; |
529 |
RESET_FIRE(); |
|
|
530 |
RESET_CHARGE(); |
396 |
|
531 |
|
397 |
if (engine.done == 0) |
532 |
if (engine.done == 0) |
398 |
engine.done = 3; |
533 |
engine.done = 3; |