#include "isogfx-demo.h" #include #include #include #include #include #include typedef struct State { int xpick; int ypick; SpriteSheet stag_sheet; Sprite stag; } State; static void shutdown(IsoGfx* iso, void* app_state) { assert(iso); if (app_state) { free(app_state); } } static void update(IsoGfx* iso, void* app_state, double t, double dt) { assert(iso); assert(app_state); State* state = (State*)(app_state); double mouse_x, mouse_y; gfx_app_get_mouse_position(&mouse_x, &mouse_y); isogfx_pick_tile(iso, mouse_x, mouse_y, &state->xpick, &state->ypick); // printf("Picked tile: (%d, %d)\n", state->xpick, state->ypick); } static void render(IsoGfx* iso, void* app_state) { assert(iso); assert(app_state); State* state = (State*)(app_state); isogfx_render(iso); } bool make_demo_app(IsoGfx* iso, IsoGfxApp* app) { assert(iso); assert(app); State* state = calloc(1, sizeof(State)); if (!state) { return false; } if (!isogfx_load_world(iso, "/home/jeanne/assets/tilemaps/demo1.tm")) { goto cleanup; } if (!isogfx_load_sprite_sheet( iso, "/home/jeanne/assets/tilesets/scrabling/critters/stag/stag.ss", &state->stag_sheet)) { goto cleanup; } state->stag = isogfx_make_sprite(iso, state->stag_sheet); isogfx_set_sprite_position(iso, state->stag, 5, 4); app->pixel_scale = 2; app->state = state; app->shutdown = shutdown; app->update = update; app->render = render; return true; cleanup: free(state); return false; }