X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FAnimation.cc;h=477997037230b125635f28cf4980d8ffa3d3cc3a;hp=c694aecc44b0b3ef8df581c0a85d0efa8ac17f5e;hb=e973a129b5b83b628ba3f09e8c95682fc74080cd;hpb=bffc879fc8ee8167bb123310d39fad4e2f426ffd diff --git a/src/Animation.cc b/src/Animation.cc index c694aec..4779970 100644 --- a/src/Animation.cc +++ b/src/Animation.cc @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include @@ -47,7 +47,7 @@ class Animation::Impl { - friend class Animation; +public: /** * Contains "global" animation data for the various animations which get @@ -55,10 +55,9 @@ class Animation::Impl * which wants to use these loaded sequences. */ - class Data : public Mf::Library + class Data : public Mf::Manager { - friend class Impl; - friend class Mf::Library; + public: /** * A frame of an animation sequence. A frame is merely an index which @@ -68,7 +67,7 @@ class Animation::Impl class Frame { - friend class Impl; + public: unsigned mIndex; ///< Frame index. Mf::Scalar mDuration; ///< Frame duration. @@ -78,7 +77,7 @@ class Animation::Impl * frame map which is probably loaded within an animation file. */ - Frame(Mf::Script& script, Mf::Script::Value table) : + Frame(Mf::Script& script, Mf::Script::Slot table) : mIndex(0), mDuration(1.0) { @@ -98,9 +97,9 @@ class Animation::Impl * that they should be played. */ - struct Sequence + class Sequence { - friend class Impl; + public: std::vector mFrames; ///< List of frames. Mf::Scalar mDelay; ///< Scale frame durations. @@ -114,7 +113,7 @@ class Animation::Impl * constructor which loads each individual frame. */ - Sequence(Mf::Script& script, Mf::Script::Value table) : + Sequence(Mf::Script& script, Mf::Script::Slot table) : mDelay(0.0), mLoop(true) { @@ -133,10 +132,10 @@ class Animation::Impl // TODO - sequence class/type not yet implemented table.pushField("frames"); - Mf::Script::Value frameTable = script.getTop(); + Mf::Script::Slot frameTable = script.getTop(); if (frameTable.isTable()) { - Mf::Script::Value top = script[-1]; + Mf::Script::Slot top = script[-1]; int index = 1; for (;;) @@ -161,32 +160,32 @@ class Animation::Impl * individual sequence. */ - void loadFromFile() + void init(const std::string& name) { Mf::Script script; - std::string filePath = Animation::getPath(getName()); + std::string filePath = Animation::getPath(name); - script.importStandardLibraries(); - importLogScript(script); + script.importBaseLibrary(); + importLogFunctions(script); importAnimationBindings(script); if (script.doFile(filePath) != Mf::Script::SUCCESS) { std::string str; script[-1].get(str); - Mf::logScript("%s", str.c_str()); + Mf::logWarning(str); } } int defineSequence(Mf::Script& script) { - Mf::Script::Value name = script[1].requireString(); - Mf::Script::Value table = script[2].requireTable(); + Mf::Script::Slot name = script[1].requireString(); + Mf::Script::Slot table = script[2].requireTable(); std::string nameStr; name.get(nameStr); - sequences.insert(std::pair(nameStr, + mSequences.insert(std::pair(nameStr, Sequence(script, table))); return 0; @@ -208,18 +207,7 @@ class Animation::Impl } - /** - * Construction is initialization. The animation class data container - * registers itself as a mippleton and then loads the animation data. - */ - - explicit Data(const std::string& name) : - Mf::Library(name) - { - loadFromFile(); - } - - std::map sequences; ///< List of sequences. + std::map mSequences; ///< List of sequences. }; @@ -246,9 +234,9 @@ class Animation::Impl { std::map::iterator it; - it = mData->sequences.find(name); + it = mData->mSequences.find(name); - if (it != mData->sequences.end()) + if (it != mData->mSequences.end()) { mCurrentSequence = &(*it).second; mFrameCounter = 0;