aboutsummaryrefslogtreecommitdiff
path: root/taipan.c
diff options
context:
space:
mode:
Diffstat (limited to 'taipan.c')
-rw-r--r--taipan.c72
1 files changed, 33 insertions, 39 deletions
diff --git a/taipan.c b/taipan.c
index b53ac1c..40cfb5d 100644
--- a/taipan.c
+++ b/taipan.c
@@ -8,7 +8,7 @@
/* define this for testing sea_battle(). it causes a pirate
attack every time you leave port. Don't leave defined for
a release!! */
-// #define COMBAT_TEST
+#define COMBAT_TEST
/**** atari-specific stuff */
@@ -126,10 +126,11 @@ void quit(void);
void overload(void);
void fancy_numbers(unsigned long num, char *fancy);
int sea_battle(int id, int num_ships);
-extern void __fastcall__ draw_lorcha(int which, int displacement, int mask);
-void clear_lorcha(int x, int y);
-void draw_blast(int x, int y);
-void sink_lorcha(int which);
+extern void __fastcall__ draw_lorcha(int which);
+extern void __fastcall__ flash_lorcha(int which);
+extern void __fastcall__ damage_lorcha(int which);
+extern void __fastcall__ sink_lorcha(int which);
+extern void __fastcall__ clear_lorcha(int which);
void fight_stats(int ships, int orders);
void mchenry(void);
void retire(void);
@@ -482,14 +483,6 @@ void fight_stats(int ships, int orders)
return;
}
-void sink_lorcha(int which) {
- int i;
- for(i = 1; i < 8; i++) {
- draw_lorcha(which, i, 0);
- jsleep(5);
- }
-}
-
/* print an inverse video plus if there are offscreen ships,
or clear it to a space if not. */
void plus_or_space(unsigned char b) {
@@ -550,7 +543,7 @@ int sea_battle(int id, int num_ships) {
if (ships_on_screen[i] == 0) {
jsleep(5);
ships_on_screen[i] = (randi() % ec) + 20;
- draw_lorcha(i, 0, 0);
+ draw_lorcha(i);
num_on_screen++;
}
}
@@ -560,7 +553,7 @@ int sea_battle(int id, int num_ships) {
gotoxy(0, 16);
cputs("\r\n");
- timed_getch(TMOUT_3S);
+ input = timed_getch(TMOUT_3S);
if(input == 'f') {
orders = 1;
@@ -571,7 +564,7 @@ int sea_battle(int id, int num_ships) {
}
if(orders == 0) {
- timed_getch(TMOUT_3S);
+ input = timed_getch(TMOUT_3S);
if (input == 'f')
{
@@ -635,7 +628,7 @@ int sea_battle(int id, int num_ships) {
if (num_ships > num_on_screen) {
if(ships_on_screen[j] == 0) {
ships_on_screen[j] = randclamp(ec) + 20;
- draw_lorcha(j, 0, 0);
+ draw_lorcha(j);
num_on_screen++;
}
}
@@ -653,17 +646,21 @@ int sea_battle(int id, int num_ships) {
targeted = randi()%10;
}
- draw_lorcha(targeted, 0, 0x80);
- jsleep(5);
-
- draw_lorcha(targeted, 0, 0);
- jsleep(5);
-
- draw_lorcha(targeted, 0, 0x80);
- jsleep(5);
-
- draw_lorcha(targeted, 0, 0);
- jsleep(5);
+ /* flash_lorcha must be called an even number of times
+ to leave the lorcha in an unflashed state after. */
+ flash_lorcha(targeted);
+ jsleep(2);
+ flash_lorcha(targeted);
+ jsleep(2);
+ flash_lorcha(targeted);
+ jsleep(2);
+ flash_lorcha(targeted);
+ jsleep(2);
+ flash_lorcha(targeted);
+ jsleep(2);
+ flash_lorcha(targeted);
+ jsleep(2);
+ damage_lorcha(targeted);
ships_on_screen[targeted] -= randi()%30 + 10;
@@ -676,12 +673,6 @@ int sea_battle(int id, int num_ships) {
sink_lorcha(targeted);
plus_or_space(num_ships > num_on_screen);
- /*
- if(num_ships == num_on_screen) {
- gotoxy(39, 7);
- cputc(' ');
- }
- */
fight_stats(num_ships, orders);
}
@@ -721,7 +712,7 @@ int sea_battle(int id, int num_ships) {
ships_on_screen[i] = 0;
num_on_screen--;
- draw_lorcha(i, 7, 0);
+ clear_lorcha(i);
jsleep(5);
}
}
@@ -886,7 +877,7 @@ int sea_battle(int id, int num_ships) {
ships_on_screen[i] = 0;
num_on_screen--;
- draw_lorcha(i, 7, 0);
+ clear_lorcha(i);
jsleep(5);
}
}
@@ -930,11 +921,13 @@ int sea_battle(int id, int num_ships) {
}
fight_stats(num_ships, orders);
+ /* XXX: I don't think this is needed at all!
for(i = 0; i <= 9; i++) {
if(ships_on_screen[i] > 0) {
- draw_lorcha(i, 0, 0);
+ draw_lorcha(i);
}
}
+ */
plus_or_space(num_ships > num_on_screen);
@@ -1270,8 +1263,8 @@ void splash_intro(void)
{
int i;
- for(i=0; i<3; i++) draw_lorcha(i, 0, 0);
- for(i=5; i<8; i++) draw_lorcha(i, 0, 0);
+ for(i=0; i<3; i++) draw_lorcha(i);
+ for(i=5; i<8; i++) draw_lorcha(i);
timed_getch(TMOUT_5M);
@@ -1726,6 +1719,7 @@ void quit(void)
cputs(" I think we're going down!!\r\n\n");
timed_getch(TMOUT_3S);
+ // FIXME: the randclamp() version of this is broken badly!
// if (((damage / capacity * 3) * ((float) randi() / RAND_MAX)) >= 1)
if(randclamp(damage / capacity * 3) >= 1)
{