mirror of
git://slackware.nl/current.git
synced 2024-12-28 09:59:53 +01:00
229 lines
8.1 KiB
Diff
229 lines
8.1 KiB
Diff
|
diff -ru a-slackware-1995-06-17/game.c b-gary/game.c
|
||
|
--- a-slackware-1995-06-17/game.c 1995-06-17 21:23:00.000000000 -0400
|
||
|
+++ b-gary/game.c 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -165,7 +165,7 @@
|
||
|
switch (event.type) {
|
||
|
case KeyPress:
|
||
|
if (lander->fuel > 0.0) {
|
||
|
- XLookupString (&event, &ch, 1, &keysym, (XComposeStatus *) 0);
|
||
|
+ XLookupString ((XKeyEvent *) &event, &ch, 1, &keysym, (XComposeStatus *) 0);
|
||
|
if (ch == lander->controls[0] || keysym == XK_Up)
|
||
|
lander->rear_thruster = lander->lateral_thrust;
|
||
|
else if (ch == lander->controls[1] || keysym == XK_Down)
|
||
|
@@ -179,7 +179,7 @@
|
||
|
}
|
||
|
break;
|
||
|
case KeyRelease:
|
||
|
- XLookupString (&event, &ch, 1, &keysym, (XComposeStatus *) 0);
|
||
|
+ XLookupString ((XKeyEvent *) &event, &ch, 1, &keysym, (XComposeStatus *) 0);
|
||
|
if (ch == lander->controls[0] || keysym == XK_Up)
|
||
|
lander->rear_thruster = 0;
|
||
|
else if (ch == lander->controls[1] || keysym == XK_Down)
|
||
|
@@ -197,24 +197,26 @@
|
||
|
}
|
||
|
|
||
|
if (lander->retro_thruster > 0)
|
||
|
- lander->fuel -= RETRO_BURN;
|
||
|
+ lander->fuel -= RETRO_BURN / fps;
|
||
|
if (lander->front_thruster > 0)
|
||
|
- lander->fuel -= LATERAL_BURN;
|
||
|
+ lander->fuel -= LATERAL_BURN / fps;
|
||
|
if (lander->rear_thruster > 0)
|
||
|
- lander->fuel -= LATERAL_BURN;
|
||
|
+ lander->fuel -= LATERAL_BURN / fps;
|
||
|
if (lander->left_thruster > 0)
|
||
|
- lander->fuel -= LATERAL_BURN;
|
||
|
+ lander->fuel -= LATERAL_BURN / fps;
|
||
|
if (lander->right_thruster > 0)
|
||
|
- lander->fuel -= LATERAL_BURN;
|
||
|
+ lander->fuel -= LATERAL_BURN / fps;
|
||
|
+ if (lander->fuel < 0.0)
|
||
|
+ lander->fuel = 0.0; /* Prevents gas gauge from going negative */
|
||
|
lander->vert_speed +=
|
||
|
- (lander->retro_thruster + acceleration) / TICKS_PER_SECOND;
|
||
|
- lander->alt += lander->vert_speed / TICKS_PER_SECOND;
|
||
|
+ (lander->retro_thruster + acceleration) / fps;
|
||
|
+ lander->alt += lander->vert_speed / fps;
|
||
|
lat_accel_x = lander->right_thruster - lander->left_thruster;
|
||
|
lat_accel_y = lander->rear_thruster - lander->front_thruster;
|
||
|
lat_veloc_x = lander->lat_veloc * cos (lander->heading) + lat_accel_x;
|
||
|
lat_veloc_y = lander->lat_veloc * sin (lander->heading) + lat_accel_y;
|
||
|
- craft->off_x += (lat_veloc_x / TICKS_PER_SECOND) * PIXELS_PER_FOOT;
|
||
|
- craft->off_z += (lat_veloc_y / TICKS_PER_SECOND) * PIXELS_PER_FOOT;
|
||
|
+ craft->off_x += (lat_veloc_x / fps) * PIXELS_PER_FOOT;
|
||
|
+ craft->off_z += (lat_veloc_y / fps) * PIXELS_PER_FOOT;
|
||
|
lander->lat_veloc =
|
||
|
sqrt (lat_veloc_x * lat_veloc_x + lat_veloc_y * lat_veloc_y);
|
||
|
|
||
|
diff -ru a-slackware-1995-06-17/globals.c b-gary/globals.c
|
||
|
--- a-slackware-1995-06-17/globals.c 1995-06-17 21:22:36.000000000 -0400
|
||
|
+++ b-gary/globals.c 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -27,3 +27,4 @@
|
||
|
XrmDatabase resources = (XrmDatabase) 0;
|
||
|
/* X Resource database */
|
||
|
float acceleration = 0.0; /* Acceleration due to gravity */
|
||
|
+float fps; /* Current frames per second */
|
||
|
diff -ru a-slackware-1995-06-17/globals.h b-gary/globals.h
|
||
|
--- a-slackware-1995-06-17/globals.h 1995-06-17 21:22:41.000000000 -0400
|
||
|
+++ b-gary/globals.h 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -30,5 +30,6 @@
|
||
|
extern int px, py, pz;
|
||
|
extern int roll, pitch, yaw;
|
||
|
extern float acceleration;
|
||
|
+extern float fps;
|
||
|
|
||
|
-#endif _globals_h_
|
||
|
+#endif /* _globals_h_ */
|
||
|
diff -ru a-slackware-1995-06-17/initialize.c b-gary/initialize.c
|
||
|
--- a-slackware-1995-06-17/initialize.c 1995-06-17 21:23:00.000000000 -0400
|
||
|
+++ b-gary/initialize.c 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -61,7 +61,7 @@
|
||
|
lander->vert_speed = 0.0;
|
||
|
lander->heading = 1.36;
|
||
|
lander->lat_veloc = 100.0;
|
||
|
- lander->fuel = 320.0;
|
||
|
+ lander->fuel = FULL_TANK;
|
||
|
lander->alt = craft->off_y / PIXELS_PER_FOOT;
|
||
|
}
|
||
|
|
||
|
@@ -293,7 +293,7 @@
|
||
|
|
||
|
world->min_x = world->min_y = -HALF_WORLD_LENGTH;
|
||
|
world->max_x = world->max_y = HALF_WORLD_WIDTH;
|
||
|
- srandom ((long) time ((int *) 0));
|
||
|
+ srandom ((long) time ((time_t *) 0));
|
||
|
for (x = -HALF_WORLD_WIDTH; x < HALF_WORLD_WIDTH;
|
||
|
r ^= 1, x += EDGE_LENGTH + (int) x_offset)
|
||
|
for (y = r * (int) y_offset - HALF_WORLD_LENGTH; y < HALF_WORLD_LENGTH;
|
||
|
diff -ru a-slackware-1995-06-17/instrument.c b-gary/instrument.c
|
||
|
--- a-slackware-1995-06-17/instrument.c 1995-06-17 21:22:39.000000000 -0400
|
||
|
+++ b-gary/instrument.c 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -48,7 +48,7 @@
|
||
|
{
|
||
|
static int heading_x = 50, heading_y = 15;
|
||
|
static int fuel_level = 80, old_x = 290, old_y = 10;
|
||
|
- int new_fuel_level = (int) fuel / 4;
|
||
|
+ int new_fuel_level = (int) (fuel / (float) FULL_TANK * 80.0);
|
||
|
char buf[32];
|
||
|
|
||
|
/*
|
||
|
diff -ru a-slackware-1995-06-17/patchlevel.h b-gary/patchlevel.h
|
||
|
--- a-slackware-1995-06-17/patchlevel.h 1995-06-17 21:23:00.000000000 -0400
|
||
|
+++ b-gary/patchlevel.h 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -1,2 +1,2 @@
|
||
|
-#define PATCHLEVEL 2
|
||
|
+#define PATCHLEVEL 3
|
||
|
|
||
|
diff -ru a-slackware-1995-06-17/xlander.c b-gary/xlander.c
|
||
|
--- a-slackware-1995-06-17/xlander.c 1995-06-17 21:22:36.000000000 -0400
|
||
|
+++ b-gary/xlander.c 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -14,6 +14,7 @@
|
||
|
|
||
|
#include "xlander.h"
|
||
|
#include "globals.h"
|
||
|
+#include <sys/time.h>
|
||
|
|
||
|
/*
|
||
|
* A lander
|
||
|
@@ -68,6 +69,7 @@
|
||
|
static DATABASE *world, *craft, *thrust, *shadow;
|
||
|
static LANDER lander;
|
||
|
int mask;
|
||
|
+struct timeval frame_time, prev_frame_time;
|
||
|
|
||
|
/******************************************************************************
|
||
|
** DisplayWorld
|
||
|
@@ -98,7 +100,26 @@
|
||
|
XSync (d,False);
|
||
|
}
|
||
|
|
||
|
-void main (argc, argv)
|
||
|
+
|
||
|
+void UpdateFrameRate ()
|
||
|
+{
|
||
|
+ unsigned long sec, usec, diff;
|
||
|
+
|
||
|
+ gettimeofday(&frame_time, NULL);
|
||
|
+ sec = frame_time.tv_sec - prev_frame_time.tv_sec;
|
||
|
+ usec = frame_time.tv_usec - prev_frame_time.tv_usec;
|
||
|
+ if(usec < 0) {
|
||
|
+ usec += 1000000;
|
||
|
+ sec--;
|
||
|
+ }
|
||
|
+ diff = sec * 1000000 + usec;
|
||
|
+ fps = 1000000.0 / (float) diff;
|
||
|
+ prev_frame_time.tv_sec = frame_time.tv_sec;
|
||
|
+ prev_frame_time.tv_usec = frame_time.tv_usec;
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+int main (argc, argv)
|
||
|
int argc;
|
||
|
char *argv[];
|
||
|
{
|
||
|
@@ -113,6 +134,10 @@
|
||
|
thrust = DBInitFromData (thrust_data, THRUSTSIZE);
|
||
|
shadow = DBInitFromData (shadow_data, SHADOWSIZE);
|
||
|
|
||
|
+ gettimeofday(&frame_time, NULL);
|
||
|
+ gettimeofday(&prev_frame_time, NULL);
|
||
|
+ fps = 1000000.0; /* Prevent startup pulse */
|
||
|
+
|
||
|
/*
|
||
|
* Initial coordinates of the lander...
|
||
|
*/
|
||
|
@@ -143,7 +168,9 @@
|
||
|
for (;;) {
|
||
|
UpdateOrientation (world, craft, &lander);
|
||
|
DisplayWorld ();
|
||
|
+ UpdateFrameRate ();
|
||
|
(void) sigsetmask (mask);
|
||
|
mask = sigblock (sigmask (SIGINT));
|
||
|
}
|
||
|
+ return 0;
|
||
|
}
|
||
|
diff -ru a-slackware-1995-06-17/xlander.h b-gary/xlander.h
|
||
|
--- a-slackware-1995-06-17/xlander.h 1995-06-17 21:23:00.000000000 -0400
|
||
|
+++ b-gary/xlander.h 2007-03-01 04:08:49.000000000 -0500
|
||
|
@@ -20,6 +20,7 @@
|
||
|
#ifndef _xlander_h_
|
||
|
#define _xlander_h_
|
||
|
|
||
|
+#include <stdlib.h>
|
||
|
#include <stdio.h>
|
||
|
#include <math.h>
|
||
|
#include <signal.h>
|
||
|
@@ -41,7 +42,6 @@
|
||
|
#define HALF_WORLD_LENGTH (WORLD_LENGTH >> 1)
|
||
|
#define HALF_WORLD_WIDTH (WORLD_WIDTH >> 1)
|
||
|
#define PIXELS_PER_FOOT 6 /* Number of pixels per foot */
|
||
|
-#define TICKS_PER_SECOND 3 /* Number of frames per second */
|
||
|
#define ACCELERATION -5.310 /* Acceleration of gravity (ft/sec^2) */
|
||
|
#define RETRO 35.0 /* Acceleration due to retroactive thruster */
|
||
|
#define LATERAL_THRUST 5.0 /* Acceleration due to lateral thruster */
|
||
|
@@ -53,7 +53,7 @@
|
||
|
#define LAT_SPEED 30.0 /* Maximum lateral speed without crashing */
|
||
|
#define RETRO_BURN 1.6 /* Retroactive thruster fuel consumption */
|
||
|
#define LATERAL_BURN 0.4 /* Lateral thruster fuel consumption */
|
||
|
-#define FULL_TANK 320 /* Full tank of fuel */
|
||
|
+#define FULL_TANK 15 /* Full tank of fuel */
|
||
|
#define MAX_VELOC 640.0 /* Maximum velocity */
|
||
|
|
||
|
#define LANDER_WIDTH 600
|
||
|
@@ -107,9 +107,6 @@
|
||
|
|
||
|
DATABASE *DBInit (), *DBInitFromData (), *LoadDataBase ();
|
||
|
void DBInsert (), DBFinish (), DBPlot (), SwapBuffers (), exit ();
|
||
|
-#ifndef _AIX
|
||
|
-char *malloc ();
|
||
|
-#endif
|
||
|
double atof ();
|
||
|
#ifdef sun
|
||
|
int printf (), fprintf (), time ();
|
||
|
@@ -122,4 +119,4 @@
|
||
|
#define WorldToRadarX(x) (290 + (((int) (x) + (WORLD_WIDTH >> 1)) / 250))
|
||
|
#define WorldToRadarY(y) (90 - (((int) (y) + (WORLD_LENGTH >> 1)) / 250))
|
||
|
|
||
|
-#endif _xlander_h_
|
||
|
+#endif /* _xlander_h_ */
|