void SetupTextInputForBuildings() { UINT16 str[4]; InitTextInputModeWithScheme( DEFAULT_SCHEME ); AddUserInputField( NULL ); //just so we can use short cut keys while not typing. swprintf( str, L"%d", gubMaxRoomNumber ); AddTextInputField( 410, 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT ); }
void CreateFileDialog( UINT16 *zTitle ) { iFDlgState = DIALOG_NONE; DisableEditorTaskbar(); MSYS_DefineRegion( &BlanketRegion, 0, 0, gsVIEWPORT_END_X, gsVIEWPORT_END_Y, MSYS_PRIORITY_HIGH - 5, 0, 0, 0 ); //Okay and cancel buttons iFileDlgButtons[0] = CreateTextButton( L"Okay", FONT12POINT1, FONT_BLACK, FONT_BLACK, BUTTON_USE_DEFAULT, 354, 225, 50, 30, BUTTON_NO_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, FDlgOkCallback ); iFileDlgButtons[1] = CreateTextButton( L"Cancel", FONT12POINT1, FONT_BLACK, FONT_BLACK, BUTTON_USE_DEFAULT, 406, 225, 50, 30, BUTTON_NO_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, FDlgCancelCallback ); //Scroll buttons iFileDlgButtons[2] = CreateSimpleButton( 426,92,"EDITOR//uparrow.sti", BUTTON_NO_TOGGLE, MSYS_PRIORITY_HIGH, FDlgUpCallback ); iFileDlgButtons[3] = CreateSimpleButton( 426,182,"EDITOR//downarrow.sti", BUTTON_NO_TOGGLE, MSYS_PRIORITY_HIGH, FDlgDwnCallback ); //File list window iFileDlgButtons[4] = CreateHotSpot( (179+4), (69+3), (179+4+240), (69+120+3), MSYS_PRIORITY_HIGH-1, BUTTON_NO_CALLBACK, FDlgNamesCallback); //Title button iFileDlgButtons[5] = CreateTextButton(zTitle, HUGEFONT, FONT_LTKHAKI, FONT_DKKHAKI, BUTTON_USE_DEFAULT,179,39,281,30,BUTTON_NO_TOGGLE, MSYS_PRIORITY_HIGH-2,BUTTON_NO_CALLBACK,BUTTON_NO_CALLBACK); DisableButton(iFileDlgButtons[5]); SpecifyDisabledButtonStyle( iFileDlgButtons[5], DISABLED_STYLE_NONE ); iFileDlgButtons[6] = -1; if( iCurrentAction == ACTION_SAVE_MAP ) { //checkboxes //The update world info checkbox iFileDlgButtons[6] = CreateCheckBoxButton( 183, 229, "EDITOR//smcheckbox.sti", MSYS_PRIORITY_HIGH, UpdateWorldInfoCallback ); if( gfUpdateSummaryInfo ) ButtonList[ iFileDlgButtons[6] ]->uiFlags |= BUTTON_CLICKED_ON; } //Add the text input fields InitTextInputModeWithScheme( DEFAULT_SCHEME ); //field 1 (filename) AddTextInputField( /*233*/183, 195, 190, 20, MSYS_PRIORITY_HIGH, gzFilename, 30, INPUTTYPE_EXCLUSIVE_DOSFILENAME ); //field 2 -- user field that allows mouse/key interaction with the filename list AddUserInputField( FileDialogModeCallback ); }
void InitDoorEditing( INT32 iMapIndex ) { DOOR *pDoor; if( !DoorAtGridNo( iMapIndex ) && !OpenableAtGridNo( iMapIndex ) ) return; gfEditingDoor = TRUE; iDoorMapIndex = iMapIndex; DisableEditorTaskbar(); MSYS_DefineRegion( &DoorRegion, 0, 0, SCREEN_BUFFER_WIDTH, SCREEN_BUFFER_HEIGHT, MSYS_PRIORITY_HIGH-2, 0, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); iDoorButton[ DOOR_BACKGROUND ] = CreateTextButton( 0, 0, 0, 0, BUTTON_USE_DEFAULT, 200, 130, 240, 100, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH - 1, BUTTON_NO_CALLBACK, BUTTON_NO_CALLBACK ); DisableButton( iDoorButton[ DOOR_BACKGROUND ] ); SpecifyDisabledButtonStyle( iDoorButton[ DOOR_BACKGROUND ], DISABLED_STYLE_NONE ); iDoorButton[ DOOR_OKAY ] = CreateTextButton(gzEditorStrings[EDITOR_STR_OKAY], FONT12POINT1, FONT_BLACK, FONT_BLACK, BUTTON_USE_DEFAULT, 330, 195, 50, 30, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, DoorOkayCallback ); iDoorButton[ DOOR_CANCEL ] = CreateTextButton(gzEditorStrings[EDITOR_STR_CANCEL], FONT12POINT1, FONT_BLACK, FONT_BLACK, BUTTON_USE_DEFAULT, 385, 195, 50, 30, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, DoorCancelCallback ); InitTextInputModeWithScheme( DEFAULT_SCHEME ); AddTextInputField( 210, 155, 25, 16, MSYS_PRIORITY_HIGH, L"0", 3, INPUTTYPE_NUMERICSTRICT ); AddTextInputField( 210, 175, 25, 16, MSYS_PRIORITY_HIGH, L"0", 2, INPUTTYPE_NUMERICSTRICT ); AddTextInputField( 210, 195, 25, 16, MSYS_PRIORITY_HIGH, L"0", 2, INPUTTYPE_NUMERICSTRICT ); iDoorButton[ DOOR_LOCKED ] = CreateCheckBoxButton( 210, 215, "EDITOR\\SmCheckbox.sti", MSYS_PRIORITY_HIGH, DoorToggleLockedCallback ); pDoor = FindDoorInfoAtGridNo( iDoorMapIndex ); if( pDoor ) { if( pDoor->fLocked ) { ButtonList[ iDoorButton[ DOOR_LOCKED ] ]->uiFlags |= BUTTON_CLICKED_ON; } SetInputFieldStringWithNumericStrictValue( 0, pDoor->ubLockID ); SetInputFieldStringWithNumericStrictValue( 1, pDoor->ubTrapID ); SetInputFieldStringWithNumericStrictValue( 2, pDoor->ubTrapLevel ); } else { ButtonList[ iDoorButton[ DOOR_LOCKED ] ]->uiFlags |= BUTTON_CLICKED_ON; } }
void SetupTextInputForMapInfo() { UINT16 str[10]; InitTextInputModeWithScheme( DEFAULT_SCHEME ); AddUserInputField( NULL ); //just so we can use short cut keys while not typing. //light rgb fields swprintf( str, L"%d", gEditorLightColor.peRed ); AddTextInputField( 10, 394, 25, 18, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT ); swprintf( str, L"%d", gEditorLightColor.peGreen ); AddTextInputField( 10, 414, 25, 18, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT ); swprintf( str, L"%d", gEditorLightColor.peBlue ); AddTextInputField( 10, 434, 25, 18, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT ); swprintf( str, L"%d", gsLightRadius ); AddTextInputField( 120, 394, 25, 18, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT ); swprintf( str, L"%d", gusLightLevel ); AddTextInputField( 120, 414, 25, 18, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT ); //Scroll restriction ID if( !gMapInformation.ubRestrictedScrollID ) swprintf( str, L"" ); else swprintf( str, L"%d", gMapInformation.ubRestrictedScrollID ); AddTextInputField( 210, 420, 30, 20, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT ); //exit grid input fields swprintf( str, L"%c%d", gExitGrid.ubGotoSectorY + 'A' - 1, gExitGrid.ubGotoSectorX ); AddTextInputField( 338, 363, 30, 18, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_EXCLUSIVE_COORDINATE ); swprintf( str, L"%d", gExitGrid.ubGotoSectorZ ); AddTextInputField( 338, 383, 30, 18, MSYS_PRIORITY_NORMAL, str, 1, INPUTTYPE_NUMERICSTRICT ); swprintf( str, L"%d", gExitGrid.usGridNo ); AddTextInputField( 338, 403, 40, 18, MSYS_PRIORITY_NORMAL, str, 5, INPUTTYPE_NUMERICSTRICT ); }
void SpecifyItemToEdit( OBJECTTYPE *pItem, INT32 iMapIndex ) { //Set the global item pointer to point to the new item if( gpItem == pItem ) return; if( gpItem != pItem ) { ExecuteItemStatsCmd( ITEMSTATS_APPLY ); RemoveItemGUI(); gpItem = pItem; if( gpItemPool ) { gpEditingItemPool = gpItemPool; } gsItemGridNo = (INT16)iMapIndex; } else RemoveItemGUI(); gfRenderTaskbar = TRUE; if( !gpItem ) { //Hide all edit features. gbEditingMode = EDITING_NOTHING; gsItemGridNo = -1; return; } //Setup the text mode InitTextInputModeWithScheme( DEFAULT_SCHEME ); if( iCurrentTaskbar == TASK_ITEMS ) ShowEditorButton( ITEMSTATS_HIDDEN_BTN ); //Determine the type of item so that we can determine the dynamic editing mode. AddUserInputField( NULL ); SetupGameTypeFlags(); if( Item[ gpItem->usItem ].usItemClass == IC_MONEY ) { gbEditingMode = EDITING_MONEY; SetupMoneyGUI(); } else if( gpItem->usItem == ACTION_ITEM ) { gbEditingMode = EDITING_ACTIONITEMS; SetupActionItemsGUI(); HideEditorButton( ITEMSTATS_HIDDEN_BTN ); } else if( gpItem->usItem == SWITCH ) { gbEditingMode = EDITING_TRIGGERS; SetupTriggersGUI(); HideEditorButton( ITEMSTATS_HIDDEN_BTN ); } else if( gpItem->usItem == OWNERSHIP ) { gbEditingMode = EDITING_OWNERSHIP; SetupOwnershipGUI(); HideEditorButton( ITEMSTATS_HIDDEN_BTN ); } else switch( Item[ gpItem->usItem ].usItemClass ) { case IC_GUN: gbEditingMode = EDITING_GUNS; SetupGunGUI(); break; case IC_AMMO: gbEditingMode = EDITING_AMMO; SetupAmmoGUI(); break; case IC_ARMOUR: gbEditingMode = EDITING_ARMOUR; SetupArmourGUI(); break; case IC_MEDKIT: case IC_KIT: case IC_MISC: case IC_FACE: case IC_BLADE: case IC_LAUNCHER: case IC_THROWING_KNIFE: case IC_MONEY: gbEditingMode = EDITING_EQUIPMENT; SetupEquipGUI(); break; case IC_THROWN: case IC_GRENADE: case IC_EXPLOSV: case IC_BOMB: gbEditingMode = EDITING_EXPLOSIVES; SetupExplosivesGUI(); break; case IC_KEY: gbEditingMode = EDITING_KEYS; SetupKeysGUI(); break; case IC_PUNCH: if ( gpItem->usItem != NOTHING) { gbEditingMode = EDITING_EQUIPMENT; SetupEquipGUI(); break; } // else fall through and act as nothing case IC_NONE: gbEditingMode = EDITING_NOTHING; if( !(gpItem->fFlags & OBJECT_UNDROPPABLE) ) gbEditingMode = EDITING_DROPPABLE; break; default: gbEditingMode = EDITING_NOT_YET_IMPLEMENTED; break; } if( gpItemPool ) { if( gWorldItems[ gpItemPool->iItemIndex ].bVisible == INVISIBLE ) { UnclickEditorButton( ITEMSTATS_HIDDEN_BTN ); ShowSelectedItem(); } else { ClickEditorButton( ITEMSTATS_HIDDEN_BTN ); HideSelectedItem(); } } }