summaryrefslogtreecommitdiff
path: root/src/main_gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main_gui.cpp')
-rw-r--r--src/main_gui.cpp28
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();