mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-02 10:18:00 +00:00
update playturn.cpp
This commit is contained in:
parent
179c9a9786
commit
6bdf2edfee
@ -231,16 +231,14 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
|
|
||||||
else if (const config &side_drop_c = cfg.child("side_drop"))
|
else if (const config &side_drop_c = cfg.child("side_drop"))
|
||||||
{
|
{
|
||||||
const std::string& side_drop = side_drop_c["side_num"].str();
|
const int side_drop = side_drop_c["side_num"].to_int(0);
|
||||||
const std::string controller = side_drop_c["controller"];
|
const std::string controller = side_drop_c["controller"];
|
||||||
//if a side has dropped out of the game.
|
size_t index = side_drop -1;
|
||||||
int side = atoi(side_drop.c_str());
|
|
||||||
size_t index = side -1;
|
|
||||||
|
|
||||||
bool restart = side == resources::screen->playing_side();
|
bool restart = side_drop == resources::screen->playing_side();
|
||||||
|
|
||||||
if (index >= resources::teams->size()) {
|
if (index >= resources::teams->size()) {
|
||||||
ERR_NW << "unknown side " << side << " is dropping game" << std::endl;
|
ERR_NW << "unknown side " << side_drop << " is dropping game" << std::endl;
|
||||||
throw network::error("");
|
throw network::error("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +251,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctrl == team::AI){
|
if (ctrl == team::AI){
|
||||||
resources::gameboard->side_drop_to(side, ctrl);
|
resources::gameboard->side_drop_to(side_drop, ctrl);
|
||||||
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,7 +285,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
//get all allies in as options to transfer control
|
//get all allies in as options to transfer control
|
||||||
BOOST_FOREACH(const team &t, resources::gameboard->teams())
|
BOOST_FOREACH(const team &t, resources::gameboard->teams())
|
||||||
{
|
{
|
||||||
if (!t.is_enemy(side) && !t.is_human() && !t.is_ai() && !t.is_network_ai() && !t.is_empty()
|
if (!t.is_enemy(side_drop) && !t.is_human() && !t.is_ai() && !t.is_network_ai() && !t.is_empty()
|
||||||
&& t.current_player() != tm.current_player())
|
&& t.current_player() != tm.current_player())
|
||||||
{
|
{
|
||||||
//if this is an ally of the dropping side and it is not us (choose local player
|
//if this is an ally of the dropping side and it is not us (choose local player
|
||||||
@ -313,7 +311,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
switch(action) {
|
switch(action) {
|
||||||
case 0:
|
case 0:
|
||||||
resources::controller->on_not_observer();
|
resources::controller->on_not_observer();
|
||||||
resources::gameboard->side_drop_to(side, team::AI);
|
resources::gameboard->side_drop_to(side_drop, team::AI);
|
||||||
change_controller(side_drop, team::CONTROLLER_to_string(team::AI));
|
change_controller(side_drop, team::CONTROLLER_to_string(team::AI));
|
||||||
|
|
||||||
resources::controller->maybe_do_init_side();
|
resources::controller->maybe_do_init_side();
|
||||||
@ -322,14 +320,14 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
resources::controller->on_not_observer();
|
resources::controller->on_not_observer();
|
||||||
resources::gameboard->side_drop_to(side, team::HUMAN);
|
resources::gameboard->side_drop_to(side_drop, team::HUMAN);
|
||||||
change_controller(side_drop, team::CONTROLLER_to_string(team::HUMAN));
|
change_controller(side_drop, team::CONTROLLER_to_string(team::HUMAN));
|
||||||
|
|
||||||
resources::controller->maybe_do_init_side();
|
resources::controller->maybe_do_init_side();
|
||||||
|
|
||||||
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
||||||
case 2:
|
case 2:
|
||||||
resources::gameboard->side_drop_to(side, team::IDLE);
|
resources::gameboard->side_drop_to(side_drop, team::IDLE);
|
||||||
|
|
||||||
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
return restart?PROCESS_RESTART_TURN:PROCESS_CONTINUE;
|
||||||
|
|
||||||
@ -343,7 +341,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
|
|
||||||
{
|
{
|
||||||
// Server thinks this side is ours now so in case of error transferring side we have to make local state to same as what server thinks it is.
|
// Server thinks this side is ours now so in case of error transferring side we have to make local state to same as what server thinks it is.
|
||||||
resources::gameboard->side_drop_to(side, team::IDLE);
|
resources::gameboard->side_drop_to(side_drop, team::IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t index = static_cast<size_t>(action - first_observer_option_idx);
|
const size_t index = static_cast<size_t>(action - first_observer_option_idx);
|
||||||
@ -353,7 +351,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
size_t i = index - observers.size();
|
size_t i = index - observers.size();
|
||||||
change_side_controller(side_drop, allies[i]->current_player());
|
change_side_controller(side_drop, allies[i]->current_player());
|
||||||
} else {
|
} else {
|
||||||
resources::gameboard->side_drop_to(side, team::AI);
|
resources::gameboard->side_drop_to(side_drop, team::AI);
|
||||||
change_controller(side_drop, team::CONTROLLER_to_string(team::AI));
|
change_controller(side_drop, team::CONTROLLER_to_string(team::AI));
|
||||||
}
|
}
|
||||||
return restart ? PROCESS_RESTART_TURN_TEMPORARY_LOCAL : PROCESS_SIDE_TEMPORARY_LOCAL;
|
return restart ? PROCESS_RESTART_TURN_TEMPORARY_LOCAL : PROCESS_SIDE_TEMPORARY_LOCAL;
|
||||||
@ -391,7 +389,7 @@ turn_info::PROCESS_DATA_RESULT turn_info::process_network_data(const config& cfg
|
|||||||
return PROCESS_CONTINUE;
|
return PROCESS_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void turn_info::change_controller(const std::string& side, const std::string& controller)
|
void turn_info::change_controller(int side, const std::string& controller)
|
||||||
{
|
{
|
||||||
config cfg;
|
config cfg;
|
||||||
config& change = cfg.add_child("change_controller");
|
config& change = cfg.add_child("change_controller");
|
||||||
@ -402,7 +400,7 @@ void turn_info::change_controller(const std::string& side, const std::string& co
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void turn_info::change_side_controller(const std::string& side, const std::string& player)
|
void turn_info::change_side_controller(int side, const std::string& player)
|
||||||
{
|
{
|
||||||
config cfg;
|
config cfg;
|
||||||
config& change = cfg.add_child("change_controller");
|
config& change = cfg.add_child("change_controller");
|
||||||
|
@ -65,8 +65,8 @@ public:
|
|||||||
bool is_host() const { return is_host_; }
|
bool is_host() const { return is_host_; }
|
||||||
void set_host(bool val) { is_host_ = val; }
|
void set_host(bool val) { is_host_ = val; }
|
||||||
private:
|
private:
|
||||||
static void change_controller(const std::string& side, const std::string& controller);
|
static void change_controller(int side, const std::string& controller);
|
||||||
static void change_side_controller(const std::string& side, const std::string& player);
|
static void change_side_controller(int side, const std::string& player);
|
||||||
static PROCESS_DATA_RESULT replay_to_process_data_result(REPLAY_RETURN replayreturn);
|
static PROCESS_DATA_RESULT replay_to_process_data_result(REPLAY_RETURN replayreturn);
|
||||||
PROCESS_DATA_RESULT handle_turn(
|
PROCESS_DATA_RESULT handle_turn(
|
||||||
const config& t,
|
const config& t,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user