WebHost: Add game listing for all players on room info page.
This commit is contained in:
parent
1f4ddc295a
commit
3508cf21c7
WebHostLib
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 -%}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Reference in New Issue