Exemple #1
0
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);
      }
    }
  }
}
Exemple #2
0
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);	
}
Exemple #3
0
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();
}
Exemple #4
0
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);
}
Exemple #5
0
/*----------------------------------------------------------------------------*/
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();  
}
Exemple #6
0
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();
}