=== added file 'src/AddonAllowCoinSetting.h'
--- src/AddonAllowCoinSetting.h 1970-01-01 00:00:00 +0000
+++ src/AddonAllowCoinSetting.h 2010-03-24 22:58:40 +0000
@@ -0,0 +1,47 @@
+// $Id: AddonAllowCoinSetting.h 6019 2010-03-24 12:18:02Z Divan $
+//
+// Copyright (c) 2005 - 2010 Settlers Freaks (sf-team at siedler25.org)
+//
+// This file is part of Siedler II.5 RTTR.
+//
+// Siedler II.5 RTTR is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Siedler II.5 RTTR is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Siedler II.5 RTTR. If not, see .
+#ifndef ADDONALLOWCOINSETTING_H_INCLUDED
+#define ADDONALLOWCOINSETTING_H_INCLUDED
+
+#pragma once
+
+#include "Addons.h"
+
+///////////////////////////////////////////////////////////////////////////////
+/**
+ * Addon for allowing to chose a default coin allowance.
+ *
+ * @author GoGi
+ * @author Divan
+ */
+class AddonAllowCoinSetting : public AddonBool
+{
+public:
+ AddonAllowCoinSetting() : AddonBool(
+ ADDON_ALLOW_COIN_SETTING,
+ ADDONGROUP_MILITARY|ADDONGROUP_GAMEPLAY,
+ gettext_noop("Allow disabling coin distribution"),
+ gettext_noop("Allows every player to disable gold coin distribution by default."),
+ 0)
+ {
+ }
+};
+
+#endif // !ADDONALLOWCOINSETTING_H_INCLUDED
+
=== modified file 'src/AddonManager.cpp'
--- src/AddonManager.cpp 2010-03-14 23:00:42 +0000
+++ src/AddonManager.cpp 2010-03-24 20:43:54 +0000
@@ -40,6 +40,8 @@
#include "AddonDefenderBehavior.h"
+#include "AddonAllowCoinSetting.h"
+
///////////////////////////////////////////////////////////////////////////////
/**
*
@@ -95,6 +97,8 @@
registerAddon(new AddonStatisticsVisibility);
registerAddon(new AddonDefenderBehavior);
+
+ registerAddon(new AddonAllowCoinSetting);
}
}
=== modified file 'src/GameClient.h'
--- src/GameClient.h 2010-03-01 20:10:51 +0000
+++ src/GameClient.h 2010-03-24 20:43:54 +0000
@@ -243,7 +243,7 @@
/// Werkzeugeinstellungen (in der Reihenfolge wie im Fenster!)
std::vector tools_settings;
- VisualSettings() : distribution(20), build_order(31), transport_order(14), military_settings(7), tools_settings(12)
+ VisualSettings() : distribution(20), build_order(31), transport_order(14), military_settings(8), tools_settings(12)
{}
} visual_settings, default_settings;
=== modified file 'src/GameClientPlayer.cpp'
--- src/GameClientPlayer.cpp 2010-03-08 23:00:38 +0000
+++ src/GameClientPlayer.cpp 2010-03-24 20:43:54 +0000
@@ -66,7 +66,7 @@
*
* @author OLiver
*/
-GameClientPlayer::GameClientPlayer(const unsigned playerid) : GamePlayerInfo(playerid), build_order(31), military_settings(7), tools_settings(12,0)
+GameClientPlayer::GameClientPlayer(const unsigned playerid) : GamePlayerInfo(playerid), build_order(31), military_settings(8), tools_settings(12,0)
{
// Erstmal kein HQ (leerer Spieler) wie das bei manchen Karten der Fall ist
hqy = hqx = 0xFFFF;
@@ -156,6 +156,7 @@
military_settings[4] = 2;
military_settings[5] = 4;
military_settings[6] = 10;
+ military_settings[7] = 1;
GAMECLIENT.visual_settings.military_settings = military_settings;
GAMECLIENT.visual_settings.tools_settings = tools_settings;
=== modified file 'src/GameCommands.h'
--- src/GameCommands.h 2010-03-01 20:10:51 +0000
+++ src/GameCommands.h 2010-03-24 20:43:54 +0000
@@ -338,7 +338,7 @@
{
friend class GameClient;
/// Größe der Distributionsdaten
- static const unsigned DATA_SIZE = 7;
+ static const unsigned DATA_SIZE = 8;
/// Daten der Distribution (einzelne Prozente der Waren in Gebäuden)
std::vector data;
public:
=== modified file 'src/const_addons.h'
--- src/const_addons.h 2010-03-14 23:00:42 +0000
+++ src/const_addons.h 2010-03-24 20:43:54 +0000
@@ -27,6 +27,7 @@
// 001 OLiver
// 002 Divan
// 003 jh
+// 004 GoGi
//
// Do not forget to add your Addon to AddonManager::reset!
@@ -37,21 +38,23 @@
// AAA = Author
// NNNNN = Number
// AAANNNNN
- ADDON_LIMIT_CATAPULTS = 0x00000000,
- ADDON_INEXHAUSTIBLE_MINES = 0x00000001,
- ADDON_REFUND_MATERIALS = 0x00000002,
- ADDON_EXHAUSTIBLE_WELLS = 0x00000003,
- ADDON_REFUND_ON_EMERGENCY = 0x00000004,
- ADDON_MANUAL_ROAD_ENLARGEMENT = 0x00000005,
-
- ADDON_DEMOLITION_PROHIBITION = 0x00100000,
-
- ADDON_CHANGE_GOLD_DEPOSITS = 0x00200000,
- ADDON_MAX_WATERWAY_LENGTH = 0x00200001,
- ADDON_CUSTOM_BUILD_SEQUENCE = 0x00200002,
- ADDON_STATISTICS_VISIBILITY = 0x00200003,
-
- ADDON_DEFENDER_BEHAVIOR = 0x00300000
+ ADDON_LIMIT_CATAPULTS = 0x00000000,
+ ADDON_INEXHAUSTIBLE_MINES = 0x00000001,
+ ADDON_REFUND_MATERIALS = 0x00000002,
+ ADDON_EXHAUSTIBLE_WELLS = 0x00000003,
+ ADDON_REFUND_ON_EMERGENCY = 0x00000004,
+ ADDON_MANUAL_ROAD_ENLARGEMENT = 0x00000005,
+
+ ADDON_DEMOLITION_PROHIBITION = 0x00100000,
+
+ ADDON_CHANGE_GOLD_DEPOSITS = 0x00200000,
+ ADDON_MAX_WATERWAY_LENGTH = 0x00200001,
+ ADDON_CUSTOM_BUILD_SEQUENCE = 0x00200002,
+ ADDON_STATISTICS_VISIBILITY = 0x00200003,
+
+ ADDON_DEFENDER_BEHAVIOR = 0x00300000,
+
+ ADDON_ALLOW_COIN_SETTING = 0x00400000
};
enum AddonGroup
=== modified file 'src/iwAddons.cpp'
--- src/iwAddons.cpp 2010-03-01 20:10:51 +0000
+++ src/iwAddons.cpp 2010-03-24 22:58:40 +0000
@@ -40,7 +40,7 @@
* @author FloSoft
*/
iwAddons::iwAddons(ChangePolicy policy)
- : IngameWindow(CGI_ADDONS, 0xFFFF, 0xFFFF, 700, 500, _("Addon Settings"), LOADER.GetImageN("resource", 41), true),
+ : IngameWindow(CGI_ADDONS, 0xFFFF, 0xFFFF, 700, 520, _("Addon Settings"), LOADER.GetImageN("resource", 41), true),
policy(policy)
{
AddText(0, 20, 30, _("Additional features:"), COLOR_YELLOW, 0, NormalFont);
=== modified file 'src/iwMilitary.cpp'
--- src/iwMilitary.cpp 2010-03-14 23:00:42 +0000
+++ src/iwMilitary.cpp 2010-03-24 22:58:40 +0000
@@ -44,7 +44,7 @@
*/
iwMilitary::iwMilitary(void)
: IngameWindow(CGI_MILITARY, 0xFFFE, 0xFFFE, 168, 298, _("Military"), LOADER.GetImageN("io", 5)),
- settings_changed(false)
+ settings_changed(false), current_gold_setting(true)
{
// Einzelne Balken
AddProgress(0,17,25,132,26,TC_GREY,119,120,10,"",4,4,0,_("Fewer recruits"),_("More recruits")); /* pitch: 4, 4 */
@@ -55,9 +55,21 @@
AddProgress(5,17,185,132,26,TC_GREY,127,128,10,"",4,4,0,_("Center of country"),_("Center of country"));
AddProgress(6,17,217,132,26,TC_GREY,125,126,10,"",4,4,0,_("Border areas"),_("Border areas"));
+ // optional settings
+
+ unsigned short extra_height = 0;
+
+ if(ADDONMANAGER.isEnabled(ADDON_ALLOW_COIN_SETTING))
+ {
+ AddImageButton(7, 68, 249 + extra_height, 32, 32, TC_GREY, LOADER.GetImageN("io", 227));
+ extra_height += 34;
+ }
+
+ SetIwHeight(GetIwHeight() + extra_height);
+
// unteren 2 Buttons
- AddImageButton(7,18,250,30,32,TC_GREY, LOADER.GetImageN("io",21), _("Help"));
- AddImageButton(8,120,250,30,32,TC_GREY, LOADER.GetImageN("io",191),_("Default"));
+ AddImageButton(20,18,252+extra_height,30,32,TC_GREY, LOADER.GetImageN("io",21), _("Help"));
+ AddImageButton(21,120,252+extra_height,30,32,TC_GREY, LOADER.GetImageN("io",191),_("Default"));
// Falls Verteidiger ändern verboten ist, einfach die Bar ausblenden
if (ADDONMANAGER.getSelection(ADDON_DEFENDER_BEHAVIOR) == 1)
@@ -66,7 +78,7 @@
}
// Absendetimer, in 2s-Abschnitten wird jeweils das ganze als Netzwerknachricht ggf. abgeschickt
- AddTimer(9,2000);
+ AddTimer(22,2000);
UpdateSettings();
}
@@ -85,6 +97,9 @@
for(unsigned char i = 0; i < 7; ++i)
GAMECLIENT.visual_settings.military_settings[i] = (unsigned char)GetCtrl(i)->GetPosition();
+ if(ADDONMANAGER.isEnabled(ADDON_ALLOW_COIN_SETTING))
+ GAMECLIENT.visual_settings.military_settings[7] = current_gold_setting ? 1 : 0;
+
GAMECLIENT.AddGC(new gc::ChangeMilitary(GAMECLIENT.visual_settings.military_settings));
settings_changed = false;
}
@@ -108,10 +123,35 @@
settings_changed = true;
}
+void iwMilitary::Msg_ButtonClick(const unsigned int ctrl_id)
+{
+ switch(ctrl_id)
+ {
+ case 7: // default coin supply
+ {
+ settings_changed = true;
+ current_gold_setting = !current_gold_setting;
+ GetCtrl(7)->SetImage(LOADER.GetImageN("io", current_gold_setting ? 227 : 226));
+ } break;
+ case 20: // Help
+ {
+ } break;
+ case 21: // Default
+ {
+ } break;
+ }
+}
+
void iwMilitary::UpdateSettings()
{
// Einstellungen festlegen
for(unsigned i = 0;i<7;++i)
- GetCtrl(i)->SetPosition(GAMECLIENT.visual_settings.military_settings[i]);
+ GetCtrl(i)->SetPosition(GAMECLIENT.visual_settings.military_settings[i]);
+
+ if(ADDONMANAGER.isEnabled(ADDON_ALLOW_COIN_SETTING))
+ {
+ current_gold_setting = (GAMECLIENT.visual_settings.military_settings[7] == 1);
+ GetCtrl(7)->SetImage(LOADER.GetImageN("io", current_gold_setting ? 227 : 226));
+ }
}
=== modified file 'src/iwMilitary.h'
--- src/iwMilitary.h 2010-03-01 20:10:51 +0000
+++ src/iwMilitary.h 2010-03-24 22:58:40 +0000
@@ -28,6 +28,8 @@
{
/// Einstellungen nach dem letzten Netzwerk-Versenden nochmal verändert?
bool settings_changed;
+ /// wie viele progressbars existieren?
+ bool current_gold_setting;
public:
@@ -44,6 +46,7 @@
void Msg_Timer(const unsigned int ctrl_id);
void Msg_ProgressChange(const unsigned int ctrl_id, const unsigned short position);
+ void Msg_ButtonClick(const unsigned int ctrl_id);
};
#endif // !iwMILITARY_H_INCLUDED
=== modified file 'src/nobMilitary.cpp'
--- src/nobMilitary.cpp 2010-03-14 23:00:42 +0000
+++ src/nobMilitary.cpp 2010-03-24 22:58:40 +0000
@@ -44,6 +44,8 @@
#include "MapGeometry.h"
#include "AIEventManager.h"
+#include "AddonManager.h"
+
///////////////////////////////////////////////////////////////////////////////
// Makros / Defines
#if defined _WIN32 && defined _DEBUG && defined _MSC_VER
@@ -55,6 +57,13 @@
nobMilitary::nobMilitary(const BuildingType type,const unsigned short x, const unsigned short y,const unsigned char player,const Nation nation)
: nobBaseMilitary(type,x,y,player,nation), new_built(true), coins(0), disable_coins(false), disable_coins_virtual(false), capturing(false), capturing_soldiers(0), goldorder_event(0), upgrade_event(0)
{
+ // Default-Wert fuer Goldmuenzen
+ if(ADDONMANAGER.isEnabled(ADDON_ALLOW_COIN_SETTING) && gwg->GetPlayer(player)->military_settings[7] == 0)
+ {
+ disable_coins = true;
+ disable_coins_virtual = true;
+ }
+
// Gebäude entsprechend als Militärgebäude registrieren und in ein Militärquadrat eintragen
gwg->GetPlayer(player)->AddMilitaryBuilding(this);
gwg->GetMilitarySquare(x,y).push_back(this);