int DebugKeys (void) { boolean esc; int level; if (Keyboard[sc_B]) // B = border color { CenterWindow(20,3); PrintY+=6; US_Print(" Border color (0-56): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); if (level>=0 && level<=99) { if (level<30) level += 31; else { if (level > 56) level=31; else level -= 26; } bordercol=level*4+3; if (bordercol == VIEWCOLOR) DrawStatusBorder(bordercol); DrawPlayBorder(); return 0; } } return 1; } if (Keyboard[sc_C]) // C = count objects { CountObjects(); return 1; } if (Keyboard[sc_D]) // D = Darkone's FPS counter { CenterWindow (22,2); if (fpscounter) US_PrintCentered ("Darkone's FPS Counter OFF"); else US_PrintCentered ("Darkone's FPS Counter ON"); VW_UpdateScreen(); IN_Ack(); fpscounter ^= 1; /* if (!fpscounter) DrawPlayScreen(); */ return 1; } if (Keyboard[sc_E]) // E = quit level { if (param_tedlevel != -1) Quit (NULL); playstate = ex_completed; } if (Keyboard[sc_F]) // F = facing spot { char str[60]; CenterWindow (14,6); US_Print ("x:"); US_PrintUnsigned (player->x); US_Print (" ("); US_PrintUnsigned (player->x%65536); US_Print (")\ny:"); US_PrintUnsigned (player->y); US_Print (" ("); US_PrintUnsigned (player->y%65536); US_Print (")\nA:"); US_PrintUnsigned (player->angle); US_Print (" X:"); US_PrintUnsigned (player->tilex); US_Print (" Y:"); US_PrintUnsigned (player->tiley); US_Print ("\n1:"); US_PrintUnsigned (tilemap[player->tilex][player->tiley]); sprintf(str," 2:%.8X",(unsigned)(uintptr_t)actorat[player->tilex][player->tiley]); US_Print(str); US_Print ("\nf 1:"); US_PrintUnsigned (player->areanumber); US_Print (" 2:"); US_PrintUnsigned (MAPSPOT(player->tilex,player->tiley,1)); US_Print (" 3:"); if ((unsigned)(uintptr_t)actorat[player->tilex][player->tiley] < 256) US_PrintUnsigned (spotvis[player->tilex][player->tiley]); else US_PrintUnsigned (actorat[player->tilex][player->tiley]->flags); VW_UpdateScreen(); IN_Ack(); return 1; } if (Keyboard[sc_G]) // G = god mode { CenterWindow (12,2); if (godmode == 0) US_PrintCentered ("God mode ON"); else if (godmode == 1) US_PrintCentered ("God (no flash)"); else if (godmode == 2) US_PrintCentered ("God mode OFF"); VW_UpdateScreen(); IN_Ack(); if (godmode != 2) godmode++; else godmode = 0; return 1; } if (Keyboard[sc_H]) // H = hurt self { IN_ClearKeysDown (); TakeDamage (16,NULL); } else if (Keyboard[sc_I]) // I = item cheat { CenterWindow (12,3); US_PrintCentered ("Free items!"); VW_UpdateScreen(); GivePoints (100000); HealSelf (99); if (gamestate.bestweapon<wp_chaingun) GiveWeapon (gamestate.bestweapon+1); gamestate.ammo += 50; if (gamestate.ammo > 99) gamestate.ammo = 99; DrawAmmo (); IN_Ack (); return 1; } else if (Keyboard[sc_K]) // K = give keys { CenterWindow(16,3); PrintY+=6; US_Print(" Give Key (1-4): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,1,0); if (!esc) { level = atoi (str); if (level>0 && level<5) GiveKey(level-1); } return 1; } else if (Keyboard[sc_L]) // L = level ratios { byte x,start,end=LRpack; if (end == 8) // wolf3d { CenterWindow(17,10); start = 0; } else // sod { CenterWindow(17,12); start = 0; end = 10; } again: for(x=start;x<end;x++) { US_PrintUnsigned(x+1); US_Print(" "); US_PrintUnsigned(LevelRatios[x].time/60); US_Print(":"); if (LevelRatios[x].time%60 < 10) US_Print("0"); US_PrintUnsigned(LevelRatios[x].time%60); US_Print(" "); US_PrintUnsigned(LevelRatios[x].kill); US_Print("% "); US_PrintUnsigned(LevelRatios[x].secret); US_Print("% "); US_PrintUnsigned(LevelRatios[x].treasure); US_Print("%\n"); } VW_UpdateScreen(); IN_Ack(); if (end == 10 && gamestate.mapon > 9) { start = 10; end = 20; CenterWindow(17,12); goto again; } return 1; } else if (Keyboard[sc_N]) // N = no clip { noclip^=1; CenterWindow (18,3); if (noclip) US_PrintCentered ("No clipping ON"); else US_PrintCentered ("No clipping OFF"); VW_UpdateScreen(); IN_Ack (); return 1; } else if (Keyboard[sc_O]) // O = basic overhead { BasicOverhead(); return 1; } /*else if(Keyboard[sc_P]) // P = Ripper's picture grabber { PictureGrabber(); return 1; } */ else if (Keyboard[sc_Q]) // Q = fast quit Quit (NULL); else if (Keyboard[sc_S]) // S = slow motion { CenterWindow(30,3); PrintY+=6; US_Print(" Slow Motion steps (default 14): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); if (level>=0 && level<=50) singlestep = level; } return 1; } else if (Keyboard[sc_T]) // T = shape test { ShapeTest (); return 1; } else if (Keyboard[sc_V]) // V = extra VBLs { CenterWindow(30,3); PrintY+=6; US_Print(" Add how many extra VBLs(0-8): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,1,0); if (!esc) { level = atoi (str); if (level>=0 && level<=8) extravbls = level; } return 1; } else if (Keyboard[sc_W]) // W = warp to level { CenterWindow(26,3); PrintY+=6; #ifndef SPEAR US_Print(" Warp to which level(1-10): "); #else US_Print(" Warp to which level(1-21): "); #endif VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); #ifndef SPEAR if (level>0 && level<11) #else if (level>0 && level<22) #endif { gamestate.mapon = level-1; playstate = ex_warped; } } return 1; } else if (Keyboard[sc_X]) // X = item cheat { CenterWindow (12,3); US_PrintCentered ("Extra stuff!"); VW_UpdateScreen(); // DEBUG: put stuff here IN_Ack (); return 1; } #ifdef USE_CLOUDSKY else if(Keyboard[sc_Z]) { char defstr[15]; CenterWindow(34,4); PrintY+=6; US_Print(" Recalculate sky with seek: "); int seekpx = px, seekpy = py; US_PrintUnsigned(curSky->seed); US_Print("\n Use color map (0-"); US_PrintUnsigned(numColorMaps - 1); US_Print("): "); int mappx = px, mappy = py; US_PrintUnsigned(curSky->colorMapIndex); VW_UpdateScreen(); sprintf(defstr, "%u", curSky->seed); esc = !US_LineInput(seekpx, seekpy, str, defstr, true, 10, 0); if(esc) return 0; curSky->seed = (uint32_t) atoi(str); sprintf(defstr, "%u", curSky->colorMapIndex); esc = !US_LineInput(mappx, mappy, str, defstr, true, 10, 0); if(esc) return 0; uint32_t newInd = (uint32_t) atoi(str); if(newInd < (uint32_t) numColorMaps) { curSky->colorMapIndex = newInd; InitSky(); } else { CenterWindow (18,3); US_PrintCentered ("Illegal color map!"); VW_UpdateScreen(); IN_Ack (); } } #endif return 0; }
void Victory (void) { #ifndef SPEARDEMO int32_t sec; int i, min, kr, sr, tr, x; char tempstr[8]; #define RATIOX 6 #define RATIOY 14 #define TIMEX 14 #define TIMEY 8 #ifdef SPEAR CA_CacheGrChunk (BJCOLLAPSE1PIC); CA_CacheGrChunk (BJCOLLAPSE2PIC); CA_CacheGrChunk (BJCOLLAPSE3PIC); CA_CacheGrChunk (BJCOLLAPSE4PIC); VWB_Bar (0, 0, 320, 200, VIEWCOLOR); VWB_DrawPic (124, 44, BJCOLLAPSE1PIC); VW_UpdateScreen (); VW_FadeIn (); VW_WaitVBL (2 * 70); VWB_DrawPic (124, 44, BJCOLLAPSE2PIC); VW_UpdateScreen (); VW_WaitVBL (105); VWB_DrawPic (124, 44, BJCOLLAPSE3PIC); VW_UpdateScreen (); VW_WaitVBL (105); VWB_DrawPic (124, 44, BJCOLLAPSE4PIC); VW_UpdateScreen (); VW_WaitVBL (3 * 70); UNCACHEGRCHUNK (BJCOLLAPSE1PIC); UNCACHEGRCHUNK (BJCOLLAPSE2PIC); UNCACHEGRCHUNK (BJCOLLAPSE3PIC); UNCACHEGRCHUNK (BJCOLLAPSE4PIC); VL_FadeOut (0, 255, 0, 17, 17, 5); #endif ClearSplitVWB (); CacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); CA_CacheGrChunk (STARTFONT); #ifndef SPEAR CA_CacheGrChunk (C_TIMECODEPIC); #endif VWB_Bar (0, 0, 320, screenHeight / STATUSLINES + 1, VIEWCOLOR); if (bordercol != VIEWCOLOR) DrawStatusBorder (VIEWCOLOR); #ifdef JAPAN #ifndef JAPDEMO CA_CacheGrChunk (C_ENDRATIOSPIC); VWB_DrawPic (0, 0, C_ENDRATIOSPIC); UNCACHEGRCHUNK (C_ENDRATIOSPIC); #endif #else Write (18, 2, STR_YOUWIN); Write (TIMEX, TIMEY - 2, STR_TOTALTIME); Write (12, RATIOY - 2, "averages"); #ifdef SPANISH Write (RATIOX + 2, RATIOY, STR_RATKILL); Write (RATIOX + 2, RATIOY + 2, STR_RATSECRET); Write (RATIOX + 2, RATIOY + 4, STR_RATTREASURE); #else Write (RATIOX + 8, RATIOY, STR_RATKILL); Write (RATIOX + 4, RATIOY + 2, STR_RATSECRET); Write (RATIOX, RATIOY + 4, STR_RATTREASURE); #endif #endif #ifndef JAPDEMO VWB_DrawPic (8, 4, L_BJWINSPIC); #endif for (kr = sr = tr = sec = i = 0; i < LRpack; i++) { sec += LevelRatios[i].time; kr += LevelRatios[i].kill; sr += LevelRatios[i].secret; tr += LevelRatios[i].treasure; } #ifndef SPEAR kr /= LRpack; sr /= LRpack; tr /= LRpack; #else kr /= 14; sr /= 14; tr /= 14; #endif min = sec / 60; sec %= 60; if (min > 99) min = sec = 99; i = TIMEX * 8 + 1; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (min / 10)); i += 2 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (min % 10)); i += 2 * 8; Write (i / 8, TIMEY, ":"); i += 1 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (sec / 10)); i += 2 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (sec % 10)); VW_UpdateScreen (); itoa (kr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY, tempstr); itoa (sr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY + 2, tempstr); itoa (tr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY + 4, tempstr); #ifndef SPANISH #ifndef UPLOAD #ifndef SPEAR // // TOTAL TIME VERIFICATION CODE // if (gamestate.difficulty >= gd_medium) { VWB_DrawPic (30 * 8, TIMEY * 8, C_TIMECODEPIC); fontnumber = 0; fontcolor = READHCOLOR; PrintX = 30 * 8 - 3; PrintY = TIMEY * 8 + 8; PrintX += 4; tempstr[0] = (((min / 10) ^ (min % 10)) ^ 0xa) + 'A'; tempstr[1] = (int) ((((sec / 10) ^ (sec % 10)) ^ 0xa) + 'A'); tempstr[2] = (tempstr[0] ^ tempstr[1]) + 'A'; tempstr[3] = 0; US_Print (tempstr); } #endif #endif #endif fontnumber = 1; VW_UpdateScreen (); VW_FadeIn (); IN_Ack (); VW_FadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); #ifndef SPEAR UNCACHEGRCHUNK (C_TIMECODEPIC); #endif UnCacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); #ifndef SPEAR EndText (); #else EndSpear (); #endif #endif // SPEARDEMO }