[Scummvm-git-logs] scummvm-sites multiplayer -> 5d90ee725db12f5040b572410a9b7ad4737b9391
LittleToonCat
noreply at scummvm.org
Mon Dec 4 23:04:07 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm-sites' repo located at https://github.com/scummvm/scummvm-sites .
Summary:
5d90ee725d MULTIPLAYER: Lobby ability to merge one version to another.
Commit: 5d90ee725db12f5040b572410a9b7ad4737b9391
https://github.com/scummvm/scummvm-sites/commit/5d90ee725db12f5040b572410a9b7ad4737b9391
Author: Little Cat (toontownlittlecat at gmail.com)
Date: 2023-12-04T19:03:55-04:00
Commit Message:
MULTIPLAYER: Lobby ability to merge one version to another.
This is done to ease the daily build transition to 2.8.0git to 2.9.0git.
Changed paths:
lobby/net/DatabaseMessages.js
lobby/net/NetworkListener.js
main.py
diff --git a/lobby/net/DatabaseMessages.js b/lobby/net/DatabaseMessages.js
index a6e0c4f..9e81b89 100644
--- a/lobby/net/DatabaseMessages.js
+++ b/lobby/net/DatabaseMessages.js
@@ -78,6 +78,15 @@ server.handleMessage("login", async (client, args) => {
client.versionNumber = client.versionNumber.substr(0, gitLocation + 3)
}
+ for (const [keyVersion, versions] of Object.entries(server.mergeVersions)) {
+ if (versions.includes(client.versionNumber)) {
+ // Change the client version to the merged version.
+ logEvent('mergedVersion', client, version, {'username': username, 'game': game, 'merged_version': keyVersion});
+ client.versionNumber = keyVersion;
+ break;
+ }
+ }
+
if (client.versionNumber in server.versionRestrictions) {
if (server.versionRestrictions[client.versionNumber] == null) {
// Discontinued
diff --git a/lobby/net/NetworkListener.js b/lobby/net/NetworkListener.js
index fece79c..b0606cf 100644
--- a/lobby/net/NetworkListener.js
+++ b/lobby/net/NetworkListener.js
@@ -49,6 +49,7 @@ class NetworkListener {
this.sessionServer = this.config['session_server'] || '127.0.0.1:9120';
this.versionRestrictions = this.config['version_restrictions'] || {}
+ this.mergeVersions = this.config['merge_versions'] || {}
const host = this.config['host'];
const port = Number(this.config['port']);
diff --git a/main.py b/main.py
index 2fb3736..46a62e2 100644
--- a/main.py
+++ b/main.py
@@ -218,7 +218,11 @@ if __name__ == "__main__":
return
logging.debug(f"relay_data: Relaying data to host (user 1)")
peers_to_send.add(peer)
- elif type_of_send in (PN_SENDTYPE_ALL, PN_SENDTYPE_ALL_RELIABLE, PN_SENDTYPE_ALL_RELIABLE_TIMED):
+ elif type_of_send in (
+ PN_SENDTYPE_ALL,
+ PN_SENDTYPE_ALL_RELIABLE,
+ PN_SENDTYPE_ALL_RELIABLE_TIMED,
+ ):
# Send to all peers
for peer in peers_by_user_id.values():
peers_to_send.add(peer)
@@ -353,17 +357,21 @@ if __name__ == "__main__":
if "git" in scummvm_version:
# Strip out the specific revision details, we only need the "git".
index = scummvm_version.index("git")
- scummvm_version = scummvm_version[:index + 3]
+ scummvm_version = scummvm_version[: index + 3]
else:
# We don't know how to parse this string, revert back to unknown.
- logging.warning(f"Don't know how to parse scummvm_version string: {scummvm_version}")
+ logging.warning(
+ f"Don't know how to parse scummvm_version string: {scummvm_version}"
+ )
scummvm_version = "unknown"
if command == "host_session":
name = data.get("name")
maxplayers = data.get("maxplayers")
- session_id = create_session(name, maxplayers, scummvm_version, event.peer.address)
+ session_id = create_session(
+ name, maxplayers, scummvm_version, event.peer.address
+ )
send(event.peer, {"cmd": "host_session_resp", "id": session_id})
elif command == "update_players":
@@ -382,8 +390,17 @@ if __name__ == "__main__":
session_ids = redis.lrange(f"{game}:sessions", 0, num_sessions)
for id in session_ids:
session = redis.hgetall(f"{game}:session:{id}")
- if scummvm_version != session["scummvm_version"]:
- logging.debug(f"get_sessions: {scummvm_version} != {session['scummvm_version']}")
+ if (
+ # Skipping if their playing football or
+ # baseball because they might be
+ # playing with merged versions
+ # (e.g. 2.9.0git playing as 2.8.0git)
+ game not in ("football", "baseball2001")
+ and scummvm_version != session["scummvm_version"]
+ ):
+ logging.debug(
+ f"get_sessions: {scummvm_version} != {session['scummvm_version']}"
+ )
# Mismatched version, skip.
continue
sessions.append(
More information about the Scummvm-git-logs
mailing list