Put the new side setup dialog from Shadowmaster in full use.

This commit is contained in:
fendrin 2013-12-20 02:23:24 +01:00
parent b4ceb5f272
commit 0b7aeb2272
5 changed files with 53 additions and 19 deletions

View file

@ -192,6 +192,7 @@ void context_manager::edit_side_dialog(int side)
//t.support()
team::CONTROLLER controller = t.controller();
int controller_num = 0;
std::string id = t.save_id();
std::string name = t.name();
@ -201,21 +202,24 @@ void context_manager::edit_side_dialog(int side)
int village_gold = t.village_gold();
int village_support = t.village_support();
bool no_leader = t.no_leader();
bool hidden = t.hidden();
bool share_view = t.share_view();
bool share_maps = t.share_maps();
bool fog = t.uses_fog();
bool shroud = t.uses_shroud();
bool ok = gui2::teditor_edit_side::execute(id, name,
gold, income,
fog, share_view, shroud, share_maps, controller,
bool ok = gui2::teditor_edit_side::execute(side +1, id, name,
gold, income, village_gold, village_support,
fog, share_view, shroud, share_maps,
controller, controller_num,
no_leader, hidden,
gui_.video());
if (ok) {
get_map_context().set_side_setup(side, id, name,
gold, income, village_gold, village_support,
fog, share_view, shroud, share_maps, controller, hidden);
fog, share_view, shroud, share_maps, controller, hidden, no_leader);
}
}

View file

@ -167,12 +167,13 @@ map_context::map_context(const config& game_config, const std::string& filename,
void map_context::set_side_setup(int side, const std::string& id, const std::string& name,
int gold, int income, int village_gold, int village_support,
bool fog, bool share_view, bool shroud, bool share_maps,
team::CONTROLLER controller, bool hidden)
team::CONTROLLER controller, bool hidden, bool no_leader)
{
assert(teams_.size() > static_cast<u_int>(side));
team& t = teams_[side];
t.set_save_id(id);
t.set_name(name);
t.have_leader(!no_leader);
t.change_controller(controller);
t.set_gold(gold);
t.set_base_income(income);
@ -396,9 +397,10 @@ config map_context::to_config()
side["hidden"] = t->hidden();
side["controller"] = t->controller_string();
// TODO make this customizable via gui
side["no_leader"] = "yes";
side["allow_player"] = "yes";
side["no_leader"] = t->no_leader();
// TODO
// side["allow_player"] = "yes";
side["fog"] = t->uses_fog();
side["share_view"] = t->share_view();

View file

@ -182,7 +182,7 @@ public:
void set_side_setup(int side, const std::string& id, const std::string& name,
int gold, int income, int village_gold, int village_support,
bool fog, bool share_view, bool shroud, bool share_maps,
team::CONTROLLER controller, bool hidden);
team::CONTROLLER controller, bool hidden, bool no_leader);
/**
* Getter for the labels reset flag. Set when the labels need to be refreshed.

View file

@ -49,28 +49,46 @@ namespace gui2 {
REGISTER_DIALOG(editor_edit_side)
teditor_edit_side::teditor_edit_side(std::string& id, std::string& name, int& gold, int& income,
bool& fog, bool& share_view, bool& shroud, bool& share_maps, team::CONTROLLER& controller) :
teditor_edit_side::teditor_edit_side(int side, std::string& id, std::string& name,
int& gold, int& income, int& village_income, int& village_support,
bool& fog, bool& share_view, bool& shroud, bool& share_maps,
team::CONTROLLER& controller, int controller_num,
bool& no_leader, bool& hidden) :
controller_(controller)
{
std::stringstream side_stream;
side_stream << side;
register_label("side_number", true, side_stream.str(), true);
register_text("id", true, id, true);
register_text("name", true, name, true);
register_integer("gold", true, gold);
register_integer("income", true, income);
register_integer("village_income", true, village_income);
register_integer("village_support", true, village_support);
register_integer("controller_number_player", true, controller_num);
register_bool("fog", true, fog);
register_bool("share_view", true, share_view);
register_bool("shroud", true, shroud);
register_bool("share_maps", true, share_maps);
register_bool("no_leader", true, no_leader);
register_bool("hidden", true, hidden);
}
void teditor_edit_side::pre_show(CVideo& /*video*/, twindow& window)
{
register_controller_toggle(window, "by_human", team::HUMAN);
register_controller_toggle(window, "by_ai", team::AI);
register_controller_toggle(window, "by_null", team::EMPTY);
register_controller_toggle(window, "human", team::HUMAN);
register_controller_toggle(window, "human_ai", team::HUMAN_AI);
register_controller_toggle(window, "ai", team::AI);
register_controller_toggle(window, "null", team::EMPTY);
register_controller_toggle(window, "number", team::CONTROLLER(-1));
}
void teditor_edit_side::register_controller_toggle(twindow& window, const std::string& toggle_id, team::CONTROLLER value)

View file

@ -27,15 +27,25 @@ class teditor_edit_side : public tdialog
{
public:
teditor_edit_side(std::string& id, std::string& name, int& gold, int& income,
bool& fog, bool& share_view, bool& shroud, bool& share_maps, team::CONTROLLER& controller);
teditor_edit_side(int side, std::string& id, std::string& name,
int& gold, int& income, int& village_income, int& village_support,
bool& fog, bool& share_view, bool& shroud, bool& share_maps,
team::CONTROLLER& controller, int controller_num,
bool& no_leader, bool& hidden);
/** The execute function see @ref tdialog for more information. */
static bool execute(std::string& id, std::string& name, int& gold, int& income,
bool& fog, bool& share_view, bool& shroud, bool& share_maps, team::CONTROLLER& controller,
static bool execute(int side, std::string& id, std::string& name,
int& gold, int& income, int& village_income, int& village_support,
bool& fog, bool& share_view, bool& shroud, bool& share_maps,
team::CONTROLLER& controller, int controller_num,
bool& no_leader, bool& hidden,
CVideo& video)
{
return teditor_edit_side(id, name, gold, income, fog, share_view, shroud, share_maps, controller).show(video);
return teditor_edit_side(side, id, name,
gold, income, village_income, village_support,
fog, share_view, shroud, share_maps,
controller, controller_num,
no_leader, hidden).show(video);
}
private: