#include #include "main.h" #include "pad.h" #include "game.h" #include "menu.h" static int curloc; static int levelnum; static int prevpad; void initMenu(void) { curloc = 0; levelnum = 0; prevpad = 0xffffffff; } void resetMenu(void) { curloc = 0; prevpad = 0xffffffff; } int getLevel(void) { return levelnum; } int updateMenu(long padstate) { if (curloc < 2) if ((padstate & PADLdown)&&(!(prevpad & PADLdown))) curloc++; if (curloc > 0) if ((padstate & PADLup)&&(!(prevpad & PADLup))) curloc--; if ((curloc == 1)&&(levelnum < 10)) if (((padstate & PADLright)&&(!(prevpad & PADLright)))|| ((padstate & PADRright)&&(!(prevpad & PADRright)))|| ((padstate & PADR1)&&(!(prevpad & PADR1)))|| ((padstate & PADR2)&&(!(prevpad & PADR2)))) levelnum++; if ((curloc == 1)&&(levelnum > 0)) if (((padstate & PADLleft)&&(!(prevpad & PADLleft)))|| ((padstate & PADRdown)&&(!(prevpad & PADRdown)))|| ((padstate & PADL1)&&(!(prevpad & PADL1)))|| ((padstate & PADL2)&&(!(prevpad & PADL2)))) levelnum--; if (curloc == 2) if (((padstate & PADstart)&&(!(prevpad & PADstart)))|| ((padstate & PADRdown)&&(!(prevpad & PADRdown)))|| ((padstate & PADRright)&&(!(prevpad & PADRright)))) return GAME_EXIT; if (curloc == 0) if (((padstate & PADstart)&&(!(prevpad & PADstart)))|| ((padstate & PADRdown)&&(!(prevpad & PADRdown)))|| ((padstate & PADRright)&&(!(prevpad & PADRright)))) return GAME_START; prevpad = padstate; return GAME_MENU; } void drawMenu(GsOT* ot) { int i; GsBOXF box; for (i=0;i<10;i++) FntPrint("\n"); for (i=0;i<((CHARH-16)/2);i++) FntPrint(" "); FntPrint("TETRIS ENDURANCE\n"); for (i=0;i<10;i++) FntPrint("\n"); for (i=0;i<((CHARH-10)/2);i++) FntPrint(" "); FntPrint("START\n\n"); for (i=0;i<((CHARH-10)/2);i++) FntPrint(" "); FntPrint("LEVEL %d\n\n",levelnum); for (i=0;i<((CHARH-10)/2);i++) FntPrint(" "); FntPrint("EXIT\n\n"); box.attribute = 0; box.w = 130; box.h = 14; box.x = 100; box.y = 164+curloc*16; //164 180 196 box.r = 255; box.g = 0; box.b = 0; GsSortBoxFill(&box,ot,0); }