void ExtractAndUpdateGunGUI() { INT32 i; //Update the gun status i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = 20 + Random( 81 ); else i = min( i, 100 ); gpItem->bGunStatus = (INT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); //Update the ammo i = GetNumericStrictValueFromField( 2 ); if( i == -1 ) i = Random( 1 + Weapon[ gpItem->usItem ].ubMagSize ); else i = min( i, Weapon[ gpItem->usItem ].ubMagSize ); gpItem->ubGunShotsLeft = (UINT8)i; SetInputFieldStringWithNumericStrictValue( 2, i ); //Update the trap level i = GetNumericStrictValueFromField( 3 ); i = ( i == -1 ) ? 0 : min( i, 20 ); gpItem->bTrap = (INT8)i; SetInputFieldStringWithNumericStrictValue( 3, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 4 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 4, giDefaultExistChance ); } }
void ExtractAndUpdateAmmoGUI() { INT32 i; //Update the number of clips i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = 1 + Random( Item[ gpItem->usItem ].ubPerPocket ); else i = max( 1, min( i, Item[ gpItem->usItem ].ubPerPocket ) ); gpItem->ubNumberOfObjects = (UINT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); CreateItems( gpItem->usItem, 100, gpItem->ubNumberOfObjects, gpItem ); //Update the trap level i = GetNumericStrictValueFromField( 2 ); i = ( i == -1 ) ? 0 : min( i, 20 ); gpItem->bTrap = (INT8)i; SetInputFieldStringWithNumericStrictValue( 2, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 3 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 3, giDefaultExistChance ); } }
void ExtractAndUpdateActionItemsGUI() { INT32 i; //Update the equipment status i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = 20 + Random( 81 ); else i = min( i, 100 ); gpItem->bStatus[0] = (INT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); //Update the trap level i = GetNumericStrictValueFromField( 2 ); i = ( i == -1 ) ? 0 : min( i, 20 ); if( i != gpItem->bTrap ) gbDefaultBombTrapLevel = (INT8)i; gpItem->bTrap = (INT8)i; SetInputFieldStringWithNumericStrictValue( 2, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 3 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 3, giDefaultExistChance ); } }
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 ExtractAndUpdateKeysGUI() { if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 1 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 1, giDefaultExistChance ); } }
void ExtractAndUpdateMoneyGUI() { INT32 i; //Update the amount of cash i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = Random( 20000 ); else i = max( 1, min( i, 20000 ) ); gpItem->uiMoneyAmount = i; gpItem->bStatus[0] = 100; SetInputFieldStringWithNumericStrictValue( 1, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 2 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 2, giDefaultExistChance ); } }
void ExtractAndUpdateOwnershipGUI() { INT32 i; //Update the amount of cash i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = Random( 0 ); else i = max( 0, min( i, 255 ) ); gpItem->ubOwnerProfile = (UINT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); }
void ExtractAndUpdateTriggersGUI() { INT32 i; //Update the trap level i = GetNumericStrictValueFromField( 1 ); i = ( i == -1 ) ? 0 : min( i, 20 ); gpItem->bTrap = (INT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); i = GetNumericStrictValueFromField( 2 ); i = ( i == -1 ) ? 0 : max( 0, min( i, 99 ) ); gpItem->ubTolerance = (UINT8)i; SetInputFieldStringWithNumericStrictValue( 2, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 3 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 3, giDefaultExistChance ); } }
void ExtractAndUpdateExplosivesGUI() { INT32 i; //Update the explosives status i = GetNumericStrictValueFromField( 1 ); if( i == -1 ) i = 20 + Random( 81 ); else i = min( i, 100 ); gpItem->bStatus[0] = (INT8)i; SetInputFieldStringWithNumericStrictValue( 1, i ); //Update the quantity if( Item[ gpItem->usItem ].ubPerPocket > 1 ) { i = GetNumericStrictValueFromField( 2 ); if( i == -1 ) i = 1 + Random( Item[ gpItem->usItem ].ubPerPocket ); else i = max( 1, min( i, Item[ gpItem->usItem ].ubPerPocket ) ); gpItem->ubNumberOfObjects = (UINT8)i; SetInputFieldStringWithNumericStrictValue( 2, i ); CreateItems( gpItem->usItem, gpItem->bStatus[0], gpItem->ubNumberOfObjects, gpItem ); } //Update the trap level i = GetNumericStrictValueFromField( 3 ); i = ( i == -1 ) ? 0 : min( i, 20 ); gpItem->bTrap = (INT8)i; SetInputFieldStringWithNumericStrictValue( 3, i ); if( gpEditingItemPool ) { giDefaultExistChance = GetNumericStrictValueFromField( 4 ); giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) ); gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance ); SetInputFieldStringWithNumericStrictValue( 4, giDefaultExistChance ); } }
void ExtractAndUpdateDoorInfo() { LEVELNODE* pNode; INT32 num; DOOR door; BOOLEAN fCursor = FALSE; BOOLEAN fCursorExists = FALSE; memset( &door, 0, sizeof( DOOR ) ); door.sGridNo = (INT16)iDoorMapIndex; num = min( GetNumericStrictValueFromField( 0 ), NUM_LOCKS-1 ); door.ubLockID = (UINT8)num; SetInputFieldStringWithNumericStrictValue( 0, num ); if( num >= 0 ) fCursor = TRUE; num = min( max( GetNumericStrictValueFromField( 1 ), 0 ), 10 ); door.ubTrapID = (UINT8)num; SetInputFieldStringWithNumericStrictValue( 1, num ); if( num ) fCursor = TRUE; num = min( max( GetNumericStrictValueFromField( 2 ), 0 ), 20 ); if( door.ubTrapID && !num ) num = 1; //Can't have a trap without a traplevel! door.ubTrapLevel = (UINT8)num; SetInputFieldStringWithNumericStrictValue( 2, num ); if( num ) fCursor = TRUE; if( ButtonList[ iDoorButton[ DOOR_LOCKED ] ]->uiFlags & BUTTON_CLICKED_ON ) { door.fLocked = TRUE; } else { door.fLocked = FALSE; } //Find out if we have a rotating key cursor (we will either add one or remove one) pNode = gpWorldLevelData[ iDoorMapIndex ].pTopmostHead; while( pNode ) { if( pNode->usIndex == ROTATINGKEY1 ) { fCursorExists = TRUE; break; } pNode = pNode->pNext; } if( fCursor ) { //we have a valid door, so add it (or replace existing) if( !fCursorExists ) AddTopmostToHead( iDoorMapIndex, ROTATINGKEY1 ); //If the door already exists, the new information will replace it. AddDoorInfoToTable( &door ); } else { //if a door exists here, remove it. if( fCursorExists ) RemoveAllTopmostsOfTypeRange( iDoorMapIndex, ROTATINGKEY, ROTATINGKEY ); RemoveDoorInfoFromTable( iDoorMapIndex ); } }