diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-17 15:33:03 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-17 15:33:03 -0500 |
| commit | 6030b176c2819c83c625f257ad7e8632a8245ed9 (patch) | |
| tree | fd98417c4f40a3bc8479a5900920a0ccd40fedd6 /apps/xracer/map.c | |
| parent | ef4cc242dc8ad04320d19af22931fcbdbf670c13 (diff) | |
| download | kappa-6030b176c2819c83c625f257ad7e8632a8245ed9.zip kappa-6030b176c2819c83c625f257ad7e8632a8245ed9.tar.gz kappa-6030b176c2819c83c625f257ad7e8632a8245ed9.tar.bz2 kappa-6030b176c2819c83c625f257ad7e8632a8245ed9.tar.xz | |
Emulate the Rockbox plugin API, ported xracer
Tons of changes
Diffstat (limited to 'apps/xracer/map.c')
| -rw-r--r-- | apps/xracer/map.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/apps/xracer/map.c b/apps/xracer/map.c new file mode 100644 index 0000000..9a4f740 --- /dev/null +++ b/apps/xracer/map.c @@ -0,0 +1,44 @@ +#include <stdbool.h> +#include <stdint.h> + +#include "generator.h" +#include "map.h" +#include "util.h" + +static bool add_section(struct road_segment *road, unsigned int max_road_length, unsigned int *back, struct road_section *map) +{ + bool ret = true; + switch(map->type) + { + case 0: + /* constant segment */ + add_road(road, max_road_length, *back, map->len, map->curve, map->slope); + *back += map->len; + break; + case 1: + /* up-hill */ + add_uphill(road, max_road_length, *back, map->slope, map->len, map->curve); + *back += map->len + 2*map->slope; + break; + case 2: + add_downhill(road, max_road_length, *back, map->slope, map->len, map->curve); + *back += map->len + 2*map->slope; + break; + default: + warning("invalid type id"); + ret = false; + break; + } + return ret; +} + +unsigned load_map(struct road_segment *road, unsigned int max_road_length, struct road_section *map, unsigned int map_length) +{ + gen_reset(); + unsigned int back = 0; + for(unsigned int i=0;i<map_length;++i) + { + add_section(road, max_road_length, &back, &map[i]); + } + return back; +} |