Reformated main.cc and spaceship.cc
This commit is contained in:
parent
af31bc7148
commit
d0670178c0
58
main.cc
58
main.cc
@ -1,19 +1,19 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#define DEFAULT_WIDTH 800
|
||||
#define DEFAULT_HEIGHT 800
|
||||
|
||||
#include "game.h"
|
||||
#include "balls.h"
|
||||
#include "c_index.h"
|
||||
#include "game.h"
|
||||
#include "gravity.h"
|
||||
#include "polygons.h"
|
||||
#include "spaceship.h"
|
||||
|
||||
/* Trivial collision check
|
||||
@ -54,7 +54,8 @@ void game_init () {
|
||||
srand(time(NULL));
|
||||
balls_init();
|
||||
assert(c_index_init());
|
||||
spaceship_init_state ();
|
||||
polygons_init_state();
|
||||
// spaceship_init_state();
|
||||
}
|
||||
|
||||
void game_destroy() {
|
||||
@ -71,7 +72,8 @@ static bool game_paused () {
|
||||
|
||||
void game_animation_on_off() {
|
||||
if (animation_timeout_id == 0) {
|
||||
animation_timeout_id = g_timeout_add (delta * 1000, animation_timeout, canvas);
|
||||
animation_timeout_id =
|
||||
g_timeout_add(delta * 1000, animation_timeout, canvas);
|
||||
} else {
|
||||
g_source_remove(animation_timeout_id);
|
||||
animation_timeout_id = 0;
|
||||
@ -81,7 +83,8 @@ void game_animation_on_off () {
|
||||
struct param_controls {
|
||||
void (*draw)(cairo_t* cr);
|
||||
gint (*keyboard_input)(GdkEventKey* event);
|
||||
gboolean (*mouse_scroll) (GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||
gboolean (*mouse_scroll)(
|
||||
GtkWidget* widget, GdkEvent* event, gpointer user_data);
|
||||
};
|
||||
|
||||
gint gravity_controls_keyboard_input(GdkEventKey* event) {
|
||||
@ -131,7 +134,6 @@ param_controls restitution_coefficient_control = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
static param_controls* param_control = nullptr;
|
||||
static guint param_control_timeout_id = 0;
|
||||
static const guint param_control_active_ms = 3000;
|
||||
@ -147,7 +149,8 @@ void param_control_activate (struct param_controls * ctrl) {
|
||||
if (param_control)
|
||||
g_source_remove(param_control_timeout_id);
|
||||
param_control = ctrl;
|
||||
param_control_timeout_id = g_timeout_add (param_control_active_ms, param_control_timeout, canvas);
|
||||
param_control_timeout_id =
|
||||
g_timeout_add(param_control_active_ms, param_control_timeout, canvas);
|
||||
gtk_widget_queue_draw(canvas);
|
||||
}
|
||||
|
||||
@ -159,6 +162,7 @@ gboolean draw_frame (GtkWidget * widget, cairo_t *cr, gpointer data) {
|
||||
gravity_draw_visible_field(cr);
|
||||
balls_draw(cr);
|
||||
spaceship_draw(cr);
|
||||
polygons_draw(cr);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -181,7 +185,8 @@ gint keyboard_input (GtkWidget *widget, GdkEventKey *event) {
|
||||
if (param_control && param_control->keyboard_input(event)) {
|
||||
gtk_widget_queue_draw(canvas);
|
||||
g_source_remove(param_control_timeout_id);
|
||||
param_control_timeout_id = g_timeout_add (param_control_active_ms, param_control_timeout, canvas);
|
||||
param_control_timeout_id = g_timeout_add(
|
||||
param_control_active_ms, param_control_timeout, canvas);
|
||||
return TRUE;
|
||||
}
|
||||
switch (event->keyval) {
|
||||
@ -239,7 +244,8 @@ void print_usage (const char * progname) {
|
||||
"\tv=<min-velocity>-<max-velocity>\n"
|
||||
"\tdelta=<frame-delta-time> (in seconds)\n"
|
||||
"\tface=<filename>\n"
|
||||
"\tstats=<sample-count> :: rendering timing statitstics (0=disabled, default)\n"
|
||||
"\tstats=<sample-count> :: rendering timing statitstics (0=disabled, "
|
||||
"default)\n"
|
||||
"\tcollisions=<C> :: n=no collisions, s=simple, i=index\n"
|
||||
"\trestitution=<C_r> :: restitution coefficient C_r\n"
|
||||
"\t-r :: activate face rotation\n",
|
||||
@ -271,9 +277,13 @@ gboolean animation_timeout (gpointer user_data) {
|
||||
if (++stats_update_samples == stats_sampling) {
|
||||
float uavg = 1.0 * stats_update_usec / stats_update_samples;
|
||||
float davg = 1.0 * stats_draw_usec / stats_draw_samples;
|
||||
printf("\rupdate = %.0f us, draw = %.0f us, load = %.0f%% (%u update, %u draw) ",
|
||||
uavg, davg, (uavg+davg)/(10000.0*delta),
|
||||
stats_update_samples, stats_draw_samples);
|
||||
printf("\rupdate = %.0f us, draw = %.0f us, load = %.0f%% (%u "
|
||||
"update, %u draw) ",
|
||||
uavg,
|
||||
davg,
|
||||
(uavg + davg) / (10000.0 * delta),
|
||||
stats_update_samples,
|
||||
stats_draw_samples);
|
||||
fflush(stdout);
|
||||
stats_update_usec = 0;
|
||||
stats_update_samples = 0;
|
||||
@ -356,15 +366,21 @@ int main (int argc, const char *argv[]) {
|
||||
gtk_window_set_title(GTK_WINDOW(window), "Game");
|
||||
|
||||
g_signal_connect(window, "destroy", G_CALLBACK(destroy_window), NULL);
|
||||
g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK(destroy_window), NULL);
|
||||
g_signal_connect(G_OBJECT (window), "key-press-event", G_CALLBACK(keyboard_input), NULL);
|
||||
gtk_widget_set_events (window, GDK_EXPOSURE_MASK | GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK | GDK_KEY_PRESS_MASK);
|
||||
g_signal_connect(
|
||||
G_OBJECT(window), "delete-event", G_CALLBACK(destroy_window), NULL);
|
||||
g_signal_connect(
|
||||
G_OBJECT(window), "key-press-event", G_CALLBACK(keyboard_input), NULL);
|
||||
gtk_widget_set_events(window,
|
||||
GDK_EXPOSURE_MASK | GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK |
|
||||
GDK_KEY_PRESS_MASK);
|
||||
|
||||
canvas = gtk_drawing_area_new();
|
||||
|
||||
g_signal_connect (G_OBJECT (canvas), "configure-event", G_CALLBACK(configure_event), NULL);
|
||||
g_signal_connect(
|
||||
G_OBJECT(canvas), "configure-event", G_CALLBACK(configure_event), NULL);
|
||||
g_signal_connect(G_OBJECT(canvas), "draw", G_CALLBACK(draw_event), NULL);
|
||||
g_signal_connect (G_OBJECT (canvas), "scroll-event",G_CALLBACK(mouse_scroll), NULL);
|
||||
g_signal_connect(
|
||||
G_OBJECT(canvas), "scroll-event", G_CALLBACK(mouse_scroll), NULL);
|
||||
gtk_widget_set_events(canvas, GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(window), canvas);
|
||||
|
23
spaceship.cc
23
spaceship.cc
@ -1,9 +1,9 @@
|
||||
#include <math.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "balls.h"
|
||||
#include "game.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <math.h>
|
||||
|
||||
struct ball spaceship;
|
||||
double spaceship_thrust = 0;
|
||||
int spaceship_thrust_countdown = 0;
|
||||
@ -44,16 +44,23 @@ void spaceship_draw (cairo_t * cr) {
|
||||
cairo_stroke(cr);
|
||||
cairo_set_source_rgba(cr, 0.0, 1.0, 0.0, 1.0);
|
||||
cairo_move_to(cr, 0, 0);
|
||||
cairo_line_to (cr, -one_over_sqrt_2*spaceship.radius, one_over_sqrt_2*spaceship.radius);
|
||||
cairo_line_to(cr,
|
||||
-one_over_sqrt_2 * spaceship.radius,
|
||||
one_over_sqrt_2 * spaceship.radius);
|
||||
cairo_line_to(cr, spaceship.radius, 0);
|
||||
cairo_line_to (cr, -one_over_sqrt_2*spaceship.radius, -one_over_sqrt_2*spaceship.radius);
|
||||
cairo_line_to(cr,
|
||||
-one_over_sqrt_2 * spaceship.radius,
|
||||
-one_over_sqrt_2 * spaceship.radius);
|
||||
cairo_line_to(cr, 0, 0);
|
||||
cairo_stroke(cr);
|
||||
cairo_set_source_rgba(cr, 1.0, 0.5, 0.0, 1.0);
|
||||
for (unsigned int i = 0; i < spaceship_thrust; i += 5) {
|
||||
double d_angle = spaceship.radius/(spaceship.radius + 0.1*i)*0.25*M_PI*(1 - 0.99*i/spaceship_thrust);
|
||||
cairo_set_source_rgba(cr, 1.0, 1.0*(1 - 0.5*i/spaceship_thrust), 0.0, 1.0);
|
||||
cairo_arc(cr, 0, 0, spaceship.radius + i, M_PI - d_angle, M_PI + d_angle);
|
||||
double d_angle = spaceship.radius / (spaceship.radius + 0.1 * i) *
|
||||
0.25 * M_PI * (1 - 0.99 * i / spaceship_thrust);
|
||||
cairo_set_source_rgba(
|
||||
cr, 1.0, 1.0 * (1 - 0.5 * i / spaceship_thrust), 0.0, 1.0);
|
||||
cairo_arc(
|
||||
cr, 0, 0, spaceship.radius + i, M_PI - d_angle, M_PI + d_angle);
|
||||
cairo_stroke(cr);
|
||||
if (d_angle > 0.05)
|
||||
d_angle = 0.7 * d_angle;
|
||||
|
Loading…
Reference in New Issue
Block a user