More selemnu progress
This commit is contained in:
parent
a66a32f849
commit
0eaf8e36c3
1 changed files with 216 additions and 0 deletions
|
|
@ -9,6 +9,8 @@
|
||||||
#include "game/printfunc.h"
|
#include "game/printfunc.h"
|
||||||
#include "game/minigame_seq.h"
|
#include "game/minigame_seq.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/armem.h"
|
||||||
|
|
||||||
#include "rel_sqrt_consts.h"
|
#include "rel_sqrt_consts.h"
|
||||||
|
|
||||||
|
|
@ -676,7 +678,221 @@ static void SMCharUpdate(omObjData *object)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SMExit(omObjData *object)
|
||||||
|
{
|
||||||
|
s32 mg;
|
||||||
|
if(WipeStatGet()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while(HuARDMACheck());
|
||||||
|
mg = omMgIndexGet(menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay);
|
||||||
|
GWSystem.mg_next = mg;
|
||||||
|
OSReport("mgNo=%d\n", mg);
|
||||||
|
if(menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W10) {
|
||||||
|
_SetFlag(0x1000B);
|
||||||
|
} else if(menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W20) {
|
||||||
|
BoardSaveInit(7);
|
||||||
|
BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0);
|
||||||
|
} else if(menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W21) {
|
||||||
|
BoardSaveInit(8);
|
||||||
|
BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0);
|
||||||
|
} else {
|
||||||
|
_ClearFlag(0x1000B);
|
||||||
|
}
|
||||||
|
if(mg == -1 || !(HuPadBtn[0] & PAD_TRIGGER_Z) || mgInfoTbl[mg].type == 5 || mgInfoTbl[mg].type == 3 || mgInfoTbl[mg].type == 6) {
|
||||||
|
omOvlCallEx(menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay, 1, 0, 0);
|
||||||
|
} else {
|
||||||
|
omOvlCallEx(OVL_INST, 1, 0, 0);
|
||||||
|
}
|
||||||
|
mgSeqOvlPrev = menuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay;
|
||||||
|
smSelectPosExit = smSelectPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *padCfgStrTbl[] = {
|
||||||
|
"PLAYER:%d",
|
||||||
|
" PAD%d:%s",
|
||||||
|
"PADNO:%d",
|
||||||
|
" GRP:%d",
|
||||||
|
" DIF:%s"
|
||||||
|
};
|
||||||
|
|
||||||
|
static s16 playerCfgSelF;
|
||||||
|
static s16 playerCfgPlayerPos;
|
||||||
|
static s16 playerCfgOptionPos;
|
||||||
|
|
||||||
|
#define APPLY_PLAYERCFG_HILITE(option) \
|
||||||
|
do { \
|
||||||
|
s32 color; \
|
||||||
|
if(playerCfgOptionPos == option) { \
|
||||||
|
color = FONT_COLOR_CYAN; \
|
||||||
|
fontcolor = color; \
|
||||||
|
} else { \
|
||||||
|
color = FONT_COLOR_GREEN; \
|
||||||
|
fontcolor = color; \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
static void SMPlayerCfgDraw(void)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
s16 w;
|
||||||
|
char *comStr[] = {
|
||||||
|
"HUMAN",
|
||||||
|
"COM"
|
||||||
|
};
|
||||||
|
char *diffStr[] = {
|
||||||
|
"EASY",
|
||||||
|
"NORMAL",
|
||||||
|
"HARD",
|
||||||
|
"VERYHARD"
|
||||||
|
};
|
||||||
|
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
w = 128;
|
||||||
|
x = ((320-w)/2)+((i%2)*320);
|
||||||
|
y = ((i/2)*240)+48;
|
||||||
|
if(playerCfgSelF == 0 && playerCfgPlayerPos == i) {
|
||||||
|
fontcolor = FONT_COLOR_CYAN;
|
||||||
|
} else {
|
||||||
|
fontcolor = FONT_COLOR_GREEN;
|
||||||
|
}
|
||||||
|
print8(x, y, 2.0f, padCfgStrTbl[0], i);
|
||||||
|
if(playerCfgSelF == 0) {
|
||||||
|
fontcolor = FONT_COLOR_DARK_GREEN;
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]);
|
||||||
|
} else if(playerCfgSelF == 1 && playerCfgPlayerPos == i) {
|
||||||
|
APPLY_PLAYERCFG_HILITE(0);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]);
|
||||||
|
APPLY_PLAYERCFG_HILITE(1);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx);
|
||||||
|
APPLY_PLAYERCFG_HILITE(2);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group);
|
||||||
|
APPLY_PLAYERCFG_HILITE(3);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]);
|
||||||
|
} else {
|
||||||
|
fontcolor = FONT_COLOR_DARK_GREEN;
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group);
|
||||||
|
print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SMPlayerCfgUpdate(omObjData *object);
|
||||||
|
|
||||||
|
static void SMPlayerCfgInit(omObjData *object)
|
||||||
|
{
|
||||||
|
playerCfgSelF = 0;
|
||||||
|
playerCfgPlayerPos = 0;
|
||||||
|
playerCfgOptionPos = 0;
|
||||||
|
object->func = SMPlayerCfgUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SMPlayerCfgUpdate(omObjData *object)
|
||||||
|
{
|
||||||
|
s32 offset;
|
||||||
|
SMPlayerCfgDraw();
|
||||||
|
CalcBtns();
|
||||||
|
if(!playerCfgSelF) {
|
||||||
|
if(btnReleaseCurr & SM_KEY_LEFT) {
|
||||||
|
offset = ((playerCfgPlayerPos & 0x1)-1) & 0x1;
|
||||||
|
playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE)+offset;
|
||||||
|
} else {
|
||||||
|
if(btnReleaseCurr & SM_KEY_RIGHT) {
|
||||||
|
offset = ((playerCfgPlayerPos & 0x1)+1) & 0x1;
|
||||||
|
playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE)+offset;
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_DOWN) {
|
||||||
|
if((playerCfgPlayerPos += 2) >= 4) {
|
||||||
|
playerCfgPlayerPos -= 4;
|
||||||
|
}
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_UP) {
|
||||||
|
if((playerCfgPlayerPos -= 2) < 0) {
|
||||||
|
playerCfgPlayerPos += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(btnDownCurr & PAD_BUTTON_A) {
|
||||||
|
playerCfgSelF = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if((btnDownCurr & PAD_BUTTON_B) || (btnDownCurr & PAD_BUTTON_Y)) {
|
||||||
|
object->func = SMUpdate;
|
||||||
|
}
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_UP) {
|
||||||
|
if(--playerCfgOptionPos < 0) {
|
||||||
|
playerCfgOptionPos = 3;
|
||||||
|
}
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_DOWN) {
|
||||||
|
if(++playerCfgOptionPos > 3) {
|
||||||
|
playerCfgOptionPos = 0;
|
||||||
|
}
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_LEFT) {
|
||||||
|
switch(playerCfgOptionPos) {
|
||||||
|
case 0:
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].iscom ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if(--smPlayerCfg[playerCfgPlayerPos].pad_idx < 0) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].pad_idx = 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if(--smPlayerCfg[playerCfgPlayerPos].group < 0) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].group = 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if(--smPlayerCfg[playerCfgPlayerPos].diff < 0) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].diff = 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
} else if(btnReleaseCurr & SM_KEY_RIGHT) {
|
||||||
|
switch(playerCfgOptionPos) {
|
||||||
|
case 0:
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].iscom ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if(++smPlayerCfg[playerCfgPlayerPos].pad_idx > 3) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].pad_idx = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if(++smPlayerCfg[playerCfgPlayerPos].group > 3) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].group = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if(++smPlayerCfg[playerCfgPlayerPos].diff > 3) {
|
||||||
|
smPlayerCfg[playerCfgPlayerPos].diff = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if((btnDownCurr & PAD_BUTTON_A) || (btnDownCurr & PAD_BUTTON_B)) {
|
||||||
|
playerCfgSelF = 0;
|
||||||
|
} else if(btnDownCurr & PAD_BUTTON_Y) {
|
||||||
|
object->func = SMUpdate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void SMRand8Tick(omObjData *object)
|
static void SMRand8Tick(omObjData *object)
|
||||||
{
|
{
|
||||||
rand8();
|
rand8();
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_450C(void)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue