Optimize views
This commit is contained in:
@ -15,10 +15,25 @@ from hopper.api.dto import (
|
|||||||
from hopper.engine import GameEngine
|
from hopper.engine import GameEngine
|
||||||
from hopper.enums import Direction, PlayerMoveResult
|
from hopper.enums import Direction, PlayerMoveResult
|
||||||
from hopper.errors import Collision, PositionOutOfBounds
|
from hopper.errors import Collision, PositionOutOfBounds
|
||||||
|
from hopper.models.player import Player
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
|
def get_player(uuid: str, engine: GameEngine = Depends(get_game_engine)) -> Player:
|
||||||
|
player = engine.players.find(uuid)
|
||||||
|
if player is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND, detail="Player not found"
|
||||||
|
)
|
||||||
|
if not player.active:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Player kicked out due to inactivity",
|
||||||
|
)
|
||||||
|
return player
|
||||||
|
|
||||||
|
|
||||||
@router.get("/ping", response_model=PingResponse)
|
@router.get("/ping", response_model=PingResponse)
|
||||||
async def ping() -> PingResponse:
|
async def ping() -> PingResponse:
|
||||||
return PingResponse(
|
return PingResponse(
|
||||||
@ -60,19 +75,8 @@ async def start_game(
|
|||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
)
|
)
|
||||||
async def get_player_info(
|
async def get_player_info(
|
||||||
uuid: str,
|
player: Player = Depends(get_player),
|
||||||
engine: GameEngine = Depends(get_game_engine),
|
|
||||||
) -> MovePlayerResponseDto:
|
) -> MovePlayerResponseDto:
|
||||||
player = engine.players.find(uuid)
|
|
||||||
if player is None:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND, detail="Player not found"
|
|
||||||
)
|
|
||||||
if not player.active:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
|
||||||
detail="Player kicked out due to inactivity",
|
|
||||||
)
|
|
||||||
return PlayerInfoResponseDto(player=player)
|
return PlayerInfoResponseDto(player=player)
|
||||||
|
|
||||||
|
|
||||||
@ -96,22 +100,11 @@ async def get_player_info(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
async def move_player(
|
async def move_player(
|
||||||
uuid: str,
|
|
||||||
direction: Direction,
|
direction: Direction,
|
||||||
response: Response,
|
response: Response,
|
||||||
engine: GameEngine = Depends(get_game_engine),
|
engine: GameEngine = Depends(get_game_engine),
|
||||||
|
player: Player = Depends(get_player),
|
||||||
) -> MovePlayerResponseDto:
|
) -> MovePlayerResponseDto:
|
||||||
player = engine.players.find(uuid)
|
|
||||||
if player is None:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND, detail="Player not found"
|
|
||||||
)
|
|
||||||
if not player.active:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
|
||||||
detail="Player kicked out due to inactivity",
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
move_result = await engine.move_player(player, direction)
|
move_result = await engine.move_player(player, direction)
|
||||||
except PositionOutOfBounds:
|
except PositionOutOfBounds:
|
||||||
|
|||||||
Reference in New Issue
Block a user