seg fault fixed (?)
This commit is contained in:
parent
4f82b1cf19
commit
aca3971e4e
5 changed files with 22 additions and 20 deletions
|
@ -713,16 +713,17 @@ void check_victory(std::map<gamemap::location,unit>& units,
|
|||
bool found_human = false;
|
||||
|
||||
for(size_t n = 0; n != seen_leaders.size(); ++n) {
|
||||
const size_t side1 = seen_leaders[n]-1;
|
||||
const size_t side = seen_leaders[n]-1;
|
||||
|
||||
assert(side < teams.size());
|
||||
|
||||
for(size_t m = n+1; m != seen_leaders.size(); ++m) {
|
||||
const size_t side2 = seen_leaders[m];
|
||||
if(side1 < teams.size() && teams[side1].is_enemy(side2)) {
|
||||
if(side < teams.size() && teams[side].is_enemy(seen_leaders[m])) {
|
||||
found_enemies = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(side1 < teams.size() && teams[side1].is_human()) {
|
||||
if(side < teams.size() && teams[side].is_human()) {
|
||||
found_human = true;
|
||||
}
|
||||
}
|
||||
|
@ -732,12 +733,14 @@ void check_victory(std::map<gamemap::location,unit>& units,
|
|||
}
|
||||
|
||||
//remove any units which are leaderless
|
||||
for(std::map<gamemap::location,unit>::iterator j = units.begin();
|
||||
j != units.end(); ++j) {
|
||||
std::map<gamemap::location,unit>::iterator j = units.begin();
|
||||
while(j != units.end()) {
|
||||
if(std::find(seen_leaders.begin(),seen_leaders.end(),j->second.side())
|
||||
== seen_leaders.end()) {
|
||||
units.erase(j);
|
||||
j = units.begin();
|
||||
} else {
|
||||
++j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -555,21 +555,16 @@ void display::draw_game_status(int x, int y)
|
|||
std::stringstream details;
|
||||
|
||||
if(team_valid()) {
|
||||
const int nunits = team_units(units_,currentTeam_+1);
|
||||
const int upkeep = team_upkeep(units_,currentTeam_+1);
|
||||
|
||||
const int expenses = upkeep - teams_[currentTeam_].towers().size();
|
||||
const int income = teams_[currentTeam_].income() - maximum<int>(expenses,0);
|
||||
const team_data data = calculate_team_data(teams_[currentTeam_],
|
||||
currentTeam_+1,units_);
|
||||
|
||||
details << char(activeTeam_+1) << string_table["turn"] << ": "
|
||||
<< status_.turn() << "/" << status_.number_of_turns() << "\n"
|
||||
<< string_table["gold"] << ": "
|
||||
<< teams_[currentTeam_].gold() << "\n"
|
||||
<< string_table["villages"] << ": "
|
||||
<< teams_[currentTeam_].towers().size() << "\n"
|
||||
<< string_table["units"] << ": " << nunits << "\n"
|
||||
<< string_table["upkeep"] << ": " << upkeep << "\n"
|
||||
<< string_table["income"] << ": " << income << "\n";
|
||||
<< string_table["gold"] << ": " << data.gold << "\n"
|
||||
<< string_table["villages"] << ": " << data.villages << "\n"
|
||||
<< string_table["units"] << ": " << data.units << "\n"
|
||||
<< string_table["upkeep"] << ": " << data.upkeep << "\n"
|
||||
<< string_table["income"] << ": " << data.net_income << "\n";
|
||||
}
|
||||
|
||||
if(map_.on_board(mouseoverHex_)) {
|
||||
|
|
|
@ -248,6 +248,10 @@ void play_multiplayer(display& disp, game_data& units_data, config cfg,
|
|||
//ensure we send a close game message to the server when we are done
|
||||
network_game_manager game_manager;
|
||||
|
||||
//make sure the amount of gold we have for the game is 100
|
||||
//later allow configuration of amount of gold
|
||||
state.gold = 100;
|
||||
|
||||
std::vector<std::string> options;
|
||||
std::vector<config*>& levels = cfg.children["multiplayer"];
|
||||
std::map<int,std::string> res_to_id;
|
||||
|
|
|
@ -226,6 +226,7 @@ LEVEL_RESULT play_level(game_data& gameinfo, config& terrain_config,
|
|||
config cfg;
|
||||
|
||||
turn_info turn_data;
|
||||
const paths_wiper wiper(gui);
|
||||
|
||||
for(;;) {
|
||||
network::connection res =
|
||||
|
@ -297,7 +298,6 @@ LEVEL_RESULT play_level(game_data& gameinfo, config& terrain_config,
|
|||
game_events::fire(event_stream.str());
|
||||
}
|
||||
|
||||
std::map<int,int> expenditure;
|
||||
for(unit_map::iterator i = units.begin();
|
||||
i != units.end(); ++i) {
|
||||
i->second.new_turn();
|
||||
|
|
|
@ -725,7 +725,7 @@ team_data calculate_team_data(const team& tm, int side, const unit_map& units)
|
|||
res.upkeep = team_upkeep(units,side);
|
||||
res.villages = tm.towers().size();
|
||||
res.expenses = maximum<int>(0,res.upkeep - res.villages);
|
||||
res.net_income = res.villages - res.expenses;
|
||||
res.net_income = game_config::base_income + res.villages - res.expenses;
|
||||
res.gold = tm.gold();
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue