From acda2b1bc09dbacd123fbecdd22c137712009bba Mon Sep 17 00:00:00 2001 From: Eduardo Date: Mon, 6 May 2024 01:44:42 +0200 Subject: [PATCH] base level, base enemy and a basic player --- components/base_enemy/BaseEnemy.tscn | 17 +++++++ components/base_enemy/base_enemy.gd | 8 ++++ components/player/Player.tscn | 18 ++++++++ components/player/player.gd | 19 ++++++++ examples/licenses/license_selector.gd | 66 +++++++++++++-------------- project.godot | 35 ++++++++++++++ scenes/base_level/BaseLevel.tscn | 45 +++++++++++++++++- 7 files changed, 174 insertions(+), 34 deletions(-) create mode 100644 components/base_enemy/BaseEnemy.tscn create mode 100644 components/base_enemy/base_enemy.gd create mode 100644 components/player/Player.tscn create mode 100644 components/player/player.gd diff --git a/components/base_enemy/BaseEnemy.tscn b/components/base_enemy/BaseEnemy.tscn new file mode 100644 index 0000000..a1cab8c --- /dev/null +++ b/components/base_enemy/BaseEnemy.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://dqlcf1ywp5g8y"] + +[ext_resource type="Script" path="res://components/base_enemy/base_enemy.gd" id="1_j54ho"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_tsbn1"] + +[node name="BaseEnemy" type="CharacterBody2D"] +script = ExtResource("1_j54ho") + +[node name="Polygon2D" type="Polygon2D" parent="."] +scale = Vector2(-14.967, 0.809) +color = Color(0.977584, 0, 0.378156, 1) +polygon = PackedVector2Array(-0.267257, -4.94762, -0.367478, 0, -0.267257, 4.94762, 0, 6.80297, 0.267257, 4.94762, 0.367478, 0, 0.267257, -4.94762, 0, -6.80297) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2(0.5, 0.5) +shape = SubResource("CircleShape2D_tsbn1") diff --git a/components/base_enemy/base_enemy.gd b/components/base_enemy/base_enemy.gd new file mode 100644 index 0000000..c126378 --- /dev/null +++ b/components/base_enemy/base_enemy.gd @@ -0,0 +1,8 @@ +extends CharacterBody2D + +@export var SPEED = 150.0 +@export var player: CharacterBody2D + +func _physics_process(_delta): + velocity = position.direction_to(player.position) * SPEED + move_and_slide() diff --git a/components/player/Player.tscn b/components/player/Player.tscn new file mode 100644 index 0000000..fd7eb5b --- /dev/null +++ b/components/player/Player.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=3 format=3 uid="uid://bccbpnau6es8"] + +[ext_resource type="Script" path="res://components/player/player.gd" id="1_twtc0"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_oxutk"] + +[node name="Player" type="CharacterBody2D"] +motion_mode = 1 +script = ExtResource("1_twtc0") + +[node name="Polygon2D" type="Polygon2D" parent="."] +scale = Vector2(-29.9338, 1.61694) +color = Color(0, 0.564706, 0.858824, 1) +polygon = PackedVector2Array(-0.267257, -4.94762, -0.367478, 0, -0.267257, 4.94762, 0, 6.80297, 0.267257, 4.94762, 0.367478, 0, 0.267257, -4.94762, 0, -6.80297) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2(1, 1) +shape = SubResource("CircleShape2D_oxutk") diff --git a/components/player/player.gd b/components/player/player.gd new file mode 100644 index 0000000..555c869 --- /dev/null +++ b/components/player/player.gd @@ -0,0 +1,19 @@ +extends CharacterBody2D + + +const SPEED = 300.0 + + +func _physics_process(_delta): + var x_force = ( + Input.get_action_strength("ui_right") + - Input.get_action_strength("ui_left") + ) + + var y_force = ( + Input.get_action_strength("ui_down") + - Input.get_action_strength("ui_up") + ) + + velocity = Vector2(x_force, y_force) * SPEED + move_and_slide() diff --git a/examples/licenses/license_selector.gd b/examples/licenses/license_selector.gd index 013ba00..48f966f 100644 --- a/examples/licenses/license_selector.gd +++ b/examples/licenses/license_selector.gd @@ -9,44 +9,44 @@ const LicenseContainer := preload("license_container.gd") var licenses: Array[Component] = [] func _ready() -> void: - self.item_selected.connect(self._on_item_selected) - var res: Licenses.LoadResult = Licenses.load(Licenses.get_license_data_filepath()) - if res.err_msg != "": - return - self.licenses = res.components - self.licenses.append_array(Licenses.get_required_engine_components()) - self.licenses.sort_custom(Licenses.new().compare_components_ascending) - - # create items - var category_cache: Dictionary = {} - var root: TreeItem = self.create_item(null) - category_cache[""] = root - var idx: int = 0 - - while idx < len(self.licenses): - var component: Component = self.licenses[idx] - self._add_component(component, category_cache, root, idx) - idx = idx + 1 + self.item_selected.connect(self._on_item_selected) + var res: Licenses.LoadResult = Licenses.load(Licenses.get_license_data_filepath()) + if res.err_msg != "": + return + self.licenses = res.components + self.licenses.append_array(Licenses.get_required_engine_components()) + self.licenses.sort_custom(Licenses.new().compare_components_ascending) + + # create items + var category_cache: Dictionary = {} + var root: TreeItem = self.create_item(null) + category_cache[""] = root + var idx: int = 0 + + while idx < len(self.licenses): + var component: Component = self.licenses[idx] + self._add_component(component, category_cache, root, idx) + idx = idx + 1 func _create_category_item(category_cache: Dictionary, category: String, root: TreeItem) -> TreeItem: - if category in category_cache: - return category_cache[category] - var category_item: TreeItem - category_item = self.create_item(root) - category_item.set_text(0, category) - category_item.set_selectable(0, false) - category_cache[category] = category_item - return category_item + if category in category_cache: + return category_cache[category] + var category_item: TreeItem + category_item = self.create_item(root) + category_item.set_text(0, category) + category_item.set_selectable(0, false) + category_cache[category] = category_item + return category_item func _add_tree_item(component: Component, idx: int, parent: TreeItem) -> TreeItem: - var item: TreeItem = self.create_item(parent) - item.set_text(0, component.name) - item.set_meta("idx", idx) - return item + var item: TreeItem = self.create_item(parent) + item.set_text(0, component.name) + item.set_meta("idx", idx) + return item func _add_component(component: Component, category_cache: Dictionary, root: TreeItem, idx: int) -> TreeItem: - var parent: TreeItem = self._create_category_item(category_cache, component.category, root) - return self._add_tree_item(component, idx, parent) + var parent: TreeItem = self._create_category_item(category_cache, component.category, root) + return self._add_tree_item(component, idx, parent) func _on_item_selected() -> void: - self._license_container.set_component(self.licenses[self.get_selected().get_meta("idx")]) + self._license_container.set_component(self.licenses[self.get_selected().get_meta("idx")]) diff --git a/project.godot b/project.godot index 3dcc7e4..3f66e42 100644 --- a/project.godot +++ b/project.godot @@ -51,6 +51,41 @@ folder_colors={ "res://scenes/": "blue" } +[input] + +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} + [rendering] renderer/rendering_method="mobile" diff --git a/scenes/base_level/BaseLevel.tscn b/scenes/base_level/BaseLevel.tscn index e815bb8..c6025fc 100644 --- a/scenes/base_level/BaseLevel.tscn +++ b/scenes/base_level/BaseLevel.tscn @@ -1,6 +1,49 @@ -[gd_scene load_steps=2 format=3 uid="uid://bvcxabiipiqj1"] +[gd_scene load_steps=4 format=3 uid="uid://bvcxabiipiqj1"] [ext_resource type="Script" path="res://scenes/base_level/base_level.gd" id="1_3skoo"] +[ext_resource type="PackedScene" uid="uid://bccbpnau6es8" path="res://components/player/Player.tscn" id="2_bnj2l"] +[ext_resource type="PackedScene" uid="uid://dqlcf1ywp5g8y" path="res://components/base_enemy/BaseEnemy.tscn" id="3_5olto"] [node name="BaseLevel" type="Node2D"] script = ExtResource("1_3skoo") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] + +[node name="Player" parent="." instance=ExtResource("2_bnj2l")] +position = Vector2(960, 540) + +[node name="BaseEnemy" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(1200, 440) +player = NodePath("../Player") + +[node name="BaseEnemy2" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(1824, 72) +player = NodePath("../Player") + +[node name="BaseEnemy3" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(168, 640) +player = NodePath("../Player") + +[node name="BaseEnemy4" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(616, 168) +player = NodePath("../Player") + +[node name="BaseEnemy5" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(-88, 160) +player = NodePath("../Player") + +[node name="BaseEnemy6" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(2144, 960) +player = NodePath("../Player") + +[node name="BaseEnemy7" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(2152, 1128) +player = NodePath("../Player") + +[node name="BaseEnemy8" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(2000, 1256) +player = NodePath("../Player") + +[node name="BaseEnemy9" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5olto")] +position = Vector2(1720, 1328) +player = NodePath("../Player") -- 2.30.2