GUI Property now more modifiable (with SkillLevelWidget in vector and types in an enum)

This commit is contained in:
Bart Cools 2014-05-31 20:21:15 +02:00
parent 45ac7d5e03
commit 084a4a46f3
5 changed files with 58 additions and 90 deletions

View File

@ -80,37 +80,42 @@ KartStatsWidget::KartStatsWidget(core::recti area, const int player_id,
irr::core::recti massArea(m_skill_bar_x, m_skill_bar_y, irr::core::recti massArea(m_skill_bar_x, m_skill_bar_y,
m_skill_bar_x + m_skill_bar_w, m_skill_bar_x + m_skill_bar_w,
m_skill_bar_y + m_skill_bar_h); m_skill_bar_y + m_skill_bar_h);
m_mass_bar = NULL; SkillLevelWidget* skill_bar = NULL;
m_mass_bar = new SkillLevelWidget(massArea, m_player_id, skill_bar = new SkillLevelWidget(massArea, m_player_id,
(int) props->getMass()/10, "Weight"); (int) props->getMass()/10, "Weight");
m_mass_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_mass", m_player_id); skill_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_mass", m_player_id);
m_skills.push_back(skill_bar);
m_children.push_back(skill_bar);
// ---- Speed skill level widget // ---- Speed skill level widget
irr::core::recti speedArea(m_skill_bar_x, m_skill_bar_y - m_skill_bar_h - 10, irr::core::recti speedArea(m_skill_bar_x, m_skill_bar_y - m_skill_bar_h - 10,
m_skill_bar_x + m_skill_bar_w, m_skill_bar_x + m_skill_bar_w,
m_skill_bar_y + 10); m_skill_bar_y + 10);
m_speed_bar = NULL; skill_bar = NULL;
m_speed_bar = new SkillLevelWidget(speedArea, m_player_id, skill_bar = new SkillLevelWidget(speedArea, m_player_id,
(int) props->getMaxSpeed()/10, "Speed"); (int) props->getMaxSpeed()/10, "Speed");
m_speed_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_speed", m_player_id); skill_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_speed", m_player_id);
m_skills.push_back(skill_bar);
m_children.push_back(skill_bar);
// ---- Acceleration skill level widget // ---- Acceleration skill level widget
irr::core::recti accelArea(m_skill_bar_x, m_skill_bar_y + m_skill_bar_h + 10, irr::core::recti accelArea(m_skill_bar_x, m_skill_bar_y + m_skill_bar_h + 10,
m_skill_bar_x + m_skill_bar_w, m_skill_bar_x + m_skill_bar_w,
m_skill_bar_y + 2*m_skill_bar_y + 10); m_skill_bar_y + 2*m_skill_bar_y + 10);
m_accel_bar = NULL; skill_bar = NULL;
m_accel_bar = new SkillLevelWidget(accelArea, m_player_id, skill_bar = new SkillLevelWidget(accelArea, m_player_id,
(int) props->getTrackConnectionAccel()/10, "Accel"); (int) props->getTrackConnectionAccel()/10, "Accel");
m_accel_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_accel", m_player_id); skill_bar->m_properties[PROP_ID] = StringUtils::insertValues("@p%i_accel", m_player_id);
m_children.push_back(m_mass_bar); m_skills.push_back(skill_bar);
m_children.push_back(m_speed_bar); m_children.push_back(skill_bar);
m_children.push_back(m_accel_bar);
} // KartStatsWidget } // KartStatsWidget
@ -118,43 +123,42 @@ KartStatsWidget::KartStatsWidget(core::recti area, const int player_id,
void KartStatsWidget::add() void KartStatsWidget::add()
{ {
m_mass_bar->add(); for (int i = 0; i < SKILL_COUNT; ++i) {
m_speed_bar->add(); m_skills[i]->add();
m_accel_bar->add(); }
} }
void KartStatsWidget::move(int x, int y, int w, int h) void KartStatsWidget::move(int x, int y, int w, int h)
{ {
Widget::move(x,y,w,h); Widget::move(x,y,w,h);
setSize(m_x, m_y, m_w, m_h); setSize(m_x, m_y, m_w, m_h);
int offset = (m_h - (SKILL_COUNT*m_skill_bar_h)) / 2;
if (m_mass_bar != NULL) for (int i = 0; i < SKILL_COUNT; ++i)
{ {
m_mass_bar->move(m_skill_bar_x, m_skills[i]->move(m_skill_bar_x,
m_skill_bar_y, m_y + offset + m_skill_bar_h*i,
m_skill_bar_w, m_skill_bar_w,
m_skill_bar_h); m_skill_bar_h);
} }
} //move
if (m_speed_bar != NULL)
{
m_speed_bar->move(m_skill_bar_x,
m_skill_bar_y - m_skill_bar_h - 10,
m_skill_bar_w,
m_skill_bar_h);
}
if (m_accel_bar != NULL)
{
m_accel_bar->move(m_skill_bar_x,
m_skill_bar_y + m_skill_bar_h + 10,
m_skill_bar_w,
m_skill_bar_h);
}
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// ---- set value for given type
void KartStatsWidget::setValue(Stats type, int value)
{
m_skills[type]->setValue(value);
} //setValue
// -----------------------------------------------------------------------------
// ---- get value for given type
int KartStatsWidget::getValue(Stats type)
{
return m_skills[type]->getValue();
} // getVAlue
// ---- set size for widgets inside KartStatsWidget
void KartStatsWidget::setSize(const int x, const int y, const int w, const int h) void KartStatsWidget::setSize(const int x, const int y, const int w, const int h)
{ {
m_x = x; m_x = x;
@ -178,24 +182,3 @@ void KartStatsWidget::setSize(const int x, const int y, const int w, const int h
} // setSize } // setSize
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void KartStatsWidget::setMass(int value)
{
m_mass_bar->setValue(value);
}
// -----------------------------------------------------------------------------
void KartStatsWidget::setAcceleration(int value)
{
m_accel_bar->setValue(value);
}
// -----------------------------------------------------------------------------
void KartStatsWidget::setSpeed(int value)
{
m_speed_bar->setValue(value);
}
// -----------------------------------------------------------------------------

View File

@ -38,6 +38,7 @@ namespace GUIEngine
* \ingroup widgetsgroup * \ingroup widgetsgroup
*/ */
class KartStatsWidget : public Widget class KartStatsWidget : public Widget
{ {
/** When inferring widget size from its label length, this method will be called to /** When inferring widget size from its label length, this method will be called to
@ -52,13 +53,20 @@ class KartStatsWidget : public Widget
int m_skill_bar_x, m_skill_bar_y, m_skill_bar_h, m_skill_bar_w; int m_skill_bar_x, m_skill_bar_y, m_skill_bar_h, m_skill_bar_w;
int m_player_id; int m_player_id;
SkillLevelWidget* m_mass_bar;
SkillLevelWidget* m_speed_bar; std::vector<SkillLevelWidget*> m_skills;
SkillLevelWidget* m_accel_bar;
public: public:
enum Stats
{
SKILL_MASS,
SKILL_SPEED,
SKILL_ACCEL,
SKILL_COUNT
};
LEAK_CHECK() LEAK_CHECK()
KartStatsWidget(core::recti area, const int player_id, KartStatsWidget(core::recti area, const int player_id,
@ -85,14 +93,10 @@ class KartStatsWidget : public Widget
void setSize(const int x, const int y, const int w, const int h); void setSize(const int x, const int y, const int w, const int h);
/** Change the value of the widget, it must be a percent. */ /** Change the value of the widget, it must be a percent. */
void setMass(int value); void setValue(Stats type, int value);
void setAcceleration(int value);
void setSpeed(int value);
/** Get the current values of the widget. */ /** Get the current values of the widget. */
int getMass() {return m_mass_bar->getValue(); }; int getValue(Stats type);
int getAcceleration() {return m_accel_bar->getValue(); };
int getSpeed() {return m_speed_bar->getValue(); };
}; };
} }

View File

@ -128,10 +128,10 @@ void SkillLevelWidget::setSize(const int x, const int y, const int w, const int
} }
m_bar_x = x + w/2; m_bar_x = x + w/2;
m_bar_y = y; m_bar_y = y + m_h/2 - m_bar_h/2;
m_label_x = x; m_label_x = x;
m_label_y = y; m_label_y = y + m_h/2 - m_label_h/2;
} // setSize } // setSize
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------

