void passage_mainloop(int map,int map_x,int map_y,unsigned char *screen,int dx,int dy) { unsigned char *keyboard; SDL_PumpEvents(); keyboard = (unsigned char *)SDL_GetKeyState(NULL); /* Dibujar el marco: */ int i; for(i=0;i<32;i++) { tiles[143]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[143]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y+18*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ for(i=0;i<19;i++) { tiles[143]-> draw(GAME_VIEW_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[143]-> draw(GAME_VIEW_X+TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[143]-> draw(GAME_VIEW_X+30*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[143]-> draw(GAME_VIEW_X+31*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ tiles[ladder_tile]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+19*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[character_tile[character]+7]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+16*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); /* Dibujar los bocadillos: */ tiles[151]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+4*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[150]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+4*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[149]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+10*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[148]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+10*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); for(i=5;i<27;i++) { tiles[146]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y+4*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[146]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y+10*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ for(i=5;i<10;i++) { tiles[147]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[147]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ tiles[145]-> draw(GAME_VIEW_X+11*TILE_SIZE_X,GAME_VIEW_Y+4*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[151]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+11*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[150]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+11*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[149]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+15*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[148]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+15*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); for(i=5;i<27;i++) { tiles[146]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y+11*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[146]-> draw(GAME_VIEW_X+i*TILE_SIZE_X,GAME_VIEW_Y+15*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ for(i=12;i<15;i++) { tiles[147]-> draw(GAME_VIEW_X+4*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); tiles[147]-> draw(GAME_VIEW_X+27*TILE_SIZE_X,GAME_VIEW_Y+i*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* for */ tiles[144]-> draw(GAME_VIEW_X+20*TILE_SIZE_X,GAME_VIEW_Y+15*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); if (map==0 && map_x==5 && map_y==9) { /* DEMETER */ tile_print("h F5 TO F9",TILE_SIZE_X*6,TILE_SIZE_Y*21,screen,dx,dy); tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); int slot=-1; /* Guardar el juego a disco: */ if (keyboard[SDLK_F5] && !old_keyboard[SDLK_F5]) slot=1; if (keyboard[SDLK_F6] && !old_keyboard[SDLK_F6]) slot=2; if (keyboard[SDLK_F7] && !old_keyboard[SDLK_F7]) slot=3; if (keyboard[SDLK_F8] && !old_keyboard[SDLK_F8]) slot=4; if (keyboard[SDLK_F9] && !old_keyboard[SDLK_F9]) slot=5; if (slot!=-1) { char passwd[48]; char tmp[80]; FILE *fp; generatepassword(passwd); sprintf(tmp,"sgame%.2i.txt",slot); fp=f1open(tmp,"w",USERDATA); if (fp!=0) { int i; for(i=0;i<48;i++) { fprintf(fp,"%c",passwd[i]); } /* for */ fclose(fp); Sound_play(S_select); } /* if */ } /* if */ if (passage_state==0) { tile_print("YOU WANT THE SECRET",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("CODE TO WAKEN",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("MY MEMORY KEEP THE",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("RECORDS ABOUT YOU?",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); tile_print(" YES NO",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { if (currently_selecting<1) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { if (currently_selecting==0) passage_state=2; if (currently_selecting==1) passage_state=1; keyboard[SWORD_KEY]=false; } /* if */ } /* if */ if (passage_state==1) { tile_print("RESCUE THE BABY AS ",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("SOON AS POSSIBLE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (passage_state==2) { char passwd[48]; char buf[20]; int k; for(k=0;k<20;k++) buf[k]=' '; generatepassword(passwd); buf[0]=passwd[0]; buf[1]=passwd[1]; buf[2]=passwd[2]; buf[3]=passwd[3]; buf[5]=passwd[4]; buf[6]=passwd[5]; buf[7]=passwd[6]; buf[8]=passwd[7]; buf[10]=passwd[8]; buf[11]=passwd[9]; buf[12]=passwd[10]; buf[13]=passwd[11]; buf[15]=passwd[12]; buf[16]=passwd[13]; buf[17]=passwd[14]; buf[18]=passwd[15]; buf[19]=0; tile_print(buf,TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); buf[0]=passwd[16]; buf[1]=passwd[17]; buf[2]=passwd[18]; buf[3]=passwd[19]; buf[5]=passwd[20]; buf[6]=passwd[21]; buf[7]=passwd[22]; buf[8]=passwd[23]; buf[10]=passwd[24]; buf[11]=passwd[25]; buf[12]=passwd[26]; buf[13]=passwd[27]; buf[15]=passwd[28]; buf[16]=passwd[29]; buf[17]=passwd[30]; buf[18]=passwd[31]; buf[19]=0; tile_print(buf,TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); buf[0]=passwd[32]; buf[1]=passwd[33]; buf[2]=passwd[34]; buf[3]=passwd[35]; buf[5]=passwd[36]; buf[6]=passwd[37]; buf[7]=passwd[38]; buf[8]=passwd[39]; buf[10]=passwd[40]; buf[11]=passwd[41]; buf[12]=passwd[42]; buf[13]=passwd[43]; buf[15]=passwd[44]; buf[16]=' '; buf[17]=' '; buf[18]=' '; buf[19]=0; tile_print(buf,TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("DID YOU GET THEM?",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); tile_print(" YES",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=3; } /* if */ } /* if */ if (passage_state==3) { tile_print("SEE YOU AGAIN",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); } /* if */ } /* if */ if (map==0 && map_x==8 && map_y==15) { int price[3]={20,30,20}; /* ARES */ tile_print("ARES",TILE_SIZE_X*18,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile+30]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[armas_tile+4]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+8*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y,screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 30 20",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1:item[30]=true; item[31]=false; item[27]=false; break; case 2:item[36]=true; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==0 && map_y==13) { int price[3]={30,5,20}; /* HEPHAESTUS */ tile_print("HEPHAESTUS",TILE_SIZE_X*15,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[armas_tile+5]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+8*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[arrow_tile+1]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 30 05 20",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:item[37]=true; break; case 1:n_keys+=2; break; case 2:n_arrows+=50; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==11 && map_y==10) { /* DEATH */ tile_print("DEATH",TILE_SIZE_X*18,TILE_SIZE_Y*5,screen,dx,dy); tiles[167]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if ((live_character[0] || !can_revive_character[0]) && (live_character[1] || !can_revive_character[1]) && passage_state==0) { tile_print("IF YOUR LOVER IS",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("KILLED,COME BACK",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("HERE WITH abc100,",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("dec100, AND fgc20.",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); } else { if (passage_state==0) { tile_print("GIVE ME abc100,",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("dec100 AND fgc20 IN",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("RETURN FOR REVIVING",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("YOUR LOVER.",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); tile_print(" YES NO",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+20 *TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { if (currently_selecting<1) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { if (currently_selecting==0 && n_arrows>=100 && n_coins>=100 && n_keys>=20) { n_arrows-=100; n_coins-=100; n_keys-=20; can_revive_character[1-character]=false; live_character[0]=live_character[1]=true; player_energy[1-character]=player_max[1-character]; passage_state=2; } /* if */ if (currently_selecting==1) passage_state=1; keyboard[SWORD_KEY]=false; } /* if */ } /* if */ if (passage_state==1) { tile_print("THEN,YOU MUST FIGHT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ALL BY YOURSELF",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("GO,RIGHT NOW.",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); } /* if */ if (passage_state==2) { tile_print("YOUR LOVER HAS",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("REVIVED, GO AND GET",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("BACK THE LITTLE BABY",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("TOGETHER. GO AHEAD!",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); } /* if */ } /* if */ } /* if */ if (map==0 && map_x==9 && map_y==7) { int price[3]={20,25,5}; /* HEPHAESTUS */ tile_print("HEPHAESTUS",TILE_SIZE_X*15,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile+22]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 25 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1:item[22]=true; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==12 && map_y==2) { int price[3]={20,50,5}; /* ARES */ tile_print("ARES",TILE_SIZE_X*18,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile+12]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 50 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1:item[12]=true; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==2 && map_y==2) { int price[3]={30,20,5}; /* HEPHAESTUS */ tile_print("HEPHAESTUS",TILE_SIZE_X*15,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[items_tile+20]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 30 20 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:item[20]=true; break; case 1:n_arrows+=50; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==2 && map_y==5) { int price[3]={20,25,5}; /* DETEMETER */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 25 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1:item[0]=true; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==12 && map_y==8) { int price[3]={20,40,5}; /* ARES */ tile_print("ARES",TILE_SIZE_X*18,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile+31]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 40 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1: item[27]=false; item[30]=false; item[31]=true; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==8 && map_y==1) { int price[3]={20,50,5}; /* ARES */ tile_print("ARES",TILE_SIZE_X*18,TILE_SIZE_Y*5,screen,dx,dy); tiles[153]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[arrow_tile]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[1]) { tiles[items_tile+27]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ if (shop_item[2]) { tiles[key_tile]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 20 50 05",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+9*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==1) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (currently_selecting==2) { tiles[152]-> draw(GAME_VIEW_X+21*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[RIGHT_KEY] && !old_keyboard[RIGHT_KEY]) { passage_state=0; if (currently_selecting<2) { currently_selecting++; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[LEFT_KEY] && !old_keyboard[LEFT_KEY]) { passage_state=0; if (currently_selecting>0) { currently_selecting--; Sound_play(S_select); } /* if */ } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; switch(currently_selecting) { case 0:n_arrows+=50; break; case 1: item[27]=true; item[30]=false; item[31]=false; break; case 2:n_keys+=2; break; } /* if */ Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==0 && map_x==7 && map_y==7) { /* ASCLEPIUS */ tile_print("ASCLEPIUS",TILE_SIZE_X*16,TILE_SIZE_Y*5,screen,dx,dy); tiles[178]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("SEE A FAIRY TO",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("RESTORE YOUR",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("VITALITY.",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); } /* if */ if (map==1) { /* DEMETER en el mundo 1 */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("TAKE A MINE WITH YOU",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("WHEN YOU GO TO",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("WORLD 4",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); } /* if */ if (map==2) { /* ATHENA en el mundo 2 */ tile_print("ATHENA",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[161]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("HIT THE WALL WITH",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("YOUR SWORD IF YOU",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("WANT TO GO TO THE",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("OPPOSITE SHORE.",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); } /* if */ if (map==3) { /* ATHENA en el mundo 3 */ tile_print("ATHENA",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[161]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("APHRODITE.DO NOT BE",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("AFRAID OF WATER.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (map==4) { /* DEMETER en el mundo 4 */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("THE PURE WATER IS",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("INSIDE THE WALL.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (map==5) { int price[1]={30}; /* DETEMETER */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[items_tile+3]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 30",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; item[3]=true; Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==6) { /* ATHENA en el mundo 6 */ tile_print("ATHENA",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[161]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("HIT THE WALL WHEN",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("YOU ARE HALFWAY OF",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("THE STAIRS.",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); } /* if */ if (map==7) { /* DEMETER en el mundo 7 */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("FIND THE SPELL",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("WRITTEN ON A STONE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("MONUMENT UNDER THE",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("WATER.",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); } /* if */ if (map==8) { int price[1]={30}; /* DETEMETER */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); if (passage_state==0) { tile_print("YOU CAN BUY SOME OF",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("MY TREASURE",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } else { tile_print("COINS ARE NOT",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("ENOUGH.",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); } /* if */ if (shop_item[0]) { tiles[items_tile+11]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+7*TILE_SIZE_Y, screen,col_buffer,dx,dy,dx); } /* if */ tile_print(" 30",TILE_SIZE_X*10,TILE_SIZE_Y*13,screen,dx,dy); if (currently_selecting==0) { tiles[152]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+12*TILE_SIZE_Y, TILE_SIZE_X,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); } /* if */ if (keyboard[SWORD_KEY] && !old_keyboard[SWORD_KEY]) { passage_state=0; if (n_coins>=price[currently_selecting] && shop_item[currently_selecting]) { /* Comprar objeto: */ n_coins-=price[currently_selecting]; shop_item[currently_selecting]=false; item[11]=true; Sound_play(S_item); } else { if (shop_item[currently_selecting] && n_coins<price[currently_selecting]) { Sound_play(S_nocoins); passage_state=1; } /* if */ } /* if */ } /* if */ } /* if */ if (map==9) { /* DEMETER en el mundo 9 */ tile_print("DEMETER",TILE_SIZE_X*17,TILE_SIZE_Y*5,screen,dx,dy); tiles[154]-> draw(GAME_VIEW_X+15*TILE_SIZE_X,GAME_VIEW_Y+2*TILE_SIZE_Y, TILE_SIZE_X*2,TILE_SIZE_Y*2,screen,col_buffer,dx,dy,dx); tile_print("A GATE WHICH LEADS",TILE_SIZE_X*10,TILE_SIZE_Y*9,screen,dx,dy); tile_print("TO GALIOUS WILL",TILE_SIZE_X*10,TILE_SIZE_Y*10,screen,dx,dy); tile_print("APPEAR SOMEWHERE IN",TILE_SIZE_X*10,TILE_SIZE_Y*11,screen,dx,dy); tile_print("THE CASTLE.",TILE_SIZE_X*10,TILE_SIZE_Y*12,screen,dx,dy); } /* if */ } /* passage_mainloop */
void write_debug_report(char *file) { int i,j; FILE *fp; fp=f1open(file,"w+",USERDATA); if (fp==0) return; fprintf(fp,"SCREEN_X: %i\nSCREEN_Y:%i\nCOLOUR_DEPTH: %i\n",SCREEN_X,SCREEN_Y,COLOUR_DEPTH); fprintf(fp,"fullscreen: %s\n",(fullscreen ? "true":"false")); fprintf(fp,"redrawing_period (mseconds): %i\n",REDRAWING_PERIOD); fprintf(fp,"frames_per_sec: %g\ninit_time: %i\n",frames_per_sec,init_time); fprintf(fp,"GRAPHIC PATHS:\n"); for(i=0;i<n_g_paths;i++) { fprintf(fp,"%s",g_paths[i]); if (act_g_path==i) fprintf(fp," (SELECTED)"); fprintf(fp,"\n"); } /* for */ fprintf(fp,"SOUND PATHS:\n"); for(i=0;i<n_s_paths;i++) { fprintf(fp,"%s",s_paths[i]); if (act_s_path==i) fprintf(fp," (SELECTED)"); fprintf(fp,"\n"); } /* for */ fprintf(fp,"DEFAULT GRAPHIC PATH: %s\n",default_g_path); fprintf(fp,"DEFAULT SOUND PATH: %s\n",default_s_path); fprintf(fp,"Graphic files:\n"); fprintf(fp,"konami: %p\nmenu: %p\ntiles: %p\nenemy: %p\nenemy2: %p\ndemon: %p\nfinal: %p\n", konami_bmp,menu_bmp,tiles_bmp,enemy_bmp,enemy2_bmp,demon_bmp,final_bmp); fprintf(fp,"music_volume: %i\n",music_volume); fprintf(fp,"sfx_volume: %i\n",sfx_volume); fprintf(fp,"sound_enabled: %s\n",(sound_enabled ? "true":"false")); fprintf(fp,"Tiles:\n"); fprintf(fp,"ntiles: %i\n",n_tiles); for(i=0;i<n_tiles;i++) { fprintf(fp,"Tile %i: %i (%i,%i-%i,%i [%i,%i])\n",i,tiles[i]->m_type, tiles[i]->m_sp->m_x, tiles[i]->m_sp->m_y, tiles[i]->m_sp->m_dx, tiles[i]->m_sp->m_dy, tiles[i]->m_sp->m_xoffs, tiles[i]->m_sp->m_yoffs); } /* for */ fprintf(fp,"Buffers: %p %p\n",col_buffer,buffer_screen); fprintf(fp,"GAME:\n"); fprintf(fp,"STATE: %i\nSUBSTATE: %i\ncycle: %i\n",STATE,SUBSTATE,cycle); fprintf(fp,"map: %i\nmap_x: %i\nmap_y: %i\n",map,map_x,map_y); fprintf(fp,"pers_x: %i\npers_y: %i\npers_pos: %i\n",pers_x,pers_y,pers_pos); fprintf(fp,"pers_right: %s\n",(pers_right ? "true":"false")); fprintf(fp,"pers_state: %i\npers_substate: %i\npers_walk_state: %i\n",pers_state,pers_substate,pers_walk_state); fprintf(fp,"jump_inertia: %i\n",jump_inertia); fprintf(fp,"sword: %s\nold_sword: %s\n",(sword ? "true":"false"),(old_sword ? "true":"false")); fprintf(fp,"sword_x: %i\nsword_y: %i\nsword_time: %i\n",sword_x,sword_y,sword_time); fprintf(fp,"in_ladder: %i\n",in_ladder); fprintf(fp,"previous_x_collision: %s\nprevious_y_collision: %s\n",(previous_x_collision ? "true":"false"),(previous_y_collision ? "true":"false")); fprintf(fp,"hit_time: %i\n",hit_time); fprintf(fp,"character: %i (%s,%s)\n",character,(live_character[0] ? "true":"false"),(live_character[1] ? "true":"false")); fprintf(fp,"freezed: %i\n",freezed); fprintf(fp,"current_weapon: %i\n",current_weapon); fprintf(fp,"n_fired_arrows: %i\n",n_fired_arrows); fprintf(fp,"n_fired_mines: %i\n",n_fired_mines); fprintf(fp,"mine_stepped: %s\n",(mine_stepped ? "true":"false")); fprintf(fp,"stone_hit_counter: %i\n",stone_hit_counter); fprintf(fp,"bible_counter: %i\nbible_subsounter: %i\n",bible_counter,bible_subcounter); fprintf(fp,"world3_room06_counter: %i\n",world3_room06_counter); fprintf(fp,"world10_door_x: %i\nworld10_door_y: %i\n",world10_door_x,world10_door_y); fprintf(fp,"in_door: %i\nto_enter_cut: %i\n",in_door,to_enter_cut); fprintf(fp,"jumping_from_elevator: %s\ncharacter_over_vertical_lever: %s\n",(jumping_from_elevator ? "true":"false"),(character_over_vertical_lever ? "true":"false")); fprintf(fp,"room_demonroom: %s\nold_room_demonroom: %s\n",(room_demonroom ? "true":"false"),(old_room_demonroom ? "true":"false")); fprintf(fp,"fighting_demon: %i\n",fighting_demon); fprintf(fp,"n_arrows: %i\nn_coins: %i\nn_keys: %i\n",n_arrows,n_coins,n_keys); fprintf(fp,"player_energy: %i - %i\n",player_energy[0],player_energy[1]); fprintf(fp,"player_experience: %i - %i\n",player_experience[0],player_experience[1]); fprintf(fp,"player_max: %i - %i\n",player_max[0],player_max[1]); fprintf(fp,"player_denergy: %i - %i\n",player_denergy[0],player_denergy[1]); fprintf(fp,"player_dexperience: %i - %i\n",player_dexperience[0],player_dexperience[1]); for(i=0;i<38;i++) { fprintf(fp,"ITEM %i: %s\n",i,(item[i] ? "true":"false")); } /* for */ for(i=0;i<10;i++) { for(j=0;j<4;j++) { fprintf(fp,"WORLD %i ITEM %i: %s\n",i,j,(world_item[i][j] ? "true":"false")); } /* for */ } /* for */ fprintf(fp,"cross: %s\n",(cross ? "true":"false")); fprintf(fp,"world_key: %s\n",(world_key ? "true":"false")); fprintf(fp,"next_world: %i\n",next_world); for(i=0;i<10;i++) { fprintf(fp,"world %i door open: %s\n",i+1,(world_doors_open[i] ? "true":"false")); } /* for */ fprintf(fp,"in_water: %s\nin_lava: %s\n",(in_water ? "true":"false"),(in_lava ? "true":"false")); fprintf(fp,"water_counter: %i\nlava_counter: %i\n",water_counter,lava_counter); fprintf(fp,"room_size: %i,%i\n",room_size_x,room_size_y); fprintf(fp,"ROOM:\n"); if (room_tiles!=0) { for(i=0;i<room_size_y;i++) { for(j=0;j<room_size_y;j++) { fprintf(fp,"%.3i ",room_tiles[i+j*room_size_x]); } /* for */ fprintf(fp,"\n"); } /* for */ } /* if */ fprintf(fp,"OBJECTS : %i\n",n_objects); for(i=0;i<n_objects;i++) { fprintf(fp,"--------------- OBJECT %i ---------------\n",i); fprintf(fp,"type: %i\n",object[i].type); fprintf(fp,"enemy: %i\n",object[i].enemy); fprintf(fp,"x: %i\n",object[i].x); fprintf(fp,"y: %i\n",object[i].y); fprintf(fp,"base_tile: %i\n",object[i].base_tile); fprintf(fp,"tile: %i\n",object[i].tile); fprintf(fp,"size: %i\n",object[i].size); fprintf(fp,"state: %i\n",object[i].state); fprintf(fp,"state2: %i\n",object[i].state2); fprintf(fp,"state3: %i\n",object[i].state3); fprintf(fp,"last_hit: %i\n",object[i].last_hit); fprintf(fp,"desired_floor: %i\n",object[i].desired_floor); fprintf(fp,"in_ladder: %i\n",object[i].in_ladder); fprintf(fp,"union_x: %i\n",object[i].union_x); fprintf(fp,"union_y: %i\n",object[i].union_y); fprintf(fp,"experience: %i\n",object[i].experience); fprintf(fp,"draw_x: %i\n",object[i].draw_x); fprintf(fp,"draw_y: %i\n",object[i].draw_y); fprintf(fp,"lightning: %i %i %i %i %i %i\n",object[i].lightning[0],object[i].lightning[1],object[i].lightning[2],object[i].lightning[3],object[i].lightning[4],object[i].lightning[5]); } /* for */ fprintf(fp,"TILES:\n"); fprintf(fp,"wall_tile: %i\n",wall_tile); fprintf(fp,"stone_tile: %i\n",stone_tile); fprintf(fp,"ladder_tile: %i\n",ladder_tile); fprintf(fp,"wdoor_tile: %i\n",wdoor_tile); fprintf(fp,"keydoor_tile: %i\n",keydoor_tile); fprintf(fp,"stats_tile: %i\n",stats_tile); fprintf(fp,"coin_tile: %i\n",coin_tile); fprintf(fp,"arrow_tile: %i\n",arrow_tile); fprintf(fp,"key_tile: %i\n",key_tile); fprintf(fp,"door_tile: %i\n",door_tile); fprintf(fp,"character_tile: %i %i %i\n",character_tile[0],character_tile[1],character_tile[2]); fprintf(fp,"character_tile_inv: %i %i %i\n",character_tile_inv[0],character_tile_inv[1],character_tile_inv[2]); fprintf(fp,"pause_tile: %i %i\n",pause_tile[0],pause_tile[1]); fprintf(fp,"colision_tile: %i\n",colision_tile); fprintf(fp,"sword_tile: %i %i\n",sword_tile[0],sword_tile[1]); fprintf(fp,"explosion_tile: %i\n",explosion_tile); /* extern int worm_tile,bat_tile,skeleton_tile,smoke_tile,slime_tile,bouncingball_tile; extern int watermonster_tile,jumpingbush_tile,bluespider_tile,whitefireball_tile; extern int fstone_tile,knight_tile,blob_tile,bambu_tile,fairy_tile; extern int porcupine_tile,black_tile,witch_tile,whitebear_tile,feet_tile,redjumper_tile; extern int livingwall_tile,megabat_tile,lava_tile,piranha_tile,whitestar_tile; extern int items_tile,armas_tile,tomb_tile,wkeydoor_tile,wnokeydoor_tile; extern int lever_tile,spider_tile,knighthead_tile,chicken_tile,rockman_tile,cloud_tile; extern int demonsign_tile,lupa_tile,demonsmoke_tile,demon_tile,bfly_tile; extern int armourarrow_tile,ghost_tile,head_tile,worm2_tile,octopus_tile,hairy_tile; extern int waterdragon_tile,waterbug_tile,bird_tile,stoneman_tile,pacman_tile,reddragon_tile; extern int owl_tile,greenmonkey_tile,plant_tile,transformer_tile,flame_tile,witch2_tile; extern int cyclops_tile,lcloud_tile,glizard_tile,snake_tile,bdemon_tile,gorilla_tile; extern int pamperseball_tile; extern int worm_state_tile[28]; extern int worm_state_tile_i[28]; extern int worm_state_y[28]; */ for(i=0;i<MAX_LEVERS;i++) { fprintf(fp,"LEVER %i:\n",i); fprintf(fp,"lever_room: %i %i\n",lever_room_x[i],lever_room_y[i]); fprintf(fp,"lever_pos: %i %i\n",lever_x[i],lever_y[i]); fprintf(fp,"lever_dr: %i-%i %i-%i\n",lever_drx[i][0],lever_drx[i][1],lever_dry[i][0],lever_dry[i][1]); fprintf(fp,"lever_d: %i-%i %i-%i\n",lever_dx[i][0],lever_dx[i][1],lever_dy[i][0],lever_dy[i][1]); fprintf(fp,"lever_going_to: %i\n",lever_going_to[i]); } /* for */ /* extern SOUNDT S_pause,S_death,S_gameover,S_worldkey,S_entering; extern SOUNDT S_gamestart,S_jump,S_sword,S_swordhit; extern SOUNDT S_item,S_ah,S_ah2,S_powerup,S_enemyhit,S_door; extern SOUNDT S_enemykill,S_ladderdisapear,S_armourhit; extern SOUNDT S_enterwater,S_select,S_firearrow,S_firearrow2; extern SOUNDT S_waterhit,S_fall,S_nocoins,S_stones,S_blob,S_shield; extern SOUNDT S_bell,S_lavahit,S_flapwings,S_rotatedoor,S_demon2ball; extern SOUNDT S_appearing,S_firebreath,S_F1,S_karrow; extern SOUNDT S_jumptree,S_skeletonhit,S_enemybullet,S_headbullet; extern SOUNDT S_dropmine,S_firefire,S_fireball,S_fireball2; extern SOUNDT S_wdoor,S_door2,S_demonhit,S_bearbullet,S_chickenbomb; extern SOUNDT S_colormonster,S_waterstone,S_demon4jump,S_rockman,S_mine; extern SOUNDT S_bible,S_demon1bones,S_demon1jump,S_owl,S_demon7bullet; extern SOUNDT S_demon8bullet,S_flamebullet,S_snakebullet,S_gorilla,S_lizardtongue; extern SOUNDT S_bdemonbullet,S_lightning; */ fprintf(fp,"logic_window 0: %i,%i - %i,%i\n",logic_x[0],logic_y[0],logic_dx[0],logic_dy[0]); fprintf(fp,"logic_window 1: %i,%i - %i,%i\n",logic_x[1],logic_y[1],logic_dx[1],logic_dy[1]); fprintf(fp,"logic_window 2: %i,%i - %i,%i\n",logic_x[2],logic_y[2],logic_dx[2],logic_dy[2]); fprintf(fp,"logic_window 3: %i,%i - %i,%i\n",logic_x[3],logic_y[3],logic_dx[3],logic_dy[3]); fprintf(fp,"physic_window 0: %i,%i - %i,%i\n",physic_x[0],physic_y[0],physic_dx[0],physic_dy[0]); fprintf(fp,"physic_window 1: %i,%i - %i,%i\n",physic_x[1],physic_y[1],physic_dx[1],physic_dy[1]); fprintf(fp,"physic_window 2: %i,%i - %i,%i\n",physic_x[2],physic_y[2],physic_dx[2],physic_dy[2]); fprintf(fp,"physic_window 3: %i,%i - %i,%i\n",physic_x[3],physic_y[3],physic_dx[3],physic_dy[3]); fprintf(fp,"zoom: %i\n",zoom); fprintf(fp,"keyboard:\n"); fprintf(fp,"UP: %i\n",UP_KEY); fprintf(fp,"DOWN: %i\n",DOWN_KEY); fprintf(fp,"LEFT: %i\n",LEFT_KEY); fprintf(fp,"RIGHT: %i\n",RIGHT_KEY); fprintf(fp,"SWORD: %i\n",SWORD_KEY); fprintf(fp,"WEAPON: %i\n",WEAPON_KEY); fprintf(fp,"ITEM: %i\n",ITEM_KEY); fprintf(fp,"PAUSE: %i\n",PAUSE_KEY); fprintf(fp,"Last word: "); for(i=0;i<16;i++) fprintf(fp,"%i ",last_word[i]); fprintf(fp,"\n"); fprintf(fp,"PASSWORD: %s\n",password); fprintf(fp,"password_pos: %i\n",password_pos); { unsigned char *keyboard; SDL_PumpEvents(); keyboard = (unsigned char *)SDL_GetKeyState(NULL); fprintf(fp,"keyboard:\n"); for(i=0;i<SDLK_LAST;i++) { fprintf(fp,"%.3i - %s\n",i,(keyboard[i] ? "true":"false")); } /* for */ } fprintf(fp,"old_keyboard:\n"); for(i=0;i<SDLK_LAST;i++) { fprintf(fp,"%.3i - %s\n",i,(old_keyboard[i] ? "true":"false")); } /* for */ fclose(fp); } /* write_debug_report */
int F1SpiritApp::gameoptions_cycle(KEYBOARDSTATE *k) { if (state_cycle == 0) { menu_fading = -1; menu_fading_ctnt = MENU_CONSTANT; menu_current_menu = 5; /* ... */ } if (menu_fading == 0) {} else { if (menu_fading > 0) menu_fading_ctnt++; else menu_fading_ctnt--; if (menu_fading_ctnt <= 0 && menu_fading == -1) { menu_fading = 0; } if (menu_fading_ctnt >= MENU_CONSTANT && menu_fading == 1) { menu_fading = 0; race_game->race_state = 3; race_game->race_state_timmer = 0; race_desired_action = 0; Sound_unpause_music(); race_game->resumeSFX(); race_game->rain_channel = 0; return APP_STATE_RACE; } if (menu_fading_ctnt >= MENU_CONSTANT && menu_fading == 2) { menu_fading = 0; Sound_unpause_music(); race_game->resumeSFX(); race_game->rain_channel = 0; return APP_STATE_RACE; } if (menu_fading_ctnt >= MENU_CONSTANT && menu_fading == 3) { menu_fading = 0; race_game->race_state = 3; race_game->race_state_timmer = 0; race_desired_action = 1; Sound_unpause_music(); race_game->resumeSFX(); race_game->rain_channel = 0; return APP_STATE_RACE; } } if (state_cycle == 0 || menu_state == MENU_CONSTANT*2 || menu_redefining_key || menu_force_rebuild_menu) { int browsing = 0; if (menu_options[1] != 0) browsing = 1; if (state_cycle != 0) { #ifdef F1SPIRIT_DEBUG_MESSAGES output_debug_message("Executing gameoptions action: %i(%i)\n", menu_option_type[browsing][menu_selected[browsing]], menu_option_parameter[browsing][menu_selected[browsing]]); #endif switch (menu_option_type[browsing][menu_selected[browsing]]) { case 0: /* QUIT RACE: */ menu_fading = 1; menu_fading_ctnt = 0; break; case 1: /* MENU CHANGE: */ menu_current_menu = menu_option_parameter[browsing][menu_selected[browsing]]; if (menu_current_menu == 23) { menu_readme_start_y = 0; menu_readme_move_y = 0; } break; case 7: /* SET A KEY: */ break; case 8: /* SET A JOYSTICK: */ menu_current_menu = menu_option_parameter[browsing][menu_selected[browsing]]; { int i; FILE *fp; PlayerCCar *v; current_player->set_joystick(menu_selected[0] - 7, menu_selected[1] - 1); i = menu_selected[0] - 7; v = race_game->player_cars[i]; if (menu_selected[1] - 1 == -1) { v->up = current_player->get_key(i, 0); v->down = current_player->get_key(i, 1); v->left = current_player->get_key(i, 2); v->right = current_player->get_key(i, 3); v->accelerate = current_player->get_key(i, 4); v->brake = current_player->get_key(i, 5); } else { int j = menu_selected[1] - 1; v->up = k->joystick_0_pos + j * k->joystick_size + 2; v->down = k->joystick_0_pos + j * k->joystick_size + 3; v->left = k->joystick_0_pos + j * k->joystick_size; v->right = k->joystick_0_pos + j * k->joystick_size + 1; v->accelerate = k->joystick_0_pos + j * k->joystick_size + 4; v->brake = k->joystick_0_pos + j * k->joystick_size + 5; } if (v->up < 0) v->up = 0; if (v->up >= k->k_size) v->up = 0; if (v->down < 0) v->down = 0; if (v->down >= k->k_size) v->down = 0; if (v->left < 0) v->left = 0; if (v->left >= k->k_size) v->left = 0; if (v->up < 0) v->up = 0; if (v->right >= k->k_size) v->right = 0; if (v->up < 0) v->up = 0; if (v->accelerate >= k->k_size) v->accelerate = 0; if (v->up < 0) v->up = 0; if (v->brake >= k->k_size) v->brake = 0; v = 0; fp = f1open(player_filename, "wb", USERDATA); if (fp != 0) { current_player->save(fp); fclose(fp); } } break; case 11: /* MENU CHANGE TO SUBMENU: */ menu_current_menu = menu_option_parameter[browsing][menu_selected[browsing]]; break; case 13: { /* CONTINUE RACE: */ menu_selecting_player++; menu_fading = 2; menu_fading_ctnt = 0; } break; case 15: { /* CHANGE MUSIC VOLUME: */ } break; case 16: { /* CHANGE SFX VOLUME: */ } break; case 24: { /* RESTART RACE: */ menu_selecting_player++; menu_fading = 3; menu_fading_ctnt = 0; // also stop music/sfx on restart Mix_HaltChannel(SFX_RAIN); Sound_pause_music(); } break; } } delete []menu_title[0]; menu_title[0] = 0; delete []menu_options[0]; menu_options[0] = 0; delete []menu_title[1]; menu_title[1] = 0; delete []menu_options[1]; menu_options[1] = 0; #ifdef F1SPIRIT_DEBUG_MESSAGES output_debug_message("Generating a new gameoptions menu: %i\n", menu_current_menu); #endif switch (menu_current_menu) { case 5: case 6: case 7: case 8: case 19: case 20: case 22: case 24: { int i, l, pos; char *volumes[5] = {"NONE", "LOW ", "MED.", "HIGH", "MAX."}; l = strlen("PLAYER 000\n") * current_player->get_nplayers() + strlen("CONTINUE\nQUIT\nRESTART\n\nMUSIC VOL: MAX.\nSFX VOL: MAX.\nPLAYER 1\nPLAYER 2\nPLAYER 3\nPLAYER 4\n") + 1; if (arcade) l = strlen("CONTINUE\nQUIT\n\nMUSIC VOL: MAX.\nSFX VOL: MAX.\nPLAYER 1\n")+1; menu_options[0] = new char[l]; pos = 0; { int v1 = 0, v2 = 0; v1 = current_player->get_music_volume() / 32; v2 = current_player->get_sfx_volume() / 32; if (arcade) sprintf(menu_options[0], "CONTINUE\nQUIT\n\nMUSIC VOL: %s\nSFX VOL: %s\n", volumes[v1], volumes[v2]); else sprintf(menu_options[0], "CONTINUE\nQUIT\nRESTART\n\nMUSIC VOL: %s\nSFX VOL: %s\n", volumes[v1], volumes[v2]); } pos = strlen(menu_options[0]); if(arcade) { for (i = 0;i < 1;i++) { sprintf(menu_options[0] + pos, "PLAYER %i\n", i + 1); pos = strlen(menu_options[0]); } } else { for (i = 0;i < current_player->get_nplayers();i++) { sprintf(menu_options[0] + pos, "PLAYER %i\n", i + 1); pos = strlen(menu_options[0]); } } menu_title[0] = new char[strlen("PAUSE") + 1]; strcpy(menu_title[0], "PAUSE"); if (arcade) menu_noptions[0] = 5+1; else menu_noptions[0] = current_player->get_nplayers() + 7; menu_option_type[0][0] = 13; menu_option_type[0][1] = 0; if (arcade) { menu_option_type[0][2] = -1; menu_option_type[0][3] = 15; menu_option_type[0][4] = 16; menu_option_type[0][5] = 11; menu_option_parameter[0][5] = 22; } else { menu_option_type[0][2] = 24; menu_option_type[0][3] = -1; menu_option_type[0][4] = 15; menu_option_type[0][5] = 16; menu_option_type[0][6] = 11; menu_option_parameter[0][6] = 22; for (i = 0;i < current_player->get_nplayers();i++) { menu_option_type[0][i + 7] = 11; menu_option_parameter[0][i + 7] = 22; } } menu_first_option[0] = 0; } if (menu_current_menu == 22) { menu_title[1] = 0; menu_options[1] = new char[strlen("KEYBOARD CFG.\nJOYSTICK/KEYS\nBACK\n") + 1]; strcpy(menu_options[1], "KEYBOARD CFG.\nJOYSTICK/KEYS\nBACK\n"); menu_noptions[1] = 3; menu_option_type[1][0] = 1; menu_option_type[1][1] = 1; menu_option_type[1][2] = 1; menu_option_parameter[1][0] = 7; menu_option_parameter[1][1] = 8; menu_option_parameter[1][2] = 5; menu_first_option[1] = 0; } if (menu_current_menu == 7) { char tmp[256]; menu_title[1] = 0; sprintf(tmp, "GEAR UP: %s\nGEAR DOWN: %s\nLEFT: %s\nRIGHT: %s\nACCEL.: %s\nBRAKE: %s\nBACK\n", SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 0))), SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 1))), SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 2))), SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 3))), SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 4))), SDL_GetKeyName(SDLKey(current_player->get_key(menu_selected[0] - 6, 5)))); // strupr(tmp); menu_options[1] = new char[strlen(tmp) + 1]; strcpy(menu_options[1], tmp); menu_noptions[1] = 7; menu_option_type[1][0] = 7; menu_option_type[1][1] = 7; menu_option_type[1][2] = 7; menu_option_type[1][3] = 7; menu_option_type[1][4] = 7; menu_option_type[1][5] = 7; menu_option_type[1][6] = 1; menu_option_parameter[1][0] = 7; menu_option_parameter[1][1] = 7; menu_option_parameter[1][2] = 7; menu_option_parameter[1][3] = 7; menu_option_parameter[1][4] = 7; menu_option_parameter[1][5] = 7; menu_option_parameter[1][6] = 6; menu_first_option[1] = 0; if (current_player->get_joystick(menu_selected[0]) != -1) { current_player->set_joystick(menu_selected[0], -1); { FILE *fp; fp = f1open(player_filename, "wb", USERDATA); if (fp != 0) { current_player->save(fp); fclose(fp); } } } } if (menu_current_menu == 8) { int nj = SDL_NumJoysticks(); int i, pos; menu_options[1] = new char[nj * strlen("JOYSTICK 000\n") + strlen("KEYBOARD\nBACK\n") + 1]; pos = 0; sprintf(menu_options[1] + pos, "KEYBOARD\n"); pos = strlen(menu_options[1]); for (i = 0;i < nj;i++) { sprintf(menu_options[1] + pos, "JOYSTICK %i\n", i); pos = strlen(menu_options[1]); } sprintf(menu_options[1] + pos, "BACK\n"); menu_noptions[1] = nj + 2; for (i = 0;i < nj + 1;i++) { menu_option_type[1][i] = 8; menu_option_parameter[1][i] = 6; } menu_option_type[1][nj + 1] = 1; menu_option_parameter[1][nj + 1] = 6; menu_first_option[1] = 0; } } if ((menu_options[1] == 0 && menu_prev_nmenus != 2 && !menu_force_rebuild_menu)) { menu_selected[0] = 0; menu_selected_timmer[0] = 0; } if (!menu_redefining_key && !menu_force_rebuild_menu) menu_selected[1] = 0; if (!menu_redefining_key && !menu_force_rebuild_menu) menu_selected_timmer[1] = 0; if (!menu_redefining_key && !menu_force_rebuild_menu) menu_state = 0; menu_force_rebuild_menu = false; } else { if (menu_fading == 0) { if (menu_state < MENU_CONSTANT) menu_state++; if (menu_state == MENU_CONSTANT) { menu_prev_nmenus = 0; if (menu_options[0] != 0) menu_prev_nmenus++; if (menu_options[1] != 0) menu_prev_nmenus++; } if (menu_state > MENU_CONSTANT) menu_state++; } } if (menu_readme_move_y != 0) { menu_readme_start_y += menu_readme_move_y; if (menu_readme_move_y > 0) menu_readme_move_y--; if (menu_readme_move_y < 0) menu_readme_move_y++; if (menu_readme_start_y < 0) menu_readme_start_y = 0; } if (menu_state == MENU_CONSTANT) { int browsing = 0; if (menu_options[1] != 0) browsing = 1; if (!menu_redefining_key) { if ((k->keyboard[SDLK_DOWN] && !k->old_keyboard[SDLK_DOWN]) || (k->keyboard[SDLK_RIGHT] && !k->old_keyboard[SDLK_RIGHT])) { if ((k->keyboard[SDLK_RIGHT] && !k->old_keyboard[SDLK_RIGHT]) && (menu_option_type[browsing][menu_selected[browsing]] == 15 || menu_option_type[browsing][menu_selected[browsing]] == 16)) { if (menu_option_type[browsing][menu_selected[browsing]] == 15) { int v = current_player->get_music_volume(); if (v == 128) current_player->set_music_volume(0); if (v == 96) current_player->set_music_volume(128); if (v == 64) current_player->set_music_volume(96); if (v == 32) current_player->set_music_volume(64); if (v == 0) current_player->set_music_volume(32); } else { int v = current_player->get_sfx_volume(); if (v == 128) current_player->set_sfx_volume(0); if (v == 96) current_player->set_sfx_volume(128); if (v == 64) current_player->set_sfx_volume(96); if (v == 32) current_player->set_sfx_volume(64); if (v == 0) current_player->set_sfx_volume(32); } menu_force_rebuild_menu = true; Sound_play(S_menu_move, 128); { FILE *fp; fp = f1open(player_filename, "wb", USERDATA); if (fp != 0) { current_player->save(fp); fclose(fp); } } } else { menu_selected[browsing]++; if (menu_option_type[browsing][menu_selected[browsing]] == -1) menu_selected[browsing]++; Sound_play(S_menu_move, 128); if (menu_selected[browsing] >= menu_noptions[browsing]) menu_selected[browsing] -= menu_noptions[browsing]; menu_selected_timmer[browsing] = 0; } } if ((k->keyboard[SDLK_UP] && !k->old_keyboard[SDLK_UP]) || (k->keyboard[SDLK_LEFT] && !k->old_keyboard[SDLK_LEFT])) { if ((k->keyboard[SDLK_LEFT] && !k->old_keyboard[SDLK_LEFT]) && (menu_option_type[browsing][menu_selected[browsing]] == 15 || menu_option_type[browsing][menu_selected[browsing]] == 16)) { if (menu_option_type[browsing][menu_selected[browsing]] == 15) { int v = current_player->get_music_volume(); if (v == 128) current_player->set_music_volume(96); if (v == 96) current_player->set_music_volume(64); if (v == 64) current_player->set_music_volume(32); if (v == 32) current_player->set_music_volume(0); if (v == 0) current_player->set_music_volume(128); } else { int v = current_player->get_sfx_volume(); if (v == 128) current_player->set_sfx_volume(96); if (v == 96) current_player->set_sfx_volume(64); if (v == 64) current_player->set_sfx_volume(32); if (v == 32) current_player->set_sfx_volume(0); if (v == 0) current_player->set_sfx_volume(128); } menu_force_rebuild_menu = true; Sound_play(S_menu_move, 128); { FILE *fp; fp = f1open(player_filename, "wb", USERDATA); if (fp != 0) { current_player->save(fp); fclose(fp); } } } else { menu_selected[browsing]--; if (menu_option_type[browsing][menu_selected[browsing]] == -1) menu_selected[browsing]--; Sound_play(S_menu_move, 128); if (menu_selected[browsing] < 0) menu_selected[browsing] += menu_noptions[browsing]; menu_selected_timmer[browsing] = 0; } } if (k->keyboard[SDLK_ESCAPE] && !k->old_keyboard[SDLK_ESCAPE]) { if (menu_current_menu == 5) menu_selected[browsing] = 0; else menu_selected[browsing] = menu_noptions[browsing] - 1; Sound_play(S_menu_select, 128); menu_state++; } if (menu_option_type[browsing][menu_selected[browsing]] != 2 && ((k->keyboard[SDLK_SPACE] && !k->old_keyboard[SDLK_SPACE]) #ifdef PANDORA || (k->keyboard[SDLK_PAGEDOWN] && !k->old_keyboard[SDLK_PAGEDOWN]) #endif )) { if (menu_option_type[browsing][menu_selected[browsing]] != 19 && menu_option_type[browsing][menu_selected[browsing]] != 20) Sound_play(S_menu_select, 128); if (menu_option_type[browsing][menu_selected[browsing]] == 7) { /* redefining a key: */ menu_redefining_key = true; } else { if (menu_option_type[browsing][menu_selected[browsing]] == 15 || menu_option_type[browsing][menu_selected[browsing]] == 16 || menu_option_type[browsing][menu_selected[browsing]] == 19 || menu_option_type[browsing][menu_selected[browsing]] == 20) { if (menu_option_type[browsing][menu_selected[browsing]] == 15) { int v = current_player->get_music_volume(); if (v == 128) current_player->set_music_volume(0); if (v == 96) current_player->set_music_volume(128); if (v == 64) current_player->set_music_volume(96); if (v == 32) current_player->set_music_volume(64); if (v == 0) current_player->set_music_volume(32); } if (menu_option_type[browsing][menu_selected[browsing]] == 16) { int v = current_player->get_sfx_volume(); if (v == 128) current_player->set_sfx_volume(0); if (v == 96) current_player->set_sfx_volume(128); if (v == 64) current_player->set_sfx_volume(96); if (v == 32) current_player->set_sfx_volume(64); if (v == 0) current_player->set_sfx_volume(32); } menu_force_rebuild_menu = true; } else { menu_state++; } } } } else { int i, np; np = menu_selected[0] - 6; PlayerCCar *v = race_game->player_cars[np]; for (i = 0;i < SDLK_LAST;i++) { if (k->keyboard[i] && !k->old_keyboard[i]) { current_player->set_key(np, menu_selected[1], i); if (current_player->get_joystick(np) == -1) { v->up = current_player->get_key(np, 0); v->down = current_player->get_key(np, 1); v->left = current_player->get_key(np, 2); v->right = current_player->get_key(np, 3); v->accelerate = current_player->get_key(np, 4); v->brake = current_player->get_key(np, 5); } if (v->up < 0) v->up = 0; if (v->up >= k->k_size) v->up = 0; if (v->down < 0) v->down = 0; if (v->down >= k->k_size) v->down = 0; if (v->left < 0) v->left = 0; if (v->left >= k->k_size) v->left = 0; if (v->up < 0) v->up = 0; if (v->right >= k->k_size) v->right = 0; if (v->up < 0) v->up = 0; if (v->accelerate >= k->k_size) v->accelerate = 0; if (v->up < 0) v->up = 0; if (v->brake >= k->k_size) v->brake = 0; v = 0; menu_redefining_key = false; menu_force_rebuild_menu = true; Sound_play(S_menu_select, 128); { FILE *fp; fp = f1open(player_filename, "wb", USERDATA); if (fp != 0) { current_player->save(fp); fclose(fp); } } } } } } menu_selected_timmer[0]++; menu_selected_timmer[1]++; return APP_STATE_GAMEOPTIONS; }