diff --git a/autoload/global/script/global.gd b/autoload/global/script/global.gd index 09256c1..43c52f9 100644 --- a/autoload/global/script/global.gd +++ b/autoload/global/script/global.gd @@ -13,6 +13,8 @@ var scene_json_path:String="res://json/scene.json" var scene_data:Dictionary var character_json_path:String="res://json/character.json" var character_data:Dictionary +var map_json_path:String="res://json/map.json" +var map_data:Dictionary var system_config_data:Dictionary={ } @@ -29,9 +31,11 @@ var now_game_data:Dictionary={ }, "now_scene":"scene_01", "difficulty":0, - + "gold":9999, + "health":100, + "spirit":999 } -var now_game_flow +var now_game_flow:GameFlow func get_now_character_data(): return now_game_data["character_data"] func _ready() -> void: @@ -83,6 +87,14 @@ func load_character_data(): for i in dictionary.keys(): dictionary[i]["id"]=i character_data=dictionary +func load_map_data(): + var file=FileAccess.open(map_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + map_data=dictionary + func get_texture(id:String): if texture_data.has(id): return texture_data[id] @@ -115,3 +127,10 @@ func get_character_data(id:String): return dictionary.duplicate() else: return null +func get_map_data(id:String): + if map_data.has(id): + var dictionary:Dictionary=map_data[id] + return dictionary.duplicate() + else: + return null + pass diff --git a/class/map/map_class.gd b/class/map/map_class.gd new file mode 100644 index 0000000..414735d --- /dev/null +++ b/class/map/map_class.gd @@ -0,0 +1,25 @@ +extends ScrollContainer + +class_name Map +signal click(scene_id:String) + + + +func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseMotion and Input.is_action_pressed("mouse_left"): + var relative:Vector2=event.relative + scroll_horizontal-=relative.x + scroll_vertical-=relative.y + + + + pass + + +func _on_linyi_pressed() -> void: + click.emit("") + pass # Replace with function body. + + +func _on_jining_pressed() -> void: + pass # Replace with function body. diff --git a/json/card.json b/json/card.json index 36a3713..384a5b4 100644 --- a/json/card.json +++ b/json/card.json @@ -1,3 +1,5 @@ { - + "card_01":{ + "name":"测试卡01" + } } diff --git a/json/character.json b/json/character.json index 4914119..e912c62 100644 --- a/json/character.json +++ b/json/character.json @@ -2,7 +2,9 @@ "test_character_01":{ "character":{ "name":"朱雀院椿(测试)", + "star":3, + "skin":[ { "name":"皮肤1", diff --git a/json/map.json b/json/map.json new file mode 100644 index 0000000..7c0250c --- /dev/null +++ b/json/map.json @@ -0,0 +1,7 @@ +{ + "map_01": + { + "name":"测试地图01", + "tscn":"" + } +} diff --git a/json/scene.json b/json/scene.json index c2582b0..b28b62c 100644 --- a/json/scene.json +++ b/json/scene.json @@ -29,7 +29,7 @@ }, { "name":"测试场景事件", - "event":"event_02" + "event":"event_01" } ], "linked_scene":[ diff --git a/scene/character_select.gd b/scene/character_select.gd index a69b8ed..f064d0f 100644 --- a/scene/character_select.gd +++ b/scene/character_select.gd @@ -27,7 +27,7 @@ func _ready() -> void: character_add_pos.add_child(new_character) new_character.set_data(Global.get_character_data(i)) new_character.pressed.connect(pressed) - + func pressed(data,node,is_select): if is_select: diff --git a/scene/game_flow.gd b/scene/game_flow.gd index 55e0e85..b42ddf8 100644 --- a/scene/game_flow.gd +++ b/scene/game_flow.gd @@ -1,4 +1,5 @@ extends Control +class_name GameFlow @onready var back: TextureRect = $back @onready var event: HBoxContainer = $bottom_container/event @onready var place_add: VBoxContainer = $place_add @@ -6,14 +7,17 @@ extends Control @onready var animation_mask: ColorRect = $animation_mask @onready var character_texture: TextureRect = $hbox/TextureRect/TextureRect/character_texture @onready var event_panel: Control = $event_panel +@onready var character_name: Label = $hbox/TextureRect2/vbox/HBoxContainer/character_name const GAME_FLOW_EVENT = preload("res://scene/game_flow_event.tscn") const GAME_FLOW_PLACE = preload("res://scene/game_flow_place.tscn") var scene_data:Dictionary func _ready() -> void: set_scene("scene_01") + Global.now_game_flow=self var character_data=Global.get_now_character_data() character_texture.texture=Global.get_texture(character_data["character"]["skin"][character_data["character"]["skin_now_use"]]["card_face"]) + character_name.text=character_data["character"]["name"] func set_scene(id:String): scene_data=Global.get_scene_data(id) back.texture=Global.get_texture(scene_data["texture"]) diff --git a/scene/game_flow.tscn b/scene/game_flow.tscn index 7d01807..3a48b1e 100644 --- a/scene/game_flow.tscn +++ b/scene/game_flow.tscn @@ -32,6 +32,21 @@ shader_parameter/cutoff = 1.0 shader_parameter/smooth_size = null shader_parameter/mask = SubResource("GradientTexture2D_jb43e") +[sub_resource type="Animation" id="Animation_bsgds"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("animation_mask:material:shader_parameter/cutoff") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} + [sub_resource type="Animation" id="Animation_i6qty"] resource_name = "change" length = 0.5 @@ -48,21 +63,6 @@ tracks/0/keys = { "values": [1.0, 0.0] } -[sub_resource type="Animation" id="Animation_bsgds"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("animation_mask:material:shader_parameter/cutoff") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [1.0] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_ljrcq"] _data = { "RESET": SubResource("Animation_bsgds"), @@ -209,7 +209,7 @@ size_flags_vertical = 3 [node name="Control" type="Control" parent="hbox/TextureRect2/vbox/HBoxContainer"] layout_mode = 2 -[node name="Label" type="Label" parent="hbox/TextureRect2/vbox/HBoxContainer"] +[node name="character_name" type="Label" parent="hbox/TextureRect2/vbox/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 diff --git a/scene/map.gd b/scene/map.gd new file mode 100644 index 0000000..845c3fb --- /dev/null +++ b/scene/map.gd @@ -0,0 +1,17 @@ +extends Control +@onready var date: Label = $HBoxContainer/TextureRect/TextureRect/date +@onready var time: Label = $HBoxContainer/TextureRect/TextureRect/time +@onready var weather: Label = $HBoxContainer/TextureRect/TextureRect/weather +@onready var pos: Label = $HBoxContainer/TextureRect/TextureRect/pos +@onready var map_add_pos: Panel = $HBoxContainer/map_add_pos + + + +# 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/scene/map.tscn b/scene/map.tscn index 724030e..315b994 100644 --- a/scene/map.tscn +++ b/scene/map.tscn @@ -1,4 +1,9 @@ -[gd_scene format=3 uid="uid://ccsaeb8hm5lsu"] +[gd_scene load_steps=5 format=3 uid="uid://ccsaeb8hm5lsu"] + +[ext_resource type="Texture2D" uid="uid://bx2layh7wm6ft" path="res://res/ui/ui_021_map/tuceng309.png" id="1_e45qx"] +[ext_resource type="Script" path="res://scene/map.gd" id="1_ifxi0"] +[ext_resource type="Texture2D" uid="uid://bc4vkd7u4s4sb" path="res://res/ui/ui_021_map/tuceng308.png" id="2_slael"] +[ext_resource type="Texture2D" uid="uid://bo84mljdw3my8" path="res://res/ui/ui_021_map/tuceng315.png" id="3_4y8t4"] [node name="map" type="Control"] layout_mode = 3 @@ -7,3 +12,120 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +script = ExtResource("1_ifxi0") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +texture = ExtResource("1_e45qx") +expand_mode = 3 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer/TextureRect"] +z_index = 1 +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = 3.94254 +offset_right = 515.943 +offset_bottom = 142.0 +grow_horizontal = 0 +texture = ExtResource("3_4y8t4") + +[node name="date" type="Label" parent="HBoxContainer/TextureRect/TextureRect"] +layout_mode = 0 +anchor_left = 0.347656 +anchor_right = 1.0 +anchor_bottom = 0.373239 +offset_bottom = -4.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "1999/12/12" +vertical_alignment = 1 +metadata/_edit_use_anchors_ = true + +[node name="time" type="Label" parent="HBoxContainer/TextureRect/TextureRect"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.347656 +anchor_top = 0.34507 +anchor_right = 0.556641 +anchor_bottom = 0.746479 +offset_bottom = -4.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "12:12" +vertical_alignment = 1 +metadata/_edit_use_anchors_ = true + +[node name="Label3" type="Label" parent="HBoxContainer/TextureRect/TextureRect"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.59375 +anchor_top = 0.34507 +anchor_right = 0.816406 +anchor_bottom = 0.746479 +offset_bottom = -4.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "天气:" +vertical_alignment = 1 +metadata/_edit_use_anchors_ = true + +[node name="weather" type="Label" parent="HBoxContainer/TextureRect/TextureRect"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.816406 +anchor_top = 0.34507 +anchor_right = 1.03906 +anchor_bottom = 0.746479 +offset_bottom = -4.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "晴" +vertical_alignment = 1 +metadata/_edit_use_anchors_ = true + +[node name="pos" type="Label" parent="HBoxContainer/TextureRect/TextureRect"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.347656 +anchor_top = 0.661972 +anchor_right = 1.0 +anchor_bottom = 1.06338 +offset_bottom = -4.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "(000,000)" +vertical_alignment = 1 +metadata/_edit_use_anchors_ = true + +[node name="TextureRect2" type="TextureRect" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +texture = ExtResource("2_slael") +expand_mode = 3 + +[node name="map_add_pos" type="Panel" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="TextureRect4" type="TextureRect" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 8 +texture = ExtResource("2_slael") +expand_mode = 3 + +[node name="TextureRect3" type="TextureRect" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +texture = ExtResource("1_e45qx") +expand_mode = 3 diff --git a/test/map/00004.webp b/test/map/00004.webp new file mode 100644 index 0000000..0b9fcfe Binary files /dev/null and b/test/map/00004.webp differ diff --git a/test/map/00004.webp.import b/test/map/00004.webp.import new file mode 100644 index 0000000..c7772bc --- /dev/null +++ b/test/map/00004.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsphj1j6nr3j1" +path="res://.godot/imported/00004.webp-dbbf622918282e7466b40e708692648d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test/map/00004.webp" +dest_files=["res://.godot/imported/00004.webp-dbbf622918282e7466b40e708692648d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/test/scene/map_example.tscn b/test/scene/map_example.tscn new file mode 100644 index 0000000..1fbbdbb --- /dev/null +++ b/test/scene/map_example.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=3 format=3 uid="uid://dtbfpnr54ifod"] + +[ext_resource type="Texture2D" uid="uid://dsphj1j6nr3j1" path="res://test/map/00004.webp" id="1_i44dx"] +[ext_resource type="Script" path="res://class/map/map_class.gd" id="1_iwfll"] + +[node name="map_example" type="ScrollContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +horizontal_scroll_mode = 3 +vertical_scroll_mode = 3 +script = ExtResource("1_iwfll") + +[node name="TextureRect" type="TextureRect" parent="."] +custom_minimum_size = Vector2(3840, 2160) +layout_mode = 2 +mouse_filter = 2 +texture = ExtResource("1_i44dx") + +[node name="linyi" type="Button" parent="TextureRect"] +layout_mode = 0 +anchor_left = 0.418229 +anchor_top = 0.588889 +anchor_right = 0.602083 +anchor_bottom = 0.706481 +metadata/_edit_use_anchors_ = true + +[node name="jining" type="Button" parent="TextureRect"] +layout_mode = 0 +anchor_left = 0.240625 +anchor_top = 0.531482 +anchor_right = 0.408854 +anchor_bottom = 0.667593 +metadata/_edit_use_anchors_ = true + +[connection signal="pressed" from="TextureRect/linyi" to="." method="_on_linyi_pressed"] +[connection signal="pressed" from="TextureRect/jining" to="." method="_on_jining_pressed"]