aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he/moonbase
diff options
context:
space:
mode:
authorEugene Sandulenko2019-10-24 18:38:49 +0200
committerEugene Sandulenko2019-10-24 18:38:49 +0200
commit9904732517adccf58a80c41efd88fa543a5c5bee (patch)
tree3a5ad6e1cbf88bbedb4a4729154518af02440144 /engines/scumm/he/moonbase
parentec121da0753259e83bd5219d529a2bdc26ba2d19 (diff)
downloadscummvm-rg350-9904732517adccf58a80c41efd88fa543a5c5bee.tar.gz
scummvm-rg350-9904732517adccf58a80c41efd88fa543a5c5bee.tar.bz2
scummvm-rg350-9904732517adccf58a80c41efd88fa543a5c5bee.zip
SCUMM HE: Initial code for add user functionality
Diffstat (limited to 'engines/scumm/he/moonbase')
-rw-r--r--engines/scumm/he/moonbase/net_main.cpp43
-rw-r--r--engines/scumm/he/moonbase/net_main.h3
2 files changed, 39 insertions, 7 deletions
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index b0a58b96e9..0c405025cf 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -72,12 +72,41 @@ int Net::joinGame(char *IP, char *userName) {
int Net::addUser(char *shortName, char *longName) {
warning("STUB: Net::addUser(\"%s\", \"%s\")", shortName, longName); // PN_AddUser
- _myUserId = _vm->_rnd.getRandomNumber(1000000);
+ Networking::PostRequest rq(_serverprefix + "/adduser",
+ new Common::Callback<Net, Common::JSONValue *>(this, &Net::addUserCallback),
+ new Common::Callback<Net, Networking::ErrorResponse>(this, &Net::addUserErrorCallback));
+
+ snprintf((char *)_tmpbuffer, MAX_PACKET_SIZE, "{\"shortname\":\"%s\",\"longname\":\"%s\",\"sessionid\":%d}", shortName, longName, _sessionid);
+ rq.setPostData(_tmpbuffer, strlen((char *)_tmpbuffer));
+ rq.setContentType("application/json");
+
+ rq.start();
+
+ _myUserId = -1;
+
+ while(rq.state() == Networking::PROCESSING) {
+ g_system->delayMillis(5);
+ }
+
+ if (_myUserId == -1)
+ return 0;
- // FAKE successful add. FIXME
return 1;
}
+void Net::addUserCallback(Common::JSONValue *response) {
+ Common::JSONObject info = response->asObject();
+
+ if (info.contains("userid")) {
+ _myUserId = info["userid"]->asIntegerNumber();
+ }
+ debug(1, "addUserCallback: got: '%s' as %d", response->stringify().c_str(), _myUserId);
+}
+
+void Net::addUserErrorCallback(Networking::ErrorResponse error) {
+ warning("Error in addUser(): %ld %s", error.httpResponseCode, error.response.c_str());
+}
+
int Net::removeUser() {
warning("STUB: Net::removeUser()"); // PN_RemoveUser
return 0;
@@ -94,11 +123,11 @@ int Net::whoAmI() {
}
int Net::createSession(char *name) {
- warning("STUB: Net::createSession(\"%s\")", name); // PN_CreateSession
+ debug(1, "Net::createSession(\"%s\")", name); // PN_CreateSession
Networking::PostRequest rq(_serverprefix + "/createsession",
- new Common::Callback<Net, Common::JSONValue *>(this, &Net::startQuerySessionsCallback),
- new Common::Callback<Net, Networking::ErrorResponse>(this, &Net::startQuerySessionsErrorCallback));
+ new Common::Callback<Net, Common::JSONValue *>(this, &Net::createSessionCallback),
+ new Common::Callback<Net, Networking::ErrorResponse>(this, &Net::createSessionErrorCallback));
snprintf((char *)_tmpbuffer, MAX_PACKET_SIZE, "{\"name\":\"%s\"}", name);
rq.setPostData(_tmpbuffer, strlen((char *)_tmpbuffer));
@@ -124,7 +153,7 @@ void Net::createSessionCallback(Common::JSONValue *response) {
if (info.contains("sessionid")) {
_sessionid = info["sessionid"]->asIntegerNumber();
}
- warning("Got: '%s' as %d", response->stringify().c_str(), _sessionid);
+ debug(1, "createSessionCallback: got: '%s' as %d", response->stringify().c_str(), _sessionid);
}
void Net::createSessionErrorCallback(Networking::ErrorResponse error) {
@@ -202,7 +231,7 @@ int32 Net::startQuerySessions() {
}
void Net::startQuerySessionsCallback(Common::JSONValue *response) {
- warning("Got: '%s'", response->stringify().c_str());
+ warning("startQuerySessions: Got: '%s'", response->stringify().c_str());
}
void Net::startQuerySessionsErrorCallback(Networking::ErrorResponse error) {
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 757fa1ba40..af71398031 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -77,6 +77,9 @@ private:
void startQuerySessionsCallback(Common::JSONValue *response);
void startQuerySessionsErrorCallback(Networking::ErrorResponse error);
+ void addUserCallback(Common::JSONValue *response);
+ void addUserErrorCallback(Networking::ErrorResponse error);
+
public:
//getters
bool getHostName(char *hostname, int length);