diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-18 16:09:10 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-18 16:09:10 -0500 |
| commit | d86f31a5f428a3937b56d34e026a88ed737eb7bf (patch) | |
| tree | e86d34a36e92cd14b7b8c54a9cfe31f21786f451 /apps/xracer/main.c | |
| parent | 3fbc39f482df596c832cf4ffcf3956a20e71cb38 (diff) | |
| download | kappa-d86f31a5f428a3937b56d34e026a88ed737eb7bf.zip kappa-d86f31a5f428a3937b56d34e026a88ed737eb7bf.tar.gz kappa-d86f31a5f428a3937b56d34e026a88ed737eb7bf.tar.bz2 kappa-d86f31a5f428a3937b56d34e026a88ed737eb7bf.tar.xz | |
support modifier keys
Diffstat (limited to 'apps/xracer/main.c')
| -rw-r--r-- | apps/xracer/main.c | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/apps/xracer/main.c b/apps/xracer/main.c index 5c88c4f..29b2a7e 100644 --- a/apps/xracer/main.c +++ b/apps/xracer/main.c @@ -87,6 +87,8 @@ enum plugin_status do_flythrough(void) /* y is automatically calculated */ camera.pos.z = 0; + camera.draw_dist = DRAW_DIST; + //generate_test_road(); //road_length = load_map(road, MAX_ROAD_LENGTH, loop_map, ARRAYLEN(loop_map)); @@ -104,25 +106,64 @@ enum plugin_status do_flythrough(void) while(1) { int button = rb->button_get(); + int mod = rb->modifier_get(); switch(button) { case BUTTON_UP: - camera_height += MANUAL_SPEED; + switch(mod) + { + case MODIFIER_NONE: + camera_height += MANUAL_SPEED; + break; + case MODIFIER_CTRL: + camera.depth += 1; + break; + case MODIFIER_ALT: + camera.pos.z += MANUAL_SPEED; + break; + } break; case BUTTON_DOWN: - camera_height -= MANUAL_SPEED; + switch(mod) + { + case MODIFIER_NONE: + camera_height -= MANUAL_SPEED; + break; + case MODIFIER_CTRL: + camera.depth -= 1; + break; + case MODIFIER_ALT: + camera.pos.z -= MANUAL_SPEED; + break; + } break; case BUTTON_LEFT: - camera.pos.x -= MANUAL_SPEED; + switch(mod) + { + case MODIFIER_NONE: + camera.pos.x -= MANUAL_SPEED; + break; + case MODIFIER_CTRL: + camera.draw_dist -= 8; + break; + } break; case BUTTON_RIGHT: - camera.pos.x += MANUAL_SPEED; + switch(mod) + { + case MODIFIER_NONE: + camera.pos.x += MANUAL_SPEED; + break; + case MODIFIER_CTRL: + camera.draw_dist += 8; + break; + } break; } camera.pos.z += 512; /* loop the track right before going off the "end" */ - camera.pos.z %= (road_length - DRAW_DIST) * SEGMENT_LENGTH; + camera.pos.z %= (road_length - camera.draw_dist) * SEGMENT_LENGTH; render(&camera, road, road_length, camera_height); |