Browse Source

add 16 way shooting

Thomas B 1 month ago
parent
commit
ce710a2fa6
2 changed files with 52 additions and 16 deletions
  1. 48
    16
      src/game.c
  2. 4
    0
      src/game.h

+ 48
- 16
src/game.c View File

@@ -523,67 +523,99 @@ int32_t game(enum GAME_MODE mode) NONBANKED {
523 523
 
524 524
             switch (rot) {
525 525
                 case ROT_0:
526
-                    ret = obj_add(SPR_SHOT, 0, -SHIP_OFF, spd_x, spd_y - SHOT_SPEED);
526
+                    ret = obj_add(SPR_SHOT,
527
+                                  0, -SHIP_OFF,
528
+                                  spd_x, spd_y - SHOT_SPEED);
527 529
                     break;
528 530
 
529 531
                 case ROT_22_5:
530
-                    // TODO
532
+                    ret = obj_add(SPR_SHOT,
533
+                                  SHIP_OFF / 2 - 1, -SHIP_OFF / 2 - 4,
534
+                                  spd_x + SHOT_SPEED_D_LO, spd_y - SHOT_SPEED_D_HI);
531 535
                     break;
532 536
 
533 537
                 case ROT_45:
534
-                    ret = obj_add(SPR_SHOT, SHIP_OFF / 2 + 3, -SHIP_OFF / 2 - 2, spd_x + SHOT_SPEED, spd_y - SHOT_SPEED);
538
+                    ret = obj_add(SPR_SHOT,
539
+                                  SHIP_OFF / 2 + 3, -SHIP_OFF / 2 - 2,
540
+                                  spd_x + SHOT_SPEED_DIAG, spd_y - SHOT_SPEED_DIAG);
535 541
                     break;
536 542
 
537 543
                 case ROT_67_5:
538
-                    // TODO
544
+                    ret = obj_add(SPR_SHOT,
545
+                                  SHIP_OFF / 2 + 5, -SHIP_OFF / 2 + 2,
546
+                                  spd_x + SHOT_SPEED_D_HI, spd_y - SHOT_SPEED_D_LO);
539 547
                     break;
540 548
 
541 549
                 case ROT_90:
542
-                    ret = obj_add(SPR_SHOT, SHIP_OFF, 0, spd_x + SHOT_SPEED, spd_y);
550
+                    ret = obj_add(SPR_SHOT,
551
+                                  SHIP_OFF, 0,
552
+                                  spd_x + SHOT_SPEED, spd_y);
543 553
                     break;
544 554
 
545 555
                 case ROT_112_5:
546
-                    // TODO
556
+                    ret = obj_add(SPR_SHOT,
557
+                                  SHIP_OFF / 2 + 5, SHIP_OFF / 2 + 0,
558
+                                  spd_x + SHOT_SPEED_D_HI, spd_y + SHOT_SPEED_D_LO);
547 559
                     break;
548 560
 
549 561
                 case ROT_135:
550
-                    ret = obj_add(SPR_SHOT, SHIP_OFF / 2 + 3, SHIP_OFF / 2 + 2, spd_x + SHOT_SPEED, spd_y + SHOT_SPEED);
562
+                    ret = obj_add(SPR_SHOT,
563
+                                  SHIP_OFF / 2 + 3, SHIP_OFF / 2 + 2,
564
+                                  spd_x + SHOT_SPEED_DIAG, spd_y + SHOT_SPEED_DIAG);
551 565
                     break;
552 566
 
553 567
                 case ROT_157_5:
554
-                    // TODO
568
+                    ret = obj_add(SPR_SHOT,
569
+                                  SHIP_OFF / 2 + 1, SHIP_OFF / 2 + 4,
570
+                                  spd_x + SHOT_SPEED_D_LO, spd_y + SHOT_SPEED_D_HI);
555 571
                     break;
556 572
 
557 573
                 case ROT_180:
558
-                    ret = obj_add(SPR_SHOT, 0, SHIP_OFF, spd_x, spd_y + SHOT_SPEED);
574
+                    ret = obj_add(SPR_SHOT,
575
+                                  0, SHIP_OFF,
576
+                                  spd_x, spd_y + SHOT_SPEED);
559 577
                     break;
560 578
 
561 579
                 case ROT_202_5:
562
-                    // TODO
580
+                    ret = obj_add(SPR_SHOT,
581
+                                  -SHIP_OFF / 2 + 2, SHIP_OFF / 2 + 3,
582
+                                  spd_x - SHOT_SPEED_D_LO, spd_y + SHOT_SPEED_D_HI);
563 583
                     break;
564 584
 
565 585
                 case ROT_225:
566
-                    ret = obj_add(SPR_SHOT, -SHIP_OFF / 2 - 3, SHIP_OFF / 2 + 2, spd_x - SHOT_SPEED, spd_y + SHOT_SPEED);
586
+                    ret = obj_add(SPR_SHOT,
587
+                                  -SHIP_OFF / 2 - 3, SHIP_OFF / 2 + 2,
588
+                                  spd_x - SHOT_SPEED_DIAG, spd_y + SHOT_SPEED_DIAG);
567 589
                     break;
568 590
 
569 591
                 case ROT_247_5:
570
-                    // TODO
592
+                    ret = obj_add(SPR_SHOT,
593
+                                  -SHIP_OFF / 2 - 5, SHIP_OFF / 2 - 1,
594
+                                  spd_x - SHOT_SPEED_D_HI, spd_y + SHOT_SPEED_D_LO);
571 595
                     break;
572 596
 
573 597
                 case ROT_270:
574
-                    ret = obj_add(SPR_SHOT, -SHIP_OFF, 0, spd_x - SHOT_SPEED, spd_y);
598
+                    ret = obj_add(SPR_SHOT,
599
+                                  -SHIP_OFF, 0,
600
+                                  spd_x - SHOT_SPEED, spd_y);
575 601
                     break;
576 602
 
577 603
                 case ROT_292_5:
578
-                    // TODO
604
+                    ret = obj_add(SPR_SHOT,
605
+                                  -SHIP_OFF / 2 - 2, -SHIP_OFF / 2 + 2,
606
+                                  spd_x - SHOT_SPEED_D_HI, spd_y - SHOT_SPEED_D_LO);
579 607
                     break;
580 608
 
581 609
                 case ROT_315:
582
-                    ret = obj_add(SPR_SHOT, -SHIP_OFF / 2 - 3, -SHIP_OFF / 2 - 2, spd_x - SHOT_SPEED, spd_y - SHOT_SPEED);
610
+                    ret = obj_add(SPR_SHOT,
611
+                                  -SHIP_OFF / 2 - 3, -SHIP_OFF / 2 - 2,
612
+                                  spd_x - SHOT_SPEED_DIAG, spd_y - SHOT_SPEED_DIAG);
583 613
                     break;
584 614
 
585 615
                 case ROT_337_5:
586
-                    // TODO
616
+                    ret = obj_add(SPR_SHOT,
617
+                                  -SHIP_OFF / 2 + 1, -SHIP_OFF / 2 - 4,
618
+                                  spd_x - SHOT_SPEED_D_LO, spd_y - SHOT_SPEED_D_HI);
587 619
                     break;
588 620
 
589 621
                 default:

+ 4
- 0
src/game.h View File

@@ -29,6 +29,10 @@
29 29
 #define SHOT_SPEED 42 //23
30 30
 #define MAX_TRAVEL 64 //128
31 31
 
32
+#define SHOT_SPEED_DIAG 30
33
+#define SHOT_SPEED_D_HI 39
34
+#define SHOT_SPEED_D_LO 16
35
+
32 36
 enum GAME_MODE {
33 37
     GM_SINGLE = 0,
34 38
     GM_MULTI,

Loading…
Cancel
Save