View File

@ -797,20 +797,6 @@ void PlayerKartWidget::setSize(const int x, const int y, const int w, const int
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void PlayerKartWidget::setKartStats(const std::string& selection)
{
assert(m_magic_number == 0x33445566);
const KartProperties *kp =
kart_properties_manager->getKart(selection);
if (kp != NULL)
{
m_kart_stats->setMass((int)kp->getMass()/10);
m_kart_stats->setSpeed((int)kp->getMaxSpeed()/10);
m_kart_stats->setAcceleration((int)kp->getTrackConnectionAccel()/10);
m_kart_stats->update(0);
}
}
/** Sets which kart was selected for this player */ /** Sets which kart was selected for this player */
void PlayerKartWidget::setKartInternalName(const std::string& whichKart) void PlayerKartWidget::setKartInternalName(const std::string& whichKart)
{ {
@ -1503,9 +1489,9 @@ void KartSelectionScreen::updateKartStats(uint8_t widget_id,
if (kp != NULL) if (kp != NULL)
{ {
Log::verbose("updateKartStats", StringUtils::toString((int)kp->getMass()/10).c_str()); Log::verbose("updateKartStats", StringUtils::toString((int)kp->getMass()/10).c_str());
w->setMass((int)kp->getMass()/10); w->setValue(KartStatsWidget::SKILL_MASS, (int)kp->getMass()/10);
w->setSpeed((int)kp->getMaxSpeed()/10); w->setValue(KartStatsWidget::SKILL_SPEED, (int)kp->getMaxSpeed()/10);
w->setAcceleration((int)kp->getTrackConnectionAccel()/10); w->setValue(KartStatsWidget::SKILL_ACCEL, (int)kp->getTrackConnectionAccel()/10);
w->update(0); w->update(0);
} }
} }

View File

@ -346,11 +346,6 @@ public:
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
/** Set the kart stats for this player */
void setKartStats(const std::string& selection);
// -------------------------------------------------------------------------
/** Sets which kart was selected for this player */ /** Sets which kart was selected for this player */
void setKartInternalName(const std::string& whichKart); void setKartInternalName(const std::string& whichKart);