From: Christian Heller Date: Sun, 1 Dec 2013 03:33:40 +0000 (+0100) Subject: Some refactoring in map library. X-Git-Tag: tce~899 X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/static/%7B%7Byoutube_prefix%7D%7D%7B%7Bvideo_id%7D%7D?a=commitdiff_plain;h=9ca325e8a2ad51fe53efae4130f5a9c40aa167c8;p=plomrogue Some refactoring in map library. --- diff --git a/src/map.c b/src/map.c index b8c8733..3b3f34e 100644 --- a/src/map.c +++ b/src/map.c @@ -1,8 +1,8 @@ #include "map.h" -#include /* for uint16_t, uint32_t */ +#include /* for uint8_t, uint16_t, uint32_t */ #include "misc.h" /* for try_malloc(), center_offset(), rrand() */ #include "map_objects.h" /* for get_player() */ -#include "yx_uint16.h" /* for yx_uint16 and dir enums */ +#include "yx_uint16.h" /* for yx_uint16, dir enums */ #include "windows.h" /* for struct Win */ #include "main.h" /* for world global */ #include "wincontrol.h" /* for get_win_by_id() */ @@ -20,10 +20,7 @@ extern struct Map init_map() uint16_t y, x; for (y = 0; y < map.size.y; y++) { - for (x = 0; x < map.size.x; x++) - { - map.cells[(y * map.size.x) + x] = '~'; - } + for (x = 0; x < map.size.x; map.cells[(y * map.size.x) + x] = '~', x++); } map.cells[size / 2 + (map.size.x / 2)] = '.'; uint32_t curpos; @@ -63,28 +60,24 @@ extern void map_scroll(char d) offset = center_offset(win->center.y, world.map->size.y, win->framesize.y); win->center.y = offset + (win->framesize.y / 2); - if ('N' == d && win->center.y > 0) - { - win->center.y--; - } - else if ('S' == d && win->center.y < world.map->size.y - 1) + if ('S' == d && win->center.y < world.map->size.y - 1) { win->center.y++; + return; } + win->center.y = win->center.y - ('N' == d && win->center.y > 0); } else if (('W' == d || 'E' == d) && world.map->size.x > win->framesize.x) { offset = center_offset(win->center.x, world.map->size.x, win->framesize.x); win->center.x = offset + (win->framesize.x / 2); - if ('W' == d && win->center.x > 0) - { - win->center.x--; - } - else if ('E' == d && win->center.x < world.map->size.x - 1) + if ('E' == d && win->center.x < world.map->size.x - 1) { win->center.x++; + return; } + win->center.x = win->center.x - ('W' == d && win->center.x > 0); } } diff --git a/src/map.h b/src/map.h index a1d607a..8fb21ee 100644 --- a/src/map.h +++ b/src/map.h @@ -19,22 +19,19 @@ struct Map -/* Initialize an island map as 64 x 64 cells of "~" cells representing water and - * "." cells representing land. The shape of the island is generated randomly by - * starting with a sea containing one land cell in the middle and then going - * into a cycle of repeatedly selecting a random cell on the map and - * transforming it into a land cell if it is horizontally or vertically neighbor - * to one; the cycle ends when a land cell is due to be created right at the - * border of the map. +/* Initialize island map as 64 x 64 "~" cells representing water and "." cells + * representing land. The shape of the island is generated randomly by starting + * with a sea containing one land cell in the middle and then going into a cycle + * of repeatedly selecting a random cell on the map and transforming it into a + * land cell if it is horizontally or vertically neighbor to one; the cycle ends + * when a land cell is due to be created right at the border of the map. */ extern struct Map init_map(); -/* Try to change the view center of map into directino described by "d" (north - * = "N", east = "E" etc.). - */ +/* Try changing map window's focus into directino "d" (north = "N" etc.). */ extern void map_scroll(char d); -/* Center map on player. */ +/* Center map window on player. */ extern void map_center(); /* Check if coordinate pos on (or beyond) map is accessible to map object