iwDistribution::iwDistribution(const GameWorldViewer& gwv, GameCommandFactory& gcFactory)
    : IngameWindow(CGI_DISTRIBUTION, IngameWindow::posLastOrCenter, Extent(290, 312), _("Distribution of goods"),
                   LOADER.GetImageN("resource", 41)),
      gwv(gwv), gcFactory(gcFactory), settings_changed(false)
{
    CreateGroups();

    // Tab Control
    ctrlTab* tab = AddTabCtrl(0, DrawPoint(10, 20), 270);
    DrawPoint txtPos(GetSize().x / 2, 60);
    DrawPoint progPos(PROGRESS_BORDER_DISTANCE - tab->GetPos().x, txtPos.y);
    const Extent progSize(GetSize().x - 2 * PROGRESS_BORDER_DISTANCE, 20);

    for(unsigned groupId = 0; groupId < groups.size(); groupId++)
    {
        const DistributionGroup& group = groups[groupId];
        ctrlGroup* tabGrp = tab->AddTab(group.img, group.name, groupId);
        txtPos.y = progPos.y = 60;
        unsigned curId = 0;
        for(const std::string& entry : group.entries)
        {
            unsigned txtId = group.entries.size() + curId;
            tabGrp->AddText(txtId, txtPos, entry, COLOR_YELLOW, FontStyle::CENTER | FontStyle::BOTTOM, SmallFont);
            tabGrp->AddProgress(curId++, progPos, progSize, TC_GREY, 139, 138, 10);
            txtPos.y = progPos.y += progSize.y * 2;
        }
    }

    // Gruppe auswählen
    tab->SetSelection(0);

    // Timer für die Übertragung der Daten via Netzwerk
    AddTimer(1, 2000);

    const Extent btSize(32, 32);
    // Hilfe
    AddImageButton(2, DrawPoint(15, GetSize().y - 15 - btSize.y), btSize, TC_GREY, LOADER.GetImageN("io", 225), _("Help"));
    // Standardbelegung
    AddImageButton(10, GetSize() - DrawPoint::all(15) - btSize, btSize, TC_GREY, LOADER.GetImageN("io", 191), _("Default"));

    UpdateSettings();
}
Пример #2
0
/**
 *  Konstruktor von @p iwAction.
 *
 *  @author OLiver
 */
