dos33fsprogs/gr-sim/tfv_battle.c

167 lines
2.9 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "gr-sim.h"
#include "tfv_utils.h"
#include "tfv_zp.h"
#include "tfv_sprites.h"
#include "tfv_backgrounds.h"
/* Do Battle */
/* Metrocat Easter Egg (summon?) */
/* Enemies: */
/* Killer Crab, Evil Tree, Deadly Bees, Big Fish, Procrastinon */
/* Battle.
Forest? Grassland? Artic? Ocean?
1 2 3
0123456789012345678901234567890123456789|
----------------------------------------|
| HP LIMIT | -> FIGHT/LIMIT 21
KILLER CRAB | DEATER 128/255 128 | ZAP 22
| | REST 23
| | RUN AWAY 24
Sound effects?
List hits
****** ** **** **** ** ** ****** **** ****** ****** ******
** ** **** ** ** ** ** ** ** ** ** ** ** **
** ** ** **** **** ****** **** ****** ** ****** ******
** ** ** ** ** ** ** ** ** ** ** ** **
****** ****** ****** **** ** **** ****** ** ****** **
*/
/* Background depend on map location? */
/* Room for guinea pig in party? */
/* Attacks -> HIT, ZAP, HEAL, RUNAWAY */
int do_battle(void) {
int i,ch;
int enemy_x=2;
int saved_drawpage;
//int enemy_hp=20;
int tfv_x=34;
// home();
// gr();
saved_drawpage=ram[DRAW_PAGE];
clear_bottom();
ram[DRAW_PAGE]=PAGE2; // 0xc00
vtab(22);
htab(1);
move_cursor();
print("KILLER CRAB");
vtab(21);
htab(27);
move_cursor();
print("HP");
vtab(21);
htab(34);
move_cursor();
print("LIMIT");
vtab(22);
htab(15);
move_cursor();
print("DEATER");
vtab(22);
htab(24);
move_cursor();
print_byte(hp);
print("/");
print_byte(max_hp);
ram[COLOR]=0x20;
hlin_double(ram[DRAW_PAGE],33,33+limit,42);
// basic_htab(34);
// basic_vtab(22);
// basic_inverse();
// for(i=0;i<limit;i++) {
// basic_print(" ");
// }
// basic_normal();
// for(i=limit;i<5;i++) {
// basic_print(" ");
// }
ram[COLOR]=0xa0;
hlin_double_continue(5-limit);
ram[COLOR]=0x20;
// basic_inverse();
for(i=40;i<50;i+=2) {
hlin_double(ram[DRAW_PAGE],12,12,i);
// basic_vtab(i);
// basic_htab(13);
// basic_print(" ");
}
//basic_normal();
color_equals(COLOR_MEDIUMBLUE);
for(i=0;i<10;i++) {
hlin_double(ram[DRAW_PAGE],0,39,i);
}
color_equals(COLOR_LIGHTGREEN);
for(i=10;i<40;i++) {
hlin_double(ram[DRAW_PAGE],0,39,i);
}
ram[DRAW_PAGE]=saved_drawpage;
while(1) {
gr_copy_to_current(0xc00);
grsim_put_sprite(tfv_stand_left,tfv_x,20);
grsim_put_sprite(tfv_led_sword,tfv_x-5,20);
grsim_put_sprite(killer_crab,enemy_x,20);
page_flip();
ch=grsim_input();
if (ch=='q') break;
usleep(100000);
}
ram[DRAW_PAGE]=PAGE0;
clear_bottom();
ram[DRAW_PAGE]=PAGE1;
clear_bottom();
return 0;
}