home
·
contact
·
privacy
projects
/
plomrogue
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Removed if-redundancy in get_drawfunc_by_char().
[plomrogue]
/
src
/
map.c
diff --git
a/src/map.c
b/src/map.c
index 92d1558bae9bbdd8d727cd914e51f15f8c0c507c..45cd2e15ceadeb3fc0f3e9c27ceeea5ec5ade9ae 100644
(file)
--- a/
src/map.c
+++ b/
src/map.c
@@
-1,22
+1,23
@@
#include "map.h"
#include <stdint.h> /* for uint16_t, uint32_t */
#include "misc.h" /* for try_malloc(), center_offset() */
#include "map.h"
#include <stdint.h> /* for uint16_t, uint32_t */
#include "misc.h" /* for try_malloc(), center_offset() */
-#include "map_objects.h" /* for
Player struct
*/
+#include "map_objects.h" /* for
get_player()
*/
#include "yx_uint16.h" /* for yx_uint16 and dir enums */
#include "rrand.h" /* for rrand() */
#include "windows.h" /* for struct Win */
#include "yx_uint16.h" /* for yx_uint16 and dir enums */
#include "rrand.h" /* for rrand() */
#include "windows.h" /* for struct Win */
-struct World;
+#include "main.h" /* for world global */
+#include "wincontrol.h" /* for get_win_by_id() */
-
struct Map init_map(struct World * world
)
+
extern struct Map init_map(
)
{
char * f_name = "init_map()";
struct Map map;
map.size.x = 64;
map.size.y = 64;
uint32_t size = map.size.x * map.size.y;
{
char * f_name = "init_map()";
struct Map map;
map.size.x = 64;
map.size.y = 64;
uint32_t size = map.size.x * map.size.y;
- map.cells = try_malloc(size,
world,
f_name);
+ map.cells = try_malloc(size, f_name);
uint16_t y, x;
for (y = 0; y < map.size.y; y++)
{
uint16_t y, x;
for (y = 0; y < map.size.y; y++)
{
@@
-54,33
+55,45
@@
struct Map init_map(struct World * world)
-
void map_scroll(struct Win * win, struct yx_uint16 map_size, enum di
r d)
+
extern void map_scroll(cha
r d)
{
{
+ struct Win * win = get_win_by_id('m');
uint16_t offset;
uint16_t offset;
- if ((
NORTH == d || SOUTH == d) && map_
size.y > win->framesize.y)
+ if ((
'N' == d || 'S' == d) && world.map->
size.y > win->framesize.y)
{
{
- offset = center_offset(win->center.y, map_size.y, win->framesize.y);
+ offset = center_offset(win->center.y,
+ world.map->size.y, win->framesize.y);
win->center.y = offset + (win->framesize.y / 2);
win->center.y = offset + (win->framesize.y / 2);
- if (
NORTH
== d && win->center.y > 0)
+ if (
'N'
== d && win->center.y > 0)
{
win->center.y--;
}
{
win->center.y--;
}
- else if (
SOUTH == d && win->center.y < map_
size.y - 1)
+ else if (
'S' == d && win->center.y < world.map->
size.y - 1)
{
win->center.y++;
}
}
{
win->center.y++;
}
}
- else if ((
WEST == d || EAST == d) && map_
size.x > win->framesize.x)
+ else if ((
'W' == d || 'E' == d) && world.map->
size.x > win->framesize.x)
{
{
- offset = center_offset(win->center.x, 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);
win->center.x = offset + (win->framesize.x / 2);
- if (
WEST
== d && win->center.x > 0)
+ if (
'W'
== d && win->center.x > 0)
{
win->center.x--;
}
{
win->center.x--;
}
- else if (
EAST == d && win->center.x < map_
size.x - 1)
+ else if (
'E' == d && win->center.x < world.map->
size.x - 1)
{
win->center.x++;
}
}
}
{
win->center.x++;
}
}
}
+
+
+
+extern void map_center()
+{
+ struct MapObj * player = get_player();
+ struct Win * win_map = get_win_by_id('m');
+ win_map->center = player->pos;
+}