Game::Game() : m_current_state(Game::State::state_game_opening), m_player(g_max_health), m_aliens(1), m_score(0), m_highest_score(0), m_counter(0), m_level(1), m_sound_frame(0) { memset( m_keys, 0 , 1000 ); // Lazy-load SDL initializers -------------------------------------------- init_SDL_Video(); init_SDL_ttf(); init_SDL_Mixer(); // Initialize m_dimensions.x = ARENA_X; m_dimensions.y = ARENA_Y; m_dimensions.w = ARENA_RIGHT; m_dimensions.h = ARENA_BOTTOM; // Video Elements -------------------------------------------------------- // Create the window m_screen = SDL_CreateWindow( WINDOW_TITLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WINDOW_SIZE_W, WINDOW_SIZE_H, 0 ); // Create the renderer m_renderer = SDL_CreateRenderer( m_screen, -1, 0 ); // Font Elements --------------------------------------------------------- m_font= TTF_OpenFont( FONT_FILE, FONT_SIZE ); // Sound Elements -------------------------------------------------------- m_sound_invader1 = Mix_LoadWAV("assets/audio/invader1.wav"); m_sound_invader2 = Mix_LoadWAV("assets/audio/invader2.wav"); m_sound_invader3 = Mix_LoadWAV("assets/audio/invader3.wav"); m_sound_invader4 = Mix_LoadWAV("assets/audio/invader4.wav"); m_sound_shoot = Mix_LoadWAV("assets/audio/shoot.wav"); m_sound_death = Mix_LoadWAV("assets/audio/death.wav"); m_sound_invader_killed = Mix_LoadWAV("assets/audio/invaderkilled.wav"); }
bool init_SDL() { if (SDL_Init(SDL_INIT_VIDEO) < 0 ) { // First, initialize SDL's video subsystem (video only) fprintf(stderr, "Video initialization failed: %s\n", SDL_GetError()); quit_program(1); // Failed, exit } init_SDL_Video(default_width, default_height); return true; }
void process_events() { SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: quit_program( 0 ); break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: quit_program(0); break; case SDLK_F1: quit_program(0); break; case SDLK_a: if (enableDethTest) { enableDethTest = false; printf("enable depth test\n"); glEnable(GL_DEPTH_TEST); } else { enableDethTest = true; printf("disable depth test\n"); glDisable(GL_DEPTH_TEST); } fflush(stdout); break; default: break; } break; case SDL_VIDEORESIZE: init_SDL_Video(event.resize.w, event.resize.h); //init_OpenGL(event.resize.w, event.resize.h); break; case SDL_SYSWMEVENT: break; default: break; } } }