- a few dialogue box button texts can now be easily changed

- Fix: improved bomb defusal

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5795 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-01-20 05:12:19 +00:00
parent 8c60796982
commit fb3d410dd9
18 changed files with 455 additions and 267 deletions
+193 -181
View File
@@ -78,6 +78,9 @@ extern STR16 pUpdatePanelButtons[];
CHAR16 gzUserDefinedButton1[ 128 ]; CHAR16 gzUserDefinedButton1[ 128 ];
CHAR16 gzUserDefinedButton2[ 128 ]; CHAR16 gzUserDefinedButton2[ 128 ];
// Flugente: made an array for user-defined buttons
CHAR16 gzUserDefinedButton[ NUM_CUSTOM_BUTTONS ][ 128 ];
INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect ) INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect )
{ {
VSURFACE_DESC vs_desc; VSURFACE_DESC vs_desc;
@@ -179,6 +182,18 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
usCursor = CURSOR_LAPTOP_SCREEN; usCursor = CURSOR_LAPTOP_SCREEN;
break; break;
case MSG_BOX_BASIC_MEDIUM_BUTTONS:
ubMercBoxBackground = DIALOG_MERC_POPUP_BACKGROUND;
ubMercBoxBorder = DIALOG_MERC_POPUP_BORDER;
// Add button images
gMsgBox.iButtonImages = LoadButtonImage( "INTERFACE\\PreferencesButtons.sti", -1,0,-1,1,-1 );
ubFontColor = FONT_MCOLOR_WHITE;
ubFontShadowColor = DEFAULT_SHADOW;
usCursor = CURSOR_NORMAL;
break;
default: default:
ubMercBoxBackground = BASIC_MERC_POPUP_BACKGROUND; ubMercBoxBackground = BASIC_MERC_POPUP_BACKGROUND;
ubMercBoxBorder = BASIC_MERC_POPUP_BORDER; ubMercBoxBorder = BASIC_MERC_POPUP_BORDER;
@@ -217,9 +232,11 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
// Flugente: increase the height of the display box under certain conditions // Flugente: increase the height of the display box under certain conditions
UINT16 heightincrease = 0; UINT16 heightincrease = 0;
if ( usFlags & MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS ) if ( usFlags & MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS )
heightincrease = 120;
if ( usFlags & MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS )
heightincrease = 50; heightincrease = 50;
if ( usFlags & MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS ) if ( usFlags & MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS )
heightincrease = 90; heightincrease = 90;
// Init message box // Init message box
@@ -361,30 +378,38 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
ForceButtonUnDirty( gMsgBox.uiButton[i] ); ForceButtonUnDirty( gMsgBox.uiButton[i] );
} }
} }
// Create four numbered buttons
else if ( usFlags & MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS )
{
sButtonX = (usTextBoxWidth - 115)/ 2;
sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 130 - MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP;
for ( INT8 j = 0; j < 4; ++j)
{
sButtonY += 35;
gMsgBox.uiButton[j] = CreateIconAndTextButton( gMsgBox.iButtonImages, gzUserDefinedButton[j], FONT12ARIAL,
ubFontColor, ubFontShadowColor,
ubFontColor, ubFontShadowColor,
TEXT_CJUSTIFIED,
(INT16)(gMsgBox.sX + sButtonX ), (INT16)(gMsgBox.sY + sButtonY ), BUTTON_TOGGLE ,MSYS_PRIORITY_HIGHEST,
DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)NumberedMsgBoxCallback );
MSYS_SetBtnUserData( gMsgBox.uiButton[j], 0, j+1);
SetButtonCursor(gMsgBox.uiButton[j], usCursor);
ForceButtonUnDirty( gMsgBox.uiButton[j] );
}
}
// Create eight numbered buttons // Create eight numbered buttons
else if ( usFlags & MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS ) else if ( usFlags & MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS )
{ {
sBlankSpace = usTextBoxWidth - MSGBOX_SMALL_BUTTON_WIDTH * 4 - MSGBOX_SMALL_BUTTON_X_SEP * 3; sBlankSpace = usTextBoxWidth - MSGBOX_SMALL_BUTTON_WIDTH * 4 - MSGBOX_SMALL_BUTTON_X_SEP * 3;
sButtonX = sBlankSpace / 2; sButtonX = sBlankSpace / 2;
sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10 - heightincrease; sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10 - heightincrease;
STR16 eightstr[8] = {
L"1",
L"2",
L"3",
L"4",
L"A",
L"B",
L"C",
L"D",
};
sButtonY -= MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP; sButtonY -= MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP;
for ( INT8 i = 0; i < 2; ++i) for ( INT8 i = 0; i < 2; ++i)
{ {
// new row // new row
sButtonY += MSGBOX_SMALL_BUTTON_WIDTH;// + MSGBOX_SMALL_BUTTON_X_SEP; sButtonY += MSGBOX_SMALL_BUTTON_WIDTH;
// begin from the front // begin from the front
sButtonX = sBlankSpace / 2 - MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP; sButtonX = sBlankSpace / 2 - MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP;
@@ -394,7 +419,7 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
INT8 k = 4*i + j; INT8 k = 4*i + j;
sButtonX += MSGBOX_SMALL_BUTTON_WIDTH + MSGBOX_SMALL_BUTTON_X_SEP; sButtonX += MSGBOX_SMALL_BUTTON_WIDTH + MSGBOX_SMALL_BUTTON_X_SEP;
gMsgBox.uiButton[k] = CreateIconAndTextButton( gMsgBox.iButtonImages, eightstr[k], FONT12ARIAL, gMsgBox.uiButton[k] = CreateIconAndTextButton( gMsgBox.iButtonImages, gzUserDefinedButton[k], FONT12ARIAL,
ubFontColor, ubFontShadowColor, ubFontColor, ubFontShadowColor,
ubFontColor, ubFontShadowColor, ubFontColor, ubFontShadowColor,
TEXT_CJUSTIFIED, TEXT_CJUSTIFIED,
@@ -402,40 +427,16 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)NumberedMsgBoxCallback ); DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)NumberedMsgBoxCallback );
MSYS_SetBtnUserData( gMsgBox.uiButton[k], 0, k+1); MSYS_SetBtnUserData( gMsgBox.uiButton[k], 0, k+1);
SetButtonCursor(gMsgBox.uiButton[k], usCursor); SetButtonCursor(gMsgBox.uiButton[k], usCursor);
ForceButtonUnDirty( gMsgBox.uiButton[k] );
} }
} }
for ( INT8 i = 7; i >= 0; --i)
{
ForceButtonUnDirty( gMsgBox.uiButton[i] );
}
} }
// Create sixteen numbered buttons // Create sixteen numbered buttons
else if ( usFlags & MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS ) else if ( usFlags & MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS )
{ {
sBlankSpace = usTextBoxWidth - MSGBOX_SMALL_BUTTON_WIDTH * 4 - MSGBOX_SMALL_BUTTON_X_SEP * 3; sBlankSpace = usTextBoxWidth - MSGBOX_SMALL_BUTTON_WIDTH * 4 - MSGBOX_SMALL_BUTTON_X_SEP * 3;
sButtonX = sBlankSpace / 2; sButtonX = sBlankSpace / 2;
sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10 - heightincrease - 6; sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10 - heightincrease - 6;
STR16 sixteenstr[16] = {
L"1-A",
L"1-B",
L"1-C",
L"1-D",
L"2-A",
L"2-B",
L"2-C",
L"2-D",
L"3-A",
L"3-B",
L"3-C",
L"3-D",
L"4-A",
L"4-B",
L"4-C",
L"4-D",
};
sButtonY -= MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP; sButtonY -= MSGBOX_SMALL_BUTTON_WIDTH - MSGBOX_SMALL_BUTTON_X_SEP;
for ( INT8 i = 0; i < 4; ++i) for ( INT8 i = 0; i < 4; ++i)
@@ -451,7 +452,7 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
INT8 k = 4*i + j; INT8 k = 4*i + j;
sButtonX += MSGBOX_SMALL_BUTTON_WIDTH + MSGBOX_SMALL_BUTTON_X_SEP; sButtonX += MSGBOX_SMALL_BUTTON_WIDTH + MSGBOX_SMALL_BUTTON_X_SEP;
gMsgBox.uiButton[k] = CreateIconAndTextButton( gMsgBox.iButtonImages, sixteenstr[k], FONT12ARIAL, gMsgBox.uiButton[k] = CreateIconAndTextButton( gMsgBox.iButtonImages, gzUserDefinedButton[k], FONT12ARIAL,
ubFontColor, ubFontShadowColor, ubFontColor, ubFontShadowColor,
ubFontColor, ubFontShadowColor, ubFontColor, ubFontShadowColor,
TEXT_CJUSTIFIED, TEXT_CJUSTIFIED,
@@ -459,13 +460,9 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)NumberedMsgBoxCallback ); DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)NumberedMsgBoxCallback );
MSYS_SetBtnUserData( gMsgBox.uiButton[k], 0, k+1); MSYS_SetBtnUserData( gMsgBox.uiButton[k], 0, k+1);
SetButtonCursor(gMsgBox.uiButton[k], usCursor); SetButtonCursor(gMsgBox.uiButton[k], usCursor);
ForceButtonUnDirty( gMsgBox.uiButton[k] );
} }
} }
for ( INT8 i = 15; i >= 0; --i)
{
ForceButtonUnDirty( gMsgBox.uiButton[i] );
}
} }
else if (usFlags & MSG_BOX_FLAG_INPUTBOX) else if (usFlags & MSG_BOX_FLAG_INPUTBOX)
{ {
@@ -703,7 +700,7 @@ INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UIN
} }
if ( usFlags & MSG_BOX_FLAG_GENERIC ) if ( usFlags & MSG_BOX_FLAG_GENERIC_TWO_BUTTONS )
{ {
sButtonX = ( usTextBoxWidth - ( MSGBOX_BUTTON_WIDTH + MSGBOX_BUTTON_WIDTH + MSGBOX_BUTTON_X_SEP ) ) / 2; sButtonX = ( usTextBoxWidth - ( MSGBOX_BUTTON_WIDTH + MSGBOX_BUTTON_WIDTH + MSGBOX_BUTTON_X_SEP ) ) / 2;
sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10; sButtonY = usTextBoxHeight - MSGBOX_BUTTON_HEIGHT - 10;
@@ -971,14 +968,21 @@ UINT32 ExitMsgBox( INT8 ubExitCode )
RemoveButton( gMsgBox.uiButton[i] ); RemoveButton( gMsgBox.uiButton[i] );
} }
} }
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS ) else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS )
{
for (UINT8 i = 0; i < 4; ++i)
{
RemoveButton( gMsgBox.uiButton[i] );
}
}
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS )
{ {
for (UINT8 i = 0; i < 8; ++i) for (UINT8 i = 0; i < 8; ++i)
{ {
RemoveButton( gMsgBox.uiButton[i] ); RemoveButton( gMsgBox.uiButton[i] );
} }
} }
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS ) else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS )
{ {
for (UINT8 i = 0; i < 16; ++i) for (UINT8 i = 0; i < 16; ++i)
{ {
@@ -1024,7 +1028,7 @@ UINT32 ExitMsgBox( INT8 ubExitCode )
RemoveButton( gMsgBox.uiOKButton ); RemoveButton( gMsgBox.uiOKButton );
} }
if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC ) if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_TWO_BUTTONS )
{ {
RemoveButton( gMsgBox.uiYESButton ); RemoveButton( gMsgBox.uiYESButton );
RemoveButton( gMsgBox.uiNOButton ); RemoveButton( gMsgBox.uiNOButton );
@@ -1211,14 +1215,21 @@ UINT32 MessageBoxScreenHandle( )
MarkAButtonDirty( gMsgBox.uiButton[i] ); MarkAButtonDirty( gMsgBox.uiButton[i] );
} }
} }
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS ) else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS )
{
for (UINT8 i = 0; i < 4; ++i)
{
MarkAButtonDirty( gMsgBox.uiButton[i] );
}
}
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS )
{ {
for (UINT8 i = 0; i < 8; ++i) for (UINT8 i = 0; i < 8; ++i)
{ {
MarkAButtonDirty( gMsgBox.uiButton[i] ); MarkAButtonDirty( gMsgBox.uiButton[i] );
} }
} }
else if ( gMsgBox.usFlags & MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS ) else if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS )
{ {
for (UINT8 i = 0; i < 16; ++i) for (UINT8 i = 0; i < 16; ++i)
{ {
@@ -1262,7 +1273,7 @@ UINT32 MessageBoxScreenHandle( )
MarkAButtonDirty( gMsgBox.uiOKButton ); MarkAButtonDirty( gMsgBox.uiOKButton );
} }
if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC ) if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_TWO_BUTTONS )
{ {
MarkAButtonDirty( gMsgBox.uiYESButton ); MarkAButtonDirty( gMsgBox.uiYESButton );
MarkAButtonDirty( gMsgBox.uiNOButton ); MarkAButtonDirty( gMsgBox.uiNOButton );
@@ -1309,142 +1320,143 @@ UINT32 MessageBoxScreenHandle( )
while (DequeueSpecificEvent(&InputEvent, KEY_DOWN|KEY_UP|KEY_REPEAT)) while (DequeueSpecificEvent(&InputEvent, KEY_DOWN|KEY_UP|KEY_REPEAT))
{ {
if( !HandleTextInput( &InputEvent ) && InputEvent.usEvent == KEY_DOWN ) if( !HandleTextInput( &InputEvent ) && InputEvent.usEvent == KEY_DOWN )
{
if( ( InputEvent.usParam == ESC ) || ( InputEvent.usParam == 'n') )
{ {
if( ( InputEvent.usParam == ESC ) || ( InputEvent.usParam == 'n') ) if ( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO )
{ {
if ( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_NO;
}
//OJW - 20090208 - Input Box
else if( gMsgBox.usFlags & MSG_BOX_FLAG_INPUTBOX )
{
// Exit messagebox // Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_NO; gMsgBox.bHandled = MSG_BOX_RETURN_NO;
memset(gszMsgBoxInputString,0,sizeof(CHAR16)*255);
}
} }
//OJW - 20090208 - Input Box
if( InputEvent.usParam == ENTER ) else if( gMsgBox.usFlags & MSG_BOX_FLAG_INPUTBOX )
{ {
if ( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO ) // Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_NO;
memset(gszMsgBoxInputString,0,sizeof(CHAR16)*255);
}
}
if( InputEvent.usParam == ENTER )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_YES;
}
else if( gMsgBox.usFlags & MSG_BOX_FLAG_OK )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
else if( gMsgBox.usFlags & MSG_BOX_FLAG_CONTINUESTOP )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
//OJW - 20090208 - Input Box
else if( gMsgBox.usFlags & MSG_BOX_FLAG_INPUTBOX )
{
// retrieve the string from the text box
Get16BitStringFromField( 0, gszMsgBoxInputString, 255 ); // these indexes are based on the order created
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
}
if( InputEvent.usParam == 'o' )
{
if( gMsgBox.usFlags & MSG_BOX_FLAG_OK )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
}
if( InputEvent.usParam == 'y' )
{
if( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_YES;
}
}
// box with four buttons
UINT32 four[8] = {
'1',
'2',
'3',
'4',
};
for ( INT8 i = 0; i < 4; ++i )
{
if( InputEvent.usParam == four[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS )
{ {
// Exit messagebox // Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_YES; gMsgBox.bHandled = 1;
}
else if( gMsgBox.usFlags & MSG_BOX_FLAG_OK )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
else if( gMsgBox.usFlags & MSG_BOX_FLAG_CONTINUESTOP )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
//OJW - 20090208 - Input Box
else if( gMsgBox.usFlags & MSG_BOX_FLAG_INPUTBOX )
{
// retrieve the string from the text box
Get16BitStringFromField( 0, gszMsgBoxInputString, 255 ); // these indexes are based on the order created
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
}
if( InputEvent.usParam == 'o' )
{
if( gMsgBox.usFlags & MSG_BOX_FLAG_OK )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_OK;
}
}
if( InputEvent.usParam == 'y' )
{
if( gMsgBox.usFlags & MSG_BOX_FLAG_YESNO )
{
// Exit messagebox
gMsgBox.bHandled = MSG_BOX_RETURN_YES;
}
}
// box with four buttons
UINT32 four[8] = {
'1',
'2',
'3',
'4',
};
for ( INT8 i = 0; i < 4; ++i )
{
if( InputEvent.usParam == four[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS )
{
// Exit messagebox
gMsgBox.bHandled = 1;
}
}
}
// box with eight buttons
UINT32 eighttxt[8] = {
'1',
'2',
'3',
'4',
'A',
'B',
'C',
'D',
};
for ( INT8 i = 0; i < 8; ++i )
{
if( InputEvent.usParam == eighttxt[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS )
{
// Exit messagebox
gMsgBox.bHandled = 1;
}
}
}
// box with sixteen buttons
UINT32 sixteentxt[16] = {
'1-A',
'1-B',
'1-C',
'1-D',
'2-A',
'2-B',
'2-C',
'2-D',
'3-A',
'3-B',
'3-C',
'3-D',
'4-A',
'4-B',
'4-C',
'4-D',
};
for ( INT8 i = 0; i < 16; ++i )
{
if( InputEvent.usParam == sixteentxt[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS )
{
// Exit messagebox
gMsgBox.bHandled = 1;
}
} }
} }
} }
// box with eight buttons
UINT32 eighttxt[8] = {
'1',
'2',
'3',
'4',
'A',
'B',
'C',
'D',
};
for ( INT8 i = 0; i < 8; ++i )
{
if( InputEvent.usParam == eighttxt[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS )
{
// Exit messagebox
gMsgBox.bHandled = 1;
}
}
}
// box with sixteen buttons
UINT32 sixteentxt[16] = {
'1-A',
'1-B',
'1-C',
'1-D',
'2-A',
'2-B',
'2-C',
'2-D',
'3-A',
'3-B',
'3-C',
'3-D',
'4-A',
'4-B',
'4-C',
'4-D',
};
for ( INT8 i = 0; i < 16; ++i )
{
if( InputEvent.usParam == sixteentxt[i] )
{
if ( gMsgBox.usFlags & MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS )
{
// Exit messagebox
gMsgBox.bHandled = 1;
}
}
}
}
} }
if ( gMsgBox.bHandled ) if ( gMsgBox.bHandled )
+10 -5
View File
@@ -15,12 +15,13 @@
#define MSG_BOX_FLAG_CONTINUESTOP 0x0100 // continue stop box #define MSG_BOX_FLAG_CONTINUESTOP 0x0100 // continue stop box
#define MSG_BOX_FLAG_OKSKIP 0x0200 // Displays ok or skip (meanwhile) buttons #define MSG_BOX_FLAG_OKSKIP 0x0200 // Displays ok or skip (meanwhile) buttons
#define MSG_BOX_FLAG_GENERICCONTRACT 0x0400 // displays contract buttoin + 2 user-defined text buttons #define MSG_BOX_FLAG_GENERICCONTRACT 0x0400 // displays contract buttoin + 2 user-defined text buttons
#define MSG_BOX_FLAG_GENERIC 0x0800 // 2 user-defined text buttons #define MSG_BOX_FLAG_GENERIC_TWO_BUTTONS 0x0800 // 2 user-defined text buttons
// OJW - Adding text chatbox // OJW - Adding text chatbox
#define MSG_BOX_FLAG_INPUTBOX 0x1000 // has a text input field #define MSG_BOX_FLAG_INPUTBOX 0x1000 // has a text input field
// Flugente - added boxes for simultaneous defuse/detonate mechanism // Flugente - added boxes with multiple buttons that can be renamed easily
#define MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS 0x2000 // Displays eight numbered buttons, 1-4, 10, 20, 30, 40. Numbers 1-4 respond to the normal detonate mechanism, rest to defusing #define MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS 0x2000 // Displays four numbered buttons with definable labels
#define MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS 0x4000 // Displays sixteen numbered buttons, 1-16, for setting up a tripwire network and choosing both a detonation and defusing frequency #define MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS 0x4000 // Displays eight numbered buttons with definable labels
#define MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS 0x8000 // Displays sixteen numbered buttons with definable labels
// message box return codes // message box return codes
#define MSG_BOX_RETURN_OK 1 // ENTER or on OK button #define MSG_BOX_RETURN_OK 1 // ENTER or on OK button
@@ -39,12 +40,16 @@ enum
MSG_BOX_BASIC_SMALL_BUTTONS, MSG_BOX_BASIC_SMALL_BUTTONS,
MSG_BOX_IMP_STYLE, MSG_BOX_IMP_STYLE,
MSG_BOX_LAPTOP_DEFAULT, MSG_BOX_LAPTOP_DEFAULT,
MSG_BOX_BASIC_MEDIUM_BUTTONS,
}; };
typedef void (*MSGBOX_CALLBACK)( UINT8 bExitValue ); typedef void (*MSGBOX_CALLBACK)( UINT8 bExitValue );
// Flugente: made an array for user-defined buttons
#define NUM_CUSTOM_BUTTONS 16
extern CHAR16 gzUserDefinedButton[ NUM_CUSTOM_BUTTONS ][ 128 ];
typedef struct typedef struct
{ {
+2 -2
View File
@@ -1223,7 +1223,7 @@ void NotifyPlayerOfMercDepartureAndPromptEquipmentPlacement( SOLDIERTYPE *pSoldi
if( fInSector == FALSE ) if( fInSector == FALSE )
{ {
// set up for mapscreen // set up for mapscreen
DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, ( UINT16 )( ( fAddRehireButton ? MSG_BOX_FLAG_GENERICCONTRACT : MSG_BOX_FLAG_GENERIC ) ), MercDepartEquipmentBoxCallBack ); DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, ( UINT16 )( ( fAddRehireButton ? MSG_BOX_FLAG_GENERICCONTRACT : MSG_BOX_FLAG_GENERIC_TWO_BUTTONS ) ), MercDepartEquipmentBoxCallBack );
} }
else else
{ {
@@ -1236,7 +1236,7 @@ void NotifyPlayerOfMercDepartureAndPromptEquipmentPlacement( SOLDIERTYPE *pSoldi
if( fInSector == FALSE ) if( fInSector == FALSE )
{ {
// set up for all otherscreens // set up for all otherscreens
DoMessageBox( MSG_BOX_BASIC_STYLE, sString, guiCurrentScreen, ( UINT16 ) ( MSG_BOX_FLAG_USE_CENTERING_RECT | ( fAddRehireButton ? MSG_BOX_FLAG_GENERICCONTRACT : MSG_BOX_FLAG_GENERIC ) ), MercDepartEquipmentBoxCallBack, &pCenteringRect ); DoMessageBox( MSG_BOX_BASIC_STYLE, sString, guiCurrentScreen, ( UINT16 ) ( MSG_BOX_FLAG_USE_CENTERING_RECT | ( fAddRehireButton ? MSG_BOX_FLAG_GENERICCONTRACT : MSG_BOX_FLAG_GENERIC_TWO_BUTTONS ) ), MercDepartEquipmentBoxCallBack, &pCenteringRect );
} }
else else
{ {
+1 -1
View File
@@ -15451,7 +15451,7 @@ void CreateBullsEyeOrChopperSelectionPopup( void )
wcscpy( gzUserDefinedButton2, pHelicopterEtaStrings[ 9 ] ); wcscpy( gzUserDefinedButton2, pHelicopterEtaStrings[ 9 ] );
// do a BULLSEYE/CHOPPER message box // do a BULLSEYE/CHOPPER message box
DoScreenIndependantMessageBox( pHelicopterEtaStrings[ 7 ], MSG_BOX_FLAG_GENERIC, BullsEyeOrChopperSelectionPopupCallback ); DoScreenIndependantMessageBox( pHelicopterEtaStrings[ 7 ], MSG_BOX_FLAG_GENERIC_TWO_BUTTONS, BullsEyeOrChopperSelectionPopupCallback );
} }
+57 -13
View File
@@ -4544,26 +4544,32 @@ void StartCorpseMessageBox( SOLDIERTYPE * pSoldier, INT32 sGridNo, INT8 bLevel
{ {
gpTempSoldier = pSoldier; gpTempSoldier = pSoldier;
// determine what is possible with this corpse wcscpy( gzUserDefinedButton[0], TacticalStr[ DECAPITATE_STR ] );
BOOLEAN fDecapitate = TRUE; wcscpy( gzUserDefinedButton[1], TacticalStr[ GUT_STR ] );
BOOLEAN fTakeClothes = TRUE; wcscpy( gzUserDefinedButton[2], TacticalStr[ TAKE_CLOTHES_STR ] );
BOOLEAN fTakeCorpse = TRUE; wcscpy( gzUserDefinedButton[3], TacticalStr[ TAKE_BODY_STR ] );
DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ CORPSE_SELECTION_STR ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, CorpseMessageBoxCallBack, NULL );
if ( fDecapitate && fTakeClothes )
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CORPSE_SELECTION_STR ], GAME_SCREEN, MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS, CorpseMessageBoxCallBack, NULL );
} }
void StartBombMessageBox( SOLDIERTYPE * pSoldier, INT32 sGridNo ) void StartBombMessageBox( SOLDIERTYPE * pSoldier, INT32 sGridNo )
{ {
//DBrot: More Rooms //DBrot: More Rooms
//UINT8 ubRoom;
UINT16 usRoom; UINT16 usRoom;
gpTempSoldier = pSoldier; gpTempSoldier = pSoldier;
gsTempGridNo = sGridNo; gsTempGridNo = sGridNo;
if (Item[ pSoldier->inv[HANDPOS].usItem].remotetrigger ) if (Item[ pSoldier->inv[HANDPOS].usItem].remotetrigger )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_BOMB_OR_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_EIGHT_NUMBERED_BUTTONS, BombMessageBoxCallBack, NULL ); wcscpy( gzUserDefinedButton[0], L"1" );
wcscpy( gzUserDefinedButton[1], L"2" );
wcscpy( gzUserDefinedButton[2], L"3" );
wcscpy( gzUserDefinedButton[3], L"4" );
wcscpy( gzUserDefinedButton[4], L"A" );
wcscpy( gzUserDefinedButton[5], L"B" );
wcscpy( gzUserDefinedButton[6], L"C" );
wcscpy( gzUserDefinedButton[7], L"D" );
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_BOMB_OR_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS, BombMessageBoxCallBack, NULL );
} }
else if (pSoldier->inv[HANDPOS].usItem == REMOTETRIGGER) else if (pSoldier->inv[HANDPOS].usItem == REMOTETRIGGER)
{ {
@@ -4603,13 +4609,30 @@ void StartBombMessageBox( SOLDIERTYPE * pSoldier, INT32 sGridNo )
} }
else if ( HasAttachmentOfClass( &(pSoldier->inv[HANDPOS]), AC_DEFUSE ) ) else if ( HasAttachmentOfClass( &(pSoldier->inv[HANDPOS]), AC_DEFUSE ) )
{ {
wcscpy( gzUserDefinedButton[0], L"1-A" );
wcscpy( gzUserDefinedButton[1], L"1-B" );
wcscpy( gzUserDefinedButton[2], L"1-C" );
wcscpy( gzUserDefinedButton[3], L"1-D" );
wcscpy( gzUserDefinedButton[4], L"2-A" );
wcscpy( gzUserDefinedButton[5], L"2-B" );
wcscpy( gzUserDefinedButton[6], L"2-C" );
wcscpy( gzUserDefinedButton[7], L"2-D" );
wcscpy( gzUserDefinedButton[8], L"3-A" );
wcscpy( gzUserDefinedButton[9], L"3-B" );
wcscpy( gzUserDefinedButton[10], L"3-C" );
wcscpy( gzUserDefinedButton[11], L"3-D" );
wcscpy( gzUserDefinedButton[12], L"4-A" );
wcscpy( gzUserDefinedButton[13], L"4-B" );
wcscpy( gzUserDefinedButton[14], L"4-C" );
wcscpy( gzUserDefinedButton[15], L"4-D" );
if ( HasAttachmentOfClass( &(pSoldier->inv[ HANDPOS ] ), (AC_DETONATOR ) ) ) if ( HasAttachmentOfClass( &(pSoldier->inv[ HANDPOS ] ), (AC_DETONATOR ) ) )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS, BombMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, BombMessageBoxCallBack, NULL );
} }
else if ( HasAttachmentOfClass( &(pSoldier->inv[ HANDPOS ] ), (AC_REMOTEDET) ) ) else if ( HasAttachmentOfClass( &(pSoldier->inv[ HANDPOS ] ), (AC_REMOTEDET) ) )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS, BombMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, BombMessageBoxCallBack, NULL );
} }
else else
{ {
@@ -4626,7 +4649,24 @@ void StartBombMessageBox( SOLDIERTYPE * pSoldier, INT32 sGridNo )
} }
else if ( Item[ (&(pSoldier->inv[HANDPOS]))->usItem ].tripwire == 1 ) else if ( Item[ (&(pSoldier->inv[HANDPOS]))->usItem ].tripwire == 1 )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_TRIPWIRE_NETWORK ], GAME_SCREEN, MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS, BombMessageBoxCallBack, NULL ); wcscpy( gzUserDefinedButton[0], L"1-A" );
wcscpy( gzUserDefinedButton[1], L"1-B" );
wcscpy( gzUserDefinedButton[2], L"1-C" );
wcscpy( gzUserDefinedButton[3], L"1-D" );
wcscpy( gzUserDefinedButton[4], L"2-A" );
wcscpy( gzUserDefinedButton[5], L"2-B" );
wcscpy( gzUserDefinedButton[6], L"2-C" );
wcscpy( gzUserDefinedButton[7], L"2-D" );
wcscpy( gzUserDefinedButton[8], L"3-A" );
wcscpy( gzUserDefinedButton[9], L"3-B" );
wcscpy( gzUserDefinedButton[10], L"3-C" );
wcscpy( gzUserDefinedButton[11], L"3-D" );
wcscpy( gzUserDefinedButton[12], L"4-A" );
wcscpy( gzUserDefinedButton[13], L"4-B" );
wcscpy( gzUserDefinedButton[14], L"4-C" );
wcscpy( gzUserDefinedButton[15], L"4-D" );
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_TRIPWIRE_NETWORK ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, BombMessageBoxCallBack, NULL );
} }
} }
@@ -4639,7 +4679,11 @@ void StartTacticalFunctionSelectionMessageBox( SOLDIERTYPE * pSoldier, INT32 sGr
gpTempSoldier = pSoldier; gpTempSoldier = pSoldier;
gsTempGridNo = sGridNo; gsTempGridNo = sGridNo;
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ FUNCTION_SELECTION_STR ], GAME_SCREEN, MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS, TacticalFunctionSelectionMessageBoxCallBack, NULL ); wcscpy( gzUserDefinedButton[0], TacticalStr[ FILL_CANTEEN_STR ] );
wcscpy( gzUserDefinedButton[1], TacticalStr[ CLEAN_ONE_GUN_STR ] );
wcscpy( gzUserDefinedButton[2], TacticalStr[ CLEAN_ALL_GUNS_STR ] );
wcscpy( gzUserDefinedButton[3], TacticalStr[ TAKE_OFF_CLOTHES_STR ] );
DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ FUNCTION_SELECTION_STR ], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, TacticalFunctionSelectionMessageBoxCallBack, NULL );
} }
void CleanWeapons( BOOLEAN fCleanAll ) void CleanWeapons( BOOLEAN fCleanAll )
+19 -2
View File
@@ -13049,13 +13049,30 @@ void TransformationMenuPopup_Arm( OBJECTTYPE* pObj )
} }
else if ( HasAttachmentOfClass( gpItemDescObject, (AC_DEFUSE ) ) ) else if ( HasAttachmentOfClass( gpItemDescObject, (AC_DEFUSE ) ) )
{ {
wcscpy( gzUserDefinedButton[0], L"1-A" );
wcscpy( gzUserDefinedButton[1], L"1-B" );
wcscpy( gzUserDefinedButton[2], L"1-C" );
wcscpy( gzUserDefinedButton[3], L"1-D" );
wcscpy( gzUserDefinedButton[4], L"2-A" );
wcscpy( gzUserDefinedButton[5], L"2-B" );
wcscpy( gzUserDefinedButton[6], L"2-C" );
wcscpy( gzUserDefinedButton[7], L"2-D" );
wcscpy( gzUserDefinedButton[8], L"3-A" );
wcscpy( gzUserDefinedButton[9], L"3-B" );
wcscpy( gzUserDefinedButton[10], L"3-C" );
wcscpy( gzUserDefinedButton[11], L"3-D" );
wcscpy( gzUserDefinedButton[12], L"4-A" );
wcscpy( gzUserDefinedButton[13], L"4-B" );
wcscpy( gzUserDefinedButton[14], L"4-C" );
wcscpy( gzUserDefinedButton[15], L"4-D" );
if ( HasAttachmentOfClass( gpItemDescObject, (AC_DETONATOR ) ) ) if ( HasAttachmentOfClass( gpItemDescObject, (AC_DETONATOR ) ) )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], screen, MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS, BombInventoryMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], screen, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, BombInventoryMessageBoxCallBack, NULL );
} }
else if ( HasAttachmentOfClass( gpItemDescObject, (AC_REMOTEDET ) ) ) else if ( HasAttachmentOfClass( gpItemDescObject, (AC_REMOTEDET ) ) )
{ {
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], screen, MSG_BOX_FLAG_SIXTEEN_NUMBERED_BUTTONS, BombInventoryMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR ], screen, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, BombInventoryMessageBoxCallBack, NULL );
} }
} }
else if ( HasAttachmentOfClass( gpItemDescObject, (AC_DETONATOR ) ) ) else if ( HasAttachmentOfClass( gpItemDescObject, (AC_DETONATOR ) ) )
+5 -1
View File
@@ -10213,5 +10213,9 @@ void HandleSurrenderOffer( SOLDIERTYPE* pSoldier )
prisonerdialoguetargetID = pSoldier->ubID; prisonerdialoguetargetID = pSoldier->ubID;
// open a dialogue box and see wether we really want to offer this, or just talk // open a dialogue box and see wether we really want to offer this, or just talk
DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, TacticalStr[ PRISONER_OFFER_SURRENDER ], guiCurrentScreen, ( UINT8 )MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS, PrisonerSurrenderMessageBoxCallBack, NULL ); wcscpy( gzUserDefinedButton[0], TacticalStr[ PRISONER_DEMAND_SURRENDER_STR ] );
wcscpy( gzUserDefinedButton[1], TacticalStr[ PRISONER_OFFER_SURRENDER_STR ] );
wcscpy( gzUserDefinedButton[2], TacticalStr[ PRISONER_TALK_STR ] );
wcscpy( gzUserDefinedButton[3], TacticalStr[ PRISONER_TALK_STR ] );
DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ PRISONER_OFFER_SURRENDER ], guiCurrentScreen, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, PrisonerSurrenderMessageBoxCallBack, NULL );
} }
+4
View File
@@ -4229,6 +4229,10 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency )
// set back ubWireNetworkFlag and bDefuseFrequency, but not the direction... bomb is still aimed, it is just turned off // set back ubWireNetworkFlag and bDefuseFrequency, but not the direction... bomb is still aimed, it is just turned off
(*pObj)[0]->data.ubWireNetworkFlag = 0; (*pObj)[0]->data.ubWireNetworkFlag = 0;
(*pObj)[0]->data.bDefuseFrequency = 0; (*pObj)[0]->data.bDefuseFrequency = 0;
(*pObj)[0]->data.misc.bDelay = 0;
(*pObj)[0]->data.misc.bFrequency = 0;
(*pObj)[0]->data.misc.ubBombOwner = NOBODY;
(*pObj)[0]->data.misc.bDetonatorType = 0;
//create a new item: copy the old item //create a new item: copy the old item
OBJECTTYPE newbombitem( *pObj ); OBJECTTYPE newbombitem( *pObj );
+11
View File
@@ -930,11 +930,22 @@ enum
MERC_VITAL_STATS_WITH_POISON_AND_FOOD_POPUPTEXT, MERC_VITAL_STATS_WITH_POISON_AND_FOOD_POPUPTEXT,
FUNCTION_SELECTION_STR, FUNCTION_SELECTION_STR,
FILL_CANTEEN_STR,
CLEAN_ONE_GUN_STR,
CLEAN_ALL_GUNS_STR,
TAKE_OFF_CLOTHES_STR,
CORPSE_SELECTION_STR, CORPSE_SELECTION_STR,
DECAPITATE_STR,
GUT_STR,
TAKE_CLOTHES_STR,
TAKE_BODY_STR,
WEAPON_CLEANING_STR, WEAPON_CLEANING_STR,
PRISONER_NO_PRISONS_STR, PRISONER_NO_PRISONS_STR,
PRISONER_DECIDE_STR, PRISONER_DECIDE_STR,
PRISONER_OFFER_SURRENDER, PRISONER_OFFER_SURRENDER,
PRISONER_DEMAND_SURRENDER_STR,
PRISONER_OFFER_SURRENDER_STR,
PRISONER_TALK_STR,
TEXT_NUM_TACTICAL_STR TEXT_NUM_TACTICAL_STR
}; };
+18 -8
View File
@@ -2907,20 +2907,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"生命: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s", L"生命: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s",
L"生命: %d/%d\n毒性: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s", L"生命: %d/%d\n毒性: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - 装满水壶 2 - 清理枪支污垢 3 - 清理所有枪支污垢 4 - 脱掉衣服", //L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - 砍掉头颅 2 - 取出内脏 3 - 脱掉衣服 4 - 拿起尸体", //L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // Flugente: weapon cleaning
L"%s 清理了 %s", //L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // added by Flugente: decide what to do with prisoners
L"你现在没有可用的监狱关押这些俘虏,你不得不放他们走。", //L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - 将俘虏送入监狱 No - 放俘虏离开这里", //L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"劝说敌人投降?", //L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2904,20 +2904,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+14 -3
View File
@@ -2907,10 +2907,18 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
@@ -2918,7 +2926,10 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
// added by Flugente: decide what to do with prisoners // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", L"What do you want to do?",
L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2911,20 +2911,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2909,20 +2909,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Gesundheit: %d/%d\nAusdauer: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s", L"Gesundheit: %d/%d\nAusdauer: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s",
L"Ges.: %d/%d\nGift: %d/%d\nAusd.: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s", L"Ges.: %d/%d\nGift: %d/%d\nAusd.: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2899,20 +2899,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2914,20 +2914,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2907,20 +2907,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.
+17 -7
View File
@@ -2908,20 +2908,30 @@ CHAR16 TacticalStr[][ MED_STRING_LENGTH ] =
L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", L"Health: %d/%d\nPoison: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s",
// added by Flugente: selection of a function to call in tactical // added by Flugente: selection of a function to call in tactical // TODO.Translate
L"1 - Fill Canteens 2 - Clean one gun 3 - Clean all guns 4 - Take off clothes", // TODO.Translate L"What do you want to do?",
L"Fill canteens",
L"Clean gun",
L"Clean all guns",
L"Take off clothes",
// added by Flugente: decide what to do with the corpses // added by Flugente: decide what to do with the corpses
L"1 - Decapitate 2 - Gut 3 - Take Clothes 4 - Take Body", // TODO.Translate L"What do you want to do with the body?",
L"Decapitate",
L"Gut",
L"Take Clothes",
L"Take Body",
// Flugente: weapon cleaning // TODO.Translate // Flugente: weapon cleaning
L"%s cleaned %s", L"%s cleaned %s",
// added by Flugente: decide what to do with prisoners // TODO.Translate // added by Flugente: decide what to do with prisoners
L"You have no prison for these prisoners, you have to let them go", L"You have no prison for these prisoners, you have to let them go",
L"Yes - Send prisoners to jail No - Let them go", L"Yes - Send prisoners to jail No - Let them go",
L"Ask enemy for surrender?", L"What do you want to do?",
L"1 - Ask enemy for surrender 2 - Surrender to enemy 3,4 - Talk", // TODO.Translate L"Demand surrender",
L"Offer surrender",
L"Talk",
}; };
//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. //Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface.