#pragma once

#include <gfx/app.h>

#include <stdbool.h>

typedef struct IsoGfx    IsoGfx;
typedef struct IsoGfxApp IsoGfxApp;

typedef struct IsoGfxAppState IsoGfxAppState;

typedef struct IsoGfxApp {
  int             pixel_scale; // 0 or 1 for 1:1 scale.
  IsoGfxAppState* state;

  bool (*init)(IsoGfxAppState*, IsoGfx*, int argc, const char** argv);
  void (*shutdown)(IsoGfxAppState*, IsoGfx*);
  void (*update)(IsoGfxAppState*, IsoGfx*, double t, double dt);
  void (*render)(IsoGfxAppState*, IsoGfx*);
} IsoGfxApp;

void iso_run(int argc, const char** argv, IsoGfxApp*);