w of the dueck

Here is the collection of files that have been altered so far.
Changes made:
' [ ' is an additional zoom in/zoom out key.
Ctrl + Arrow keys introduced for loading previous/next town and for outdoor zones above/below/left/right.
Added a comment about which Ctrl + Letter shortcuts were still available.
Town menu was rearranged.
Graying out of menus has been updated.
Version date is now shown in the Help > About Blades Scenario Editor dialog.
Three new hotkeys: "^A", 213, ASCII,  "^B", 214, ASCII,   "^V", 312, ASCII
New scenario object write up: BoE Scenario Object data.txt

regards

Ishad Nha


git-svn-id: http://openexile.googlecode.com/svn/trunk@129 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
Sylae Corell
2009-09-24 19:19:48 +00:00
parent 1f4d01118c
commit 72e165c557
5 changed files with 204 additions and 68 deletions

View File

@@ -6,8 +6,6 @@
#include "string.h"
#include "stdio.h"
#include "math.h"
#include "Global.h"
#include "graphics.h"
#include "tactions.h"
@@ -87,7 +85,7 @@ Boolean editing_town = FALSE;
short town_type = 0; // 0 - big 1 - ave 2 - small
char szWinName[] = "BoE for Win32 dialogs";
char szAppName[] = "Classic BoE Scenario Editor";
extern void object_scenario_data_dump();
char szBladBase[128];
void loadSettingsFromFile()
@@ -721,6 +719,14 @@ Boolean handle_menu (short item, HMENU menu)
case 304: frill_up_terrain(); break;
case 305: unfrill_terrain(); break;
case 306: edit_out_strs(); break;
case 307: if (fancy_choice_dialog(875,0) == 2) // clear all special encounters
break;
for (i = 0; i < 18; i++) {
current_terrain.special_locs[i].x = 100;
current_terrain.special_locs[i].y = 0;
current_terrain.special_id[i] = 255;
}
case 311:
lpsi.fMask = SIF_POS;
lpsi.nPos = 0;
@@ -733,13 +739,6 @@ Boolean handle_menu (short item, HMENU menu)
SetScrollInfo(right_sbar,SB_CTL,&lpsi,TRUE);
//SetScrollPos(right_sbar,SB_CTL,0,TRUE);
start_string_editing(1,0); break;
case 313: if (fancy_choice_dialog(875,0) == 2) // clear all special encounters
break;
for (i = 0; i < 18; i++) {
current_terrain.special_locs[i].x = 100;
current_terrain.special_locs[i].y = 0;
current_terrain.special_id[i] = 255;
}
break;
case 401:
@@ -874,6 +873,48 @@ Boolean handle_menu (short item, HMENU menu)
}
break;
case 412: // load outdoor zone above
if (editing_town)
break;
if (cur_out.y > 0) {
x = cur_out.x;
y = cur_out.y - 1;
}
else {
x = cur_out.x;
y = scenario.out_height - 1;
}
spot_hit.x = x;
spot_hit.y = y;
load_outdoors(spot_hit,0);
augment_terrain(spot_hit);
start_out_edit();
break;
case 413: // load outdoor zone below
if (editing_town)
break;
if (cur_out.y == scenario.out_height - 1) {
x = cur_out.x;
y = 0;
}
else {
x = cur_out.x;
y = cur_out.y + 1;
}
spot_hit.x = x;
spot_hit.y = y;
load_outdoors(spot_hit,0);
augment_terrain(spot_hit);
start_out_edit();
break;
case 414:
if (fancy_choice_dialog(878,0) == 1)
object_scenario_data_dump();
break;
// Extra Help
case 801: // help file
WinHelp(mainPtr,"Scenario Editor.hlp",HELP_CONTENTS,0L);

View File

