diff options
Diffstat (limited to 'src/main_gui.cpp')
-rw-r--r-- | src/main_gui.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/main_gui.cpp b/src/main_gui.cpp index ddf394318..45c8bef49 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -58,6 +58,21 @@ extern void GenerateIndustries(); extern bool GenerateTowns(); +void CcGiveMoney(bool success, TileIndex tile, uint32 p1, uint32 p2) +{ + if (!success) return; + + char msg[20]; + /* Inform the player of this action */ + snprintf(msg, sizeof(msg), "%d", p1); + + if (!_network_server) { + SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg); + } else { + NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, NETWORK_SERVER_INDEX); + } +} + void HandleOnEditText(const char *str) { int id = _rename_id; @@ -75,22 +90,11 @@ void HandleOnEditText(const char *str) case 3: { // Give money, you can only give money in excess of loan const Player *p = GetPlayer(_current_player); int32 money = min(p->money64 - p->current_loan, atoi(str) / _currency->rate); - char msg[20]; money = clamp(money, 0, 20000000); // Clamp between 20 million and 0 /* Give 'id' the money, and substract it from ourself */ - int32 ret = DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS)); - if (CmdFailed(ret) || ret == 0) break; // We either did something wrong, or we don't have any money anymore - - /* Inform the player of this action */ - snprintf(msg, sizeof(msg), "%d", money); - - if (!_network_server) { - SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg); - } else { - NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg, NETWORK_SERVER_INDEX); - } + DoCommandP(0, money, id, CcGiveMoney, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS)); } break; #endif /* ENABLE_NETWORK */ default: NOT_REACHED(); |