fixed placement of sides in their preferred locations to work;
fixed memory leaks in random side code
This commit is contained in:
parent
6218bfd499
commit
ef359fbe39
4 changed files with 38 additions and 34 deletions
|
@ -305,6 +305,11 @@ ggggggggggggggggggggffffffffffffffffff
|
|||
name=Default
|
||||
id=era_default
|
||||
|
||||
[multiplayer_side]
|
||||
name=&random-enemy.png,Random
|
||||
type=random
|
||||
[/multiplayer_side]
|
||||
|
||||
[multiplayer_side]
|
||||
name=&human-general.png,Loyalists
|
||||
type=General
|
||||
|
@ -355,6 +360,11 @@ id=era_default
|
|||
name=Classic
|
||||
id=era_classic
|
||||
|
||||
[multiplayer_side]
|
||||
name=&random-enemy.png,Random
|
||||
type=random
|
||||
[/multiplayer_side]
|
||||
|
||||
[multiplayer_side]
|
||||
name=&human-general.png,Humans
|
||||
type=General
|
||||
|
@ -405,6 +415,11 @@ id=era_classic
|
|||
name=Age of Heroes
|
||||
id=era_heroes
|
||||
|
||||
[multiplayer_side]
|
||||
name=&random-enemy.png,Random
|
||||
type=random
|
||||
[/multiplayer_side]
|
||||
|
||||
[multiplayer_side]
|
||||
name=&human-general.png,Loyalists
|
||||
type=General
|
||||
|
|
|
@ -389,11 +389,7 @@ void play_multiplayer_client(display& disp, game_data& units_data, config& cfg,
|
|||
return;
|
||||
}
|
||||
|
||||
config::child_list possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
config* random = new config();
|
||||
(*random)["name"]="&random-enemy.png,Random";
|
||||
possible_sides.insert(possible_sides.begin(),random);
|
||||
const config::child_list& possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
if(possible_sides.empty()) {
|
||||
std::cerr << "no multiplayer sides found\n";
|
||||
|
|
|
@ -180,10 +180,7 @@ int mp_connect::load_map(const std::string& era, int map, int num_turns, int vil
|
|||
return -1;
|
||||
}
|
||||
|
||||
config::child_list possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
config* random = new config();
|
||||
(*random)["name"]="&random-enemy.png,Random";
|
||||
possible_sides.insert(possible_sides.begin(),random);
|
||||
const config::child_list& possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
if(sides.first == sides.second || possible_sides.empty()) {
|
||||
gui::show_dialog(*disp_, NULL, "",
|
||||
|
@ -233,6 +230,9 @@ int mp_connect::load_map(const std::string& era, int map, int num_turns, int vil
|
|||
if(side["music"].empty())
|
||||
side["music"] = (*possible_sides.front())["music"];
|
||||
|
||||
if(side["terrain_liked"].empty())
|
||||
side["terrain_liked"] = (*possible_sides.front())["terrain_liked"];
|
||||
|
||||
if(side["recruitment_pattern"].empty())
|
||||
side["recruitment_pattern"] = possible_sides.front()->values["recruitment_pattern"];
|
||||
}
|
||||
|
@ -271,10 +271,7 @@ void mp_connect::lists_init()
|
|||
return;
|
||||
}
|
||||
|
||||
config::child_list possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
config* random = new config();
|
||||
(*random)["name"]="&random-enemy.png,Random";
|
||||
possible_sides.insert(possible_sides.begin(),random);
|
||||
const config::child_list& possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
for(std::vector<config*>::const_iterator race = possible_sides.begin();
|
||||
race != possible_sides.end(); ++race) {
|
||||
|
@ -534,12 +531,7 @@ lobby::RESULT mp_connect::process()
|
|||
return lobby::QUIT;
|
||||
}
|
||||
|
||||
config::child_list possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
|
||||
config* random = new config();
|
||||
(*random)["name"]="&random-enemy.png,Random";
|
||||
possible_sides.insert(possible_sides.begin(),random);
|
||||
const config::child_list& possible_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
const config::child_itors sides = level_->child_range("side");
|
||||
|
||||
|
@ -547,6 +539,8 @@ lobby::RESULT mp_connect::process()
|
|||
const int mouse_flags = SDL_GetMouseState(&mousex,&mousey);
|
||||
const bool left_button = mouse_flags&SDL_BUTTON_LMASK;
|
||||
|
||||
bool start_game = false;
|
||||
|
||||
bool level_changed = false;
|
||||
|
||||
for(size_t n = 0; n != combos_team_.size(); ++n) {
|
||||
|
@ -665,30 +659,24 @@ lobby::RESULT mp_connect::process()
|
|||
const config::child_list& real_sides = era_cfg->get_children("multiplayer_side");
|
||||
|
||||
for(config::child_iterator side = sides.first; side != sides.second; ++side) {
|
||||
if((**side)["name"]=="&random-enemy.png,Random") {
|
||||
int choice = rand()%real_sides.size();
|
||||
int ntry = 0;
|
||||
while((**side)["type"] == "random" && ntry < 1000) {
|
||||
const int choice = rand()%real_sides.size();
|
||||
|
||||
(**side)["name"] = (*real_sides[choice])["name"];
|
||||
|
||||
(**side)["type"] = (*real_sides[choice])["type"];
|
||||
|
||||
(**side)["recruit"] = (*real_sides[choice])["recruit"];
|
||||
|
||||
(**side)["music"] = (*real_sides[choice])["music"];
|
||||
|
||||
(**side)["recruitment_pattern"] = real_sides[choice]->values["recruitment_pattern"];
|
||||
(**side)["terrain_liked"] = (*real_sides[choice])["terrain_liked"];
|
||||
level_changed = true;
|
||||
|
||||
++ntry;
|
||||
}
|
||||
}
|
||||
if(level_changed) {
|
||||
config diff;
|
||||
diff.add_child("scenario_diff",level_->get_diff(old_level_));
|
||||
|
||||
network::send_data(diff);
|
||||
|
||||
old_level_ = *level_;
|
||||
}
|
||||
|
||||
return lobby::CREATE;
|
||||
start_game = true;
|
||||
}
|
||||
|
||||
if(level_changed) {
|
||||
|
@ -700,6 +688,10 @@ lobby::RESULT mp_connect::process()
|
|||
old_level_ = *level_;
|
||||
}
|
||||
|
||||
if(start_game) {
|
||||
return lobby::CREATE;
|
||||
}
|
||||
|
||||
gui_update();
|
||||
update_positions();
|
||||
update_network();
|
||||
|
@ -866,6 +858,7 @@ void mp_connect::update_network()
|
|||
pos->first->values["type"] = cfg["type"];
|
||||
pos->first->values["recruit"] = cfg["recruit"];
|
||||
pos->first->values["music"] = cfg["music"];
|
||||
pos->first->values["terrain_liked"] = cfg["terrain_liked"];
|
||||
pos->second = sock;
|
||||
network::send_data(*level_);
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ namespace {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}z
|
||||
|
||||
return (100*liked)/positions;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue