Files
source/Editor/Editor Callbacks.cpp
T
00fb898600 Delete builddefines.h
Nothing was left in it but the include of profiler.h, and 132 translation units
were including it for that alone. Fifteen files were leaning on profiler.h to
drag in <set>, <vector> and <ostream> for them; those now include what they use.

This is the commit that moves line numbers. Removing an include line shifts
__LINE__ by one for everything below it, and __LINE__ is an immediate operand in
every Assert() and DebugMsg() call, so the four game executables differ from
their predecessors by roughly a thousand 32-bit constants each. Every one of
those is accounted for: each is a single immediate that moved by -1 where the
builddefines.h include went away, or +1 where a <set>/<vector> include was
added. Nothing else in .text, .rdata or .data moves, no object file's section
sizes change, and symbolize_crash and Ja2Export stay bit-identical.

The one non-immediate difference is that the 24 Editor translation units of the
non-editor apps stop emitting __Avx2WmemEnabledWeakValue, a 4-byte weak COMDAT
they only ever instantiated through profiler.h's <vector>. It is a UCRT weak
default that other translation units still provide.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 01:07:26 -03:00

1384 lines
35 KiB
C++

#ifdef JA2EDITOR
#include "types.h"
#include "Button System.h"
#include "EditorDefines.h"
#include "Editor Taskbar Utils.h"
#include "renderworld.h"
#include "EditorItems.h"
#include "Editor Callback Prototypes.h"
#include "Editor Modes.h"
#include "EditorBuildings.h"
#include "EditorMercs.h"
#include "editscreen.h"
#include "Item Statistics.h"
#include "Cursor Modes.h"
#include "popupmenu.h"
#include "Simple Render Utils.h"
#include "Soldier Init List.h"
#include "Overhead.h"
#include "Scheduling.h"
#include "input.h"
#include "Map Information.h"
#include "EditorMapInfo.h"
#include "LoadScreen.h"
#include "Text Input.h"
extern SOLDIERINITNODE *gpSelected;
extern SCHEDULENODE gCurrSchedule;
extern void ExtractAndUpdateMercSchedule();
//TERRAIN
void BtnFgGrndCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_FGROUND_TEXTURES );
}
}
void BtnBkGrndCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_BGROUND_TEXTURES );
}
}
void BtnObjectCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_TREES );
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_TREES );
iEditorToolbarState = TBAR_MODE_GET_OSTRUCTS;
}
}
void BtnObject1Callback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_ROCKS );
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_ROCKS );
iEditorToolbarState = TBAR_MODE_GET_OSTRUCTS1;
}
}
void BtnObject2Callback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_MISC );
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_MISC );
iEditorToolbarState = TBAR_MODE_GET_OSTRUCTS2;
}
}
void BtnBanksCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_CLIFFS );
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_CLIFFS );
iEditorToolbarState = TBAR_MODE_GET_BANKS;
}
}
void BtnRoadsCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_ROADS );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_DWN )
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_ROADS );
iEditorToolbarState = TBAR_MODE_GET_ROADS;
}
}
void BtnDebrisCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_DEBRIS );
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorTerrainTaskbarMode( TERRAIN_PLACE_DEBRIS );
iEditorToolbarState = TBAR_MODE_GET_DEBRIS;
}
}
void BtnBrushCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_CHANGE_BRUSH;
}
}
void BtnFillCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorTerrainTaskbarMode( TERRAIN_FILL_AREA );
}
}
void BtnIncBrushDensityCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_DENS_UP;
}
}
void BtnDecBrushDensityCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_DENS_DWN;
}
}
//BUILDINGS
void BuildingWallCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_WALLS );
iDrawMode = DRAW_MODE_WALLS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_WALLS );
iEditorToolbarState = TBAR_MODE_GET_WALL;
}
}
void BuildingDoorCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_DOORS );
iDrawMode = DRAW_MODE_DOORS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_DOORS );
iEditorToolbarState = TBAR_MODE_GET_DOOR;
}
}
void BuildingWindowCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_WINDOWS );
iDrawMode = DRAW_MODE_WINDOWS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_WINDOWS );
iEditorToolbarState = TBAR_MODE_GET_WINDOW;
}
}
void BuildingRoofCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_ROOFS );
iDrawMode = DRAW_MODE_ROOFS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_ROOFS );
iEditorToolbarState = TBAR_MODE_GET_ROOF;
}
}
void BuildingCrackWallCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_BROKEN_WALLS );
iDrawMode = DRAW_MODE_BROKEN_WALLS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_BROKEN_WALLS );
iEditorToolbarState = TBAR_MODE_GET_BROKEN_WALL;
}
}
void BuildingFloorCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_FLOORS );
iDrawMode = DRAW_MODE_FLOORS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_FLOORS );
iEditorToolbarState = TBAR_MODE_GET_FLOOR;
}
}
void BuildingToiletCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_TOILETS );
iDrawMode = DRAW_MODE_TOILET;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_TOILETS );
iEditorToolbarState = TBAR_MODE_GET_TOILET;
}
}
void BuildingFurnitureCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_FURNITURE );
iDrawMode = DRAW_MODE_DECOR;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_FURNITURE );
iEditorToolbarState = TBAR_MODE_GET_DECOR;
}
}
void BuildingDecalCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_DECALS );
iDrawMode = DRAW_MODE_DECALS;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_PLACE_DECALS );
iEditorToolbarState = TBAR_MODE_GET_DECAL;
}
}
void BuildingSmartWallCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_SMART_WALLS );
iDrawMode = DRAW_MODE_SMART_WALLS;
}
}
void BuildingSmartWindowCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_SMART_WINDOWS );
iDrawMode = DRAW_MODE_SMART_WINDOWS;
}
}
void BuildingSmartDoorCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_SMART_DOORS );
iDrawMode = DRAW_MODE_SMART_DOORS;
}
}
void BuildingSmartCrackWallCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_SMART_BROKEN_WALLS );
iDrawMode = DRAW_MODE_SMART_BROKEN_WALLS;
}
}
void BuildingDoorKeyCallback(GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_DOORKEY );
iDrawMode = DRAW_MODE_DOORKEYS;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_DOORKEY );
iDrawMode = DRAW_MODE_DOORKEYS;
FindNextLockedDoor();
}
}
void BuildingNewRoomCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_NEW_ROOM );
gusSelectionType = gusSavedBuildingSelectionType;
iDrawMode = DRAW_MODE_ROOM;
}
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_DWN)
{
SetEditorBuildingTaskbarMode( BUILDING_NEW_ROOM );
gusSelectionType = gusSavedBuildingSelectionType;
iDrawMode = DRAW_MODE_ROOM;
iEditorToolbarState = TBAR_MODE_GET_ROOM;
}
}
void BuildingNewRoofCallback(GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_NEW_ROOF );
iDrawMode = DRAW_MODE_NEWROOF;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_DWN )
{
SetEditorBuildingTaskbarMode( BUILDING_NEW_ROOF );
iDrawMode = DRAW_MODE_NEWROOF;
iEditorToolbarState = TBAR_MODE_GET_NEW_ROOF;
}
}
void BuildingCaveDrawingCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_CAVE_DRAWING );
gusSelectionType = gusSavedBuildingSelectionType;
iDrawMode = DRAW_MODE_CAVES;
}
}
void BuildingSawRoomCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_SAW_ROOM );
gusSelectionType = gusSavedBuildingSelectionType;
iDrawMode = DRAW_MODE_SAW_ROOM;
}
}
void BuildingKillBuildingCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_KILL_BUILDING );
iDrawMode = DRAW_MODE_KILL_BUILDING;
}
}
void BuildingCopyBuildingCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_COPY_BUILDING );
iDrawMode = DRAW_MODE_COPY_BUILDING;
}
}
void BuildingMoveBuildingCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_MOVE_BUILDING );
iDrawMode = DRAW_MODE_MOVE_BUILDING;
}
}
void BuildingDrawRoomNumCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
SetEditorBuildingTaskbarMode( BUILDING_DRAW_ROOMNUM );
iDrawMode = DRAW_MODE_ROOMNUM;
gusCurrRoomNumber = gusMaxRoomNumber;
}
}
void BuildingEraseRoomNumCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason &MSYS_CALLBACK_REASON_LBUTTON_UP )
{
SetEditorBuildingTaskbarMode( BUILDING_ERASE_ROOMNUM );
iDrawMode = DRAW_MODE_ROOMNUM + DRAW_MODE_ERASE;
}
}
void BuildingToggleRoofViewCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if( fBuildingShowRoofs ^= 1 )
{
ClickEditorButton( BUILDING_TOGGLE_ROOF_VIEW );
}
else
{
UnclickEditorButton( BUILDING_TOGGLE_ROOF_VIEW );
}
//Name could be a bit misleading. It'll hide or show the roofs based on the
//fBuildingShowRoofs value.
UpdateRoofsView();
}
}
void BuildingToggleWallViewCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if( fBuildingShowWalls ^= 1 )
{
ClickEditorButton( BUILDING_TOGGLE_WALL_VIEW );
}
else
{
UnclickEditorButton( BUILDING_TOGGLE_WALL_VIEW );
}
//Name could be a bit misleading. It'll hide or show the walls based on the
//fBuildingShowWalls value.
UpdateWallsView();
}
}
void BuildingToggleInfoViewCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if( fBuildingShowRoomInfo ^= 1 )
{
ClickEditorButton( BUILDING_TOGGLE_INFO_VIEW );
}
else
{
UnclickEditorButton( BUILDING_TOGGLE_INFO_VIEW );
}
gfRenderWorld = TRUE;
}
}
//MAPINFO
void BtnFakeLightCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
btn->uiFlags &= (~BUTTON_CLICKED_ON);
else
btn->uiFlags |= BUTTON_CLICKED_ON;
iEditorToolbarState = TBAR_MODE_FAKE_LIGHTING;
}
}
void BtnDrawLightsCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorMapInfoTaskbarMode( MAPINFO_ADD_LIGHT1_SOURCE );
}
void MapInfoDrawExitGridCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetEditorMapInfoTaskbarMode( MAPINFO_DRAW_EXITGRIDS );
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
SetEditorMapInfoTaskbarMode( MAPINFO_DRAW_EXITGRIDS );
LocateNextExitGrid();
}
}
void MapInfoEntryPointsCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & (MSYS_CALLBACK_REASON_LBUTTON_UP | MSYS_CALLBACK_REASON_RBUTTON_UP) )
{
INT32 x, sGridNo;
for( x = MAPINFO_NORTH_POINT; x <= MAPINFO_ISOLATED_POINT; x++ )
{
if( btn == ButtonList[ iEditorButton[ x ] ] )
{
SetEditorMapInfoTaskbarMode( x );
if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
switch( x )
{
case MAPINFO_NORTH_POINT: sGridNo = gMapInformation.sNorthGridNo; break;
case MAPINFO_WEST_POINT: sGridNo = gMapInformation.sWestGridNo; break;
case MAPINFO_EAST_POINT: sGridNo = gMapInformation.sEastGridNo; break;
case MAPINFO_SOUTH_POINT: sGridNo = gMapInformation.sSouthGridNo; break;
case MAPINFO_CENTER_POINT: sGridNo = gMapInformation.sCenterGridNo; break;
case MAPINFO_ISOLATED_POINT: sGridNo = gMapInformation.sIsolatedGridNo; break;
default: AssertMsg( 0, "Invalid mapinfo point"); sGridNo = -1; break;
}
if( sGridNo != -1 )
{
CenterScreenAtMapIndex( sGridNo );
}
}
break;
}
}
}
}
void MapInfoNormalRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetEditorMapInfoTaskbarMode( MAPINFO_RADIO_NORMAL );
}
void MapInfoBasementRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetEditorMapInfoTaskbarMode( MAPINFO_RADIO_BASEMENT );
}
void MapInfoCavesRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetEditorMapInfoTaskbarMode( MAPINFO_RADIO_CAVES );
}
void MapInfoPrimeTimeRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
ChangeLightDefault( PRIMETIME_LIGHT );
}
void MapInfoNightTimeRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
ChangeLightDefault( NIGHTTIME_LIGHT );
}
void MapInfo24HourTimeRadioCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
ChangeLightDefault( ALWAYSON_LIGHT );
}
//OPTIONS
void BtnNewMapCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_NEW_MAP;
gfPendingBasement = FALSE;
gfPendingCaves = FALSE;
}
}
void BtnNewBasementCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_NEW_MAP;
gfPendingBasement = TRUE;
gfPendingCaves = FALSE;
}
}
void BtnNewCavesCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_NEW_MAP;
gfPendingBasement = FALSE;
gfPendingCaves = TRUE;
}
}
void BtnSaveCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_SAVE;
}
}
void BtnLoadCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_LOAD;
}
}
void BtnChangeTilesetCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
// WANNE: Check if map has been saved when we have a new map that has not been saved before!
if (fNewMapSaved)
{
btn->uiFlags |= BUTTON_CLICKED_ON;
iEditorToolbarState = TBAR_MODE_CHANGE_TILESET;
}
else
{
swprintf(gzErrorCatchString, L"Before changing tilesets you have to save the new map!");
InitErrorCatchDialog();
}
}
}
void BtnCancelCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason&MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_EXIT_EDIT;
}
}
void BtnQuitCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
iEditorToolbarState = TBAR_MODE_QUIT_GAME;
}
}
void BtnRadarMapCallback( GUI_BUTTON *btn, INT32 reason )//dnl ch9 071009
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
iEditorToolbarState = TBAR_MODE_RADAR_MAP;
}
}
void VanillaModeCallback(GUI_BUTTON *btn, INT32 reason)//dnl ch33 160909
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
(btn->uiFlags & BUTTON_CLICKED_ON) ? (gfVanillaMode = TRUE) : (gfVanillaMode = FALSE);
}
void ResizeMapOnLoadingCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
// TODO.MAP: Enable/Disable the Rows textbox
gfResizeMapOnLoading = TRUE;
//EnableTextField(1);
}
else
{
gfResizeMapOnLoading = FALSE;
//DisableTextField(1);
}
}
}
//ITEMS
void MouseMovedInItemsRegion( MOUSE_REGION *reg, INT32 reason )
{
HandleItemsPanel( gusMouseXPos, gusMouseYPos, GUI_MOVE_EVENT );
}
void MouseClickedInItemsRegion(MOUSE_REGION *reg, INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
HandleItemsPanel( gusMouseXPos, gusMouseYPos, GUI_LCLICK_EVENT );
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
HandleItemsPanel( gusMouseXPos, gusMouseYPos, GUI_RCLICK_EVENT );
}
void ItemsWeaponsCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_WEAPONS );
}
void ItemsAmmoCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_AMMO );
}
void ItemsArmourCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_ARMOUR );
}
void ItemsLBECallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_LBEGEAR );
}
void ItemsExplosivesCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_EXPLOSIVES );
}
void ItemsEquipment1Callback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_EQUIPMENT1 );
}
void ItemsEquipment2Callback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_EQUIPMENT2 );
}
void ItemsEquipment3Callback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_EQUIPMENT3 );
}
void ItemsTriggersCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
SetEditorItemsTaskbarMode( ITEMS_TRIGGERS );
}
void ItemsKeysCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
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)
{
ScrollEditorItemsInfo(FALSE);
}
}
void ItemsRightScrollCallback(GUI_BUTTON *btn, INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
ScrollEditorItemsInfo(TRUE);
}
}
//MERCS
void MercsTogglePlayers( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gfShowPlayers = btn->uiFlags & BUTTON_CLICKED_ON ? TRUE : FALSE;
SetMercTeamVisibility( OUR_TEAM, gfShowCivilians );
}
}
void MercsToggleEnemies( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gfShowEnemies = btn->uiFlags & BUTTON_CLICKED_ON ? TRUE : FALSE;
SetMercTeamVisibility( ENEMY_TEAM, gfShowEnemies );
}
}
void MercsToggleCreatures( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gfShowCreatures = btn->uiFlags & BUTTON_CLICKED_ON ? TRUE : FALSE;
SetMercTeamVisibility( CREATURE_TEAM, gfShowCreatures );
}
}
void MercsToggleRebels( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gfShowRebels = btn->uiFlags & BUTTON_CLICKED_ON ? TRUE : FALSE;
SetMercTeamVisibility( MILITIA_TEAM, gfShowRebels );
}
}
void MercsToggleCivilians( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gfShowCivilians = btn->uiFlags & BUTTON_CLICKED_ON ? TRUE : FALSE;
SetMercTeamVisibility( CIV_TEAM, gfShowCivilians );
}
}
void MercsPlayerTeamCallback(GUI_BUTTON *btn,INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
ClickEditorButton( MERCS_PLAYER );
UnclickEditorButton( MERCS_ENEMY );
UnclickEditorButton( MERCS_CREATURE );
UnclickEditorButton( MERCS_REBEL );
UnclickEditorButton( MERCS_CIVILIAN );
iDrawMode = DRAW_MODE_PLAYER;
SetMercEditingMode ( MERC_TEAMMODE );
}
}
void MercsEnemyTeamCallback(GUI_BUTTON *btn,INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
UnclickEditorButton( MERCS_PLAYER );
ClickEditorButton( MERCS_ENEMY );
UnclickEditorButton( MERCS_CREATURE );
UnclickEditorButton( MERCS_REBEL );
UnclickEditorButton( MERCS_CIVILIAN );
iDrawMode = DRAW_MODE_ENEMY;
SetMercEditingMode ( MERC_TEAMMODE );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
IndicateSelectedMerc( SELECT_NEXT_ENEMY );
}
}
void MercsCreatureTeamCallback(GUI_BUTTON *btn,INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
UnclickEditorButton( MERCS_PLAYER );
UnclickEditorButton( MERCS_ENEMY );
ClickEditorButton( MERCS_CREATURE );
UnclickEditorButton( MERCS_REBEL );
UnclickEditorButton( MERCS_CIVILIAN );
iDrawMode = DRAW_MODE_CREATURE;
SetMercEditingMode ( MERC_TEAMMODE );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
IndicateSelectedMerc( SELECT_NEXT_CREATURE );
}
}
void MercsRebelTeamCallback(GUI_BUTTON *btn,INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
UnclickEditorButton( MERCS_PLAYER );
UnclickEditorButton( MERCS_ENEMY );
UnclickEditorButton( MERCS_CREATURE );
ClickEditorButton( MERCS_REBEL );
UnclickEditorButton( MERCS_CIVILIAN );
iDrawMode = DRAW_MODE_REBEL;
SetMercEditingMode ( MERC_TEAMMODE );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
IndicateSelectedMerc( SELECT_NEXT_REBEL );
}
}
void MercsCivilianTeamCallback(GUI_BUTTON *btn,INT32 reason)
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
UnclickEditorButton( MERCS_PLAYER );
UnclickEditorButton( MERCS_ENEMY );
UnclickEditorButton( MERCS_CREATURE );
UnclickEditorButton( MERCS_REBEL );
ClickEditorButton( MERCS_CIVILIAN );
iDrawMode = DRAW_MODE_CIVILIAN;
SetMercEditingMode ( MERC_TEAMMODE );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
IndicateSelectedMerc( SELECT_NEXT_CIV );
}
}
void MercsNextCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
IndicateSelectedMerc( SELECT_NEXT_MERC );
}
}
void MercsDeleteCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
DeleteSelectedMerc();
SetMercEditingMode( MERC_TEAMMODE );
}
}
void MercsInventorySlotCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
INT32 uiSlot;
uiSlot = MSYS_GetBtnUserData( btn, 0 );
if( btn->uiFlags & BUTTON_CLICKED_ON )
SetEnemyDroppableStatus( uiSlot, TRUE );
else
SetEnemyDroppableStatus( uiSlot, FALSE );
}
}
void MercsSetEnemyColorCodeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
UINT8 ubColorCode;
ubColorCode = (UINT8)MSYS_GetBtnUserData( btn, 0 );
SetEnemyColorCode( ubColorCode );
}
}
void MercsCivilianGroupCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
btn->uiFlags |= BUTTON_CLICKED_ON;
iEditorToolbarState = TBAR_MODE_CIVILIAN_GROUP;
}
}
void MercsScheduleAction1Callback( GUI_BUTTON *btn, INT32 reason )
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
gubCurrentScheduleActionIndex = 0;
InitPopupMenu( iEditorButton[ MERCS_SCHEDULE_ACTION1 ], SCHEDULEACTION_POPUP, DIR_UPRIGHT );
}
}
void MercsScheduleAction2Callback( GUI_BUTTON *btn, INT32 reason )
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
gubCurrentScheduleActionIndex = 1;
InitPopupMenu( iEditorButton[ MERCS_SCHEDULE_ACTION2 ], SCHEDULEACTION_POPUP, DIR_UPRIGHT );
}
}
void MercsScheduleAction3Callback( GUI_BUTTON *btn, INT32 reason )
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
gubCurrentScheduleActionIndex = 2;
InitPopupMenu( iEditorButton[ MERCS_SCHEDULE_ACTION3 ], SCHEDULEACTION_POPUP, DIR_UPRIGHT );
}
}
void MercsScheduleAction4Callback( GUI_BUTTON *btn, INT32 reason )
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
gubCurrentScheduleActionIndex = 3;
InitPopupMenu( iEditorButton[ MERCS_SCHEDULE_ACTION4 ], SCHEDULEACTION_POPUP, DIR_UPRIGHT );
}
}
void MercsScheduleToggleVariance1Callback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
gCurrSchedule.usFlags |= SCHEDULE_FLAGS_VARIANCE1;
else
gCurrSchedule.usFlags &= ~SCHEDULE_FLAGS_VARIANCE1;
}
}
void MercsScheduleToggleVariance2Callback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
gCurrSchedule.usFlags |= SCHEDULE_FLAGS_VARIANCE2;
else
gCurrSchedule.usFlags &= ~SCHEDULE_FLAGS_VARIANCE2;
}
}
void MercsScheduleToggleVariance3Callback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
gCurrSchedule.usFlags |= SCHEDULE_FLAGS_VARIANCE3;
else
gCurrSchedule.usFlags &= ~SCHEDULE_FLAGS_VARIANCE3;
}
}
void MercsScheduleToggleVariance4Callback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
gCurrSchedule.usFlags |= SCHEDULE_FLAGS_VARIANCE4;
else
gCurrSchedule.usFlags &= ~SCHEDULE_FLAGS_VARIANCE4;
}
}
void MercsScheduleData1ACallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 0;
StartScheduleAction();
gfSingleAction = TRUE;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 0 );
}
}
void MercsScheduleData1BCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 0;
gfUseScheduleData2 = FALSE;
RegisterCurrentScheduleAction( gCurrSchedule.usData1[0] );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 1 );
}
}
void MercsScheduleData2ACallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 1;
StartScheduleAction();
gfSingleAction = TRUE;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 2 );
}
}
void MercsScheduleData2BCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 1;
gfUseScheduleData2 = FALSE;
RegisterCurrentScheduleAction( gCurrSchedule.usData1[1] );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 3 );
}
}
void MercsScheduleData3ACallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 2;
StartScheduleAction();
gfSingleAction = TRUE;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 4 );
}
}
void MercsScheduleData3BCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 2;
gfUseScheduleData2 = FALSE;
RegisterCurrentScheduleAction( gCurrSchedule.usData1[2] );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 5 );
}
}
void MercsScheduleData4ACallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 3;
StartScheduleAction();
gfSingleAction = TRUE;
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 6 );
}
}
void MercsScheduleData4BCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
gubCurrentScheduleActionIndex = 3;
gfUseScheduleData2 = FALSE;
RegisterCurrentScheduleAction( gCurrSchedule.usData1[3] );
}
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
{
FindScheduleGridNo( 7 );
}
}
void MercsScheduleClearCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
ClearCurrentSchedule();
ExtractAndUpdateMercSchedule();
}
}
void MercsDetailedPlacementCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON ) //button is checked
{
InitDetailedPlacementForMerc();
SetMercEditingMode( MERC_GENERALMODE );
}
else //button is unchecked.
{
KillDetailedPlacementForMerc();
SetMercEditingMode( MERC_BASICMODE );
}
}
}
void MercsPriorityExistanceCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( gpSelected )
{
if( btn->uiFlags & BUTTON_CLICKED_ON ) //button is checked
{
gpSelected->pBasicPlacement->fPriorityExistance = TRUE;
}
else //button is unchecked.
{
gpSelected->pBasicPlacement->fPriorityExistance = FALSE;
}
}
}
}
void MercsHasKeysCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( gpSelected )
{
if( btn->uiFlags & BUTTON_CLICKED_ON ) //button is checked
{
gpSelected->pBasicPlacement->fHasKeys = TRUE;
}
else //button is unchecked.
{
gpSelected->pBasicPlacement->fHasKeys = FALSE;
}
if( gpSelected->pDetailedPlacement )
{
gpSelected->pDetailedPlacement->fHasKeys = gpSelected->pBasicPlacement->fHasKeys;
}
}
}
}
void MercsGeneralModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_GENERALMODE );
}
void MercsAttributesModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_ATTRIBUTEMODE );
}
void MercsInventoryModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_INVENTORYMODE );
}
void MercsAppearanceModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_APPEARANCEMODE );
}
void MercsProfileModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_PROFILEMODE );
}
void MercsScheduleModeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercEditingMode( MERC_SCHEDULEMODE );
}
//multiple orders buttons
void MercsSetOrdersCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercOrders( (UINT8)MSYS_GetBtnUserData( btn, 0) );
}
//multiple attitude buttons
void MercsSetAttitudeCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercAttitude( (UINT8)MSYS_GetBtnUserData( btn, 0) );
}
//multiple direction buttons
void MercsDirectionSetCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercDirection( (UINT8)MSYS_GetBtnUserData( btn, 0) );
}
void MercsFindSelectedMercCallback( GUI_BUTTON *btn, INT32 reason )
{
SOLDIERTYPE *pSoldier;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( gsSelectedMercID == -1 )
return;
GetSoldier( &pSoldier, gsSelectedMercID );
if( !pSoldier )
return;
CenterScreenAtMapIndex( pSoldier->sGridNo );
}
}
void MercsSetRelativeEquipmentCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercRelativeEquipment( (INT8)MSYS_GetBtnUserData( btn, 0 ) );
}
void MercsSetRelativeAttributesCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
SetMercRelativeAttributes( (INT8)MSYS_GetBtnUserData( btn, 0 ) );
}
void MouseMovedInMercRegion( MOUSE_REGION *reg, INT32 reason )
{
HandleMercInventoryPanel( reg->RelativeXPos, reg->RelativeYPos, GUI_MOVE_EVENT );
}
void MouseClickedInMercRegion( MOUSE_REGION *reg, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
HandleMercInventoryPanel( reg->RelativeXPos, reg->RelativeYPos, GUI_LCLICK_EVENT );
else if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP )
HandleMercInventoryPanel( reg->RelativeXPos, reg->RelativeYPos, GUI_RCLICK_EVENT );
}
//VARIOUS
void BtnUndoCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
iEditorToolbarState = TBAR_MODE_UNDO;
}
}
void BtnEraseCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP)
{
if( iDrawMode >= DRAW_MODE_ERASE )
btn->uiFlags &= (~BUTTON_CLICKED_ON);
else
btn->uiFlags |= BUTTON_CLICKED_ON;
iEditorToolbarState = (btn->uiFlags & BUTTON_CLICKED_ON) ? (TBAR_MODE_ERASE) : (TBAR_MODE_ERASE_OFF);
}
}
//ITEM STATS
void ItemStatsToggleHideCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
ExecuteItemStatsCmd( ITEMSTATS_HIDE );
else
ExecuteItemStatsCmd( ITEMSTATS_SHOW );
}
}
void ItemStatsDeleteCallback( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
ExecuteItemStatsCmd( ITEMSTATS_DELETE );
}
#endif