@@ -71,17 +71,17 @@ Exile MENU
MENUITEM "Set All Items Not Property", 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", 213
MENUITEM " Edit Town Text", 214
MENUITEM " Edit Special Nodes\tCtrl+A", 213
MENUITEM " Edit Town Text\tCtrl+B", 214
MENUITEM " Advanced Town Details", 215
MENUITEM " Set Town Event Timers", 216
MENUITEM " Concise Town Report",221
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 " Concise Town Report",221
}
POPUP "&Outdoors"
@@ -92,11 +92,11 @@ Exile MENU
MENUITEM "Frill Up Terrain", 304
MENUITEM "Remove Terrain Frills", 305
MENUITEM "Edit Area Descriptions", 306
MENUITEM "Clear All Placed Specials", 307
MENUITEM SEPARATOR
MENUITEM "Advanced:", 310
MENUITEM " Edit Special Nodes\tCtrl+U", 311
MENUITEM " Edit Outdoor Text", 312
MENUITEM " Delete All Placed Specials", 313
MENUITEM " Edit Outdoor Text\tCtrl+V", 312
}
POPUP "&Additional Features"
@@ -106,16 +106,17 @@ Exile MENU
MENUITEM "Edit Town\tCtrl+T", 401
MENUITEM "Edit Outdoor\tCtrl+R", 402
MENUITEM "Load Another Outdoor Zone/Town\tCtrl+L", 403
MENUITEM SEPARATOR
MENUITEM SEPARATOR
MENUITEM "Edit Terrain Types\tCtrl+E", 404
MENUITEM "Edit Monsters\tCtrl+F", 405
MENUITEM "Edit Items\tCtrl+G", 406
MENUITEM SEPARATOR
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 "Scenario Object Data Dump", 414
}
POPUP "&I1"
@@ -209,7 +210,10 @@ ACCELERATORS_1 ACCELERATORS
"^S", 2, ASCII
"^N", 3, ASCII
"^Q", 5, ASCII
"^A", 213, ASCII
"^B", 214, ASCII
"^U", 311, ASCII
"^V", 312, ASCII
"^T", 401, ASCII
"^R", 402, ASCII
"^L", 403, ASCII
@@ -220,6 +224,15 @@ ACCELERATORS_1 ACCELERATORS
"^I", 408, ASCII
"^J", 409, ASCII
"^K", 410, 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: C,H,P,W,X,Y,Z
}
1 WAVE "snd0.wav"

View File

@@ -1882,7 +1882,17 @@ STYLE WS_POPUP | WS_DLGFRAME
LTEXT "Lists of all the placed specials, signs, items and fields in the current town are about to be put into a file called 'BoE Concise Town Report.txt' in the editor folder. You can then use this file as a handy reference while designing your scenario.", 4, 49, 6, 271, 66
LTEXT "It includes the locations and text strings too.", 5, 49, 95, 271, 29
}
878 DIALOG 10, 10, 356, 154
STYLE WS_POPUP | WS_DLGFRAME
{
LTEXT "1_63", 1, 254, 129, 66, 20
LTEXT "0_5", 2, 189, 129, 65, 20
LTEXT "5_716", 3, 6, 6, 36, 36
LTEXT "This creates a list of all the item placement shortcuts and specials in the scenario. Information is placed in a file called 'BoE Scenario Object data.txt' in the editor folder.", 4, 49, 6, 271, 66
LTEXT "A list of the Special Items is included.", 5, 49, 95, 271, 29
}
890 DIALOG 10, 10, 357, 114
STYLE WS_POPUP | WS_DLGFRAME
{
@@ -1977,7 +1987,7 @@ STYLE WS_POPUP | WS_DLGFRAME
{
LTEXT "1_63", 1, 435, 295, 61, 20
LTEXT "5_716", 2, 6, 6, 36, 36
LTEXT "Classic Blades of Exile Scenario Editor version 1.0 | Copyright 1997, Spiderweb Software, Inc., All rights reserved.||Blades of Exile is distributed for free under GNU General Public License version 2.", 3, 50, 6, 420, 33
LTEXT "Classic Blades of Exile Scenario Editor version 23.09.2009 | Copyright 1997, Spiderweb Software, Inc., All rights reserved.||Blades of Exile is distributed for free under GNU General Public License version 2.", 3, 50, 6, 420, 33
LTEXT "CREDITS : Initial coding/32-bit porting by Ormus . Aesthetic touches by Ishad Nha.", 4, 50, 227, 424, 33
LTEXT "Comments? Questions? Bugs? Post them at the Blades section of the Irony Central Board: www.ironycentral.com/forum/", 5, 50, 271, 354, 32
LTEXT "Blades of Exile was brought to you by Spiderweb Software - | _Where our aberrations become your reality._ |_Blades of Exile_ and Spiderweb Software are trademarks of Spiderweb Software.", 7, 50, 154, 410, 51

View File

@@ -1308,7 +1308,7 @@ Boolean handle_keystroke(WPARAM wParam, LPARAM lParam)
are_done = handle_action(pass_point,wParam,-1);
break;
case'I':
case'I': case'[':
pass_point.x = RIGHT_AREA_UL_X + 6 + palette_buttons[0][1].left;
pass_point.y = RIGHT_AREA_UL_Y + 6 + terrain_rects[255].bottom + palette_buttons[0][1].top;
are_done = handle_action(pass_point,wParam,-1);
@@ -3339,22 +3339,20 @@ void shut_down_menus(short mode)
{
HMENU menu;
short i;
short scen_items[20] = {101,103,104,105,106, 109,110,112,113,114, 115,116,117,118,119, 120,111,121,122,123};
short town_items[17] = {201,202,203,204,205, 206,208,209,210,213, 214,215,216, 217,218,219,220};
short out_items[10] = {301,302,303,304,305,306,308,311,312,313};
menu = GetMenu(mainPtr);
//menu[i] = GetSubMenu(big_menu,5 + i);
if (mode == 0) {
EnableMenuItem(menu,2,MF_GRAYED | MF_BYCOMMAND);
for (i = 0; i < 20; i++)
EnableMenuItem(menu,scen_items[i],MF_GRAYED | MF_BYCOMMAND);
for (i = 0; i < 17; i++)
EnableMenuItem(menu,town_items[i],MF_GRAYED | MF_BYCOMMAND);
for (i = 0; i < 10; i++)
EnableMenuItem(menu,out_items[i],MF_GRAYED | MF_BYCOMMAND);
for (i = 0; i < 10; i++)
EnableMenuItem(menu,401+i,MF_GRAYED | MF_BYCOMMAND);
if (mode == 0) {
// Item 2 is Save Scenario
EnableMenuItem(menu,2,MF_GRAYED | MF_BYCOMMAND);
for (i = 101; i < 124; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
for (i = 201; i < 222; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
for (i = 301; i < 314; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
for (i = 401; i < 415; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
//for (i = 600; i < 1000; i++) {
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
@@ -3362,40 +3360,42 @@ void shut_down_menus(short mode)
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
}
if ((mode == 1) || (mode == 3)) {
for (i = 201; i < 212; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
for (i = 217; i < 221; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
//for (i = 600; i < 1000; i++) {
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
//for (i = 1000; i < 1256; i++) {
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
}
if ((mode == 2) || (mode == 3)) {
for (i = 301; i < 308; i++)
EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
}
if (mode == 4) {
EnableMenuItem(menu,1,MF_ENABLED | MF_BYCOMMAND);
EnableMenuItem(menu,2,MF_ENABLED | MF_BYCOMMAND);
EnableMenuItem(menu,3,MF_ENABLED | MF_BYCOMMAND);
EnableMenuItem(menu,5,MF_ENABLED | MF_BYCOMMAND);
for (i = 0; i < 20; i++)
EnableMenuItem(menu,scen_items[i],MF_ENABLED | MF_BYCOMMAND);
for (i = 0; i < 17; i++)
EnableMenuItem(menu,town_items[i],MF_ENABLED | MF_BYCOMMAND);
for (i = 0; i < 10; i++)
EnableMenuItem(menu,out_items[i],MF_ENABLED | MF_BYCOMMAND);
for (i = 0; i < 10; i++)
EnableMenuItem(menu,401+i,MF_ENABLED | MF_BYCOMMAND);
for (i = 1; i < 6; i++)
EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
for (i = 101; i < 124; i++)
EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
for (i = 201; i < 222; i++)
EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
for (i = 301; i < 314; i++)
EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
for (i = 401; i < 415; i++)
EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
//for (i = 600; i < 1000; i++) {
// EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
// }
//for (i = 1000; i < 1256; i++) {
// EnableMenuItem(menu,i,MF_ENABLED | MF_BYCOMMAND);
// }
}
if ((mode == 1) || (mode == 3)) {
for (i = 0; i < 9; i++)
EnableMenuItem(menu,town_items[i],MF_GRAYED | MF_BYCOMMAND);
//for (i = 600; i < 1000; i++) {
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
//for (i = 1000; i < 1256; i++) {
// EnableMenuItem(menu,i,MF_GRAYED | MF_BYCOMMAND);
// }
}
if ((mode == 2) || (mode == 3)) {
for (i = 0; i < 7; i++)
EnableMenuItem(menu,out_items[i],MF_GRAYED | MF_BYCOMMAND);
}
}

View File

@@ -51,6 +51,8 @@ Boolean cur_scen_is_win = TRUE;
talking_record_type *dummy_talk_ptr;
town_record_type *dummy_town_ptr;
extern char file_path_name[256];
void object_scenario_data_dump();
extern item_storage_shortcut_type store_storage;
// Big waste!
char last_load_file[63] = "newscen.exs";
@@ -1240,7 +1242,7 @@ void start_town_data_dump()
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (i = 0; i < 50; i++) {
if (town.spec_id[i] < 255){
if ((town.specials[i].type > 0) || (town.specials[i].jumpto >= 0)) {
get_str(spec_name,22,town.specials[town.spec_id[i]].type + 1);
sprintf(get_text," Placed special %d: x = %d, y = %d, state = %d, name = %s\r",i,town.special_locs[i].x,town.special_locs[i].y,town.spec_id[i],spec_name);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
@@ -1311,7 +1313,7 @@ void start_town_data_dump()
sprintf(get_text,"\r\r Town Special Nodes: [100]\r");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (i = 0; i < 100; i++) {
if (town.specials[i].type > 0) {
if ((town.specials[i].type > 0) || (town.specials[i].jumpto >= 0)) {
get_str(spec_name,22,town.specials[i].type + 1);
sprintf(get_text," Town special %d: Type = %d, SD1 = %d, SD2 = %d, Pic = %d, M1 = %d, M2 = %d, Ex1a = %d, Ex1b = %d, Ex2a = %d, Ex2b = %d, JumpTo = %d, Name = %s\r",i,town.specials[i].type,town.specials[i].sd1,town.specials[i].sd2,town.specials[i].pic,town.specials[i].m1,town.specials[i].m2,town.specials[i].ex1a,town.specials[i].ex1b,town.specials[i].ex2a,town.specials[i].ex2b,town.specials[i].jumpto,spec_name);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
@@ -1323,6 +1325,76 @@ void start_town_data_dump()
CloseHandle(data_dump_file_id);
}
void object_scenario_data_dump()
{
short i,j;
char get_text[280], spec_name[256];
HANDLE data_dump_file_id;
DWORD dwByteRead;
data_dump_file_id = CreateFile("BoE Scenario Object data.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (data_dump_file_id == INVALID_HANDLE_VALUE)
{
oops_error(28);
beep();
return;
}
sprintf(get_text,"\n\nConcise Scenario Object Data Printout for %s\n\n",scen_strs[0]);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
sprintf(get_text," For rectangles: \"tl\" = the top and left corner of the rectangle while \"br\" = the bottom and right corner.\n\n Maximum number of any given type of town object is shown by \"[ # ]\".\n Null objects are frequently not listed.\n\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
sprintf(get_text,"The Special Items [50]\n Special Item Properties: A value of 1 means that the Special Item can be used,\n while a value of 10 means that the party starts the scenario with the item. \n A value of 11 means that it can be used and the party starts with it.\n\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (short i = 0; i < 50; i++) {
sprintf(get_text,"Special Item %d: Scenario Special Called = %d, Properties = %d, Name = \"%s\"\n",i,scenario.special_item_special[i],scenario.special_items[i],scen_strs[60 + i * 2]);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
}
sprintf(get_text,"\n\nItem Storage Shortcuts [10]\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (short i = 0; i < 10; i++) {
sprintf(get_text,"Shortcut %d: All Items Property = %d, Terrain type = %d, Name = %s\n",i,scenario.storage_shortcuts[i].property,scenario.storage_shortcuts[i].ter_type,scen_item_list.ter_names[scenario.storage_shortcuts[i].ter_type]);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
}
sprintf(get_text,"\n\n Scenario Horse Records: [30]\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (short i = 0; i < 30; i++) {
if (scenario.scen_horses[i].which_town >= 0) {
sprintf(get_text," Scenario Horse %d: Town = %d, X = %d, Y = %d, Property = %d\n",i,scenario.scen_horses[i].which_town,scenario.scen_horses[i].horse_loc.x,scenario.scen_horses[i].horse_loc.y,scenario.scen_horses[i].property);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
}
}
sprintf(get_text,"\n\n Scenario Boat Records: [30]\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (short i = 0; i < 30; i++) {
if (scenario.scen_boats[i].which_town >= 0) {
sprintf(get_text," Scenario Boat %d: Town = %d, X = %d, Y = %d, Property = %d\n",i,scenario.scen_boats[i].which_town,scenario.scen_boats[i].boat_loc.x,scenario.scen_boats[i].boat_loc.y,scenario.scen_boats[i].property);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
}
}
sprintf(get_text,"\n\n Scenario Special Nodes: [256]\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
for (short i = 0; i < 256; i++) {
if ((scenario.scen_specials[i].type > 0) || (scenario.scen_specials[i].jumpto >= 0)) {
get_str(spec_name,22,town.specials[i].type + 1);
sprintf(get_text," Scenario special %d: Type = %d, SD1 = %d, SD2 = %d, Pic = %d, M1 = %d, M2 = %d, Ex1a = %d, Ex1b = %d, Ex2a = %d, Ex2b = %d, JumpTo = %d, Name = %s\n",i,scenario.scen_specials[i].type,scenario.scen_specials[i].sd1,scenario.scen_specials[i].sd2,scenario.scen_specials[i].pic,scenario.scen_specials[i].m1,scenario.scen_specials[i].m2,scenario.scen_specials[i].ex1a,scenario.scen_specials[i].ex1b,scenario.scen_specials[i].ex2a,scenario.scen_specials[i].ex2b,scenario.scen_specials[i].jumpto,spec_name);
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
}
}
sprintf(get_text,"\n\n");
WriteFile(data_dump_file_id, get_text,strlen(get_text),&dwByteRead,NULL);
CloseHandle(data_dump_file_id);
}
void start_data_dump()
{
short i,j,last_town = cur_town;