/*
 *  Overreact - Mr. 4th Dimention
 *      Allen Webster
 *  03.21.2015 (mm.dd.yyyy)
 *
 * Game to Platform Layer.
 */

struct Game_Memory{
	void *data;
	i32 size;
};

struct Game_Step_Target{
	Game_Render_Target render;
	
	bool32 can_fullscreen;
	bool32 *is_fullscreen;
	
	real32 second_per_frame;
	i32 audio_samples_per_second;
    
    char btn1, btn2;
};

struct Game_Input{
	struct{
		real32 stick_x, stick_y;
	} analog;
	struct{
		bool8 up, down, left, right;
	} digital;
	bool8 button[8];
	bool8 pause;
	bool8 back;
	
	bool8 is_analog;
	
	bool8 toggle_edit_mode;
    
    bool8 key_input;
    char key_code;
};

struct Game_Audio_Target{
	i16 *samples;
    i32 count_per_channel;
    i32 channels;
	i32 samples_per_second;
	real32 second_per_frame;
};

#define SIG_APP_FILL_SAMPLES(name) void(name)(Game_Audio_Target target, Game_Memory memory)
#define SIG_APP_STEP(name) bool32(name)(Game_Step_Target target, Game_Input input, Game_Memory memory, bool32 first)

internal
SIG_APP_FILL_SAMPLES(game_fill_samples);

internal
SIG_APP_STEP(game_step);

