/* This file was generated by scramble.py. */
#line 1 "src/render.py"
#ifndef _RENDER_
#define _RENDER_
typedef struct Render Render;
typedef struct Object Object;
typedef struct Kind Kind;
#line 1
#include "main.h"
#include "dungeon.h"
#include "data.h"
#line 18
struct Render {
    LandCamera * cam;
    LandVector light;
    Land4x4Matrix projection;
    char * vertex_shader;
    char * fragment_shader;
    int stats_triangles;
    float minz;
    bool more /* set to False to initialize shaders */;
};
struct Object {
    Creature * creature;
    Land4x4Matrix matrix;
    Kind * kind;
    float height;
    float light;
    float xpix, ypix;
    bool dead;
    bool frozen;
    Creature * home;
    uint64_t expire_t;
#line 40
    Kind * equip [4] /* main, off, head, neck */;
#line 42
    Shadows * shadows_normal;
    Shadows * shadows_attack;
};
#line 47
extern Render render;
#line 49
struct Kind {
    int kid;
    int cost;
    bool is_creature;
    Data3DModel * normal;
    Data3DModel * attack;
    Data3DModel * dead;
    int upkeep [3];
    char * name;
#line 59
    int sound_attack;
    int sound_fight;
    int sound_special;
    int sound_down;
};
Kind* kind_get(int kid);
#line 67
Kind* render_kind_new(str anim, str anim_attack, str anim_dead, float scale, bool moving);
#line 84
void kind_give_name(Kind * k, str name);
#line 88
Kind* render_kind_new_static(str name, float scale);
#line 91
Kind* render_kind_new_anim(str name, str name_attack, str name_dead, float scale);
#line 94
Kind* render_kind_new_shadow(str name, float scale);
#line 97
void render_clear(void);
#line 111
void render_3d_projection(void);
#line 129
void render_2d_projection(void);
#line 137
void hexa(float x, float y, float w, float h);
#line 152
void hexf(float x, float y, float w, float h);
#line 162
void get_hexpos(int x, int y, float * sx, float * sz);
#line 171
Object* add_static_object(float x, float y, float z, Kind * k, float angle);
#line 187
Object* render_add_moving_object(Creature * creature);
#line 197
void object_destroy(Object * o);
#line 202
Object* render_add_particle_to(Kind * k, int x, int y, int x2, int y2);
#line 236
Object* render_add_particle(Kind * k, int x, int y);
#line 239
void object_prepare_creature(Object * self);
#line 306
Data3DModel* object_model(Object * self);
#line 318
void draw_object(Object * ob, Land4x4Matrix tm);
#line 339
void draw_equipment(Object * ob, Data3DModel * k, int t, float light);
#line 353
void draw_model(Data3DModel * model, int t, float light);
#line 363
void draw_shadow(Object * ob, Land4x4Matrix tm);
#line 392
void draw_object_ui(Object * ob);
#line 397
void draw_healthbar(Object * ob);
#line 427
void draw_manabar(Object * ob);
#line 451
void render_redo_static_objects(void);
#line 482
void render_create_objects(void);
#line 499
void get_hex_under_mouse(float mx, float my, int * hx, int * hy);
#line 531
void get_hex_pixelpos(int x, int y, float * px, float * py);
#line 543
void render_debug_grid(void);
#line 619
void box(str name, str format, ...);
#line 635
void render_infobar(void);
#line 679
Shadows* shadows_new(Data3DModel * model, Object * equip_ob);
#line 695
void shadows_maybe_destroy(Shadows * self);
#endif
/* This file was generated by scramble.py. */
