aboutsummaryrefslogtreecommitdiff
path: root/apps/xracer/main.c
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-02-18 16:09:10 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-02-18 16:09:10 -0500
commitd86f31a5f428a3937b56d34e026a88ed737eb7bf (patch)
treee86d34a36e92cd14b7b8c54a9cfe31f21786f451 /apps/xracer/main.c
parent3fbc39f482df596c832cf4ffcf3956a20e71cb38 (diff)
downloadkappa-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.c51
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);