Refactor SaveLoad and PartySelection GUI to use control binding

This commit is contained in:
Vsevolod Kremianskii 2021-06-12 18:20:10 +07:00
parent 483f0a8f10
commit 7f7bc412b4
8 changed files with 246 additions and 90 deletions

View file

@ -17,8 +17,6 @@
#include "partyselect.h" #include "partyselect.h"
#include "../../gui/control/label.h"
#include "../../gui/control/togglebutton.h"
#include "../../graphics/texture/textures.h" #include "../../graphics/texture/textures.h"
#include "../../resource/resources.h" #include "../../resource/resources.h"
#include "../../resource/strings.h" #include "../../resource/strings.h"
@ -63,6 +61,7 @@ PartySelection::PartySelection(Game *game) : GameGUI(game) {
void PartySelection::load() { void PartySelection::load() {
GUI::load(); GUI::load();
bindControls();
for (int i = 0; i < kNpcCount; ++i) { for (int i = 0; i < kNpcCount; ++i) {
ToggleButton &button = getNpcButton(i); ToggleButton &button = getNpcButton(i);
@ -72,6 +71,62 @@ void PartySelection::load() {
} }
} }
void PartySelection::bindControls() {
_binding.btnAccept = getControlPtr<Button>("BTN_ACCEPT");
_binding.btnBack = getControlPtr<Button>("BTN_BACK");
_binding.btnDone = getControlPtr<Button>("BTN_DONE");
_binding.btnNpc0 = getControlPtr<ToggleButton>("BTN_NPC0");
_binding.btnNpc1 = getControlPtr<ToggleButton>("BTN_NPC1");
_binding.btnNpc2 = getControlPtr<ToggleButton>("BTN_NPC2");
_binding.btnNpc3 = getControlPtr<ToggleButton>("BTN_NPC3");
_binding.btnNpc4 = getControlPtr<ToggleButton>("BTN_NPC4");
_binding.btnNpc5 = getControlPtr<ToggleButton>("BTN_NPC5");
_binding.btnNpc6 = getControlPtr<ToggleButton>("BTN_NPC6");
_binding.btnNpc7 = getControlPtr<ToggleButton>("BTN_NPC7");
_binding.btnNpc8 = getControlPtr<ToggleButton>("BTN_NPC8");
_binding.lbl3d = getControlPtr<Label>("LBL_3D");
_binding.lblBevelL = getControlPtr<Label>("LBL_BEVEL_L");
_binding.lblBevelM = getControlPtr<Label>("LBL_BEVEL_M");
_binding.lblChar0 = getControlPtr<Label>("LBL_CHAR0");
_binding.lblChar1 = getControlPtr<Label>("LBL_CHAR1");
_binding.lblChar2 = getControlPtr<Label>("LBL_CHAR2");
_binding.lblChar3 = getControlPtr<Label>("LBL_CHAR3");
_binding.lblChar4 = getControlPtr<Label>("LBL_CHAR4");
_binding.lblChar5 = getControlPtr<Label>("LBL_CHAR5");
_binding.lblChar6 = getControlPtr<Label>("LBL_CHAR6");
_binding.lblChar7 = getControlPtr<Label>("LBL_CHAR7");
_binding.lblChar8 = getControlPtr<Label>("LBL_CHAR8");
_binding.lblCount = getControlPtr<Label>("LBL_COUNT");
_binding.lblNa0 = getControlPtr<Label>("LBL_NA0");
_binding.lblNa1 = getControlPtr<Label>("LBL_NA1");
_binding.lblNa2 = getControlPtr<Label>("LBL_NA2");
_binding.lblNa3 = getControlPtr<Label>("LBL_NA3");
_binding.lblNa4 = getControlPtr<Label>("LBL_NA4");
_binding.lblNa5 = getControlPtr<Label>("LBL_NA5");
_binding.lblNa6 = getControlPtr<Label>("LBL_NA6");
_binding.lblNa7 = getControlPtr<Label>("LBL_NA7");
_binding.lblNa8 = getControlPtr<Label>("LBL_NA8");
_binding.lblNpcLevel = getControlPtr<Label>("LBL_NPC_LEVEL");
_binding.lblNpcName = getControlPtr<Label>("LBL_NPC_NAME");
_binding.lblTitle = getControlPtr<Label>("LBL_TITLE");
if (isTSL(_game->gameId())) {
_binding.btnNpc9 = getControlPtr<ToggleButton>("BTN_NPC9");
_binding.btnNpc10 = getControlPtr<ToggleButton>("BTN_NPC10");
_binding.btnNpc11 = getControlPtr<ToggleButton>("BTN_NPC11");
_binding.lblChar9 = getControlPtr<Label>("LBL_CHAR9");
_binding.lblChar10 = getControlPtr<Label>("LBL_CHAR10");
_binding.lblChar11 = getControlPtr<Label>("LBL_CHAR11");
_binding.lblNa9 = getControlPtr<Label>("LBL_NA9");
_binding.lblNa10 = getControlPtr<Label>("LBL_NA10");
_binding.lblNa11 = getControlPtr<Label>("LBL_NA11");
_binding.lblNameBack = getControlPtr<Label>("LBL_NAMEBACK");
} else {
_binding.lblAvailable = getControlPtr<Label>("LBL_AVAILABLE");
_binding.lblBevelR = getControlPtr<Label>("LBL_BEVEL_R");
}
}
void PartySelection::prepare(const Context &ctx) { void PartySelection::prepare(const Context &ctx) {
_context = ctx; _context = ctx;
_availableCount = kMaxFollowerCount; _availableCount = kMaxFollowerCount;
@ -163,14 +218,12 @@ void PartySelection::onAcceptButtonClick() {
} }
void PartySelection::refreshAvailableCount() { void PartySelection::refreshAvailableCount() {
Label &label = getControl<Label>("LBL_COUNT"); _binding.lblCount->setTextMessage(to_string(_availableCount));
label.setTextMessage(to_string(_availableCount));
} }
void PartySelection::refreshAcceptButton() { void PartySelection::refreshAcceptButton() {
string text(_game->services().resource().strings().get(_added[_selectedNpc] ? g_strRefRemove : g_strRefAdd)); string text(_game->services().resource().strings().get(_added[_selectedNpc] ? g_strRefRemove : g_strRefAdd));
Button &btnAccept = getControl<Button>("BTN_ACCEPT"); _binding.btnAccept->setTextMessage(text);
btnAccept.setTextMessage(text);
} }
void PartySelection::removeNpc(int npc) { void PartySelection::removeNpc(int npc) {

View file

@ -17,16 +17,14 @@
#pragma once #pragma once
#include "../../gui/control/button.h"
#include "../../gui/control/label.h"
#include "../../gui/control/togglebutton.h"
#include "gui.h" #include "gui.h"
namespace reone { namespace reone {
namespace gui {
class ToggleButton;
}
namespace game { namespace game {
constexpr int kNpcCount = 9; constexpr int kNpcCount = 9;
@ -46,23 +44,82 @@ public:
void prepare(const Context &ctx); void prepare(const Context &ctx);
private: private:
struct Binding {
std::shared_ptr<gui::Button> btnAccept;
std::shared_ptr<gui::Button> btnBack;
std::shared_ptr<gui::Button> btnDone;
std::shared_ptr<gui::ToggleButton> btnNpc0;
std::shared_ptr<gui::ToggleButton> btnNpc1;
std::shared_ptr<gui::ToggleButton> btnNpc2;
std::shared_ptr<gui::ToggleButton> btnNpc3;
std::shared_ptr<gui::ToggleButton> btnNpc4;
std::shared_ptr<gui::ToggleButton> btnNpc5;
std::shared_ptr<gui::ToggleButton> btnNpc6;
std::shared_ptr<gui::ToggleButton> btnNpc7;
std::shared_ptr<gui::ToggleButton> btnNpc8;
std::shared_ptr<gui::Label> lbl3d;
std::shared_ptr<gui::Label> lblBevelL;
std::shared_ptr<gui::Label> lblBevelM;
std::shared_ptr<gui::Label> lblChar0;
std::shared_ptr<gui::Label> lblChar1;
std::shared_ptr<gui::Label> lblChar2;
std::shared_ptr<gui::Label> lblChar3;
std::shared_ptr<gui::Label> lblChar4;
std::shared_ptr<gui::Label> lblChar5;
std::shared_ptr<gui::Label> lblChar6;
std::shared_ptr<gui::Label> lblChar7;
std::shared_ptr<gui::Label> lblChar8;
std::shared_ptr<gui::Label> lblCount;
std::shared_ptr<gui::Label> lblNa0;
std::shared_ptr<gui::Label> lblNa1;
std::shared_ptr<gui::Label> lblNa2;
std::shared_ptr<gui::Label> lblNa3;
std::shared_ptr<gui::Label> lblNa4;
std::shared_ptr<gui::Label> lblNa5;
std::shared_ptr<gui::Label> lblNa6;
std::shared_ptr<gui::Label> lblNa7;
std::shared_ptr<gui::Label> lblNa8;
std::shared_ptr<gui::Label> lblNpcLevel;
std::shared_ptr<gui::Label> lblNpcName;
std::shared_ptr<gui::Label> lblTitle;
// KotOR only
std::shared_ptr<gui::Label> lblAvailable;
std::shared_ptr<gui::Label> lblBevelR;
// END KotOR only
// TSL only
std::shared_ptr<gui::ToggleButton> btnNpc9;
std::shared_ptr<gui::ToggleButton> btnNpc10;
std::shared_ptr<gui::ToggleButton> btnNpc11;
std::shared_ptr<gui::Label> lblChar9;
std::shared_ptr<gui::Label> lblChar10;
std::shared_ptr<gui::Label> lblChar11;
std::shared_ptr<gui::Label> lblNa9;
std::shared_ptr<gui::Label> lblNa10;
std::shared_ptr<gui::Label> lblNa11;
std::shared_ptr<gui::Label> lblNameBack;
// END TSL only
} _binding;
Context _context; Context _context;
int _selectedNpc { -1 }; int _selectedNpc { -1 };
bool _added[kNpcCount] { false }; bool _added[kNpcCount] { false };
int _availableCount { 0 }; int _availableCount { 0 };
void onClick(const std::string &control) override; void bindControls();
void addNpc(int npc); void addNpc(int npc);
void changeParty(); void changeParty();
void onAcceptButtonClick();
void onNpcButtonClick(const std::string &control);
void refreshAcceptButton(); void refreshAcceptButton();
void refreshAvailableCount(); void refreshAvailableCount();
void refreshNpcButtons(); void refreshNpcButtons();
void removeNpc(int npc); void removeNpc(int npc);
gui::ToggleButton &getNpcButton(int npc); gui::ToggleButton &getNpcButton(int npc);
void onClick(const std::string &control) override;
void onAcceptButtonClick();
void onNpcButtonClick(const std::string &control);
}; };
} // namespace game } // namespace game

View file

@ -20,12 +20,12 @@
#include "../../common/log.h" #include "../../common/log.h"
#include "../../common/streamutil.h" #include "../../common/streamutil.h"
#include "../../graphics/texture/tgareader.h" #include "../../graphics/texture/tgareader.h"
#include "../../gui/control/listbox.h"
#include "../../resource/format/erfreader.h" #include "../../resource/format/erfreader.h"
#include "../../resource/format/gffreader.h" #include "../../resource/format/gffreader.h"
#include "../../resource/strings.h" #include "../../resource/strings.h"
#include "../game.h" #include "../game.h"
#include "../gameidutil.h"
#include "colorutil.h" #include "colorutil.h"
@ -60,28 +60,51 @@ SaveLoad::SaveLoad(Game *game) : GameGUI(game) {
void SaveLoad::load() { void SaveLoad::load() {
GUI::load(); GUI::load();
bindControls();
hideControl("LBL_PLANETNAME"); _binding.lblPlanetName->setVisible(false);
hideControl("LBL_AREANAME"); _binding.lblAreaName->setVisible(false);
ListBox &lbGames = getControl<ListBox>("LB_GAMES"); _binding.lbGames->setSelectionMode(ListBox::SelectionMode::OnClick);
lbGames.setSelectionMode(ListBox::SelectionMode::OnClick); _binding.lbGames->setPadding(3);
lbGames.setPadding(3);
Control &protoItem = lbGames.protoItem(); _binding.lbGames->protoItem().setUseBorderColorOverride(true);
protoItem.setUseBorderColorOverride(true); _binding.lbGames->protoItem().setBorderColorOverride(getBaseColor(_game->gameId()));
protoItem.setBorderColorOverride(getBaseColor(_game->gameId())); _binding.lbGames->protoItem().setHilightColor(_defaultHilightColor);
protoItem.setHilightColor(_defaultHilightColor); }
void SaveLoad::bindControls() {
_binding.btnBack = getControlPtr<Button>("BTN_BACK");
_binding.btnDelete = getControlPtr<Button>("BTN_DELETE");
_binding.btnSaveLoad = getControlPtr<Button>("BTN_SAVELOAD");
_binding.lblAreaName = getControlPtr<Label>("LBL_AREANAME");
_binding.lblPanelName = getControlPtr<Label>("LBL_PANELNAME");
_binding.lblPlanetName = getControlPtr<Label>("LBL_PLANETNAME");
_binding.lblPm1 = getControlPtr<Label>("LBL_PM1");
_binding.lblPm2 = getControlPtr<Label>("LBL_PM2");
_binding.lblPm3 = getControlPtr<Label>("LBL_PM3");
_binding.lblScreenshot = getControlPtr<Label>("LBL_SCREENSHOT");
_binding.lbGames = getControlPtr<ListBox>("LB_GAMES");
if (isTSL(_game->gameId())) {
_binding.btnFilter = getControlPtr<Button>("BTN_FILTER");
_binding.lblBar1 = getControlPtr<Label>("LBL_BAR1");
_binding.lblBar2 = getControlPtr<Label>("LBL_BAR2");
_binding.lblBar3 = getControlPtr<Label>("LBL_BAR3");
_binding.lblBar4 = getControlPtr<Label>("LBL_BAR4");
_binding.lblPcName = getControlPtr<Label>("LBL_PCNAME");
_binding.lblTimePlayed = getControlPtr<Label>("LBL_TIMEPLAYED");
}
} }
void SaveLoad::refresh() { void SaveLoad::refresh() {
setControlDisabled("BTN_DELETE", _mode != Mode::Save); _binding.btnDelete->setDisabled(_mode != Mode::Save);
string panelName(_game->services().resource().strings().get(_mode == Mode::Save ? kStrRefSaveGame : kStrRefLoadGame)); string panelName(_game->services().resource().strings().get(_mode == Mode::Save ? kStrRefSaveGame : kStrRefLoadGame));
setControlText("LBL_PANELNAME", panelName); _binding.lblPanelName->setTextMessage(move(panelName));
string actionName(_game->services().resource().strings().get(_mode == Mode::Save ? kStrRefSave : kStrRefLoad)); string actionName(_game->services().resource().strings().get(_mode == Mode::Save ? kStrRefSave : kStrRefLoad));
setControlText("BTN_SAVELOAD", actionName); _binding.btnSaveLoad->setTextMessage(move(actionName));
refreshSavedGames(); refreshSavedGames();
} }
@ -105,14 +128,13 @@ void SaveLoad::refreshSavedGames() {
} }
} }
auto &lbGames = getControl<ListBox>("LB_GAMES"); _binding.lbGames->clearItems();
lbGames.clearItems();
for (size_t i = 0; i < _saves.size(); ++i) { for (size_t i = 0; i < _saves.size(); ++i) {
string name(str(boost::format("%06d") % _saves[i].number)); string name(str(boost::format("%06d") % _saves[i].number));
ListBox::Item item; ListBox::Item item;
item.tag = name; item.tag = name;
item.text = name; item.text = name;
lbGames.addItem(move(item)); _binding.lbGames->addItem(move(item));
} }
} }
@ -186,8 +208,7 @@ void SaveLoad::onClick(const string &control) {
refresh(); refresh();
} }
} else if (control == "BTN_BACK") { } else if (control == "BTN_BACK") {
ListBox &lbGames = getControl<ListBox>("LB_GAMES"); _binding.lbGames->clearSelection();
lbGames.clearSelection();
switch (_mode) { switch (_mode) {
case Mode::Save: case Mode::Save:
@ -202,12 +223,10 @@ void SaveLoad::onClick(const string &control) {
} }
int SaveLoad::getSelectedSaveNumber() const { int SaveLoad::getSelectedSaveNumber() const {
ListBox &lbGames = getControl<ListBox>("LB_GAMES"); int hilightedIdx = _binding.lbGames->selectedItemIndex();
int hilightedIdx = lbGames.selectedItemIndex();
if (hilightedIdx == -1) return -1; if (hilightedIdx == -1) return -1;
string tag(lbGames.getItemAt(hilightedIdx).tag); string tag(_binding.lbGames->getItemAt(hilightedIdx).tag);
return stoi(tag); return stoi(tag);
} }
@ -252,9 +271,8 @@ void SaveLoad::onListBoxItemClick(const string &control, const string &item) {
// Get save number by item tag // Get save number by item tag
int selectedSaveNumber = -1; int selectedSaveNumber = -1;
auto &lbGames = getControl<ListBox>("LB_GAMES"); for (int i = 0; i < _binding.lbGames->getItemCount(); ++i) {
for (int i = 0; i < lbGames.getItemCount(); ++i) { auto &lbItem = _binding.lbGames->getItemAt(i);
auto &lbItem = lbGames.getItemAt(i);
if (lbItem.tag == item) { if (lbItem.tag == item) {
selectedSaveNumber = stoi(lbItem.tag); selectedSaveNumber = stoi(lbItem.tag);
break; break;
@ -273,8 +291,7 @@ void SaveLoad::onListBoxItemClick(const string &control, const string &item) {
} }
// Set screenshot // Set screenshot
Label &lblScreenshot = getControl<Label>("LBL_SCREENSHOT"); _binding.lblScreenshot->setBorderFill(move(screenshot));
lblScreenshot.setBorderFill(move(screenshot));
} }
} // namespace game } // namespace game

View file

@ -17,6 +17,10 @@
#pragma once #pragma once
#include "../../gui/control/button.h"
#include "../../gui/control/label.h"
#include "../../gui/control/listbox.h"
#include "../savedgame.h" #include "../savedgame.h"
#include "gui.h" #include "gui.h"
@ -48,21 +52,46 @@ private:
boost::filesystem::path path; boost::filesystem::path path;
}; };
struct Binding {
std::shared_ptr<gui::Button> btnBack;
std::shared_ptr<gui::Button> btnDelete;
std::shared_ptr<gui::Button> btnSaveLoad;
std::shared_ptr<gui::Label> lblAreaName;
std::shared_ptr<gui::Label> lblPanelName;
std::shared_ptr<gui::Label> lblPlanetName;
std::shared_ptr<gui::Label> lblPm1;
std::shared_ptr<gui::Label> lblPm2;
std::shared_ptr<gui::Label> lblPm3;
std::shared_ptr<gui::Label> lblScreenshot;
std::shared_ptr<gui::ListBox> lbGames;
// TSL only
std::shared_ptr<gui::Button> btnFilter;
std::shared_ptr<gui::Label> lblBar1;
std::shared_ptr<gui::Label> lblBar2;
std::shared_ptr<gui::Label> lblBar3;
std::shared_ptr<gui::Label> lblBar4;
std::shared_ptr<gui::Label> lblPcName;
std::shared_ptr<gui::Label> lblTimePlayed;
// END TSL only
} _binding;
Mode _mode { Mode::Save }; Mode _mode { Mode::Save };
std::vector<SavedGameDescriptor> _saves; std::vector<SavedGameDescriptor> _saves;
void bindControls();
void refreshSavedGames(); void refreshSavedGames();
void indexSavedGame(boost::filesystem::path path); void indexSavedGame(boost::filesystem::path path);
void onClick(const std::string &control) override;
void onListBoxItemClick(const std::string &control, const std::string &item) override;
void saveGame(int number); void saveGame(int number);
void loadGame(int number); void loadGame(int number);
void deleteGame(int number); void deleteGame(int number);
int getSelectedSaveNumber() const; int getSelectedSaveNumber() const;
int getNewSaveNumber() const; int getNewSaveNumber() const;
void onClick(const std::string &control) override;
void onListBoxItemClick(const std::string &control, const std::string &item) override;
}; };
} // namespace game } // namespace game

