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; }
|
||||
|
||||
float getRow()
|
||||
{
|
||||
if (!paused) return row++;
|
||||
else return row;
|
||||
{
|
||||
float ret = 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; }
|
||||
|
||||
private:
|
||||
bool paused;
|
||||
int row;
|
||||
float row;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -68,7 +69,7 @@ int main(int argc, char *argv[])
|
||||
timer.play();
|
||||
while (1)
|
||||
{
|
||||
float row = float(timer.getRow()) / 10;
|
||||
float row = float(timer.getRow());
|
||||
if (!syncDevice->update(row)) break;
|
||||
|
||||
printf("%2.2f: %2.2f \n", row, track.getValue(row));
|
||||
|
||||
@ -12,10 +12,18 @@ SOCKET serverConnect(struct sockaddr_in *addr);
|
||||
bool pollRead(SOCKET socket);
|
||||
|
||||
enum RemoteCommand {
|
||||
// server -> client
|
||||
SET_KEY = 0,
|
||||
DELETE_KEY = 1,
|
||||
|
||||
// client -> server
|
||||
GET_TRACK = 2,
|
||||
|
||||
// client -> server, server -> client
|
||||
SET_ROW = 3,
|
||||
|
||||
// server -> client
|
||||
PAUSE = 4,
|
||||
};
|
||||
|
||||
#endif /* NETWORK_H */
|
||||
|
||||
@ -102,6 +102,25 @@ bool ClientDevice::update(float row)
|
||||
}
|
||||
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:
|
||||
printf("unknown cmd: %02x\n", cmd);
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
class SyncEditData : public sync::Data
|
||||
{
|
||||
public:
|
||||
SyncEditData() : sync::Data() {}
|
||||
SyncEditData() : sync::Data(), clientPaused(true) {}
|
||||
|
||||
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*)&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
|
||||
{
|
||||
public:
|
||||
@ -227,6 +246,7 @@ public:
|
||||
SOCKET clientSocket;
|
||||
// private:
|
||||
std::map<size_t, size_t> clientRemap;
|
||||
bool clientPaused;
|
||||
|
||||
std::stack<Command*> undoStack;
|
||||
std::stack<Command*> redoStack;
|
||||
|
||||
@ -379,6 +379,8 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
puts("connected.");
|
||||
syncData.clientSocket = clientSocket;
|
||||
syncData.clientRemap.clear();
|
||||
syncData.sendPauseCommand(true);
|
||||
syncData.sendSetRowCommand(trackView->getEditRow());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -514,6 +514,7 @@ void TrackView::setEditRow(int newEditRow)
|
||||
selectStartRow = selectStopRow = editRow;
|
||||
selectStartTrack = selectStopTrack = editTrack;
|
||||
}
|
||||
getSyncData()->sendSetRowCommand(editRow);
|
||||
}
|
||||
|
||||
invalidateRow(oldEditRow);
|
||||
@ -734,7 +735,7 @@ void TrackView::editBiasValue(float amount)
|
||||
|
||||
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||
{
|
||||
if (editString.empty())
|
||||
if (editString.empty() && getSyncData()->clientPaused)
|
||||
{
|
||||
switch (keyCode)
|
||||
{
|
||||
@ -810,6 +811,9 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||
MessageBeep(0);
|
||||
}
|
||||
break;
|
||||
case VK_SPACE:
|
||||
getSyncData()->sendPauseCommand( !getSyncData()->clientPaused );
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ public:
|
||||
void editBiasValue(float amount);
|
||||
|
||||
void setEditRow(int newEditRow);
|
||||
int getEditRow() { return editRow; }
|
||||
|
||||
private:
|
||||
// some nasty hackery to forward the window messages
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user