home
·
contact
·
privacy
projects
/
plomrogue
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cfe04dd
)
Moved map scrolling into its own function with its own sanity checks.
author
Christian Heller
<c.heller@plomlompom.de>
Fri, 17 May 2013 00:24:36 +0000
(
02:24
+0200)
committer
Christian Heller
<c.heller@plomlompom.de>
Fri, 17 May 2013 00:24:36 +0000
(
02:24
+0200)
roguelike.c
patch
|
blob
|
history
diff --git
a/roguelike.c
b/roguelike.c
index f4dd6212751fff71ba93493588c2aa4a5dda99c1..362826c9b863a3c78808a33a0eb2241000b8138e 100644
(file)
--- a/
roguelike.c
+++ b/
roguelike.c
@@
-46,6
+46,7
@@
void draw_keys_window (struct Win *);
void toggle_window (struct WinMeta *, struct Win *);
void init_keybindings(struct World *);
struct Map init_map ();
void toggle_window (struct WinMeta *, struct Win *);
void init_keybindings(struct World *);
struct Map init_map ();
+void map_scroll (struct Map *, char);
void next_turn (struct World *);
void update_log (struct World *, char *);
void save_keybindings(struct World *);
void next_turn (struct World *);
void update_log (struct World *, char *);
void save_keybindings(struct World *);
@@
-249,6
+250,17
@@
struct Map init_map () {
map.cells[(y * map.width) + x] = terrain; }
return map; }
map.cells[(y * map.width) + x] = terrain; }
return map; }
+void map_scroll (struct Map * map, char dir) {
+// Scroll map into direction dir if possible by changing the offset.
+ if ('n' == dir && map->offset_y > 0)
+ map->offset_y--;
+ else if ('s' == dir)
+ map->offset_y++;
+ else if ('w' == dir && map->offset_x > 0)
+ map->offset_x--;
+ else if ('e' == dir)
+ map->offset_x++; }
+
void next_turn (struct World * world) {
// Increment turn and move enemy.
world->turn++;
void next_turn (struct World * world) {
// Increment turn and move enemy.
world->turn++;
@@
-498,14
+510,14
@@
int main () {
keyswin_move_selection (&world, 'd');
else if (key == get_action_key(world.keybindings, "keys mod"))
keyswin_mod_key (&world, &win_meta);
keyswin_move_selection (&world, 'd');
else if (key == get_action_key(world.keybindings, "keys mod"))
keyswin_mod_key (&world, &win_meta);
- else if (key == get_action_key(world.keybindings, "map up")
&& map.offset_y > 0
)
- map
.offset_y--
;
+ else if (key == get_action_key(world.keybindings, "map up"))
+ map
_scroll (&map, 'n')
;
else if (key == get_action_key(world.keybindings, "map down"))
else if (key == get_action_key(world.keybindings, "map down"))
- map
.offset_y++
;
+ map
_scroll (&map, 's')
;
else if (key == get_action_key(world.keybindings, "map right"))
else if (key == get_action_key(world.keybindings, "map right"))
- map
.offset_x++
;
- else if (key == get_action_key(world.keybindings, "map left")
&& map.offset_x > 0
)
- map
.offset_x--
;
+ map
_scroll (&map, 'e')
;
+ else if (key == get_action_key(world.keybindings, "map left"))
+ map
_scroll (&map, 'w')
;
else if (key == get_action_key(world.keybindings, "player down"))
move_player(&world, 's');
else if (key == get_action_key(world.keybindings, "player up"))
else if (key == get_action_key(world.keybindings, "player down"))
move_player(&world, 's');
else if (key == get_action_key(world.keybindings, "player up"))