]> git.tdb.fi Git - libs/demoscene.git/blobdiff - source/action.h
Framework for loading sequences from files
[libs/demoscene.git] / source / action.h
index 998885452d609b94ca2a991caaae8223344b96d3..f43d4e1b2110f63138a9bd7ddc9fee46035a297b 100644 (file)
@@ -1,13 +1,28 @@
 #ifndef MSP_DEMOSCENE_ACTION_H_
 #define MSP_DEMOSCENE_ACTION_H_
 
+#include <msp/datafile/objectloader.h>
+
+class Demo;
+
 class Action
 {
+public:
+       class Loader: public Msp::DataFile::ObjectLoader<Action>
+       {
+       protected:
+               Demo &demo;
+
+               Loader(Action &, Demo &);
+       };
+
 protected:
        Action() { }
 public:
        virtual ~Action() { }
 
+       virtual void validate() const = 0;
+
        virtual void start(float, float) { }
        virtual void beat(int) { }
        virtual void tick(float, float) { }
@@ -17,11 +32,17 @@ public:
 class InterpolationAction: public Action
 {
 protected:
-       bool hermite;
+       enum Mode
+       {
+               LINEAR,
+               HERMITE
+       };
+
+       Mode mode;
        float start_beat;
        float duration;
 
-       InterpolationAction(bool = false);
+       InterpolationAction(Mode = LINEAR);
 
 public:
        virtual void start(float, float);