void GameStats(Game * game) { // Draw my Name and Student Number. draw_line(0, screen_height() - 3, screen_width() - 1, screen_height() - 3, '_'); draw_string(1, screen_height() - 2, "Tylor Stewart (N9013555)"); // Draw the current Score of the Player. draw_string(screen_width() - 23, screen_height() - 2, "Score = "); draw_int(screen_width() - 15, screen_height() - 2, game->player_score); // Draw the current Lives of the Player. draw_string(screen_width() - 10, screen_height() - 2, "Lives = "); draw_int(screen_width() - 2, screen_height() - 2, game->player_lives); // Draw the current Level of the Game the Player is on. int levelX = screen_width() / 2; int levelY = screen_height() - 1; if (game->game_level == 1) { char levelName[] = "Level 1: Basic"; levelX -= strlen(levelName) / 2; draw_string(levelX, levelY, levelName); } else if (game->game_level == 2) { char levelName[] = "Level 2: Harmonic"; levelX -= strlen(levelName) / 2; draw_string(levelX, levelY, levelName); } else if (game->game_level == 3) { char levelName[] = "Level 3: Falling"; levelX -= strlen(levelName) / 2; draw_string(levelX, levelY, levelName); } else if (game->game_level == 4) { char levelName[] = "Level 4: Drunken"; levelX -= strlen(levelName) / 2; draw_string(levelX, levelY, levelName); } else if (game->game_level == 5) { char levelName[] = "Level 5: Aggressive"; levelX -= strlen(levelName) / 2; draw_string(levelX, levelY, levelName); } }
//funkce pro kresleni void draw_game() { float t; draw_stars(); draw_enemies(); draw_bullets(); draw_particles(); draw_bonuses(); //mod pro koncovy screen hry if (playerdead) { //smesovani barev glEnable(GL_BLEND); //vyber blendovaci funkce glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //zesednuti pozadi glColor4f(0, 0, 0, 0.6); glBegin(GL_QUADS); glVertex2f(-250, -350); glVertex2f(250, -350); glVertex2f(250, 350); glVertex2f(-250, 350); glEnd(); glDisable(GL_BLEND); //kresleni statistik hry na konci hry glPushMatrix(); glTranslatef(-240, 0, 0); glScalef(18, 18, 0); glColor3f(0, 1, 0); glPushMatrix(); glTranslatef(2, 5, 0); glScalef(4, 4, 0); draw_string("GAME OVER"); glColor3f(1, 1, 1); glTranslatef(0.03, 0.03, 0); draw_string("GAME OVER"); glPopMatrix(); draw_string("LEVEL"); glTranslatef(3.5, 0, 0); draw_int(level); glTranslatef(-3.5, -1, 0); draw_string("SCORE"); glTranslatef(3.5, 0, 0); draw_int(score); glTranslatef(-3.5, -5, 0); glPushMatrix(); glTranslatef(0.3, -4, 0); glScalef(2, 2, 0); glColor3f(0, 1, 0); draw_string("PRESS FIRE TO RESTART"); glPopMatrix(); glPopMatrix(); } else { //statistika hry v levem spodnim rohu glPushMatrix(); glTranslatef(-240, -305, 0); glScalef(18, 18, 1); glColor3f(0, 1, 0); draw_string("POWER"); glTranslatef(3.5, 0, 0); draw_int(plevel); glTranslatef(-3.5, -1, 0); draw_string("LEVEL"); glTranslatef(3.5, 0, 0); draw_int(level); glTranslatef(-3.5, -1, 0); draw_string("SCORE"); glTranslatef(3.5, 0, 0); draw_int(score); glPopMatrix(); glTranslatef(posx, posy, 0); //raketka glBegin(GL_TRIANGLES); glColor3f(0, 0, 1); glVertex2f(-20, -10); glColor3f(0.5, 0.5, 1); glVertex2f(0, 0); glVertex2f(0, 50); glVertex2f(0, 50); glVertex2f(0, 0); glColor3f(0, 0, 1); glVertex2f(20, -10); glColor3f(1, 0, 0); glVertex2f(0, 0); glColor3f(1, 1, 0); glVertex2f(-2.5, -6); glVertex2f(2.5, -6); glEnd(); //pokud hrac sebere stitovy bonus if (shieldtimer>0) { //poslednich 5 vterin stit blika if (shieldtimer<5) t=sinf(shieldtimer*20); else t=1; glColor3f(0.3*t*t, 0.3*t*t, 0.6*t*t); //nakresleni trojuhelnikoveho stitu glBegin(GL_LINE_LOOP); glVertex2f(0, 55); glVertex2f(-25, -15); glVertex2f(25, -15); glEnd(); } } }
void draw_HUD(SDL_Renderer* ren) { //Draw the top bar SDL_SetRenderDrawColor(ren, 255, 255, 255, 0); top_bar.w = window_size_x; SDL_RenderFillRect(ren, &top_bar); draw_int(ren, font, top_bar_text_color, 20, 0, reqired_power, "Required: ", " MW"); draw_int(ren, font, top_bar_text_color, 20, 20, power_avalible, "Avalible: ", " MW"); draw_int(ren, font, top_bar_text_color, 200, 00, getBalance(), "£", "000"); draw_int(ren, font, top_bar_text_color, 200, 20, lastBalanceChange, "£", "000"); draw_int(ren, font, top_bar_text_color, 400, 0, getPopulation(), "Pop: ", ""); fill_scale_values(); public_happiness_scale.x = window_size_x-100-80; draw_scale(ren, &public_happiness_scale, scale_values.average); //Draw the side bar if(show_sidebar) { SDL_SetRenderDrawColor(ren, 255, 255, 255, 0); side_bar.x = window_size_x - side_bar.w; SDL_RenderFillRect(ren, &side_bar); SDL_Rect scaleBox = {window_size_x-100-5,0,100,fontSizeLarge+2}; int item_y = side_bar.y+5; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_POLICE_start); scaleBox.y = item_y; draw_scale(ren, &scaleBox, scale_values.police); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_HEALTH_start); setColorGoodBad(ren, scale_values.health); scaleBox.y = item_y; SDL_RenderFillRect(ren, &scaleBox); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_EDUCATION_start); setColorGoodBad(ren, populationPerSchool() < target_population_per_school); scaleBox.y = item_y; draw_scale(ren, &scaleBox, scale_values.education); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_SHOPPING_start); setColorGoodBad(ren, scale_values.shopping); scaleBox.y = item_y; SDL_RenderFillRect(ren, &scaleBox); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_POWER_start); scaleBox.y = item_y; draw_scale(ren, &scaleBox, scale_values.power); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_WASTE_start); scaleBox.y = item_y; draw_scale(ren, &scaleBox, scale_values.waste); item_y += fontSizeLarge+2; draw_string(ren, fontLarge, top_bar_text_color, side_bar.x+5, item_y, &_binary_VALUE_TEXT_POLUTION_start); scaleBox.y = item_y; draw_scale(ren, &scaleBox, scale_values.polution); } SDL_SetRenderDrawColor(ren, 0, 0, 0, 0); SDL_Rect open_menu_button = {window_size_x-30,0,30,30}; SDL_RenderFillRect(ren, &open_menu_button); char* modeText = NULL; switch(getMode()) { case MODE_BUILD_RESIDENTIAL_1: modeText = &_binary_MODE_TEXT_RESIDENTIAL_1_start; break; case MODE_BUILD_RESIDENTIAL_2: modeText = &_binary_MODE_TEXT_RESIDENTIAL_2_start; break; case MODE_BUILD_ROAD: modeText = &_binary_MODE_TEXT_BUILD_ROAD_start; break; case MODE_BUILD_POWER_GAS: modeText = &_binary_MODE_TEXT_BUILD_POWER_GAS_start; break; case MODE_BUILD_DESTROY: modeText = &_binary_MODE_TEXT_DESTROY_start; break; case MODE_BUILD_RETAIL: modeText = &_binary_MODE_TEXT_BUILD_RETAIL_start; break; case MODE_BUILD_HOSPITAL: modeText = &_binary_MODE_TEXT_BUILD_HOSPITAL_start; break; case MODE_BUILD_POWER_SOLAR: modeText = &_binary_MODE_TEXT_BUILD_POWER_SOLAR_start; break; default: break; } if(modeText != NULL) { draw_string(ren, font, top_bar_text_color, 5, window_size_y-15, modeText); } if(ready_to_place) { SDL_SetRenderDrawColor(ren, 255, 255, 255, 0); SDL_RenderFillRect(ren, &planned_cost_box); draw_int(ren, font, top_bar_text_color, 200, 35, costOfPlannedBuild(), "(-£", "000)"); } SDL_SetRenderDrawColor(ren, 0, 0, 0, 0); draw_menu(ren); if(active_emergency()) { Point p = {window_size_x-16, 80}; drawTile(ren, &p, getClip(SPRITE_BUILD_BACKGROUND)); drawTile(ren, &p, getClip(SPRITE_BUILD_SERVICES_POLICE)); } }