diff --git a/example.cpp b/example.cpp index 51ffbe3..f3d3d7b 100644 --- a/example.cpp +++ b/example.cpp @@ -50,6 +50,7 @@ private: #endif +#include #include int main(int argc, char *argv[]) { @@ -64,13 +65,14 @@ int main(int argc, char *argv[]) sync::Track &track = syncDevice->getTrack("test"); -// timer.play(); + timer.play(); while (1) { float row = timer.getRow(); if (!syncDevice->update(row)) break; - printf("%2.2f: %2.2f \r", row, track.getValue(row)); + printf("%2.2f: %2.2f \n", row, track.getValue(row)); + Sleep(1000); } return 0; diff --git a/sync/device_client.cpp b/sync/device_client.cpp index 230d283..1ffbba8 100644 --- a/sync/device_client.cpp +++ b/sync/device_client.cpp @@ -7,17 +7,24 @@ using namespace sync; class ClientDevice : public Device { public: - ClientDevice(SOCKET serverSocket, Timer &timer) : serverSocket(serverSocket), timer(timer) {} + ClientDevice(const std::string &baseName, SOCKET serverSocket, Timer &timer) : + baseName(baseName), + timer(timer), + serverSocket(serverSocket) + { + } + ~ClientDevice(); - + Track &getTrack(const std::string &trackName); bool update(float row); private: + const std::string &baseName; SyncData syncData; - SOCKET serverSocket; - Timer &timer; + + SOCKET serverSocket; }; ClientDevice::~ClientDevice() @@ -45,7 +52,6 @@ Track &ClientDevice::getTrack(const std::string &trackName) send(serverSocket, name_str, name_len, 0); sync::Track *track = new sync::Track(); - /* todo: fill in based on the response */ syncData.actualTracks.push_back(track); syncData.tracks[trackName] = clientIndex; diff --git a/sync/device_player.cpp b/sync/device_player.cpp new file mode 100644 index 0000000..fded695 --- /dev/null +++ b/sync/device_player.cpp @@ -0,0 +1,55 @@ +#include "device.h" +#include "../network.h" +#include "../syncdata.h" + +using namespace sync; + +class PlayerDevice : public Device +{ +public: + PlayerDevice(const std::string &baseName, Timer &timer) : + baseName(baseName), + timer(timer) + { + } + + ~PlayerDevice(); + + Track &getTrack(const std::string &trackName); + bool update(float row); + +private: + const std::string &baseName; + SyncData syncData; + Timer &timer; +}; + +PlayerDevice::~PlayerDevice() { } + +Track &PlayerDevice::getTrack(const std::string &trackName) +{ + SyncData::TrackContainer::iterator iter = syncData.tracks.find(trackName); + if (iter != syncData.tracks.end()) return *syncData.actualTracks[iter->second]; + + sync::Track *track = new sync::Track(); + + // TODO: load data from file + track->setKeyFrame(0, 10.0f); + track->setKeyFrame(10, 0.0f); + + size_t index = syncData.actualTracks.size(); + syncData.actualTracks.push_back(track); + syncData.tracks[trackName] = index; + return *track; +} + +bool PlayerDevice::update(float row) +{ + return true; +} + +Device *sync::createDevice(const std::string &baseName, Timer &timer) +{ + Device *device = new PlayerDevice(baseName, timer); + return device; +} diff --git a/sync/track.h b/sync/track.h index e24f05e..0bd748e 100644 --- a/sync/track.h +++ b/sync/track.h @@ -23,7 +23,6 @@ namespace sync void deleteKeyFrame(size_t row); void setKeyFrame(size_t row, const KeyFrame &keyFrame); - void setKeyFrame(size_t row, const float value); // private: