From 45f9c3ba88a16fe8ff7681ca480f6f8c327a3e33 Mon Sep 17 00:00:00 2001 From: NnYGames Date: Tue, 10 Sep 2024 04:34:30 +0300 Subject: [PATCH] Added map Added map that is randomly generated but has a pattern of placing tiles in a higher layer near the center Also made it so placing a tower would change according to the top layer --- Mai8E8B.tmp | 62 ++++++++++++++++++++++++++++++++++++++++++ MaiD4A.tmp | 62 ++++++++++++++++++++++++++++++++++++++++++ Main.tscn | 5 ++++ tile_map.gd | 77 ++++++++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 196 insertions(+), 10 deletions(-) create mode 100644 Mai8E8B.tmp create mode 100644 MaiD4A.tmp diff --git a/Mai8E8B.tmp b/Mai8E8B.tmp new file mode 100644 index 0000000..259b84e --- /dev/null +++ b/Mai8E8B.tmp @@ -0,0 +1,62 @@ +[gd_scene load_steps=10 format=3 uid="uid://5ske2hm55rce"] + +[ext_resource type="Theme" uid="uid://d035h7upxrw3h" path="res://theme.tres" id="1_xbn5h"] +[ext_resource type="Texture2D" uid="uid://bsrh0u02bckhy" path="res://iso_building.png" id="3_qa5pv"] +[ext_resource type="Texture2D" uid="uid://bvn5lewpp7pmd" path="res://iso_tile.png" id="4_7pks7"] +[ext_resource type="PackedScene" uid="uid://dykc1mgg5uopw" path="res://components/Cursor/MouseHandler.tscn" id="5_6lpdu"] +[ext_resource type="Script" path="res://tile_map.gd" id="5_v47eg"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dxrqb"] +texture = ExtResource("4_7pks7") +margins = Vector2i(16, 16) +1:1/0 = 0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_j7eew"] +texture = ExtResource("3_qa5pv") +margins = Vector2i(15, 14) +texture_region_size = Vector2i(18, 20) +1:1/0 = 0 +0:0/0 = 0 + +[sub_resource type="TileSet" id="TileSet_2mye8"] +tile_shape = 1 +tile_layout = 5 +tile_size = Vector2i(16, 8) +sources/0 = SubResource("TileSetAtlasSource_dxrqb") +sources/1 = SubResource("TileSetAtlasSource_j7eew") + +[sub_resource type="CircleShape2D" id="CircleShape2D_s8q4l"] +radius = 134.7 + +[node name="Main" type="Node2D"] + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +theme = ExtResource("1_xbn5h") + +[node name="TileMap" type="TileMap" parent="."] +tile_set = SubResource("TileSet_2mye8") +rendering_quadrant_size = 128 +format = 2 +layer_1/name = "Layer1" +layer_2/name = "Layer2" +layer_3/name = "Layer3" +layer_4/name = "Layer4" +layer_5/name = "Layer5" +script = ExtResource("5_v47eg") + +[node name="MouseHandler" parent="TileMap" instance=ExtResource("5_6lpdu")] +position = Vector2(318, 178) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TileMap/MouseHandler"] +shape = SubResource("CircleShape2D_s8q4l") + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(50, 150) + +[connection signal="clicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_clicked"] +[connection signal="rclicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_rclicked"] diff --git a/MaiD4A.tmp b/MaiD4A.tmp new file mode 100644 index 0000000..259b84e --- /dev/null +++ b/MaiD4A.tmp @@ -0,0 +1,62 @@ +[gd_scene load_steps=10 format=3 uid="uid://5ske2hm55rce"] + +[ext_resource type="Theme" uid="uid://d035h7upxrw3h" path="res://theme.tres" id="1_xbn5h"] +[ext_resource type="Texture2D" uid="uid://bsrh0u02bckhy" path="res://iso_building.png" id="3_qa5pv"] +[ext_resource type="Texture2D" uid="uid://bvn5lewpp7pmd" path="res://iso_tile.png" id="4_7pks7"] +[ext_resource type="PackedScene" uid="uid://dykc1mgg5uopw" path="res://components/Cursor/MouseHandler.tscn" id="5_6lpdu"] +[ext_resource type="Script" path="res://tile_map.gd" id="5_v47eg"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dxrqb"] +texture = ExtResource("4_7pks7") +margins = Vector2i(16, 16) +1:1/0 = 0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_j7eew"] +texture = ExtResource("3_qa5pv") +margins = Vector2i(15, 14) +texture_region_size = Vector2i(18, 20) +1:1/0 = 0 +0:0/0 = 0 + +[sub_resource type="TileSet" id="TileSet_2mye8"] +tile_shape = 1 +tile_layout = 5 +tile_size = Vector2i(16, 8) +sources/0 = SubResource("TileSetAtlasSource_dxrqb") +sources/1 = SubResource("TileSetAtlasSource_j7eew") + +[sub_resource type="CircleShape2D" id="CircleShape2D_s8q4l"] +radius = 134.7 + +[node name="Main" type="Node2D"] + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +theme = ExtResource("1_xbn5h") + +[node name="TileMap" type="TileMap" parent="."] +tile_set = SubResource("TileSet_2mye8") +rendering_quadrant_size = 128 +format = 2 +layer_1/name = "Layer1" +layer_2/name = "Layer2" +layer_3/name = "Layer3" +layer_4/name = "Layer4" +layer_5/name = "Layer5" +script = ExtResource("5_v47eg") + +[node name="MouseHandler" parent="TileMap" instance=ExtResource("5_6lpdu")] +position = Vector2(318, 178) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TileMap/MouseHandler"] +shape = SubResource("CircleShape2D_s8q4l") + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(50, 150) + +[connection signal="clicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_clicked"] +[connection signal="rclicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_rclicked"] diff --git a/Main.tscn b/Main.tscn index ff92e98..259b84e 100644 --- a/Main.tscn +++ b/Main.tscn @@ -43,6 +43,10 @@ tile_set = SubResource("TileSet_2mye8") rendering_quadrant_size = 128 format = 2 layer_1/name = "Layer1" +layer_2/name = "Layer2" +layer_3/name = "Layer3" +layer_4/name = "Layer4" +layer_5/name = "Layer5" script = ExtResource("5_v47eg") [node name="MouseHandler" parent="TileMap" instance=ExtResource("5_6lpdu")] @@ -52,6 +56,7 @@ position = Vector2(318, 178) shape = SubResource("CircleShape2D_s8q4l") [node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(50, 150) [connection signal="clicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_clicked"] [connection signal="rclicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_rclicked"] diff --git a/tile_map.gd b/tile_map.gd index 7926b84..c0ed080 100644 --- a/tile_map.gd +++ b/tile_map.gd @@ -1,32 +1,88 @@ extends TileMap -var GridSize = 16 +var GridSize = 33 var Dic = {} var Building_Mode: bool = false +func generate_percentage(percentages: Array): + var array_length = 0 + for percentage in percentages.size(): + if percentages[percentage] < 0: + percentages[percentage] = 0 + array_length += percentages[percentage] + + var arr: Array + arr.resize(array_length) + var sum = 0 + for percentage in percentages.size(): + for num in percentages[percentage]: + arr[num + sum] = percentage + sum += percentages[percentage] + return arr[randi()%array_length] + 1 + +func abs(num: int): + if num < 0: + num = -num + return num + func _ready(): for x in GridSize: for y in GridSize: + var layer_number: int + var x_value: int = abs(GridSize/2 - x) + var y_value: int = abs(GridSize/2 - y) + var max_value: int = maxi(x_value, y_value) + match max_value: + 16,15: + layer_number = 1 + 14: + layer_number = generate_percentage([3,1]) + 13: + layer_number = generate_percentage([2,1]) + 12: + layer_number = generate_percentage([1,1]) + 11: + layer_number = generate_percentage([1,2,1]) + 10: + layer_number = generate_percentage([0,3,2]) + 9: + layer_number = generate_percentage([0,1,1]) + 8: + layer_number = generate_percentage([0,1,2,1]) + 7: + layer_number = generate_percentage([0,0,3,2]) + 6: + layer_number = generate_percentage([0,0,1,1]) + 5: + layer_number = generate_percentage([0,0,1,2,1]) + 4: + layer_number = generate_percentage([0,0,0,3,2]) + 3: + layer_number = generate_percentage([0,0,0,1,1]) + 2: + layer_number = generate_percentage([0,0,0,1,2]) + 1,0: + layer_number = 5 + print("x- ",x," y- ",y," layer- ",layer_number) + for layer in layer_number: + set_cell(layer, Vector2(x, y), 0, Vector2i(0,0), 0) Dic[str(Vector2(x,y))] = { - #"Type": "Ground", + "Layer": layer_number, "Placed": false } - set_cell(0, Vector2(x, y), 0, Vector2i(0,0), 0) - + func _process(delta): - #if (Input.is_action_just_pressed("rclick")): - - if Building_Mode: var tile = local_to_map(get_global_mouse_position()) for x in GridSize: for y in GridSize: if !Dic[str(Vector2(x,y))].get("Placed"): - erase_cell(1, Vector2(x,y)) + erase_cell(Dic[str(Vector2(x,y))].get("Layer"), Vector2(x,y)) + pass if Dic.has(str(tile)): - set_cell(1, tile, 1, Vector2i(0,0), 0) + set_cell(Dic[str(tile)].get("Layer"), tile, 1, Vector2i(0,0), 0) func _on_mouse_handler_clicked(): @@ -40,4 +96,5 @@ func _on_mouse_handler_rclicked(): for x in GridSize: for y in GridSize: if !Dic[str(Vector2(x,y))].get("Placed"): - erase_cell(1, Vector2(x,y)) + erase_cell(Dic[str(Vector2(x,y))].get("Layer"), Vector2(x,y)) + pass