Compare commits

..

No commits in common. "master" and "v0.3" have entirely different histories.
master ... v0.3

6 changed files with 17 additions and 34 deletions

View File

@ -34,7 +34,7 @@ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O3 -ffast-math")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os") set(CMAKE_C_FLAGS_MINSIZEREL "-Os")
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(ALLEG5 REQUIRED allegro-5>=5.1.9) pkg_check_modules(ALLEG5 REQUIRED allegro-5)
pkg_check_modules(ALLEG5-PRIM REQUIRED allegro_primitives-5) pkg_check_modules(ALLEG5-PRIM REQUIRED allegro_primitives-5)
pkg_check_modules(ALLEG5-FONT REQUIRED allegro_font-5) pkg_check_modules(ALLEG5-FONT REQUIRED allegro_font-5)

3
TODO
View File

@ -1,3 +0,0 @@
TODO:
- Add a fullscreen mode.
- Add presets with stellar masses (for gravity simulation).

View File

@ -101,9 +101,6 @@ void set_key(int keycode, int value) {
case ALLEGRO_KEY_F: case ALLEGRO_KEY_F:
keys[KEY_FULLSCREEN] = value; keys[KEY_FULLSCREEN] = value;
break; break;
case ALLEGRO_KEY_P:
keys[KEY_PAUSE] = value;
break;
default: default:
break; break;
} }

View File

@ -27,8 +27,7 @@ enum {
KEY_RIGHT = 0x3, KEY_RIGHT = 0x3,
KEY_RESET = 0x4, KEY_RESET = 0x4,
KEY_FULLSCREEN = 0x5, KEY_FULLSCREEN = 0x5,
KEY_PAUSE = 0x6, KEY_MAX = 0x6
KEY_MAX = 0x7
}; };
/** /**

View File

@ -26,7 +26,7 @@
# define FPS 60.0f # define FPS 60.0f
#endif #endif
#ifndef ACCEL #ifndef ACCEL
# define ACCEL 0.1f # define ACCEL 0.5f
#endif #endif
#ifndef TURN_ACCEL #ifndef TURN_ACCEL
# define TURN_ACCEL (M_PI / FPS) // turn at pi radians / sec # define TURN_ACCEL (M_PI / FPS) // turn at pi radians / sec

View File

@ -33,7 +33,7 @@ int show_info;
const char *help = const char *help =
"HELP:\n" "HELP:\n"
"LEFT/RIGHT - turn the ship\n" "LEFT/RIGHT - turn the ship\n"
"UP/DOWN - accelerate/reverse accelerate\n" "UP/DOWN - accelerate/decelerate\n"
"R - reset the simulation\n" "R - reset the simulation\n"
"I - show/hide simulation information\n" "I - show/hide simulation information\n"
"H - show/hide this help information\n" "H - show/hide this help information\n"
@ -44,13 +44,11 @@ const char *info_format =
"x: %f\n" "x: %f\n"
"y: %f\n" "y: %f\n"
"angle: %f (%f degrees)\n" "angle: %f (%f degrees)\n"
"velX: %f px/sec\n" "velX: %f\n"
"velY: %f px/sec"; "velY: %f";
int main() { int main() {
char title[32]; printf("SpaceShipSim v%s\n", VERSION);
sprintf(title, "SpaceShipSim v%s", VERSION);
puts(title);
if(!al_init()) if(!al_init())
{ {
@ -81,7 +79,6 @@ int main() {
fprintf(stderr, "alleg5: failed to initialize display.\n"); fprintf(stderr, "alleg5: failed to initialize display.\n");
return 1; return 1;
} }
al_set_window_title(display, title);
#ifdef DEBUG #ifdef DEBUG
puts("Created display."); puts("Created display.");
#endif #endif
@ -104,8 +101,6 @@ int main() {
redraw = 1; redraw = 1;
show_help = 1; show_help = 1;
show_info = 1; show_info = 1;
int paused = 0;
int old_paused = 0;
while(run) while(run)
{ {
handle_event(); handle_event();
@ -113,19 +108,14 @@ int main() {
// only redraw or run simulation if the timer event has occurred // only redraw or run simulation if the timer event has occurred
if(redraw) if(redraw)
{ {
if(paused == old_paused && key_is_down(KEY_PAUSE)) if(key_is_down(KEY_RESET))
paused = !paused; ship_init(&ship, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
else if(paused != old_paused && !key_is_down(KEY_PAUSE)) /*
old_paused = paused; * We only run the simulation when the timer goes off so it's
* running at a consistent rate, rather than dependent on random
if(!paused) * events.
{ */
if(key_is_down(KEY_RESET)) ship_update(&ship);
ship_init(&ship, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
else
ship_update(&ship);
}
al_clear_to_color(al_map_rgb(0, 0, 0)); al_clear_to_color(al_map_rgb(0, 0, 0));
ship_draw(&ship); ship_draw(&ship);
if(show_info) if(show_info)
@ -135,7 +125,7 @@ int main() {
ship.x, ship.y, ship.x, ship.y,
ship.direction, ship.direction,
RAD_TO_DEG(ship.direction), RAD_TO_DEG(ship.direction),
ship.velX * FPS, ship.velY * FPS); ship.velX, ship.velY);
al_draw_multiline_text(font, al_draw_multiline_text(font,
al_map_rgb(0xFF, 0xFF, 0xFF), al_map_rgb(0xFF, 0xFF, 0xFF),
5, 5, WINDOW_WIDTH, 10.0f, 5, 5, WINDOW_WIDTH, 10.0f,
@ -147,7 +137,7 @@ int main() {
{ {
al_draw_multiline_text(font, al_draw_multiline_text(font,
al_map_rgb(0xFF, 0xFF, 0xFF), al_map_rgb(0xFF, 0xFF, 0xFF),
WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 - 50, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2,
WINDOW_WIDTH, 10.0f, WINDOW_WIDTH, 10.0f,
ALLEGRO_ALIGN_CENTRE, ALLEGRO_ALIGN_CENTRE,
help); help);