/* * The ManaPlus Client * Copyright (C) 2011-2020 The ManaPlus Developers * Copyright (C) 2020-2023 The ManaVerse Developers * * This file is part of The ManaPlus Client. * * This program 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 * any later version. * * This program 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 this program. If not, see . */ #include "gui/windows/clanwindow.h" #include "being/localclan.h" #include "gui/windows/setupwindow.h" #include "gui/widgets/createwidget.h" #include "gui/widgets/tabbedarea.h" #include "gui/widgets/tabs/clanwindowtabs.h" #include "utils/delete2.h" #include "utils/gettext.h" #include "debug.h" ClanWindow *clanWindow = nullptr; ClanWindow::ClanWindow() : // TRANSLATORS: clan window name Window(_("Clan"), Modal_false, nullptr, "clan.xml"), mTabs(CREATEWIDGETR(TabbedArea, this)), mInfoWidget(new InfoClanTab(this)), mStatsWidget(new StatsClanTab(this)), mAllyWidget(new RelationClanTab(this)), mAntagonistWidget(new RelationClanTab(this)) { setWindowName("clan"); if (setupWindow != nullptr) setupWindow->registerWindowForReset(this); setResizable(true); setCloseButton(true); setSaveVisible(true); setStickyButtonLock(true); setDefaultSize(400, 300, ImagePosition::CENTER, 0, 0); mTabs->setSelectable(false); mTabs->getWidgetContainer()->setSelectable(false); mTabs->getTabContainer()->setSelectable(false); // TRANSLATORS: clan window tab mTabs->addTab(std::string(_("Info")), mInfoWidget); // TRANSLATORS: clan window tab mTabs->addTab(std::string(_("Stats")), mStatsWidget); // TRANSLATORS: clan window tab mTabs->addTab(std::string(_("Ally")), mAllyWidget); // TRANSLATORS: clan window tab mTabs->addTab(std::string(_("Antagonist")), mAntagonistWidget); mTabs->setDimension(Rect(0, 0, 600, 300)); const int w = mDimension.width; const int h = mDimension.height; mInfoWidget->setDimension(Rect(0, 0, w, h)); mStatsWidget->setDimension(Rect(0, 0, w, h)); mAllyWidget->setDimension(Rect(0, 0, w, h)); mAntagonistWidget->setDimension(Rect(0, 0, w, h)); loadWindowState(); enableVisibleSound(true); resetClan(); } ClanWindow::~ClanWindow() { delete2(mInfoWidget) delete2(mStatsWidget) delete2(mAllyWidget) delete2(mAntagonistWidget) } void ClanWindow::postInit() { Window::postInit(); add(mTabs); } void ClanWindow::slowLogic() { BLOCK_START("ClanWindow::slowLogic") if (!isWindowVisible() || (mTabs == nullptr)) { BLOCK_END("ClanWindow::slowLogic") return; } switch (mTabs->getSelectedTabIndex()) { default: case 0: mInfoWidget->logic(); break; case 1: mStatsWidget->logic(); break; case 2: mAllyWidget->logic(); break; case 3: mAntagonistWidget->logic(); break; } BLOCK_END("ClanWindow::slowLogic") } void ClanWindow::widgetResized(const Event &event) { Window::widgetResized(event); mTabs->setDimension(Rect(0, 0, mDimension.width, mDimension.height)); } void ClanWindow::updateClan() { mInfoWidget->updateClan(); mStatsWidget->updateClan(); mAllyWidget->updateClan(localClan.allyClans); mAntagonistWidget->updateClan(localClan.antagonistClans); } void ClanWindow::resetClan() { mInfoWidget->resetClan(); mStatsWidget->resetClan(); mAllyWidget->resetClan(); mAntagonistWidget->resetClan(); } void ClanWindow::updateClanMembers() { } #ifdef USE_PROFILER void ClanWindow::logicChildren() { BLOCK_START("ClanWindow::logicChildren") BasicContainer::logicChildren(); BLOCK_END("ClanWindow::logicChildren") } #endif // USE_PROFILER