DEADSOFTWARE

Изменены физические константы
[netwar.git] / netwar.c
index 88ff5c7ba766b2e9f27bc044d45291ad23706da7..e18438e8a650fd59003429dea65e3ba3ea91c6cc 100644 (file)
--- a/netwar.c
+++ b/netwar.c
 #define HEIGHT 480
 
 static const float ship[] = {
-       +1.0, +0.0,     -1.0, -1.0,
-       -1.0, -1.0,     +0.0, +0.0,
-       +0.0, +0.0,     -1.0, +1.0,
-       -1.0, +1.0,     +1.0, +0.0,
+       +1.0, +0.0,
+       -1.0, -1.0,
+       +0.0, +0.0,
+       -1.0, +1.0,
+       +1.0, +0.0,
+};
+
+static const float star[] = {
+       +1.0, +0.0,
+       +0.0, -1.0,
+       -1.0, +0.0,
+       +0.0, +1.0,
+       +1.0, +0.0,     
 };
 
 static char     * host = "localhost";
@@ -78,13 +87,40 @@ static void closewindow() {
        SDL_DestroyWindow(window);
 }
 
+static void paintmodel(const float * model, int modelsz, float mx, float my, float r, float size, int cx, int cy) {
+       int scale = (WIDTH + HEIGHT) / 2 * size / 2;
+
+       int count = modelsz / sizeof(model[0]) / 2;
+       int x = mx * WIDTH  / 2;
+       int y = my * HEIGHT / 2;
+
+       SDL_Point pix[count];
+       for(int j = 0; j < count * 2; j += 2) {
+               float c = cos(r * 2 * M_PI);
+               float s = sin(r * 2 * M_PI);
+               float rx = model[j + 0] * scale;
+               float ry = model[j + 1] * scale;
+               pix[j / 2].x = cx + x + (c * rx - s * ry);
+               pix[j / 2].y = cy + y + (s * rx + c * ry);
+       }       
+
+       SDL_RenderDrawLines(renderer, pix, count);
+}
+
 static void paintwindow() {
        SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
        SDL_RenderClear(renderer);
 
        int cx = WIDTH / 2;
        int cy = HEIGHT / 2;
-       int shipsz = (WIDTH + HEIGHT) / 2 * PLAYER_SIZE;
+
+       SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0xFF, 0x00);
+
+       static float start_r;
+       for(int i = 0; i < STAR_SIZE * 150; i++)
+               paintmodel(star, sizeof(star), 0, 0, start_r + i * M_PI, STAR_SIZE, cx, cy);
+
+       start_r += 0.0001;
 
        for(int i = 0; i < MAX_PLAYERS; i++) {
                if(i == cl_playerid)
@@ -92,22 +128,8 @@ static void paintwindow() {
                else
                        SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0x00);
 
-               int count = sizeof(ship) / sizeof(ship[0]) / 2;
-               int x = g_player[i].x * WIDTH  / 2;
-               int y = g_player[i].y * HEIGHT / 2;
-
-               SDL_Point pixship[count];
-               for(int j = 0; j < count * 2; j += 2) {
-                       float c = cos(g_player[i].r * 2 * M_PI);
-                       float s = sin(g_player[i].r * 2 * M_PI);
-                       float rx = ship[j + 0] * shipsz;
-                       float ry = ship[j + 1] * shipsz;
-                       pixship[j / 2].x = cx + x + (c * rx - s * ry);
-                       pixship[j / 2].y = cy + y + (s * rx + c * ry);
-               }
-
                if(g_player[i].live)
-                       SDL_RenderDrawLines(renderer, pixship, count);
+                       paintmodel(ship, sizeof(ship), g_player[i].x, g_player[i].y, g_player[i].r, PLAYER_SIZE, cx, cy);
        }
 
        for(int i = 0; i < MAX_BULLETS; i++) {
@@ -134,13 +156,10 @@ static void keyboardhandle() {
                .down  = key[SDL_SCANCODE_DOWN],
                .left  = key[SDL_SCANCODE_LEFT],
                .right = key[SDL_SCANCODE_RIGHT],
+               .fire  = key[SDL_SCANCODE_LCTRL],
        });
 }
 
-static void fire() {
-       cl_move((DoesBits) { .fire = true });
-}
-
 int main(int argc, char ** argv) {
        sysinit();
        useargs(argv);
@@ -153,8 +172,6 @@ int main(int argc, char ** argv) {
                while(SDL_PollEvent(&event))
                        if(event.type == SDL_QUIT)
                                goto cleanup;
-                       else if(event.type == SDL_KEYDOWN && event.key.keysym.scancode == SDL_SCANCODE_LCTRL)
-                               fire();
 
                keyboardhandle();