Merge pull request #504 from AttorneyOnline/fix/css-lag
Fix character select screen lag/performance overhead
This commit is contained in:
commit
d0ef4831de
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
class AOImage : public QLabel {
|
class AOImage : public QLabel {
|
||||||
public:
|
public:
|
||||||
AOImage(QWidget *parent, AOApplication *p_ao_app);
|
AOImage(QWidget *parent, AOApplication *p_ao_app, bool make_static = false);
|
||||||
~AOImage();
|
~AOImage();
|
||||||
|
|
||||||
QWidget *m_parent;
|
QWidget *m_parent;
|
||||||
@ -20,6 +20,8 @@ public:
|
|||||||
|
|
||||||
QString path;
|
QString path;
|
||||||
|
|
||||||
|
bool is_static = false;
|
||||||
|
|
||||||
bool set_image(QString p_image, QString p_misc = "");
|
bool set_image(QString p_image, QString p_misc = "");
|
||||||
void set_size_and_pos(QString identifier);
|
void set_size_and_pos(QString identifier);
|
||||||
};
|
};
|
||||||
|
@ -755,7 +755,6 @@ private:
|
|||||||
|
|
||||||
QVector<AOCharButton *> ui_char_button_list;
|
QVector<AOCharButton *> ui_char_button_list;
|
||||||
QVector<AOCharButton *> ui_char_button_list_filtered;
|
QVector<AOCharButton *> ui_char_button_list_filtered;
|
||||||
AOImage *ui_selector;
|
|
||||||
|
|
||||||
AOButton *ui_back_to_lobby;
|
AOButton *ui_back_to_lobby;
|
||||||
|
|
||||||
|
@ -15,19 +15,19 @@ AOCharButton::AOCharButton(QWidget *parent, AOApplication *p_ao_app, int x_pos,
|
|||||||
this->resize(60, 60);
|
this->resize(60, 60);
|
||||||
this->move(x_pos, y_pos);
|
this->move(x_pos, y_pos);
|
||||||
|
|
||||||
ui_taken = new AOImage(this, ao_app);
|
ui_taken = new AOImage(this, ao_app, true);
|
||||||
ui_taken->resize(60, 60);
|
ui_taken->resize(60, 60);
|
||||||
ui_taken->set_image("char_taken");
|
ui_taken->set_image("char_taken");
|
||||||
ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents);
|
ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
ui_taken->hide();
|
ui_taken->hide();
|
||||||
|
|
||||||
ui_passworded = new AOImage(this, ao_app);
|
ui_passworded = new AOImage(this, ao_app, true);
|
||||||
ui_passworded->resize(60, 60);
|
ui_passworded->resize(60, 60);
|
||||||
ui_passworded->set_image("char_passworded");
|
ui_passworded->set_image("char_passworded");
|
||||||
ui_passworded->setAttribute(Qt::WA_TransparentForMouseEvents);
|
ui_passworded->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
ui_passworded->hide();
|
ui_passworded->hide();
|
||||||
|
|
||||||
ui_selector = new AOImage(parent, ao_app);
|
ui_selector = new AOImage(parent, ao_app, true);
|
||||||
ui_selector->resize(62, 62);
|
ui_selector->resize(62, 62);
|
||||||
ui_selector->move(x_pos - 1, y_pos - 1);
|
ui_selector->move(x_pos - 1, y_pos - 1);
|
||||||
ui_selector->set_image("char_selector");
|
ui_selector->set_image("char_selector");
|
||||||
|
@ -9,14 +9,14 @@ AOEvidenceButton::AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app,
|
|||||||
ao_app = p_ao_app;
|
ao_app = p_ao_app;
|
||||||
m_parent = p_parent;
|
m_parent = p_parent;
|
||||||
|
|
||||||
ui_selected = new AOImage(this, ao_app);
|
ui_selected = new AOImage(this, ao_app, true);
|
||||||
ui_selected->resize(p_w, p_h);
|
ui_selected->resize(p_w, p_h);
|
||||||
// ui_selected->move(p_x, p_y);
|
// ui_selected->move(p_x, p_y);
|
||||||
ui_selected->set_image("evidence_selected");
|
ui_selected->set_image("evidence_selected");
|
||||||
ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents);
|
ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
ui_selected->hide();
|
ui_selected->hide();
|
||||||
|
|
||||||
ui_selector = new AOImage(this, ao_app);
|
ui_selector = new AOImage(this, ao_app, true);
|
||||||
ui_selector->resize(p_w, p_h);
|
ui_selector->resize(p_w, p_h);
|
||||||
// ui_selector->move(p_x - 1, p_y - 1);
|
// ui_selector->move(p_x - 1, p_y - 1);
|
||||||
ui_selector->set_image("evidence_selector");
|
ui_selector->set_image("evidence_selector");
|
||||||
|
@ -4,18 +4,22 @@
|
|||||||
|
|
||||||
#include <QBitmap>
|
#include <QBitmap>
|
||||||
|
|
||||||
AOImage::AOImage(QWidget *parent, AOApplication *p_ao_app) : QLabel(parent)
|
AOImage::AOImage(QWidget *parent, AOApplication *p_ao_app, bool make_static) : QLabel(parent)
|
||||||
{
|
{
|
||||||
m_parent = parent;
|
m_parent = parent;
|
||||||
ao_app = p_ao_app;
|
ao_app = p_ao_app;
|
||||||
movie = new QMovie();
|
is_static = make_static;
|
||||||
connect(movie, &QMovie::frameChanged, [=]{
|
if (!is_static) // Only create the QMovie if we're non-static
|
||||||
QPixmap f_pixmap = movie->currentPixmap();
|
{
|
||||||
f_pixmap =
|
movie = new QMovie(this);
|
||||||
f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio);
|
connect(movie, &QMovie::frameChanged, [=]{
|
||||||
this->setPixmap(f_pixmap);
|
QPixmap f_pixmap = movie->currentPixmap();
|
||||||
this->setMask(f_pixmap.mask());
|
f_pixmap =
|
||||||
});
|
f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio);
|
||||||
|
this->setPixmap(f_pixmap);
|
||||||
|
this->setMask(f_pixmap.mask());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AOImage::~AOImage() {}
|
AOImage::~AOImage() {}
|
||||||
@ -23,7 +27,7 @@ AOImage::~AOImage() {}
|
|||||||
bool AOImage::set_image(QString p_path, QString p_misc)
|
bool AOImage::set_image(QString p_path, QString p_misc)
|
||||||
{
|
{
|
||||||
// Check if the user wants animated themes
|
// Check if the user wants animated themes
|
||||||
if (ao_app->get_animated_theme())
|
if (!is_static && ao_app->get_animated_theme())
|
||||||
// We want an animated image
|
// We want an animated image
|
||||||
p_path = ao_app->get_image(p_path, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_misc);
|
p_path = ao_app->get_image(p_path, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_misc);
|
||||||
else
|
else
|
||||||
@ -35,12 +39,14 @@ bool AOImage::set_image(QString p_path, QString p_misc)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
path = p_path;
|
path = p_path;
|
||||||
movie->stop();
|
if (!is_static) {
|
||||||
movie->setFileName(path);
|
movie->stop();
|
||||||
if (ao_app->get_animated_theme() && movie->frameCount() > 1) {
|
movie->setFileName(path);
|
||||||
movie->start();
|
if (ao_app->get_animated_theme() && movie->frameCount() > 1) {
|
||||||
|
movie->start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
if (is_static || !ao_app->get_animated_theme() || movie->frameCount() <= 1) {
|
||||||
QPixmap f_pixmap(path);
|
QPixmap f_pixmap(path);
|
||||||
|
|
||||||
f_pixmap =
|
f_pixmap =
|
||||||
|
@ -21,10 +21,6 @@ void Courtroom::construct_char_select()
|
|||||||
|
|
||||||
ui_char_buttons = new QWidget(ui_char_select_background);
|
ui_char_buttons = new QWidget(ui_char_select_background);
|
||||||
|
|
||||||
ui_selector = new AOImage(ui_char_select_background, ao_app);
|
|
||||||
ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents);
|
|
||||||
ui_selector->resize(62, 62);
|
|
||||||
|
|
||||||
ui_back_to_lobby = new AOButton(ui_char_select_background, ao_app);
|
ui_back_to_lobby = new AOButton(ui_char_select_background, ao_app);
|
||||||
|
|
||||||
ui_char_password = new QLineEdit(ui_char_select_background);
|
ui_char_password = new QLineEdit(ui_char_select_background);
|
||||||
|
@ -978,9 +978,6 @@ void Courtroom::set_widgets()
|
|||||||
set_size_and_pos(ui_sfx_slider, "sfx_slider");
|
set_size_and_pos(ui_sfx_slider, "sfx_slider");
|
||||||
set_size_and_pos(ui_blip_slider, "blip_slider");
|
set_size_and_pos(ui_blip_slider, "blip_slider");
|
||||||
|
|
||||||
ui_selector->set_image("char_selector");
|
|
||||||
ui_selector->hide();
|
|
||||||
|
|
||||||
set_size_and_pos(ui_back_to_lobby, "back_to_lobby");
|
set_size_and_pos(ui_back_to_lobby, "back_to_lobby");
|
||||||
ui_back_to_lobby->setText(tr("Back to Lobby"));
|
ui_back_to_lobby->setText(tr("Back to Lobby"));
|
||||||
ui_back_to_lobby->setToolTip(tr("Return back to the server list."));
|
ui_back_to_lobby->setToolTip(tr("Return back to the server list."));
|
||||||
|
Loading…
Reference in New Issue
Block a user