added default Earthman 108-card tarot deck, 78-card Minchiate Fiorentine deck, admin tests for each; DeckVariant model governs deck toggle; ran new migrations for apps.epic, apps.lyric; seeded DeckVariant migration to ensure Earthman is default deck; added min. tarot url; most new FTs passing
This commit is contained in:
@@ -9,7 +9,10 @@ from django.shortcuts import redirect, render
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.drama.models import GameEvent, record
|
||||
from apps.epic.models import GateSlot, Room, RoomInvite, TableSeat, debit_token, select_token
|
||||
from apps.epic.models import (
|
||||
GateSlot, Room, RoomInvite, TableSeat, TarotDeck,
|
||||
debit_token, select_token,
|
||||
)
|
||||
from apps.lyric.models import Token
|
||||
|
||||
|
||||
@@ -463,3 +466,43 @@ def gate_status(request, room_id):
|
||||
ctx = _gate_context(room, request.user)
|
||||
ctx["room"] = room
|
||||
return render(request, "apps/gameboard/_partials/_gatekeeper.html", ctx)
|
||||
|
||||
|
||||
@login_required
|
||||
def tarot_deck(request, room_id):
|
||||
room = Room.objects.get(id=room_id)
|
||||
deck_variant = request.user.equipped_deck
|
||||
deck, _ = TarotDeck.objects.get_or_create(
|
||||
room=room,
|
||||
defaults={"deck_variant": deck_variant},
|
||||
)
|
||||
return render(request, "apps/epic/tarot_deck.html", {
|
||||
"room": room,
|
||||
"deck": deck,
|
||||
"remaining": deck.remaining_count,
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def tarot_deal(request, room_id):
|
||||
if request.method != "POST":
|
||||
return redirect("epic:tarot_deck", room_id=room_id)
|
||||
room = Room.objects.get(id=room_id)
|
||||
deck = TarotDeck.objects.get(room=room)
|
||||
drawn = deck.draw(6) # Celtic Cross: 6 cross positions; 4 staff filled via gameplay
|
||||
positions = [
|
||||
{
|
||||
"card": card,
|
||||
"reversed": is_reversed,
|
||||
"orientation": "Reversed" if is_reversed else "Upright",
|
||||
"position": i + 1,
|
||||
}
|
||||
for i, (card, is_reversed) in enumerate(drawn)
|
||||
]
|
||||
return render(request, "apps/epic/tarot_deck.html", {
|
||||
"room": room,
|
||||
"deck": deck,
|
||||
"remaining": deck.remaining_count,
|
||||
"positions": positions,
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user