WebHost: Add game listing for all players on room info page.

This commit is contained in:
Hussein Farran 2021-12-22 20:15:56 -05:00 committed by Fabian Dill
parent 1f4ddc295a
commit 3508cf21c7
4 changed files with 76 additions and 17 deletions

View File

@ -18,3 +18,34 @@
border-radius: 3px;
width: 500px;
}
#host-room table {
border-spacing: 0px;
}
#host-room table tbody{
background-color: #dce2bd;
}
#host-room table tbody tr:hover{
background-color: #e2eabb;
}
#host-room table tbody td{
padding: 4px 6px;
color: black;
}
#host-room table tbody a{
color: #234ae4;
}
#host-room table thead td{
background-color: #b0a77d;
color: black;
top: 0;
}
#host-room table tbody td{
border: 1px solid #bba967;
}

View File

@ -8,22 +8,43 @@
{%- endmacro %}
{% macro list_patches_room(room) %}
{% if room.seed.slots %}
<ul>
<table>
<thead>
<tr>
<td>Id</td>
<td>Name</td>
<td>Game</td>
<td>Download Link</td>
<td>Tracker Page</td>
</tr>
</thead>
<tbody>
{% for patch in room.seed.slots|list|sort(attribute="player_id") %}
{% if patch.game == "Minecraft" %}
<li><a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
APMC for player {{ patch.player_id }} - {{ patch.player_name }}</a></li>
{% elif patch.game == "Factorio" %}
<li><a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
Mod for player {{ patch.player_id }} - {{ patch.player_name }}</a></li>
{% elif patch.game == "Ocarina of Time" %}
<li><a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
APZ5 for player {{ patch.player_id }} - {{ patch.player_name }}</a></li>
{% else %}
<li><a href="{{ url_for("download_patch", patch_id=patch.id, room_id=room.id) }}">
Patch for player {{ patch.player_id }} - {{ patch.player_name }}</a></li>
{% endif %}
<tr>
<td>{{ patch.player_id }}</td>
<td>{{ patch.player_name }}</td>
<td>{{ patch.game }}</td>
<td>
{% if patch.game == "Minecraft" %}
<a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
Download APMC File...</a>
{% elif patch.game == "Factorio" %}
<a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
Download Factorio Mod...</a>
{% elif patch.game == "Ocarina of Time" %}
<a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}">
Download APZ5 File...</a>
{% elif patch.game in ["A Link to the Past", "Secret of Evermore", "Super Metroid"] %}
<a href="{{ url_for("download_patch", patch_id=patch.id, room_id=room.id) }}">
Download Patch File...</a>
{% else %}
No file to download for this game.
{% endif %}
</td>
<td><a href="{{ url_for("getPlayerTracker", tracker=room.tracker, tracked_team=0, tracked_player=patch.player_id) }}">Tracker</a></td>
</tr>
{% endfor %}
</ul>
</tbody>
</table>
{% endif %}
{%- endmacro -%}

View File

@ -2,7 +2,7 @@
{% block head %}
{{ super() }}
<title>Generate Game</title>
<title>User Content</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename="styles/userContent.css") }}" />
<script type="application/ecmascript" src="{{ url_for('static', filename="assets/userContent.js") }}"></script>
{% endblock %}

View File

@ -62,12 +62,19 @@ def upload_zip_to_db(zfile: zipfile.ZipFile, owner=None, meta={"race": False}, s
elif file.filename.endswith(".archipelago"):
try:
multidata = zfile.open(file).read()
MultiServer.Context._decompress(multidata)
except:
flash("Could not load multidata. File may be corrupted or incompatible.")
multidata = None
if multidata:
decompressed_multidata = MultiServer.Context._decompress(multidata)
leftover_names = [(name, decompressed_multidata["names"][0].index(name) + 1) for name in
decompressed_multidata["names"][0] if name not in [slot.player_name for slot in slots]]
newslots = [(Slot(data=None, player_name=name, player_id=slot, game=decompressed_multidata["games"][slot]))
for name, slot in leftover_names]
for slot in newslots:
slots.add(slot)
flush() # commit slots
seed = Seed(multidata=multidata, spoiler=spoiler, slots=slots, owner=owner, meta=json.dumps(meta),
id=sid if sid else uuid.uuid4())