diff --git a/map/base_map/grid.gd b/map/base_map/grid.gd index b2944ad..8e19494 100644 --- a/map/base_map/grid.gd +++ b/map/base_map/grid.gd @@ -43,6 +43,8 @@ func draw_tile_click(start_pos): func init_tile_drag(float_build_start_pos, float_build_mouse_pos): + var tile_drag_array = [] + var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0)) var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0)) @@ -55,48 +57,72 @@ func init_tile_drag(float_build_start_pos, float_build_mouse_pos): tile_count_x_hist = tile_count_x tile_count_z_hist = tile_count_z - - draw_tile_drag(tile_count_x_diff, tile_count_z_diff, build_start_pos) - - - -func draw_tile_drag(x_diff, z_diff, start_pos): - - tile_drag_x_hist = x_diff + tile_drag_x_hist - tile_drag_z_hist = z_diff + tile_drag_z_hist - - if x_diff: - for z in range(min(0, tile_drag_z_hist), max(0, tile_drag_z_hist) + 1): - for x in abs(x_diff): - var id = Vector3i(start_pos.x - tile_drag_x_hist, 0, start_pos.z - tile_drag_z_hist - z) - - if tile_drag_dict.has(id): - var tile = tile_drag_dict[id] - tile.queue_free() - tile_drag_dict.erase(id) - else: - - var tile = load_tile.instantiate() - tile.position = id - tile_drag_dict[id] = tile - add_child(tile) + + for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1): + for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1): + var tile_drag_pos = build_start_pos + Vector3i(x, 0, z) - if z_diff: - for x in range(min(0, tile_drag_x_hist), max(0, tile_drag_x_hist) + 1): - for z in abs(z_diff): - var id = Vector3i(start_pos.x - tile_drag_x_hist - x, 0, start_pos.z - tile_drag_z_hist) + tile_drag_array.append(tile_drag_pos) - if tile_drag_dict.has(id): - var tile = tile_drag_dict[id] - tile.queue_free() - tile_drag_dict.erase(id) - else: - var tile = load_tile.instantiate() - tile.position = id - tile_drag_dict[id] = tile - add_child(tile) + draw_tile_drag(tile_drag_array) + + + +func draw_tile_drag(array): + + tile_drag_dict.clear() + + for i in self.get_children(): + i.queue_free() + + for i in array: + + var id = i + + if not tile_drag_dict.has(id): + var tile = load_tile.instantiate() + + tile.position = i + + tile_drag_dict[id] = tile + + add_child(tile) + + #tile_drag_x_hist = x_diff + tile_drag_x_hist + #tile_drag_z_hist = z_diff + tile_drag_z_hist + # + #if x_diff: + #for z in range(min(0, tile_drag_z_hist), max(0, tile_drag_z_hist) + 1): + #for x in abs(x_diff): + #var id = Vector3i(start_pos.x - tile_drag_x_hist, 0, start_pos.z - z) + ##var lastid = Vector3i(start_pos.x - tile_drag_x_hist - x_diff, 0, start_pos.z - z) + #if tile_drag_dict.has(id): + #var tile = tile_drag_dict[id] + #tile.queue_free() + #tile_drag_dict.erase(id) + #else: +# + #var tile = load_tile.instantiate() + #tile.position = id + #tile_drag_dict[id] = tile + #add_child(tile) + # + #if z_diff: + #for x in range(min(0, tile_drag_x_hist), max(0, tile_drag_x_hist) + 1): + #for z in abs(z_diff): + #var id = Vector3i(start_pos.x - x, 0, start_pos.z - tile_drag_z_hist) +# + #if tile_drag_dict.has(id): + #var tile = tile_drag_dict[id] + #tile.queue_free() + #tile_drag_dict.erase(id) + #else: + #var tile = load_tile.instantiate() + #tile.position = id + #tile_drag_dict[id] = tile + #add_child(tile) - print(tile_drag_dict) + #print(tile_drag_dict) #if x_diff > 0: #var tile = load_tile.instantiate() #tile.position = Vector3i(start_pos.x - tile_drag_x_hist, 0, tile_drag_z_hist - z) diff --git a/map/base_map/test_map.tscn b/map/base_map/test_map.tscn index 888f4fb..07f3ddd 100644 --- a/map/base_map/test_map.tscn +++ b/map/base_map/test_map.tscn @@ -6,3 +6,6 @@ script = ExtResource("1_2j6sh") [node name="Grid" type="Node3D" parent="."] + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.345446, 0.938439, 0, -0.938439, 0.345446, 41.393, 18.7409, 34.4224) diff --git a/tiles/base_tile/tile.tscn b/tiles/base_tile/tile.tscn index eddd9bb..b12b96b 100644 --- a/tiles/base_tile/tile.tscn +++ b/tiles/base_tile/tile.tscn @@ -1,11 +1,17 @@ -[gd_scene load_steps=3 format=3 uid="uid://gs6yynwvvot2"] +[gd_scene load_steps=4 format=3 uid="uid://gs6yynwvvot2"] [ext_resource type="Script" uid="uid://jqjcr7dxjnbt" path="res://tiles/base_tile/tile.gd" id="1_v7x5k"] [ext_resource type="PlaneMesh" uid="uid://bis4hdushjnjm" path="res://tiles/base_tile/base_floor.tres" id="2_ipr02"] +[sub_resource type="SphereMesh" id="SphereMesh_sbkyc"] + [node name="Tile" type="Node3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0, 0.5) script = ExtResource("1_v7x5k") [node name="FloorMesh" type="MeshInstance3D" parent="."] +visible = false mesh = ExtResource("2_ipr02") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0) +mesh = SubResource("SphereMesh_sbkyc")