iwAction::iwAction(dskGameInterface* const gi, GameWorldViewer* const gwv, const Tabs& tabs, MapPoint selectedPt, int mouse_x, int mouse_y, unsigned int params, bool military_buildings)
    : IngameWindow(CGI_ACTION, mouse_x, mouse_y, 200, 254, _("Activity window"), LOADER.GetImageN("io", 1)),
      gi(gi), gwv(gwv), selectedPt(selectedPt), mousePosAtOpen_(mouse_x, mouse_y)
{
    /*
        TAB_FLAG    1 = Land road
        TAB_FLAG    2 = Waterway
        TAB_FLAG    3 = Pull down flag
        TAB_FLAG    4 = Send geologist
        TAB_FLAG    5 = Send scout

        TAB_CUTROAD 1 = Cut Road

        TAB_BUILD   100-108, 200-212, 300-303, 400-403 = Buildings

        TAB_SETFLAG 1 = Erect flag

        TAB_WATCH   1 =
        TAB_WATCH   2 =
        TAB_WATCH   3 = zum HQ
		TAB_WATCH	4 = notify allies of location

        TAB_ATTACK  1 = Less soldiers
        TAB_ATTACK  2 = More soldiers
        TAB_ATTACK  3 = Option group: Better/Weaker
        TAB_ATTACK  4 = Angriff
        TAB_ATTACK  10-14 = Direktauswahl Anzahl
    */

    /// Haupttab
    ctrlTab* main_tab = AddTabCtrl(0, 10, 20, 180);

    // Bau-main_tab
    if(tabs.build)
    {
        ctrlGroup* group =  main_tab->AddTab(LOADER.GetImageN("io", 18), _("-> Build house"), TAB_BUILD);

        ctrlTab* build_tab = group->AddTabCtrl(1, 0, 45, 180);

        // Building tabs
        if(tabs.build_tabs == Tabs::BT_MINE) //mines
            build_tab->AddTab(LOADER.GetImageN("io", 76), _("-> Dig mines"), Tabs::BT_MINE);
        else
        {
            build_tab->AddTab(LOADER.GetImageN("io", 67), _("-> Build hut"), Tabs::BT_HUT);
            if(tabs.build_tabs >= Tabs::BT_HOUSE)
                build_tab->AddTab(LOADER.GetImageN("io", 68), _("-> Build house"), Tabs::BT_HOUSE);
            if(tabs.build_tabs >= Tabs::BT_CASTLE) //castle & harbor
                build_tab->AddTab(LOADER.GetImageN("io", 69), _("-> Build castle"), Tabs::BT_CASTLE);
        }

        // add building icons to TabCtrl
        const unsigned char building_count_max = 14;
        const unsigned building_count[4] = { 9, 13, 6, 4 };
        const BuildingType building_icons[4][building_count_max] =
        {
            { /* 0 */
                /* 0 */ BLD_WOODCUTTER,
                /* 1 */ BLD_FORESTER,
                /* 2 */ BLD_QUARRY,
                /* 3 */ BLD_FISHERY,
                /* 4 */ BLD_HUNTER,
                /* 5 */ BLD_BARRACKS,
                /* 6 */ BLD_GUARDHOUSE,
                /* 7 */ BLD_LOOKOUTTOWER,
                /* 8 */ BLD_WELL
            },
            {/* 1 */
                /*  0 */ BLD_SAWMILL,
                /*  1 */ BLD_SLAUGHTERHOUSE,
                /*  2 */ BLD_MILL,
                /*  3 */ BLD_BAKERY,
                /*  4 */ BLD_IRONSMELTER,
                /*  5 */ BLD_METALWORKS,
                /*  6 */ BLD_ARMORY,
                /*  7 */ BLD_MINT,
                /*  8 */ BLD_SHIPYARD,
                /*  9 */ BLD_BREWERY,
                /* 10 */ BLD_STOREHOUSE,
                /* 11 */ BLD_WATCHTOWER,
                /* 12 */ BLD_CATAPULT
            },
            { /* 2 */
                /* 0 */ BLD_FARM,
                /* 1 */ BLD_PIGFARM,
                /* 2 */ BLD_DONKEYBREEDER,
                /* 3 */ BLD_CHARBURNER,
                /* 4 */ BLD_FORTRESS,
                /* 5 */ BLD_HARBORBUILDING
            },
            { /* 3 */
                /* 0 */ BLD_GOLDMINE,
                /* 1 */ BLD_IRONMINE,
                /* 2 */ BLD_COALMINE,
                /* 3 */ BLD_GRANITEMINE
            }
        };

        const unsigned TABS_COUNT[5] = {1, 2, 3, 1, 3};

        /// Flexible what-buildings-are-available handling
        bool building_available[4][building_count_max] ;

        // First enable all buildings
        for (unsigned char i = 0; i < 4; ++i)
        {
            for(unsigned char j = 0; j < building_count_max; ++j)
            {
                if (j < building_count[i])
                {
                    building_available[i][j] = GAMECLIENT.GetLocalPlayer().IsBuildingEnabled(building_icons[i][j]);
                }
                else
                {
                    building_available[i][j] = false;
                }
            }
        }

        // Now deactivate those we don't want

        // Harbor
        if (tabs.build_tabs != Tabs::BT_HARBOR)
            building_available[2][5] = false;

        // Military buildings
        if (!military_buildings)
        {
            building_available[0][5] = false;
            building_available[0][6] = false;
            building_available[1][11] = false;
            building_available[2][4] = false;
        }

        // Mint and Goldmine
        if(GAMECLIENT.GetGGS().isEnabled(ADDON_CHANGE_GOLD_DEPOSITS))
        {
            building_available[1][7] = false;
            building_available[3][0] = false;
        }

        // Catapult
        if (!GAMECLIENT.GetLocalPlayer().CanBuildCatapult()) //-V807
            building_available[1][12] = false;

        // Charburner
        if(!GAMECLIENT.GetGGS().isEnabled(ADDON_CHARBURNER))
            building_available[2][3] = false;

        for(unsigned char i = 0; i < TABS_COUNT[tabs.build_tabs]; ++i)
        {
            unsigned char k = 0;
            Tabs::BuildTab bt = (tabs.build_tabs == Tabs::BT_MINE) ? Tabs::BT_MINE : Tabs::BuildTab(i);

            for(unsigned char j = 0; j < building_count_max; ++j)
            {
                if (!building_available[bt][j])
                    continue;

                // Baukosten im Tooltip mit anzeigen
                std::stringstream tooltip;
                tooltip << _(BUILDING_NAMES[building_icons[bt][j]]);

                tooltip << _("\nCosts: ");
                if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards > 0)
                    tooltip << (int)BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards << _(" boards");
                if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].stones > 0)
                {
                    if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards > 0)
                        tooltip << ", ";
                    tooltip << (int)BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].stones << _(" stones");
                }

                build_tab->GetGroup(bt)->AddBuildingIcon(j, (k % 5) * 36, (k / 5) * 36 + 45, building_icons[bt][j], GAMECLIENT.GetLocalPlayer().nation, 36, tooltip.str());

                ++k;
            }

            building_tab_heights[bt] = (k / 5 + ((k % 5 != 0) ? 1 : 0)) * 36 + 150;
        }

        build_tab->SetSelection(0, true);
    }

    // Wenn es einen Flaggen-main_tab gibt, dann entsprechend die Buttons anordnen, wie sie gebraucht werden
    if(tabs.flag)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 70), _("Erect flag"), TAB_FLAG);

        switch(params)
        {
            case AWFT_NORMAL: // normal Flag
            {
                group->AddImageButton(1,  0, 45, 45, 36, TC_GREY, LOADER.GetImageN("io",  65), _("Build road"));
                group->AddImageButton(3,  45, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Pull down flag"));
                group->AddImageButton(4, 90, 45, 45, 36, TC_GREY, LOADER.GetImageN("io",  20), _("Call in geologist"));
                group->AddImageButton(5, 135, 45, 45, 36, TC_GREY, LOADER.GetImageN("io",  96), _("Send out scout"));
            } break;
            case AWFT_WATERFLAG: // Water flag
            {
                group->AddImageButton(1,  0, 45, 36, 36, TC_GREY, LOADER.GetImageN("io",  65), _("Build road"));
                group->AddImageButton(2,  36, 45, 36, 36, TC_GREY, LOADER.GetImageN("io",  95), _("Build waterway"));
                group->AddImageButton(3,  72, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Pull down flag"));
                group->AddImageButton(4, 108, 45, 36, 36, TC_GREY, LOADER.GetImageN("io",  20), _("Call in geologist"));
                group->AddImageButton(5, 144, 45, 36, 36, TC_GREY, LOADER.GetImageN("io",  96), _("Send out scout"));
            } break;
            case AWFT_HQ: // HQ
            {
                group->AddImageButton(1, 0, 45, 180, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road"));
            } break;
            case AWFT_STOREHOUSE: // Storehouse
            {
                group->AddImageButton(1, 0, 45, 90, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road"));
                group->AddImageButton(3, 90, 45, 90, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Demolish house"));
            } break;
        }
    }

    // Flagge Setzen-main_tab
    if(tabs.setflag)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 45), _("Erect flag"), TAB_SETFLAG);

        unsigned int nr = 70;
        if(params == AWFT_WATERFLAG)
            nr = 94;

        // Straße aufwerten ggf anzeigen
        unsigned int btWidth = 180, btPosX = 90;
        AddUpgradeRoad(group, btPosX, btWidth);

        group->AddImageButton(1, 0, 45, btWidth, 36, TC_GREY, LOADER.GetImageN("io", nr), _("Erect flag"));
    }

    // Cut-main_tab
    if(tabs.cutroad)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 19), _("Dig up road"), TAB_CUTROAD);

        // Straße aufwerten ggf anzeigen
        unsigned int btWidth = 180, btPosX = 0;
        if(!tabs.setflag)
            AddUpgradeRoad(group, btPosX, btWidth);

        group->AddImageButton(1, btPosX, 45, btWidth, 36, TC_GREY, LOADER.GetImageN("io", 32), _("Dig up road"));
    }

    if(tabs.attack)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 98), _("Attack options"), TAB_ATTACK);
        available_soldiers_count = params;
        AddAttackControls(group, params);
        selected_soldiers_count = 1;
    }

    if(tabs.sea_attack)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 177), _("Attack options"), TAB_SEAATTACK);

        selected_soldiers_count_sea = 1;
        available_soldiers_count_sea = gwv->GetAvailableSoldiersForSeaAttackCount(GAMECLIENT.GetPlayerID(), selectedPt);

        AddAttackControls(group, available_soldiers_count_sea);
    }

    // Beobachten-main_tab
    if(tabs.watch)
    {
        ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 36), _("Display options"), TAB_WATCH);

        group->AddImageButton(1, 0, 45,  45, 36, TC_GREY, LOADER.GetImageN("io", 108), _("Observation window"));
        group->AddImageButton(2,  45, 45,  45, 36, TC_GREY, LOADER.GetImageN("io", 179), _("House names"));
        group->AddImageButton(3, 90, 45,  45, 36, TC_GREY, LOADER.GetImageN("io", 180), _("Go to headquarters"));
		group->AddImageButton(4, 135, 45,  45, 36, TC_GREY, LOADER.GetImageN("io", 107), _("Notify allies of this location"));
    }

    main_tab->SetSelection(0, true);

    if(x_ + GetWidth() > VIDEODRIVER.GetScreenWidth())
        x_ = mouse_x - GetWidth() - 40;
    if(y_ + GetHeight() > VIDEODRIVER.GetScreenHeight())
        y_ = mouse_y - GetHeight() - 40;

    VIDEODRIVER.SetMousePos(GetX() + 20, GetY() + 75);
}
Пример #3
0
/**
 *  Konstruktor von @p iwDistribution.
 *
 *  @author OLiver
 */
