123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- /*
- Copyright (C) 2005, 2010 - Cryptic Sea
- This file is part of Gish.
- Gish is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- void highscoremenu(int levelnum)
- {
- int count,count2;
- int replaysaved;
- float bright;
- replaysaved=0;
- count2=-1;
- if (game.exit==4)
- {
- count2=10;
- while (count2>0 && game.time>highscore[levelnum][count2-1].time)
- count2--;
- if (count2!=10)
- {
- for (count=10;count>=count2;count--)
- {
- highscore[levelnum][count+1].time=highscore[levelnum][count].time;
- memcpy(highscore[levelnum][count+1].name,highscore[levelnum][count].name,32);
- }
- highscore[levelnum][count2].time=game.time;
- memcpy(highscore[levelnum][count2].name,player[playernum].name,32);
- }
- }
-
- resetmenuitems();
- while (!menuitem[0].active && !windowinfo.shutdown)
- {
- glClearColor(0.0f,0.0f,0.0f,0.0f);
- glClear(GL_COLOR_BUFFER_BIT);
- numofmenuitems=0;
- createmenuitem(TXT_BACK,0,0,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_HOTKEY,SCAN_ESC);
- if (game.exit==4)
- if (!replaysaved)
- createmenuitem(TXT_SAVEREPLAY,96,356,16,1.0f,1.0f,1.0f,1.0f);
- if (game.exit!=4)
- {
- count=320;
- createmenuitem(TXT_LEVEL" 1",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,1);
- count+=16;
- createmenuitem(TXT_LEVEL" 2",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,2);
- count+=16;
- createmenuitem(TXT_LEVEL" 3",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,3);
- count+=16;
- createmenuitem(TXT_LEVEL" 4",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,4);
- count+=16;
- createmenuitem(TXT_LEVEL" 5",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,5);
- count+=16;
- createmenuitem(TXT_LEVEL" 6",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,6);
- count+=16;
- createmenuitem(TXT_LEVEL" 7",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,7);
- count+=16;
- createmenuitem(TXT_LEVEL" 8",64,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,8);
- count+=16;
-
- count=320;
- createmenuitem(TXT_LEVEL" 9",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,9);
- count+=16;
- createmenuitem(TXT_LEVEL" 10",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,10);
- count+=16;
- createmenuitem(TXT_LEVEL" 11",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,11);
- count+=16;
- createmenuitem(TXT_LEVEL" 12",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,12);
- count+=16;
- createmenuitem(TXT_LEVEL" 13",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,13);
- count+=16;
- createmenuitem(TXT_LEVEL" 14",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,14);
- count+=16;
- createmenuitem(TXT_LEVEL" 15",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,15);
- count+=16;
- createmenuitem(TXT_LEVEL" 16",240,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,16);
- count+=16;
-
- count=320;
- createmenuitem(TXT_LEVEL" 17",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,17);
- count+=16;
- createmenuitem(TXT_LEVEL" 18",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,18);
- count+=16;
- createmenuitem(TXT_LEVEL" 19",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,19);
- count+=16;
- createmenuitem(TXT_LEVEL" 20",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,20);
- count+=16;
- createmenuitem(TXT_LEVEL" 21",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,21);
- count+=16;
- createmenuitem(TXT_LEVEL" 22",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,22);
- count+=16;
- createmenuitem(TXT_LEVEL" 23",416,count,16,1.0f,1.0f,1.0f,1.0f);
- setmenuitem(MO_SET,&levelnum,23);
- count+=16;
- }
- checksystemmessages();
- checkkeyboard();
- checkmouse();
- checkjoystick();
- checkmenuitems();
- updateogg();
- checkmusic();
- game.songnum=8;
- soundsimulation(view.position,view.orientation);
- setuptextdisplay();
- glColor4f(1.0f,1.0f,1.0f,1.0f);
- displaybackground(580);
- drawtext(TXT_LEVEL_HIGHSCORE,(320|TEXT_CENTER),48,16,1.0f,1.0f,1.0f,1.0f,levelnum);
- drawtext(TXT_NAME,96+64,80,16,1.0f,1.0f,1.0f,1.0f);
- drawtext(TXT_TIME,96+320,80,16,1.0f,1.0f,1.0f,1.0f);
- for (count=0;count<10;count++)
- {
- if (count==count2 || count2==-1)
- bright=1.0f;
- else
- bright=0.5f;
- drawtext("/i.",96,112+count*16,16,bright,bright,bright,1.0f,count+1);
- drawtext(highscore[levelnum][count].name,96+64,112+count*16,16,bright,bright,bright,1.0f);
- if (((highscore[levelnum][count].time/50)%60)>=10)
- drawtext("/i:/i./i",96+320,112+count*16,16,bright,bright,bright,1.0f,(highscore[levelnum][count].time/3000),((highscore[levelnum][count].time/50)%60),((highscore[levelnum][count].time/5)%10));
- else
- drawtext("/i:0/i./i",96+320,112+count*16,16,bright,bright,bright,1.0f,(highscore[levelnum][count].time/3000),((highscore[levelnum][count].time/50)%60),((highscore[levelnum][count].time/5)%10));
- }
- if (game.exit==4)
- {
- drawtext(player[playernum].name,96+64,292,16,1.0f,1.0f,1.0f,1.0f);
- if (((game.time/50)%60)>=10)
- drawtext("/i:/i./i",96+320,292,16,1.0f,1.0f,1.0f,1.0f,(game.time/3000),((game.time/50)%60),((game.time/5)%10));
- else
- drawtext("/i:0/i./i",96+320,292,16,1.0f,1.0f,1.0f,1.0f,(game.time/3000),((game.time/50)%60),((game.time/5)%10));
- }
- if (game.exit==4)
- if (replaysaved)
- createmenuitem(TXT_REPLAYSAVED,96,356,16,1.0f,1.0f,1.0f,1.0f);
- drawmenuitems();
- drawmousecursor(768+font.cursornum,mouse.x,mouse.y,16,1.0f,1.0f,1.0f,1.0f);
- SDL_GL_SwapBuffers();
- if (game.exit==4)
- if (menuitem[1].active)
- {
- savereplay(levelnum);
- replaysaved=1;
- menuitem[1].active=0;
- }
- }
- resetmenuitems();
- }
- void savescores(void)
- {
- int count,count2;
- int version;
- if ((fp=fopen("gish.his","wb"))!=NULL)
- {
- version=2;
- fwrite2(&version,4,1,fp);
- for (count=0;count<32;count++)
- for (count2=0;count2<16;count2++)
- {
- fwrite2(&highscore[count][count2].time,4,1,fp);
- fwrite2(highscore[count][count2].name,1,32,fp);
- }
- fclose(fp);
- }
- }
- void loadscores(void)
- {
- int count,count2;
- int version;
- for (count=0;count<32;count++)
- for (count2=0;count2<16;count2++)
- {
- highscore[count][count2].time=0;
- strcpy(highscore[count][count2].name,"Empty");
- }
- if ((fp=fopen("gish.his","rb"))!=NULL)
- {
- fread2(&version,4,1,fp);
- if (version==2)
- {
- for (count=0;count<32;count++)
- for (count2=0;count2<16;count2++)
- {
- fread2(&highscore[count][count2].time,4,1,fp);
- fread2(highscore[count][count2].name,1,32,fp);
- }
- }
- fclose(fp);
- }
- }
|