summaryrefslogtreecommitdiffstats
path: root/kolf/slope.h
diff options
context:
space:
mode:
Diffstat (limited to 'kolf/slope.h')
-rw-r--r--kolf/slope.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/kolf/slope.h b/kolf/slope.h
new file mode 100644
index 00000000..d638354f
--- /dev/null
+++ b/kolf/slope.h
@@ -0,0 +1,98 @@
+#ifndef SLOPE_H
+#define SLOPE_H
+
+#include <kimageeffect.h>
+
+#include "game.h"
+
+class Slope;
+class SlopeConfig : public Config
+{
+ Q_OBJECT
+
+public:
+ SlopeConfig(Slope *slope, QWidget *parent);
+
+private slots:
+ void setGradient(const QString &text);
+ void setReversed(bool);
+ void setStuckOnGround(bool);
+ void gradeChanged(double);
+
+private:
+ Slope *slope;
+};
+
+class Slope : public QCanvasRectangle, public CanvasItem, public RectItem
+{
+public:
+ Slope(QRect rect, QCanvas *canvas);
+ virtual void aboutToDie();
+ virtual int rtti() const { return 1031; }
+
+ virtual void showInfo();
+ virtual void hideInfo();
+ virtual void editModeChanged(bool changed);
+ virtual bool canBeMovedByOthers() const { return !stuckOnGround; }
+ virtual QPtrList<QCanvasItem> moveableItems() const;
+ virtual Config *config(QWidget *parent) { return new SlopeConfig(this, parent); }
+ void setSize(int, int);
+ virtual void newSize(int width, int height);
+
+ virtual void moveBy(double dx, double dy);
+
+ virtual void draw(QPainter &painter);
+ virtual QPointArray areaPoints() const;
+
+ void setGradient(QString text);
+ KImageEffect::GradientType curType() const { return type; }
+ void setGrade(double grade);
+
+ double curGrade() const { return grade; }
+ void setColor(QColor color) { this->color = color; updatePixmap(); }
+ void setReversed(bool reversed) { this->reversed = reversed; updatePixmap(); }
+ bool isReversed() const { return reversed; }
+
+ bool isStuckOnGround() const { return stuckOnGround; }
+ void setStuckOnGround(bool yes) { stuckOnGround = yes; updateZ(); }
+
+ virtual void load(KConfig *cfg);
+ virtual void save(KConfig *cfg);
+
+ virtual bool collision(Ball *ball, long int id);
+ virtual bool terrainCollisions() const;
+
+ QMap<KImageEffect::GradientType, QString> gradientI18nKeys;
+ QMap<KImageEffect::GradientType, QString> gradientKeys;
+
+ virtual void updateZ(QCanvasRectangle *vStrut = 0);
+
+ void moveArrow();
+
+private:
+ KImageEffect::GradientType type;
+ inline void setType(KImageEffect::GradientType type);
+ bool showingInfo;
+ double grade;
+ bool reversed;
+ QColor color;
+ QPixmap pixmap;
+ void updatePixmap();
+ bool stuckOnGround;
+ QPixmap grass;
+
+ void clearArrows();
+
+ QPtrList<Arrow> arrows;
+ QCanvasText *text;
+ RectPoint *point;
+};
+
+class SlopeObj : public Object
+{
+public:
+ SlopeObj() { m_name = i18n("Slope"); m__name = "slope"; }
+ virtual QCanvasItem *newObject(QCanvas *canvas) { return new Slope(QRect(0, 0, 40, 40), canvas); }
+};
+
+#endif