mirror of
https://github.com/edubart/otclient.git
synced 2025-11-05 21:16:24 +01:00
Fix particles and some fun in the background LOL
This commit is contained in:
@@ -23,27 +23,49 @@
|
||||
#include "uiparticles.h"
|
||||
#include <framework/graphics/particlemanager.h>
|
||||
|
||||
UIParticles::UIParticles()
|
||||
{
|
||||
m_referencePos = PointF(-1,-1);
|
||||
}
|
||||
|
||||
void UIParticles::drawSelf(Fw::DrawPane drawPane)
|
||||
{
|
||||
if((drawPane & Fw::ForegroundPane) == 0)
|
||||
return;
|
||||
if(drawPane & Fw::ForegroundPane) {
|
||||
if(drawPane != Fw::BothPanes) {
|
||||
glDisable(GL_BLEND);
|
||||
g_painter->setColor(Color::alpha);
|
||||
g_painter->drawFilledRect(m_rect);
|
||||
glEnable(GL_BLEND);
|
||||
}
|
||||
}
|
||||
|
||||
for(auto it = m_effects.begin(), end = m_effects.end(); it != end; ++it)
|
||||
(*it)->render();
|
||||
if(drawPane & Fw::BackgroundPane) {
|
||||
UIWidget::drawSelf(Fw::ForegroundPane);
|
||||
g_painter->saveAndResetState();
|
||||
g_painter->setColor(Color::white);
|
||||
g_painter->setClipRect(getPaddingRect());
|
||||
|
||||
if(m_referencePos.x < 0 && m_referencePos.y < 0)
|
||||
g_painter->translate(m_rect.center());
|
||||
else
|
||||
g_painter->translate(m_rect.x() + m_referencePos.x * m_rect.width(), m_rect.y() + m_referencePos.y * m_rect.height());
|
||||
|
||||
for(auto it = m_effects.begin(), end = m_effects.end(); it != end; ++it)
|
||||
(*it)->render();
|
||||
g_painter->restoreSavedState();
|
||||
}
|
||||
}
|
||||
|
||||
void UIParticles::onStyleApply(const std::string& styleName, const OTMLNodePtr& styleNode)
|
||||
{
|
||||
UIWidget::onStyleApply(styleName, styleNode);
|
||||
|
||||
/*for(const OTMLNodePtr& node : styleNode->children()) {
|
||||
if(node->tag() == "reference")
|
||||
setItemId(node->value<int>());
|
||||
else if(node->tag() == "item-count")
|
||||
setItemCount(node->value<int>());
|
||||
else if(node->tag() == "virtual")
|
||||
setVirtual(node->value<bool>());
|
||||
}*/
|
||||
for(const OTMLNodePtr& node : styleNode->children()) {
|
||||
if(node->tag() == "effect")
|
||||
addEffect(node->value());
|
||||
else if(node->tag() == "reference-pos")
|
||||
setReferencePos(node->value<PointF>());
|
||||
}
|
||||
}
|
||||
|
||||
void UIParticles::addEffect(const std::string& name)
|
||||
|
||||
@@ -29,14 +29,20 @@
|
||||
class UIParticles : public UIWidget
|
||||
{
|
||||
public:
|
||||
UIParticles();
|
||||
|
||||
void drawSelf(Fw::DrawPane drawPane);
|
||||
|
||||
void addEffect(const std::string& name);
|
||||
|
||||
void onStyleApply(const std::string& styleName, const OTMLNodePtr& styleNode);
|
||||
|
||||
void setReferencePos(const PointF& point) { m_referencePos = point; }
|
||||
PointF getReferencePos() { return m_referencePos; }
|
||||
|
||||
private:
|
||||
std::vector<ParticleEffectPtr> m_effects;
|
||||
PointF m_referencePos;
|
||||
};
|
||||
|
||||
#endif // UIPARTICLES_H
|
||||
#endif
|
||||
|
||||
@@ -167,7 +167,8 @@ void UIWidget::drawImage(const Rect& screenCoords)
|
||||
}
|
||||
}
|
||||
|
||||
m_imageTexture->setSmooth(m_imageSmooth);
|
||||
// smooth is now enabled by default for all textures
|
||||
//m_imageTexture->setSmooth(m_imageSmooth);
|
||||
|
||||
g_painter->setColor(m_imageColor);
|
||||
g_painter->drawTextureCoords(m_imageCoordsBuffer, m_imageTexture);
|
||||
|
||||
Reference in New Issue
Block a user