diff --git a/Scenes/Main/main.gd b/Scenes/Main/main.gd new file mode 100644 index 0000000..54d70fb --- /dev/null +++ b/Scenes/Main/main.gd @@ -0,0 +1,14 @@ +extends Node + +@onready var _Map = $Map +@onready var _Player = $Player +@onready var _Camera = $WorldCamera + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + _Map.populate_terrain(_Camera.global_position) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/Scenes/Main/main.gd.uid b/Scenes/Main/main.gd.uid new file mode 100644 index 0000000..3f87e67 --- /dev/null +++ b/Scenes/Main/main.gd.uid @@ -0,0 +1 @@ +uid://btdvxp8ckmeb3 diff --git a/Scenes/Main/main.tscn b/Scenes/Main/main.tscn new file mode 100644 index 0000000..becd3d7 --- /dev/null +++ b/Scenes/Main/main.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=4 format=3 uid="uid://d05j5yuhlsxp0"] + +[ext_resource type="PackedScene" uid="uid://cywuuce71rmgb" path="res://Scenes/Map/map.tscn" id="1_1r6ip"] +[ext_resource type="Script" uid="uid://btdvxp8ckmeb3" path="res://Scenes/Main/main.gd" id="1_qw60k"] +[ext_resource type="PackedScene" uid="uid://dh8pjs2s1kud3" path="res://Scenes/Player/player.tscn" id="2_lixft"] + +[node name="Main" type="Node"] +script = ExtResource("1_qw60k") + +[node name="Map" parent="." instance=ExtResource("1_1r6ip")] + +[node name="Player" parent="." instance=ExtResource("2_lixft")] + +[node name="WorldCamera" type="Camera2D" parent="."] + +[editable path="Player"] diff --git a/Scenes/Main/world_camera.gd b/Scenes/Main/world_camera.gd new file mode 100644 index 0000000..ab1c6a7 --- /dev/null +++ b/Scenes/Main/world_camera.gd @@ -0,0 +1,11 @@ +extends Camera2D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/Scenes/Main/world_camera.gd.uid b/Scenes/Main/world_camera.gd.uid new file mode 100644 index 0000000..3e3b047 --- /dev/null +++ b/Scenes/Main/world_camera.gd.uid @@ -0,0 +1 @@ +uid://cpp4vte6rs37q diff --git a/tile_map_layer.gd b/Scenes/Map/Map.gd similarity index 91% rename from tile_map_layer.gd rename to Scenes/Map/Map.gd index a81cb15..847b527 100644 --- a/tile_map_layer.gd +++ b/Scenes/Map/Map.gd @@ -50,6 +50,13 @@ func _on_exited_chunk(): var thread: Thread = Thread.new() thread.start(func(): _populate_terrain()) thread.wait_to_finish() + +func populate_terrain(startPos: Vector2i): + for i in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): + for j in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): + var pos: Vector2i = startPos + Vector2i(i, j) + if _is_empty(pos): + _populate_cell(pos, 1, _pick_random_tile()) func _populate_terrain(): var player_position: Vector2i = _get_player_position() diff --git a/tile_map_layer.gd.uid b/Scenes/Map/Map.gd.uid similarity index 100% rename from tile_map_layer.gd.uid rename to Scenes/Map/Map.gd.uid diff --git a/Scenes/Map/map.tscn b/Scenes/Map/map.tscn new file mode 100644 index 0000000..a9e708b --- /dev/null +++ b/Scenes/Map/map.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=5 format=3 uid="uid://cywuuce71rmgb"] + +[ext_resource type="Script" uid="uid://dneqmqsd8yj4p" path="res://Scenes/Map/Map.gd" id="1_anho1"] +[ext_resource type="TileSet" uid="uid://duodt2t14xjc8" path="res://Resource/UrbanKitTileMap.tres" id="2_fyo8k"] +[ext_resource type="Script" uid="uid://bapvlrx6dm7gu" path="res://Scenes/Map/visible_on_screen_notifier_2d.gd" id="3_eu35m"] + +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_vjcy3"] + +[node name="Map" type="Node"] +script = ExtResource("1_anho1") + +[node name="Ground" type="TileMapLayer" parent="."] +tile_set = ExtResource("2_fyo8k") +metadata/_edit_lock_ = true + +[node name="Roads" type="TileMapLayer" parent="."] +tile_set = ExtResource("2_fyo8k") +metadata/_edit_lock_ = true + +[node name="Buildings" type="TileMapLayer" parent="."] +tile_set = ExtResource("2_fyo8k") +metadata/_edit_lock_ = true + +[node name="Details" type="TileMapLayer" parent="."] +tile_set = ExtResource("2_fyo8k") +metadata/_edit_lock_ = true + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] +rect = Rect2(0, 0, 100, 100) +script = ExtResource("3_eu35m") +metadata/_edit_lock_ = true +metadata/_edit_group_ = true + +[node name="Sprite2D" type="Sprite2D" parent="VisibleOnScreenNotifier2D"] +position = Vector2(50, 50) +scale = Vector2(10, 10) +texture = SubResource("PlaceholderTexture2D_vjcy3") + +[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_exited_chunk"] diff --git a/visible_on_screen_notifier_2d.gd b/Scenes/Map/visible_on_screen_notifier_2d.gd similarity index 100% rename from visible_on_screen_notifier_2d.gd rename to Scenes/Map/visible_on_screen_notifier_2d.gd diff --git a/visible_on_screen_notifier_2d.gd.uid b/Scenes/Map/visible_on_screen_notifier_2d.gd.uid similarity index 100% rename from visible_on_screen_notifier_2d.gd.uid rename to Scenes/Map/visible_on_screen_notifier_2d.gd.uid diff --git a/player.gd b/Scenes/Player/player.gd similarity index 100% rename from player.gd rename to Scenes/Player/player.gd diff --git a/player.gd.uid b/Scenes/Player/player.gd.uid similarity index 100% rename from player.gd.uid rename to Scenes/Player/player.gd.uid diff --git a/Scenes/Player/player.tscn b/Scenes/Player/player.tscn new file mode 100644 index 0000000..986d884 --- /dev/null +++ b/Scenes/Player/player.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=5 format=3 uid="uid://dh8pjs2s1kud3"] + +[ext_resource type="Script" uid="uid://q6cxagn6igja" path="res://Scenes/Player/player.gd" id="1_a3d8c"] +[ext_resource type="Texture2D" uid="uid://04ecsvg7ausn" path="res://icon.svg" id="2_xpcdj"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_c3an2"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_xpcdj") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_vjcy3"] +size = Vector2(32, 32) + +[node name="Player" type="Area2D" groups=["player"]] +script = ExtResource("1_a3d8c") +metadata/_edit_group_ = true +metadata/_edit_lock_ = true + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(4.76837e-07, -4.76837e-07) +scale = Vector2(0.25, 0.25) +sprite_frames = SubResource("SpriteFrames_c3an2") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_vjcy3") + +[node name="PlayerCamera" type="Camera2D" parent="."] +zoom = Vector2(4, 4) diff --git a/main.tscn b/main.tscn deleted file mode 100644 index c580fa7..0000000 --- a/main.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://0sq0jwsrvb42"] - -[ext_resource type="PackedScene" uid="uid://bjsl1pit6rusp" path="res://tile_map_layer.tscn" id="1_ig7tw"] - -[node name="Main" type="Node"] - -[node name="Map" parent="." instance=ExtResource("1_ig7tw")] diff --git a/project.godot b/project.godot index def61c4..cb31d62 100644 --- a/project.godot +++ b/project.godot @@ -11,13 +11,16 @@ config_version=5 [application] config/name="TurnBasedStrategyGame" +run/main_scene="uid://d05j5yuhlsxp0" config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" [display] -window/size/viewport_width=540 -window/size/viewport_height=960 +window/size/viewport_width=800 +window/size/viewport_height=450 +window/size/initial_position_type=3 +window/size/initial_screen=1 [dotnet] diff --git a/tile_map_layer.tscn b/tile_map_layer.tscn deleted file mode 100644 index 2ea360c..0000000 --- a/tile_map_layer.tscn +++ /dev/null @@ -1,72 +0,0 @@ -[gd_scene load_steps=9 format=4 uid="uid://bjsl1pit6rusp"] - -[ext_resource type="TileSet" uid="uid://duodt2t14xjc8" path="res://Resource/UrbanKitTileMap.tres" id="1_0ugm7"] -[ext_resource type="Script" uid="uid://dneqmqsd8yj4p" path="res://tile_map_layer.gd" id="1_vqaso"] -[ext_resource type="Script" uid="uid://q6cxagn6igja" path="res://player.gd" id="3_c3an2"] -[ext_resource type="Texture2D" uid="uid://04ecsvg7ausn" path="res://icon.svg" id="3_uuaxm"] -[ext_resource type="Script" uid="uid://bapvlrx6dm7gu" path="res://visible_on_screen_notifier_2d.gd" id="3_vjcy3"] - -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_vjcy3"] - -[sub_resource type="SpriteFrames" id="SpriteFrames_c3an2"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": ExtResource("3_uuaxm") -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_vjcy3"] -size = Vector2(32, 32) - -[node name="Map" type="Node"] -script = ExtResource("1_vqaso") - -[node name="Ground" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAAAAAAAQAJAAEAAAAAAAEAAQAJAAEAAAAAAAIAAQAJAAEAAAAAAAMAAQAJAAEAAAAAAAQAAQAJAAEAAAAAAAUAAQAJAAIAAAABAAAAAQAJAAEAAAABAAEAAQAJAAEAAAABAAIAAQAJAAEAAAABAAMAAQAJAAEAAAABAAQAAQAJAAEAAAABAAUAAQAJAAIAAAACAAAAAQAJAAEAAAACAAEAAQAJAAEAAAACAAIAAQAJAAEAAAACAAMAAQAJAAEAAAACAAQAAQAJAAEAAAACAAUAAQAJAAIAAAADAAAAAQAKAAEAAAADAAEAAQAKAAEAAAADAAIAAQAKAAEAAAADAAMAAQAKAAEAAAADAAQAAQAKAAEAAAADAAUAAQAKAAIAAAAEAAAAAQABAAEAAAAEAAEAAQABAAEAAAAEAAIAAQABAAEAAAAEAAMAAQABAAEAAAAEAAQAAQABAAEAAAAEAAUAAQABAAEAAAAFAAAAAQABAAEAAAAFAAEAAQABAAEAAAAFAAIAAQABAAEAAAAFAAMAAQABAAEAAAAFAAQAAQABAAEAAAAFAAUAAQABAAEAAAAGAAAAAQABAAEAAAAGAAEAAQABAAEAAAAGAAIAAQABAAEAAAAGAAMAAQABAAEAAAAGAAQAAQABAAEAAAAGAAUAAQABAAEAAAAAAAYAAQABAAEAAAABAAYAAQABAAEAAAACAAYAAQABAAEAAAADAAYAAQABAAEAAAAEAAYAAQABAAEAAAAFAAYAAQABAAEAAAAGAAYAAQABAAEAAADv/+P/AQAAAAEAAADv/+T/AQAAAAEAAADv/+X/AQAAAAEAAADv/+b/AQAAAAEAAADv/+f/AQAAAAEAAADv/+j/AQAAAAEAAADv/+n/AQAAAAEAAADv/+r/AQAAAAEAAADv/+v/AQAAAAEAAADv/+z/AQAAAAEAAADv/+3/AQAAAAEAAADv/+7/AQAAAAEAAADv/+//AQAAAAEAAADv//D/AQAAAAEAAADv//H/AQAAAAEAAADv//L/AQAAAAEAAADv//P/AQAAAAEAAADv//T/AQAAAAEAAADv//X/AQAAAAEAAADv//b/AQAAAAEAAADv//f/AQAAAAEAAADv//j/AQAAAAEAAADv//n/AQAAAAEAAADv//r/AQAAAAEAAADv//v/AQAAAAEAAADv//z/AQAAAAEA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AAAMAOL/AQABAAAAAAANAOL/AQABAAAAAAAOAOL/AQABAAAAAAAPAOL/AQABAAAAAAAQAOL/AQACAAAAAADv/+L/AQAAAAAAAADv/x0AAQAAAAIAAAAQAB0AAQACAAIAAAD8//r/AQAIAAAAAAD8//v/AQAIAAEAAAD8//z/AQAIAAEAAAD8//3/AQAIAAEAAAD8//7/AQAIAAEAAAD8////AQAIAAEAAAD8/wAAAQAIAAEAAAD8/wEAAQAIAAEAAAD8/wIAAQAIAAEAAAD8/wMAAQAIAAEAAAD8/wQAAQAIAAEAAAD8/wUAAQAIAAIAAAD9//r/AQAJAAAAAAD9//v/AQAJAAEAAAD9//z/AQAJAAEAAAD9//3/AQAJAAEAAAD9//7/AQAJAAEAAAD9////AQAJAAEAAAD9/wAAAQAJAAEAAAD9/wEAAQAJAAEAAAD9/wIAAQAJAAEAAAD9/wMAAQAJAAEAAAD9/wQAAQAJAAEAAAD9/wUAAQAJAAIAAAD+//r/AQAJAAAAAAD+//v/AQAJAAEAAAD+//z/AQAJAAEAAAD+//3/AQAJAAEAAAD+//7/AQAJAAEAAAD+////AQAJAAEAAAD+/wAAAQAJAAEAAAD+/wEAAQAJAAEAAAD+/wIAAQAJAAEAAAD+/wMAAQAJAAEAAAD+/wQAAQAJAAEAAAD+/wUAAQAJAAIAAAD///r/AQAJAAAAAAD///v/AQAJAAEAAAD///z/AQAJAAEAAAD///3/AQAJAAEAAAD///7/AQAJAAEAAAD/////AQAJAAEAAAD//wAAAQAJAAEAAAD//wEAAQAJAAEAAAD//wIAAQAJAAEAAAD//wMAAQAJAAEAAAD//wQAAQAJAAEAAAD//wUAAQAJAAIAAAAAAPr/AQAJAAAAAAAAAPv/AQAJAAEAAAAAAPz/AQAJAAEAAAAAAP3/AQAJAAEAAAAAAP7/AQAJAAEAAAAAAP//AQAJAAEAAAABAPr/AQAJAAAAAAABAPv/AQAJAAEAAAABAPz/AQAJAAEAAAABAP3/AQAJAAEAAAABAP7/AQAJAAEAAAABAP//AQAJAAEAAAACAPr/AQAJAAAAAAACAPv/AQAJAAEAAAACAPz/AQAJAAEAAAACAP3/AQAJAAEAAAACAP7/AQAJAAEAAAACAP//AQAJAAEAAAADAPr/AQAKAAAAAAADAPv/AQAKAAEAAAADAPz/AQAKAAEAAAADAP3/AQAKAAEAAAADAP7/AQAKAAEAAAADAP//AQAKAAEAAAA=") -tile_set = ExtResource("1_0ugm7") -metadata/_edit_lock_ = true - -[node name="Roads" type="TileMapLayer" parent="."] -tile_set = ExtResource("1_0ugm7") -metadata/_edit_lock_ = true - -[node name="Buildings" type="TileMapLayer" parent="."] -tile_set = ExtResource("1_0ugm7") -metadata/_edit_lock_ = true - -[node name="Details" type="TileMapLayer" parent="."] -tile_set = ExtResource("1_0ugm7") -metadata/_edit_lock_ = true - -[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] -rect = Rect2(0, 0, 100, 100) -script = ExtResource("3_vjcy3") -metadata/_edit_lock_ = true -metadata/_edit_group_ = true - -[node name="Sprite2D" type="Sprite2D" parent="VisibleOnScreenNotifier2D"] -position = Vector2(50, 50) -scale = Vector2(10, 10) -texture = SubResource("PlaceholderTexture2D_vjcy3") - -[node name="Player" type="Area2D" parent="." groups=["player"]] -script = ExtResource("3_c3an2") -metadata/_edit_group_ = true -metadata/_edit_lock_ = true - -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Player"] -position = Vector2(4.76837e-07, -4.76837e-07) -scale = Vector2(0.25, 0.25) -sprite_frames = SubResource("SpriteFrames_c3an2") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Player"] -shape = SubResource("RectangleShape2D_vjcy3") - -[node name="Camera2D" type="Camera2D" parent="Player"] -zoom = Vector2(4, 4) - -[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_exited_chunk"]