Editor: move editor side info into a struct to avoid huge parameter lists
This commit is contained in:
parent
357cbfe35a
commit
6c63762385
5 changed files with 75 additions and 115 deletions
|
@ -214,33 +214,14 @@ void context_manager::edit_side_dialog(int side)
|
|||
//TODO
|
||||
//t.support()
|
||||
|
||||
team::CONTROLLER controller = t.controller();
|
||||
// TODO: @celticminstrel: the side parameter passed here is then used to access
|
||||
// the team by index in set_side_setup. In teditor_edit_side, it's displayed as
|
||||
// a side number, as as such is shown +1. Just a note for the team index refactor
|
||||
// branch.
|
||||
editor_team_info team_info(t, side);
|
||||
|
||||
std::string user_team_name = t.user_team_name();
|
||||
std::string team_name = t.team_name();
|
||||
|
||||
int gold = t.gold();
|
||||
int income = t.base_income();
|
||||
int village_gold = t.village_gold();
|
||||
int village_support = t.village_support();
|
||||
|
||||
bool no_leader = t.no_leader();
|
||||
bool hidden = t.hidden();
|
||||
bool fog = t.uses_fog();
|
||||
bool shroud = t.uses_shroud();
|
||||
|
||||
team::SHARE_VISION share_vision = t.share_vision();
|
||||
|
||||
bool ok = gui2::teditor_edit_side::execute(side +1, team_name, user_team_name,
|
||||
gold, income, village_gold, village_support,
|
||||
fog, shroud, share_vision,
|
||||
controller, no_leader, hidden,
|
||||
gui_.video());
|
||||
|
||||
if (ok) {
|
||||
get_map_context().set_side_setup(side, team_name, user_team_name,
|
||||
gold, income, village_gold, village_support,
|
||||
fog, shroud, share_vision, controller, hidden, no_leader);
|
||||
if(gui2::teditor_edit_side::execute(team_info, gui_.video())) {
|
||||
get_map_context().set_side_setup(team_info);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,23 @@
|
|||
|
||||
namespace editor {
|
||||
|
||||
editor_team_info::editor_team_info(const team& t, const int side)
|
||||
: side(side)
|
||||
, id(t.team_name())
|
||||
, name(t.user_team_name())
|
||||
, gold(t.gold())
|
||||
, income(t.base_income())
|
||||
, village_income(t.village_gold())
|
||||
, village_support(t.village_support())
|
||||
, fog(t.uses_fog())
|
||||
, shroud(t.uses_shroud())
|
||||
, share_vision(t.share_vision())
|
||||
, controller(t.controller())
|
||||
, no_leader(t.no_leader())
|
||||
, hidden(t.hidden())
|
||||
{
|
||||
}
|
||||
|
||||
const size_t map_context::max_action_stack_size_ = 100;
|
||||
|
||||
map_context::map_context(const editor_map& map, const display& disp, bool pure_map, const config& schedule)
|
||||
|
@ -200,26 +217,23 @@ map_context::map_context(const config& game_config, const std::string& filename,
|
|||
add_to_recent_files();
|
||||
}
|
||||
|
||||
void map_context::set_side_setup(int side, const std::string& team_name, const std::string& user_team_name,
|
||||
int gold, int income, int village_gold, int village_support,
|
||||
bool fog, bool shroud, team::SHARE_VISION share_vision,
|
||||
team::CONTROLLER controller, bool hidden, bool no_leader)
|
||||
void map_context::set_side_setup(editor_team_info& info)
|
||||
{
|
||||
assert(teams_.size() > static_cast<unsigned int>(side));
|
||||
team& t = teams_[side];
|
||||
assert(teams_.size() > static_cast<unsigned int>(info.side));
|
||||
team& t = teams_[info.side];
|
||||
// t.set_save_id(id);
|
||||
// t.set_name(name);
|
||||
t.change_team(team_name, user_team_name);
|
||||
t.have_leader(!no_leader);
|
||||
t.change_controller(controller);
|
||||
t.set_gold(gold);
|
||||
t.set_base_income(income);
|
||||
t.set_hidden(hidden);
|
||||
t.set_fog(fog);
|
||||
t.set_shroud(shroud);
|
||||
t.set_share_vision(share_vision);
|
||||
t.set_village_gold(village_gold);
|
||||
t.set_village_support(village_support);
|
||||
t.change_team(info.id, info.name);
|
||||
t.have_leader(!info.no_leader);
|
||||
t.change_controller(info.controller);
|
||||
t.set_gold(info.gold);
|
||||
t.set_base_income(info.income);
|
||||
t.set_hidden(info.hidden);
|
||||
t.set_fog(info.fog);
|
||||
t.set_shroud(info.shroud);
|
||||
t.set_share_vision(info.share_vision);
|
||||
t.set_village_gold(info.village_income);
|
||||
t.set_village_support(info.village_support);
|
||||
actions_since_save_++;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,24 @@
|
|||
|
||||
namespace editor {
|
||||
|
||||
struct editor_team_info {
|
||||
editor_team_info(const team& t, const int side);
|
||||
|
||||
int side;
|
||||
std::string id;
|
||||
std::string name;
|
||||
int gold;
|
||||
int income;
|
||||
int village_income;
|
||||
int village_support;
|
||||
bool fog;
|
||||
bool shroud;
|
||||
team::SHARE_VISION share_vision;
|
||||
team::CONTROLLER controller;
|
||||
bool no_leader;
|
||||
bool hidden;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class wraps around a map to provide a concise interface for the editor to work with.
|
||||
* The actual map object can change rapidly (be assigned to), the map context persists
|
||||
|
@ -242,10 +260,7 @@ public:
|
|||
/**
|
||||
* TODO
|
||||
*/
|
||||
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 shroud, team::SHARE_VISION share_vision,
|
||||
team::CONTROLLER controller, bool hidden, bool no_leader);
|
||||
void set_side_setup(editor_team_info& info);
|
||||
|
||||
/**
|
||||
* Getter for the labels reset flag. Set when the labels need to be refreshed.
|
||||
|
|
|
@ -50,40 +50,26 @@ namespace gui2
|
|||
|
||||
REGISTER_DIALOG(editor_edit_side)
|
||||
|
||||
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& shroud,
|
||||
team::SHARE_VISION& share_vision,
|
||||
team::CONTROLLER& controller,
|
||||
bool& no_leader,
|
||||
bool& hidden)
|
||||
: controller_(controller)
|
||||
, share_vision_(share_vision)
|
||||
teditor_edit_side::teditor_edit_side(editor::editor_team_info& info)
|
||||
: controller_(info.controller)
|
||||
, share_vision_(info.share_vision)
|
||||
{
|
||||
std::stringstream side_stream;
|
||||
side_stream << side;
|
||||
register_label("side_number", true, side_stream.str(), true);
|
||||
register_label("side_number", true, std::to_string(info.side + 1), true);
|
||||
|
||||
register_text("team_name", true, id, true);
|
||||
register_text("user_team_name", true, name, true);
|
||||
register_text("team_name", true, info.id, true);
|
||||
register_text("user_team_name", true, info.name, true);
|
||||
|
||||
register_integer("gold", true, gold);
|
||||
register_integer("income", true, income);
|
||||
register_integer("gold", true, info.gold);
|
||||
register_integer("income", true, info.income);
|
||||
|
||||
register_integer("village_income", true, village_income);
|
||||
register_integer("village_support", true, village_support);
|
||||
register_integer("village_income", true, info.village_income);
|
||||
register_integer("village_support", true, info.village_support);
|
||||
|
||||
register_bool("fog", true, fog);
|
||||
register_bool("shroud", true, shroud);
|
||||
register_bool("fog", true, info.fog);
|
||||
register_bool("shroud", true, info.shroud);
|
||||
|
||||
register_bool("no_leader", true, no_leader);
|
||||
register_bool("hidden", true, hidden);
|
||||
register_bool("no_leader", true, info.no_leader);
|
||||
register_bool("hidden", true, info.hidden);
|
||||
}
|
||||
|
||||
void teditor_edit_side::pre_show(twindow& window)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#ifndef GUI_DIALOGS_EDITOR_EDIT_SIDE_HPP_INCLUDED
|
||||
#define GUI_DIALOGS_EDITOR_EDIT_SIDE_HPP_INCLUDED
|
||||
|
||||
#include "editor/map/map_context.hpp"
|
||||
#include "gui/dialogs/dialog.hpp"
|
||||
#include "gui/widgets/group.hpp"
|
||||
#include "team.hpp"
|
||||
|
@ -27,49 +28,12 @@ class ttoggle_button;
|
|||
class teditor_edit_side : public tdialog
|
||||
{
|
||||
public:
|
||||
teditor_edit_side(int side,
|
||||
std::string& team_name,
|
||||
std::string& user_team_name,
|
||||
int& gold,
|
||||
int& income,
|
||||
int& village_income,
|
||||
int& village_support,
|
||||
bool& fog,
|
||||
bool& shroud,
|
||||
team::SHARE_VISION& share_vision,
|
||||
team::CONTROLLER& controller,
|
||||
bool& no_leader,
|
||||
bool& hidden);
|
||||
explicit teditor_edit_side(editor::editor_team_info& info);
|
||||
|
||||
/** The execute function see @ref tdialog for more information. */
|
||||
static bool execute(int side,
|
||||
std::string& team_name,
|
||||
std::string& user_team_name,
|
||||
int& gold,
|
||||
int& income,
|
||||
int& village_income,
|
||||
int& village_support,
|
||||
bool& fog,
|
||||
bool& shroud,
|
||||
team::SHARE_VISION& share_vision,
|
||||
team::CONTROLLER& controller,
|
||||
bool& no_leader,
|
||||
bool& hidden,
|
||||
CVideo& video)
|
||||
static bool execute(editor::editor_team_info& info, CVideo& video)
|
||||
{
|
||||
return teditor_edit_side(side,
|
||||
team_name,
|
||||
user_team_name,
|
||||
gold,
|
||||
income,
|
||||
village_income,
|
||||
village_support,
|
||||
fog,
|
||||
shroud,
|
||||
share_vision,
|
||||
controller,
|
||||
no_leader,
|
||||
hidden).show(video);
|
||||
return teditor_edit_side(info).show(video);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Reference in a new issue