aboutsummaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2024-01-27 12:42:20 +0100
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2024-01-27 17:38:12 +0100
commit0f21739551b2daf578ad9c5ed3367c8a8ed7b7c9 (patch)
treea0e6bc7e10f9f815fe680fa54f5d912fb460608b /src/game
parentdaf6f84ccdf817f7088aa527b4b37c2cca91c052 (diff)
downloadjancity-0f21739551b2daf578ad9c5ed3367c8a8ed7b7c9.tar.gz
Define terrain rendering and loading
Diffstat (limited to 'src/game')
-rw-r--r--src/game/inc/game.h1
-rw-r--r--src/game/src/game.c7
-rw-r--r--src/game/src/res.c40
3 files changed, 45 insertions, 3 deletions
diff --git a/src/game/inc/game.h b/src/game/inc/game.h
index 66e5e79..1dfdd58 100644
--- a/src/game/inc/game.h
+++ b/src/game/inc/game.h
@@ -30,6 +30,7 @@ struct game_cfg
size_t n;
union peripheral *p;
+ const char *map;
};
int game_resinit(void);
diff --git a/src/game/src/game.c b/src/game/src/game.c
index 084415c..cbfb648 100644
--- a/src/game/src/game.c
+++ b/src/game/src/game.c
@@ -14,8 +14,11 @@ int game(const struct game_cfg *const cfg)
struct human_player human;
struct terrain_map map;
- terrain_init(&map);
- building_set_alive_cb(terrain_block_update, &map);
+ if (terrain_init(cfg->map, &map))
+ {
+ fprintf(stderr, "%s: terrain_init failed\n", __func__);
+ return -1;
+ }
const struct human_player_cfg hcfg =
{
diff --git a/src/game/src/res.c b/src/game/src/res.c
index bf05bd9..6489d30 100644
--- a/src/game/src/res.c
+++ b/src/game/src/res.c
@@ -12,7 +12,45 @@
#include <unit.h>
#include <stdbool.h>
-static const struct container c[1];
+static const struct container c[] =
+{
+ {
+ .path = "sidewalk",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &terrain_sprites[SIDEWALK]
+ },
+ {
+ .path = "roof1",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &terrain_sprites[ROOF1]
+ },
+ {
+ .path = "roof2",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &terrain_sprites[ROOF2]
+ },
+ {
+ .path = "cursor",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &cursor_sprite
+ },
+ {
+ .path = "btn_left",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &gui_button_sprites[GUI_BUTTON_LEFT]
+ },
+ {
+ .path = "btn_mid",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &gui_button_sprites[GUI_BUTTON_MID]
+ },
+ {
+ .path = "btn_right",
+ .type = CONTAINER_TYPE_SPRITE,
+ .data.sprite = &gui_button_sprites[GUI_BUTTON_RIGHT]
+ },
+};
+
static bool init;
void game_free(void)