/* * File: game.h * Author: Alexander Zhirov * Connection with me (telegram messenger): @alexanderzhirov * * Created on 2020.06.03 */ #ifndef client_data #define client_data #include "lib/common.h" #include "objects.h" #include "network.h" enum bitmaps { BG1, BG2, BG3, SHIP_R, SHIP_G, SHIP_Y, EXPLOSION, COMET }; enum fonts { FONT_SAC60, FONT_SAC80, FONT_PS2P30, FONT_PS2P40 }; enum samples { SAMPLE_BOOM, SAMPLE_SHOT, SAMPLE_MENU, SAMPLE_GAME, SAMPLE_BUTTON, SAMPLE_ENTER }; enum instance { INSTANCE_MENU, INSTANCE_GAME }; enum states { MENU, SINGLE, NETWORKMODE, NETWORKCREATE, NETWORKJOIN, NETWORKLIST, NETWORKPARTY, NETWORKGAME, NETWORKOUT, SETTINGS, AUTORS, PAUSE, GAMEOVER }; enum keys { UP, DOWN, LEFT, RIGHT, ENTER, ESCAPE, SPACE }; typedef struct cl_settings { float effects_gain; float music_gain; } CLIENT_SETTINGS; typedef struct cl_data { CLIENT_SCREEN screen; CLIENT_TIMER timer; CLIENT_EVENT event; CLIENT_MEDIA media; CLIENT_PAIRING pairing; CLIENT_OBJECTS objects; CLIENT_NETWORK network; CLIENT_ENET enet; CLIENT_SOUND sound; CLIENT_SETTINGS settings; bool keys[7]; bool pause; bool done; bool render; int state; } CLIENT_DATA; /************************************************************ * CREATE DATA PLAYER (MAIN OBJECT) ***********************************************************/ CLIENT_DATA* cl_create_data(CLIENT_DATA* data, CLIENT_PARAMETRS parametrs); void cl_destroy_data(CLIENT_DATA* data); /************************************************************ * COMMON FUNCTION ***********************************************************/ void cl_init_interfaces(CLIENT_PAIRING* pairing); void cl_load_media(CLIENT_MEDIA* media); void cl_init_media(CLIENT_DATA* data); void cl_change_state(CLIENT_DATA* data, int state); /************************************************************ * SAMPLE INSTANCE ***********************************************************/ static void cl_init_sample_instance(CLIENT_DATA* data, int key_instance, int key_sample); static void cl_change_sample_instance(CLIENT_DATA* data, int state); void cl_play_sound(CLIENT_DATA* data, int key_sample); /************************************************************ * BACKGROUND ***********************************************************/ static void cl_init_background(CLIENT_DATA* data, int key_state, int key_bitmap, float x, float y, float vel_x, float vel_y, int dir_x, int dir_y); static void cl_copy_background(CLIENT_DATA* data, int dir_key_state, int src_key_state); void cl_draw_background(CLIENT_DATA* data, int key_bitmap); void cl_update_background(CLIENT_DATA* data, int key_bitmap); /************************************************************ * HEADER ***********************************************************/ static void cl_init_header(CLIENT_DATA* data, int key_state, int key_font, const char* text); void cl_draw_header(CLIENT_DATA* data); /************************************************************ * BUTTON ***********************************************************/ void cl_update_button(CLIENT_DATA* data); void cl_select_button(CLIENT_DATA* data); void cl_draw_button(CLIENT_DATA* data); /************************************************************ * FIELD ***********************************************************/ void cl_draw_field(CLIENT_DATA* data); void cl_update_field(CLIENT_DATA* data); void cl_enter_field(CLIENT_DATA* data); void cl_print_field(CLIENT_DATA* data); /************************************************************ * LIST ***********************************************************/ void cl_draw_list(CLIENT_DATA* data); void cl_update_list(CLIENT_DATA* data); /************************************************************ * NETWORK ***********************************************************/ void cl_send_message_create(CLIENT_DATA* data); void cl_send_message_join(CLIENT_DATA* data); #endif