4coder-non-source/test_data/lots_of_files/jam_game.h

296 lines
5.1 KiB
C

/*
* Overreact - Mr. 4th Dimention
* Allen Webster
* 03.21.2015 (mm.dd.yyyy)
*/
struct Memory_Block{
void *base;
i32 size, cursor;
};
struct Track{
Sound sound;
Track *next_free;
i32 sample_pos;
real32 sample_pos_dec;
real32 volume;
real32 bend;
bool32 playing;
bool32 looping;
i32 frames_delay;
};
enum Block_Type{
ERROR,
ZOMBIE,
HUMAN,
BRAIN,
AMMO,
BOMB,
WALL,
BLOCK_TYPE_COUNT
};
#define RIGHT 0
#define UP 1
#define LEFT 2
#define DOWN 3
#define ZOMBIE_TURN_THRESHOLD 360
Block_Type block_freq_table[] = {
ZOMBIE,
ZOMBIE,
ZOMBIE,
ZOMBIE,
HUMAN,
HUMAN,
HUMAN,
HUMAN,
HUMAN,
HUMAN,
BRAIN,
BRAIN,
BRAIN,
AMMO,
AMMO,
AMMO,
AMMO,
AMMO,
BOMB,
BOMB,
BOMB,
WALL,
WALL,
WALL,
WALL,
WALL
};
struct Entity{
Block_Type type;
i32 grid_x, grid_y;
real32 show_x, show_y;
bool32 active;
i32 facing;
bool32 firing;
i32 step_forward;
bool32 death_marked;
i32 infection_amount;
real32 wobble;
};
struct Spawn_Request{
Block_Type type;
i32 x, y;
bool32 random;
};
#define TEST_ORDER 0
struct Level_Data{
i32 min_score;
i32 fall_tick_time;
};
Level_Data levels[] = {
{0, 30},
{400, 26},
{1200, 22},
{2400, 18},
{3600, 15}
};
struct Particle{
i32 tex_index;
Vec2 pos, vel;
i32 life_counter;
real32 rot;
real32 rot_vel;
};
#define LIST_PRT_TYPES(m) \
m(prt_ammo); \
m(prt_blood); \
m(prt_bone); \
m(prt_brain); \
m(prt_human); \
m(prt_muzzle); \
m(prt_tnt); \
m(prt_wall); \
m(prt_zombie); \
m(prt_bullet)
struct Particle_Textures{
Render_Texture prt_ammo[5];
Render_Texture prt_blood[6];
Render_Texture prt_bone[6];
Render_Texture prt_brain[4];
Render_Texture prt_human[4];
Render_Texture prt_muzzle[2];
Render_Texture prt_tnt[5];
Render_Texture prt_wall[5];
Render_Texture prt_zombie[4];
Render_Texture prt_bullet[1];
};
struct Particle_Type{
i32 tex_count;
i32 first_tex_id;
};
struct App_Vars{
Memory_Block block;
Game_Input prev_input;
GJ_Context gj;
i32 table_id;
pcg32_random rnd;
Render_Texture background;
Render_Texture human[1][4];
Render_Texture zombie[1];
Render_Texture ammo;
Render_Texture brain;
Render_Texture bomb;
Render_Texture wall;
Render_Texture *prt_textures;
Particle_Type *prt_types;
i32 prt_type_count;
Particle particles[128];
i32 particle_count, particle_max;
#define DECL_INT(t) i32 t##_index
LIST_PRT_TYPES(DECL_INT);
#undef DECL_INT
Render_Texture scorename;
Render_Texture scoreback;
Render_Texture gameover;
Render_Texture shadow;
Render_Texture finish_button[2];
Render_Texture overreact;
Render_Texture title;
Render_Texture title_button;
Render_Texture controls;
Font font;
Font small_font;
Track music;
Track sfx_tracks[32];
Track *sfx_free;
Sound ammo_flip1;
Sound ammo_flip2;
Sound ammo_land;
Sound brains1;
Sound brains2;
Sound explosion;
Sound gun_shot;
Sound person_flip1;
Sound person_flip2;
Sound person_land;
Sound reload;
Sound soft_flip1;
Sound soft_flip2;
Sound soft_land1;
Sound soft_land2;
Sound wall_flip1;
Sound wall_flip2;
Sound wall_land;
Sound zombie_break;
Sound splat_death;
Sound score1;
Sound score2;
Sound menu_music;
Sound gameplay1;
Sound gameplay2;
bool32 song_done;
i32 silence_timer;
i32 fall_timer;
i32 refall_timer;
bool32 game_over;
i32 title_screen;
bool32 controls_screen;
bool32 need_new_block;
bool32 need_to_fill_gaps;
bool32 chain_reacting;
i32 level;
#define COMBO_TIME 20
i32 reaction_timer;
i32 fill_timer;
i32 score;
i32 nonsense_score;
i32 active_field;
i32 blink_timer;
char user_name[16];
i32 user_name_len;
char user_token[16];
i32 user_token_len;
char teaser_name[32];
char teaser_score[64];
i32 teaser_name_len;
i32 teaser_score_len;
bool32 looked_up_teaser;
#define WIDTH 6
#define HEIGHT 7
Entity entities[WIDTH*HEIGHT];
i32 entity_count, entity_max;
Spawn_Request spawns[16];
i32 spawn_count, spawn_max;
Entity *to_free[16];
i32 free_count, free_max;
Entity *grid[WIDTH*HEIGHT];
#if TEST_ORDER == 1
i32 test_type_i;
#endif
};
Grid_Pos right_shot[] = {
{1, 0},
{2, 0},
{3, 0}
};
Grid_Pos up_shot[] = {
{0, -1},
{0, -2},
{0, -3}
};
Grid_Pos left_shot[] = {
{-1, 0},
{-2, 0},
{-3, 0}
};
Grid_Pos down_shot[] = {
{0, 1},
{0, 2},
{0, 3}
};