From f0083162751931561b6f62e30fe08dfe3ea11992 Mon Sep 17 00:00:00 2001 From: Kriplo Date: Fri, 25 Oct 2013 18:48:37 +0000 Subject: [PATCH] Brief: //dnl ch74 - Couple map editor fixes. Details: - Map loading not properly set Vanilla global variable switch. - Loading AIMNAS maps of version 28 cause CTD due to incorrect StackedObjectData loading sizeof. - Only in editor mode and if NAS setting is on inseparable and default attachments will be always add, but default attachments will not, so older maps should be converted from mapeditor to new version. - Fix CTD if try to place items from tab selection which contains no items. - There was missing part from ch4 for mouse wheel support in mapeditor. - There was conflict between keyboard and mouse events creating problems when try to select taskbar options by mouse. - Fix annoying message of using improper attachment during item place if item consist of default or inseparable attachments. - Remove hints to display if loading map from editor. - Fix CTD if have previously selected merc and loading another (smaller) map. - Saving map as Vanilla will check if attachment is valid for 1.12, that means you will lost some stuff from NIV if save in Vanilla mode, so you should always save map in newest format if want play map in 1.13. - Add correct weight recalculation when saving in Vanilla format using old OBJECTTYPE. - Remove entry points check during map save as Scheinworld reported problem with basement levels and similar maps which doesn't need entry points. - Fix displaying wrong map version in summary window because MapInfo is incorrectly saved in all previous mapeditors. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6530 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Editor/EditorItems.cpp | 4 ++++ Editor/Item Statistics.cpp | 2 +- Editor/LoadScreen.cpp | 10 +--------- Editor/editscreen.cpp | 5 ++--- SaveLoadGame.cpp | 24 ++++++++++++++++++++---- Standard Gaming Platform/input.cpp | 17 +++++++++++++---- Standard Gaming Platform/input.h | 14 +++++--------- Tactical/Item Types.cpp | 16 ++++++++++++---- Tactical/Item Types.h | 2 +- Tactical/Items.cpp | 16 +++++++++++++++- Tactical/World Items.cpp | 20 +++++++++++++++----- TileEngine/worlddef.cpp | 17 ++++++++++++----- 12 files changed, 101 insertions(+), 46 deletions(-) diff --git a/Editor/EditorItems.cpp b/Editor/EditorItems.cpp index 3cda9787..7e38e3e9 100644 --- a/Editor/EditorItems.cpp +++ b/Editor/EditorItems.cpp @@ -907,7 +907,11 @@ void AddSelectedItemToWorld( INT32 sGridNo ) fEditorCreateItemFromKeyboard = FALSE; } else + { + if(!eInfo.pusItemIndex)//dnl ch74 181013 + return; CreateItem( eInfo.pusItemIndex[eInfo.sSelItemIndex], 100, &gTempObject ); + } } usFlags = 0; switch( gTempObject.usItem ) diff --git a/Editor/Item Statistics.cpp b/Editor/Item Statistics.cpp index 80e6de30..e23aeeb9 100644 --- a/Editor/Item Statistics.cpp +++ b/Editor/Item Statistics.cpp @@ -1755,7 +1755,7 @@ void ReEvaluateAttachmentStatii() case 5: usAttachment = UNDER_GLAUNCHER; break; default: Assert(0); continue; } - if( ValidItemAttachment( gpItem, usAttachment, TRUE ) ) + if( ValidItemAttachment( gpItem, usAttachment, TRUE, FALSE ) )//dnl ch74 211013 EnableButton( guiAttachmentButton[ i ] ); else DisableButton( guiAttachmentButton[ i ] ); diff --git a/Editor/LoadScreen.cpp b/Editor/LoadScreen.cpp index eb086cfc..67b8249c 100644 --- a/Editor/LoadScreen.cpp +++ b/Editor/LoadScreen.cpp @@ -46,8 +46,6 @@ #include //dnl ch37 110909 #endif -INT16 gsMouseWheelDeltaValue; - //=========================================================================== BOOLEAN gfErrorCatch = FALSE; @@ -1117,6 +1115,7 @@ UINT32 ProcessFileIO() fRaiseWorld = FALSE;//dnl ch3 210909 ShowHighGround(4);//dnl ch41 210909 SetRenderCenter(WORLD_COLS/2, WORLD_ROWS/2);//dnl ch43 280909 + gsSelectedMercGridNo = 0;//dnl ch74 241013 to prevent CTD in IndicateSelectedMerc after loading if( gfShowPits ) AddAllPits(); @@ -1271,10 +1270,3 @@ UINT32 LoadSaveScreenShutdown( ) } #endif - - - - - - - diff --git a/Editor/editscreen.cpp b/Editor/editscreen.cpp index d9464422..0ac8682b 100644 --- a/Editor/editscreen.cpp +++ b/Editor/editscreen.cpp @@ -165,7 +165,7 @@ BOOLEAN fDontUseRandom = TRUE;//dnl ch8 210909 BOOLEAN fDontUseClick = FALSE;//dnl ch7 210909 BOOLEAN fShowHighGround = FALSE;//dnl ch2 210909 BOOLEAN fRaiseWorld = FALSE;//dnl ch3 210909 -BOOLEAN gfVanillaMode = TRUE;//dnl ch33 091009 +BOOLEAN gfVanillaMode = FALSE;//dnl ch33 091009 //dnl ch74 191013 by default is better to save all maps in newest format BOOLEAN gfResizeMapOnLoading = FALSE; INT32 TestButtons[10]; @@ -1379,14 +1379,13 @@ void HandleJA2ToolbarSelection( void ) // // Select action to be taken based on the user's current key press (if any) // - extern INT8 gbCurrSelect; extern void DeleteSelectedMercsItem(); void HandleKeyboardShortcuts( ) { static INT32 iSavedMode; static BOOLEAN fShowTrees = TRUE; - while( DequeueEvent( &EditorInputEvent ) ) + while( PeekSpecificEvent(KEY_DOWN | KEY_UP | KEY_REPEAT) && DequeueEvent( &EditorInputEvent ) )//dnl ch74 221013 { if( !HandleSummaryInput( &EditorInputEvent ) && !HandleTextInput( &EditorInputEvent ) && EditorInputEvent.usEvent == KEY_DOWN ) { diff --git a/SaveLoadGame.cpp b/SaveLoadGame.cpp index 0a10a0e9..b2f3fcbc 100644 --- a/SaveLoadGame.cpp +++ b/SaveLoadGame.cpp @@ -141,6 +141,7 @@ #include "connect.h" #include "Map Screen Interface Map Inventory.h"//dnl ch51 081009 +#include "Sys Globals.h"//dnl ch74 201013 ///////////////////////////////////////////////////// // @@ -2602,8 +2603,8 @@ BOOLEAN StackedObjectData::Load( INT8** hBuffer, float dMajorMapVersion, UINT8 u // are now used. Due to this, we only have to reduce for the sizes of bDirtLevel and sObjectFlag, but not sRepairThreshold (sizeof(ObjectData) is now 40). // But of course, we now 'read' the values for sRepairThreshold, but there weren't any in older map versions, resulting in garbage values - we therefore set that manually to 100 // Of course, once the ObjectData-Class is altered, this has to be altered as well! - LOADDATA(&(this->data), *hBuffer, sizeof(ObjectData) - (sizeof(this->data.bDirtLevel) + sizeof(this->data.sObjectFlag) ) ); - + //dnl ch74 241013 We cannot change past so hardcode 32 simply because that was sizeof(ObjectData) before current and all future changes ;-) + LOADDATA(&(this->data), *hBuffer, /*sizeof(ObjectData) - (sizeof(this->data.bDirtLevel) + sizeof(this->data.sObjectFlag) )*/32); this->data.sRepairThreshold = 100; } else @@ -2797,7 +2798,7 @@ BOOLEAN OBJECTTYPE::Load( INT8** hBuffer, float dMajorMapVersion, UINT8 ubMinorM LOADDATA( &OldSavedObject101, *hBuffer, sizeof(OLD_OBJECTTYPE_101) ); (*this) = OldSavedObject101; } - +#if 0//dnl ch74 201013 only inseparable attachments should always exist but rather at gun status instead of 100%, if default attachments is missing then problem is map which should be fixed by modders with latest mapeditor or have really old savegame but that should not be fix just by magically add missing default attachment :-) RemoveProhibitedAttachments(NULL, this, (*this).usItem); //Madd: ok, so this drives me nuts -- why bother with default attachments if the map isn't going to load them for you? @@ -2811,7 +2812,22 @@ BOOLEAN OBJECTTYPE::Load( INT8** hBuffer, float dMajorMapVersion, UINT8 ubMinorM CreateItem(Item [ (*this).usItem ].defaultattachments[cnt],100,&defaultAttachment); this->AttachObject(NULL,&defaultAttachment, FALSE); } - +#else + if(this->usItem && (gGameOptions.ubAttachmentSystem || gfEditMode)) + { + RemoveProhibitedAttachments(NULL, this, this->usItem); + //Madd: ok, so this drives me nuts -- why bother with default attachments if the map isn't going to load them for you? + //this should fix that... + for(UINT8 cnt=0; cntusItem].defaultattachments[cnt] == NONE || !(gGameOptions.ubAttachmentSystem && Item[Item[this->usItem].defaultattachments[cnt]].inseparable || gfEditMode)) + break; + OBJECTTYPE defaultAttachment; + CreateItem(Item[this->usItem].defaultattachments[cnt], (*this)[0]->data.gun.bGunStatus, &defaultAttachment); + this->AttachObject(NULL, &defaultAttachment, FALSE); + } + } +#endif return TRUE; } diff --git a/Standard Gaming Platform/input.cpp b/Standard Gaming Platform/input.cpp index 043b8a11..49840403 100644 --- a/Standard Gaming Platform/input.cpp +++ b/Standard Gaming Platform/input.cpp @@ -14,7 +14,6 @@ //** #include "types.h" #include - #include //dnl #include #include #include "debug.h" @@ -80,8 +79,8 @@ UINT32 guiX2ButtonRepeatTimer; BOOLEAN gfTrackMousePos; // TRUE = queue mouse movement events, FALSE = don't BOOLEAN gfLeftButtonState; // TRUE = Pressed, FALSE = Not Pressed BOOLEAN gfRightButtonState; // TRUE = Pressed, FALSE = Not Pressed -BOOLEAN gfMiddleButtonState;//dnl TRUE = Pressed, FALSE = Not Pressed -//INT16 gsMouseWheelDeltaValue;//dnl positive value indicates that the wheel was rotated forward, negative value indicates that the wheel was rotated backward, and user handler procedure for mouse wheel should restore after usege this value to zero! +BOOLEAN gfMiddleButtonState;//dnl ch4 210909 TRUE = Pressed, FALSE = Not Pressed +INT16 gsMouseWheelDeltaValue;//dnl ch4 210909 positive value indicates that the wheel was rotated forward, negative value indicates that the wheel was rotated backward, and user handler procedure for mouse wheel should restore after usege this value to zero! BOOLEAN gfX1ButtonState; BOOLEAN gfX2ButtonState; @@ -188,7 +187,8 @@ LRESULT CALLBACK MouseHandler(int Code, WPARAM wParam, LPARAM lParam) QueueEvent(X2_BUTTON_UP, 0, uiParam); } break; - case WM_MOUSEWHEEL: + case WM_MOUSEWHEEL: + gsMouseWheelDeltaValue = GetMouseWheelDeltaValue(((MOUSEHOOKSTRUCTEX *)lParam)->mouseData);//dnl ch4 210909 if(p_mhs->mouseData==(WHEEL_DELTA<<16)) //up MessageBeep(-1); QueueEvent(MOUSE_WHEEL_UP, 0, uiParam); if(p_mhs->mouseData==(-WHEEL_DELTA<<16)) //dn MessageBeep(0x00000040L); @@ -1754,3 +1754,12 @@ INT16 GetMouseWheelDeltaValue( UINT32 wParam ) return( sDelta / WHEEL_DELTA ); } +BOOLEAN PeekSpecificEvent(UINT32 uiMaskFlags)//dnl ch74 221013 +{ + BOOLEAN result = FALSE; + EnterCriticalSection(&gcsInputQueueLock); + if(gusQueueCount > 0 && (gEventQueue[gusHeadIndex].usEvent & uiMaskFlags)) + result = TRUE; + LeaveCriticalSection(&gcsInputQueueLock); + return(result); +} diff --git a/Standard Gaming Platform/input.h b/Standard Gaming Platform/input.h index ab20d26f..a6ac866b 100644 --- a/Standard Gaming Platform/input.h +++ b/Standard Gaming Platform/input.h @@ -30,9 +30,6 @@ #define X2_BUTTON_DOWN 0x8040 #define X2_BUTTON_UP 0x8050 #define X2_BUTTON_REPEAT 0x8060 -//#define MIDDLE_BUTTON_UP 0x1000//dnl -//#define MIDDLE_BUTTON_DOWN 0x2000//dnl - #define SHIFT_DOWN 0x01 #define CTRL_DOWN 0x02 @@ -117,25 +114,24 @@ BOOLEAN InputEventInside(InputAtom *Event, UINT32 uiX1, UINT32 uiY1, UINT32 uiX2 INT16 GetMouseWheelDeltaValue( UINT32 wParam ); extern void DequeueAllKeyBoardEvents(); - +extern BOOLEAN PeekSpecificEvent(UINT32 uiMaskFlags);//dnl ch74 221013 extern BOOLEAN gfKeyState[256]; // TRUE = Pressed, FALSE = Not Pressed extern INT16 gusMouseXPos; // X position of the mouse on screen extern INT16 gusMouseYPos; // y position of the mouse on screen -extern INT16 gsMouseWheelDeltaValue;//dnl +extern INT16 gsMouseWheelDeltaValue;//dnl ch4 210909 extern BOOLEAN gfLeftButtonState; // TRUE = Pressed, FALSE = Not Pressed extern BOOLEAN gfRightButtonState; // TRUE = Pressed, FALSE = Not Pressed -extern BOOLEAN gfMiddleButtonState;//dnl TRUE = Pressed, FALSE = Not Pressed +extern BOOLEAN gfMiddleButtonState;//dnl ch4 210909 TRUE = Pressed, FALSE = Not Pressed extern BOOLEAN gfSGPInputReceived; - #define _KeyDown(a) gfKeyState[(a)] #define _LeftButtonDown gfLeftButtonState #define _RightButtonDown gfRightButtonState -#define _MiddleButtonDown gfMiddleButtonState//dnl -#define _WheelValue gsMouseWheelDeltaValue//dnl +#define _MiddleButtonDown gfMiddleButtonState//dnl ch4 210909 +#define _WheelValue gsMouseWheelDeltaValue//dnl ch4 210909 #define _MouseXPos gusMouseXPos #define _MouseYPos gusMouseYPos diff --git a/Tactical/Item Types.cpp b/Tactical/Item Types.cpp index 721124b6..5ae4a219 100644 --- a/Tactical/Item Types.cpp +++ b/Tactical/Item Types.cpp @@ -1125,13 +1125,18 @@ OLD_OBJECTTYPE_101& OLD_OBJECTTYPE_101::operator=(OBJECTTYPE& src) if((void*)this != (void*)&src) { memset(this, 0, sizeof(OLD_OBJECTTYPE_101)); + if(src.usItem >= OLD_MAXITEMS)//dnl ch74 191013 + { + this->fFlags = OBJECT_UNDROPPABLE; + return(*this); + } this->usItem = src.usItem; this->ubNumberOfObjects = src.ubNumberOfObjects; - this->ubWeight = (UINT8)CalculateObjectWeight(&src);//dnl??? need test, probably this should be calculated after you create old object this->fFlags = src.fFlags; this->ubMission = src.ubMission; this->ubNumberOfObjects = src.ubNumberOfObjects; this->usItem = src.usItem; + this->ubWeight = Item[this->usItem].ubWeight * this->ubNumberOfObjects;//dnl ch74 191013 if(ubNumberOfObjects == 1) { this->ugYucky.bGunStatus = (INT8)src[0]->data.gun.bGunStatus; @@ -1158,6 +1163,8 @@ OLD_OBJECTTYPE_101& OLD_OBJECTTYPE_101::operator=(OBJECTTYPE& src) this->ugYucky.usGunAmmoItem = src[0]->data.gun.usGunAmmoItem; this->ugYucky.bGunAmmoStatus = (INT8)src[0]->data.gun.bGunAmmoStatus; this->ugYucky.ubGunState = src[0]->data.gun.ubGunState; + if(this->ugYucky.ubGunAmmoType && this->ugYucky.ubGunShotsLeft)//dnl ch74 191013 + this->ubWeight += Item[this->ugYucky.usGunAmmoItem].ubWeight; break; } @@ -1211,9 +1218,10 @@ OLD_OBJECTTYPE_101& OLD_OBJECTTYPE_101::operator=(OBJECTTYPE& src) int i = 0; for(attachmentList::iterator iter=src[0]->attachments.begin(); iter!=src[0]->attachments.end(); ++iter) { - //dnl??? this part should check if attachment is valid for 1.12, but then means you will lost some stuff from NIV, and if you wnat play map in older 1.13 versions this is not good - //if(iter->usItem) - // ; + //dnl ch74 191013 check if attachment is valid for 1.12, that means you will lost some stuff from NIV if save in Vanilla mode, so you should always save map in newest format if want play map in 1.13 + if(iter->usItem >= OLD_MAXITEMS || iter->usItem == NONE) + continue; + this->ubWeight += Item[iter->usItem].ubWeight; this->usAttachItem[i] = iter->usItem; this->bAttachStatus[i] = (INT8)(*iter)[0]->data.objectStatus; if(++i >= OLD_MAX_ATTACHMENTS_101) diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index 2e246953..0a98ffd5 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -1249,7 +1249,7 @@ typedef enum ePOCKET_TYPE #define FIRST_ARMOUR 161 #define FIRST_MISC 201 #define FIRST_KEY 271 - +#define OLD_MAXITEMS 351//dnl ch74 191013 #define NOTHING NONE typedef enum { diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index c533aa66..acade455 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -56,6 +56,7 @@ #include "drugs and alcohol.h" #include "Food.h" #include "opplist.h" + #include "Sys Globals.h"//dnl ch74 201013 #endif #ifdef JA2UB @@ -7842,6 +7843,7 @@ BOOLEAN CreateItem( UINT16 usItem, INT16 bStatus, OBJECTTYPE * pObj ) { (*pObj).fFlags |= OBJECT_UNDROPPABLE; } +#if 0//dnl ch74 201013 create default attachments rather at gun status instead of 100% for(UINT8 cnt = 0; cnt < MAX_DEFAULT_ATTACHMENTS; cnt++){ if(Item [ usItem ].defaultattachments[cnt] == 0) break; @@ -7851,9 +7853,21 @@ BOOLEAN CreateItem( UINT16 usItem, INT16 bStatus, OBJECTTYPE * pObj ) CreateItem(Item [ usItem ].defaultattachments[cnt],100,&defaultAttachment); pObj->AttachObject(NULL,&defaultAttachment, FALSE); } +#else + if(gGameOptions.ubAttachmentSystem || gfEditMode) + { + for(UINT8 cnt=0; cntdata.gun.bGunStatus, &defaultAttachment); + pObj->AttachObject(NULL, &defaultAttachment, FALSE); + } + } +#endif } - DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CreateItem: return %d",fRet)); return( fRet ); } diff --git a/Tactical/World Items.cpp b/Tactical/World Items.cpp index 92f4b1e2..60c45020 100644 --- a/Tactical/World Items.cpp +++ b/Tactical/World Items.cpp @@ -559,13 +559,21 @@ void TrashWorldItems() } } -//dnl ch33 150909 +//dnl ch33 150909 //dnl ch74 191013 void SaveWorldItemsToMap(HWFILE fp, float dMajorMapVersion, UINT8 ubMinorMapVersion) { - UINT32 i, uiBytesWritten, uiActualNumWorldItems; + UINT32 i, uiBytesWritten, uiActualNumWorldItems=0; OLD_WORLDITEM_101 oldWorldItem; - uiActualNumWorldItems = GetNumUsedWorldItems(); + for(i=0; i= OLD_MAXITEMS) + continue; + uiActualNumWorldItems++; + } + } FileWrite(fp, &uiActualNumWorldItems, sizeof(UINT32), &uiBytesWritten); for(i=0; i= OLD_MAXITEMS) + continue; oldWorldItem = gWorldItems[i]; FileWrite(fp, &oldWorldItem, sizeof(OLD_WORLDITEM_101), &uiBytesWritten); } @@ -704,7 +714,7 @@ void LoadWorldItemsFromMap( INT8 **hBuffer, float dMajorMapVersion, int ubMinorM { //all armed bombs are buried dummyItem.bVisible = BURIED; } - +#if 0//dnl ch74 201013 this is already done in OBJECTTYPE::Load() //Madd: ok, so this drives me nuts -- why bother with default attachments if the map isn't going to load them for you? //this should fix that... for(UINT8 cnt = 0; cnt < MAX_DEFAULT_ATTACHMENTS; cnt++) @@ -716,7 +726,7 @@ void LoadWorldItemsFromMap( INT8 **hBuffer, float dMajorMapVersion, int ubMinorM CreateItem(Item [ dummyItem.object.usItem ].defaultattachments[cnt],100,&defaultAttachment); dummyItem.object.AttachObject(NULL,&defaultAttachment, FALSE); } - +#endif AddItemToPoolAndGetIndex( dummyItem.sGridNo, &dummyItem.object, dummyItem.bVisible, dummyItem.ubLevel, dummyItem.usFlags, dummyItem.bRenderZHeightAboveLevel, dummyItem.soldierID, &iItemIndex ); gWorldItems[ iItemIndex ].ubNonExistChance = dummyItem.ubNonExistChance; } diff --git a/TileEngine/worlddef.cpp b/TileEngine/worlddef.cpp index bc80895f..a93ec261 100644 --- a/TileEngine/worlddef.cpp +++ b/TileEngine/worlddef.cpp @@ -2284,10 +2284,9 @@ BOOLEAN SaveWorld(const STR8 puiFilename, FLOAT dMajorMapVersion, UINT8 ubMinorM if( uiFlags & MAP_WORLDLIGHTS_SAVED ) { - SaveMapLights( hfile ); } - +#if 0//dnl ch74 191013 from 050611 Scheinworld reported problem with basement levels and similar maps which doesn't need entry points so decide to remove this check completely if(gMapInformation.sCenterGridNo == -1 || gMapInformation.ubEditorSmoothingType == SMOOTHING_NORMAL && (gMapInformation.sNorthGridNo == -1 && gMapInformation.sEastGridNo == -1 && gMapInformation.sSouthGridNo == -1 && gMapInformation.sWestGridNo == -1))//dnl ch17 290909 { swprintf(gzErrorCatchString, L"SAVE ABORTED! Center and at least one of (N,S,E,W) entry point should be set."); @@ -2295,6 +2294,8 @@ BOOLEAN SaveWorld(const STR8 puiFilename, FLOAT dMajorMapVersion, UINT8 ubMinorM FileClose(hfile); return(FALSE); } +#endif + gMapInformation.ubMapVersion = ubMinorMapVersion;//dnl ch74 241013 all this years MapInfo saves incorrect version :-( SaveMapInformation(hfile, dMajorMapVersion, ubMinorMapVersion);//dnl ch33 150909 if( uiFlags & MAP_FULLSOLDIER_SAVED ) @@ -2602,6 +2603,8 @@ BOOLEAN EvaluateWorld(STR8 pSector, UINT8 ubLevel) // Read Map Information pSummary->MapInfo.Load(&pBuffer, dMajorMapVersion); + if(pSummary->MapInfo.ubMapVersion != ubMinorMapVersion)//dnl ch74 241013 stupid fix because MapInfo is incorrectly saved in all previous mapeditor if you edit existing map + pSummary->MapInfo.ubMapVersion = ubMinorMapVersion; if(uiFlags & MAP_FULLSOLDIER_SAVED) { @@ -2882,7 +2885,8 @@ BOOLEAN LoadWorld(const STR8 puiFilename, FLOAT* pMajorMapVersion, UINT8* pMinor gfCaves = FALSE; // Flugente: select loadscreen hint - SetNewLoadScreenHint(); + if(!gfEditMode)//dnl ch74 211013 + SetNewLoadScreenHint(); SetRelativeStartAndEndPercentage(0, 0, 1, L"Trashing world..."); #ifdef JA2TESTVERSION @@ -2919,7 +2923,8 @@ BOOLEAN LoadWorld(const STR8 puiFilename, FLOAT* pMajorMapVersion, UINT8* pMinor // We enlarge the map SetWorldSize(iNewMapWorldRows, iNewMapWorldCols); - // Uncheck "vanilla map saving", because it is not allowed on maps > 160x160 + // Uncheck "vanilla map saving", because it is not allowed on maps > 160x160 + gfVanillaMode = FALSE;//dnl ch74 191013 UnclickEditorButton(OPTIONS_VANILLA_MODE); // Reset @@ -2933,12 +2938,14 @@ BOOLEAN LoadWorld(const STR8 puiFilename, FLOAT* pMajorMapVersion, UINT8* pMinor // We still have the "normal" map size AND the map is saved in vanilla format if ((iRowSize <= OLD_WORLD_ROWS && iRowSize <= OLD_WORLD_COLS) && (dMajorMapVersion == VANILLA_MAJOR_MAP_VERSION && ubMinorMapVersion == VANILLA_MINOR_MAP_VERSION)) { - // Check "vanilla map saving" + // Check "vanilla map saving" + gfVanillaMode = TRUE;//dnl ch74 191013 ClickEditorButton(OPTIONS_VANILLA_MODE); } else { // Uncheck "vanilla map saving" + gfVanillaMode = FALSE;//dnl ch74 191013 UnclickEditorButton(OPTIONS_VANILLA_MODE); } }