DEADSOFTWARE

Изменены физические константы
[netwar.git] / game.c
diff --git a/game.c b/game.c
index 3acaa36a82a9a558f5501e349e5bc29c7e31171b..2370692abdad4904825a910b65828b03821394a3 100644 (file)
--- a/game.c
+++ b/game.c
@@ -6,17 +6,17 @@
 
 #include "game.h"
 
 
 #include "game.h"
 
-#define SPEED      (0.03 / TICK)
+#define SPEED      (0.0005 / TICK)
 #define ROTATE     (0.03 / TICK)
 #define BULL_SPEED (0.4  / TICK)
 
 #define ROTATE     (0.03 / TICK)
 #define BULL_SPEED (0.4  / TICK)
 
-#define MAX_SPEED  (0.3 / TICK)
+#define MAX_SPEED  (0.1 / TICK)
 #define MAX_ROTATE (0.3 / TICK)
 
 // Цифры взяты с потолка, но вроде неплохо подобраны
 #define MAX_ROTATE (0.3 / TICK)
 
 // Цифры взяты с потолка, но вроде неплохо подобраны
-#define G      3.673e-4
-#define M_STAR 10.0
-#define M_SHIP 0.1
+#define G      6.6719199e-11
+#define M_STAR 3e8
+#define M_SHIP 0.001
 
 Player g_player[MAX_PLAYERS];
 Bullet g_bullet[MAX_BULLETS];
 
 Player g_player[MAX_PLAYERS];
 Bullet g_bullet[MAX_BULLETS];
@@ -59,13 +59,10 @@ static int freebullet() {
 }
 
 static void moveplayer(int id, float speed) {
 }
 
 static void moveplayer(int id, float speed) {
-       g_player[id].vx += speed * cos(g_player[id].r * 2 * M_PI);
-       g_player[id].vy += speed * sin(g_player[id].r * 2 * M_PI);
-
-       if(fabs(g_player[id].vx) > MAX_SPEED)
-               g_player[id].vx = copysignf(MAX_SPEED, g_player[id].vx);
-       if(fabs(g_player[id].vy) > MAX_SPEED)
-               g_player[id].vy = copysignf(MAX_SPEED, g_player[id].vy);
+       if(fabs(g_player[id].vx) < MAX_SPEED)
+               g_player[id].vx += speed * cos(g_player[id].r * 2 * M_PI);
+       if(fabs(g_player[id].vy) < MAX_SPEED)
+               g_player[id].vy += speed * sin(g_player[id].r * 2 * M_PI);
 }
 
 static void roteplayer(int id, float speed) {
 }
 
 static void roteplayer(int id, float speed) {
@@ -93,10 +90,8 @@ static void fireplayer(int id) {
 
 static void checkspacebound(float * a) {
        float x = *a;
 
 static void checkspacebound(float * a) {
        float x = *a;
-       if(x < -1)
-               x = fabs(x);
-       else if(x > 1)
-               x = -x;
+       if(x < -1 || x > 1)
+               x = copysign(fmodf(x, 1) + 1, -1 * x);
        *a = x;
 }
 
        *a = x;
 }
 
@@ -160,6 +155,8 @@ void g_update() {
                        checkspacebound(&g_bullet[i].x);
                        checkspacebound(&g_bullet[i].y);
 
                        checkspacebound(&g_bullet[i].x);
                        checkspacebound(&g_bullet[i].y);
 
+                       gravity(&g_bullet[i].vx, &g_bullet[i].vy, g_bullet[i].x, g_bullet[i].y);
+
                        for(int j = 0; j < MAX_PLAYERS; j++)
                                if(g_player[j].live)
                                        if(collide(g_bullet[i].x, g_bullet[i].y, 0.0001, g_player[j].x, g_player[j].y, PLAYER_SIZE))
                        for(int j = 0; j < MAX_PLAYERS; j++)
                                if(g_player[j].live)
                                        if(collide(g_bullet[i].x, g_bullet[i].y, 0.0001, g_player[j].x, g_player[j].y, PLAYER_SIZE))