Add game mode categories, character creation, on-foot ship/hub mode, RAM currency, and in-ship navigation
Bundles several sessions' worth of previously uncommitted work: map categories with Domination/Conquest/King of the Hill mode stubs and a server-list mode filter; a procedurally-drawn character-creation screen replacing the old callsign-only PROFILE overlay; the on-foot groundwork (walkable station hub, ship interior, character controller) plus the RAM currency backend; and today's addition, an in-ship Helldivers-2-style navigation table that QUICK PLAY's queue/connect flow and the Belters/ Military hub travel now live behind, with hub-and-ship return paths and a context-aware pause menu usable both in-match and inside the ship. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app import crud
|
||||
from app.config import settings
|
||||
from app.database import get_db
|
||||
from app.models import GameServer, Match, MatchPlayer
|
||||
from app.schemas import MatchReportRequest
|
||||
@@ -48,6 +49,11 @@ async def report_match(req: MatchReportRequest, db: AsyncSession = Depends(get_d
|
||||
player.kills += result.kills
|
||||
player.deaths += result.deaths
|
||||
player.hours_played += result.seconds_played / 3600.0
|
||||
player.ram_kb += (
|
||||
settings.ram_payout_participation_kb
|
||||
+ result.kills * settings.ram_payout_per_kill_kb
|
||||
+ (settings.ram_payout_win_bonus_kb if result.is_winner else 0)
|
||||
)
|
||||
if result.is_winner:
|
||||
player.wins += 1
|
||||
elif req.winner_team is not None:
|
||||
|
||||
@@ -34,6 +34,8 @@ async def register_server(req: ServerRegisterRequest, db: AsyncSession = Depends
|
||||
existing.player_count = req.player_count
|
||||
existing.max_players = req.max_players
|
||||
existing.last_heartbeat = datetime.utcnow()
|
||||
existing.game_mode = req.game_mode
|
||||
existing.map_name = req.map_name
|
||||
else:
|
||||
db.add(
|
||||
GameServer(
|
||||
@@ -43,6 +45,8 @@ async def register_server(req: ServerRegisterRequest, db: AsyncSession = Depends
|
||||
status=status,
|
||||
player_count=req.player_count,
|
||||
max_players=req.max_players,
|
||||
game_mode=req.game_mode,
|
||||
map_name=req.map_name,
|
||||
)
|
||||
)
|
||||
await db.commit()
|
||||
@@ -80,6 +84,8 @@ async def list_servers(db: AsyncSession = Depends(get_db)) -> list[dict]:
|
||||
"player_count": s.player_count,
|
||||
"max_players": s.max_players,
|
||||
"last_heartbeat": s.last_heartbeat,
|
||||
"game_mode": s.game_mode,
|
||||
"map_name": s.map_name,
|
||||
}
|
||||
for s in servers
|
||||
]
|
||||
|
||||
@@ -22,4 +22,5 @@ async def get_stats(callsign: str, db: AsyncSession = Depends(get_db)) -> Player
|
||||
kills=player.kills,
|
||||
deaths=player.deaths,
|
||||
hours_played=player.hours_played,
|
||||
ram_kb=player.ram_kb,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user