tfv: battle, bottom part nearing final form

This commit is contained in:
Vince Weaver 2018-06-30 14:58:59 -04:00
parent 8e5708fc29
commit 7f87277c6e
2 changed files with 66 additions and 41 deletions

View File

@ -1,11 +1,11 @@
Soon: Soon:
+ Enable getting back on spaceship + Enable getting back on spaceship (with animation)
+ Better collision detection on Spaceship land + Better collision detection on Spaceship land
+ Better collision detection/walk on+off in College Park + Better collision detection/walk on+off in College Park
+ Hook up art for all possible locations + Hook up art for all possible locations
+ Working conversation + Working conversation
+ Riding animals + Riding animals
+ Battle + Battle Sequence
+ End sequence + End sequence
Credits: Credits:
@ -17,27 +17,3 @@ Not soon:
+ Play as either DEATER or FROGGY + Play as either DEATER or FROGGY
+ Allow spaceship to land on arbitrary grass space + Allow spaceship to land on arbitrary grass space
+ Toggle lowercase/uppercase text + Toggle lowercase/uppercase text
Trailer:
Coming this July
At Kansasfest
+ A new game about 20 year old events for a 40 year old platform
+ Title Screen
+ Riding bird
+ Battle against killer crab
+ Darkest Bel Air

View File

@ -68,6 +68,7 @@ List hits
*/ */
static int battle_bar=0;
/* Background depend on map location? */ /* Background depend on map location? */
@ -279,43 +280,69 @@ static int victory_dance(void) {
static int draw_battle_bottom(int enemy_type) { static int draw_battle_bottom(int enemy_type) {
int i; int i;
int saved_page;
clear_bottom(); saved_page=ram[DRAW_PAGE];
ram[DRAW_PAGE]=PAGE2; // 0xc00 ram[DRAW_PAGE]=PAGE2; // 0xc00
clear_bottom();
vtab(22); vtab(22);
htab(1); htab(1);
move_cursor(); move_cursor();
print(enemies[enemy_type].name); print(enemies[enemy_type].name);
vtab(21); vtab(21);
htab(27); htab(25);
move_cursor(); move_cursor();
print("HP"); print("HP");
vtab(21); vtab(21);
htab(34); htab(28);
move_cursor();
print("MP");
vtab(21);
htab(31);
move_cursor();
print("TIME");
vtab(21);
htab(36);
move_cursor(); move_cursor();
print("LIMIT"); print("LIMIT");
vtab(22); vtab(22);
htab(15); htab(15);
move_cursor(); move_cursor();
print("DEATER"); // should print "NAMEO"
print("DEATER--");
vtab(22); vtab(22);
htab(24); htab(24);
move_cursor(); move_cursor();
print_byte(hp); print_byte(hp);
print("/");
print_byte(max_hp); vtab(22);
htab(27);
move_cursor();
print_byte(mp);
/* Draw Time bargraph */
printf("Battle_bar=%d Limit=%d\n",battle_bar,limit);
ram[COLOR]=0xa0;
hlin_double(ram[DRAW_PAGE],30,34,42);
ram[COLOR]=0x20;
if (battle_bar) hlin_double(ram[DRAW_PAGE],30,30+(battle_bar-1),42);
/* Draw Limit break bargraph */ /* Draw Limit break bargraph */
ram[COLOR]=0x20;
hlin_double(ram[DRAW_PAGE],33,33+limit,42);
ram[COLOR]=0xa0; ram[COLOR]=0xa0;
hlin_double_continue(5-limit); hlin_double(ram[DRAW_PAGE],35,39,42);
ram[COLOR]=0x20;
if (limit) hlin_double(ram[DRAW_PAGE],35,35+limit,42);
/* Draw inverse separator */ /* Draw inverse separator */
ram[COLOR]=0x20; ram[COLOR]=0x20;
@ -323,6 +350,8 @@ static int draw_battle_bottom(int enemy_type) {
hlin_double(ram[DRAW_PAGE],12,12,i); hlin_double(ram[DRAW_PAGE],12,12,i);
} }
ram[DRAW_PAGE]=saved_page;
return 0; return 0;
} }
@ -367,7 +396,7 @@ static int rotate_intro(void) {
plot(xx,yy); plot(xx,yy);
} }
} }
thetadiff-=(6.28/16.0); thetadiff+=(6.28/16.0);
page_flip(); page_flip();
usleep(100000); usleep(100000);
@ -387,8 +416,9 @@ int do_battle(void) {
int enemy_hp=0; int enemy_hp=0;
int ax=34; int ax=34;
int battle_count=50; int battle_count=20;
int enemy_count=30; int enemy_count=30;
int old;
/* Setup Enemy */ /* Setup Enemy */
// enemy_type=X // enemy_type=X
@ -403,8 +433,11 @@ int do_battle(void) {
saved_drawpage=ram[DRAW_PAGE]; saved_drawpage=ram[DRAW_PAGE];
ram[DRAW_PAGE]=PAGE2;
draw_battle_bottom(enemy_type); draw_battle_bottom(enemy_type);
/*******************/
/* Draw background */ /* Draw background */
/* Draw sky */ /* Draw sky */
@ -439,30 +472,46 @@ int do_battle(void) {
if (ch=='q') return 0; if (ch=='q') return 0;
if (enemy_count==0) { if (enemy_count==0) {
// attack and decrement HP
hp-=enemy_attack(enemy_x,enemy_type,ax); hp-=enemy_attack(enemy_x,enemy_type,ax);
// decrement HP
// update limit count // update limit count
if (limit<5) limit++;
// redraw bottom // redraw bottom
draw_battle_bottom(enemy_type);
// reset enemy time. FIXME: variable?
enemy_count=50; enemy_count=50;
} }
else { else {
enemy_count--; enemy_count--;
} }
if (battle_count==0) { if (battle_count>=64) {
if (ch==' ') { if (ch==' ') {
// attack and decrement HP
enemy_hp-=attack(enemy_x,enemy_type); enemy_hp-=attack(enemy_x,enemy_type);
battle_count=50; // redraw bottom
draw_battle_bottom(enemy_type);
// reset battle time
battle_count=0;
} }
} else { } else {
battle_count--; battle_count++;
} }
old=battle_bar;
battle_bar=(battle_count/16);
if (battle_bar!=old) draw_battle_bottom(enemy_type);
if (enemy_hp<0) { if (enemy_hp<0) {
victory_dance(); victory_dance();
break; break;
} }
// if (hp<0) {
// game_over();
// }
} }
ram[DRAW_PAGE]=PAGE0; ram[DRAW_PAGE]=PAGE0;