Skip to content

Commit

Permalink
Merge pull request #1 from freeorion/master
Browse files Browse the repository at this point in the history
update
  • Loading branch information
swaqvalley committed Oct 13, 2019
2 parents f8cbdef + 49f7896 commit 6ae7457
Show file tree
Hide file tree
Showing 18 changed files with 95 additions and 36 deletions.
9 changes: 6 additions & 3 deletions AI/AIInterface.cpp
Expand Up @@ -103,10 +103,13 @@ namespace AIInterface {
return ALL_EMPIRES; // default invalid value
}

std::vector<int> AllEmpireIDs() {
std::vector<int> AllEmpireIDs() {
std::vector<int> empire_ids;
for (auto& entry : AIClientApp::GetApp()->Players())
empire_ids.push_back(entry.second.empire_id);
for (auto& entry : AIClientApp::GetApp()->Players()) {
auto empire_id = entry.second.empire_id;
if (empire_id != ALL_EMPIRES)
empire_ids.push_back(empire_id);
}
return empire_ids;
}

Expand Down
7 changes: 4 additions & 3 deletions UI/FleetWnd.cpp
Expand Up @@ -3742,9 +3742,10 @@ void FleetWnd::FleetRightClicked(GG::ListBox::iterator it, const GG::Pt& pt, con

if (fleet->OrderedGivenToEmpire() != ALL_EMPIRES) {
auto ungift_action = [fleet]() {
for (const auto& id_and_order : HumanClientApp::GetApp()->Orders()) {
if (std::shared_ptr<GiveObjectToEmpireOrder> order =
std::dynamic_pointer_cast<GiveObjectToEmpireOrder>(id_and_order.second))
const OrderSet orders = HumanClientApp::GetApp()->Orders();
for (const auto& id_and_order : orders) {
if (auto order = std::dynamic_pointer_cast<
GiveObjectToEmpireOrder>(id_and_order.second))
{
if (order->ObjectID() == fleet->ID()) {
HumanClientApp::GetApp()->Orders().RescindOrder(id_and_order.first);
Expand Down
16 changes: 12 additions & 4 deletions UI/MapWnd.cpp
Expand Up @@ -2714,6 +2714,7 @@ void MapWnd::EnableOrderIssuing(bool enable/* = true*/) {
// and is not a moderator
HumanClientApp* app = HumanClientApp::GetApp();
bool moderator = false;
bool observer = false;
m_btn_turn->Disable(HumanClientApp::GetApp()->SinglePlayerGame() && !enable);
if (!app) {
enable = false;
Expand All @@ -2725,14 +2726,21 @@ void MapWnd::EnableOrderIssuing(bool enable/* = true*/) {
enable = false;
m_btn_turn->Disable(true);
}
observer = (app->GetClientType() == Networking::CLIENT_TYPE_HUMAN_OBSERVER);
}

m_moderator_wnd->EnableActions(enable && moderator);
m_ready_turn = !enable;
m_btn_turn->SetText(boost::io::str(FlexibleFormat(m_ready_turn && !HumanClientApp::GetApp()->SinglePlayerGame() ?
UserString("MAP_BTN_TURN_UNREADY") :
UserString("MAP_BTN_TURN_UPDATE")) %
std::to_string(CurrentTurn())));

std::string button_label;
if (!moderator && !observer && m_ready_turn && !HumanClientApp::GetApp()->SinglePlayerGame()) {
// multiplayer game with a participating player who has sent orders
button_label = UserString("MAP_BTN_TURN_UNREADY");
} else {
button_label = UserString("MAP_BTN_TURN_UPDATE");
}

m_btn_turn->SetText(boost::io::str(FlexibleFormat(button_label) % std::to_string(CurrentTurn())));
m_side_panel->EnableOrderIssuing(enable);
m_production_wnd->EnableOrderIssuing(enable);
m_research_wnd->EnableOrderIssuing(enable);
Expand Down
5 changes: 3 additions & 2 deletions default/credits.xml
Expand Up @@ -3,7 +3,6 @@
<CREDITS>
<GROUP name="LEAD">
<PERSON name="Geoff Topping" nick="Geoff the Medio" task="Programming, Design"/>
<PERSON name="" nick="Dilvish" task="Programming, Design"/>
<PERSON name="" nick="Vezzra" task="Release Management, Design"/>
</GROUP>
<GROUP name="LEAD EMERITUS">
Expand All @@ -15,6 +14,7 @@
<PERSON name="Anton Ruonala" nick="Miu" task="Graphics"/>
<PERSON name="Jonathan Hill" nick="Obiwan" task="Graphics"/>
<PERSON name="Kenneth Welch" nick="LithiumMongoose" task="Audio"/>
<PERSON name="" nick="Dilvish" task="Programming, Design"/>
</GROUP>
<GROUP name="PROGRAMMING">
<PERSON name="Joseph Bissonnette" nick="Oceanmachine" task="Programming, Game Design"/>
Expand Down Expand Up @@ -70,6 +70,7 @@
<PERSON name="Ingo Schwarze" nick="ischwarze" task="Programming"/>
<PERSON name="" nick="agrrr3" task="Programming"/>
<PERSON name="" nick="OlafPettersson" task="Programming"/>
<PERSON name="Justin Wood" nick="swaqvalley" task="Programming"/>
</GROUP>
<GROUP name="GAMEDESIGN and CONTENT">
<PERSON name="Krum Stanoev" nick="" task="Game Design"/>
Expand Down Expand Up @@ -116,6 +117,7 @@
<PERSON name="Viktor Hahn" nick="Unnamed" task="Graphics"/>
<PERSON name="Fabian Hernandez" nick="coCoKNIght" task="Graphics"/>
<PERSON name="Holger Motz" nick="Captain M" task="Graphics"/>
<PERSON name="Daria Sharonova" nick="Bestary" task="Graphics, Russian Translation"/>
</GROUP>
<GROUP name="AUDIO">
<PERSON name="Scott R. Looney" nick="metaphysician" task="Audio"/>
Expand Down Expand Up @@ -144,7 +146,6 @@
<PERSON name="Stefano Peris" nick="LordStephen77" task="Italian Translation"/>
<PERSON name="" nick="nikqz" task="Russian Translation"/>
<PERSON name="Iaroslav Gridin" nick="Voker57" task="Russian Translation"/>
<PERSON name="Daria Sharonova" nick="Bestary" task="Russian Translation"/>
</GROUP>
<GROUP name="EXTERNAL RESOURCES">
<RESOURCE author="Adam Evans" license="CC-BY 2.0" title="Andromeda Galaxy (with h-alpha).jpg"
Expand Down
Binary file added default/data/art/fields/ion_storm.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified default/data/art/fields/molecular_cloud.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed default/data/art/fields/rainbow_storm.png
Binary file not shown.
7 changes: 5 additions & 2 deletions default/python/AI/turn_state.py
@@ -1,6 +1,5 @@
from collections import namedtuple
from logging import warn

from logging import warn, error
from freeorion_tools import ReadOnlyDict

import freeOrionAIInterface as fo
Expand Down Expand Up @@ -105,6 +104,10 @@ def __update_supply(self):

enemies = [fo.getEmpire(_id) for _id in fo.allEmpireIDs() if _id != fo.empireID()]
for enemy in enemies:
if enemy is None:
error('Got None for enemy empire!')
continue

for sys_id, supply_val in enemy.supplyProjections().items():
self.__distance_to_enemy_supply[sys_id] = min(
self.get_distance_to_enemy_supply(sys_id), -supply_val)
Expand Down
2 changes: 1 addition & 1 deletion default/scripting/fields/FLD_ION_STORM.focs.txt
Expand Up @@ -53,4 +53,4 @@ FieldType
effects = Destroy

]
graphic = "fields/rainbow_storm.png"
graphic = "fields/ion_storm.png"
35 changes: 31 additions & 4 deletions default/stringtables/fr.txt
Expand Up @@ -3471,14 +3471,15 @@ Annuler bombardement

# %1% the planet size as text (small, medium, large, ...).
# %2% type of the planet environment (desert, oceanic, terran, ...).
#PL_TYPE_SIZE
#%1% %2%
PL_TYPE_SIZE
%1% %2%

# %1% the planet size as text (small, medium, large, ...).
# %2% type of the planet environment (desert, oceanic, terran, ...).
# %3% suitability of the planet for a concrete species (adequate, hostile, ...).
#PL_TYPE_SIZE_ENV
#%1% %2% (%3%)
# %4% species name for which suitability applies (Human, Trith, ...).
PL_TYPE_SIZE_ENV
%1% %2% (%4%: %3%)

PL_NO_VISIBILITY
La planète n'est pas visible actuellement.
Expand Down Expand Up @@ -6223,6 +6224,17 @@ MESSAGES_PEACE_TREATY
MESSAGES_ALLIANCE
%1% et %2% ont forgé une alliance.

MESSAGES_HELP_COMMAND
'''/pedia [article]: ouvre l'article spécifié dans l'Encyclopédie
/pm [player] [message]: envoie un message privé au joueur spécifié
/zoom [object]: zoome sur l'objet spécifié (système, planète, astronef, flotte ou structure)
'''

MESSAGES_WHISPER
(Chuchotements)

MESSAGES_INVALID
Joueur invalide ou aucun message saisi.

##
## Players list
Expand Down Expand Up @@ -6268,6 +6280,9 @@ Planètes
FLEETS_SUBMENU
Flotte / Astronefs

PLANET_ENVIRONMENTS_SUBMENU
Environnement pour l'espèce

#ID
#ID

Expand Down Expand Up @@ -6572,6 +6587,12 @@ La technologie %tech% a été assimilée.
SITREP_TECH_RESEARCHED_LABEL
Technologie assimilée

SITREP_EMPIRE_TECH_RESEARCHED_DETECTION
La [[encyclopedia DETECTION_TITLE]] de %empire% a été améliorée à %rawtext:dstrength%

SITREP_EMPIRE_TECH_RESEARCHED_DETECTION_LABEL
Amélioration technologique Détection impériale

SITREP_TECH_UNLOCKED
La technologie %tech% a été débloquée et peut désormais être assimilée grâce à la Recherche.

Expand All @@ -6596,6 +6617,12 @@ La structure %buildingtype% a été débloquée et peut désormais être constru
SITREP_BUILDING_TYPE_UNLOCKED_LABEL
Structure débloquée

SITREP_WEAPONS_UPGRADED
Tous les armements %shippart% des astronefs à portée d'approvisionnement ont été améliorés par la technologie %tech%. Les armements améliorés infligent des dommages supplémentaires de %rawtext:dam% par tir.

SITREP_WEAPONS_UPGRADED_LABEL
Amélioration technologique Armement

SITREP_COMBAT_SYSTEM
Dans %system% : un %combat% a eu lieu.

Expand Down
2 changes: 1 addition & 1 deletion python/AI/AIFramework.cpp
Expand Up @@ -154,7 +154,7 @@ void PythonAI::GenerateOrders() {
ErrorLogger() << "PythonAI::GenerateOrders : Python error caught. Partial orders sent to server";
}
AIInterface::DoneTurn();
DebugLogger() << "PythonAI::GenerateOrders order generating time: " << (order_timer.elapsed() * 1000.0);
DebugLogger() << "PythonAI::GenerateOrders order generating time: " << (order_timer.elapsed() * 1000.0) << " ms";
}

void PythonAI::HandleChatMessage(int sender_id, const std::string& msg) {
Expand Down
25 changes: 19 additions & 6 deletions server/ServerFSM.cpp
Expand Up @@ -2499,7 +2499,8 @@ sc::result WaitingForMPGameJoiners::react(const Error& msg) {
////////////////////////////////////////////////////////////
PlayingGame::PlayingGame(my_context c) :
my_base(c),
m_turn_timeout(Server().m_io_context)
m_turn_timeout(Server().m_io_context),
m_start(std::chrono::high_resolution_clock::now())
{
TraceLogger(FSM) << "(ServerFSM) PlayingGame";

Expand All @@ -2526,8 +2527,10 @@ PlayingGame::PlayingGame(my_context c) :
}
}

PlayingGame::~PlayingGame()
{
PlayingGame::~PlayingGame() {
auto duration = std::chrono::high_resolution_clock::now() - m_start;
DebugLogger(FSM) << "PlayingGame time: " << std::chrono::duration_cast<std::chrono::seconds>(duration).count() << " s";

TraceLogger(FSM) << "(ServerFSM) ~PlayingGame";
m_turn_timeout.cancel();
}
Expand Down Expand Up @@ -2914,7 +2917,8 @@ void PlayingGame::TurnTimedoutHandler(const boost::system::error_code& error) {
////////////////////////////////////////////////////////////
WaitingForTurnEnd::WaitingForTurnEnd(my_context c) :
my_base(c),
m_timeout(Server().m_io_context)
m_timeout(Server().m_io_context),
m_start(std::chrono::high_resolution_clock::now())
{
TraceLogger(FSM) << "(ServerFSM) WaitingForTurnEnd";
if (GetOptionsDB().Get<int>("save.auto.interval") > 0) {
Expand Down Expand Up @@ -2950,6 +2954,9 @@ WaitingForTurnEnd::WaitingForTurnEnd(my_context c) :
}

WaitingForTurnEnd::~WaitingForTurnEnd() {
auto duration = std::chrono::high_resolution_clock::now() - m_start;
DebugLogger(FSM) << "WaitingForTurnEnd time: " << std::chrono::duration_cast<std::chrono::seconds>(duration).count() << " s";

TraceLogger(FSM) << "(ServerFSM) ~WaitingForTurnEnd";
m_timeout.cancel();
}
Expand Down Expand Up @@ -3294,8 +3301,14 @@ void WaitingForTurnEnd::SaveTimedoutHandler(const boost::system::error_code& err
// ProcessingTurn
////////////////////////////////////////////////////////////
ProcessingTurn::ProcessingTurn(my_context c) :
my_base(c)
{ TraceLogger(FSM) << "(ServerFSM) ProcessingTurn"; }
my_base(c),
m_start(std::chrono::high_resolution_clock::now())
{
auto duration = std::chrono::high_resolution_clock::now() - m_start;
DebugLogger(FSM) << "ProcessingTurn time: " << std::chrono::duration_cast<std::chrono::seconds>(duration).count() << " s";

TraceLogger(FSM) << "(ServerFSM) ProcessingTurn";
}

ProcessingTurn::~ProcessingTurn()
{ TraceLogger(FSM) << "(ServerFSM) ~ProcessingTurn"; }
Expand Down
10 changes: 7 additions & 3 deletions server/ServerFSM.h
Expand Up @@ -322,7 +322,8 @@ struct PlayingGame : sc::state<PlayingGame, ServerFSM, WaitingForTurnEnd> {
const Networking::AuthRoles& roles);
void TurnTimedoutHandler(const boost::system::error_code& error);

boost::asio::deadline_timer m_turn_timeout;
boost::asio::deadline_timer m_turn_timeout;
std::chrono::high_resolution_clock::time_point m_start;

SERVER_ACCESSOR
};
Expand Down Expand Up @@ -351,8 +352,9 @@ struct WaitingForTurnEnd : sc::state<WaitingForTurnEnd, PlayingGame> {

void SaveTimedoutHandler(const boost::system::error_code& error);

std::string m_save_filename;
boost::asio::high_resolution_timer m_timeout;
std::string m_save_filename;
boost::asio::high_resolution_timer m_timeout;
std::chrono::high_resolution_clock::time_point m_start;

SERVER_ACCESSOR
};
Expand All @@ -379,6 +381,8 @@ struct ProcessingTurn : sc::state<ProcessingTurn, PlayingGame> {
sc::result react(const ProcessTurn& u);
sc::result react(const CheckTurnEndConditions& c);

std::chrono::high_resolution_clock::time_point m_start;

SERVER_ACCESSOR
};

Expand Down
2 changes: 1 addition & 1 deletion server/dmain.cpp
Expand Up @@ -58,7 +58,7 @@ int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
GetOptionsDB().Add<int>("network.server.ai.max", UserStringNop("OPTIONS_DB_MP_AI_MAX"), -1);
GetOptionsDB().Add<int>("network.server.human.min", UserStringNop("OPTIONS_DB_MP_HUMAN_MIN"), 0);
GetOptionsDB().Add<int>("network.server.human.max", UserStringNop("OPTIONS_DB_MP_HUMAN_MAX"), -1);
GetOptionsDB().Add<int>("network.server.conn-human-empire-players.min", UserStringNop("OPTIONS_DB_MP_CONN_HUMAN_MIN"), 1);
GetOptionsDB().Add<int>("network.server.conn-human-empire-players.min", UserStringNop("OPTIONS_DB_MP_CONN_HUMAN_MIN"), 0);
GetOptionsDB().Add<int>("network.server.unconn-human-empire-players.max", UserStringNop("OPTIONS_DB_MP_UNCONN_HUMAN_MAX"), 1);
GetOptionsDB().Add<int>("network.server.cookies.expire-minutes", UserStringNop("OPTIONS_DB_COOKIES_EXPIRE"), 15);
GetOptionsDB().Add<bool>("network.server.publish-statistics", UserStringNop("OPTIONS_DB_PUBLISH_STATISTICS"), true);
Expand Down
2 changes: 1 addition & 1 deletion util/Order.cpp
Expand Up @@ -1334,7 +1334,7 @@ bool GiveObjectToEmpireOrder::Check(int empire_id, int object_id, int recipient_
}

auto system_objects = Objects().FindObjects<const UniverseObject>(system->ObjectIDs());
if (std::any_of(system_objects.begin(), system_objects.end(),
if (!std::any_of(system_objects.begin(), system_objects.end(),
[recipient_empire_id](const std::shared_ptr<const UniverseObject> o){ return o->Owner() == recipient_empire_id; }))
{
ErrorLogger() << "IssueGiveObjectToEmpireOrder : recipient empire has nothing in system";
Expand Down
4 changes: 2 additions & 2 deletions util/ScopedTimer.cpp
Expand Up @@ -41,9 +41,9 @@ class ScopedTimer::Impl {
const std::chrono::nanoseconds& duration)
{
ss << std::setw(8) << std::right;
if (duration >= std::chrono::milliseconds(10))
if (duration >= std::chrono::milliseconds(2))
ss << std::chrono::duration_cast<std::chrono::milliseconds>(duration).count() << " ms";
else if (duration >= std::chrono::microseconds(10))
else if (duration >= std::chrono::microseconds(2))
ss << std::chrono::duration_cast<std::chrono::microseconds>(duration).count() << " µs";
else
ss << std::chrono::duration_cast<std::chrono::nanoseconds>(duration).count() << " ns";
Expand Down
3 changes: 1 addition & 2 deletions util/VarText.cpp
Expand Up @@ -237,8 +237,7 @@ const std::string VarText::FIELD_TYPE_TAG = "fieldtype";
const std::string VarText::METER_TYPE_TAG = "metertype";


VarText::VarText() :
m_stringtable_lookup_flag(false)
VarText::VarText()
{}

VarText::VarText(const std::string& template_string, bool stringtable_lookup/* = true*/) :
Expand Down
2 changes: 1 addition & 1 deletion util/VarText.h
Expand Up @@ -180,7 +180,7 @@ class FO_COMMON_API VarText {

//! If true the #m_template_string will be looked up in the stringtable
//! prior to substitution for variables.
bool m_stringtable_lookup_flag;
bool m_stringtable_lookup_flag = false;

//! Maps variable tags into values, which are used during text substitution.
std::map<std::string, std::string> m_variables;
Expand Down

0 comments on commit 6ae7457

Please sign in to comment.