void verify_and_get_global_variable(const vconfig &pcfg) { bool valid = true; if (!pcfg.has_attribute("from_global")) { LOG_PERSIST << "Error: [get_global_variable] missing required attribute \"from_global\""; valid = false; } if (!pcfg.has_attribute("to_local")) { LOG_PERSIST << "Error: [get_global_variable] missing required attribute \"to_local\""; valid = false; } // TODO: allow for global namespace. if (!pcfg.has_attribute("namespace")) { LOG_PERSIST << "Error: [get_global_variable] missing attribute \"namespace\" and no global namespace provided."; valid = false; } if (network::nconnections() != 0) { if (!pcfg.has_attribute("side")) { LOG_PERSIST << "Error: [get_global_variable] missing attribute \"side\" required in multiplayer context."; valid = false; } else { config::attribute_value pcfg_side = pcfg["side"]; int side = pcfg_side.str() == "global" ? resources::controller->current_side() : pcfg_side.to_int(); if (unsigned (side - 1) >= resources::teams->size()) { LOG_PERSIST << "Error: [get_global_variable] attribute \"side\" specifies invalid side number."; valid = false; } else { if ((side != resources::controller->current_side()) && !((*resources::teams)[side - 1].is_local())) { if ((*resources::teams)[resources::controller->current_side() - 1].is_local()) { config data; data.add_child("wait_global"); data.child("wait_global")["side"] = side; network::send_data(data,0); } while (get_replay_source().at_end()) { ai::manager::raise_user_interact(); ai::manager::raise_sync_network(); SDL_Delay(10); } } } } } if (valid) { persist_context &ctx = resources::persist->get_context((pcfg["namespace"])); if (ctx.valid()) { get_global_variable(ctx,pcfg); } else { LOG_PERSIST << "Error: [get_global_variable] attribute \"namespace\" is not valid."; } } }
void verify_and_get_global_variable(const vconfig &pcfg) { bool valid = true; if (!pcfg.has_attribute("from_global")) { LOG_PERSIST << "Error: [get_global_variable] missing required attribute \"from_global\""; valid = false; } if (!pcfg.has_attribute("to_local")) { LOG_PERSIST << "Error: [get_global_variable] missing required attribute \"to_local\""; valid = false; } // TODO: allow for global namespace. if (!pcfg.has_attribute("namespace")) { LOG_PERSIST << "Error: [get_global_variable] missing attribute \"namespace\" and no global namespace provided."; valid = false; } if (network::nconnections() != 0) { if (!pcfg.has_attribute("side")) { LOG_PERSIST << "Error: [get_global_variable] missing attribute \"side\" required in multiplayer context."; valid = false; } else { DBG_PERSIST << "verify_and_get_global_variable with from_global=" << pcfg["from_global"] << " from side " << pcfg["side"] << "\n"; config::attribute_value pcfg_side = pcfg["side"]; int side = pcfg_side.str() == "global" ? resources::controller->current_side() : pcfg_side.to_int(); if (unsigned (side - 1) >= resources::teams->size()) { LOG_PERSIST << "Error: [get_global_variable] attribute \"side\" specifies invalid side number." << "\n"; valid = false; } else { } DBG_PERSIST << "end verify_and_get_global_variable with from_global=" << pcfg["from_global"] << " from side " << pcfg["side"] << "\n"; } } if (valid) { persist_context &ctx = resources::persist->get_context((pcfg["namespace"])); if (ctx.valid()) { get_global_variable(ctx,pcfg); } else { LOG_PERSIST << "Error: [get_global_variable] attribute \"namespace\" is not valid."; } } }
void verify_and_get_global_variable(const vconfig &pcfg) { bool valid = true; if (!pcfg.has_attribute("from_global")) { ERR_PERSIST << "[get_global_variable] missing required attribute \"from_global\""; valid = false; } if (!pcfg.has_attribute("to_local")) { ERR_PERSIST << "[get_global_variable] missing required attribute \"to_local\""; valid = false; } // TODO: allow for global namespace. if (!pcfg.has_attribute("namespace")) { ERR_PERSIST << "[get_global_variable] missing attribute \"namespace\""; valid = false; } if (resources::controller->is_networked_mp()) { DBG_PERSIST << "verify_and_get_global_variable with from_global=" << pcfg["from_global"] << " from side " << pcfg["side"] << "\n"; config::attribute_value pcfg_side = pcfg["side"]; int side = (pcfg_side.str() == "global" || pcfg_side.empty()) ? resources::controller->current_side() : pcfg_side.to_int(); if (unsigned (side - 1) >= resources::gameboard->teams().size()) { ERR_PERSIST << "[get_global_variable] attribute \"side\" specifies invalid side number." << "\n"; valid = false; } DBG_PERSIST << "end verify_and_get_global_variable with from_global=" << pcfg["from_global"] << " from side " << pcfg["side"] << "\n"; } if (valid) { persist_context &ctx = resources::persist->get_context((pcfg["namespace"])); if (ctx.valid()) { get_global_variable(ctx,pcfg); } else { LOG_PERSIST << "Error: [get_global_variable] attribute \"namespace\" is not valid."; } } }