yes, remote-stuff works! \o/
This commit is contained in:
parent
4927f902d3
commit
59d30073f9
13
example.cpp
13
example.cpp
@ -35,17 +35,18 @@ public:
|
|||||||
void play() { paused = false; }
|
void play() { paused = false; }
|
||||||
|
|
||||||
float getRow()
|
float getRow()
|
||||||
{
|
{
|
||||||
if (!paused) return row++;
|
float ret = row;
|
||||||
else return row;
|
if (!paused) row += 0.5f;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRow(float row) { row = int(floor(row)); }
|
void setRow(float row) { this->row = int(floor(row)); }
|
||||||
bool isPlaying() { return !paused; }
|
bool isPlaying() { return !paused; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool paused;
|
bool paused;
|
||||||
int row;
|
float row;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -68,7 +69,7 @@ int main(int argc, char *argv[])
|
|||||||
timer.play();
|
timer.play();
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
float row = float(timer.getRow()) / 10;
|
float row = float(timer.getRow());
|
||||||
if (!syncDevice->update(row)) break;
|
if (!syncDevice->update(row)) break;
|
||||||
|
|
||||||
printf("%2.2f: %2.2f \n", row, track.getValue(row));
|
printf("%2.2f: %2.2f \n", row, track.getValue(row));
|
||||||
|
|||||||
@ -12,10 +12,18 @@ SOCKET serverConnect(struct sockaddr_in *addr);
|
|||||||
bool pollRead(SOCKET socket);
|
bool pollRead(SOCKET socket);
|
||||||
|
|
||||||
enum RemoteCommand {
|
enum RemoteCommand {
|
||||||
|
// server -> client
|
||||||
SET_KEY = 0,
|
SET_KEY = 0,
|
||||||
DELETE_KEY = 1,
|
DELETE_KEY = 1,
|
||||||
|
|
||||||
|
// client -> server
|
||||||
GET_TRACK = 2,
|
GET_TRACK = 2,
|
||||||
|
|
||||||
|
// client -> server, server -> client
|
||||||
SET_ROW = 3,
|
SET_ROW = 3,
|
||||||
|
|
||||||
|
// server -> client
|
||||||
|
PAUSE = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* NETWORK_H */
|
#endif /* NETWORK_H */
|
||||||
|
|||||||
@ -102,6 +102,25 @@ bool ClientDevice::update(float row)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SET_ROW:
|
||||||
|
{
|
||||||
|
int row;
|
||||||
|
recv(serverSocket, (char*)&row, sizeof(int), 0);
|
||||||
|
printf("set row: %d\n", row);
|
||||||
|
timer.setRow(float(row));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PAUSE:
|
||||||
|
{
|
||||||
|
char flag;
|
||||||
|
recv(serverSocket, (char*)&flag, 1, 0);
|
||||||
|
printf("pause: %d\n", flag);
|
||||||
|
if (flag == 0) timer.play();
|
||||||
|
else timer.pause();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("unknown cmd: %02x\n", cmd);
|
printf("unknown cmd: %02x\n", cmd);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
class SyncEditData : public sync::Data
|
class SyncEditData : public sync::Data
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SyncEditData() : sync::Data() {}
|
SyncEditData() : sync::Data(), clientPaused(true) {}
|
||||||
|
|
||||||
void sendSetKeyCommand(int track, int row, const sync::Track::KeyFrame &key)
|
void sendSetKeyCommand(int track, int row, const sync::Track::KeyFrame &key)
|
||||||
{
|
{
|
||||||
@ -34,7 +34,26 @@ public:
|
|||||||
send(clientSocket, (char*)&track, sizeof(int), 0);
|
send(clientSocket, (char*)&track, sizeof(int), 0);
|
||||||
send(clientSocket, (char*)&row, sizeof(int), 0);
|
send(clientSocket, (char*)&row, sizeof(int), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sendSetRowCommand(int row)
|
||||||
|
{
|
||||||
|
if (INVALID_SOCKET == clientSocket) return;
|
||||||
|
|
||||||
|
unsigned char cmd = SET_ROW;
|
||||||
|
send(clientSocket, (char*)&cmd, 1, 0);
|
||||||
|
send(clientSocket, (char*)&row, sizeof(int), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendPauseCommand(bool pause)
|
||||||
|
{
|
||||||
|
unsigned char cmd = PAUSE;
|
||||||
|
send(clientSocket, (char*)&cmd, 1, 0);
|
||||||
|
unsigned char flag = pause;
|
||||||
|
send(clientSocket, (char*)&flag, 1, 0);
|
||||||
|
clientPaused = pause;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Command
|
class Command
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -227,6 +246,7 @@ public:
|
|||||||
SOCKET clientSocket;
|
SOCKET clientSocket;
|
||||||
// private:
|
// private:
|
||||||
std::map<size_t, size_t> clientRemap;
|
std::map<size_t, size_t> clientRemap;
|
||||||
|
bool clientPaused;
|
||||||
|
|
||||||
std::stack<Command*> undoStack;
|
std::stack<Command*> undoStack;
|
||||||
std::stack<Command*> redoStack;
|
std::stack<Command*> redoStack;
|
||||||
|
|||||||
@ -379,6 +379,8 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
puts("connected.");
|
puts("connected.");
|
||||||
syncData.clientSocket = clientSocket;
|
syncData.clientSocket = clientSocket;
|
||||||
syncData.clientRemap.clear();
|
syncData.clientRemap.clear();
|
||||||
|
syncData.sendPauseCommand(true);
|
||||||
|
syncData.sendSetRowCommand(trackView->getEditRow());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -514,6 +514,7 @@ void TrackView::setEditRow(int newEditRow)
|
|||||||
selectStartRow = selectStopRow = editRow;
|
selectStartRow = selectStopRow = editRow;
|
||||||
selectStartTrack = selectStopTrack = editTrack;
|
selectStartTrack = selectStopTrack = editTrack;
|
||||||
}
|
}
|
||||||
|
getSyncData()->sendSetRowCommand(editRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidateRow(oldEditRow);
|
invalidateRow(oldEditRow);
|
||||||
@ -734,7 +735,7 @@ void TrackView::editBiasValue(float amount)
|
|||||||
|
|
||||||
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||||
{
|
{
|
||||||
if (editString.empty())
|
if (editString.empty() && getSyncData()->clientPaused)
|
||||||
{
|
{
|
||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
{
|
{
|
||||||
@ -810,6 +811,9 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
MessageBeep(0);
|
MessageBeep(0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case VK_SPACE:
|
||||||
|
getSyncData()->sendPauseCommand( !getSyncData()->clientPaused );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ public:
|
|||||||
void editBiasValue(float amount);
|
void editBiasValue(float amount);
|
||||||
|
|
||||||
void setEditRow(int newEditRow);
|
void setEditRow(int newEditRow);
|
||||||
|
int getEditRow() { return editRow; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// some nasty hackery to forward the window messages
|
// some nasty hackery to forward the window messages
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user