(Scenario Editor is unaffected by this commit.) - Menubar converted to a .xib file - Don't include the Info.plist in "Copy Files" stage - Several more dialogs converted; as before, the source resources have had their resource name changed to the new filename - One more converted STR# has been included There were several functions in the PC Editor code that also existed in the BoE game code. I've moved these into the pc.editors.cpp file, so that there's only one copy of each. - display_alchemy() functions changed signatures - moved keyToChar() function into a common file (winutil) - Several constants and globals moved to pc.editors.cpp Supporting changes to dialog framework: - New formatting option to set the frame style; this because the PC editor uses a different frame style in some contexts - Added global default dialog background setting --> This was necessary to correctly set the default text colour --> Will also be needed for the scenario editor, which uses a different default background Other changes: - Add option to load_scenario to skip loading the strings - Fix for crash in soundtool in the event of initialization before playing the first sound
427 lines
11 KiB
C
427 lines
11 KiB
C
//#define EXILE_BIG_GUNS 1
|
|
|
|
#define DRAG_EDGE 15
|
|
|
|
#define T_M 60
|
|
|
|
#define NUM_TOWN_ITEMS 115
|
|
|
|
#define DRAG_EDGE 15
|
|
|
|
#define DISPLAY_LEFT 23
|
|
#define DISPLAY_TOP 23
|
|
#define BITMAP_WIDTH 28
|
|
#define BITMAP_HEIGHT 36
|
|
|
|
//#define STORED_GRAPHICS 240
|
|
|
|
#define PC_WIN_UL_X 291
|
|
#define PC_WIN_UL_Y 5
|
|
#define ITEM_WIN_UL_X 291
|
|
#define ITEM_WIN_UL_Y 130
|
|
#define TEXT_WIN_UL_X 291
|
|
#define TEXT_WIN_UL_Y 283
|
|
#define NUM_BUTTONS 15
|
|
#define ASB add_string_to_buf
|
|
#define PSD univ.party.stuff_done
|
|
#define DES display_enc_string
|
|
#define D2ES display_2_enc_string
|
|
|
|
#define DOOR_LIGHT can_enter = run_trap(7,&PSD[c_town.town_num][which],4220,0); break;
|
|
#define DOOR_HEAVY can_enter = run_trap(7,&PSD[c_town.town_num][which],4220,20); break;
|
|
#define DOOR_ALARM can_enter = run_trap(7,&PSD[c_town.town_num][which],4220,11); break;
|
|
#define DRESSER_LIGHT can_enter = run_trap(7,&PSD[c_town.town_num][which],4221,0); break;
|
|
#define DRESSER_HEAVY can_enter = run_trap(7,&PSD[c_town.town_num][which],4221,20); break;
|
|
#define DRESSER_ALARM can_enter = run_trap(7,&PSD[c_town.town_num][which],4221,11); break;
|
|
#define FLOOR_LIGHT can_enter = run_trap(7,&PSD[c_town.town_num][which],4222,0); break;
|
|
#define FLOOR_HEAVY can_enter = run_trap(7,&PSD[c_town.town_num][which],4222,20); break;
|
|
#define FLOOR_ALARM can_enter = run_trap(7,&PSD[c_town.town_num][which],4222,11); break;
|
|
#define CHEST_LIGHT can_enter = run_trap(7,&PSD[c_town.town_num][which],3450,0); break;
|
|
#define CHEST_HEAVY can_enter = run_trap(7,&PSD[c_town.town_num][which],3450,20); break;
|
|
#define CHEST_ALARM can_enter = run_trap(7,&PSD[c_town.town_num][which],3450,11); break;
|
|
|
|
#define printFlag() printf("%s %i\n",__FILE__,__LINE__)
|
|
|
|
//typedef struct {
|
|
// char x,y;
|
|
// } location;
|
|
//typedef struct {
|
|
// short x,y;} shortloc;
|
|
|
|
//typedef struct {
|
|
// short type,sd1,sd2,pic,m1,m2,ex1a,ex1b,ex2a,ex2b,jumpto;
|
|
// } special_node_type;
|
|
|
|
//typedef struct {
|
|
// short personality,type;
|
|
// char link1[4],link2[4];
|
|
// short extras[4];
|
|
// } talking_node_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char strlens[200];
|
|
// talking_node_type talk_nodes[60];
|
|
// } talking_record_type;
|
|
|
|
//typedef struct {
|
|
// short picture;
|
|
// unsigned char blockage,flag1,flag2,special,trans_to_what,fly_over,boat_over;
|
|
// unsigned char block_horse,light_radius,step_sound,shortcut_key,res1,res2,res3;
|
|
// } terrain_type_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char monst[4];
|
|
// } wandering_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char monst[7];
|
|
// unsigned char friendly[3];
|
|
// short spec_on_meet,spec_on_win,spec_on_flee,cant_flee;
|
|
// short end_spec1,end_spec2;
|
|
//} out_wandering_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char terrain[48][48];
|
|
// location special_locs[18];
|
|
// unsigned char special_id[18];
|
|
// location exit_locs[8];
|
|
// char exit_dests[8];
|
|
// location sign_locs[8];
|
|
// out_wandering_type wandering[4],special_enc[4];
|
|
// location wandering_locs[4];
|
|
// RECT info_rect[8];
|
|
// unsigned char strlens[180];
|
|
// special_node_type specials[60];
|
|
// } outdoor_record_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char number;
|
|
// unsigned char start_attitude;
|
|
// location start_loc;
|
|
// unsigned char mobile;
|
|
// unsigned char time_flag;
|
|
// unsigned char extra1,extra2;
|
|
// short spec1, spec2;
|
|
// char spec_enc_code,time_code;
|
|
// short monster_time,personality;
|
|
// short special_on_kill,facial_pic;
|
|
//
|
|
// } creature_start_type;
|
|
|
|
|
|
//typedef struct {
|
|
// short variety, item_level;
|
|
// char awkward, bonus, protection, charges, type;
|
|
// unsigned char graphic_num,ability, type_flag, is_special;
|
|
// short value;
|
|
// bool identified, magic;
|
|
// unsigned char weight, description_flag;
|
|
// char full_name[25], name[15];
|
|
// unsigned char reserved1,reserved2;
|
|
// unsigned char magic_use_type, ability_strength, treas_class, real_abil;
|
|
//
|
|
//} short_item_record_type;
|
|
|
|
|
|
//typedef struct {
|
|
// short variety, item_level;
|
|
// char awkward, bonus, protection, charges, type, magic_use_type;
|
|
// unsigned char graphic_num,ability, ability_strength,type_flag, is_special;
|
|
// short value;
|
|
// unsigned char weight, special_class;
|
|
// location item_loc;
|
|
// char full_name[25], name[15];
|
|
// unsigned char treas_class,item_properties,reserved1,reserved2;
|
|
//} item_record_type;
|
|
|
|
//typedef struct {
|
|
// location item_loc;
|
|
// short item_code,ability;
|
|
// unsigned char charges,always_there,property,contained;
|
|
// } preset_item_type;
|
|
|
|
//typedef struct {
|
|
// location field_loc;
|
|
// short field_type;
|
|
// } preset_field_type;
|
|
|
|
//typedef struct {
|
|
// short town_chop_time,town_chop_key;
|
|
// wandering_type wandering[4];
|
|
// location wandering_locs[4];
|
|
// location special_locs[50];
|
|
// unsigned char spec_id[50];
|
|
// location sign_locs[15];
|
|
// short lighting;
|
|
// location start_locs[4];
|
|
// location exit_locs[4];
|
|
// short exit_specs[4];
|
|
// RECT in_town_rect;
|
|
// preset_item_type preset_items[64];
|
|
// short max_num_monst;
|
|
// preset_field_type preset_fields[50];
|
|
// short spec_on_entry,spec_on_entry_if_dead;
|
|
// short timer_spec_times[8];
|
|
// short timer_specs[8];
|
|
// unsigned char strlens[180];
|
|
// special_node_type specials[100];
|
|
// unsigned char specials1,specials2,res1,res2;
|
|
// short difficulty;
|
|
// } town_record_type;
|
|
|
|
|
|
|
|
//typedef struct {
|
|
// unsigned char terrain[64][64];
|
|
// RECT room_rect[16];
|
|
// creature_start_type creatures[60];
|
|
// unsigned char lighting[8][64];
|
|
// } big_tr_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char terrain[48][48];
|
|
// RECT room_rect[16];
|
|
// creature_start_type creatures[40];
|
|
// unsigned char lighting[6][48];
|
|
// } ave_tr_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char terrain[32][32];
|
|
// RECT room_rect[16];
|
|
// creature_start_type creatures[30];
|
|
// unsigned char lighting[4][32];
|
|
// } tiny_tr_type;
|
|
|
|
//typedef struct {
|
|
// short block_type;
|
|
// short block_destroy_time;
|
|
// char block_alignment;
|
|
// char block_key_time;
|
|
// location block_loc;
|
|
// } city_block_type;
|
|
|
|
//typedef struct {
|
|
// RECT what_rect;
|
|
// unsigned char ter_type;
|
|
// unsigned char hollow;
|
|
// } city_ter_rect_type;
|
|
|
|
//typedef struct {
|
|
// creature_start_type creatures[30];
|
|
// city_block_type city_block[15];
|
|
// city_ter_rect_type city_ter_rect[10];
|
|
// } template_town_type;
|
|
|
|
//typedef struct {
|
|
// item_record_type scen_items[400];
|
|
// char monst_names[256][20];
|
|
// char ter_names[256][30];
|
|
// } scen_item_data_type;
|
|
|
|
//typedef struct {
|
|
// short ter_type,item_num[10],item_odds[10],property;
|
|
// } item_storage_shortcut_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char m_num,level,m_name[26];
|
|
// short health,m_health,mp,max_mp;
|
|
// unsigned char armor,skill;
|
|
// short a[3];
|
|
// unsigned char a1_type,a23_type,m_type,speed,ap,mu,cl,breath,breath_type,treasure,spec_skill,poison;
|
|
// short morale,m_morale;
|
|
// short corpse_item,corpse_item_chance;
|
|
// short status[15];
|
|
// unsigned char direction,immunities,x_width,y_width,radiate_1,radiate_2;
|
|
// unsigned char default_attitude,summon_type,default_facial_pic,res1,res2,res3;
|
|
// short picture_num;
|
|
//
|
|
// } monster_record_type;
|
|
|
|
//typedef struct {
|
|
// short active,attitude;
|
|
// unsigned char number;
|
|
// location m_loc;
|
|
// monster_record_type m_d;
|
|
// bool mobile;
|
|
// short summoned;
|
|
// creature_start_type monst_start;
|
|
// } creature_data_type;
|
|
|
|
|
|
//typedef struct {
|
|
// location horse_loc,horse_loc_in_sec,horse_sector;
|
|
// short which_town;
|
|
// bool exists,property;
|
|
// } horse_record_type;
|
|
//typedef struct {
|
|
// location boat_loc,boat_loc_in_sec,boat_sector;
|
|
// short which_town;
|
|
// bool exists,property;
|
|
//} boat_record_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char flag1, flag2, flag3, flag4;
|
|
// unsigned char ver[3],min_run_ver,prog_make_ver[3],num_towns;
|
|
// unsigned char out_width,out_height,difficulty,intro_pic,default_ground;
|
|
// } scen_header_type;
|
|
|
|
// typedef struct {
|
|
// unsigned char flag1, flag2, flag3, flag4;
|
|
// unsigned char ver[3],min_run_ver,prog_make_ver[3],num_towns;
|
|
// unsigned char out_width,out_height,difficulty,intro_pic,default_ground;
|
|
// unsigned char town_size[200];
|
|
// unsigned char town_hidden[200];
|
|
// short flag_a;
|
|
// short intro_mess_pic,intro_mess_len;
|
|
// location where_start,out_sec_start,out_start;
|
|
// short which_town_start;
|
|
// short flag_b;
|
|
// short town_data_size[200][5];
|
|
// short town_to_add_to[10];
|
|
// short flag_to_add_to_town[10][2];
|
|
// short flag_c;
|
|
// short out_data_size[100][2];
|
|
// RECT store_item_rects[3];
|
|
// short store_item_towns[3];
|
|
// short flag_e;
|
|
// short special_items[50];
|
|
// short special_item_special[50];
|
|
// short rating,uses_custom_graphics;
|
|
// short flag_f;
|
|
// monster_record_type scen_monsters[256];
|
|
// boat_record_type scen_boats[30];
|
|
// horse_record_type scen_horses[30];
|
|
// short flag_g;
|
|
// terrain_type_type ter_types[256];
|
|
// short scenario_timer_times[20];
|
|
// short scenario_timer_specs[20];
|
|
// short flag_h;
|
|
// special_node_type scen_specials[256];
|
|
// item_storage_shortcut_type storage_shortcuts[10];
|
|
// short flag_d;
|
|
// unsigned char scen_str_len[300];
|
|
// short flag_i;
|
|
// location last_out_edited;
|
|
// short last_town_edited;
|
|
//
|
|
// } scenario_data_type;
|
|
|
|
// for game
|
|
//typedef struct {
|
|
// short personality;
|
|
// short town_num;
|
|
// short str1,str2;
|
|
// } talk_save_type;
|
|
|
|
|
|
|
|
|
|
|
|
//typedef struct {
|
|
// creature_data_type dudes[60];
|
|
// short which_town;
|
|
// short friendly;
|
|
// } creature_list_type;
|
|
|
|
//typedef struct {
|
|
// short town_num, difficulty;
|
|
// town_record_type town;
|
|
// char explored[64][64];
|
|
// bool hostile;
|
|
// creature_list_type monst;
|
|
// bool in_boat;
|
|
// location p_loc;
|
|
// } current_town_type;
|
|
|
|
//typedef struct {
|
|
// bool exists;
|
|
// short direction;
|
|
// out_wandering_type what_monst;
|
|
// location which_sector,m_loc;
|
|
// } outdoor_creature_type;
|
|
|
|
//typedef struct {
|
|
// long age;
|
|
// short gold,food;
|
|
// unsigned char stuff_done[310][10],item_taken[200][8];
|
|
// short light_level;
|
|
// location outdoor_corner,i_w_c,p_loc,loc_in_sec;
|
|
// boat_record_type boats[30];
|
|
// horse_record_type horses[30];
|
|
// creature_list_type creature_save[4];
|
|
// short in_boat,in_horse;
|
|
// outdoor_creature_type out_c[10];
|
|
// item_record_type magic_store_items[5][10];
|
|
// short imprisoned_monst[4];
|
|
// char m_seen[256];
|
|
// char journal_str[50];
|
|
// short journal_day[50];
|
|
// short special_notes_str[140][2];
|
|
// talk_save_type talk_save[120];
|
|
// short direction,at_which_save_slot;
|
|
// char alchemy[20];
|
|
// bool can_find_town[200];
|
|
// short key_times[100];
|
|
// short party_event_timers[30];
|
|
// short global_or_town[30];
|
|
// short node_to_call[30];
|
|
// char spec_items[50],help_received[120];
|
|
// short m_killed[200];
|
|
// long total_m_killed,total_dam_done,total_xp_gained,total_dam_taken;
|
|
// char scen_name[256];
|
|
// } party_record_type;
|
|
|
|
//typedef struct {
|
|
// char town_maps[200][8][64];
|
|
// } stored_town_maps_type;
|
|
//typedef struct {
|
|
// char town_strs[180][256];
|
|
// //char out_strs[120][256];
|
|
// char scen_strs[270][256];
|
|
// char talk_strs[170][256];
|
|
// char scen_header_strs[25][3][80];
|
|
// Str255 scen_names[25];
|
|
// scen_item_data_type scen_item_list;
|
|
// stored_town_maps_type town_maps;
|
|
// } piles_of_stuff_dumping_type;
|
|
//typedef struct {
|
|
// char out_strs[9][256];
|
|
// } outdoor_strs_type;
|
|
//typedef struct {
|
|
// short main_status;
|
|
// char name[20];
|
|
// short skills[30];
|
|
// short max_health,cur_health,max_sp,cur_sp,experience,skill_pts,level;
|
|
// short status[15];
|
|
// item_record_type items[24];
|
|
// bool equip[24];
|
|
// bool priest_spells[62],mage_spells[62];
|
|
// short which_graphic,weap_poisoned;
|
|
// bool advan[15],traits[15];
|
|
// short race,exp_adj,direction;
|
|
// } pc_record_type;
|
|
|
|
//typedef struct {
|
|
// unsigned char setup[4][64][64];
|
|
// } setup_save_type;
|
|
|
|
|
|
//typedef struct {
|
|
// item_record_type items[NUM_TOWN_ITEMS];
|
|
// } town_item_list;
|
|
|
|
//typedef struct {short i;} flag_type;
|
|
|
|
typedef struct {unsigned char pattern[9][9];} effect_pat_type;
|
|
|
|
//typedef struct {
|
|
// item_record_type items[NUM_TOWN_ITEMS];
|
|
// } stored_items_list_type;
|
|
|
|
//typedef struct {
|
|
// char outdoor_maps[100][6][48];
|
|
// } stored_outdoor_maps_type;
|
|
|
|
typedef struct {
|
|
long l[10];
|
|
} PrefRecord,*PrefPtr,**PrefHandle; |