int main(int argc, const char ** argv) { struct timeval start_time, end_time; struct timespec tspec = {0, 0}; struct timespec left = {0, 0}; int error; long long elapsed; float cam_center_x, cam_center_y; if (swiftsure_log_init() < 0) { printf("Bad times, we couldn't open our log file =(\n"); return -1; } rendering_init(); if (input_init() < 0) { printf("Bad times, we couldn't initialize the input subsystem\n"); return -1; } action_init(); world.width = WORLD_SIZE; world.height = WORLD_SIZE; world_init(&world, 1); game_init(); swiftsure_log(INFO, "Startin engines\n"); frame = 0; elapsed = 16666; while (1) { gettimeofday(&start_time, NULL); game_get_avg_pos(&cam_center_x, &cam_center_y); render_set_camera(-cam_center_x, -cam_center_y, 4); handle_events(); action_perform(); render_start_frame(); render_world(&world); game_render_players(); render_end_frame(); ++frame; physics_tick(&world, 10. / elapsed); //Rate limiting gettimeofday(&end_time, NULL); elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + (end_time.tv_usec - start_time.tv_usec); if (elapsed < 16666) { tspec.tv_nsec = (16666 - elapsed) * 1000; error = nanosleep(&tspec, &left); if (error < 0) { swiftsure_log(DEBUG, "We had %d seconds and %d nanoseconds left to sleep, errno %d\n", left.tv_sec, left.tv_nsec, errno); } } } }
void sem_render_game(sem_render_context* ctx, sem_game* game) { cairo_select_font_face(ctx->cr, "Railway", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_rectangle(ctx->cr, 0, 0, ctx->width, ctx->height); cairo_set_source_rgb(ctx->cr, 0, 0, 0); cairo_fill(ctx->cr); cairo_save(ctx->cr); cairo_rectangle(ctx->cr, 0, 0, ctx->width - ctx->panel_width, ctx->height); cairo_clip(ctx->cr); cairo_save(ctx->cr); cairo_translate(ctx->cr, ctx->x, ctx->y); cairo_scale(ctx->cr, ctx->scale, ctx->scale); cairo_set_line_width(ctx->cr, 0.1); cairo_set_font_size(ctx->cr, 0.7); cairo_set_source_rgb(ctx->cr, 1.0, 1.0, 1.0); render_world(ctx, game); cairo_restore(ctx->cr); cairo_restore(ctx->cr); cairo_save(ctx->cr); cairo_translate(ctx->cr, ctx->width - ctx->panel_width, 0); char buf[128] = ""; snprintf(buf, sizeof(buf), "%d", game->revenue.balance); cairo_move_to(ctx->cr, 0, 32); cairo_set_font_size(ctx->cr, 24); cairo_set_source_rgb(ctx->cr, 1.0, 1.0, 1.0); cairo_show_text(ctx->cr, buf); cairo_restore(ctx->cr); }
void render(void) { render_cam(render_display_w,render_display_h); // render_box(30,50,24,24); // render_box(0,0,24,24); // render_box(480,320,24,24); render_world(); render_marcadores(); }
void render_game(GameState * state) { /* Variables */ Color color = {255, 0, 255, 255}; Color black = {0, 0, 0, 255}; Color white = {255, 255, 255, 255}; char buffer [20]; int i,n; /* Set redraw off */ state->redraw = 0; /* Render world */ render_world(&state->world); /* Render pathfinding, if enabled */ if (SHOW_PATHFINDING) render_paths(state); /* Render towers */ for (i = 0; i < state->towers_length; i++) { render_entity(state->towers[i]); } /* Render enemies if they are alive */ for (i = 0; i < state->enemies_length; i++) { if (state->enemies[i].enemy.alive) render_entity(&state->enemies[i]); } /* Render spellscreen */ render_spellscreen(&state->spells); /* Render projectiles */ for (i = 0; i < state->towers_length; i++) { render_projectiles(state->towers[i]); } /* render selection */ render_mouse_actions(state); /* Render ui on top */ render_ui(state); /* Fps rendering */ n = sprintf(buffer, "%#.1f FPS", get_current_fps()); draw_text(buffer, FONT_LARGE, color, SCREEN_WIDTH-20 -100, 6, ALIGN_RIGHT); /* Game over? */ render_game_over(state); /* Render to screen */ flip_display(); clear_to_color(color); }
/*----------------------------------------------------------------------------*/ void windows_t::display() { window_t *win = windows[glutGetWindow()]; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(-1,-1,1, 1.5,1.05,0., 0.,0.,1.); /* gluLookAt(1.5,1.05,1, 1.5,1.05,0., 0.,1.,0.);*/ render_world(); glutSwapBuffers(); }
void render_display(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0,0.0,-WORLD_SIZE*0.95); #if 0 gluLookAt( 0.0, 0.0, -WORLD_SIZE*.95, /* Eye */ 0.0, 0.0, 0.0, /* Horizon */ 0.0, 1.0, 0.0); /* Up */ #endif glRotated(tilt,0.0, 0.1, 0.0); glRotated(yaw,0.0, 0.0, 1.0); glRotated(pitch,1.0, 0.0, 0.0); /* Render world */ render_world(); /* Draw samples here */ render_objs(); glutSwapBuffers(); }