diff --git a/addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn b/addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn index f026a43..fe426be 100644 --- a/addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn +++ b/addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=2 format=3 uid="uid://bsg0351mx3b4u"] +[gd_scene load_steps=2 format=3 uid="uid://do7abukgd54js"] [ext_resource type="Script" path="res://addons/MetroidvaniaSystem/Scripts/RoomInstance.gd" id="1_oi7y8"] -[node name="RoomInstance" type="Node2D"] +[node name="RoomInstance" type="Node3D"] script = ExtResource("1_oi7y8") diff --git a/addons/MetroidvaniaSystem/Scripts/RoomInstance.gd b/addons/MetroidvaniaSystem/Scripts/RoomInstance.gd index d2b74a1..8aab274 100644 --- a/addons/MetroidvaniaSystem/Scripts/RoomInstance.gd +++ b/addons/MetroidvaniaSystem/Scripts/RoomInstance.gd @@ -2,7 +2,7 @@ ## A node representing MetSys room. ## ## RoomInstance is a node that allows for integration between scenes and MetSys database. In editor it will provide drawing for room bounds and in game it provides some helper methods for interacting with the map data. [code]RoomInstance.tscn[/code] scene is provided for convenience. You should add it to every scene used as MetSys room. It's recommended to put the node at [code](0, 0)[/code] global coordinates. -extends Node2D +extends Node3D var GRID_COLOR: Color var GRID_PASSAGE_COLOR: Color @@ -36,8 +36,6 @@ func _exit_tree() -> void: MetSys.current_room = null func _update_assigned_scene(): - queue_redraw() - var owner_node := owner if owner != null else self room_name = owner_node.scene_file_path.trim_prefix(MetSys.settings.map_root_folder) cells = MetSys.map_data.get_cells_assigned_to(room_name) @@ -80,26 +78,3 @@ func get_end_coords() -> Vector2i: ## Returns the room's layer. func get_layer() -> int: return layer - -func _draw() -> void: - if not Engine.is_editor_hint() or cells.is_empty(): - return - - for p in cells: - var coords := Vector2(p.x - min_cell.x, p.y - min_cell.y) - for i in 4: - var width := 1 - var color := GRID_COLOR - if MetSys.map_data.cells[p].get_border(i) > 0: - width = 2 - color = GRID_PASSAGE_COLOR - - match i: - MetroidvaniaSystem.R: - draw_rect(Rect2((coords + Vector2.RIGHT) * MetSys.settings.in_game_cell_size + Vector2(-width, 0), Vector2(width, MetSys.settings.in_game_cell_size.y)), color) - MetroidvaniaSystem.D: - draw_rect(Rect2((coords + Vector2.DOWN) * MetSys.settings.in_game_cell_size + Vector2(0, -width), Vector2(MetSys.settings.in_game_cell_size.x, width)), color) - MetroidvaniaSystem.L: - draw_rect(Rect2(coords * MetSys.settings.in_game_cell_size, Vector2(width, MetSys.settings.in_game_cell_size.y)), color) - MetroidvaniaSystem.U: - draw_rect(Rect2(coords * MetSys.settings.in_game_cell_size, Vector2(MetSys.settings.in_game_cell_size.x, width)), color) diff --git a/scene/character/player.tscn b/scene/character/player.tscn index 939395e..ccf9816 100644 --- a/scene/character/player.tscn +++ b/scene/character/player.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://ba7pkdaq5y8nl"] +[gd_scene load_steps=5 format=3 uid="uid://ba7pkdaq5y8nl"] [ext_resource type="PackedScene" uid="uid://ksxwg0alt2us" path="res://scene/character/character.tscn" id="1_pot50"] [ext_resource type="Script" path="res://script/character/player/combo.gd" id="2_i44w8"] [ext_resource type="Script" path="res://script/character/player/player_input.gd" id="3_n07go"] +[ext_resource type="PackedScene" uid="uid://do7abukgd54js" path="res://addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn" id="4_y06jp"] [node name="Character" instance=ExtResource("1_pot50")] @@ -16,3 +17,5 @@ script = ExtResource("3_n07go") [node name="Combo" type="Node3D" parent="." index="9"] unique_name_in_owner = true script = ExtResource("2_i44w8") + +[node name="RoomInstance" parent="." index="10" instance=ExtResource("4_y06jp")] diff --git a/scene/level/levelground0000.tscn b/scene/level/levelground0000.tscn new file mode 100644 index 0000000..284ca93 --- /dev/null +++ b/scene/level/levelground0000.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3 uid="uid://dmaphmg5c2frs"] + +[ext_resource type="ArrayMesh" uid="uid://cap7t5iwpjpi2" path="res://resource/level/levelground0000.vox" id="1_4p4uf"] +[ext_resource type="PackedScene" uid="uid://do7abukgd54js" path="res://addons/MetroidvaniaSystem/Nodes/RoomInstance.tscn" id="1_vsrgt"] + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_5umlp"] +data = PackedVector3Array(-6.4, 0, -6.4, -3.2, 0, -6.4, -3.2, 0, 6.4, -3.2, 0, 6.4, -6.4, 0, 6.4, -6.4, 0, -6.4, -3.2, 0, 3.2, 6.4, 0, 3.2, 6.4, 0, 6.4, 6.4, 0, 6.4, -3.2, 0, 6.4, -3.2, 0, 3.2, -3.2, 0, -3.2, 3.2, 0, -3.2, 3.2, 0, 3.2, 3.2, 0, 3.2, -3.2, 0, 3.2, -3.2, 0, -3.2, -3.2, 0, -6.4, 6.4, 0, -6.4, 6.4, 0, -3.2, 6.4, 0, -3.2, -3.2, 0, -3.2, -3.2, 0, -6.4, 3.2, 0, -3.2, 6.4, 0, -3.2, 6.4, 0, 3.2, 6.4, 0, 3.2, 3.2, 0, 3.2, 3.2, 0, -3.2, -3.2, -0.1, 6.4, -3.2, -0.1, -6.4, -6.4, -0.1, -6.4, -6.4, -0.1, -6.4, -6.4, -0.1, 6.4, -3.2, -0.1, 6.4, 6.4, -0.1, 6.4, 6.4, -0.1, 3.2, -3.2, -0.1, 3.2, -3.2, -0.1, 3.2, -3.2, -0.1, 6.4, 6.4, -0.1, 6.4, 3.2, -0.1, 3.2, 3.2, -0.1, -3.2, -3.2, -0.1, -3.2, -3.2, -0.1, -3.2, -3.2, -0.1, 3.2, 3.2, -0.1, 3.2, 6.4, -0.1, -3.2, 6.4, -0.1, -6.4, -3.2, -0.1, -6.4, -3.2, -0.1, -6.4, -3.2, -0.1, -3.2, 6.4, -0.1, -3.2, 6.4, -0.1, 3.2, 6.4, -0.1, -3.2, 3.2, -0.1, -3.2, 3.2, -0.1, -3.2, 3.2, -0.1, 3.2, 6.4, -0.1, 3.2, -6.4, 0, -6.4, -6.4, 0, 6.4, -6.4, -0.1, 6.4, -6.4, -0.1, 6.4, -6.4, -0.1, -6.4, -6.4, 0, -6.4, 6.4, 0, -6.4, 6.4, -0.1, -6.4, 6.4, -0.1, 6.4, 6.4, -0.1, 6.4, 6.4, 0, 6.4, 6.4, 0, -6.4, -6.4, -0.1, 6.4, -6.4, 0, 6.4, 6.4, 0, 6.4, 6.4, 0, 6.4, 6.4, -0.1, 6.4, -6.4, -0.1, 6.4, 6.4, 0, -6.4, -6.4, 0, -6.4, -6.4, -0.1, -6.4, -6.4, -0.1, -6.4, 6.4, -0.1, -6.4, 6.4, 0, -6.4) + +[node name="Levelground0000" type="Node3D"] + +[node name="Levelground0000" type="MeshInstance3D" parent="."] +mesh = ExtResource("1_4p4uf") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="Levelground0000"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Levelground0000/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_5umlp") + +[node name="RoomInstance" parent="." instance=ExtResource("1_vsrgt")] diff --git a/scene/ui/item/headbar.tscn b/scene/ui/item/headbar.tscn index b9b1dae..4c406d9 100644 --- a/scene/ui/item/headbar.tscn +++ b/scene/ui/item/headbar.tscn @@ -129,3 +129,13 @@ stretch_margin_bottom = 10 texture_under = ExtResource("2_g5t31") texture_progress = ExtResource("3_vh1p5") tint_progress = Color(0.0941176, 1, 0.992157, 1) + +[node name="PosLabel" type="Label" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 40.0 +offset_top = -8.0 +offset_right = 96.0 +offset_bottom = 6.0 +theme_override_font_sizes/font_size = 10 +text = "123,123" diff --git a/script/character/move.gd b/script/character/move.gd index df36403..093a186 100644 --- a/script/character/move.gd +++ b/script/character/move.gd @@ -16,6 +16,9 @@ func _physics_process(delta): if character.velocity: SignalManager.character_pos_changed.emit(character.id(),character.pos()) SignalManager.character_ui_pos_changed.emit(character.id(),character.ui_pos()) + MetSys.set_player_position(character.pos2D()) + if character.velocity.length()>0: + SignalManager.character_status_changed.emit(status.id,"pos2d",character.pos2D()) func update_on_floor(delta): status.is_on_floor = character.is_on_floor() diff --git a/script/manager/game_manager.gd b/script/manager/game_manager.gd index e2fa67c..bb8d7d6 100644 --- a/script/manager/game_manager.gd +++ b/script/manager/game_manager.gd @@ -3,6 +3,7 @@ extends Node3D @onready var character_manager = (%CharacterManager as CharacterManager) func _ready(): + MetSys.set_save_data() character_manager.create_character(ResourceManager.cfg_character_player,Enum.ETeam.Player,Vector3(0,1,0)) character_manager.create_character(ResourceManager.cfg_character_monster_test,Enum.ETeam.Monster,Vector3(0.5,1,0)) diff --git a/script/ui/headbar/headbar.gd b/script/ui/headbar/headbar.gd index 7ea1e6e..875cdce 100644 --- a/script/ui/headbar/headbar.gd +++ b/script/ui/headbar/headbar.gd @@ -8,6 +8,7 @@ class_name Headbar @onready var stun_bar = (%StunBar as TextureProgressBar) @onready var mp_bar = (%MpBar as TextureProgressBar) @onready var mp_sub_bar = (%MpSubBar as TextureProgressBar) +@onready var pos_lable = (%PosLabel as Label) var hit_text_damage_cache : HitText @@ -21,6 +22,7 @@ func on_mp_changed(value):mp_bar.value = value func on_mp_max_changed(value):mp_bar.max_value = value func on_mp_sub_changed(value):mp_sub_bar.value = value func on_mp_sub_max_changed(value):mp_sub_bar.max_value = value +func on_pos2d_changed(value):pos_lable.text = "(%.2f,%.2f)"%[value.x,value.y] func on_hit_text(value:String): var hit_text = get_hit_text_object() diff --git a/setting/MapData.txt b/setting/MapData.txt index a247b89..8836c56 100644 --- a/setting/MapData.txt +++ b/setting/MapData.txt @@ -1,250 +1,250 @@ -[1,0,10] +[1,0,0] 0,0,0,-1||| -[1,1,10] +[1,1,0] -1,0,0,0||| -[0,2,10] +[0,2,0] -1,0,-1,0||| -[2,1,10] +[2,1,0] 0,0,-1,0||| -[2,-1,10] +[2,-1,0] 0,-1,0,0|11d4e3,,,,|| -[2,0,10] +[2,0,0] 0,0,0,-1|11d4e3,,,,|| -[0,-1,10] +[0,-1,0] 0,0,0,0|11d4e3,,,,|| -[2,2,10] +[2,2,0] 0,0,0,0|11d4e3,,,,|| -[-1,2,10] +[-1,2,0] -1,0,0,0||| -[1,2,10] +[1,2,0] 0,0,-1,0||| -[0,0,10] -0,-1,0,0||| -[0,1,10] -0,0,0,-1||| -[3,1,10] +[0,0,0] +0,-1,0,0|||/levelground0000.tscn +[0,1,0] +0,0,0,-1|||/levelground0000.tscn +[3,1,0] 0,0,0,0|c70000,,,,|| -[-2,1,10] +[-2,1,0] -1,0,0,0||| -[-1,1,10] +[-1,1,0] 0,0,-1,0||| -[1,-1,10] +[1,-1,0] 0,-1,0,0||| -[-1,-1,10] +[-1,-1,0] 0,-1,0,0||| -[-1,0,10] +[-1,0,0] 0,0,0,-1||| -[-2,-1,10] +[-2,-1,0] 0,-1,0,0|11d4e3,,,,|| -[-2,0,10] +[-2,0,0] 0,0,0,-1|11d4e3,,,,|| -[-2,2,10] +[-2,2,0] 0,0,0,0|11d4e3,,,,|| -[-1,-3,10] +[-1,-3,0] -1,-1,0,0||| -[-1,-2,10] +[-1,-2,0] -1,0,0,-1||| -[0,-3,10] +[0,-3,0] -1,-1,-1,0||| -[0,-2,10] +[0,-2,0] -1,0,-1,-1||| -[1,-3,10] +[1,-3,0] 0,-1,-1,0||| -[1,-2,10] +[1,-2,0] 0,0,-1,-1||| -[4,1,10] +[4,1,0] 0,0,0,-1|c70000,,,,|| -[4,0,10] +[4,0,0] 0,-1,0,0|c70000,,,,|| -[5,0,10] +[5,0,0] -1,0,0,0|c70000,,,,|| -[6,0,10] +[6,0,0] 0,0,-1,0|c70000,,,,|| -[7,0,10] +[7,0,0] 0,0,0,0|660072,,,,|| -[8,0,10] +[8,0,0] -1,0,0,0|c70000,,,,|| -[9,0,10] +[9,0,0] 0,0,-1,0|c70000,,,,|| -[10,0,10] +[10,0,0] 0,0,0,0|11e31e,,,,|| -[11,-1,10] +[11,-1,0] -1,-1,0,0|720000,,,,|| -[11,0,10] +[11,0,0] -1,0,0,-1|720000,,,,|| -[12,-1,10] +[12,-1,0] 0,-1,-1,0|720000,,,,|| -[12,0,10] +[12,0,0] 0,0,-1,-1|720000,,,,|| -[12,-3,10] +[12,-3,0] 0,-1,0,0||| -[12,-2,10] +[12,-2,0] 0,0,0,-1||| -[10,-3,10] +[10,-3,0] -1,0,0,0||| -[11,-3,10] +[11,-3,0] 0,0,-1,0||| -[0,3,10] +[0,3,0] -1,0,0,0||| -[1,3,10] +[1,3,0] -1,0,-1,0||| -[2,3,10] +[2,3,0] 0,0,-1,0||| -[0,4,10] +[0,4,0] 0,0,0,0||| -[3,3,10] +[3,3,0] -1,0,0,0|c70000,,,,|| -[4,3,10] +[4,3,0] 0,0,-1,0|c70000,,,,|| -[6,1,10] +[6,1,0] 0,-1,0,0|c70000,,,,|| -[6,2,10] +[6,2,0] 0,0,0,-1|c70000,,,,|| -[5,3,10] +[5,3,0] -1,-1,0,0|c70000,,,,|| -[5,4,10] +[5,4,0] -1,0,0,-1|c70000,,,,|| -[6,3,10] +[6,3,0] 0,-1,-1,0|c70000,,,,|| -[6,4,10] +[6,4,0] 0,0,-1,-1|c70000,,,,|| -[4,5,10] +[4,5,0] 0,0,0,0|11e31e,,,,|| -[2,5,10] +[2,5,0] -1,-1,0,0|720000,,,,|| -[2,6,10] +[2,6,0] -1,0,0,-1|720000,,,,|| -[3,5,10] +[3,5,0] 0,-1,-1,0|720000,,,,|| -[3,6,10] +[3,6,0] 0,0,-1,-1|720000,,,,|| -[7,3,10] +[7,3,0] 0,0,0,0|11e31e,,,,|| -[8,2,10] +[8,2,0] -1,-1,0,0|720000,,,,|| -[8,3,10] +[8,3,0] -1,0,0,-1|720000,,,,|| -[9,2,10] +[9,2,0] 0,-1,-1,0|720000,,,,|| -[9,3,10] +[9,3,0] 0,0,-1,-1|720000,,,,|| -[7,4,10] +[7,4,0] -1,0,0,0|c70000,,,,|| -[8,4,10] +[8,4,0] -1,0,-1,0|c70000,,,,|| -[9,4,10] +[9,4,0] 0,0,-1,0|c70000,,,,|| -[12,1,10] +[12,1,0] -1,0,0,0|c70000,,,,|| -[13,1,10] +[13,1,0] 0,0,-1,0|c70000,,,,|| -[14,0,10] +[14,0,0] 0,-1,0,0|c70000,,,,|| -[14,1,10] +[14,1,0] 0,0,0,-1|c70000,,,,|| -[10,3,10] +[10,3,0] -1,-1,0,0|c70000,,,,|| -[10,4,10] +[10,4,0] -1,0,0,-1|c70000,,,,|| -[11,3,10] +[11,3,0] 0,-1,-1,0|c70000,,,,|| -[11,4,10] +[11,4,0] 0,0,-1,-1|c70000,,,,|| -[12,2,10] +[12,2,0] 0,-1,0,0|c70000,,,,|| -[12,3,10] +[12,3,0] 0,0,0,-1|c70000,,,,|| -[15,0,10] +[15,0,0] -1,0,0,0||| -[16,0,10] +[16,0,0] 0,0,-1,0||| -[5,5,10] +[5,5,0] 0,0,0,0|c04500,,,,|| -[17,0,10] +[17,0,0] 0,0,0,0||| -[17,-1,10] +[17,-1,0] 0,0,0,-1|11d4e3,,,,|| -[17,-2,10] +[17,-2,0] 0,-1,0,0|11d4e3,,,,|| -[17,-3,10] +[17,-3,0] 0,0,0,0|660072,,,,|| -[17,-4,10] +[17,-4,0] -1,0,0,0|c70000,,,,|| -[18,-4,10] +[18,-4,0] -1,0,-1,0|c70000,,,,|| -[19,-4,10] +[19,-4,0] 0,0,-1,0|c70000,,,,|| -[20,-4,10] +[20,-4,0] -1,0,0,0|c70000,,,,|| -[21,-4,10] +[21,-4,0] -1,0,-1,0|c70000,,,,|| -[22,-4,10] +[22,-4,0] 0,0,-1,0|c70000,,,,|| -[23,-4,10] +[23,-4,0] -1,-1,0,0|c70000,,,,|| -[23,-3,10] +[23,-3,0] -1,0,0,-1|c70000,,,,|| -[24,-4,10] +[24,-4,0] 0,-1,-1,0|c70000,,,,|| -[24,-3,10] +[24,-3,0] 0,0,-1,-1|c70000,,,,|| -[25,-4,10] +[25,-4,0] 0,0,0,0|11e31e,,,,|| -[25,-5,10] +[25,-5,0] 0,0,0,0|720000,,,,|| -[25,-6,10] +[25,-6,0] 0,0,0,0|660072,,,,|| -[22,-6,10] +[22,-6,0] -1,0,0,0|c70000,,,,|| -[23,-6,10] +[23,-6,0] -1,0,-1,0|c70000,,,,|| -[24,-6,10] +[24,-6,0] 0,0,-1,0|c70000,,,,|| -[21,-6,10] +[21,-6,0] 0,0,0,0|c04500,,,,|| -[21,-9,10] +[21,-9,0] 0,-1,0,0|c70000,,,,|| -[21,-8,10] +[21,-8,0] 0,-1,0,-1|c70000,,,,|| -[21,-7,10] +[21,-7,0] 0,0,0,-1|c70000,,,,|| -[21,-10,10] +[21,-10,0] 0,0,0,0|660072,,,,|| -[18,-10,10] +[18,-10,0] -1,0,0,0|c70000,,,,|| -[19,-10,10] +[19,-10,0] -1,0,-1,0|c70000,,,,|| -[20,-10,10] +[20,-10,0] 0,0,-1,0|c70000,,,,|| -[22,-10,10] +[22,-10,0] -1,0,0,0|c70000,,,,|| -[23,-10,10] +[23,-10,0] -1,0,-1,0|c70000,,,,|| -[24,-10,10] +[24,-10,0] 0,0,-1,0|c70000,,,,|| -[21,-13,10] +[21,-13,0] 0,-1,0,0|c70000,,,,|| -[21,-12,10] +[21,-12,0] 0,-1,0,-1|c70000,,,,|| -[21,-11,10] +[21,-11,0] 0,0,0,-1|c70000,,,,|| -[0,5,9] +[0,5,1] -1,0,0,0||| -[1,5,9] +[1,5,1] -1,0,-1,0||| -[2,5,9] +[2,5,1] 0,0,-1,0||| -[0,4,9] +[0,4,1] 0,0,0,0||| -[7,0,9] +[7,0,1] 0,0,0,0||| -[7,-2,9] +[7,-2,1] 0,-1,0,0||| -[7,-1,9] +[7,-1,1] 0,0,0,-1||| -[7,-3,9] +[7,-3,1] 0,0,0,0||| -[2,2,9] +[2,2,1] 0,-1,0,0||| -[2,3,9] +[2,3,1] 0,0,0,-1|||