Get the scenario and PC editors to build
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -62,36 +63,46 @@ IDR_MENU1 MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&Open Game\tCtrl+O", 2
|
||||
MENUITEM "&Save Game\tCtrl+S", 1
|
||||
MENUITEM "Save As...", 3
|
||||
MENUITEM "&Open Game\tCtrl+O", IDM_FILE_OPEN
|
||||
MENUITEM "Close\tCtrl+W", IDM_FILE_CLOSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Quit\tCtrl+Q", 4
|
||||
END
|
||||
POPUP "&Scenario Editing"
|
||||
BEGIN
|
||||
MENUITEM "Edit Day", 70
|
||||
MENUITEM "&Save Game\tCtrl+S", IDM_FILE_SAVE
|
||||
MENUITEM "Save As...", IDM_FILE_SAVE_AS
|
||||
MENUITEM "Revert to Saved", IDM_FILE_REVERT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Leave Town", 44
|
||||
MENUITEM "Make Towns Forget You", 48
|
||||
MENUITEM "Add All Town Maps", 72
|
||||
MENUITEM "Add All Outdoor Maps", 71
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Remove Party From Scenario", 55
|
||||
MENUITEM "&Quit\tCtrl+Q", IDM_FILE_QUIT
|
||||
END
|
||||
POPUP "&Edit Party"
|
||||
BEGIN
|
||||
MENUITEM "Edit Gold", 41
|
||||
MENUITEM "Edit Food", 42
|
||||
MENUITEM "Edit Alchemy", 62
|
||||
MENUITEM "Edit Gold", IDM_PARTY_GOLD
|
||||
MENUITEM "Edit Food", IDM_PARTY_FOOD
|
||||
MENUITEM "Edit Alchemy", IDM_PARTY_ALCHEMY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Heal Damage", 51
|
||||
MENUITEM "Restore Spell Points", 52
|
||||
MENUITEM "Raise Dead, Destone, etc.", 53
|
||||
MENUITEM "Remove Bad Conditions", 54
|
||||
MENUITEM "Heal Damage", IDM_PARTY_DAMAGE
|
||||
MENUITEM "Restore Spell Points", IDM_PARTY_MANA
|
||||
MENUITEM "Raise Dead, Destone, etc.", IDM_PARTY_DEAD
|
||||
MENUITEM "Remove Bad Conditions", IDM_PARTY_CONDITIONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Reunite Party", 45
|
||||
MENUITEM "Own All Boats/Horses", 63
|
||||
MENUITEM "Reunite Party", IDM_PARTY_REUNITE
|
||||
MENUITEM "Own All Boats/Horses", IDM_PARTY_VEHICLES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Edit Mage Spells", IDM_PARTY_MAGE
|
||||
MENUITEM "Edit Priest Spells", IDM_PARTY_PRIEST
|
||||
MENUITEM "Edit Traits", IDM_PARTY_TRAITS
|
||||
MENUITEM "Edit Skills", IDM_PARTY_SKILLS
|
||||
MENUITEM "Edit XP", IDM_PARTY_XP
|
||||
END
|
||||
POPUP "&Scenario Editing"
|
||||
BEGIN
|
||||
MENUITEM "Edit Day", IDM_SCEN_DAY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Leave Town", IDM_SCEN_LEAVE_TOWN
|
||||
MENUITEM "Make Towns Forget You", IDM_SCEN_TOWN_RESET
|
||||
MENUITEM "Add All Town Maps", IDM_SCEN_TOWN_MAP
|
||||
MENUITEM "Add All Outdoor Maps", IDM_SCEN_OUT_MAP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Remove Party From Scenario", IDM_SCEN_LEAVE
|
||||
MENUITEM "Set Stuff Done Flag", IDM_SCEN_SDF
|
||||
END
|
||||
POPUP "&I1"
|
||||
BEGIN
|
||||
@@ -111,9 +122,7 @@ BEGIN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "Index\tF1", 100
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "About Blades of Exile Editor", 200
|
||||
MENUITEM "About Blades of Exile Editor", IDM_HELP
|
||||
END
|
||||
END
|
||||
|
||||
@@ -122,13 +131,13 @@ END
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
ACCELERATORS_1 ACCELERATORS
|
||||
{
|
||||
|
||||
"^O", 2, ASCII
|
||||
"^S", 1, ASCII
|
||||
"^Q", 4, ASCII
|
||||
}
|
||||
IDR_ACCELERATOR1 ACCELERATORS
|
||||
BEGIN
|
||||
"^O", 2, ASCII
|
||||
"^S", 1, ASCII
|
||||
"^Q", 4, ASCII
|
||||
END
|
||||
|
||||
#endif // English (United States) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@@ -59,7 +59,7 @@
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>opengl32.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;sfml-audio.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>opengl32.lib;sfml-system-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;sfml-audio-d.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
@@ -3,17 +3,43 @@
|
||||
// Used by Char Editor.rc
|
||||
//
|
||||
#define IDR_MENU1 101
|
||||
#define IDR_MENU2 102
|
||||
#define IDR_MENU3 103
|
||||
#define IDM_FILE_OPEN 101
|
||||
#define IDM_FILE_CLOSE 102
|
||||
#define IDM_FILE_SAVE 103
|
||||
#define IDR_ACCELERATOR1 104
|
||||
#define IDM_FILE_SAVE_AS 104
|
||||
#define IDM_FILE_REVERT 105
|
||||
#define IDM_FILE_QUIT 106
|
||||
#define IDM_PARTY_GOLD 107
|
||||
#define IDM_PARTY_FOOD 108
|
||||
#define IDM_PARTY_ALCHEMY 109
|
||||
#define IDM_PARTY_DAMAGE 110
|
||||
#define IDM_PARTY_MANA 111
|
||||
#define IDM_PARTY_DEAD 112
|
||||
#define IDM_PARTY_CONDITIONS 113
|
||||
#define IDM_PARTY_REUNITE 114
|
||||
#define IDM_PARTY_VEHICLES 115
|
||||
#define IDM_PARTY_MAGE 116
|
||||
#define IDM_PARTY_PRIEST 117
|
||||
#define IDM_PARTY_TRAITS 118
|
||||
#define IDM_PARTY_SKILLS 119
|
||||
#define IDM_PARTY_XP 120
|
||||
#define IDM_SCEN_DAY 121
|
||||
#define IDM_SCEN_LEAVE_TOWN 122
|
||||
#define IDM_SCEN_TOWN_RESET 123
|
||||
#define IDM_SCEN_TOWN_MAP 124
|
||||
#define IDM_SCEN_OUT_MAP 125
|
||||
#define IDM_SCEN_LEAVE 126
|
||||
#define IDM_SCEN_SDF 127
|
||||
#define IDM_HELP 128
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 105
|
||||
#define _APS_NEXT_COMMAND_VALUE 40002
|
||||
#define _APS_NEXT_COMMAND_VALUE 40010
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#define _APS_NEXT_SYMED_VALUE 129
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -15,6 +15,10 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (United States) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
@@ -24,9 +28,6 @@
|
||||
// remains consistent on all systems.
|
||||
IDI_BLADESOFEXILE ICON "../../../Win32/scenedit/BLSCENED.ICO"
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -59,221 +60,193 @@ END
|
||||
//
|
||||
|
||||
IDR_MENU1 MENU
|
||||
{
|
||||
POPUP "&File"
|
||||
{
|
||||
MENUITEM "&Open Scenario\tCtrl+O", 1
|
||||
MENUITEM "&Save Scenario\tCtrl+S", 2
|
||||
MENUITEM "&New Scenario\tCtrl+N", 3
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Quit\tCtrl+Q", 5
|
||||
}
|
||||
|
||||
POPUP "&Scenario"
|
||||
{
|
||||
MENUITEM "&Create New Town", 101
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Scenario Details", 103
|
||||
MENUITEM "Scenario Intr&o Text", 104
|
||||
MENUITEM "Set Starting &Location: Town", 105
|
||||
MENUITEM "Set Starting &Location: Outdoors", 106
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", 107
|
||||
MENUITEM " Edit Special &Nodes", 109
|
||||
MENUITEM " Edit Scenario &Text", 110
|
||||
MENUITEM " &Import Town", 111
|
||||
MENUITEM " Edit Saved Item &Rectangles", 112
|
||||
MENUITEM " Edit &Horses", 113
|
||||
MENUITEM " Edit &Boats", 114
|
||||
MENUITEM " Set &Variable Town Entry", 115
|
||||
MENUITEM " Set Scenario &Event Timers", 116
|
||||
MENUITEM " Edit Item &Placement Shortcuts", 117
|
||||
MENUITEM " &Delete Last Town", 118
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM " Write D&ata To Text File", 119
|
||||
MENUITEM " Do &Full Text Dump", 120
|
||||
MENUITEM " Scenario Shoppin&g Text Dump", 121
|
||||
MENUITEM " Scenario &Monster Dump", 122
|
||||
MENUITEM " Scenario Specials D&ump", 123
|
||||
MENUITEM " Scenario Ob&ject Data Dump", 124
|
||||
}
|
||||
|
||||
POPUP "&Town"
|
||||
{
|
||||
MENUITEM "Town &Details\tCtrl+D", 201
|
||||
MENUITEM "Town &Wandering Monsters", 202
|
||||
MENUITEM "Set Town &Boundaries", 203
|
||||
MENUITEM "&Frill Up Terrain", 204
|
||||
MENUITEM "Remo&ve Terrain Frills", 205
|
||||
MENUITEM "Edit &Area Descriptions", 206
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Add Rand&om Items", 208
|
||||
MENUITEM "Set All Items Not Propert&y", 209
|
||||
MENUITEM "Clear All &Items", 210
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Clear All &Monsters", 217
|
||||
MENUITEM "&Clear All Placed Specials", 218
|
||||
MENUITEM "Clear All &Preset Fields", 219
|
||||
MENUITEM "Clear All &Stains", 220
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", 212
|
||||
MENUITEM " Edit Special &Nodes\tCtrl+1", 213
|
||||
MENUITEM " Edit Town &Text\tCtrl+2", 214
|
||||
MENUITEM " Edit Town Dialo&g\tCtrl+3", 222
|
||||
MENUITEM " Advanced Town Detai&ls\tCtrl+4", 215
|
||||
MENUITEM " Set Town &Event Timers\tCtrl+5", 216
|
||||
MENUITEM " Concise Town &Report\tCtrl+6", 221
|
||||
}
|
||||
|
||||
POPUP "&Outdoors"
|
||||
{
|
||||
MENUITEM "Outdoor &Details\tCtrl+D", 301
|
||||
MENUITEM "Outdoor &Wandering Monsters", 302
|
||||
MENUITEM "&Outdoor Special Encounters", 303
|
||||
MENUITEM "&Frill Up Terrain", 304
|
||||
MENUITEM "Remo&ve Terrain Frills", 305
|
||||
MENUITEM "Edit &Area Descriptions", 306
|
||||
MENUITEM "&Clear All Placed Specials", 307
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", 310
|
||||
MENUITEM " Edit Special &Nodes\tCtrl+7", 311
|
||||
MENUITEM " Edit Outdoor &Text\tCtrl+8", 312
|
||||
MENUITEM " Concise Outdoor &Report\tCtrl+9", 313
|
||||
}
|
||||
|
||||
POPUP "&Additional Features"
|
||||
{
|
||||
MENUITEM "Terrain &Animations Play", 411
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Edit &Town\tCtrl+T", 401
|
||||
MENUITEM "Edit Outdoo&r\tCtrl+R", 402
|
||||
MENUITEM "&Load Another Outdoor Zone/Town\tCtrl+L", 403
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Edit Terrain Types\tCtrl+E", 404
|
||||
MENUITEM "Edit &Monsters\tCtrl+F", 405
|
||||
MENUITEM "Edit &Items\tCtrl+G", 406
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Return to Main &Screen\tCtrl+M", 407
|
||||
MENUITEM "Switch &Viewing Mode\tCtrl+I", 408
|
||||
MENUITEM "Load &Previous Outdoor Zone/Town\tCtrl+J", 409
|
||||
MENUITEM "Load &Next Outdoor Zone/Town\tCtrl+K", 410
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Repeat Printing of Last &File\tCtrl+P", 414
|
||||
}
|
||||
|
||||
POPUP "&I1"
|
||||
{
|
||||
MENUITEM "Dummy", 600
|
||||
}
|
||||
POPUP "&I2"
|
||||
{
|
||||
MENUITEM "Dummy", 601
|
||||
}
|
||||
POPUP "&I3"
|
||||
{
|
||||
MENUITEM "Dummy", 602
|
||||
}
|
||||
POPUP "&I4"
|
||||
{
|
||||
MENUITEM "Dummy", 603
|
||||
}
|
||||
POPUP "&I5"
|
||||
{
|
||||
MENUITEM "Dummy", 604
|
||||
}
|
||||
POPUP "&I6"
|
||||
{
|
||||
MENUITEM "Dummy", 605
|
||||
}
|
||||
POPUP "&I7"
|
||||
{
|
||||
MENUITEM "Dummy", 606
|
||||
}
|
||||
POPUP "&I8"
|
||||
{
|
||||
MENUITEM "Dummy", 607
|
||||
}
|
||||
POPUP "&M1"
|
||||
{
|
||||
MENUITEM "Dummy", 608
|
||||
}
|
||||
POPUP "&M2"
|
||||
{
|
||||
MENUITEM "Dummy", 609
|
||||
}
|
||||
POPUP "&M3"
|
||||
{
|
||||
MENUITEM "Dummy", 610
|
||||
}
|
||||
POPUP "&M4"
|
||||
{
|
||||
MENUITEM "Dummy", 611
|
||||
}
|
||||
POPUP "&M5"
|
||||
{
|
||||
MENUITEM "Dummy", 612
|
||||
}
|
||||
POPUP "&Help"
|
||||
{
|
||||
MENUITEM "&Index\tF1", 801
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Getting Started", 802
|
||||
MENUITEM "&Testing Your Scenario", 803
|
||||
MENUITEM "&Distributing Your Scenario", 804
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About Blades Scenario Editor", 805
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New Scenario\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "&Open Scenario\tCtrl+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close Scenario\tCtrl+W", IDM_FILE_CLOSE
|
||||
MENUITEM "&Save Scenario\tCtrl+S", IDM_FILE_SAVE
|
||||
MENUITEM "Revert to Saved", IDM_FILE_REVERT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Quit\tCtrl+Q", IDM_FILE_QUIT
|
||||
END
|
||||
POPUP "Edit"
|
||||
BEGIN
|
||||
MENUITEM "Undo\tCtrl+Z", IDM_EDIT_UNDO
|
||||
MENUITEM "Redo\tCtrl+Y", IDM_EDIT_REDO
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cut\tCtrl+X", IDM_EDIT_CUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDIT_COPY
|
||||
MENUITEM "Paste\tCtrl+V", IDM_EDIT_PASTE
|
||||
MENUITEM "Delete", IDM_EDIT_DELETE
|
||||
MENUITEM "Select All\tCtrl+A", IDM_EDIT_SELECT
|
||||
END
|
||||
POPUP "&Scenario"
|
||||
BEGIN
|
||||
MENUITEM "&Create New Town", IDM_SCEN_NEW_TOWN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Scenario Details", IDM_SCEN_DETAILS
|
||||
MENUITEM "Scenario Intr&o Text", IDM_SCEN_INTRO
|
||||
MENUITEM "Set Starting &Location", IDM_SCEN_START
|
||||
MENUITEM "Change Password", IDM_SCEN_PASSWORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", IDM_SCEN_NEW_TOWN, GRAYED
|
||||
MENUITEM " Edit Special &Nodes", IDM_SCEN_ADV_SPECIALS
|
||||
MENUITEM " Edit Scenario &Text", IDM_SCEN_ADV_TEXT
|
||||
MENUITEM " Edit Journal Entries", IDM_SCEN_ADV_JOURNAL
|
||||
MENUITEM " &Import Town", IDM_SCEN_ADV_IMPORT_TOWN
|
||||
MENUITEM " Edit Saved Item &Rectangles", IDM_SCEN_ADV_SAVE_RECTS
|
||||
MENUITEM " Edit &Horses", IDM_SCEN_ADV_HORSES
|
||||
MENUITEM " Edit &Boats", IDM_SCEN_ADV_BOATS
|
||||
MENUITEM " Set &Variable Town Entry", IDM_SCEN_ADV_TOWN_VARY
|
||||
MENUITEM " Set Scenario &Event Timers", IDM_SCEN_ADV_EVENTS
|
||||
MENUITEM " Edit Item &Placement Shortcuts", IDM_SCEN_ADV_SHORTCUTS
|
||||
MENUITEM " &Delete Last Town", IDM_SCEN_ADV_DELETE_TOWN
|
||||
MENUITEM " Write D&ata To Text File", IDM_SCEN_ADV_DATA_DUMP
|
||||
MENUITEM " Do &Full Text Dump", IDM_SCEN_ADV_TEXT_DUMP
|
||||
MENUITEM " Scenario Shoppin&g Text Dump", IDM_SCEN_ADV_DATA_DUMP
|
||||
MENUITEM " Scenario &Monster Dump", IDM_SCEN_ADV_TEXT_DUMP
|
||||
MENUITEM " Scenario Specials D&ump", IDM_SCEN_INTRO
|
||||
MENUITEM " Scenario Ob&ject Data Dump", IDM_SCEN_PASSWORD
|
||||
END
|
||||
POPUP "&Town"
|
||||
BEGIN
|
||||
MENUITEM "Town &Details\tCtrl+D", IDM_TOWN_DETAILS
|
||||
MENUITEM "Town &Wandering Monsters", IDM_TOWN_WANDER
|
||||
MENUITEM "Set Town &Boundaries", IDM_TOWN_BOUNDS
|
||||
MENUITEM "&Frill Up Terrain", IDM_TOWN_FRILL
|
||||
MENUITEM "Remo&ve Terrain Frills", IDM_TOWN_UNFRILL
|
||||
MENUITEM "Edit &Area Descriptions", IDM_TOWN_AREAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Add Rand&om Items", IDM_TOWN_RANDOM_ITEMS
|
||||
MENUITEM "Set All Items Not Propert&y", IDM_TOWN_NOT_PROPERTY
|
||||
MENUITEM "Clear All &Items", IDM_TOWN_CLEAR_ITEMS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", 212, GRAYED
|
||||
MENUITEM " Edit Special &Nodes\tCtrl+1", IDM_TOWN_ADV_SPECIALS
|
||||
MENUITEM " Edit Town &Text\tCtrl+2", IDM_TOWN_ADV_TEXT
|
||||
MENUITEM " Edit Town &Signs\tCtrl+3", IDM_TOWN_ADV_SIGNS
|
||||
MENUITEM " Advanced Town Detai&ls\tCtrl+4", IDM_TOWN_ADV_DETAILS
|
||||
MENUITEM " Set Town &Event Timers\tCtrl+5", IDM_TOWN_ADV_EVENTS
|
||||
MENUITEM " Concise Town &Report\tCtrl+6", IDM_TOWN_ADV_REPORT
|
||||
END
|
||||
POPUP "&Outdoors"
|
||||
BEGIN
|
||||
MENUITEM "Outdoor &Details\tCtrl+D", IDM_OUT_DETAILS
|
||||
MENUITEM "Outdoor &Wandering Monsters", IDM_OUT_WANDER
|
||||
MENUITEM "&Outdoor Special Encounters", IDM_OUT_ENCOUNTER
|
||||
MENUITEM "&Frill Up Terrain", IDM_OUT_FRILL
|
||||
MENUITEM "Remo&ve Terrain Frills", IDM_OUT_UNFRILL
|
||||
MENUITEM "Edit &Area Descriptions", IDM_OUT_AREAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Set Starting Location", IDM_OUT_START
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Advanced:", 310, GRAYED
|
||||
MENUITEM " Edit Special &Nodes\tCtrl+7", IDM_OUT_ADV_SPECIALS
|
||||
MENUITEM " Edit Outdoor &Text\tCtrl+8", IDM_OUT_ADV_TEXT
|
||||
MENUITEM " Edit Outdoor &Signs\tCtrl+9", IDM_OUT_ADV_SIGNS
|
||||
MENUITEM " Concise Outdoor &Report\tCtrl+0", IDM_OUT_ADV_REPORT
|
||||
END
|
||||
POPUP "E&xtras"
|
||||
BEGIN
|
||||
MENUITEM "Terrain &Animations Play", 411
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Edit &Town\tCtrl+T", 401
|
||||
MENUITEM "Edit Outdoo&r\tCtrl+R", 402
|
||||
MENUITEM "&Load Another Outdoor Zone/Town\tCtrl+L", 403
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Edit Terrain Types\tCtrl+E", 404
|
||||
MENUITEM "Edit &Monsters\tCtrl+F", 405
|
||||
MENUITEM "Edit &Items\tCtrl+G", 406
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Return to Main &Screen\tCtrl+M", 407
|
||||
MENUITEM "Switch &Viewing Mode\tCtrl+I", 408
|
||||
MENUITEM "Load &Previous Outdoor Zone/Town\tCtrl+J", 409
|
||||
MENUITEM "Load &Next Outdoor Zone/Town\tCtrl+K", 410
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Repeat Printing of Last &File\tCtrl+P", 414
|
||||
END
|
||||
POPUP "&I1"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 600
|
||||
END
|
||||
POPUP "&I2"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 601
|
||||
END
|
||||
POPUP "&I3"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 602
|
||||
END
|
||||
POPUP "&I4"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 603
|
||||
END
|
||||
POPUP "&I5"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 604
|
||||
END
|
||||
POPUP "&M1"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 608
|
||||
END
|
||||
POPUP "&M2"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 609
|
||||
END
|
||||
POPUP "&M3"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 610
|
||||
END
|
||||
POPUP "&M4"
|
||||
BEGIN
|
||||
MENUITEM "Dummy", 611
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Index\tF1", IDM_HELP_INDEX
|
||||
MENUITEM "&About Blades Scenario Editor", IDM_HELP_ABOUT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Getting Started", IDM_HELP_START
|
||||
MENUITEM "&Testing Your Scenario", IDM_HELP_TEST
|
||||
MENUITEM "&Distributing Your Scenario", IDM_HELP_DISTRIBUTE
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
ACCELERATORS_1 ACCELERATORS
|
||||
{
|
||||
VK_F1, 801, VIRTKEY
|
||||
"^O", 1, ASCII
|
||||
"^S", 2, ASCII
|
||||
"^N", 3, ASCII
|
||||
"^Q", 5, ASCII
|
||||
"^B", 214, ASCII
|
||||
"^U", 311, ASCII
|
||||
"^T", 401, ASCII
|
||||
"^R", 402, ASCII
|
||||
"^L", 403, ASCII
|
||||
"^E", 404, ASCII
|
||||
"^F", 405, ASCII
|
||||
"^G", 406, ASCII
|
||||
"^M", 407, ASCII
|
||||
"^I", 408, ASCII
|
||||
"^J", 409, ASCII
|
||||
"^K", 410, ASCII
|
||||
"^P", 414, ASCII
|
||||
/*
|
||||
"^1", 213, ASCII
|
||||
"^2", 214, ASCII
|
||||
"^3", 222, ASCII
|
||||
"^4", 215, ASCII
|
||||
"^5", 216, ASCII
|
||||
"^6", 221, ASCII
|
||||
"^7", 311, ASCII
|
||||
"^8", 312, ASCII
|
||||
"^9", 313, ASCII
|
||||
*/
|
||||
VK_TAB, 408, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_LEFT, 409, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_RIGHT, 410, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_UP, 412, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_DOWN, 413, VIRTKEY, CONTROL, NOINVERT
|
||||
|
||||
// Defined elsewhere: D,L
|
||||
// Keys currently available: H,W,Y,Z
|
||||
// Don't use keys A, X, C and V as they are Windows shortcuts (select all, cut, copy and paste)
|
||||
|
||||
}
|
||||
IDR_ACCELERATOR1 ACCELERATORS
|
||||
BEGIN
|
||||
VK_F1, 801, VIRTKEY
|
||||
"^O", 1, ASCII
|
||||
"^S", 2, ASCII
|
||||
"^N", 3, ASCII
|
||||
"^Q", 5, ASCII
|
||||
"^B", 214, ASCII
|
||||
"^U", 311, ASCII
|
||||
"^T", 401, ASCII
|
||||
"^R", 402, ASCII
|
||||
"^L", 403, ASCII
|
||||
"^E", 404, ASCII
|
||||
"^F", 405, ASCII
|
||||
"^G", 406, ASCII
|
||||
"^M", 407, ASCII
|
||||
"\t", 408, ASCII
|
||||
"^J", 409, ASCII
|
||||
"^K", 410, ASCII
|
||||
"^P", 414, ASCII
|
||||
VK_TAB, 408, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_LEFT, 409, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_RIGHT, 410, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_UP, 412, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_DOWN, 413, VIRTKEY, CONTROL, NOINVERT
|
||||
END
|
||||
|
||||
#endif // English (United States) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@@ -59,7 +59,7 @@
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>opengl32.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;sfml-audio.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>opengl32.lib;sfml-system-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;sfml-audio-d.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
@@ -3,15 +3,77 @@
|
||||
// Used by Scen Editor.rc
|
||||
//
|
||||
#define IDR_MENU1 101
|
||||
#define IDM_FILE_NEW 101
|
||||
#define IDR_ACCELERATOR1 102
|
||||
#define IDM_FILE_OPEN 102
|
||||
#define IDM_FILE_CLOSE 103
|
||||
#define IDM_FILE_SAVE 104
|
||||
#define IDM_FILE_REVERT 105
|
||||
#define IDM_FILE_QUIT 106
|
||||
#define IDM_SCEN_NEW_TOWN 107
|
||||
#define IDM_SCEN_DETAILS 108
|
||||
#define IDM_SCEN_START 109
|
||||
#define IDM_SCEN_ADV_SPECIALS 110
|
||||
#define IDM_SCEN_ADV_TEXT 111
|
||||
#define IDM_SCEN_ADV_JOURNAL 112
|
||||
#define IDM_SCEN_ADV_IMPORT_TOWN 113
|
||||
#define IDM_SCEN_ADV_SAVE_RECTS 114
|
||||
#define IDM_SCEN_ADV_HORSES 115
|
||||
#define IDM_SCEN_ADV_BOATS 116
|
||||
#define IDM_SCEN_ADV_TOWN_VARY 117
|
||||
#define IDM_SCEN_ADV_EVENTS 118
|
||||
#define IDM_SCEN_ADV_SHORTCUTS 119
|
||||
#define IDM_SCEN_ADV_DELETE_TOWN 120
|
||||
#define IDM_SCEN_ADV_DATA_DUMP 121
|
||||
#define IDM_SCEN_ADV_TEXT_DUMP 122
|
||||
#define IDM_SCEN_INTRO 123
|
||||
#define IDM_SCEN_PASSWORD 124
|
||||
#define IDM_TOWN_DETAILS 125
|
||||
#define IDM_TOWN_WANDER 126
|
||||
#define IDM_TOWN_BOUNDS 127
|
||||
#define IDM_TOWN_FRILL 128
|
||||
#define IDM_TOWN_UNFRILL 129
|
||||
#define IDM_TOWN_AREAS 130
|
||||
#define IDM_TOWN_RANDOM_ITEMS 131
|
||||
#define IDM_TOWN_NOT_PROPERTY 132
|
||||
#define IDM_TOWN_CLEAR_ITEMS 133
|
||||
#define IDM_TOWN_ADV_SPECIALS 134
|
||||
#define IDM_TOWN_ADV_TEXT 135
|
||||
#define IDM_TOWN_ADV_SIGNS 136
|
||||
#define IDM_TOWN_ADV_DETAILS 137
|
||||
#define IDM_TOWN_ADV_EVENTS 138
|
||||
#define IDM_TOWN_ADV_REPORT 139
|
||||
#define IDM_OUT_DETAILS 140
|
||||
#define IDM_OUT_WANDER 141
|
||||
#define IDM_OUT_ENCOUNTER 142
|
||||
#define IDM_OUT_FRILL 143
|
||||
#define IDM_OUT_UNFRILL 144
|
||||
#define IDM_OUT_AREAS 145
|
||||
#define IDM_OUT_START 146
|
||||
#define IDM_OUT_ADV_SPECIALS 147
|
||||
#define IDM_OUT_ADV_TEXT 148
|
||||
#define IDM_OUT_ADV_SIGNS 149
|
||||
#define IDM_OUT_ADV_REPORT 150
|
||||
#define IDM_HELP_INDEX 151
|
||||
#define IDM_HELP_ABOUT 152
|
||||
#define IDM_HELP_START 153
|
||||
#define IDM_HELP_TEST 154
|
||||
#define IDM_HELP_DISTRIBUTE 155
|
||||
#define IDM_EDIT_UNDO 156
|
||||
#define IDM_EDIT_REDO 157
|
||||
#define IDM_EDIT_CUT 158
|
||||
#define IDM_EDIT_COPY 159
|
||||
#define IDM_EDIT_PASTE 160
|
||||
#define IDM_EDIT_DELETE 161
|
||||
#define IDM_EDIT_SELECT 162
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 40002
|
||||
#define _APS_NEXT_COMMAND_VALUE 40014
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#define _APS_NEXT_SYMED_VALUE 163
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -74,12 +74,9 @@ void Handle_One_Event();
|
||||
void Handle_Activate();
|
||||
void Handle_Update();
|
||||
void Mouse_Pressed();
|
||||
void handle_apple_menu(int item_hit);
|
||||
void handle_help_menu(int item_hit);
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_reg_menu(int item_hit);
|
||||
void handle_extra_menu(int item_hit);
|
||||
void handle_edit_menu(int item_hit);
|
||||
void update_item_menu();
|
||||
void handle_edit_menus(int item_hit);
|
||||
bool verify_restore_quit(bool mode);
|
||||
void set_up_apple_events();
|
||||
void handle_item_menu(int item_hit);
|
||||
@@ -110,6 +107,8 @@ int main(int /*argc*/, char* argv[]) {
|
||||
|
||||
cDialog::init();
|
||||
redraw_screen();
|
||||
menu_activate();
|
||||
update_item_menu();
|
||||
|
||||
while(!All_Done)
|
||||
Handle_One_Event();
|
||||
@@ -154,6 +153,7 @@ void Initialize(void) {
|
||||
//
|
||||
// Size and style obtained from WIND resource #128
|
||||
mainPtr.create(sf::VideoMode(590, 440), "Blades of Exile Character Editor", sf::Style::Titlebar | sf::Style::Close);
|
||||
init_menubar();
|
||||
}
|
||||
|
||||
void Handle_One_Event() {
|
||||
@@ -191,7 +191,7 @@ void Mouse_Pressed() {
|
||||
All_Done = verify_restore_quit(false);
|
||||
}
|
||||
|
||||
void handle_apple_menu(int item_hit) {
|
||||
void handle_help_menu(int item_hit) {
|
||||
//char desk_acc_name[256];
|
||||
//short desk_acc_num;
|
||||
|
||||
@@ -231,6 +231,11 @@ void handle_file_menu(int item_hit) {
|
||||
menu_activate();
|
||||
}
|
||||
break;
|
||||
// TODO: Implement these two
|
||||
case 4: //close
|
||||
break;
|
||||
case 5: //revert;
|
||||
break;
|
||||
case 7://quit
|
||||
All_Done = verify_restore_quit(false);
|
||||
break;
|
||||
|
@@ -48,6 +48,10 @@ static void setMenuCallback(NSMenuItem* item, id targ, SEL selector, int num) {
|
||||
}
|
||||
|
||||
void init_menubar() {
|
||||
static bool inited = false;
|
||||
if(inited) return;
|
||||
inited = true;
|
||||
|
||||
NSApplication* app = [NSApplication sharedApplication];
|
||||
[NSBundle loadNibNamed: @"pc.menu" owner: app];
|
||||
menu_bar_handle = [app mainMenu];
|
||||
@@ -68,6 +72,8 @@ void init_menubar() {
|
||||
setMenuCallback([file_menu itemWithTitle: @"Save"], handler, @selector(fileMenu:), 1);
|
||||
setMenuCallback([file_menu itemWithTitle: @"Save As…"], handler, @selector(fileMenu:), 2);
|
||||
setMenuCallback([file_menu itemWithTitle: @"Open…"], handler, @selector(fileMenu:), 3);
|
||||
setMenuCallback([file_menu itemWithTitle: @"Close"], handler, @selector(fileMenu:), 4);
|
||||
setMenuCallback([file_menu itemWithTitle: @"Revert to Saved"], handler, @selector(fileMenu:), 5);
|
||||
|
||||
for(int i = 0; i < [reg_menu numberOfItems]; i++)
|
||||
setMenuCallback([reg_menu itemAtIndex: i], handler, @selector(editMenu:), i + 1);
|
||||
|
115
src/pcedit/pc.menus.win.cpp
Normal file
115
src/pcedit/pc.menus.win.cpp
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
#include "pc.menus.h"
|
||||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
#include "Resource.h"
|
||||
#include "universe.h"
|
||||
|
||||
// Include this last because some #defines in the Windows headers cause compile errors in my headers.
|
||||
// Fortunately they're on symbols not used in this file, so this should work.
|
||||
#include <Windows.h>
|
||||
|
||||
// This is the index of each menu on the menubar
|
||||
enum {
|
||||
FILE_MENU_POS = 0,
|
||||
PARTY_MENU_POS = 1,
|
||||
SCEN_MENU_POS = 2,
|
||||
ITEMS_MENU_POS = 3,
|
||||
HELP_MENU_POS = 7,
|
||||
};
|
||||
|
||||
extern sf::RenderWindow mainPtr;
|
||||
extern cUniverse univ;
|
||||
extern bool scen_items_loaded;
|
||||
extern fs::path file_in_mem;
|
||||
LONG_PTR mainProc;
|
||||
HMENU menuHandle = NULL;
|
||||
|
||||
LRESULT CALLBACK menuProc(HWND handle, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void init_menubar() {
|
||||
HWND winHandle = mainPtr.getSystemHandle();
|
||||
if(winHandle == NULL) return;
|
||||
if(menuHandle == NULL)
|
||||
menuHandle = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU1));
|
||||
SetMenu(winHandle, menuHandle);
|
||||
// Now we have to do a little hack to handle menu messages.
|
||||
// We replace SFML's window procedure with our own, which checks for menu events and then forwards to SFML's procedure.
|
||||
mainProc = SetWindowLongPtr(winHandle, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&menuProc));
|
||||
}
|
||||
|
||||
void update_item_menu() {
|
||||
if(menuHandle == NULL) return;
|
||||
cItemRec(& item_list)[400] = univ.scenario.scen_items;
|
||||
for(int j = 0; j < 4; j++) {
|
||||
HMENU items_menu = GetSubMenu(menuHandle, ITEMS_MENU_POS + j);
|
||||
while(GetMenuItemCount(items_menu)) RemoveMenu(items_menu, 0, MF_BYPOSITION);
|
||||
if(!scen_items_loaded) {
|
||||
AppendMenuA(items_menu, MF_STRING | MF_GRAYED, 1000, "Items Not Loaded");
|
||||
} else for(int i = 0; i < 100; i++) {
|
||||
cItemRec& item = item_list[i + j * 100];
|
||||
AppendMenuA(items_menu, MF_STRING | MF_ENABLED, 1000 + j * 100 + i, item.full_name.c_str());
|
||||
// TODO: Also disable gold or food
|
||||
EnableMenuItem(items_menu, i, MF_BYPOSITION | (item.variety != eItemType::NO_ITEM ? MF_ENABLED : MF_GRAYED));
|
||||
}
|
||||
}
|
||||
DrawMenuBar(mainPtr.getSystemHandle());
|
||||
}
|
||||
|
||||
void menu_activate() {
|
||||
if(menuHandle == NULL) return;
|
||||
HMENU file_menu = GetSubMenu(menuHandle, FILE_MENU_POS);
|
||||
if(file_in_mem.empty())
|
||||
for(int i = 1; i < GetMenuItemCount(file_menu) - 1; i++)
|
||||
EnableMenuItem(file_menu, i, MF_BYPOSITION | MF_GRAYED);
|
||||
else for(int i = 1; i < GetMenuItemCount(file_menu) - 1; i++)
|
||||
EnableMenuItem(file_menu, i, MF_BYPOSITION | MF_ENABLED);
|
||||
DrawMenuBar(mainPtr.getSystemHandle());
|
||||
}
|
||||
|
||||
void handle_help_menu(int item_hit);
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_edit_menus(int item_hit);
|
||||
void handle_item_menu(int item_hit);
|
||||
|
||||
LRESULT CALLBACK menuProc(HWND handle, UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
if(message == WM_COMMAND) {
|
||||
int cmd = LOWORD(wParam);
|
||||
if(cmd >= 1000) { // Item menus
|
||||
handle_item_menu(cmd - 1000);
|
||||
} else switch(cmd) {
|
||||
// File menu
|
||||
case IDM_FILE_OPEN: handle_file_menu(3); break;
|
||||
case IDM_FILE_CLOSE: handle_file_menu(4); break;
|
||||
case IDM_FILE_SAVE: handle_file_menu(1); break;
|
||||
case IDM_FILE_SAVE_AS: handle_file_menu(2); break;
|
||||
case IDM_FILE_REVERT: handle_file_menu(5); break;
|
||||
case IDM_FILE_QUIT: handle_file_menu(7); break;
|
||||
// Edit Party menu
|
||||
case IDM_PARTY_GOLD: handle_edit_menus(1); break;
|
||||
case IDM_PARTY_FOOD: handle_edit_menus(2); break;
|
||||
case IDM_PARTY_ALCHEMY: handle_edit_menus(3); break;
|
||||
case IDM_PARTY_DAMAGE: handle_edit_menus(5); break;
|
||||
case IDM_PARTY_MANA: handle_edit_menus(6); break;
|
||||
case IDM_PARTY_DEAD: handle_edit_menus(7); break;
|
||||
case IDM_PARTY_CONDITIONS: handle_edit_menus(8); break;
|
||||
case IDM_PARTY_REUNITE: handle_edit_menus(10); break;
|
||||
case IDM_PARTY_VEHICLES: handle_edit_menus(11); break;
|
||||
case IDM_PARTY_MAGE: handle_edit_menus(13); break;
|
||||
case IDM_PARTY_PRIEST: handle_edit_menus(14); break;
|
||||
case IDM_PARTY_TRAITS: handle_edit_menus(15); break;
|
||||
case IDM_PARTY_SKILLS: handle_edit_menus(16); break;
|
||||
case IDM_PARTY_XP: handle_edit_menus(17); break;
|
||||
// Scenario Editing menu
|
||||
case IDM_SCEN_DAY: handle_edit_menus(101); break;
|
||||
case IDM_SCEN_LEAVE_TOWN: handle_edit_menus(103); break;
|
||||
case IDM_SCEN_TOWN_RESET: handle_edit_menus(104); break;
|
||||
case IDM_SCEN_TOWN_MAP: handle_edit_menus(105); break;
|
||||
case IDM_SCEN_OUT_MAP: handle_edit_menus(106); break;
|
||||
case IDM_SCEN_LEAVE: handle_edit_menus(108); break;
|
||||
case IDM_SCEN_SDF: handle_edit_menus(109); break;
|
||||
// Help menu
|
||||
case IDM_HELP: handle_help_menu(1);
|
||||
}
|
||||
}
|
||||
return CallWindowProc(reinterpret_cast<WNDPROC>(mainProc), handle, message, wParam, lParam);
|
||||
}
|
@@ -50,8 +50,6 @@ void Initialize(void);
|
||||
void Handle_One_Event();
|
||||
void Handle_Activate();
|
||||
void Handle_Update();
|
||||
void handle_menu_choice(long choice);
|
||||
void handle_apple_menu(int item_hit);
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_edit_menu(int item_hit);
|
||||
void handle_scenario_menu(int item_hit);
|
||||
@@ -173,6 +171,7 @@ void Initialize(void) {
|
||||
// TODO: I think it should have a close button as well
|
||||
mainPtr.create(sf::VideoMode(windRect.width(), windRect.height()), "Blades of Exile Scenario Editor", sf::Style::Titlebar);
|
||||
mainPtr.setPosition(windRect.topLeft());
|
||||
init_menubar();
|
||||
right_sbar_rect.top = RIGHT_AREA_UL_Y - 1;
|
||||
right_sbar_rect.left = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1 - 16;
|
||||
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT + 1;
|
||||
@@ -217,14 +216,6 @@ void Handle_Update() {
|
||||
restore_cursor();
|
||||
}
|
||||
|
||||
void handle_apple_menu(int item_hit) {
|
||||
switch(item_hit) {
|
||||
case 1:
|
||||
cChoiceDlog("about-scened").show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void handle_file_menu(int item_hit) {
|
||||
fs::path file_to_load;
|
||||
switch(item_hit) {
|
||||
@@ -496,6 +487,9 @@ void handle_outdoor_menu(int item_hit) {
|
||||
|
||||
void handle_help_menu(int item_hit) {
|
||||
switch(item_hit) {
|
||||
case 0:
|
||||
cChoiceDlog("about-scened").show();
|
||||
break;
|
||||
case 1:
|
||||
cChoiceDlog("help-editing").show();
|
||||
break; // started
|
||||
|
@@ -18,7 +18,6 @@ MenuHandle file_menu, edit_menu, app_menu, scen_menu, town_menu, out_menu, help_
|
||||
extern cScenario scenario;
|
||||
|
||||
@interface MenuHandler : NSObject
|
||||
-(void) appMenu:(id) sender;
|
||||
-(void) fileMenu:(id) sender;
|
||||
-(void) editMenu:(id) sender;
|
||||
-(void) scenMenu:(id) sender;
|
||||
@@ -37,6 +36,10 @@ static void setMenuCallback(NSMenuItem* item, id targ, SEL selector, int num) {
|
||||
}
|
||||
|
||||
void init_menubar() {
|
||||
static bool inited = false;
|
||||
if(inited) return;
|
||||
inited = true;
|
||||
|
||||
NSApplication* app = [NSApplication sharedApplication];
|
||||
[NSBundle loadNibNamed: @"scen.menu" owner: app];
|
||||
menu_bar_handle = [app mainMenu];
|
||||
@@ -59,7 +62,7 @@ void init_menubar() {
|
||||
mon_menu[3] = [[menu_bar_handle itemWithTitle: @"M4"] submenu];
|
||||
|
||||
MenuHandler* handler = [[[MenuHandler alloc] init] retain];
|
||||
setMenuCallback([app_menu itemWithTitle: @"About BoE Scenario Editor"], handler, @selector(appMenu:), 1);
|
||||
setMenuCallback([app_menu itemWithTitle: @"About BoE Scenario Editor"], handler, @selector(helpMenu:), 0);
|
||||
setMenuCallback([app_menu itemWithTitle: @"Quit BoE Scenario Editor"], handler, @selector(fileMenu:), 5);
|
||||
// TODO: Organize file menu function
|
||||
setMenuCallback([file_menu itemWithTitle: @"New Scenario…"], handler, @selector(fileMenu:), 3);
|
||||
@@ -167,7 +170,6 @@ void update_item_menu() {
|
||||
|
||||
}
|
||||
|
||||
void handle_apple_menu(int item_hit);
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_edit_menu(int item_hit);
|
||||
void handle_scenario_menu(int item_hit);
|
||||
@@ -178,10 +180,6 @@ void handle_item_menu(int item_hit);
|
||||
void handle_monst_menu(int item_hit);
|
||||
|
||||
@implementation MenuHandler
|
||||
-(void) appMenu:(id) sender {
|
||||
handle_apple_menu([[sender representedObject] intValue]);
|
||||
}
|
||||
|
||||
-(void) fileMenu:(id) sender {
|
||||
handle_file_menu([[sender representedObject] intValue]);
|
||||
}
|
||||
|
227
src/scenedit/scen.menus.win.cpp
Normal file
227
src/scenedit/scen.menus.win.cpp
Normal file
@@ -0,0 +1,227 @@
|
||||
|
||||
#include "scen.menus.h"
|
||||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
#include "Resource.h"
|
||||
#include "scenario.h"
|
||||
|
||||
// Include this last because some #defines in the Windows headers cause compile errors in my headers.
|
||||
// Fortunately they're on symbols not used in this file, so this should work.
|
||||
#include <Windows.h>
|
||||
|
||||
// This is the index of each menu on the menubar
|
||||
enum {
|
||||
FILE_MENU_POS = 0,
|
||||
EDIT_MENU_POS = 1,
|
||||
SCEN_MENU_POS = 2,
|
||||
TOWN_MENU_POS = 3,
|
||||
OUT_MENU_POS = 4,
|
||||
ITEMS_MENU_POS = 6,
|
||||
MONST_MENU_POS = 11,
|
||||
HELP_MENU_POS = 15,
|
||||
};
|
||||
|
||||
extern sf::RenderWindow mainPtr;
|
||||
extern cScenario scenario;
|
||||
LONG_PTR mainProc;
|
||||
HMENU menuHandle = NULL;
|
||||
|
||||
LRESULT CALLBACK menuProc(HWND handle, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void init_menubar() {
|
||||
HWND winHandle = mainPtr.getSystemHandle();
|
||||
if(winHandle == NULL) return;
|
||||
if(menuHandle == NULL)
|
||||
menuHandle = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU1));
|
||||
SetMenu(winHandle, menuHandle);
|
||||
// Now we have to do a little hack to handle menu messages.
|
||||
// We replace SFML's window procedure with our own, which checks for menu events and then forwards to SFML's procedure.
|
||||
mainProc = SetWindowLongPtr(winHandle, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&menuProc));
|
||||
}
|
||||
|
||||
void update_item_menu() {
|
||||
if(menuHandle == NULL) return;
|
||||
for(int j = 0; j < 5; j++) {
|
||||
HMENU item_menu = GetSubMenu(menuHandle, ITEMS_MENU_POS + j);
|
||||
while(GetMenuItemCount(item_menu)) RemoveMenu(item_menu, 0, MF_BYPOSITION);
|
||||
for(int i = 0; i < 80; i++) {
|
||||
UINT flags = MF_STRING | MF_ENABLED;
|
||||
if(i % 40 == 0) flags |= MF_MENUBARBREAK;
|
||||
AppendMenuA(item_menu, flags, 10000 + i + j * 80, scenario.scen_items[i + j * 80].full_name.c_str());
|
||||
}
|
||||
}
|
||||
for(int j = 0; j < 4; j++) {
|
||||
HMENU mon_menu = GetSubMenu(menuHandle, MONST_MENU_POS + j);
|
||||
while(GetMenuItemCount(mon_menu)) RemoveMenu(mon_menu, 0, MF_BYPOSITION);
|
||||
for(int i = 0; i < 64; i++) {
|
||||
UINT flags = MF_STRING | MF_ENABLED;
|
||||
if(i % 32 == 0) flags |= MF_MENUBARBREAK;
|
||||
AppendMenuA(mon_menu, flags, 20000 + i + j * 64, scenario.scen_monsters[i + j * 64].m_name.c_str());
|
||||
}
|
||||
}
|
||||
DrawMenuBar(mainPtr.getSystemHandle());
|
||||
}
|
||||
|
||||
void shut_down_menus(short mode) {
|
||||
if(menuHandle == NULL) return;
|
||||
HMENU file_menu = GetSubMenu(menuHandle, FILE_MENU_POS);
|
||||
if(mode == 0) {
|
||||
EnableMenuItem(file_menu, IDM_FILE_SAVE, MF_GRAYED | MF_BYCOMMAND);
|
||||
EnableMenuItem(menuHandle, SCEN_MENU_POS, MF_GRAYED | MF_BYPOSITION);
|
||||
EnableMenuItem(menuHandle, TOWN_MENU_POS, MF_GRAYED | MF_BYPOSITION);
|
||||
EnableMenuItem(menuHandle, OUT_MENU_POS, MF_GRAYED | MF_BYPOSITION);
|
||||
for(int i = 0; i < 5; i++)
|
||||
EnableMenuItem(menuHandle, ITEMS_MENU_POS + i, MF_GRAYED | MF_BYPOSITION);
|
||||
for(int i = 0; i < 4; i++)
|
||||
EnableMenuItem(menuHandle, MONST_MENU_POS + i, MF_GRAYED | MF_BYPOSITION);
|
||||
}
|
||||
std::shared_ptr<char> buf(new char[256]);
|
||||
MENUITEMINFOA info;
|
||||
info.cbSize = sizeof(MENUITEMINFOA);
|
||||
info.dwTypeData = buf.get();
|
||||
info.fMask = MIIM_STRING | MIIM_FTYPE;
|
||||
if(mode == 4) {
|
||||
EnableMenuItem(file_menu, IDM_FILE_SAVE, MF_ENABLED | MF_BYCOMMAND);
|
||||
EnableMenuItem(menuHandle, SCEN_MENU_POS, MF_ENABLED | MF_BYPOSITION);
|
||||
EnableMenuItem(menuHandle, TOWN_MENU_POS, MF_ENABLED | MF_BYPOSITION);
|
||||
EnableMenuItem(menuHandle, OUT_MENU_POS, MF_ENABLED | MF_BYPOSITION);
|
||||
for(int i = 0; i < 5; i++)
|
||||
EnableMenuItem(menuHandle, ITEMS_MENU_POS + i, MF_ENABLED | MF_BYPOSITION);
|
||||
for(int i = 0; i < 4; i++)
|
||||
EnableMenuItem(menuHandle, MONST_MENU_POS + i, MF_ENABLED | MF_BYPOSITION);
|
||||
|
||||
HMENU town_menu = GetSubMenu(menuHandle, TOWN_MENU_POS);
|
||||
for(int i = 0; i < GetMenuItemCount(town_menu); i++) {
|
||||
info.cch = 256;
|
||||
GetMenuItemInfoA(town_menu, i, true, &info);
|
||||
if(info.fType == MFT_SEPARATOR || !strcmp("Advanced", info.dwTypeData))
|
||||
continue;
|
||||
EnableMenuItem(town_menu, i, MF_ENABLED | MF_BYPOSITION);
|
||||
}
|
||||
|
||||
HMENU out_menu = GetSubMenu(menuHandle, OUT_MENU_POS);
|
||||
for(int i = 0; i < GetMenuItemCount(out_menu); i++) {
|
||||
info.cch = 256;
|
||||
GetMenuItemInfoA(out_menu, i, true, &info);
|
||||
if(!strcmp("Advanced", info.dwTypeData)) continue;
|
||||
EnableMenuItem(out_menu, i, MF_ENABLED | MF_BYPOSITION);
|
||||
}
|
||||
}
|
||||
if((mode == 1) || (mode == 3)) {
|
||||
for(int i = 0; i < 5; i++)
|
||||
EnableMenuItem(menuHandle, ITEMS_MENU_POS + i, MF_GRAYED | MF_BYPOSITION);
|
||||
for(int i = 0; i < 4; i++)
|
||||
EnableMenuItem(menuHandle, MONST_MENU_POS + i, MF_GRAYED | MF_BYPOSITION);
|
||||
|
||||
HMENU town_menu = GetSubMenu(menuHandle, TOWN_MENU_POS);
|
||||
for(int i = 0; i < GetMenuItemCount(town_menu); i++) {
|
||||
info.cch = 256;
|
||||
GetMenuItemInfoA(town_menu, i, true, &info);
|
||||
if(info.fType == MFT_SEPARATOR || info.dwTypeData[0] == ' ')
|
||||
continue;
|
||||
EnableMenuItem(town_menu, i, MF_GRAYED | MF_BYPOSITION);
|
||||
}
|
||||
}
|
||||
if((mode == 2) || (mode == 3)) {
|
||||
HMENU out_menu = GetSubMenu(menuHandle, OUT_MENU_POS);
|
||||
for(int i = 0; i < GetMenuItemCount(out_menu); i++) {
|
||||
info.cch = 256;
|
||||
GetMenuItemInfoA(out_menu, i, true, &info);
|
||||
if(info.fType == MFT_SEPARATOR || info.dwTypeData[0] == ' ')
|
||||
continue;
|
||||
EnableMenuItem(out_menu, i, MF_GRAYED | MF_BYPOSITION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_edit_menu(int item_hit);
|
||||
void handle_scenario_menu(int item_hit);
|
||||
void handle_town_menu(int item_hit);
|
||||
void handle_outdoor_menu(int item_hit);
|
||||
void handle_item_menu(int item_hit);
|
||||
void handle_monst_menu(int item_hit);
|
||||
void handle_help_menu(int item_hit);
|
||||
|
||||
LRESULT CALLBACK menuProc(HWND handle, UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
if(message == WM_COMMAND) {
|
||||
int cmd = LOWORD(wParam);
|
||||
if(cmd >= 10000 && cmd < 20000) { // Item menus
|
||||
handle_item_menu(cmd - 10000);
|
||||
} else if(cmd >= 20000 && cmd < 30000) { // Monster menus
|
||||
handle_monst_menu(cmd - 20000);
|
||||
} else switch(cmd) {
|
||||
// File menu
|
||||
case IDM_FILE_NEW: handle_file_menu(3); break;
|
||||
case IDM_FILE_OPEN: handle_file_menu(1); break;
|
||||
case IDM_FILE_CLOSE: break;
|
||||
case IDM_FILE_SAVE: handle_file_menu(2); break;
|
||||
case IDM_FILE_REVERT: break;
|
||||
case IDM_FILE_QUIT: handle_file_menu(5); break;
|
||||
// Edit menu
|
||||
case IDM_EDIT_UNDO: handle_edit_menu(1); break;
|
||||
case IDM_EDIT_REDO: handle_edit_menu(2); break;
|
||||
case IDM_EDIT_CUT: handle_edit_menu(4); break;
|
||||
case IDM_EDIT_COPY: handle_edit_menu(5); break;
|
||||
case IDM_EDIT_PASTE: handle_edit_menu(6); break;
|
||||
case IDM_EDIT_DELETE: handle_edit_menu(7); break;
|
||||
case IDM_EDIT_SELECT: handle_edit_menu(8); break;
|
||||
// Scenario menu
|
||||
case IDM_SCEN_NEW_TOWN: handle_scenario_menu(1); break;
|
||||
case IDM_SCEN_DETAILS: handle_scenario_menu(3); break;
|
||||
case IDM_SCEN_INTRO: handle_scenario_menu(4); break;
|
||||
case IDM_SCEN_START: handle_scenario_menu(4); break;
|
||||
case IDM_SCEN_PASSWORD: break;
|
||||
// Scenario menu (advanced)
|
||||
case IDM_SCEN_ADV_SPECIALS: handle_scenario_menu(9); break;
|
||||
case IDM_SCEN_ADV_TEXT: handle_scenario_menu(10); break;
|
||||
case IDM_SCEN_ADV_JOURNAL: handle_scenario_menu(11); break;
|
||||
case IDM_SCEN_ADV_IMPORT_TOWN: handle_scenario_menu(12); break;
|
||||
case IDM_SCEN_ADV_SAVE_RECTS: handle_scenario_menu(13); break;
|
||||
case IDM_SCEN_ADV_HORSES: handle_scenario_menu(14); break;
|
||||
case IDM_SCEN_ADV_BOATS: handle_scenario_menu(15); break;
|
||||
case IDM_SCEN_ADV_TOWN_VARY: handle_scenario_menu(16); break;
|
||||
case IDM_SCEN_ADV_EVENTS: handle_scenario_menu(17); break;
|
||||
case IDM_SCEN_ADV_SHORTCUTS: handle_scenario_menu(18); break;
|
||||
case IDM_SCEN_ADV_DELETE_TOWN: handle_scenario_menu(19); break;
|
||||
case IDM_SCEN_ADV_DATA_DUMP: handle_scenario_menu(20); break;
|
||||
case IDM_SCEN_ADV_TEXT_DUMP: handle_scenario_menu(21); break;
|
||||
// Town menu
|
||||
case IDM_TOWN_DETAILS: handle_town_menu(1); break;
|
||||
case IDM_TOWN_WANDER: handle_town_menu(2); break;
|
||||
case IDM_TOWN_BOUNDS: handle_town_menu(3); break;
|
||||
case IDM_TOWN_FRILL: handle_town_menu(4); break;
|
||||
case IDM_TOWN_UNFRILL: handle_town_menu(5); break;
|
||||
case IDM_TOWN_AREAS: handle_town_menu(6); break;
|
||||
case IDM_TOWN_RANDOM_ITEMS: handle_town_menu(8); break;
|
||||
case IDM_TOWN_NOT_PROPERTY: handle_town_menu(9); break;
|
||||
case IDM_TOWN_CLEAR_ITEMS: handle_town_menu(10); break;
|
||||
// Town menu (advanced)
|
||||
case IDM_TOWN_ADV_SPECIALS: handle_town_menu(13); break;
|
||||
case IDM_TOWN_ADV_TEXT: handle_town_menu(14); break;
|
||||
case IDM_TOWN_ADV_SIGNS: handle_town_menu(15); break;
|
||||
case IDM_TOWN_ADV_DETAILS: handle_town_menu(16); break;
|
||||
case IDM_TOWN_ADV_EVENTS: handle_town_menu(17); break;
|
||||
case IDM_TOWN_ADV_REPORT: break;
|
||||
// Outdoors menu
|
||||
case IDM_OUT_DETAILS: handle_outdoor_menu(1); break;
|
||||
case IDM_OUT_WANDER: handle_outdoor_menu(2); break;
|
||||
case IDM_OUT_ENCOUNTER: handle_outdoor_menu(3); break;
|
||||
case IDM_OUT_FRILL: handle_outdoor_menu(4); break;
|
||||
case IDM_OUT_UNFRILL: handle_outdoor_menu(5); break;
|
||||
case IDM_OUT_AREAS: handle_outdoor_menu(6); break;
|
||||
case IDM_OUT_START: handle_outdoor_menu(8); break;
|
||||
// Outdoors menu (advanced)
|
||||
case IDM_OUT_ADV_SPECIALS: handle_outdoor_menu(11); break;
|
||||
case IDM_OUT_ADV_TEXT: handle_outdoor_menu(12); break;
|
||||
case IDM_OUT_ADV_SIGNS: handle_outdoor_menu(13); break;
|
||||
case IDM_OUT_ADV_REPORT: break;
|
||||
// Help menu
|
||||
case IDM_HELP_INDEX: ShellExecuteA(NULL, "open", "https://calref.net/~sylae/boe-doc/editor/About.html", NULL, NULL, SW_SHOWNORMAL); break;
|
||||
case IDM_HELP_ABOUT: handle_help_menu(0); break;
|
||||
case IDM_HELP_START: handle_help_menu(1); break;
|
||||
case IDM_HELP_TEST: handle_help_menu(2); break;
|
||||
case IDM_HELP_DISTRIBUTE: handle_help_menu(3); break;
|
||||
}
|
||||
}
|
||||
return CallWindowProc(reinterpret_cast<WNDPROC>(mainProc), handle, message, wParam, lParam);
|
||||
}
|
Reference in New Issue
Block a user