View file

@ -546,8 +546,8 @@ void Control::setFocus(bool focus) {
_focus = focus; _focus = focus;
} }
void Control::setExtent(const Extent &extent) { void Control::setExtent(Extent extent) {
_extent = extent; _extent = move(extent);
updateTransform(); updateTransform();
updateTextLines(); updateTextLines();
} }
@ -562,19 +562,19 @@ void Control::setExtentTop(int top) {
updateTransform(); updateTransform();
} }
void Control::setBorder(const Border &border) { void Control::setBorder(Border border) {
_border = make_shared<Border>(border); _border = make_shared<Border>(move(border));
} }
void Control::setBorderFill(const string &resRef) { void Control::setBorderFill(string resRef) {
shared_ptr<Texture> texture; shared_ptr<Texture> texture;
if (!resRef.empty()) { if (!resRef.empty()) {
texture = _gui->graphics().textures().get(resRef, TextureUsage::GUI); texture = _gui->graphics().textures().get(resRef, TextureUsage::GUI);
} }
setBorderFill(texture); setBorderFill(move(texture));
} }
void Control::setBorderFill(const shared_ptr<Texture> &texture) { void Control::setBorderFill(shared_ptr<Texture> texture) {
if (!texture && _border) { if (!texture && _border) {
_border->fill.reset(); _border->fill.reset();
return; return;
@ -583,34 +583,34 @@ void Control::setBorderFill(const shared_ptr<Texture> &texture) {
if (!_border) { if (!_border) {
_border = make_shared<Border>(); _border = make_shared<Border>();
} }
_border->fill = texture; _border->fill = move(texture);
} }
} }
void Control::setBorderColor(const glm::vec3 &color) { void Control::setBorderColor(glm::vec3 color) {
_border->color = color; _border->color = move(color);
} }
void Control::setBorderColorOverride(const glm::vec3 &color) { void Control::setBorderColorOverride(glm::vec3 color) {
_borderColorOverride = color; _borderColorOverride = move(color);
} }
void Control::setUseBorderColorOverride(bool use) { void Control::setUseBorderColorOverride(bool use) {
_useBorderColorOverride = use; _useBorderColorOverride = use;
} }
void Control::setHilight(const Border &hilight) { void Control::setHilight(Border hilight) {
_hilight = make_shared<Border>(hilight); _hilight = make_shared<Border>(hilight);
} }
void Control::setHilightColor(const glm::vec3 &color) { void Control::setHilightColor(glm::vec3 color) {
if (!_hilight) { if (!_hilight) {
_hilight = make_shared<Border>(); _hilight = make_shared<Border>();
} }
_hilight->color = color; _hilight->color = move(color);
} }
void Control::setHilightFill(const string &resRef) { void Control::setHilightFill(string resRef) {
shared_ptr<Texture> texture; shared_ptr<Texture> texture;
if (!resRef.empty()) { if (!resRef.empty()) {
texture = _gui->graphics().textures().get(resRef, TextureUsage::GUI); texture = _gui->graphics().textures().get(resRef, TextureUsage::GUI);
@ -618,7 +618,7 @@ void Control::setHilightFill(const string &resRef) {
setHilightFill(texture); setHilightFill(texture);
} }
void Control::setHilightFill(const shared_ptr<Texture> &texture) { void Control::setHilightFill(shared_ptr<Texture> texture) {
if (!texture && _hilight) { if (!texture && _hilight) {
_hilight->fill.reset(); _hilight->fill.reset();
return; return;
@ -627,27 +627,27 @@ void Control::setHilightFill(const shared_ptr<Texture> &texture) {
if (!_hilight) { if (!_hilight) {
_hilight = make_shared<Border>(); _hilight = make_shared<Border>();
} }
_hilight->fill = texture; _hilight->fill = move(texture);
} }
} }
void Control::setText(const Text &text) { void Control::setText(Text text) {
_text = text; _text = move(text);
updateTextLines(); updateTextLines();
} }
void Control::setTextMessage(const string &text) { void Control::setTextMessage(string text) {
_text.text = text; _text.text = move(text);
updateTextLines(); updateTextLines();
} }
void Control::setTextFont(const shared_ptr<Font> &font) { void Control::setTextFont(shared_ptr<Font> font) {
_text.font = font; _text.font = move(font);
updateTextLines(); updateTextLines();
} }
void Control::setTextColor(const glm::vec3 &color) { void Control::setTextColor(glm::vec3 color) {
_text.color = color; _text.color = move(color);
} }
void Control::setScene(unique_ptr<SceneGraph> scene) { void Control::setScene(unique_ptr<SceneGraph> scene) {
@ -664,7 +664,7 @@ void Control::setPadding(int padding) {
_padding = padding; _padding = padding;
} }
void Control::setDiscardColor(const glm::vec3 &color) { void Control::setDiscardColor(glm::vec3 color) {
_discardEnabled = true; _discardEnabled = true;
_discardColor = color; _discardColor = color;
} }

View file

@ -110,29 +110,29 @@ public:
const Text &text() const { return _text; } const Text &text() const { return _text; }
const std::vector<std::string> &textLines() const { return _textLines; } const std::vector<std::string> &textLines() const { return _textLines; }
void setBorder(const Border &border); void setBorder(Border border);
void setBorderFill(const std::string &resRef); void setBorderFill(std::string resRef);
void setBorderFill(const std::shared_ptr<graphics::Texture> &texture); void setBorderFill(std::shared_ptr<graphics::Texture> texture);
void setBorderColor(const glm::vec3 &color); void setBorderColor(glm::vec3 color);
void setBorderColorOverride(const glm::vec3 &color); void setBorderColorOverride(glm::vec3 color);
void setDisabled(bool disabled); void setDisabled(bool disabled);
void setDiscardColor(const glm::vec3 &color); void setDiscardColor(glm::vec3 color);
virtual void setExtent(const Extent &extent); virtual void setExtent(Extent extent);
virtual void setExtentHeight(int height); virtual void setExtentHeight(int height);
void setExtentTop(int top); void setExtentTop(int top);
virtual void setFocus(bool focus); virtual void setFocus(bool focus);
void setFocusable(bool focusable); void setFocusable(bool focusable);
void setHeight(int height); void setHeight(int height);
void setHilight(const Border &hilight); void setHilight(Border hilight);
void setHilightColor(const glm::vec3 &color); void setHilightColor(glm::vec3 color);
void setHilightFill(const std::string &resRef); void setHilightFill(std::string resRef);
void setHilightFill(const std::shared_ptr<graphics::Texture> &texture); void setHilightFill(std::shared_ptr<graphics::Texture> texture);
void setPadding(int padding); void setPadding(int padding);
void setScene(std::unique_ptr<scene::SceneGraph> scene); void setScene(std::unique_ptr<scene::SceneGraph> scene);
void setText(const Text &text); void setText(Text text);
void setTextColor(const glm::vec3 & color); void setTextColor(glm::vec3 color);
void setTextMessage(const std::string &text); void setTextMessage(std::string text);
void setTextFont(const std::shared_ptr<graphics::Font> &font); void setTextFont(std::shared_ptr<graphics::Font> font);
void setUseBorderColorOverride(bool use); void setUseBorderColorOverride(bool use);
void setVisible(bool visible); void setVisible(bool visible);

View file

@ -240,7 +240,7 @@ void ListBox::setFocus(bool focus) {
} }
} }
void ListBox::setExtent(const Extent &extent) { void ListBox::setExtent(Extent extent) {
Control::setExtent(extent); Control::setExtent(extent);
updateItemSlots(); updateItemSlots();
} }

View file

@ -58,7 +58,7 @@ public:
void stretch(float x, float y, int mask) override; void stretch(float x, float y, int mask) override;
void setFocus(bool focus) override; void setFocus(bool focus) override;
void setExtent(const Extent &extent) override; void setExtent(Extent extent) override;
void setExtentHeight(int height) override; void setExtentHeight(int height) override;
void setProtoItemType(ControlType type); void setProtoItemType(ControlType type);
void setSelectionMode(SelectionMode mode); void setSelectionMode(SelectionMode mode);