Bouton "📐 Agrandir la caméra à la zone visible"
Fait de tout le "monde" affiché par l'éditeur (la taille réelle d'un "fond" plus grand que la scène nominale, voir routes/scenes/ scene_edit_view.py::world_width/world_height) la scène/caméra ELLE-MÊME — jusqu'ici scene_width/scene_height n'étaient fixées qu'à la création de l'écran, jamais modifiables ensuite. Le bouton n'apparaît que quand un fond dépasse encore la scène nominale (même condition que le repère "🎥 Champ de la caméra"), affiche la taille cible, recharge la page une fois appliqué. La caméra ne recadre alors plus rien en jeu (monde == scène == viewport, voir personnage-controller.js::forgeUpdateSceneCamera). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
14ec76dddd
commit
b9d3c46087
@@ -239,3 +239,38 @@ def test_scene_edit_view_world_bounds_are_used_for_drag_clamping(client, tmp_gam
|
||||
html = client.get(f"/game/{slug}/screens/{screen_id}/edit").get_data(as_text=True)
|
||||
assert "var SCENE_WIDTH = 1920;" in html
|
||||
assert "var SCENE_HEIGHT = 1080;" in html
|
||||
|
||||
|
||||
def test_set_scene_size_updates_screen_dimensions(tmp_game_slug_cleanup):
|
||||
""""📐 Agrandir la caméra à la zone visible" (voir templates/
|
||||
scene_edit.html) : fait du "monde" affiché la scène/caméra
|
||||
elle-même — jusqu'ici fixée à la création et jamais modifiable."""
|
||||
slug = tmp_game_slug_cleanup(db.create_game("pytest_scene_size"))
|
||||
screen_id = screens.create_screen(slug, "Scène 1", kind="jeu_2d")
|
||||
screens.set_scene_size(slug, screen_id, 1920, 1080)
|
||||
screen = screens.get_screen(slug, screen_id)
|
||||
assert screen["scene_width"] == 1920
|
||||
assert screen["scene_height"] == 1080
|
||||
|
||||
|
||||
def test_screen_set_scene_size_route_persists_and_reflects_in_editor(client, tmp_game_slug_cleanup):
|
||||
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
|
||||
resp = client.post(
|
||||
f"/game/{slug}/screens/{screen_id}/scene-size",
|
||||
data=json.dumps({"width": 1920, "height": 1080}), content_type="application/json",
|
||||
)
|
||||
assert resp.get_json() == {"ok": True}
|
||||
html = client.get(f"/game/{slug}/screens/{screen_id}/edit").get_data(as_text=True)
|
||||
assert 'id="canvas" style="width:1920px; height:1080px;' in html
|
||||
# La scène nominale == le monde désormais -> plus de repère caméra ni de bouton.
|
||||
assert "sceneCameraFrame" not in html
|
||||
assert "Agrandir la caméra" not in html
|
||||
|
||||
|
||||
def test_screen_set_scene_size_route_rejects_invalid_dimensions(client, tmp_game_slug_cleanup):
|
||||
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
|
||||
resp = client.post(
|
||||
f"/game/{slug}/screens/{screen_id}/scene-size",
|
||||
data=json.dumps({"width": "oops", "height": 540}), content_type="application/json",
|
||||
)
|
||||
assert resp.status_code == 400
|
||||
|
||||
Reference in New Issue
Block a user