summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/gui/setup.cpp4
-rw-r--r--src/gui/setup_video.cpp57
-rw-r--r--src/gui/setup_video.h4
4 files changed, 65 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 44f04ba1..2bd44078 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
* src/particle.cpp: Changed the way particle emitter skip is handled to
make linear and circular emitters work with particleEmitterSkip enabled.
+ * src/gui/setup.cpp, src/gui/setup_video.cpp, src/gui/setup_video.h: Added
+ slider for controlling particleEmitterSkip (overall quality of particle
+ effects) to video setup menu.
2008-05-28 Dennis Friis <peavey@placid.dk>
diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp
index 54bf01f4..c895d166 100644
--- a/src/gui/setup.cpp
+++ b/src/gui/setup.cpp
@@ -49,7 +49,7 @@ Setup::Setup():
{
setCloseButton(true);
int width = 310;
- int height = 245;
+ int height = 265;
setContentSize(width, height);
const char *buttonNames[] = {
@@ -64,7 +64,7 @@ Setup::Setup():
}
TabbedContainer *panel = new TabbedContainer();
- panel->setDimension(gcn::Rectangle(5, 5, width, 205));
+ panel->setDimension(gcn::Rectangle(5, 5, width, height - 40));
panel->setOpaque(false);
SetupTab *tab;
diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp
index d0c3d5e3..33d9ad73 100644
--- a/src/gui/setup_video.cpp
+++ b/src/gui/setup_video.cpp
@@ -43,6 +43,7 @@
#include "../graphics.h"
#include "../log.h"
#include "../main.h"
+#include "../particle.h"
#include "../utils/tostring.h"
@@ -124,7 +125,10 @@ Setup_Video::Setup_Video():
mScrollRadiusField(new TextField()),
mOverlayDetail((int) config.getValue("OverlayDetail", 2)),
mOverlayDetailSlider(new Slider(0, 2)),
- mOverlayDetailField(new gcn::Label(""))
+ mOverlayDetailField(new gcn::Label("")),
+ mParticleDetail(3 - (int) config.getValue("particleEmitterSkip", 0)),
+ mParticleDetailSlider(new Slider(0, 3)),
+ mParticleDetailField(new gcn::Label(""))
{
setOpaque(false);
@@ -168,6 +172,8 @@ Setup_Video::Setup_Video():
mScrollLazinessField->setActionEventId("scrolllazinessfield");
mOverlayDetailSlider->setActionEventId("overlaydetailslider");
mOverlayDetailField->setActionEventId("overlaydetailfield");
+ mParticleDetailSlider->setActionEventId("particledetailslider");
+ mParticleDetailField->setActionEventId("particledetailfield");
mCustomCursorCheckBox->addActionListener(this);
mAlphaSlider->addActionListener(this);
@@ -180,6 +186,8 @@ Setup_Video::Setup_Video():
mScrollLazinessField->addKeyListener(this);
mOverlayDetailSlider->addActionListener(this);
mOverlayDetailField->addKeyListener(this);
+ mParticleDetailSlider->addActionListener(this);
+ mParticleDetailField->addKeyListener(this);
mScrollRadiusSlider->setDimension(gcn::Rectangle(10, 120, 75, 10));
gcn::Label *scrollRadiusLabel = new gcn::Label("Scroll radius");
@@ -216,6 +224,28 @@ Setup_Video::Setup_Video():
}
mOverlayDetailSlider->setValue(mOverlayDetail);
+ mParticleDetailSlider->setDimension(gcn::Rectangle(10, 180, 75, 10));
+ gcn::Label *particleDetailLabel = new gcn::Label("Particle Detail");
+ particleDetailLabel->setPosition(90, 180);
+ mParticleDetailField->setPosition(180, 180);
+ mParticleDetailField->setWidth(60);
+ switch (mParticleDetail)
+ {
+ case 0:
+ mParticleDetailField->setCaption("low");
+ break;
+ case 1:
+ mParticleDetailField->setCaption("medium");
+ break;
+ case 2:
+ mParticleDetailField->setCaption("high");
+ break;
+ case 3:
+ mParticleDetailField->setCaption("max");
+ break;
+ }
+ mParticleDetailSlider->setValue(mParticleDetail);
+
add(scrollArea);
add(mFsCheckBox);
add(mOpenGLCheckBox);
@@ -234,6 +264,9 @@ Setup_Video::Setup_Video():
add(mOverlayDetailSlider);
add(overlayDetailLabel);
add(mOverlayDetailField);
+ add(mParticleDetailSlider);
+ add(particleDetailLabel);
+ add(mParticleDetailField);
}
Setup_Video::~Setup_Video()
@@ -319,6 +352,7 @@ void Setup_Video::cancel()
mCustomCursorCheckBox->setSelected(mCustomCursorEnabled);
mAlphaSlider->setValue(mOpacity);
mOverlayDetailSlider->setValue(mOverlayDetail);
+ mParticleDetailSlider->setValue(mParticleDetail);
mScrollRadiusField->setText(toString(mOriginalScrollRadius));
mScrollLazinessField->setText(toString(mOriginalScrollLaziness));
@@ -376,6 +410,27 @@ void Setup_Video::action(const gcn::ActionEvent &event)
}
config.setValue("OverlayDetail", val);
}
+ else if (event.getId() == "particledetailslider")
+ {
+ int val = (int) mParticleDetailSlider->getValue();
+ switch (val)
+ {
+ case 0:
+ mParticleDetailField->setCaption("low");
+ break;
+ case 1:
+ mParticleDetailField->setCaption("medium");
+ break;
+ case 2:
+ mParticleDetailField->setCaption("high");
+ break;
+ case 3:
+ mParticleDetailField->setCaption("max");
+ break;
+ }
+ config.setValue("particleEmitterSkip", 3 - val);
+ Particle::emitterSkip = 4 - val;
+ }
else if (event.getId() == "fpslimitcheckbox")
{
if (mFpsCheckBox->isSelected())
diff --git a/src/gui/setup_video.h b/src/gui/setup_video.h
index 095fdbd6..a0701a3c 100644
--- a/src/gui/setup_video.h
+++ b/src/gui/setup_video.h
@@ -78,6 +78,10 @@ class Setup_Video : public SetupTab, public gcn::ActionListener,
gcn::Slider *mOverlayDetailSlider;
gcn::Label *mOverlayDetailField;
+ int mParticleDetail;
+ gcn::Slider *mParticleDetailSlider;
+ gcn::Label *mParticleDetailField;
+
void
updateSliders(bool originalValues);