diff --git a/prefabs/combat_map.tscn b/prefabs/combat_map.tscn index d3a9f32..d905421 100644 --- a/prefabs/combat_map.tscn +++ b/prefabs/combat_map.tscn @@ -6,9 +6,9 @@ [ext_resource type="Script" uid="uid://cxl38x2m6sj3w" path="res://scripts/battle/grid_overlay.gd" id="4_jelju"] [ext_resource type="Texture2D" uid="uid://b1ks72fiesfrm" path="res://assets/sprites/combat_map_ui.BMP" id="5_mycp7"] [ext_resource type="Texture2D" uid="uid://65rmoynep5hy" path="res://assets/sprites/MP000A.BMP" id="6_muxvo"] -[ext_resource type="Script" path="res://nodes/wall_renderer.gd" id="7_wallr"] +[ext_resource type="Script" uid="uid://c4f1vflwd81b8" path="res://nodes/wall_renderer.gd" id="7_wallr"] [ext_resource type="Texture2D" uid="uid://b20mhn7ca5xyo" path="res://assets/sprites/aux_terrain.BMP" id="8_auxtr"] -[ext_resource type="Script" path="res://nodes/fog_renderer.gd" id="9_fogrn"] +[ext_resource type="Script" uid="uid://d1d1nbetdvynk" path="res://nodes/fog_renderer.gd" id="9_fogrn"] [sub_resource type="Resource" id="Resource_vcj5e"] script = ExtResource("2_8rn0j") @@ -87,12 +87,12 @@ offset = Vector2(50, 50) unique_name_in_owner = true tile_set = SubResource("TileSet_e2u25") -[node name="FogRenderer" type="Node2D" parent="."] +[node name="FogRenderer" type="Node2D" parent="." unique_id=641669860] unique_name_in_owner = true script = ExtResource("9_fogrn") atlas_texture = ExtResource("8_auxtr") -[node name="WallRenderer" type="Node2D" parent="."] +[node name="WallRenderer" type="Node2D" parent="." unique_id=1008825128] unique_name_in_owner = true z_index = 1 script = ExtResource("7_wallr") diff --git a/scripts/battle/camera_controller.gd b/scripts/battle/camera_controller.gd index 86eede1..5ac6df6 100644 --- a/scripts/battle/camera_controller.gd +++ b/scripts/battle/camera_controller.gd @@ -2,7 +2,13 @@ class_name CameraController extends Camera2D func apply_drag(delta: Vector2) -> void: - position += delta / zoom + var half_view: Vector2 = get_viewport_rect().size * 0.5 / zoom + var min_pos := Vector2(limit_left, limit_top) + half_view + var max_pos := Vector2(limit_right, limit_bottom) - half_view + # Guard against maps smaller than the viewport (min > max) + max_pos.x = max(min_pos.x, max_pos.x) + max_pos.y = max(min_pos.y, max_pos.y) + position = (position + delta / zoom).clamp(min_pos, max_pos) func set_map_bounds(rect: Rect2) -> void: