task MenuScreen(let choicemax) {
let choice = 0;
let trig = false;
PlayMusic(CSD ~ "bgm\STAGE.CREDITS.mp3");
MenuScreenBackground;
while(!trig) {
if(GetKeyState(VK_UP) == KEY_PUSH) {
choice --;
PlaySE(CSD ~ "sfx\MENU.MOVE.wav");
}
if(GetKeyState(VK_DOWN) == KEY_PUSH) {
choice ++;
PlaySE(CSD ~ "sfx\MENU.MOVE.wav");
}
if(choice < 0) {
choice = choicemax;
}
if(choice > choicemax) {
choice = 0;
}
MenuScreenChoice(CSD ~ "img\MENU.CHOICE.1.png", 42, 320, 206, 356, 0);
MenuScreenChoice(CSD ~ "img\MENU.CHOICE.2.png", 42, 356, 209, 392, 1);
Wait(1);
if(GetKeyState(VK_SHOT) == KEY_PUSH) {
PlaySE(CSD ~ "sfx\MENU.SELECT.wav");
trig = true;
alternative(choice)
case(0) {diff = "N";}
case(1) {diff = "L";}
}
}
FadeOutMusic(CSD ~ "bgm\STAGE.CREDITS.mp3", 60);
Wait(60);
Stage1;
InGame = true;
task MenuScreenBackground {
let off = 256/60;
let alpha = 255;
let obj = Obj_Create(OBJ_EFFECT);
Obj_SetPosition(obj, 0, 0);
ObjEffect_SetTexture(obj, CSD ~ "img\MENU.BG.png");
ObjEffect_SetRenderState(obj, ALPHA);
ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
ObjEffect_SetLayer(obj, 8);
ObjEffect_CreateVertex(obj, 4);
ObjEffect_SetVertexUV(obj, 0, 0, 0);
ObjEffect_SetVertexUV(obj, 1, 640, 0);
ObjEffect_SetVertexUV(obj, 2, 640, 480);
ObjEffect_SetVertexUV(obj, 3, 0, 480);
while(!trig) {
ObjEffect_SetVertexXY(obj, 0, 0, 0);
ObjEffect_SetVertexXY(obj, 1, 640, 0);
ObjEffect_SetVertexXY(obj, 2, 640, 480);
ObjEffect_SetVertexXY(obj, 3, 0, 480);
Wait(1);
}
while(alpha > 0) {
ascent(i in 0..4) {
ObjEffect_SetVertexColor(obj, i, alpha, 255, 255, 255);
}
ObjEffect_SetVertexXY(obj, 0, 0, 0);
ObjEffect_SetVertexXY(obj, 1, 640, 0);
ObjEffect_SetVertexXY(obj, 2, 640, 480);
ObjEffect_SetVertexXY(obj, 3, 0, 480);
if(alpha > 0) {
alpha -= off;
}
else {
Obj_Delete(obj);
}
Wait(1);
}
Obj_Delete(obj);
}
task MenuScreenChoice(let g, let x1, let y1, let x2, let y2, let pos) {
let width = x2 - x1;
let height = y2 - y1;
let obj = Obj_Create(OBJ_EFFECT);
Obj_SetPosition(obj, 0, 0);
ObjEffect_SetTexture(obj, g);
ObjEffect_SetRenderState(obj, ALPHA);
ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
ObjEffect_SetLayer(obj, 8);
ObjEffect_CreateVertex(obj, 4);
ObjEffect_SetVertexUV(obj, 0, 0, 0);
ObjEffect_SetVertexUV(obj, 1, width, 0);
ObjEffect_SetVertexUV(obj, 2, width, height);
ObjEffect_SetVertexUV(obj, 3, 0, height);
if(pos != choice) {
ascent(i in 0..4) {
ObjEffect_SetVertexColor(obj, i, 127, 255, 255, 255);
}
}
ObjEffect_SetVertexXY(obj, 0, x1, y1);
ObjEffect_SetVertexXY(obj, 1, x2, y1);
ObjEffect_SetVertexXY(obj, 2, x2, y2);
ObjEffect_SetVertexXY(obj, 3, x1, y2);
Wait(1);
Obj_Delete(obj);
}
}