diff --git a/GameVersion.cpp b/GameVersion.cpp index c873059a..4798679c 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -15,9 +15,9 @@ #ifdef JA2EDITOR #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8275 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8275 (Development Build)" }; #endif // ------------------------------ @@ -27,11 +27,11 @@ //DEBUG BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8275 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8275 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8275 (Development Build)" }; #endif #elif defined CRIPPLED_VERSION @@ -46,16 +46,16 @@ //RELEASE BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8275 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8275 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Release v1.13.8270 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.8275 (Development Build)" }; #endif #endif -CHAR8 czVersionNumber[16] = { "Build 16.07.15" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 16.07.17" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Strategic/Map Screen Interface Map Inventory.cpp b/Strategic/Map Screen Interface Map Inventory.cpp index 5b2ea1a1..a909442a 100644 --- a/Strategic/Map Screen Interface Map Inventory.cpp +++ b/Strategic/Map Screen Interface Map Inventory.cpp @@ -1350,8 +1350,63 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) if(ValidAmmoType(twItem->object.usItem, gpItemPointer->usItem) == TRUE) fValidPointer = true; } + + // Flugente: convert gear to resources + if ( _KeyDown( ALT ) && gGameExternalOptions.fMilitiaResources && !gGameExternalOptions.fMilitiaUseSectorInventory ) + { + FLOAT dvalue_Gun = 0; + FLOAT dvalue_Armour = 0; + FLOAT dvalue_Misc = 0; + + if (_KeyDown( SHIFT )) + { + // convert all items in slot + twItem->object.MoveThisObjectTo(gItemPointer,-1,0,NUM_INV_SLOTS,MAX_OBJECTS_PER_SLOT); + } + else + { + twItem->object.MoveThisObjectTo(gItemPointer, 1); + } + + fMapPanelDirty = TRUE; + UINT16 usItem = gItemPointer.usItem; + + if ( ConvertItemToResources( gItemPointer, _KeyDown( SHIFT ), dvalue_Gun, dvalue_Armour, dvalue_Misc ) ) + { + AddResources( dvalue_Gun, dvalue_Armour, dvalue_Misc ); + + dvalue_Gun = dvalue_Armour = dvalue_Misc = 0; + + PlayJA2Sample( COMPUTER_BEEP2_IN, RATE_11025, 15, 1, MIDDLEPAN ); + gpItemPointer = NULL; + fMapInventoryItem = FALSE; + + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szSMilitiaResourceText[0], Item[usItem].szItemName ); + } + + if ( _KeyDown( 89 ) ) + { + for ( UINT32 iNumber = 0; iNumber < pInventoryPoolList.size( ); ++iNumber ) + { + if ( pInventoryPoolList[iNumber].object.usItem == usItem && pInventoryPoolList[iNumber].usFlags & WORLD_ITEM_REACHABLE ) + { + if ( ConvertItemToResources( pInventoryPoolList[iNumber].object, TRUE, dvalue_Gun, dvalue_Armour, dvalue_Misc ) ) + { + AddResources( dvalue_Gun, dvalue_Armour, dvalue_Misc ); + + dvalue_Gun = dvalue_Armour = dvalue_Misc = 0; + + DeleteObj( &pInventoryPoolList[iNumber].object ); + } + } + } + } + + if ( fShowMapInventoryPool ) + HandleButtonStatesWhileMapInventoryActive( ); + } // access description box directly if CTRL is pressed for stack items - if((twItem->object.ubNumberOfObjects == 1 || _KeyDown( CTRL )) && fValidPointer) + else if((twItem->object.ubNumberOfObjects == 1 || _KeyDown( CTRL )) && fValidPointer) { fShowInventoryFlag = TRUE; @@ -2459,49 +2514,6 @@ void BeginInventoryPoolPtr( OBJECTTYPE *pInventorySlot ) if ( fShowMapInventoryPool ) HandleButtonStatesWhileMapInventoryActive(); } - // Flugente: convert gear to resources - else if ( _KeyDown( ALT ) && _KeyDown( SHIFT ) && gGameExternalOptions.fMilitiaResources && !gGameExternalOptions.fMilitiaUseSectorInventory ) - { - FLOAT dvalue_Gun = 0; - FLOAT dvalue_Armour = 0; - FLOAT dvalue_Misc = 0; - - UINT16 usItem = gItemPointer.usItem; - - if ( ConvertItemToResources( gItemPointer, TRUE, dvalue_Gun, dvalue_Armour, dvalue_Misc ) ) - { - AddResources( dvalue_Gun, dvalue_Armour, dvalue_Misc ); - - dvalue_Gun = dvalue_Armour = dvalue_Misc = 0; - - PlayJA2Sample( COMPUTER_BEEP2_IN, RATE_11025, 15, 1, MIDDLEPAN ); - gpItemPointer = NULL; - fMapInventoryItem = FALSE; - - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szSMilitiaResourceText[0], Item[usItem].szItemName ); - } - - if ( _KeyDown( 89 ) ) - { - for ( UINT32 iNumber = 0; iNumber < pInventoryPoolList.size( ); ++iNumber ) - { - if ( pInventoryPoolList[iNumber].object.usItem == usItem && pInventoryPoolList[iNumber].usFlags & WORLD_ITEM_REACHABLE ) - { - if ( ConvertItemToResources( pInventoryPoolList[iNumber].object, TRUE, dvalue_Gun, dvalue_Armour, dvalue_Misc ) ) - { - AddResources( dvalue_Gun, dvalue_Armour, dvalue_Misc ); - - dvalue_Gun = dvalue_Armour = dvalue_Misc = 0; - - DeleteObj( &pInventoryPoolList[iNumber].object ); - } - } - } - } - - if ( fShowMapInventoryPool ) - HandleButtonStatesWhileMapInventoryActive( ); - } else if ( _KeyDown( ALT ) && gGameExternalOptions.fSellAll )//Sell Item { // HEADROCK HAM 5: Added argument @@ -4241,7 +4253,7 @@ INT32 SellItem( OBJECTTYPE& object, BOOLEAN fAll, BOOLEAN useModifier ) { //we are selling ammo UINT16 magSize = Magazine[ Item[ usItemType ].ubClassIndex ].ubMagSize; - for (UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ubLoop++) + for (UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ubLoop++) { iPrice += (INT32)( itemPrice * (float) object[ubLoop]->data.ubShotsLeft / magSize ); } @@ -4249,7 +4261,7 @@ INT32 SellItem( OBJECTTYPE& object, BOOLEAN fAll, BOOLEAN useModifier ) //CHRISL: If we're dealing with money, we want to use the money's amount and just return that value with no modification else if(Item[usItemType].usItemClass == IC_MONEY) { - for (UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ubLoop++) + for (UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ubLoop++) { iPrice += (INT32)(object[ubLoop]->data.money.uiMoneyAmount); } @@ -4259,7 +4271,7 @@ INT32 SellItem( OBJECTTYPE& object, BOOLEAN fAll, BOOLEAN useModifier ) { //CHRISL: If we're selling an LBE Item, we need to verify if it's an LBENODE, first. If it is, we need to sell // everything stored in the LBENODE before we sell teh LBE Item itself. - for(UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ++ubLoop) + for(UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ++ubLoop) { if(object.IsActiveLBE(ubLoop) == true) { @@ -4290,7 +4302,7 @@ INT32 SellItem( OBJECTTYPE& object, BOOLEAN fAll, BOOLEAN useModifier ) else { //we are selling a gun or something - it could be stacked or single, and if single it could have attachments - for (UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ubLoop++) + for (UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ubLoop++) { iPrice += ( itemPrice * object[ubLoop]->data.objectStatus / 100 ); for (attachmentList::iterator iter = object[ubLoop]->attachments.begin(); iter != object[ubLoop]->attachments.end(); ++iter) { diff --git a/Strategic/Map Screen Interface Map.cpp b/Strategic/Map Screen Interface Map.cpp index da7dd149..e2fbc28b 100644 --- a/Strategic/Map Screen Interface Map.cpp +++ b/Strategic/Map Screen Interface Map.cpp @@ -709,10 +709,10 @@ UINT32 DrawMap( void ) //MAP_VIEW_START_X = (SCREEN_WIDTH - 370); //MAP_VIEW_START_Y = 10; - MapScreenRect.iLeft = MAP_VIEW_START_X+MAP_GRID_X - 2; - MapScreenRect.iTop = MAP_VIEW_START_Y+MAP_GRID_Y - 1; + MapScreenRect.iLeft = MAP_VIEW_START_X + MAP_GRID_X - 2; + MapScreenRect.iTop = MAP_VIEW_START_Y + MAP_GRID_Y - 1; MapScreenRect.iRight = MAP_VIEW_START_X + MAP_VIEW_WIDTH - 1 + MAP_GRID_X; - MapScreenRect.iBottom = MAP_VIEW_START_Y+MAP_VIEW_HEIGHT-10+MAP_GRID_Y; + MapScreenRect.iBottom = MAP_VIEW_START_Y + MAP_VIEW_HEIGHT - 10 + MAP_GRID_Y; //MapScreenRect={ (MAP_VIEW_START_X+MAP_GRID_X - 2), ( MAP_VIEW_START_Y+MAP_GRID_Y - 1), MAP_VIEW_START_X + MAP_VIEW_WIDTH - 1 + MAP_GRID_X , MAP_VIEW_START_Y+MAP_VIEW_HEIGHT-10+MAP_GRID_Y}; @@ -7816,14 +7816,14 @@ void MilitiaGroupBoxButtonCallback( GUI_BUTTON *btn, INT32 reason ) void DisplayMilitiaGroupBox() { - // if we play with a limited militia pool, show us how many we have - if ( fShowMilitia && gGameExternalOptions.fMilitiaVolunteerPool ) + if ( (fShowMilitia || (_KeyDown( ALT ) && fShowMapInventoryPool)) && (gGameExternalOptions.fMilitiaVolunteerPool || (gGameExternalOptions.fMilitiaResources && !gGameExternalOptions.fMilitiaUseSectorInventory)) ) { SetFont( FONT12ARIAL ); INT32 x = MapScreenRect.iLeft + 20; - INT32 y = MapScreenRect.iBottom - 10; + INT32 y = MapScreenRect.iBottom + 10; + // if we play with a limited militia pool, show us how many we have if ( gGameExternalOptions.fMilitiaVolunteerPool ) { CHAR16 sString[200]; @@ -7839,11 +7839,10 @@ void DisplayMilitiaGroupBox() swprintf( sString, szMilitiaStrategicMovementText[8], volunteers, CalcHourlyVolunteerGain( ) ); mprintf( x, y, sString ); - - x += StringPixLength( sString, FONT12ARIAL ); - y -= 10; } + y -= GetFontHeight( FONT12ARIAL ) + 2; + if ( gGameExternalOptions.fMilitiaResources && !gGameExternalOptions.fMilitiaUseSectorInventory ) { x = MapScreenRect.iLeft + 20; @@ -7853,6 +7852,24 @@ void DisplayMilitiaGroupBox() FLOAT val_gun, val_armour, val_misc; GetResources( val_gun, val_armour, val_misc ); + SetFontForeground( FONT_LTBLUE ); + swprintf( sString, szSMilitiaResourceText[3] ); + mprintf( x, y, sString ); + x += 5 + StringPixLength( sString, FONT12ARIAL ); + + if ( val_misc > 20.0 ) + SetFontForeground( FONT_FCOLOR_GREEN ); + else if ( val_misc > 10.0 ) + SetFontForeground( FONT_FCOLOR_YELLOW ); + else + SetFontForeground( FONT_FCOLOR_RED ); + + swprintf( sString, L"%5.2f", val_misc ); + mprintf( x, y, sString ); + + x = MapScreenRect.iLeft + 20; + y -= GetFontHeight( FONT12ARIAL ) + 2; + SetFontForeground( FONT_ORANGE ); swprintf( sString, szSMilitiaResourceText[1] ); mprintf( x, y, sString ); @@ -7883,25 +7900,6 @@ void DisplayMilitiaGroupBox() swprintf( sString, L"%5.2f", val_armour ); mprintf( x, y, sString ); - x += 5 + StringPixLength( sString, FONT12ARIAL ); - - SetFontForeground( FONT_LTBLUE ); - swprintf( sString, szSMilitiaResourceText[3] ); - mprintf( x, y, sString ); - x += 5 + StringPixLength( sString, FONT12ARIAL ); - - if ( val_misc > 20.0 ) - SetFontForeground( FONT_FCOLOR_GREEN ); - else if ( val_misc > 10.0 ) - SetFontForeground( FONT_FCOLOR_YELLOW ); - else - SetFontForeground( FONT_FCOLOR_RED ); - - swprintf( sString, L"%5.2f", val_misc ); - mprintf( x, y, sString ); - x += 5 + StringPixLength( sString, FONT12ARIAL ); - - y -= 10; } } diff --git a/Strategic/Town Militia.cpp b/Strategic/Town Militia.cpp index 65767f06..e8562ed0 100644 --- a/Strategic/Town Militia.cpp +++ b/Strategic/Town Militia.cpp @@ -2645,7 +2645,7 @@ BOOLEAN ConvertItemToResources( OBJECTTYPE& object, BOOLEAN fAll, FLOAT& arValue } UINT32 bullets = 0; - for ( UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ++ubLoop ) + for ( UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ++ubLoop ) { bullets += object[ubLoop]->data.ubShotsLeft; } @@ -2654,7 +2654,7 @@ BOOLEAN ConvertItemToResources( OBJECTTYPE& object, BOOLEAN fAll, FLOAT& arValue } else { - for ( UINT8 ubLoop = 0; ubLoop < object.ubNumberOfObjects; ++ubLoop ) + for ( UINT8 ubLoop = 0; ubLoop < ubNumberOfObjects; ++ubLoop ) { if ( Item[usItemType].usItemClass & IC_GUN ) {