iwDistribution::iwDistribution(void)
    : IngameWindow(CGI_DISTRIBUTION, 0xFFFF, 0xFFFF, 290, 312, _("Distribution of goods"), LOADER.GetImageN("resource", 41)),
      settings_changed(false)
{
    ctrlGroup* group;

    // Werte für die Progressbars
    //const GameClientPlayer *player = GAMECLIENT.GetLocalPlayer();

    // Tab Control
    ctrlTab* tab = AddTabCtrl(0, 10, 20, 270);

    // Nahrungsgruppe
    group = tab->AddTab(LOADER.GetImageN("io", 80), _("Foodstuff"), TAB_FOOD);
    // Granitbergwerk
    group->AddText(0, width / 2,  60, _("Granite mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Kohlebergwerk
    group->AddText(2, width / 2, 100, _("Coal mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Eisenbergwerk
    group->AddText(4, width / 2, 140, _("Iron mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Goldbergwerk
    group->AddText(6, width / 2, 180, _("Gold mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Getreidegruppe
    group = tab->AddTab(LOADER.GetImageN("io", 90), _("Grain"), TAB_CORN);

    // Mühle
    group->AddText(0, width / 2,  60, _("Mill"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Schweinezucht
    group->AddText(2, width / 2, 100, _("Pig farm"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Eselzucht
    group->AddText(4, width / 2, 140, _("Donkey breeding"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Brauerei
    group->AddText(6, width / 2, 180, _("Brewery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Charburner
    group->AddText(8, width / 2, 220, _("Charburner"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(9, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 220, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Eisengruppe
    group = tab->AddTab(LOADER.GetImageN("io", 81), _("Iron"), TAB_IRON);

    // Schmiede
    group->AddText(0, width / 2,  60, _("Armory"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Schlosserei
    group->AddText(2, width / 2, 100, _("Metalworks"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Kohlegruppe
    group = tab->AddTab(LOADER.GetImageN("io", 91), _("Coal"), TAB_COAL);

    // Schmiede
    group->AddText(0, width / 2,  60, _("Armory"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Eisenschmelze
    group->AddText(2, width / 2, 100, _("Iron smelter"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Münzprägerei
    group->AddText(4, width / 2, 140, _("Mint"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Wood group
    group = tab->AddTab(LOADER.GetImageN("io", 89), _("Wood"), TAB_WOOD);

    // Sawmill
    group->AddText(0, width / 2,  60, _("Sawmill"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Charburner
    group->AddText(2, width / 2, 100, _("Charburner"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Brettergruppe
    group = tab->AddTab(LOADER.GetImageN("io", 82), _("Boards"), TAB_BOARD);

    // Baustellen
    group->AddText(0, width / 2,  60, _("Construction"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Schlosserei
    group->AddText(2, width / 2, 100, _("Metalworks"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Werft
    group->AddText(4, 120, 140, _("Shipyard"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);

    // Wasserbüffel äh -gruppe ;-)
    group = tab->AddTab(LOADER.GetImageN("io", 92), _("Water"), TAB_WATER);

    // Bäckerei
    group->AddText(0, width / 2,  60, _("Bakery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false),  60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Brauerei
    group->AddText(2, width / 2, 100, _("Brewery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Schweinezucht
    group->AddText(4, width / 2, 140, _("Pig farm"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);
    // Eselzucht
    group->AddText(6, width / 2, 180, _("Donkey breeding"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont);
    (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10);





    UpdateSettings();

    // Gruppe auswählen
    tab->SetSelection(0);

    // Timer für die Übertragung der Daten via Netzwerk
    AddTimer(1, 2000);


    // Hilfe
    AddImageButton(2, 15, height - 15 - 32, 32, 32, TC_GREY, LOADER.GetImageN("io", 21), _("Help"));
    // Standardbelegung
    AddImageButton(10, width - 15 - 32, height - 15 - 32, 32, 32, TC_GREY, LOADER.GetImageN("io", 191), _("Default"));

}