index 17c2b68dfafec9a26463c9db8624a2fd732069c9..8568721dde2f1c01412effa93394b2157546286a 100644 (file)
--- a/game.h
+++ b/game.h
#include "protocol.h"
-#define MAX_PLAYERS 64
-#define TICK_DELAY (1000 / 60)
-#define PLAYER_SIZE 0.01785
+#define MAX_PLAYERS 32
+#define MAX_BULLETS (MAX_PLAYERS * 8)
+#define TICK 24 // 24 World updates per second
+#define TICK_DELAY (1000 / TICK) // World freeze time ms
+#define BULLET_TIME (TICK * 6) // Bullet live time 6.0s
+#define PLAYER_SIZE 0.01785 // Palyer radius
+#define PLAYER_SHOOT (TICK * 0.8) // Can shoot every 1.0s (less then 1s not work)
typedef struct Player {
/* public */
bool live;
float x, y, r;
float vx, vy, vr;
+ int shoot;
/* internal */
bool updated;
} Player;
+typedef struct Bullet {
+ /* public */
+ bool live;
+ int owner;
+ float x, y;
+ float vx, vy;
+ int tick;
+
+ /* internal */
+ bool updated;
+} Bullet;
+
extern Player g_player[MAX_PLAYERS];
+extern 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);
-void g_player_does(unsigned int id, DoesCode code);
+void g_player_set(unsigned int id, bool live, float x, float y, float r, float vx, float vy, float vr, int shoot);
+void g_bullet_set(unsigned int id, unsigned int owner, bool live, float x, float y, float vx, float vy, int tick);
+void g_player_does(unsigned int id, DoesBits code);
void g_update();
+void g_init(bool server_mode);