- Made add_string_to_buf accept a string rather than a char*, and began to take advantage of this.

- Added an operator[] to cParty; I intend to get rid of the ADVEN macro eventually in favour of accessing PCs with the operator
- Added using cMonster::operator= to cCreature, because this will be needed once I rearrange these two structures.
- Added an operator= to the cPopulation type, so that the "monst.dudes[...]" redundancy can be avoide.
- Added outdoors and towns members to the scenario class for future use (they will old all the outdoor sections and towns, respectively, from the current scenario)

git-svn-id: http://openexile.googlecode.com/svn/trunk@81 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
2009-05-30 03:36:41 +00:00
parent 5c91bc4062
commit d2d88311db
11 changed files with 31 additions and 31 deletions

View File

@@ -215,7 +215,7 @@ enum eTrapType {
TRAP_DART = 2,
TRAP_GAS = 3, // poisons all
TRAP_EXPLOSION = 4, // damages all => uses c_town.difficulty rather than trap_level to calculates damages (and even c_town.difficulty /13).
TRAP_SLEEP_RAY = 5,
TRAP_SLEEP_RAY = 5, // TODO: Rename "Paralysis ray"
TRAP_FALSE_ALARM = 6,
TRAP_DRAIN_XP = 7,
TRAP_ALERT = 8, // makes town hostile

View File

@@ -40,20 +40,6 @@
#define NUM_FACE_G 80
#define NUM_DLOG_G 28
#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 CDGT cd_retrieve_text_edit_str
#define CDGN cd_retrieve_text_edit_num
#define CDST cd_set_text_edit_str

View File

@@ -811,17 +811,17 @@ void print_party_stats() {
char store_string[255];
add_string_to_buf("PARTY STATS:");
sprintf((char *) store_string, " Number of kills: %lld ", univ.party.total_m_killed);
add_string_to_buf((char *) store_string);
add_string_to_buf(store_string);
if ((is_town()) || ((is_combat()) && (which_combat_type == 1))) {
sprintf((char *) store_string, " Kills in this town: %d ", univ.party.m_killed[univ.town.num]);
add_string_to_buf((char *) store_string);
add_string_to_buf(store_string);
}
sprintf((char *) store_string, " Total experience: %lld ", univ.party.total_xp_gained);
add_string_to_buf((char *) store_string);
add_string_to_buf(store_string);
sprintf((char *) store_string, " Total damage done: %lld ", univ.party.total_dam_done);
add_string_to_buf((char *) store_string);
add_string_to_buf(store_string);
sprintf((char *) store_string, " Total damage taken: %lld ", univ.party.total_dam_taken);
add_string_to_buf((char *) store_string);
add_string_to_buf(store_string);
print_buf();
}
@@ -844,7 +844,7 @@ short do_look(location space)
if ((space == pc_pos[i]) && (ADVEN[i].main_status == 1)
&& (is_lit == true) && (can_see(pc_pos[current_pc],space,0) < 5)) {
msg = " " + ADVEN[i].name;
add_string_to_buf((char *) msg.c_str());
add_string_to_buf(msg);
}
if ((overall_mode == MODE_LOOK_TOWN) || (overall_mode == MODE_LOOK_COMBAT)) {
@@ -1284,13 +1284,13 @@ short print_terrain(location space)
}
std::string msg = get_ter_name(which_terrain);
msg = " " + msg;
add_string_to_buf((char *) msg.c_str());
add_string_to_buf(msg);
return (short) which_terrain;
}
void add_string_to_buf(char *string)
void add_string_to_buf(std::string str)
{
if (in_startup_mode == true)
return;
@@ -1301,7 +1301,7 @@ void add_string_to_buf(char *string)
print_buf();
through_sending();
}
sprintf((char *)text_buffer[buf_pointer].line, "%-49.49s", string);
sprintf((char *)text_buffer[buf_pointer].line, "%-49.49s", str.c_str());
// c2pstr((char *)text_buffer[buf_pointer].line);
if (buf_pointer == (TEXT_BUF_LEN - 1))
buf_pointer = 0;

View File

@@ -33,7 +33,7 @@ void monst_damaged_mes(short which_m,short how_much,short how_much_spec);
void monst_killed_mes(short which_m);
void print_nums(short a,short b,short c);
short print_terrain(location space);
void add_string_to_buf(char *string);
void add_string_to_buf(std::string str);
void init_buf();
void print_buf () ;
void restart_printing();

View File

@@ -550,7 +550,7 @@ void start_town_mode(short which_town, short entry_dir)
add_string_to_buf("Now entering:");
sprintf ((char *) message, " %-30.30s ",univ.town->town_strs(0));
add_string_to_buf((char *) message);
add_string_to_buf(message);
// clear entry space, and check exploration

View File

@@ -23,3 +23,7 @@ cPopulation& cPopulation::operator = (legacy::creature_list_type old){
friendly = old.friendly;
return *this;
}
cCreature& cPopulation::operator[](size_t n){
return dudes[n];
}

View File

@@ -32,7 +32,8 @@ public:
short which_town;
short friendly;
cPopulation& operator = (legacy::creature_list_type old);
cPopulation& operator= (legacy::creature_list_type old);
cCreature& operator[](size_t n);
};
#endif

View File

@@ -184,6 +184,7 @@ public:
class cCreature : public cMonster {
public:
using cMonster::operator=;
cMonster m_d; // TODO: Delete this member in favour of the inherited fields
unsigned long id;
m_num_t number; // TODO: This appears to be a duplicate of cMonster::m_num (ie it's used for the same thing)

View File

@@ -10,7 +10,7 @@
#include <vector>
#include <map>
#include <sstream>
#include <stdexcept>
#include "classes.h"
#include "oldstructs.h"
@@ -457,3 +457,8 @@ void cParty::readFrom(std::istream& file){
for(int k = 0; k < 64; k++)
bin >> setup[i][j][k];
}
cPlayer& cParty::operator[](unsigned short n){
if(n >= 6) throw std::out_of_range("Attempt to access a player that doesn't exist.");
return adven[n];
}

View File

@@ -112,14 +112,15 @@ public:
bool add_to_journal(short event, short day);
bool record(short what, short where);
bool start_timer(short time, short node, short type);
cPlayer& operator[](unsigned short n);
void writeTo(std::ostream& file);
void readFrom(std::istream& file);
typedef std::vector<cEncNote>::iterator encIter;
typedef std::vector<cJournal>::iterator journalIter;
typedef std::vector<cConvers>::iterator talkIter;
typedef std::vector<cTimer>::iterator timerIter;
typedef std::map<std::string,std::vector<int> >::iterator campIter;
void writeTo(std::ostream& file);
void readFrom(std::istream& file);
};
#endif

View File

@@ -39,7 +39,7 @@ public:
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 flag_a; // TODO: Remove these flags
short intro_mess_pic,intro_mess_len;
location where_start,out_sec_start,out_start;
short which_town_start;
@@ -88,6 +88,8 @@ public:
char spec_item_strs[50][256];
char spec_strs[100][256];
FSSpec scen_file; // transient
cOutdoors* outdoors;
cTown* towns;
char(& scen_strs(short i))[256];
cScenario& operator = (legacy::scenario_data_type& old);