aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he
diff options
context:
space:
mode:
authorEugene Sandulenko2019-10-27 07:48:06 +0000
committerEugene Sandulenko2019-10-27 19:52:26 +0000
commite6d9148061cb863e642ab4b5ce129ee429864adb (patch)
treee01426b91868a97ddc49e3b39ae3aeb9ee3d48f9 /engines/scumm/he
parentd3cdcf05c7ba8f7435ea04c55f752697be197679 (diff)
downloadscummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.tar.gz
scummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.tar.bz2
scummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.zip
SCUMM HE: Moonbase Commander: simplify looping over network packets
Diffstat (limited to 'engines/scumm/he')
-rw-r--r--engines/scumm/he/moonbase/net_main.cpp22
-rw-r--r--engines/scumm/he/moonbase/net_main.h3
2 files changed, 10 insertions, 15 deletions
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 42e475075d..cd25a2291e 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -449,11 +449,7 @@ void Net::getProviderName(int providerIndex, char *buffer, int length) {
warning("STUB: Net::getProviderName(%d, \"%s\", %d)", providerIndex, buffer, length); // PN_GetProviderName
}
-int Net::getMessageCount() {
- return 0; // FIXME
-}
-
-void Net::remoteReceiveData() {
+bool Net::remoteReceiveData() {
Networking::PostRequest rq(_serverprefix + "/getpacket",
new Common::Callback<Net, Common::JSONValue *>(this, &Net::remoteReceiveDataCallback),
new Common::Callback<Net, Networking::ErrorResponse>(this, &Net::remoteReceiveDataErrorCallback));
@@ -470,8 +466,8 @@ void Net::remoteReceiveData() {
g_system->delayMillis(5);
}
- if (_packetsize == -1)
- return;
+ if (!_packetsize)
+ return false;
Common::MemoryReadStream pack(_packbuffer, _packetsize);
@@ -544,16 +540,18 @@ void Net::remoteReceiveData() {
default:
warning("Moonbase: Received unknown network command %d", type);
}
+
+ return true;
}
void Net::remoteReceiveDataCallback(Common::JSONValue *response) {
debug(1, "remoteReceiveData: Got: '%s'", response->stringify().c_str());
- if (!response->child("size")->asIntegerNumber())
- return;
-
_packetsize = response->child("size")->asIntegerNumber();
+ if (!_packetsize)
+ return;
+
strncpy((char *)_packbuffer, response->child("data")->asString().c_str(), _packetsize);
}
@@ -569,9 +567,7 @@ void Net::unpackageArray(int arrayId, byte *data, int len) {
void Net::doNetworkOnceAFrame(int msecs) {
uint32 tickCount = g_system->getMillis() + msecs;
- while (getMessageCount()) {
- remoteReceiveData();
-
+ while (remoteReceiveData()) {
if (tickCount >= g_system->getMillis()) {
break;
}
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 0f6d547754..3c3acde129 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -68,8 +68,7 @@ public:
void unpackageArray(int arrayId, byte *data, int len);
private:
- int getMessageCount();
- void remoteReceiveData();
+ bool remoteReceiveData();
void createSessionCallback(Common::JSONValue *response);
void createSessionErrorCallback(Networking::ErrorResponse error);