mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-05-27 16:12:26 -04:00
Decompile menuOpenDialog and discover data argument for menu handlers
This commit is contained in:
@@ -60,7 +60,7 @@ s32 menudialogRetryMission(u32 operation, struct menudialog *dialog, union handl
|
||||
if (dialog == g_Menus[g_MpPlayerNum].curframe->dialog
|
||||
|| (dialog->nextsibling && dialog->nextsibling == g_Menus[g_MpPlayerNum].curframe->dialog)) {
|
||||
#endif
|
||||
struct menuthing *thing = data->ptrs[0];
|
||||
struct menuthing *thing = data->dialog2.ptr;
|
||||
bool pass = false;
|
||||
|
||||
if (thing->unk03) {
|
||||
@@ -883,14 +883,14 @@ s32 menuhandlerEndscreenCheats(u32 operation, struct menuitem *item, union handl
|
||||
return 0;
|
||||
}
|
||||
|
||||
data->words[1] = colourBlend(data->words[1], g_CheatColour, weight);
|
||||
data->label.colour2 = colourBlend(data->label.colour2, g_CheatColour, weight);
|
||||
|
||||
if (item->param == 3) { // completion cheat name
|
||||
data->words[0] = colourBlend(data->words[0], g_CheatColour, weight);
|
||||
data->label.colour1 = colourBlend(data->label.colour1, g_CheatColour, weight);
|
||||
}
|
||||
|
||||
if (item->param == 5) { // timed cheat name
|
||||
data->words[0] = colourBlend(data->words[0], g_CheatColour, weight);
|
||||
data->label.colour1 = colourBlend(data->label.colour1, g_CheatColour, weight);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
-183
@@ -2796,179 +2796,12 @@ glabel func0f0f2c44
|
||||
/* f0f2cf0: 00000000 */ nop
|
||||
);
|
||||
|
||||
//GLOBAL_ASM(
|
||||
//glabel func0f0f2cf4
|
||||
//.late_rodata
|
||||
//glabel var7f1b2928
|
||||
//.word 0x40c90fdb
|
||||
//.text
|
||||
///* f0f2cf4: 27bdff98 */ addiu $sp,$sp,-104
|
||||
///* f0f2cf8: afbf0024 */ sw $ra,0x24($sp)
|
||||
///* f0f2cfc: afb30020 */ sw $s3,0x20($sp)
|
||||
///* f0f2d00: afb2001c */ sw $s2,0x1c($sp)
|
||||
///* f0f2d04: afb10018 */ sw $s1,0x18($sp)
|
||||
///* f0f2d08: afb00014 */ sw $s0,0x14($sp)
|
||||
///* f0f2d0c: afa60070 */ sw $a2,0x70($sp)
|
||||
///* f0f2d10: aca40000 */ sw $a0,0x0($a1)
|
||||
///* f0f2d14: 3c02800a */ lui $v0,%hi(g_MenuData+0x4)
|
||||
///* f0f2d18: 8c4219c4 */ lw $v0,%lo(g_MenuData+0x4)($v0)
|
||||
///* f0f2d1c: 00a08825 */ or $s1,$a1,$zero
|
||||
///* f0f2d20: 24010002 */ addiu $at,$zero,0x2
|
||||
///* f0f2d24: 1041000d */ beq $v0,$at,.L0f0f2d5c
|
||||
///* f0f2d28: 02202825 */ or $a1,$s1,$zero
|
||||
///* f0f2d2c: 24010003 */ addiu $at,$zero,0x3
|
||||
///* f0f2d30: 10410008 */ beq $v0,$at,.L0f0f2d54
|
||||
///* f0f2d34: 240e0001 */ addiu $t6,$zero,0x1
|
||||
///* f0f2d38: 2401000b */ addiu $at,$zero,0xb
|
||||
///* f0f2d3c: 10410005 */ beq $v0,$at,.L0f0f2d54
|
||||
///* f0f2d40: 2401000d */ addiu $at,$zero,0xd
|
||||
///* f0f2d44: 50410006 */ beql $v0,$at,.L0f0f2d60
|
||||
///* f0f2d48: a220006e */ sb $zero,0x6e($s1)
|
||||
///* f0f2d4c: 10000004 */ b .L0f0f2d60
|
||||
///* f0f2d50: a220006e */ sb $zero,0x6e($s1)
|
||||
//.L0f0f2d54:
|
||||
///* f0f2d54: 10000002 */ b .L0f0f2d60
|
||||
///* f0f2d58: a22e006e */ sb $t6,0x6e($s1)
|
||||
//.L0f0f2d5c:
|
||||
///* f0f2d5c: a220006e */ sb $zero,0x6e($s1)
|
||||
//.L0f0f2d60:
|
||||
///* f0f2d60: 8fa60070 */ lw $a2,0x70($sp)
|
||||
///* f0f2d64: 0fc3c75b */ jal func0f0f1d6c
|
||||
///* f0f2d68: afa40068 */ sw $a0,0x68($sp)
|
||||
///* f0f2d6c: 0fc3e95d */ jal func0f0fa574
|
||||
///* f0f2d70: 02202025 */ or $a0,$s1,$zero
|
||||
///* f0f2d74: 8faf0068 */ lw $t7,0x68($sp)
|
||||
///* f0f2d78: 3c01bf80 */ lui $at,0xbf80
|
||||
///* f0f2d7c: 44812000 */ mtc1 $at,$f4
|
||||
///* f0f2d80: 44803000 */ mtc1 $zero,$f6
|
||||
///* f0f2d84: 91f80000 */ lbu $t8,0x0($t7)
|
||||
///* f0f2d88: e6240040 */ swc1 $f4,0x40($s1)
|
||||
///* f0f2d8c: e6260048 */ swc1 $f6,0x48($s1)
|
||||
///* f0f2d90: 0c004b70 */ jal random
|
||||
///* f0f2d94: a238003c */ sb $t8,0x3c($s1)
|
||||
///* f0f2d98: 44824000 */ mtc1 $v0,$f8
|
||||
///* f0f2d9c: 3c03800a */ lui $v1,%hi(g_Menus)
|
||||
///* f0f2da0: 3c058007 */ lui $a1,%hi(g_MpPlayerNum)
|
||||
///* f0f2da4: 24a51448 */ addiu $a1,$a1,%lo(g_MpPlayerNum)
|
||||
///* f0f2da8: 2463e000 */ addiu $v1,$v1,%lo(g_Menus)
|
||||
///* f0f2dac: 24060e70 */ addiu $a2,$zero,0xe70
|
||||
///* f0f2db0: 04410005 */ bgez $v0,.L0f0f2dc8
|
||||
///* f0f2db4: 468042a0 */ cvt.s.w $f10,$f8
|
||||
///* f0f2db8: 3c014f80 */ lui $at,0x4f80
|
||||
///* f0f2dbc: 44818000 */ mtc1 $at,$f16
|
||||
///* f0f2dc0: 00000000 */ nop
|
||||
///* f0f2dc4: 46105280 */ add.s $f10,$f10,$f16
|
||||
//.L0f0f2dc8:
|
||||
///* f0f2dc8: 3c012f80 */ lui $at,0x2f80
|
||||
///* f0f2dcc: 44819000 */ mtc1 $at,$f18
|
||||
///* f0f2dd0: 3c017f1b */ lui $at,%hi(var7f1b2928)
|
||||
///* f0f2dd4: c4262928 */ lwc1 $f6,%lo(var7f1b2928)($at)
|
||||
///* f0f2dd8: 46125102 */ mul.s $f4,$f10,$f18
|
||||
///* f0f2ddc: 44808000 */ mtc1 $zero,$f16
|
||||
///* f0f2de0: 02202025 */ or $a0,$s1,$zero
|
||||
///* f0f2de4: 46062202 */ mul.s $f8,$f4,$f6
|
||||
///* f0f2de8: e628004c */ swc1 $f8,0x4c($s1)
|
||||
///* f0f2dec: 8cb90000 */ lw $t9,0x0($a1)
|
||||
///* f0f2df0: 03260019 */ multu $t9,$a2
|
||||
///* f0f2df4: 00004012 */ mflo $t0
|
||||
///* f0f2df8: 00684821 */ addu $t1,$v1,$t0
|
||||
///* f0f2dfc: 8d2a04f8 */ lw $t2,0x4f8($t1)
|
||||
///* f0f2e00: a1400060 */ sb $zero,0x60($t2)
|
||||
///* f0f2e04: 8cab0000 */ lw $t3,0x0($a1)
|
||||
///* f0f2e08: 01660019 */ multu $t3,$a2
|
||||
///* f0f2e0c: 00006012 */ mflo $t4
|
||||
///* f0f2e10: 006c6821 */ addu $t5,$v1,$t4
|
||||
///* f0f2e14: 8dae04f8 */ lw $t6,0x4f8($t5)
|
||||
///* f0f2e18: e5d00050 */ swc1 $f16,0x50($t6)
|
||||
///* f0f2e1c: ae200054 */ sw $zero,0x54($s1)
|
||||
///* f0f2e20: ae200058 */ sw $zero,0x58($s1)
|
||||
///* f0f2e24: 0fc3ca23 */ jal func0f0f288c
|
||||
///* f0f2e28: ae20005c */ sw $zero,0x5c($s1)
|
||||
///* f0f2e2c: 8e2f0000 */ lw $t7,0x0($s1)
|
||||
///* f0f2e30: ae220008 */ sw $v0,0x8($s1)
|
||||
///* f0f2e34: 2412001a */ addiu $s2,$zero,0x1a
|
||||
///* f0f2e38: 8df00008 */ lw $s0,0x8($t7)
|
||||
///* f0f2e3c: 27b30044 */ addiu $s3,$sp,0x44
|
||||
///* f0f2e40: 92180000 */ lbu $t8,0x0($s0)
|
||||
///* f0f2e44: 52580014 */ beql $s2,$t8,.L0f0f2e98
|
||||
///* f0f2e48: 8e250008 */ lw $a1,0x8($s1)
|
||||
///* f0f2e4c: 8e020010 */ lw $v0,0x10($s0)
|
||||
//.L0f0f2e50:
|
||||
///* f0f2e50: 5040000d */ beqzl $v0,.L0f0f2e88
|
||||
///* f0f2e54: 92090014 */ lbu $t1,0x14($s0)
|
||||
///* f0f2e58: 8e190004 */ lw $t9,0x4($s0)
|
||||
///* f0f2e5c: 2404000f */ addiu $a0,$zero,0xf
|
||||
///* f0f2e60: 02002825 */ or $a1,$s0,$zero
|
||||
///* f0f2e64: 33280004 */ andi $t0,$t9,0x4
|
||||
///* f0f2e68: 55000007 */ bnezl $t0,.L0f0f2e88
|
||||
///* f0f2e6c: 92090014 */ lbu $t1,0x14($s0)
|
||||
///* f0f2e70: 0040f809 */ jalr $v0
|
||||
///* f0f2e74: 02603025 */ or $a2,$s3,$zero
|
||||
///* f0f2e78: 50400003 */ beqzl $v0,.L0f0f2e88
|
||||
///* f0f2e7c: 92090014 */ lbu $t1,0x14($s0)
|
||||
///* f0f2e80: ae300008 */ sw $s0,0x8($s1)
|
||||
///* f0f2e84: 92090014 */ lbu $t1,0x14($s0)
|
||||
//.L0f0f2e88:
|
||||
///* f0f2e88: 26100014 */ addiu $s0,$s0,0x14
|
||||
///* f0f2e8c: 5649fff0 */ bnel $s2,$t1,.L0f0f2e50
|
||||
///* f0f2e90: 8e020010 */ lw $v0,0x10($s0)
|
||||
///* f0f2e94: 8e250008 */ lw $a1,0x8($s1)
|
||||
//.L0f0f2e98:
|
||||
///* f0f2e98: 50a0000c */ beqzl $a1,.L0f0f2ecc
|
||||
///* f0f2e9c: 8fa70068 */ lw $a3,0x68($sp)
|
||||
///* f0f2ea0: 8ca20010 */ lw $v0,0x10($a1)
|
||||
///* f0f2ea4: 50400009 */ beqzl $v0,.L0f0f2ecc
|
||||
///* f0f2ea8: 8fa70068 */ lw $a3,0x68($sp)
|
||||
///* f0f2eac: 8caa0004 */ lw $t2,0x4($a1)
|
||||
///* f0f2eb0: 2404000d */ addiu $a0,$zero,0xd
|
||||
///* f0f2eb4: 314b0004 */ andi $t3,$t2,0x4
|
||||
///* f0f2eb8: 55600004 */ bnezl $t3,.L0f0f2ecc
|
||||
///* f0f2ebc: 8fa70068 */ lw $a3,0x68($sp)
|
||||
///* f0f2ec0: 0040f809 */ jalr $v0
|
||||
///* f0f2ec4: 27a60034 */ addiu $a2,$sp,0x34
|
||||
///* f0f2ec8: 8fa70068 */ lw $a3,0x68($sp)
|
||||
//.L0f0f2ecc:
|
||||
///* f0f2ecc: ae20000c */ sw $zero,0xc($s1)
|
||||
///* f0f2ed0: ae200064 */ sw $zero,0x64($s1)
|
||||
///* f0f2ed4: ae200068 */ sw $zero,0x68($s1)
|
||||
///* f0f2ed8: 8ce2000c */ lw $v0,0xc($a3)
|
||||
///* f0f2edc: 24040064 */ addiu $a0,$zero,0x64
|
||||
///* f0f2ee0: 00e02825 */ or $a1,$a3,$zero
|
||||
///* f0f2ee4: 50400005 */ beqzl $v0,.L0f0f2efc
|
||||
///* f0f2ee8: 00e02025 */ or $a0,$a3,$zero
|
||||
///* f0f2eec: 0040f809 */ jalr $v0
|
||||
///* f0f2ef0: 27a60058 */ addiu $a2,$sp,0x58
|
||||
///* f0f2ef4: 8fa70068 */ lw $a3,0x68($sp)
|
||||
///* f0f2ef8: 00e02025 */ or $a0,$a3,$zero
|
||||
//.L0f0f2efc:
|
||||
///* f0f2efc: 02202825 */ or $a1,$s1,$zero
|
||||
///* f0f2f00: 0fc3c84d */ jal func0f0f2134
|
||||
///* f0f2f04: 8fa60070 */ lw $a2,0x70($sp)
|
||||
///* f0f2f08: 0fc3dfa6 */ jal func0f0f7e98
|
||||
///* f0f2f0c: 02202025 */ or $a0,$s1,$zero
|
||||
///* f0f2f10: 8e2c002c */ lw $t4,0x2c($s1)
|
||||
///* f0f2f14: 8e2d0030 */ lw $t5,0x30($s1)
|
||||
///* f0f2f18: 8e2e0034 */ lw $t6,0x34($s1)
|
||||
///* f0f2f1c: 8e2f0038 */ lw $t7,0x38($s1)
|
||||
///* f0f2f20: ae2c0014 */ sw $t4,0x14($s1)
|
||||
///* f0f2f24: ae2d0018 */ sw $t5,0x18($s1)
|
||||
///* f0f2f28: ae2e001c */ sw $t6,0x1c($s1)
|
||||
///* f0f2f2c: ae2f0020 */ sw $t7,0x20($s1)
|
||||
///* f0f2f30: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
///* f0f2f34: 8fb30020 */ lw $s3,0x20($sp)
|
||||
///* f0f2f38: 8fb2001c */ lw $s2,0x1c($sp)
|
||||
///* f0f2f3c: 8fb10018 */ lw $s1,0x18($sp)
|
||||
///* f0f2f40: 8fb00014 */ lw $s0,0x14($sp)
|
||||
///* f0f2f44: 03e00008 */ jr $ra
|
||||
///* f0f2f48: 27bd0068 */ addiu $sp,$sp,0x68
|
||||
//);
|
||||
|
||||
void func0f0f2cf4(struct menudialog *dialog, struct menuframe *frame, struct menu *menu)
|
||||
void menuOpenDialog(struct menudialog *dialog, struct menuframe *frame, struct menu *menu)
|
||||
{
|
||||
union handlerdata buffer3;
|
||||
union handlerdata data3;
|
||||
struct menuitem *item;
|
||||
union handlerdata buffer1;
|
||||
union handlerdata buffer2;
|
||||
union handlerdata data1;
|
||||
union handlerdata data2;
|
||||
s32 (*handler)(u32 operation, struct menuitem *item, union handlerdata *data);
|
||||
|
||||
frame->dialog = dialog;
|
||||
@@ -2988,7 +2821,6 @@ void func0f0f2cf4(struct menudialog *dialog, struct menuframe *frame, struct men
|
||||
func0f0f1d6c(dialog, frame, menu);
|
||||
func0f0fa574(frame);
|
||||
|
||||
// d74
|
||||
frame->dialogtype = dialog->type;
|
||||
frame->unk40 = -1;
|
||||
frame->unk48 = 0;
|
||||
@@ -3001,28 +2833,29 @@ void func0f0f2cf4(struct menudialog *dialog, struct menuframe *frame, struct men
|
||||
frame->unk58 = 0;
|
||||
frame->unk5c = 0;
|
||||
|
||||
// e24
|
||||
frame->focuseditem = func0f0f288c(frame);
|
||||
|
||||
// Check if any items should be focused automatically
|
||||
item = frame->dialog->items;
|
||||
|
||||
while (item->type != MENUITEMTYPE_END) {
|
||||
handler = item->ptr.handler;
|
||||
handler = item->handler;
|
||||
|
||||
if (handler
|
||||
&& (item->param1 & 0x04) == 0
|
||||
&& handler(MENUOP_CHECKPREFOCUSED, item, &buffer1)) {
|
||||
&& handler(MENUOP_CHECKPREFOCUSED, item, &data1)) {
|
||||
frame->focuseditem = item;
|
||||
}
|
||||
|
||||
item++;
|
||||
}
|
||||
|
||||
// Run onfocus handler?
|
||||
// Run focus handler
|
||||
if (frame->focuseditem) {
|
||||
handler = frame->focuseditem->ptr.handler;
|
||||
handler = frame->focuseditem->handler;
|
||||
|
||||
if (handler && (frame->focuseditem->param1 & 0x04) == 0) {
|
||||
handler(MENUOP_13, frame->focuseditem, &buffer2);
|
||||
handler(MENUOP_FOCUS, frame->focuseditem, &data2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3031,7 +2864,7 @@ void func0f0f2cf4(struct menudialog *dialog, struct menuframe *frame, struct men
|
||||
frame->unk68 = 0;
|
||||
|
||||
if (dialog->handler) {
|
||||
dialog->handler(MENUOP_OPEN, dialog, &buffer3);
|
||||
dialog->handler(MENUOP_OPEN, dialog, &data3);
|
||||
}
|
||||
|
||||
func0f0f2134(dialog, frame, menu);
|
||||
@@ -3114,7 +2947,7 @@ glabel menuPushDialog
|
||||
/* f0f3054: 01560019 */ multu $t2,$s6
|
||||
/* f0f3058: 00005812 */ mflo $t3
|
||||
/* f0f305c: 028b3021 */ addu $a2,$s4,$t3
|
||||
/* f0f3060: 0fc3cb3d */ jal func0f0f2cf4
|
||||
/* f0f3060: 0fc3cb3d */ jal menuOpenDialog
|
||||
/* f0f3064: 00000000 */ nop
|
||||
/* f0f3068: 0c002f02 */ jal viGetX
|
||||
/* f0f306c: 00000000 */ nop
|
||||
@@ -3180,7 +3013,7 @@ glabel menuPushDialog
|
||||
/* f0f3150: 01d60019 */ multu $t6,$s6
|
||||
/* f0f3154: 00007812 */ mflo $t7
|
||||
/* f0f3158: 028f3021 */ addu $a2,$s4,$t7
|
||||
/* f0f315c: 0fc3cb3d */ jal func0f0f2cf4
|
||||
/* f0f315c: 0fc3cb3d */ jal menuOpenDialog
|
||||
/* f0f3160: 00000000 */ nop
|
||||
/* f0f3164: ae130014 */ sw $s3,0x14($s0)
|
||||
/* f0f3168: 0c002f06 */ jal viGetY
|
||||
@@ -3259,7 +3092,7 @@ glabel menuPushDialog
|
||||
// g_Menus[g_MpPlayerNum].curframe = frame;
|
||||
// frame->unk6d = 0;
|
||||
//
|
||||
// func0f0f2cf4(dialog, frame, &g_Menus[g_MpPlayerNum]);
|
||||
// menuOpenDialog(dialog, frame, &g_Menus[g_MpPlayerNum]);
|
||||
//
|
||||
// frame->unk2c = (viGetX() - frame->unk1c) / 2;
|
||||
// frame->unk30 = (viGetY() - frame->unk20) / 2;
|
||||
@@ -3279,7 +3112,7 @@ glabel menuPushDialog
|
||||
//
|
||||
// frame->unk6d = -1;
|
||||
//
|
||||
// func0f0f2cf4(sibling, frame, &g_Menus[g_MpPlayerNum]);
|
||||
// menuOpenDialog(sibling, frame, &g_Menus[g_MpPlayerNum]);
|
||||
//
|
||||
// frame->unk14 = -320;
|
||||
// frame->unk2c = -320;
|
||||
|
||||
+70
-74
@@ -87,33 +87,29 @@ s32 menuhandlerControlStyleImpl(u32 operation, struct menuitem *item, union hand
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 8;
|
||||
data->custom.value = 8;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = 2;
|
||||
data->custom.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(g_ControlStyleOptions[data->word]);
|
||||
return (s32) langGet(g_ControlStyleOptions[data->custom.value]);
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return (s32) langGet(categories[data->word]);
|
||||
return (s32) langGet(categories[data->custom.value]);
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
if (data->words[0] == 0) {
|
||||
data->words[2] = 0;
|
||||
} else {
|
||||
data->words[2] = 4;
|
||||
}
|
||||
data->custom.groupstartindex = data->custom.value == 0 ? 0 : 4;
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
optionsSetControlMode(mpindex, data->word);
|
||||
optionsSetControlMode(mpindex, data->custom.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetControlMode(mpindex);
|
||||
data->custom.value = optionsGetControlMode(mpindex);
|
||||
g_Menus[g_MpPlayerNum].data.main.mpindex = mpindex;
|
||||
break;
|
||||
case MENUOP_16:
|
||||
if (g_MenuData.root == MENUROOT_MAINMENU) {
|
||||
g_Menus[g_MpPlayerNum].data.main.unke20 = data->word;
|
||||
g_Menus[g_MpPlayerNum].data.main.unke20 = data->custom.value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -145,7 +141,7 @@ s32 menuhandlerReversePitch(u32 operation, struct menuitem *item, union handlerd
|
||||
case MENUOP_GET:
|
||||
return !optionsGetForwardPitch(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetForwardPitch(mpchrnum, data->word == 0);
|
||||
optionsSetForwardPitch(mpchrnum, data->checkbox.value == 0);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -164,16 +160,16 @@ s32 menuhandlerAimControl(u32 operation, struct menuitem *item, union handlerdat
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(options[data->word]);
|
||||
return (s32) langGet(options[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
optionsSetAimControl(playernum, data->word);
|
||||
optionsSetAimControl(playernum, data->dropdown.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetAimControl(playernum);
|
||||
data->dropdown.value = optionsGetAimControl(playernum);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -190,16 +186,16 @@ s32 menuhandlerSoundMode(u32 operation, struct menuitem *item, union handlerdata
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 4;
|
||||
data->dropdown.value = 4;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(options[data->word]);
|
||||
return (s32) langGet(options[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
audioSetSoundMode(data->word);
|
||||
audioSetSoundMode(data->dropdown.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_SoundMode;
|
||||
data->dropdown.value = g_SoundMode;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -215,16 +211,16 @@ s32 menuhandlerScreenSize(u32 operation, struct menuitem *item, union handlerdat
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 3;
|
||||
data->dropdown.value = 3;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(options[data->word]);
|
||||
return (s32) langGet(options[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
optionsSetScreenSize(data->word);
|
||||
optionsSetScreenSize(data->dropdown.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetEffectiveScreenSize();
|
||||
data->dropdown.value = optionsGetEffectiveScreenSize();
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -239,16 +235,16 @@ s32 menuhandlerScreenRatio(u32 operation, struct menuitem *item, union handlerda
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(options[data->word]);
|
||||
return (s32) langGet(options[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
optionsSetScreenRatio(data->word);
|
||||
optionsSetScreenRatio(data->dropdown.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetScreenRatio();
|
||||
data->dropdown.value = optionsGetScreenRatio();
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -263,13 +259,13 @@ s32 menuhandlerScreenSplit(u32 operation, struct menuitem *item, union handlerda
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(options[data->word]);
|
||||
return (s32) langGet(options[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
if (optionsGetScreenSplit() != data->word) {
|
||||
optionsSetScreenSplit(data->word);
|
||||
if (data->dropdown.value != (u32)optionsGetScreenSplit()) {
|
||||
optionsSetScreenSplit(data->dropdown.value);
|
||||
|
||||
g_Vars.unk000458 |= 1;
|
||||
|
||||
@@ -284,7 +280,7 @@ s32 menuhandlerScreenSplit(u32 operation, struct menuitem *item, union handlerda
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetScreenSplit();
|
||||
data->dropdown.value = optionsGetScreenSplit();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -305,7 +301,7 @@ s32 menuhandlerLookAhead(u32 operation, struct menuitem *item, union handlerdata
|
||||
case MENUOP_GET:
|
||||
return optionsGetLookAhead(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetLookAhead(mpchrnum, data->word);
|
||||
optionsSetLookAhead(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -326,7 +322,7 @@ s32 menuhandlerHeadRoll(u32 operation, struct menuitem *item, union handlerdata
|
||||
case MENUOP_GET:
|
||||
return optionsGetHeadRoll(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetHeadRoll(mpchrnum, data->word);
|
||||
optionsSetHeadRoll(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -339,7 +335,7 @@ s32 menuhandlerInGameSubtitles(u32 operation, struct menuitem *item, union handl
|
||||
case MENUOP_GET:
|
||||
return optionsGetInGameSubtitles();
|
||||
case MENUOP_SET:
|
||||
optionsSetInGameSubtitles(data->word);
|
||||
optionsSetInGameSubtitles(data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -352,7 +348,7 @@ s32 menuhandlerCutsceneSubtitles(u32 operation, struct menuitem *item, union han
|
||||
case MENUOP_GET:
|
||||
return optionsGetCutsceneSubtitles();
|
||||
case MENUOP_SET:
|
||||
optionsSetCutsceneSubtitles(data->word);
|
||||
optionsSetCutsceneSubtitles(data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -370,7 +366,7 @@ s32 menuhandlerAlternativeTitle(u32 operation, struct menuitem *item, union hand
|
||||
case MENUOP_GET:
|
||||
return g_AltTitle;
|
||||
case MENUOP_SET:
|
||||
g_AltTitle = data->word;
|
||||
g_AltTitle = data->checkbox.value;
|
||||
g_Vars.unk000458 |= 4;
|
||||
}
|
||||
|
||||
@@ -393,7 +389,7 @@ s32 menuhandlerHiRes(u32 operation, struct menuitem *item, union handlerdata *da
|
||||
case MENUOP_GET:
|
||||
return g_HiResEnabled == true;
|
||||
case MENUOP_SET:
|
||||
optionsSetHiRes(data->word ? 1 : 0);
|
||||
optionsSetHiRes(data->checkbox.value ? 1 : 0);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -414,7 +410,7 @@ s32 menuhandlerAmmoOnScreen(u32 operation, struct menuitem *item, union handlerd
|
||||
case MENUOP_GET:
|
||||
return optionsGetAmmoOnScreen(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetAmmoOnScreen(mpchrnum, data->word);
|
||||
optionsSetAmmoOnScreen(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -440,7 +436,7 @@ s32 menuhandlerShowGunFunction(u32 operation, struct menuitem *item, union handl
|
||||
case MENUOP_GET:
|
||||
return optionsGetShowGunFunction(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetShowGunFunction(mpchrnum, data->word);
|
||||
optionsSetShowGunFunction(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -461,7 +457,7 @@ s32 menuhandlerShowMissionTime(u32 operation, struct menuitem *item, union handl
|
||||
case MENUOP_GET:
|
||||
return optionsGetShowMissionTime(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetShowMissionTime(mpchrnum, data->word);
|
||||
optionsSetShowMissionTime(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -487,7 +483,7 @@ s32 menuhandlerAlwaysShowTarget(u32 operation, struct menuitem *item, union hand
|
||||
case MENUOP_GET:
|
||||
return optionsGetAlwaysShowTarget(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetAlwaysShowTarget(mpchrnum, data->word);
|
||||
optionsSetAlwaysShowTarget(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -513,7 +509,7 @@ s32 menuhandlerShowZoomRange(u32 operation, struct menuitem *item, union handler
|
||||
case MENUOP_GET:
|
||||
return optionsGetShowZoomRange(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetShowZoomRange(mpchrnum, data->word);
|
||||
optionsSetShowZoomRange(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -534,7 +530,7 @@ s32 menuhandlerPaintball(u32 operation, struct menuitem *item, union handlerdata
|
||||
case MENUOP_GET:
|
||||
return optionsGetPaintball(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetPaintball(mpchrnum, data->word);
|
||||
optionsSetPaintball(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -555,7 +551,7 @@ s32 menuhandlerSightOnScreen(u32 operation, struct menuitem *item, union handler
|
||||
case MENUOP_GET:
|
||||
return optionsGetSightOnScreen(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetSightOnScreen(mpchrnum, data->word);
|
||||
optionsSetSightOnScreen(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -576,7 +572,7 @@ s32 menuhandlerAutoAim(u32 operation, struct menuitem *item, union handlerdata *
|
||||
case MENUOP_GET:
|
||||
return optionsGetAutoAim(mpchrnum);
|
||||
case MENUOP_SET:
|
||||
optionsSetAutoAim(mpchrnum, data->word);
|
||||
optionsSetAutoAim(mpchrnum, data->checkbox.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -587,10 +583,10 @@ s32 menuhandlerMusicVolume(u32 operation, struct menuitem *item, union handlerda
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = optionsGetMusicVolume();
|
||||
data->slider.value = optionsGetMusicVolume();
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
optionsSetMusicVolume(data->word);
|
||||
optionsSetMusicVolume(data->slider.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -602,13 +598,13 @@ s32 menuhandlerSfxVolume(u32 operation, struct menuitem *item, union handlerdata
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
if (g_SfxVolume > 0x5000) {
|
||||
data->word = 0x5000;
|
||||
data->slider.value = 0x5000;
|
||||
} else {
|
||||
data->word = g_SfxVolume;
|
||||
data->slider.value = g_SfxVolume;
|
||||
}
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
audioSetSfxVolume(data->word);
|
||||
audioSetSfxVolume(data->slider.value);
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -898,17 +894,17 @@ s32 menuhandlerPdModeSetting(u32 operation, struct menuitem *item, union handler
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = *property;
|
||||
data->slider.value = *property;
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
*property = (u16)data->word;
|
||||
*property = (u16)data->slider.value;
|
||||
break;
|
||||
case MENUOP_GETSLIDERLABEL:
|
||||
fvalue = func0f1036ac(*property, item->param);
|
||||
if (item->param == 0) {
|
||||
fvalue = fvalue * 4 + 1.0f;
|
||||
}
|
||||
sprintf(data->ptrs[1], "%s%s%.00f%%\n", "", "", fvalue * 100.0f);
|
||||
sprintf(data->slider.label, "%s%s%.00f%%\n", "", "", fvalue * 100.0f);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1477,7 +1473,7 @@ s32 menuhandlerCoopRadar(u32 operation, struct menuitem *item, union handlerdata
|
||||
case MENUOP_GET:
|
||||
return g_Vars.coopradaron;
|
||||
case MENUOP_SET:
|
||||
g_Vars.coopradaron = data->word ? 1 : 0;
|
||||
g_Vars.coopradaron = data->checkbox.value ? 1 : 0;
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -1490,7 +1486,7 @@ s32 menuhandlerCoopFriendlyFire(u32 operation, struct menuitem *item, union hand
|
||||
case MENUOP_GET:
|
||||
return g_Vars.coopfriendlyfire;
|
||||
case MENUOP_SET:
|
||||
g_Vars.coopfriendlyfire = data->word ? 1 : 0;
|
||||
g_Vars.coopfriendlyfire = data->checkbox.value ? 1 : 0;
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -1635,7 +1631,7 @@ s32 menuhandlerAntiRadar(u32 operation, struct menuitem *item, union handlerdata
|
||||
case MENUOP_GET:
|
||||
return g_Vars.antiradaron;
|
||||
case MENUOP_SET:
|
||||
g_Vars.antiradaron = data->word ? 1 : 0;
|
||||
g_Vars.antiradaron = data->checkbox.value ? 1 : 0;
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -1648,16 +1644,16 @@ s32 menuhandlerAntiPlayer(u32 operation, struct menuitem *item, union handlerdat
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(labels[data->word]);
|
||||
return (s32) langGet(labels[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
g_Vars.pendingantiplayernum = data->word;
|
||||
g_Vars.pendingantiplayernum = data->dropdown.value;
|
||||
g_Vars.unk000458 |= 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_Vars.pendingantiplayernum;
|
||||
data->dropdown.value = g_Vars.pendingantiplayernum;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2846,7 +2842,7 @@ s32 menudialog0010559c(u32 operation, struct menudialog *dialog, union handlerda
|
||||
case MENUOP_CLOSE:
|
||||
if ((g_Vars.unk000458 & 1) && g_Vars.coopplayernum < 0 && g_Vars.antiplayernum < 0) {
|
||||
if (func0f1094e4(&var800a22c0, 1, 0) == 0) {
|
||||
data->word = 1;
|
||||
data->dialog1.value = 1;
|
||||
}
|
||||
|
||||
g_Vars.unk000458 &= ~0x00000001;
|
||||
@@ -2923,7 +2919,7 @@ s32 menuhandlerLangFilter(u32 operation, struct menuitem *item, union handlerdat
|
||||
case MENUOP_GET:
|
||||
return g_Vars.langfilteron;
|
||||
case MENUOP_SET:
|
||||
g_Vars.langfilteron = data->word;
|
||||
g_Vars.langfilteron = data->checkbox.value;
|
||||
g_Vars.unk000458 |= 1;
|
||||
}
|
||||
|
||||
@@ -4360,38 +4356,38 @@ s32 menuhandlerCinema(u32 operation, struct menuitem *item, union handlerdata *d
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = g_CutsceneIndexes[getNumCompletedMissions()] + 1;
|
||||
data->custom.value = g_CutsceneIndexes[getNumCompletedMissions()] + 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
if (data->word == 0) {
|
||||
if (data->custom.value == 0) {
|
||||
sprintf(g_StringPointer, langGet(L_OPTIONS(448))); // "Play All"
|
||||
return (s32) g_StringPointer;
|
||||
}
|
||||
return (s32) langGet(g_Cutscenes[data->word - 1].name);
|
||||
return (s32) langGet(g_Cutscenes[data->custom.value - 1].name);
|
||||
case MENUOP_SET:
|
||||
if (data->word == 0) {
|
||||
if (data->custom.value == 0) {
|
||||
s32 index = getNumCompletedMissions();
|
||||
g_Vars.unk0004d4 = 0;
|
||||
g_Vars.unk0004d5 = g_CutsceneIndexes[index];
|
||||
menuPopDialog();
|
||||
func0f01bea0();
|
||||
} else {
|
||||
g_Vars.unk0004d4 = data->word - 1;
|
||||
g_Vars.unk0004d4 = data->custom.value - 1;
|
||||
g_Vars.unk0004d5 = 1;
|
||||
menuPopDialog();
|
||||
func0f01bea0();
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = 0xfffff;
|
||||
data->custom.value = 0xfffff;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = ARRAYCOUNT(groups);
|
||||
data->custom.value = ARRAYCOUNT(groups);
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return (s32) langGet(groups[data->word].name);
|
||||
return (s32) langGet(groups[data->custom.value].name);
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
data->words[2] = groups[data->words[0]].first_cutscene_index;
|
||||
data->custom.groupstartindex = groups[data->custom.value].first_cutscene_index;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -2484,7 +2484,7 @@ glabel func0f109ec4
|
||||
|
||||
s32 menuhandlerRenameFile(u32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
char *name = data->ptrs[0];
|
||||
char *name = data->keyboard.string;
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETTEXT:
|
||||
@@ -4343,7 +4343,7 @@ s32 menuhandlerOpenDeleteFile(u32 operation, struct menuitem *item, union handle
|
||||
|
||||
s32 menuhandlerAgentName(u32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
char *name = data->ptrs[0];
|
||||
char *name = data->keyboard.string;
|
||||
|
||||
if (!g_SaveLocations[0]) {
|
||||
return 0;
|
||||
|
||||
+70
-79
@@ -384,15 +384,15 @@ s32 menuhandlerMpControlStyle(u32 operation, struct menuitem *item, union handle
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 4;
|
||||
data->dropdown.value = 4;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(labels[data->word]);
|
||||
return (s32) langGet(labels[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
optionsSetControlMode(g_MpPlayerNum, data->word);
|
||||
optionsSetControlMode(g_MpPlayerNum, data->dropdown.value);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetControlMode(g_MpPlayerNum);
|
||||
data->dropdown.value = optionsGetControlMode(g_MpPlayerNum);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -403,15 +403,15 @@ s32 menuhandlerMpWeaponSlot(u32 operation, struct menuitem *item, union handlerd
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = mpGetNumWeaponOptions();
|
||||
data->dropdown.value = mpGetNumWeaponOptions();
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) mpGetWeaponLabel(data->word);
|
||||
return (s32) mpGetWeaponLabel(data->dropdown.value);
|
||||
case MENUOP_SET:
|
||||
mpSetWeaponSlot(item->param3, data->word);
|
||||
mpSetWeaponSlot(item->param3, data->dropdown.value);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = mpGetWeaponSlot(item->param3);
|
||||
data->dropdown.value = mpGetWeaponSlot(item->param3);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -426,15 +426,15 @@ s32 menuhandlerMpWeaponSetDropdown(u32 operation, struct menuitem *item, union h
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = func0f189058(item->param);
|
||||
data->dropdown.value = func0f189058(item->param);
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) mpGetWeaponSetName(data->word);
|
||||
return (s32) mpGetWeaponSetName(data->dropdown.value);
|
||||
case MENUOP_SET:
|
||||
mpSetWeaponSet(data->word);
|
||||
mpSetWeaponSet(data->dropdown.value);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = mpGetWeaponSet();
|
||||
data->dropdown.value = mpGetWeaponSet();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -461,16 +461,16 @@ s32 menuhandlerMpControlCheckbox(u32 operation, struct menuitem *item, union han
|
||||
val = OPTION_FORWARDPITCH;
|
||||
|
||||
if (item->param3 == val) {
|
||||
if (data->word == 0) {
|
||||
data->word = val;
|
||||
if (data->checkbox.value == 0) {
|
||||
data->checkbox.value = val;
|
||||
} else {
|
||||
data->word = 0;
|
||||
data->checkbox.value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
g_MpPlayers[g_MpPlayerNum].options &= ~item->param3;
|
||||
|
||||
if (data->word) {
|
||||
if (data->checkbox.value) {
|
||||
g_MpPlayers[g_MpPlayerNum].options |= item->param3;
|
||||
}
|
||||
}
|
||||
@@ -484,15 +484,15 @@ s32 menuhandlerMpAimControl(u32 operation, struct menuitem *item, union handlerd
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(labels[data->word]);
|
||||
return (s32) langGet(labels[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
optionsSetAimControl(g_MpPlayerNum, data->word);
|
||||
optionsSetAimControl(g_MpPlayerNum, data->dropdown.value);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = optionsGetAimControl(g_MpPlayerNum);
|
||||
data->dropdown.value = optionsGetAimControl(g_MpPlayerNum);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -509,7 +509,7 @@ s32 menuhandlerMpCheckboxOption(u32 operation, struct menuitem *item, union hand
|
||||
return true;
|
||||
case MENUOP_SET:
|
||||
g_MpSetup.options = g_MpSetup.options & ~item->param3;
|
||||
if (data->word) {
|
||||
if (data->checkbox.value) {
|
||||
g_MpSetup.options = g_MpSetup.options | item->param3;
|
||||
}
|
||||
}
|
||||
@@ -542,7 +542,7 @@ s32 menuhandlerMpDisplayOptionCheckbox(u32 operation, struct menuitem *item, uni
|
||||
case MENUOP_SET:
|
||||
g_MpPlayers[g_MpPlayerNum].base.displayoptions &= ~(u8)item->param3;
|
||||
|
||||
if (data->word) {
|
||||
if (data->checkbox.value) {
|
||||
g_MpPlayers[g_MpPlayerNum].base.displayoptions |= (u8)item->param3;
|
||||
}
|
||||
break;
|
||||
@@ -563,7 +563,7 @@ s32 menuhandlerMpConfirmSaveChr(u32 operation, struct menuitem *item, union hand
|
||||
|
||||
s32 menuhandlerMpPlayerName(u32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
char *name = data->ptrs[0];
|
||||
char *name = data->keyboard.string;
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETTEXT:
|
||||
@@ -997,11 +997,11 @@ s32 menuhandlerMpCharacterBody(u32 operation, struct menuitem *item, union handl
|
||||
switch (operation) {
|
||||
case MENUOP_SET:
|
||||
if (g_MpPlayers[g_MpPlayerNum].base.headnum < mpGetNumHeads()) {
|
||||
if (!data->words[1]) {
|
||||
g_MpPlayers[g_MpPlayerNum].base.headnum = mpBodyGetMpHeadIndex(data->word);
|
||||
if (!data->carousel.unk04) {
|
||||
g_MpPlayers[g_MpPlayerNum].base.headnum = mpBodyGetMpHeadIndex(data->carousel.value);
|
||||
}
|
||||
}
|
||||
g_MpPlayers[g_MpPlayerNum].base.bodynum = data->word;
|
||||
g_MpPlayers[g_MpPlayerNum].base.bodynum = data->carousel.value;
|
||||
func0f17b8f0();
|
||||
break;
|
||||
case MENUOP_CHECKPREFOCUSED:
|
||||
@@ -2685,7 +2685,7 @@ glabel var7f1b814c
|
||||
s32 menuhandlerMpCharacterHead(u32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
g_MpPlayers[g_MpPlayerNum].base.headnum = data->word;
|
||||
g_MpPlayers[g_MpPlayerNum].base.headnum = data->carousel.value;
|
||||
}
|
||||
|
||||
return func0f17b4f8(operation, item, data, g_MpPlayers[g_MpPlayerNum].base.headnum, 1);
|
||||
@@ -3361,16 +3361,16 @@ s32 menuhandlerMpTimeLimitSlider(u32 operation, struct menuitem *item, union han
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = g_MpSetup.timelimit;
|
||||
data->slider.value = g_MpSetup.timelimit;
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
g_MpSetup.timelimit = data->word;
|
||||
g_MpSetup.timelimit = data->slider.value;
|
||||
break;
|
||||
case MENUOP_GETSLIDERLABEL:
|
||||
if (data->word == 60) {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(112))); // "No Limit"
|
||||
if (data->slider.value == 60) {
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(112))); // "No Limit"
|
||||
} else {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(114)), data->word + 1); // "%d Min"
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(114)), data->slider.value + 1); // "%d Min"
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -3380,16 +3380,16 @@ s32 menuhandlerMpScoreLimitSlider(u32 operation, struct menuitem *item, union ha
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = g_MpSetup.scorelimit;
|
||||
data->slider.value = g_MpSetup.scorelimit;
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
g_MpSetup.scorelimit = data->word;
|
||||
g_MpSetup.scorelimit = data->slider.value;
|
||||
break;
|
||||
case MENUOP_GETSLIDERLABEL:
|
||||
if (data->word == 100) {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(112))); // "No Limit"
|
||||
if (data->slider.value == 100) {
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(112))); // "No Limit"
|
||||
} else {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(113)), data->word + 1); // "%d"
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(113)), data->slider.value + 1); // "%d"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3400,16 +3400,16 @@ s32 menuhandlerMpTeamScoreLimitSlider(u32 operation, struct menuitem *item, unio
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = func0f18844c();
|
||||
data->slider.value = func0f18844c();
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
g_MpSetup.teamscorelimit = data->word;
|
||||
g_MpSetup.teamscorelimit = data->slider.value;
|
||||
break;
|
||||
case MENUOP_GETSLIDERLABEL:
|
||||
if (data->word == 400) {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(112))); // "No Limit"
|
||||
if (data->slider.value == 400) {
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(112))); // "No Limit"
|
||||
} else {
|
||||
sprintf(data->ptrs[1], langGet(L_MPMENU(113)), data->word + 1); // "%d"
|
||||
sprintf(data->slider.label, langGet(L_MPMENU(113)), data->slider.value + 1); // "%d"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3863,13 +3863,15 @@ s32 menuhandlerMpSimulantHead(u32 operation, struct menuitem *item, union handle
|
||||
/**
|
||||
* Rare developers forgot to add a break statement to the first case,
|
||||
* and when they noticed a problem their fix was to add an additional
|
||||
* MENUOP_13 check in the next case.
|
||||
* MENUOP_FOCUS check in the next case.
|
||||
*/
|
||||
switch (operation) {
|
||||
case MENUOP_SET:
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.headnum = start + data->word;
|
||||
case MENUOP_13:
|
||||
if (operation == MENUOP_13 && item->param2 == 1 && g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.headnum < start) {
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.headnum = start + data->carousel.value;
|
||||
case MENUOP_FOCUS:
|
||||
if (operation == MENUOP_FOCUS
|
||||
&& item->param2 == 1
|
||||
&& g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.headnum < start) {
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.headnum = start;
|
||||
}
|
||||
break;
|
||||
@@ -3881,7 +3883,7 @@ s32 menuhandlerMpSimulantHead(u32 operation, struct menuitem *item, union handle
|
||||
s32 menuhandlerMpSimulantBody(u32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.bodynum = data->word;
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.bodynum = data->carousel.value;
|
||||
}
|
||||
|
||||
return func0f179da4(operation, item, data,
|
||||
@@ -4641,15 +4643,15 @@ s32 menuhandlerMpTeamSlot(u32 operation, struct menuitem *item, union handlerdat
|
||||
switch (operation) {
|
||||
case MENUOP_SET:
|
||||
mpchr = func0f18c794(item->param);
|
||||
mpchr->team = data->word;
|
||||
mpchr->team = data->dropdown.value;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
mpchr = func0f18c794(item->param);
|
||||
|
||||
if (!mpchr) {
|
||||
data->word = 0xff;
|
||||
data->dropdown.value = 0xff;
|
||||
} else {
|
||||
data->word = mpchr->team;
|
||||
data->dropdown.value = mpchr->team;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -4951,7 +4953,7 @@ s32 menuhandlerMpMultipleTunes(u32 operation, struct menuitem *item, union handl
|
||||
case MENUOP_GET:
|
||||
return mpGetUsingMultipleTunes();
|
||||
case MENUOP_SET:
|
||||
mpSetUsingMultipleTunes(data->word);
|
||||
mpSetUsingMultipleTunes(data->checkbox.value);
|
||||
g_Vars.unk000458 |= 2;
|
||||
}
|
||||
|
||||
@@ -5780,18 +5782,14 @@ s32 menuhandlerMpLock(u32 operation, struct menuitem *item, union handlerdata *d
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
if (mpGetLockType() == MPLOCKTYPE_CHALLENGE) {
|
||||
data->word = 1;
|
||||
} else {
|
||||
data->word = 5;
|
||||
}
|
||||
data->dropdown.value = mpGetLockType() == MPLOCKTYPE_CHALLENGE ? 1 : 5;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
if (mpGetLockType() == MPLOCKTYPE_CHALLENGE) {
|
||||
return (s32) langGet(L_MPMENU(49)); // "Challenge"
|
||||
}
|
||||
if ((u32)data->word <= 3) {
|
||||
return (s32) langGet(labels[data->word]);
|
||||
if (data->dropdown.value <= 3) {
|
||||
return (s32) langGet(labels[data->dropdown.value]);
|
||||
}
|
||||
if (mpGetLockType() == MPLOCKTYPE_PLAYER) {
|
||||
return (s32) g_MpPlayers[mpGetLockPlayerNum()].base.name;
|
||||
@@ -5799,16 +5797,12 @@ s32 menuhandlerMpLock(u32 operation, struct menuitem *item, union handlerdata *d
|
||||
return (s32) mpGetCurrentPlayerName(item);
|
||||
case MENUOP_SET:
|
||||
if (mpGetLockType() != MPLOCKTYPE_CHALLENGE) {
|
||||
mpSetLock(data->word, g_MpPlayerNum);
|
||||
mpSetLock(data->dropdown.value, g_MpPlayerNum);
|
||||
}
|
||||
g_Vars.unk000458 |= 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
if (mpGetLockType() == MPLOCKTYPE_CHALLENGE) {
|
||||
data->word = 0;
|
||||
} else {
|
||||
data->word = mpGetLockType();
|
||||
}
|
||||
data->dropdown.value = mpGetLockType() == MPLOCKTYPE_CHALLENGE ? 0 : mpGetLockType();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -6340,23 +6334,20 @@ s32 menuhandlerMpNumberOfSimulants(u32 operation, struct menuitem *item, union h
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
if (!mpIsChallengeComplete(CHALLENGE_UNK64)) {
|
||||
data->word = 4;
|
||||
} else {
|
||||
data->word = 8;
|
||||
}
|
||||
data->dropdown.value = !mpIsChallengeComplete(CHALLENGE_UNK64) ? 4 : 8;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
sprintf(g_StringPointer, "%d\n", data->word + 1);
|
||||
return (u32)g_StringPointer;
|
||||
sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1);
|
||||
return (s32) g_StringPointer;
|
||||
case MENUOP_SET:
|
||||
g_Vars.mpquickteamnumsims = data->word + 1;
|
||||
g_Vars.mpquickteamnumsims = data->dropdown.value + 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_Vars.mpquickteamnumsims - 1;
|
||||
data->dropdown.value = g_Vars.mpquickteamnumsims - 1;
|
||||
break;
|
||||
case MENUOP_CHECKHIDDEN:
|
||||
if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSANDSIMS && g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSVSSIMS) {
|
||||
if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSANDSIMS
|
||||
&& g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSVSSIMS) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
@@ -6369,16 +6360,16 @@ s32 menuhandlerMpSimulantsPerTeam(u32 operation, struct menuitem *item, union ha
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = 2;
|
||||
data->dropdown.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
sprintf(g_StringPointer, "%d\n", data->word + 1);
|
||||
return (u32)g_StringPointer;
|
||||
sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1);
|
||||
return (s32) g_StringPointer;
|
||||
case MENUOP_SET:
|
||||
g_Vars.unk0004a0 = data->word + 1;
|
||||
g_Vars.unk0004a0 = data->dropdown.value + 1;
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_Vars.unk0004a0 - 1;
|
||||
data->dropdown.value = g_Vars.unk0004a0 - 1;
|
||||
break;
|
||||
case MENUOP_CHECKHIDDEN:
|
||||
if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSIMTEAMS) {
|
||||
|
||||
@@ -1773,13 +1773,13 @@ s32 menuhandlerMpHillTime(u32 operation, struct menuitem *item, union handlerdat
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETSLIDER:
|
||||
data->word = g_Vars.mphilltime;
|
||||
data->slider.value = g_Vars.mphilltime;
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
g_Vars.mphilltime = (u8)data->word;
|
||||
g_Vars.mphilltime = (u8)data->slider.value;
|
||||
break;
|
||||
case MENUOP_GETSLIDERLABEL:
|
||||
sprintf(data->ptrs[1], langGet(L_MPWEAPONS(23)), data->word + 10); // "%ds/Point"
|
||||
sprintf(data->slider.label, langGet(L_MPWEAPONS(23)), data->slider.value + 10); // "%ds/Point"
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+34
-34
@@ -592,20 +592,20 @@ s32 frDifficultyDropdownMenuHandler(u32 operation, struct menuitem *item, union
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = ciGetFiringRangeScore(frGetSlot()) + 1;
|
||||
data->dropdown.value = ciGetFiringRangeScore(frGetSlot()) + 1;
|
||||
|
||||
if ((u32)data->word > 3) {
|
||||
data->word = 3;
|
||||
if (data->dropdown.value > 3) {
|
||||
data->dropdown.value = 3;
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) langGet(names[data->word]);
|
||||
return (s32) langGet(names[data->dropdown.value]);
|
||||
case MENUOP_SET:
|
||||
frSetDifficulty(data->word);
|
||||
frSetDifficulty(data->dropdown.value);
|
||||
menuPushDialog(&menudialog_frtraininginfo2);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = frGetDifficulty();
|
||||
data->dropdown.value = frGetDifficulty();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2658,19 +2658,19 @@ s32 ciOfficeInformationMenuHandler(u32 operation, struct menuitem *item, union h
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = numunlockedchrbios + numunlockedmiscbios;
|
||||
data->custom.value = numunlockedchrbios + numunlockedmiscbios;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
if ((u32)data->words[0] < numunlockedchrbios) {
|
||||
chrbio = ciGetChrBioByBodynum(ciGetChrBioIndexBySlot((u32)data->words[0]));
|
||||
if (data->custom.value < numunlockedchrbios) {
|
||||
chrbio = ciGetChrBioByBodynum(ciGetChrBioIndexBySlot(data->custom.value));
|
||||
return (s32) langGet(chrbio->name);
|
||||
} else {
|
||||
miscbio = ciGetMiscBio(ciGetMiscBioIndexBySlot((u32)data->words[0] - numunlockedchrbios));
|
||||
miscbio = ciGetMiscBio(ciGetMiscBioIndexBySlot(data->custom.value - numunlockedchrbios));
|
||||
return (s32) langGet(miscbio->name);
|
||||
}
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
var800888a0 = data->word;
|
||||
var800888a0 = data->custom.value;
|
||||
if (var800888a0 < numunlockedchrbios) {
|
||||
menuPushDialog(&menudialog_characterprofile);
|
||||
} else {
|
||||
@@ -2678,15 +2678,15 @@ s32 ciOfficeInformationMenuHandler(u32 operation, struct menuitem *item, union h
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = var800888a0;
|
||||
data->custom.value = var800888a0;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = 2;
|
||||
data->custom.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return (s32) langGet(groups[data->word].name);
|
||||
return (s32) langGet(groups[data->custom.value].name);
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
data->words[2] = data->word == 0 ? 0 : numunlockedchrbios;
|
||||
data->custom.groupstartindex = data->custom.value == 0 ? 0 : numunlockedchrbios;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2988,24 +2988,24 @@ s32 dtDeviceListMenuHandler(u32 operation, struct menuitem *item, union handlerd
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = dtGetNumAvailable();
|
||||
data->custom.value = dtGetNumAvailable();
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) weaponGetName(dtGetWeaponByDeviceIndex(dtGetIndexBySlot(data->word)));
|
||||
return (s32) weaponGetName(dtGetWeaponByDeviceIndex(dtGetIndexBySlot(data->custom.value)));
|
||||
case MENUOP_SET:
|
||||
g_DtSlot = data->word;
|
||||
g_DtSlot = data->custom.value;
|
||||
menuPushDialog(&g_DeviceTrainingDetailsMenuDialog);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_DtSlot;
|
||||
data->custom.value = g_DtSlot;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = 0;
|
||||
data->custom.value = 0;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return 0;
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
data->words[2] = 0;
|
||||
data->custom.groupstartindex = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3266,24 +3266,24 @@ s32 htHoloListMenuHandler(u32 operation, struct menuitem *item, union handlerdat
|
||||
{
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = htGetNumUnlocked();
|
||||
data->custom.value = htGetNumUnlocked();
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
return (s32) htGetName(htGetIndexBySlot(data->word));
|
||||
return (s32) htGetName(htGetIndexBySlot(data->custom.value));
|
||||
case MENUOP_SET:
|
||||
var80088bb4 = data->word;
|
||||
var80088bb4 = data->custom.value;
|
||||
menuPushDialog(&g_HoloTrainingDetailsMenuDialog);
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = var80088bb4;
|
||||
data->custom.value = var80088bb4;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = 0;
|
||||
data->custom.value = 0;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return 0;
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
data->words[2] = 0;
|
||||
data->custom.groupstartindex = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3635,13 +3635,13 @@ s32 ciHangarInformationMenuHandler(u32 operation, struct menuitem *item, union h
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
data->word = ciGetNumUnlockedHangarBios();
|
||||
data->custom.value = ciGetNumUnlockedHangarBios();
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
bio = ciGetHangarBio(ciGetHangarBioIndexBySlot(data->word));
|
||||
bio = ciGetHangarBio(ciGetHangarBioIndexBySlot(data->custom.value));
|
||||
return (s32) langGet(bio->name);
|
||||
case MENUOP_SET:
|
||||
g_HangarBioSlot = data->word;
|
||||
g_HangarBioSlot = data->custom.value;
|
||||
bioindex = ciGetHangarBioIndexBySlot(g_HangarBioSlot);
|
||||
|
||||
if (bioindex <= HANGARBIO_SKEDARRUINS) {
|
||||
@@ -3651,15 +3651,15 @@ s32 ciHangarInformationMenuHandler(u32 operation, struct menuitem *item, union h
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
data->word = g_HangarBioSlot;
|
||||
data->custom.value = g_HangarBioSlot;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->word = 2;
|
||||
data->custom.value = 2;
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return (s32) langGet(groups[data->word].name);
|
||||
return (s32) langGet(groups[data->custom.value].name);
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
data->words[2] = data->words[0] == 0 ? 0 : groups[1].offset;
|
||||
data->custom.groupstartindex = data->custom.value == 0 ? 0 : groups[1].offset;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5081,7 +5081,7 @@ bool mpSetLock(s32 locktype, s32 playernum)
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 mpGetLockType(void)
|
||||
s32 mpGetLockType(void)
|
||||
{
|
||||
return g_MpSetupSaveFile.locktype;
|
||||
}
|
||||
|
||||
@@ -1086,7 +1086,7 @@
|
||||
#define MENUOP_GETSLIDER 9
|
||||
#define MENUOP_GETSLIDERLABEL 10
|
||||
#define MENUOP_CHECKDISABLED 12
|
||||
#define MENUOP_13 13
|
||||
#define MENUOP_FOCUS 13
|
||||
#define MENUOP_CHECKPREFOCUSED 15
|
||||
#define MENUOP_16 16
|
||||
#define MENUOP_GETTEXT 17
|
||||
|
||||
@@ -32,7 +32,7 @@ u32 func0f0f2928(void);
|
||||
u32 func0f0f29cc(void);
|
||||
u32 func0f0f2b2c(void);
|
||||
u32 func0f0f2c44(void);
|
||||
void func0f0f2cf4(struct menudialog *dialog, struct menuframe *arg1, struct menu *menu);
|
||||
void menuOpenDialog(struct menudialog *dialog, struct menuframe *arg1, struct menu *menu);
|
||||
void menuPushDialog(struct menudialog *dialog);
|
||||
u32 func0f0f3220(s32 arg0);
|
||||
u32 func0f0f33bc(void);
|
||||
|
||||
@@ -58,7 +58,7 @@ u8 mpGetBodyUnk06(u8 bodynum);
|
||||
s32 mpBodyGetMpHeadIndex(s32 bodynum);
|
||||
u32 mpChooseRandomLockPlayer(void);
|
||||
bool mpSetLock(s32 locktype, s32 playernum);
|
||||
u32 mpGetLockType(void);
|
||||
s32 mpGetLockType(void);
|
||||
u32 mpGetLockPlayerNum(void);
|
||||
bool mpIsPlayerLockedOut(u32 playernum);
|
||||
void mpCalculateLockIfLastWinnerOrLoser(void);
|
||||
|
||||
+53
-9
@@ -3245,10 +3245,59 @@ struct hoverprop {
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct handlerdata_carousel {
|
||||
s32 value;
|
||||
u32 unk04;
|
||||
};
|
||||
|
||||
struct handlerdata_checkbox {
|
||||
u32 value;
|
||||
};
|
||||
|
||||
struct handlerdata_custom {
|
||||
u32 value;
|
||||
u32 unk04;
|
||||
u32 groupstartindex;
|
||||
u32 padding; // just extra padding to make the union 16 bytes
|
||||
};
|
||||
|
||||
struct handlerdata_dropdown {
|
||||
u32 value;
|
||||
};
|
||||
|
||||
struct handlerdata_keyboard {
|
||||
char *string;
|
||||
};
|
||||
|
||||
struct handlerdata_label {
|
||||
u32 colour1;
|
||||
u32 colour2;
|
||||
};
|
||||
|
||||
struct handlerdata_slider {
|
||||
u32 value;
|
||||
char *label;
|
||||
};
|
||||
|
||||
struct handlerdata_dialog1 {
|
||||
u32 value;
|
||||
};
|
||||
|
||||
struct handlerdata_dialog2 {
|
||||
void *ptr;
|
||||
};
|
||||
|
||||
union handlerdata {
|
||||
s32 words[4];
|
||||
s32 word;
|
||||
void *ptrs[4];
|
||||
struct handlerdata_carousel carousel;
|
||||
struct handlerdata_checkbox checkbox;
|
||||
struct handlerdata_custom custom;
|
||||
struct handlerdata_dropdown dropdown;
|
||||
struct handlerdata_keyboard keyboard;
|
||||
struct handlerdata_label label;
|
||||
struct handlerdata_slider slider;
|
||||
|
||||
struct handlerdata_dialog1 dialog1;
|
||||
struct handlerdata_dialog2 dialog2;
|
||||
};
|
||||
|
||||
struct menuitem {
|
||||
@@ -3257,12 +3306,7 @@ struct menuitem {
|
||||
u32 param1;
|
||||
u32 param2;
|
||||
u32 param3;
|
||||
|
||||
union {
|
||||
void *handler;
|
||||
//struct menudialog *dialog;
|
||||
//s32 (*handler)(u32 operation, struct menuitem *item, union handlerdata *data);
|
||||
} ptr;
|
||||
void *handler;
|
||||
};
|
||||
|
||||
struct menudialog {
|
||||
|
||||
Reference in New Issue
Block a user