summaryrefslogtreecommitdiffstats
path: root/kolf/floater.h
diff options
context:
space:
mode:
Diffstat (limited to 'kolf/floater.h')
-rw-r--r--kolf/floater.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/kolf/floater.h b/kolf/floater.h
new file mode 100644
index 00000000..486f3bc0
--- /dev/null
+++ b/kolf/floater.h
@@ -0,0 +1,81 @@
+#ifndef FLOATER_H
+#define FLOATER_H
+
+#include "game.h"
+
+class Floater;
+class FloaterConfig : public BridgeConfig
+{
+ Q_OBJECT
+
+public:
+ FloaterConfig(Floater *floater, QWidget *parent);
+
+private slots:
+ void speedChanged(int news);
+
+private:
+ Floater *floater;
+};
+
+class FloaterGuide : public Wall
+{
+public:
+ FloaterGuide(Floater *floater, QCanvas *canvas) : Wall(canvas) { this->floater = floater; almostDead = false; }
+ virtual void setPoints(int xa, int ya, int xb, int yb);
+ virtual void moveBy(double dx, double dy);
+ virtual Config *config(QWidget *parent);
+ virtual void aboutToDelete();
+ virtual void aboutToDie();
+
+private:
+ Floater *floater;
+ bool almostDead;
+};
+
+class Floater : public Bridge
+{
+public:
+ Floater(QRect rect, QCanvas *canvas);
+ virtual bool collision(Ball *ball, long int id) { Bridge::collision(ball, id); return false; }
+ virtual void saveState(StateDB *db);
+ virtual void loadState(StateDB *db);
+ virtual void save(KConfig *cfg);
+ virtual void load(KConfig *cfg);
+ virtual bool loadLast() const { return true; }
+ virtual void firstMove(int x, int y);
+ virtual void aboutToSave();
+ virtual void aboutToDie();
+ virtual void savingDone();
+ virtual void setGame(KolfGame *game);
+ virtual void editModeChanged(bool changed);
+ virtual bool moveable() const { return false; }
+ virtual void moveBy(double dx, double dy);
+ virtual Config *config(QWidget *parent) { return new FloaterConfig(this, parent); }
+ virtual QPtrList<QCanvasItem> moveableItems() const;
+ virtual void advance(int phase);
+ void setSpeed(int news);
+ int curSpeed() const { return speed; }
+
+ // called by floaterguide when changed;
+ void reset();
+
+private:
+ int speedfactor;
+ int speed;
+ FloaterGuide *wall;
+ QPoint origin;
+ Vector vector;
+ bool noUpdateZ;
+ bool haventMoved;
+ QPoint firstPoint;
+};
+
+class FloaterObj : public Object
+{
+public:
+ FloaterObj() { m_name = i18n("Floater"); m__name = "floater"; }
+ virtual QCanvasItem *newObject(QCanvas *canvas) { return new Floater(QRect(0, 0, 80, 40), canvas); }
+};
+
+#endif