diff --git a/Editor/Button Defines.h b/Editor/Button Defines.h index d6482d7f..677aa6ce 100644 --- a/Editor/Button Defines.h +++ b/Editor/Button Defines.h @@ -70,6 +70,7 @@ enum ITEMS_EQUIPMENT3, ITEMS_TRIGGERS, ITEMS_KEYS, + ITEMS_RANDOMITEM, ITEMS_LEFTSCROLL, ITEMS_RIGHTSCROLL, LAST_ITEMS_BUTTON = ITEMS_RIGHTSCROLL, //MapInfo menu diff --git a/Editor/Editor Callback Prototypes.h b/Editor/Editor Callback Prototypes.h index 808d5349..3cb2ff60 100644 --- a/Editor/Editor Callback Prototypes.h +++ b/Editor/Editor Callback Prototypes.h @@ -104,6 +104,7 @@ void ItemsEquipment3Callback(GUI_BUTTON *btn,INT32 reason); void ItemsTriggersCallback(GUI_BUTTON *btn,INT32 reason); void ItemsKeysCallback(GUI_BUTTON *btn, INT32 reason); void ItemsLeftScrollCallback(GUI_BUTTON *btn, INT32 reason); +void ItemsRandomItemCallback(GUI_BUTTON *btn, INT32 reason); void ItemsRightScrollCallback(GUI_BUTTON *btn, INT32 reason); void MouseMovedInItemsRegion(MOUSE_REGION *reg, INT32 reason); void MouseClickedInItemsRegion(MOUSE_REGION *reg, INT32 reason); diff --git a/Editor/Editor Callbacks.cpp b/Editor/Editor Callbacks.cpp index 2aad023c..cca995fa 100644 --- a/Editor/Editor Callbacks.cpp +++ b/Editor/Editor Callbacks.cpp @@ -787,6 +787,12 @@ void ItemsKeysCallback(GUI_BUTTON *btn,INT32 reason) SetEditorItemsTaskbarMode( ITEMS_KEYS ); } +void ItemsRandomItemCallback(GUI_BUTTON *btn,INT32 reason) +{ + if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP) + SetEditorItemsTaskbarMode( ITEMS_RANDOMITEM ); +} + void ItemsLeftScrollCallback(GUI_BUTTON *btn, INT32 reason) { if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP) diff --git a/Editor/Editor Modes.cpp b/Editor/Editor Modes.cpp index a274ec8f..a2a128fd 100644 --- a/Editor/Editor Modes.cpp +++ b/Editor/Editor Modes.cpp @@ -72,6 +72,10 @@ void SetEditorItemsTaskbarMode( UINT16 usNewMode ) ClickEditorButton( ITEMS_KEYS ); iEditorToolbarState = TBAR_MODE_ITEM_KEYS; break; + case ITEMS_RANDOMITEM: + ClickEditorButton( ITEMS_RANDOMITEM ); + iEditorToolbarState = TBAR_MODE_ITEM_RANDOMITEM; + break; } } diff --git a/Editor/Editor Taskbar Creation.cpp b/Editor/Editor Taskbar Creation.cpp index 02994742..40680ccf 100644 --- a/Editor/Editor Taskbar Creation.cpp +++ b/Editor/Editor Taskbar Creation.cpp @@ -550,44 +550,48 @@ void InitEditorItemsToolbar() SetFontForeground( FONT_MCOLOR_LTRED ); iEditorButton[ITEMS_WEAPONS] = CreateTextButton(iEditorItemsToolbarText[0],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 100, 2 * iScreenHeightOffset + 440, 59, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 100, 2 * iScreenHeightOffset + 440, 39, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsWeaponsCallback); iEditorButton[ITEMS_AMMO] = CreateTextButton(iEditorItemsToolbarText[1],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 159, 2 * iScreenHeightOffset + 440, 40, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 139, 2 * iScreenHeightOffset + 440, 40, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsAmmoCallback); iEditorButton[ITEMS_ARMOUR] = CreateTextButton(iEditorItemsToolbarText[2],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 199, 2 * iScreenHeightOffset + 440, 52, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 179, 2 * iScreenHeightOffset + 440, 52, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsArmourCallback); iEditorButton[ITEMS_LBEGEAR] = CreateTextButton(iEditorItemsToolbarText[3],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 251, 2 * iScreenHeightOffset + 440, 30, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 231, 2 * iScreenHeightOffset + 440, 30, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsLBECallback); iEditorButton[ITEMS_EXPLOSIVES] = CreateTextButton(iEditorItemsToolbarText[4],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 281, 2 * iScreenHeightOffset + 440, 39, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 261, 2 * iScreenHeightOffset + 440, 30, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsExplosivesCallback); iEditorButton[ITEMS_EQUIPMENT1] = CreateTextButton(iEditorItemsToolbarText[5],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 320, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 291, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsEquipment1Callback); iEditorButton[ITEMS_EQUIPMENT2] = CreateTextButton(iEditorItemsToolbarText[6],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 341, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 312, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsEquipment2Callback); iEditorButton[ITEMS_EQUIPMENT3] = CreateTextButton(iEditorItemsToolbarText[7],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 362, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 333, 2 * iScreenHeightOffset + 440, 21, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsEquipment3Callback); iEditorButton[ITEMS_TRIGGERS] = CreateTextButton(iEditorItemsToolbarText[8],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 383, 2 * iScreenHeightOffset + 440, 59, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 354, 2 * iScreenHeightOffset + 440, 59, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsTriggersCallback ); iEditorButton[ITEMS_KEYS] = CreateTextButton(iEditorItemsToolbarText[9],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, - iScreenWidthOffset + 442, 2 * iScreenHeightOffset + 440, 38, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + iScreenWidthOffset + 413, 2 * iScreenHeightOffset + 440, 38, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, ItemsKeysCallback ); + iEditorButton[ITEMS_RANDOMITEM] = + CreateTextButton(iEditorItemsToolbarText[10],(UINT16)BLOCKFONT, FONT_MCOLOR_DKWHITE, FONT_BLACK, BUTTON_USE_DEFAULT, + iScreenWidthOffset + 451, 2 * iScreenHeightOffset + 440, 29, 20, BUTTON_TOGGLE,MSYS_PRIORITY_NORMAL,DEFAULT_MOVE_CALLBACK, + ItemsRandomItemCallback); iEditorButton[ITEMS_LEFTSCROLL] = CreateEasyNoToggleButton( iScreenWidthOffset + 1, 2 * iScreenHeightOffset + 361,"EDITOR//leftscroll.sti", ItemsLeftScrollCallback); diff --git a/Editor/EditorDefines.h b/Editor/EditorDefines.h index 0e1d922f..28f40081 100644 --- a/Editor/EditorDefines.h +++ b/Editor/EditorDefines.h @@ -82,6 +82,7 @@ enum TBAR_MODE_ITEM_EQUIPMENT3, TBAR_MODE_ITEM_TRIGGERS, TBAR_MODE_ITEM_KEYS, + TBAR_MODE_ITEM_RANDOMITEM, TBAR_MODE_RADAR_MAP,//dnl ch9 071009 }; diff --git a/Editor/EditorItems.cpp b/Editor/EditorItems.cpp index f6e68fcb..c7e8f36a 100644 --- a/Editor/EditorItems.cpp +++ b/Editor/EditorItems.cpp @@ -207,6 +207,9 @@ void EntryInitEditorItemsInfo() else eInfo.sNumEquipment3++; break; + case IC_RANDOMITEM: + eInfo.sNumRandomItems++; + break; //case IC_KEY: // eInfo.sNumKeys++; // break; @@ -310,6 +313,11 @@ void InitEditorItemsInfo(UINT32 uiItemType) eInfo.sScrollIndex = eInfo.sSaveKeysScrollIndex; eInfo.sSelItemIndex = eInfo.sSaveSelKeysIndex; break; + case TBAR_MODE_ITEM_RANDOMITEM: + eInfo.sNumItems = eInfo.sNumRandomItems; + eInfo.sScrollIndex = eInfo.sSaveRandomItemScrollIndex; + eInfo.sSelItemIndex = eInfo.sSaveSelRandomItemIndex; + break; default: //error return; @@ -473,6 +481,9 @@ void InitEditorItemsInfo(UINT32 uiItemType) fTypeMatch = eInfo.uiItemType == TBAR_MODE_ITEM_EQUIPMENT3; iEquipCount++; break; + case IC_RANDOMITEM: + fTypeMatch = eInfo.uiItemType == TBAR_MODE_ITEM_RANDOMITEM; + break; } if( fTypeMatch ) { @@ -747,6 +758,10 @@ void ClearEditorItemsInfo() eInfo.sSaveSelKeysIndex = eInfo.sSelItemIndex; eInfo.sSaveKeysScrollIndex = eInfo.sScrollIndex; break; + case TBAR_MODE_ITEM_RANDOMITEM: + eInfo.sSaveSelRandomItemIndex = eInfo.sSelItemIndex; + eInfo.sSaveRandomItemScrollIndex = eInfo.sScrollIndex; + break; } } diff --git a/Editor/EditorItems.h b/Editor/EditorItems.h index d3263cba..0c24ace5 100644 --- a/Editor/EditorItems.h +++ b/Editor/EditorItems.h @@ -20,12 +20,12 @@ typedef struct{ INT16 sScrollIndex; //current scroll index (0 is far left, 1 is next tile to the right, ...) INT16 sSaveSelWeaponsIndex, sSaveSelAmmoIndex, sSaveSelArmourIndex, sSaveSelLBEIndex, sSaveSelExplosivesIndex, sSaveSelEquipment1Index, sSaveSelEquipment2Index, sSaveSelEquipment3Index, - sSaveSelTriggersIndex, sSaveSelKeysIndex; + sSaveSelTriggersIndex, sSaveSelKeysIndex, sSaveSelRandomItemIndex; INT16 sSaveWeaponsScrollIndex, sSaveAmmoScrollIndex, sSaveArmourScrollIndex, sSaveLBEScrollIndex, sSaveExplosivesScrollIndex, sSaveEquipment1ScrollIndex, sSaveEquipment2ScrollIndex, - sSaveEquipment3ScrollIndex, sSaveTriggersScrollIndex, sSaveKeysScrollIndex; + sSaveEquipment3ScrollIndex, sSaveTriggersScrollIndex, sSaveKeysScrollIndex, sSaveRandomItemScrollIndex; INT16 sNumWeapons, sNumAmmo, sNumArmour, sLBEGear, sNumExplosives, sNumEquipment1, sNumEquipment2, sNumEquipment3, - sNumTriggers, sNumKeys; + sNumTriggers, sNumKeys, sNumRandomItems; }EditorItemsInfo; extern EditorItemsInfo eInfo; diff --git a/Editor/editscreen.cpp b/Editor/editscreen.cpp index a7e62aca..b5e9c139 100644 --- a/Editor/editscreen.cpp +++ b/Editor/editscreen.cpp @@ -1341,6 +1341,7 @@ void HandleJA2ToolbarSelection( void ) case TBAR_MODE_ITEM_EQUIPMENT3: case TBAR_MODE_ITEM_TRIGGERS: case TBAR_MODE_ITEM_KEYS: + case TBAR_MODE_ITEM_RANDOMITEM: //Set up the items by type. InitEditorItemsInfo(iEditorToolbarState); if( gubCurrMercMode != MERC_GETITEMMODE ) diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index aa9c82b2..2d3091e4 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -619,6 +619,7 @@ extern OBJECTTYPE gTempObject; #define IC_MISC 0x10000000 #define IC_MONEY 0x20000000 +#define IC_RANDOMITEM 0x40000000 // added by Flugente for random items // PARENT TYPES #define IC_WEAPON ( IC_GUN | IC_BLADE | IC_THROWING_KNIFE | IC_LAUNCHER | IC_TENTACLES ) diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 52ab512d..643a8d42 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -7661,10 +7661,13 @@ BOOLEAN CreateItem( UINT16 usItem, INT16 bStatus, OBJECTTYPE * pObj ) return( FALSE ); } - // Flugente: random items - UINT16 newitemfromrandom = 0; - if ( GetItemFromRandomItem(usItem, &newitemfromrandom) ) - usItem = newitemfromrandom; + // Flugente: random items - not while editing! + if ( guiCurrentScreen != EDIT_SCREEN ) + { + UINT16 newitemfromrandom = 0; + if ( GetItemFromRandomItem(usItem, &newitemfromrandom) ) + usItem = newitemfromrandom; + } if (usItem == 0) { @@ -14735,7 +14738,7 @@ BOOLEAN GetFirstClothesItemWithSpecificData( UINT16* pusItem, PaletteRepID aPalV return( FALSE ); } -#define RANDOM_ITEM_MAX_NUMBER 200 +#define RANDOM_ITEM_MAX_NUMBER 1000 #define RANDOM_TABOO_MAX 50 #define RANDOM_XML_LENGTH 10 diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 1948e92c..b93d45fc 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -4447,7 +4447,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) else if ( fAlt ) { // Flugente: spawn items while debugging - if ( gusSelectedSoldier != NOBODY ) + /*if ( gusSelectedSoldier != NOBODY ) { static UINT16 usitem = 1623; static INT16 status = 100; @@ -4465,7 +4465,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( !AutoPlaceObject( MercPtrs[ gusSelectedSoldier ], &newobj, FALSE ) ) AddItemToPool( MercPtrs[ gusSelectedSoldier ]->sGridNo, &newobj, 1, 0, 0, -1 ); - } + }*/ } else { diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 5cebd389..f7f5292f 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -453,7 +453,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -463,6 +463,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 84b4adb2..7fe32e7a 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -454,7 +454,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -464,6 +464,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 3bb5593e..0e627e04 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -453,7 +453,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -463,6 +463,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 70672ded..d60953ee 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -453,7 +453,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Armes", //0 + L"Arm.", //0 L"Munitions", L"Armures", L"LBE", @@ -463,6 +463,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Détentes", L"Clés", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 5a62509d..ba11eb52 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -477,7 +477,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -487,6 +487,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 61f25a46..b4e5b952 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -452,7 +452,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -462,6 +462,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 8dac04f3..55e964bc 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -469,6 +469,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Włączniki", L"Klucze", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index e6cbace5..0e743e22 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -454,7 +454,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -464,6 +464,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] = diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index 3746f498..3218daa5 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -452,7 +452,7 @@ STR16 iEditorBuildingsToolbarText[] = STR16 iEditorItemsToolbarText[] = { - L"Weapons", //0 + L"Wpns", //0 L"Ammo", L"Armour", L"LBE", @@ -462,6 +462,7 @@ STR16 iEditorItemsToolbarText[] = L"E3", L"Triggers", L"Keys", + L"Rnd", // TODO.Translate }; STR16 iEditorMapInfoToolbarText[] =