mirror of
https://github.com/ppeccin/javatari.js.git
synced 2024-06-16 03:27:24 -04:00
NetPlay controls synch strategy improved
This commit is contained in:
parent
7bcee30e74
commit
b47157a1c8
|
@ -270,7 +270,7 @@ jt.DOMConsoleControls = function(room, keyForwardControls) {
|
||||||
|
|
||||||
// Then other controls
|
// Then other controls
|
||||||
if (room.netController)
|
if (room.netController)
|
||||||
room.netController.processLocalControlState(control, press);
|
room.netController.processControlState(control, press);
|
||||||
else
|
else
|
||||||
consoleControlsSocket.controlStateChanged(control, press);
|
consoleControlsSocket.controlStateChanged(control, press);
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,7 @@ jt.DOMConsoleControls = function(room, keyForwardControls) {
|
||||||
|
|
||||||
function processControlValue(control, value) {
|
function processControlValue(control, value) {
|
||||||
if (room.netController)
|
if (room.netController)
|
||||||
room.netController.processLocalControlValue(control, value);
|
room.netController.processControlValue(control, value);
|
||||||
else
|
else
|
||||||
consoleControlsSocket.controlValueChanged(control, value);
|
consoleControlsSocket.controlValueChanged(control, value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ jt.DOMPeripheralControls = function(room) {
|
||||||
|
|
||||||
this.controlActivated = function(control, altPower, secPort) { // Never secPort
|
this.controlActivated = function(control, altPower, secPort) { // Never secPort
|
||||||
// Check for NetPlay blocked controls
|
// Check for NetPlay blocked controls
|
||||||
if (room.netController && !room.netController.processCheckLocalPeripheralControl(control)) return;
|
if (room.netController && !room.netController.processCheckPeripheralControl(control)) return;
|
||||||
|
|
||||||
// All controls are Press-only and repeatable
|
// All controls are Press-only and repeatable
|
||||||
switch(control) {
|
switch(control) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ jt.NetClient = function(room) {
|
||||||
// Client gets clocks from Server at onServerNetUpdate()
|
// Client gets clocks from Server at onServerNetUpdate()
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processLocalControlState = function (control, press) {
|
this.processControlState = function (control, press) {
|
||||||
// Reject controls not available to NetPlay Clients
|
// Reject controls not available to NetPlay Clients
|
||||||
if (disabledControls.has(control))
|
if (disabledControls.has(control))
|
||||||
return room.showOSD("Function not available in NetPlay Client mode", true, true);
|
return room.showOSD("Function not available in NetPlay Client mode", true, true);
|
||||||
|
@ -79,12 +79,12 @@ jt.NetClient = function(room) {
|
||||||
controlsToSend.push((control << 4) | press ); // binary encoded, always < 16000
|
controlsToSend.push((control << 4) | press ); // binary encoded, always < 16000
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processLocalControlValue = function (control, value) {
|
this.processControlValue = function (control, value) {
|
||||||
// Store change to be sent only to Server, do not process locally
|
// Store change to be sent only to Server, do not process locally
|
||||||
controlsToSend.push(control + (value + 10)); // always > 16000
|
controlsToSend.push(control + (value + 10)); // always > 16000
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processCheckLocalPeripheralControl = function (control) {
|
this.processCheckPeripheralControl = function (control) {
|
||||||
// Reject controls not available to NetPlay Clients
|
// Reject controls not available to NetPlay Clients
|
||||||
if (disabledPeripheralControls.has(control)) {
|
if (disabledPeripheralControls.has(control)) {
|
||||||
room.showOSD("Function not available in NetPlay Client mode", true, true);
|
room.showOSD("Function not available in NetPlay Client mode", true, true);
|
||||||
|
|
|
@ -100,7 +100,7 @@ jt.NetServer = function(room) {
|
||||||
atariConsole.videoClockPulseApplyPulldowns(videoPulls);
|
atariConsole.videoClockPulseApplyPulldowns(videoPulls);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processLocalControlState = function (control, press) {
|
this.processControlState = function (control, press) {
|
||||||
consoleControlsSocket.controlStateChanged(control, press);
|
consoleControlsSocket.controlStateChanged(control, press);
|
||||||
|
|
||||||
// Store changes to be sent to Clients
|
// Store changes to be sent to Clients
|
||||||
|
@ -108,14 +108,14 @@ jt.NetServer = function(room) {
|
||||||
controlsToSend.push((control << 4) | press ); // binary encoded, always < 16000
|
controlsToSend.push((control << 4) | press ); // binary encoded, always < 16000
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processLocalControlValue = function (control, value) {
|
this.processControlValue = function (control, value) {
|
||||||
consoleControlsSocket.controlValueChanged(control, value);
|
consoleControlsSocket.controlValueChanged(control, value);
|
||||||
|
|
||||||
// Store changes to be sent to Clients
|
// Store changes to be sent to Clients
|
||||||
controlsToSend.push(control + (value + 10)); // always > 16000
|
controlsToSend.push(control + (value + 10)); // always > 16000
|
||||||
};
|
};
|
||||||
|
|
||||||
this.processCheckLocalPeripheralControl = function (control) {
|
this.processCheckPeripheralControl = function (control) {
|
||||||
// All controls allowed
|
// All controls allowed
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -277,13 +277,13 @@ jt.NetServer = function(room) {
|
||||||
function onClientNetUpdate(netUpdate) {
|
function onClientNetUpdate(netUpdate) {
|
||||||
if (!netUpdate.c) return;
|
if (!netUpdate.c) return;
|
||||||
|
|
||||||
// Apply changes as if they were local controls
|
// Process changes as if they were local controls
|
||||||
for (var i = 0, changes = netUpdate.c, len = changes.length; i < len; ++i) {
|
for (var i = 0, changes = netUpdate.c, len = changes.length; i < len; ++i) {
|
||||||
var change = changes[i];
|
var change = changes[i];
|
||||||
if (change < 16000)
|
if (change < 16000)
|
||||||
self.processLocalControlState(change >> 4, change & 0x01); // binary encoded
|
self.processControlState(change >> 4, change & 0x01); // binary encoded
|
||||||
else
|
else
|
||||||
self.processLocalControlValue(change & ~0x3fff, (change & 0x3fff) - 10);
|
self.processControlValue(change & ~0x3fff, (change & 0x3fff) - 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue