- Fixed up file loading (but then broke it again)

- Reworked preferences to use plist
- Cleaned out the shareware code
- More tweaks to the dialog engine
- Edited dialog #869 (the choose prefab scenario dialog) to use new invisible button (type 6) and to remove the "Must be registered" lines.
- Tweaked window size so that the startup screen fits within it.
- More major refactoring work.
- A few additions/alterations to boe.consts.h

Current status:
- Scenario editor: compiles and runs, but can't load a scenario
- Character editor: don't know
- Game: Doesn't even compile
I wouldn't normally submit code that doesn't compile, but I have already made a lot of major changes in this revision.
I will submit a version that compiles as soon as possible.

git-svn-id: http://openexile.googlecode.com/svn/trunk@28 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
2009-04-23 20:53:49 +00:00
parent a2c2a85a8e
commit fad42597a6
82 changed files with 5978 additions and 4757 deletions

View File

@@ -1,3 +1,8 @@
//#include <vector>
//#include <string>
//#include "scen.consts.h"
#include "scenario.h"
#define SLEEP_TICKS 2L
#define MOUSE_REGION 0L
#define DRAG_EDGE 15
@@ -31,248 +36,138 @@
#define CDST cd_set_text_edit_str
#define CDSN cd_set_text_edit_num
typedef struct {
char x,y;
} location;
//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 {
// 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];
// cSpecial 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 {
// 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];
// cSpecial 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 {
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;
Boolean 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];
cItemRec 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 {
location horse_loc,horse_loc_in_sec,horse_sector;
short which_town;
Boolean exists,property;
} horse_record_type;
typedef struct {
location boat_loc,boat_loc_in_sec,boat_sector;
short which_town;
Boolean 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;
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;
@@ -285,10 +180,10 @@ typedef struct {
short active,attitude;
unsigned char number;
location m_loc;
monster_record_type m_d;
cMonster m_d;
short mobile;
short summoned;
creature_start_type monst_start;
cTown::cCreature monst_start;
} creature_data_type;
typedef struct {
@@ -300,7 +195,7 @@ typedef struct {
typedef struct {
Boolean exists;
short direction;
out_wandering_type what_monst;
cOutdoors::cWandering what_monst;
location which_sector,m_loc;
} outdoor_creature_type;
@@ -310,12 +205,12 @@ typedef struct {
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];
cVehicle boats[30];
cVehicle 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];
cItemRec magic_store_items[5][10];
short imprisoned_monst[4];
char m_seen[256];
char journal_str[50];
@@ -324,7 +219,7 @@ typedef struct {
talk_save_type talk_save[120];
short direction,at_which_save_slot;
char alchemy[20];
Boolean can_find_town[200];
bool can_find_town[200];
short key_times[100];
short party_event_timers[30];
short global_or_town[30];