#include "hiscore.h" void SetupHiScoreTable() { HISCORE temp; hiScoreTable[1].initials[0]='J'; hiScoreTable[1].score=1000000; hiScoreTable[1].initials[1]='L'; hiScoreTable[1].initials[2]='S'; hiScoreTable[1].level=10; temp.initials[0]='A'; temp.initials[1]='*'; temp.initials[2]='*'; temp.score= 500000; temp.level= 9; hiScoreTable[2] = temp; temp.initials[0]='S'; temp.score= 250000; temp.level= 8; hiScoreTable[3] = temp; temp.initials[0]='O'; temp.score= 120000; temp.level= 7; hiScoreTable[4] = temp; temp.initials[0]='N'; temp.score= 60000; temp.level= 6; hiScoreTable[5] = temp; temp.initials[0]='*'; temp.score= 30000; temp.level= 5; hiScoreTable[6] = temp; temp.initials[0]='L'; temp.score= 15000; temp.level= 4; hiScoreTable[7] = temp; temp.initials[0]='E'; temp.score= 12000; temp.level= 3; hiScoreTable[8] = temp; temp.initials[0]='E'; temp.score= 11000; temp.level= 2; hiScoreTable[9] = temp; temp.initials[0]='*'; temp.score= 10000; temp.level= 1; hiScoreTable[10]= temp; } void EnterNewScore(long score) { u_long stop = 0; u_long index; currentInitial = 0; thisLetter = 'A'; currentLetter = 1; for(index=1; index <= 10;index++) { if(score > hiScoreTable[index].score) { break; } } position = index; hiScoreTable[position].initials[0]=' '; hiScoreTable[position].score=score; hiScoreTable[position].initials[1]=' '; hiScoreTable[position].initials[2]=' '; while(!stop) { UpdateHiScoreEntry(score); DrawHiScoreEntry(score); stop = ProcessUserInputHiScoreEntry(); } } // converts long varible to char void UpdateHiScoreEntry(long score) { switch(currentLetter) { case 1: thisLetter = 'A'; break; case 2: thisLetter = 'B'; break; case 3: thisLetter = 'C'; break; case 4: thisLetter = 'D'; break; case 5: thisLetter = 'E'; break; case 6: thisLetter = 'F'; break; case 7: thisLetter = 'G'; break; case 8: thisLetter = 'H'; break; case 9: thisLetter = 'I'; break; case 10:thisLetter = 'J'; break; case 11:thisLetter = 'K'; break; case 12:thisLetter = 'L'; break; case 13:thisLetter = 'M'; break; case 14:thisLetter = 'N'; break; case 15:thisLetter = 'O'; break; case 16:thisLetter = 'P'; break; case 17:thisLetter = 'Q'; break; case 18:thisLetter = 'R'; break; case 19:thisLetter = 'S'; break; case 20:thisLetter = 'T'; break; case 21:thisLetter = 'U'; break; case 22:thisLetter = 'V'; break; case 23:thisLetter = 'W'; break; case 24:thisLetter = 'X'; break; case 25:thisLetter = 'Y'; break; case 26:thisLetter = 'Z'; break; } } void DrawHiScoreEntry(long score) { RenderPrepare(); FntPrint("\n\n\n\t%d\t%d\t",position,score); FntPrint("%c%c%c\t",hiScoreTable[position].initials[0],hiScoreTable[position].initials[1],hiScoreTable[position].initials[2]); FntPrint("%c ",thisLetter); FntFlush(-1); RenderFinish(); } u_long ProcessUserInputHiScoreEntry() { static u_long buttonDown = 0; // create PAD variable to hold states of both joypads u_long PAD = PadRead(); if(!buttonDown) { if(PAD& PADLup) { currentLetter += 1; if(currentLetter > 26) currentLetter =1; buttonDown = 1; } if(PAD& PADLdown) { currentLetter -= 1; if(currentLetter < 1) currentLetter = 26; buttonDown = 1; } if(PAD& PADcross) { buttonDown = 1; hiScoreTable[position].initials[currentInitial]=thisLetter; currentLetter = 1; if(++currentInitial >2) return(1); } } else if(!(PAD& PADLup) && !(PAD& PADLdown) && !(PAD& PADcross)) buttonDown = 0; return(0); } u_long GoodScore(long score) { u_long index; for(index=1; index <= 10;index++) { if(score > hiScoreTable[index].score) { return(1); } } return(0); } u_long UpdateHiScoreDisplay() { static long counter=0; if(++counter > 200) { counter=0; return(0); } return(1); } void DrawHiScoreDisplay() { u_long index; RenderPrepare(); FntPrint("\tPOSITION INITIALS SCORE\n\t-------------------------\n\n"); for(index = 1; index <= 10 ; index++) { FntPrint("\t %d\t",index); FntPrint(" %c%c%c \t",hiScoreTable[index].initials[0],hiScoreTable[index].initials[1],hiScoreTable[index].initials[2]); FntPrint(" %d\n",hiScoreTable[index].score); } FntFlush(-1); RenderFinish(); }