index 9b7f2391ddc78d4aa3fdb7ef0777ba46c9001e61..36dccb41669cf628070979921560f8fdf93ec3d2 100644 (file)
--- a/game.c
+++ b/game.c
#include "game.h"
-#define SPEED 0.00006
-#define ROTATE 0.00004
-#define BULL_SPEED 0.008
+#define SPEED (0.03 / TICK)
+#define ROTATE (0.03 / TICK)
+#define BULL_SPEED (0.4 / TICK)
+
+#define MAX_SPEED (0.3 / TICK)
+#define MAX_ROTATE (0.3 / TICK)
Player g_player[MAX_PLAYERS];
Bullet g_bullet[MAX_BULLETS];
-void g_player_set(unsigned int id, bool live, float x, float y, float r, float vx, float vy, float vr) {
+static bool svmode;
+
+void g_player_set(unsigned int id, bool live, float x, float y, float r, float vx, float vy, float vr, int shoot) {
assert(id < MAX_PLAYERS);
g_player[id] = (Player) {
.updated = true,
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);
}
static void roteplayer(int id, float speed) {
g_player[id].vr += speed;
+ if(fabs(g_player[id].vr) > MAX_ROTATE)
+ g_player[id].vr = copysignf(MAX_ROTATE, g_player[id].vr);
}
static void fireplayer(int id) {
if(j < 0)
return;
- float vx = BULL_SPEED * cos(g_player[id].r * 2 * M_PI);
- float vy = BULL_SPEED * sin(g_player[id].r * 2 * M_PI);
- g_bullet_set(j, id, true, g_player[id].x, g_player[id].y, vx, vy, 0);
+ if(g_player[id].shoot < PLAYER_SHOOT)
+ return;
+
+ g_player[id].shoot = 0;
+
+ if(svmode) {
+ float vx = BULL_SPEED * cos(g_player[id].r * 2 * M_PI);
+ float vy = BULL_SPEED * sin(g_player[id].r * 2 * M_PI);
+ g_bullet_set(j, id, true, g_player[id].x, g_player[id].y, vx, vy, 0);
+ }
}
static void checkspacebound(float * a) {
g_player[i].r += g_player[i].vr;
checkspacebound(&g_player[i].x);
checkspacebound(&g_player[i].y);
+
+ ++g_player[i].shoot;
+ if(g_player[i].shoot > PLAYER_SHOOT)
+ g_player[i].shoot = PLAYER_SHOOT;
}
}
}
}
}
+
+void g_init(bool server_mode) {
+ svmode = server_mode;
+ // TODO memset & co
+}