理发店癞子理发演出
@ -18,20 +18,9 @@ func _ready():
|
||||
|
||||
# Normally you can just call DialogueManager directly but doing so before the plugin has been
|
||||
# enabled in settings will throw a compiler error here so I'm using `get_singleton` instead.
|
||||
var dialogue_manager = Engine.get_singleton("DialogueManager")
|
||||
dialogue_manager.dialogue_ended.connect(_on_dialogue_ended)
|
||||
dialogue_manager.show_dialogue_balloon(resource, title if not title.is_empty() else resource.first_title)
|
||||
DialogueManager.show_dialogue_balloon(resource, title if not title.is_empty() else resource.first_title)
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
DialogueSettings.set_user_value("is_running_test_scene", false)
|
||||
|
||||
|
||||
#region Signals
|
||||
|
||||
|
||||
func _on_dialogue_ended(_resource: DialogueResource):
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
#endregion
|
||||
|
@ -48,7 +48,7 @@ static func new_action_config() -> Dictionary:
|
||||
return ACTION_CONFIG.duplicate()
|
||||
|
||||
|
||||
@onready var debug_mov_onion_sprite2d = $DebugMovOnionSkinSprite2D as Sprite2D
|
||||
var debug_mov_onion_sprite2d: Sprite2D
|
||||
|
||||
# 从 intro 到 next 的配置信息
|
||||
var auto_checkout_dict = {
|
||||
@ -75,12 +75,16 @@ func _ready() -> void:
|
||||
animation_finished.connect(_on_animation_finished)
|
||||
animation_looped.connect(_on_animation_finished)
|
||||
# 处理 debug_mov_onion_sprite2d
|
||||
debug_mov_onion_sprite2d = get_node_or_null("DebugMovOnionSkinSprite2D")
|
||||
if Engine.is_editor_hint():
|
||||
# stop()
|
||||
# frame = 0
|
||||
if not debug_mov_onion_sprite2d:
|
||||
debug_mov_onion_sprite2d = Sprite2D.new()
|
||||
add_child(debug_mov_onion_sprite2d)
|
||||
debug_mov_onion_sprite2d.name = "DebugMovOnionSkinSprite2D"
|
||||
debug_mov_onion_sprite2d.modulate.a = 0.5
|
||||
debug_playing = false
|
||||
_debug_mov_projection()
|
||||
else:
|
||||
elif debug_mov_onion_sprite2d:
|
||||
debug_mov_onion_sprite2d.queue_free()
|
||||
# autoplay 会自己 play, 只有自定义的 autostart 手动调用 play
|
||||
if not Engine.is_editor_hint() and autostart:
|
||||
@ -93,8 +97,8 @@ func _debug_mov_projection():
|
||||
var mov_config = animation_mov_dict[debug_mov_animation]
|
||||
# 展示 accumulated animation 的目标位置
|
||||
debug_mov_onion_sprite2d.position.x = (
|
||||
mov_config.movement_x * (-1 if flip_h else 1) / scale.x
|
||||
) * sign(mov_config.velocity.x)
|
||||
(mov_config.movement_x * (-1 if flip_h else 1) / scale.x) * sign(mov_config.velocity.x)
|
||||
)
|
||||
debug_mov_onion_sprite2d.texture = sprite_frames.get_frame_texture(debug_mov_animation, 0)
|
||||
debug_mov_onion_sprite2d.flip_h = flip_h
|
||||
elif debug_mov_animation:
|
||||
|
@ -1,17 +1,80 @@
|
||||
[gd_resource type="SpriteFrames" load_steps=9 format=3 uid="uid://cmvr3lbwe3h7p"]
|
||||
[gd_resource type="SpriteFrames" load_steps=21 format=3 uid="uid://cmvr3lbwe3h7p"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dcwbe6hb3gdcp" path="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/0.png" id="1_fctjd"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdyq7y562gsxp" path="res://asset/art/gif/c03_特写与游戏动画/绞肉机特写动画/0.png" id="1_uknvx"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhrahd7u0yoba" path="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/1.png" id="2_g03au"]
|
||||
[ext_resource type="Texture2D" uid="uid://botg6n14al2eu" path="res://asset/art/gif/c03_特写与游戏动画/绞肉机特写动画/1.png" id="2_up5wq"]
|
||||
[ext_resource type="Texture2D" uid="uid://dweny6ivmkanl" path="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/2.png" id="3_5wyv8"]
|
||||
[ext_resource type="Texture2D" uid="uid://cvhquuvipetio" path="res://asset/art/gif/c03_特写与游戏动画/绞肉机特写动画/2.png" id="3_oilu3"]
|
||||
[ext_resource type="Texture2D" uid="uid://nvddvjnphsqx" path="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/3.png" id="4_ag85t"]
|
||||
[ext_resource type="Texture2D" uid="uid://bn3x37ya65ixm" path="res://asset/art/gif/c03_特写与游戏动画/绞肉机特写动画/3.png" id="4_uidoe"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhhjsj1dqep40" path="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/0.png" id="5_5m4aa"]
|
||||
[ext_resource type="Texture2D" uid="uid://c5sc5ctss08qc" path="res://asset/art/gif/c03_特写与游戏动画/鬼母子神/0.png" id="5_uidoe"]
|
||||
[ext_resource type="Texture2D" uid="uid://lop0mxjb5y71" path="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/1.png" id="6_0df74"]
|
||||
[ext_resource type="Texture2D" uid="uid://dx2v7bicpg7b4" path="res://asset/art/gif/c03_特写与游戏动画/鬼母子神/1.png" id="6_yp83y"]
|
||||
[ext_resource type="Texture2D" uid="uid://bkh3cc2fg486c" path="res://asset/art/gif/c03_特写与游戏动画/鬼母子神/2.png" id="7_axfhb"]
|
||||
[ext_resource type="Texture2D" uid="uid://c08v3b4prnqyt" path="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/2.png" id="7_xhhcn"]
|
||||
[ext_resource type="Texture2D" uid="uid://4m0ix5nhdmdf" path="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/3.png" id="8_dspyd"]
|
||||
[ext_resource type="Texture2D" uid="uid://d0ad1s3sfsejp" path="res://asset/art/gif/c03_特写与游戏动画/鬼母子神/3.png" id="8_yp83y"]
|
||||
[ext_resource type="Texture2D" uid="uid://c6gpicmu30026" path="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/0.png" id="9_naxgo"]
|
||||
[ext_resource type="Texture2D" uid="uid://b7ufyuiusqmh7" path="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/1.png" id="10_qcrrr"]
|
||||
[ext_resource type="Texture2D" uid="uid://c21g54sgebjti" path="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/2.png" id="11_buon4"]
|
||||
[ext_resource type="Texture2D" uid="uid://c7vjtmjhv7v7f" path="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/3.png" id="12_cx8xa"]
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("1_fctjd")
|
||||
}, {
|
||||
"duration": 8.0,
|
||||
"texture": ExtResource("2_g03au")
|
||||
}, {
|
||||
"duration": 30.0,
|
||||
"texture": ExtResource("3_5wyv8")
|
||||
}, {
|
||||
"duration": 15.0,
|
||||
"texture": ExtResource("4_ag85t")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"父亲抱小孩",
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("5_5m4aa")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("6_0df74")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("7_xhhcn")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("8_dspyd")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"癞子背坐呼吸",
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("9_naxgo")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("10_qcrrr")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("11_buon4")
|
||||
}, {
|
||||
"duration": 20.0,
|
||||
"texture": ExtResource("12_cx8xa")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"癞子背对侧头呼吸",
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("1_uknvx")
|
||||
}, {
|
||||
|
BIN
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/0.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
34
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/0.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dcwbe6hb3gdcp"
|
||||
path="res://.godot/imported/0.png-a3269686a9806970c0dfd8799afcb5ce.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/0.png"
|
||||
dest_files=["res://.godot/imported/0.png-a3269686a9806970c0dfd8799afcb5ce.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
|
BIN
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/1.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
34
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/1.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bhrahd7u0yoba"
|
||||
path="res://.godot/imported/1.png-2461ac2fae16cf03e4832dc2fe3f2555.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/1.png"
|
||||
dest_files=["res://.godot/imported/1.png-2461ac2fae16cf03e4832dc2fe3f2555.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
|
BIN
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/2.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
34
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dweny6ivmkanl"
|
||||
path="res://.godot/imported/2.png-afafb5161ae4bca2cba94e19f92d32ed.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/2.png"
|
||||
dest_files=["res://.godot/imported/2.png-afafb5161ae4bca2cba94e19f92d32ed.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
|
BIN
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/3.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
34
asset/art/gif/c03_特写与游戏动画/父亲抱小孩/3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://nvddvjnphsqx"
|
||||
path="res://.godot/imported/3.png-f1b878a4ae5a1352052eb9c3414b1c64.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/父亲抱小孩/3.png"
|
||||
dest_files=["res://.godot/imported/3.png-f1b878a4ae5a1352052eb9c3414b1c64.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/0.png
Normal file
After Width: | Height: | Size: 778 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/0.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bhhjsj1dqep40"
|
||||
path="res://.godot/imported/0.png-29a92c9e2d863c26da560ecf9d7f55e9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/0.png"
|
||||
dest_files=["res://.godot/imported/0.png-29a92c9e2d863c26da560ecf9d7f55e9.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/1.png
Normal file
After Width: | Height: | Size: 771 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/1.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://lop0mxjb5y71"
|
||||
path="res://.godot/imported/1.png-9504242d789560b7aa7bd583e9c9ee9b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/1.png"
|
||||
dest_files=["res://.godot/imported/1.png-9504242d789560b7aa7bd583e9c9ee9b.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/2.png
Normal file
After Width: | Height: | Size: 768 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c08v3b4prnqyt"
|
||||
path="res://.godot/imported/2.png-771674e6060afe77d45d1ae84d22c7c2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/2.png"
|
||||
dest_files=["res://.godot/imported/2.png-771674e6060afe77d45d1ae84d22c7c2.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/3.png
Normal file
After Width: | Height: | Size: 762 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://4m0ix5nhdmdf"
|
||||
path="res://.godot/imported/3.png-4b276625cb8a4697e2e33c8df223b9b9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背坐呼吸/3.png"
|
||||
dest_files=["res://.godot/imported/3.png-4b276625cb8a4697e2e33c8df223b9b9.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/0.png
Normal file
After Width: | Height: | Size: 737 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/0.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c6gpicmu30026"
|
||||
path="res://.godot/imported/0.png-218e6fe7dc6cd000a213f3a006d18933.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/0.png"
|
||||
dest_files=["res://.godot/imported/0.png-218e6fe7dc6cd000a213f3a006d18933.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/1.png
Normal file
After Width: | Height: | Size: 734 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/1.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b7ufyuiusqmh7"
|
||||
path="res://.godot/imported/1.png-d46a9f066213228516ec78730973b1b1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/1.png"
|
||||
dest_files=["res://.godot/imported/1.png-d46a9f066213228516ec78730973b1b1.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/2.png
Normal file
After Width: | Height: | Size: 732 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c21g54sgebjti"
|
||||
path="res://.godot/imported/2.png-65316c99b267f6b126a0514cf04f68d3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/2.png"
|
||||
dest_files=["res://.godot/imported/2.png-65316c99b267f6b126a0514cf04f68d3.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
|
BIN
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/3.png
Normal file
After Width: | Height: | Size: 734 B |
34
asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c7vjtmjhv7v7f"
|
||||
path="res://.godot/imported/3.png-77114853f7248e4f7711c27bfb05bb12.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c03_特写与游戏动画/癞子背对侧头呼吸/3.png"
|
||||
dest_files=["res://.godot/imported/3.png-77114853f7248e4f7711c27bfb05bb12.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
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 576 B |
BIN
asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口血迹.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
34
asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口血迹.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dr51e8ell86"
|
||||
path="res://.godot/imported/伤口血迹.png-09a80deddc6822152bc5759dfa5b43c4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口血迹.png"
|
||||
dest_files=["res://.godot/imported/伤口血迹.png-09a80deddc6822152bc5759dfa5b43c4.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
|
BIN
asset/art/scene/c03/s03_瞎子理发店/癞子特写/刀劈特效.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
34
asset/art/scene/c03/s03_瞎子理发店/癞子特写/刀劈特效.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://k4eplss3bx5g"
|
||||
path="res://.godot/imported/刀劈特效.png-303e36c2e802d04a4dbed5e046db47cf.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/刀劈特效.png"
|
||||
dest_files=["res://.godot/imported/刀劈特效.png-303e36c2e802d04a4dbed5e046db47cf.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
|
@ -4,7 +4,7 @@ extends CanvasLayer
|
||||
|
||||
var root_dir = "res://config/audio/"
|
||||
|
||||
func _ready():
|
||||
func _ready() -> void:
|
||||
var dir_access = DirAccess.open(root_dir) as DirAccess
|
||||
for dir in dir_access.get_directories():
|
||||
container.add_child(HSeparator.new())
|
||||
|
BIN
asset/audio/peiyin/c03/c03_理发店_小小蝶_5.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_小小蝶_5.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://ba2wk1ox76efe"
|
||||
path="res://.godot/imported/c03_理发店_小小蝶_5.ogg-66a9a4612eefec52289193483440da3f.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_小小蝶_5.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_小小蝶_5.ogg-66a9a4612eefec52289193483440da3f.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_小小蝶_6.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_小小蝶_6.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cun811u2e7345"
|
||||
path="res://.godot/imported/c03_理发店_小小蝶_6.ogg-38c66f064187bd8dba9d0e151e32d032.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_小小蝶_6.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_小小蝶_6.ogg-38c66f064187bd8dba9d0e151e32d032.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_小小蝶_7.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_小小蝶_7.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://b0jpnl74h0r5j"
|
||||
path="res://.godot/imported/c03_理发店_小小蝶_7.ogg-7278d678564f0d8cfb1baab6ce4a8912.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_小小蝶_7.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_小小蝶_7.ogg-7278d678564f0d8cfb1baab6ce4a8912.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_10.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_10.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dpmc3ku12hvgg"
|
||||
path="res://.godot/imported/c03_理发店_癞子_10.ogg-8654894b5ed36318642f4dd8c25d8a89.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_10.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_10.ogg-8654894b5ed36318642f4dd8c25d8a89.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_11.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_11.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://duj1rj5pqaypw"
|
||||
path="res://.godot/imported/c03_理发店_癞子_11.ogg-3cb72d9b6ab549acd5cc78b162889624.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_11.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_11.ogg-3cb72d9b6ab549acd5cc78b162889624.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_12.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_12.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://b0sauuigs8y0p"
|
||||
path="res://.godot/imported/c03_理发店_癞子_12.ogg-c35d34415f87cc409e4eba30b914bb4a.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_12.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_12.ogg-c35d34415f87cc409e4eba30b914bb4a.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_13.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_13.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://8wtlftvqn5gp"
|
||||
path="res://.godot/imported/c03_理发店_癞子_13.ogg-ad4f488cd4278b06727a566379a9cca8.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_13.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_13.ogg-ad4f488cd4278b06727a566379a9cca8.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_14.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_14.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bplaj6uidsias"
|
||||
path="res://.godot/imported/c03_理发店_癞子_14.ogg-0ae7c592462185954fbc2fc44ff8161b.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_14.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_14.ogg-0ae7c592462185954fbc2fc44ff8161b.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_15.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_15.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dqyythgj4b2a7"
|
||||
path="res://.godot/imported/c03_理发店_癞子_15.ogg-13ac10d8375509b479ea2e94d96f3cfa.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_15.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_15.ogg-13ac10d8375509b479ea2e94d96f3cfa.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_8.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_8.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bylaoxlh2bii"
|
||||
path="res://.godot/imported/c03_理发店_癞子_8.ogg-5cd1c86dea61b02ba8a86260dc6c73d9.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_8.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_8.ogg-5cd1c86dea61b02ba8a86260dc6c73d9.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_癞子_9.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_癞子_9.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://d4mihdw45ed6x"
|
||||
path="res://.godot/imported/c03_理发店_癞子_9.ogg-502658df3b170c4f123c76ea08ed87ec.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_癞子_9.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_癞子_9.ogg-502658df3b170c4f123c76ea08ed87ec.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_15.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_15.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://tmsyvdoklrid"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_15.ogg-993c9e658b98f80d58aa324105579201.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_15.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_15.ogg-993c9e658b98f80d58aa324105579201.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_16.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_16.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cyfi6r567yo1u"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_16.ogg-cf3255fb045aae07a6e320b54f000c3f.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_16.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_16.ogg-cf3255fb045aae07a6e320b54f000c3f.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_17.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_17.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://d0tfvpokjdcp1"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_17.ogg-77d1e04338e47990fbcecedf8301c49d.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_17.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_17.ogg-77d1e04338e47990fbcecedf8301c49d.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_18.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_18.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dtbb5vi4ry85b"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_18.ogg-4e672df3b198ee52c88f0ce7cfef4c3a.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_18.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_18.ogg-4e672df3b198ee52c88f0ce7cfef4c3a.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_19.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_19.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://ckl6eyb6fn6ui"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_19.ogg-f6fd7591a238ead0b34e2d58608527ea.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_19.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_19.ogg-f6fd7591a238ead0b34e2d58608527ea.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_20.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_20.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bvrkiuimnlh5w"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_20.ogg-02426bd5c2b1e5597e2b937a0c0940eb.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_20.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_20.ogg-02426bd5c2b1e5597e2b937a0c0940eb.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_21.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_21.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dnctmpsv0xrad"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_21.ogg-620878f56dfc42101cca76bc6de2b9ec.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_21.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_21.ogg-620878f56dfc42101cca76bc6de2b9ec.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_22.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_22.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://uf14ji1pkqaf"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_22.ogg-50207038a1cfd50caa472f5ab22a8778.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_22.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_22.ogg-50207038a1cfd50caa472f5ab22a8778.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_瞎子_23.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_瞎子_23.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dsymgeq6i02mj"
|
||||
path="res://.godot/imported/c03_理发店_瞎子_23.ogg-9721e730eb715d8a9090aee47d6b7171.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_瞎子_23.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_瞎子_23.ogg-9721e730eb715d8a9090aee47d6b7171.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
asset/audio/peiyin/c03/c03_理发店_陆仁.ogg
Normal file
19
asset/audio/peiyin/c03/c03_理发店_陆仁.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bqhqxmf5hsed0"
|
||||
path="res://.godot/imported/c03_理发店_陆仁.ogg-5b28d2fa4f1ffe8f2ecd2c7ee6f218e2.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin/c03/c03_理发店_陆仁.ogg"
|
||||
dest_files=["res://.godot/imported/c03_理发店_陆仁.ogg-5b28d2fa4f1ffe8f2ecd2c7ee6f218e2.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
@ -8,3 +8,84 @@ Second one,Second one,(response),,
|
||||
Start again,Start again,(response),,
|
||||
End the conversation,End the conversation,(response),,
|
||||
For more information see the online documentation.,For more information see the online documentation.,Nathan,,
|
||||
(看病费用涨价,为了攒钱让小蝶上学,),(看病费用涨价,为了攒钱让小蝶上学,),陆仁,,
|
||||
(小蝶想请小蝉来家里吃饭,写了请柬),(小蝶想请小蝉来家里吃饭,写了请柬),小蝶,,
|
||||
(父母让小蝶去送请柬,顺便带肉回家做饭),(父母让小蝶去送请柬,顺便带肉回家做饭),陆仁,,
|
||||
那个...方叔叔,小蝉在吗? [ID:],那个...方叔叔,小蝉在吗? [ID:],小小蝶,,
|
||||
咳咳,她,咳咳,不在。 [ID:],咳咳,她,咳咳,不在。 [ID:],瞎子,,
|
||||
她是生病了吗,好几天没见她了。 [ID:],她是生病了吗,好几天没见她了。 [ID:],小小蝶,,
|
||||
她... [ID:],她... [ID:],瞎子,,
|
||||
我挨家挨户地问啊,都说没看见她。 [ID:],我挨家挨户地问啊,都说没看见她。 [ID:],瞎子,,
|
||||
一个活生生的小孩子,就这么找不见了... [ID:],一个活生生的小孩子,就这么找不见了... [ID:],瞎子,,
|
||||
c03_理发店_癞子_8,我家那个昨天想拿推子给我剃头,差点给我开了瓢!,癞子,,
|
||||
c03_理发店_癞子_9,你瞅瞅,这么长一道血印子!唉呀...,癞子,,
|
||||
c03_理发店_瞎子_15,可不能这么说。,瞎子,,
|
||||
c03_理发店_瞎子_16,弟妹这一手,没准是变相消了你的血光灾呢。,瞎子,,
|
||||
c03_理发店_瞎子_17,逢凶化吉,灾消晦退,好日子还在后头。,瞎子,,
|
||||
c03_理发店_癞子_10,哼,听你这么一说,好像确实有那么几分道理。,癞子,,
|
||||
c03_理发店_癞子_11,不过这辫子留了这么多年,乍一找人剪了,心里还有点怪不是滋味儿。,癞子,,
|
||||
c03_理发店_瞎子_18,怎么舍得剪了?,瞎子,,
|
||||
c03_理发店_癞子_12,妇人家家的,不知道从哪打听到用男人的辫子入药能治病,一直念叨个不停。,癞子,,
|
||||
c03_理发店_癞子_13,...你听过这说法没有?,癞子,,
|
||||
c03_理发店_瞎子_19,我不懂医,不好乱说。,瞎子,,
|
||||
c03_理发店_癞子_14,最近街上也是彻底乱了套,那些人看见你留了“阴阳头”,就跟那闻着味儿的狗一样凑过来...,癞子,,
|
||||
c03_理发店_癞子_15,哦,瞧我这记性,忘了你眼神不好,不爱出门。,癞子,,
|
||||
c03_理发店_小小蝶_5,方叔叔,我来找小蝉玩儿,她在屋里吗?,小小蝶,,
|
||||
c03_理发店_瞎子_20,她摔了一跤,还睡着呢,我喊她起来?,瞎子,,
|
||||
c03_理发店_小小蝶_6,不用不用,我在这等一会儿就行。,小小蝶,,
|
||||
c03_理发店_陆仁,方老弟,你正好给我家这小皮猴儿修修毛,成天跟个假小子似的,没个小姑娘样子。,陆仁,,
|
||||
c03_理发店_瞎子_21,小孩子嘛,高高兴兴就好。,瞎子,,
|
||||
c03_理发店_瞎子_22,你们也别在这干等,我去给你们拿些“洋点心”。,瞎子,,
|
||||
c03_理发店_瞎子_23,说是什么舶来品,高级货,你们拿出尝尝,甜个嘴。,瞎子,,
|
||||
c03_理发店_小小蝶_7,谢谢方叔叔。,小小蝶,,
|
||||
记得当年这箱麻将还是我弟弟背回来的。,记得当年这箱麻将还是我弟弟背回来的。,李氏,,
|
||||
那天下了雨,他光着膀子回来,用衣裳包着,说木头怕水他不怕,就当免费洗了个澡...,那天下了雨,他光着膀子回来,用衣裳包着,说木头怕水他不怕,就当免费洗了个澡...,李氏,,
|
||||
(轻笑一声)后来发现少了张牌,这小崽子又背着我们敲敲打打,硬是做了张一模一样的补上。,(轻笑一声)后来发现少了张牌,这小崽子又背着我们敲敲打打,硬是做了张一模一样的补上。,癞子,,
|
||||
(苦笑)他呀,就是个死心眼,犟种!,(苦笑)他呀,就是个死心眼,犟种!,李氏,,
|
||||
得了病就一直忍着,等到实在瞒不住了才告诉咱们!,得了病就一直忍着,等到实在瞒不住了才告诉咱们!,李氏,,
|
||||
他认了命等死,咱们不能认,只要今晚赢了钱...,他认了命等死,咱们不能认,只要今晚赢了钱...,癞子,,
|
||||
哟,人都来齐了怎么还在理麻将?今晚大家可得好好地打一场!,哟,人都来齐了怎么还在理麻将?今晚大家可得好好地打一场!,胖子,,
|
||||
我观张老弟面色晦暗、嘴唇发白,难不成是这些日子手气不佳,输多了牌才...,我观张老弟面色晦暗、嘴唇发白,难不成是这些日子手气不佳,输多了牌才...,瞎子,,
|
||||
(哼)以前可不这样,不说牌桌通杀,也是赢多输少,偏偏最近...,(哼)以前可不这样,不说牌桌通杀,也是赢多输少,偏偏最近...,胖子,,
|
||||
最近怎么了?,最近怎么了?,李氏,,
|
||||
碰。,碰。,瞎子,,
|
||||
自从那三楼的婆娘出了名以后,我这手气就臭得不行...怕不是让人给“借运”了?,自从那三楼的婆娘出了名以后,我这手气就臭得不行...怕不是让人给“借运”了?,胖子,,
|
||||
还真不好说。运气这玩意玄乎得很。,还真不好说。运气这玩意玄乎得很。,癞子,,
|
||||
我以前走南闯北的时候,见过一个会使邪门功夫的老爷子。,我以前走南闯北的时候,见过一个会使邪门功夫的老爷子。,癞子,,
|
||||
说是能“借”人家的命来延长自己的寿命...,说是能“借”人家的命来延长自己的寿命...,癞子,,
|
||||
听着怪瘆人的。,听着怪瘆人的。,胖子,,
|
||||
人外有人,天外有天。,人外有人,天外有天。,瞎子,,
|
||||
天外还有什么...咱们这些闲杂人等也说了不算。,天外还有什么...咱们这些闲杂人等也说了不算。,瞎子,,
|
||||
六万。,六万。,李氏,,
|
||||
话又说回来,你们喝过洋酒没有?用葡萄发酵成的,红得发黑,度数还高。,话又说回来,你们喝过洋酒没有?用葡萄发酵成的,红得发黑,度数还高。,李氏,,
|
||||
那叫香槟,洋人就喜欢整那些面子货,不适口。,那叫香槟,洋人就喜欢整那些面子货,不适口。,癞子,,
|
||||
(啧)见多识广还得看王兄啊。,(啧)见多识广还得看王兄啊。,胖子,,
|
||||
瞧这架势,以前没准多风光...,瞧这架势,以前没准多风光...,胖子,,
|
||||
英雄不问出处。,英雄不问出处。,瞎子,,
|
||||
都过去了,都过去了。,都过去了,都过去了。,癞子,,
|
||||
为了跑出来,我们还睡过桥洞呢!,为了跑出来,我们还睡过桥洞呢!,李氏,,
|
||||
(此处响起癞子的咳嗽声)那阵子我老是梦见让人剁了手指头,八成就是因为那桥是洋人建的...,(此处响起癞子的咳嗽声)那阵子我老是梦见让人剁了手指头,八成就是因为那桥是洋人建的...,李氏,,
|
||||
你说的是外摆渡桥?,你说的是外摆渡桥?,胖子,,
|
||||
应该是吧,我们再没回去过,也不知道后来成了什么样...,应该是吧,我们再没回去过,也不知道后来成了什么样...,癞子,,
|
||||
(脏话)怎么一张牌都不来!,(脏话)怎么一张牌都不来!,胖子,,
|
||||
八条,八条,瞎子,,
|
||||
对了,小蝉那孩子有消息了吗?,对了,小蝉那孩子有消息了吗?,癞子,,
|
||||
要是有消息,我也不会跟你们在这打牌,虚度光阴。,要是有消息,我也不会跟你们在这打牌,虚度光阴。,瞎子,,
|
||||
方大哥,你这话说得不妥。,方大哥,你这话说得不妥。,李氏,,
|
||||
咱们哪个心里头不苦的?不都是在这牌桌上苦中作乐呢。,咱们哪个心里头不苦的?不都是在这牌桌上苦中作乐呢。,李氏,,
|
||||
找点乐子,何必想那么多。,找点乐子,何必想那么多。,胖子,,
|
||||
我这头生意都不做了,帮你满大街的又找又问,不也是白忙活一场。,我这头生意都不做了,帮你满大街的又找又问,不也是白忙活一场。,李氏,,
|
||||
要我说,还是得从身边的人下手。,要我说,还是得从身边的人下手。,李氏,,
|
||||
指不定是被楼里的那个邻居拐了呢,就那么一丁点的小女孩,谁都能敲昏了抱回家去。,指不定是被楼里的那个邻居拐了呢,就那么一丁点的小女孩,谁都能敲昏了抱回家去。,癞子,,
|
||||
...我看她跟三楼那个叫什么小蝶的走得很近,老是手拉手出去,成天凑在一块说悄悄话。,...我看她跟三楼那个叫什么小蝶的走得很近,老是手拉手出去,成天凑在一块说悄悄话。,胖子,,
|
||||
他们一家人最近都不怎么出门,我看就是心里有鬼。,他们一家人最近都不怎么出门,我看就是心里有鬼。,胖子,,
|
||||
把小孩骗走了换钱换药,搞邪术,什么都干得出来。,把小孩骗走了换钱换药,搞邪术,什么都干得出来。,胖子,,
|
||||
这么一说,好像确实有点道理。,这么一说,好像确实有点道理。,癞子,,
|
||||
我小弟去看过病了,那药方邪门得很,待会我拿给你们瞧瞧。,我小弟去看过病了,那药方邪门得很,待会我拿给你们瞧瞧。,李氏,,
|
||||
我活了这么大岁数,也是第一次见。,我活了这么大岁数,也是第一次见。,李氏,,
|
||||
道听途说而已。,道听途说而已。,瞎子,,
|
||||
自摸!(笑),自摸!(笑),癞子,,
|
||||
(脏话)不玩了不玩了,今天一把都没胡过!,(脏话)不玩了不玩了,今天一把都没胡过!,胖子,,
|
||||
我也得早点回去,没准小蝉今儿个能回来,我总惦记着回去看看。,我也得早点回去,没准小蝉今儿个能回来,我总惦记着回去看看。,瞎子,,
|
||||
天黑了,你们回去都小心着点。,天黑了,你们回去都小心着点。,李氏,,
|
||||
嘶...,嘶...,癞子,,
|
||||
|
|
@ -5,17 +5,46 @@
|
||||
=> END
|
||||
|
||||
~ c03_s02_邀请小蝉与瞎子对话1
|
||||
小小蝶: 那个...方叔叔,小蝉在吗?
|
||||
瞎子: 咳咳,她,咳咳,不在。
|
||||
小小蝶: 她是生病了吗,好几天没见她了。
|
||||
小小蝶: 那个...方叔叔,小蝉在吗? [ID:]
|
||||
瞎子: 咳咳,她,咳咳,不在。 [ID:]
|
||||
小小蝶: 她是生病了吗,好几天没见她了。 [ID:]
|
||||
=> END
|
||||
|
||||
~ c03_s02_邀请小蝉与瞎子对话2
|
||||
瞎子: 她...
|
||||
瞎子: 我挨家挨户地问啊,都说没看见她。
|
||||
瞎子: 一个活生生的小孩子,就这么找不见了...
|
||||
瞎子: 她... [ID:]
|
||||
瞎子: 我挨家挨户地问啊,都说没看见她。 [ID:]
|
||||
瞎子: 一个活生生的小孩子,就这么找不见了... [ID:]
|
||||
=> END
|
||||
|
||||
~ c03_s03_理发店演出1
|
||||
癞子: 我家那个昨天想拿推子给我剃头,差点给我开了瓢! [ID:c03_理发店_癞子_8]
|
||||
癞子: 你瞅瞅,这么长一道血印子!唉呀... [ID:c03_理发店_癞子_9]
|
||||
瞎子: 可不能这么说。 [ID:c03_理发店_瞎子_15]
|
||||
瞎子: 弟妹这一手,没准是变相消了你的血光灾呢。 [ID:c03_理发店_瞎子_16]
|
||||
瞎子: 逢凶化吉,灾消晦退,好日子还在后头。 [ID:c03_理发店_瞎子_17]
|
||||
癞子: 哼,听你这么一说,好像确实有那么几分道理。 [ID:c03_理发店_癞子_10]
|
||||
癞子: 不过这辫子留了这么多年,乍一找人剪了,心里还有点怪不是滋味儿。 [ID:c03_理发店_癞子_11]
|
||||
瞎子: 怎么舍得剪了? [ID:c03_理发店_瞎子_18]
|
||||
癞子: 妇人家家的,不知道从哪打听到用男人的辫子入药能治病,一直念叨个不停。 [ID:c03_理发店_癞子_12]
|
||||
癞子: ...你听过这说法没有? [ID:c03_理发店_癞子_13]
|
||||
瞎子: 我不懂医,不好乱说。 [ID:c03_理发店_瞎子_19]
|
||||
癞子: 最近街上也是彻底乱了套,那些人看见你留了“阴阳头”,就跟那闻着味儿的狗一样凑过来... [ID:c03_理发店_癞子_14]
|
||||
癞子: 哦,瞧我这记性,忘了你眼神不好,不爱出门。 [#wait=1.5] [ID:c03_理发店_癞子_15]
|
||||
小小蝶: 方叔叔,我来找小蝉玩儿,她在屋里吗? [ID:c03_理发店_小小蝶_5]
|
||||
=> END
|
||||
|
||||
~ c03_s03_理发店演出2
|
||||
瞎子: 她摔了一跤,还睡着呢,我喊她起来? [ID:c03_理发店_瞎子_20]
|
||||
小小蝶: 不用不用,我在这等一会儿就行。 [ID:c03_理发店_小小蝶_6]
|
||||
陆仁: 方老弟,你正好给我家这小皮猴儿修修毛,成天跟个假小子似的,没个小姑娘样子。 [ID:c03_理发店_陆仁]
|
||||
瞎子: 小孩子嘛,高高兴兴就好。 [ID:c03_理发店_瞎子_21]
|
||||
瞎子: 你们也别在这干等,我去给你们拿些“洋点心”。 [ID:c03_理发店_瞎子_22]
|
||||
=> END
|
||||
|
||||
~ c03_s03_理发店演出3
|
||||
瞎子: 说是什么舶来品,高级货,你们拿出尝尝,甜个嘴。 [ID:c03_理发店_瞎子_23]
|
||||
小小蝶: 谢谢方叔叔。 [ID:c03_理发店_小小蝶_7]
|
||||
=> END
|
||||
|
||||
~ c03_s04_整理麻将游戏0
|
||||
# 打牌准备,整理麻将盒游戏成功(演出至麻将搬到桌上):
|
||||
|
@ -1,15 +1 @@
|
||||
keys,zh_CN,_character,_notes,_tags
|
||||
c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 ~ c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 ~ c03_f2_madman_runaway=2,,,
|
||||
c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2,,,
|
||||
0:demo 1:release,0:demo 1:release,release_stage,,
|
||||
1:序章 2:第一章 3:第二章 4:第三章 5:第四章 6:尾声,1:序章 2:第一章 3:第二章 4:第三章 5:第四章 6:尾声,current_chapter_stage,,
|
||||
0:初始化_关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成,0:初始化_关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成,c02_musicbox_stage,,
|
||||
0:初始化 1:已交互疯子 2:小鞋已掉落,0:初始化 1:已交互疯子 2:小鞋已掉落,c02_madman_interacted_stage,,
|
||||
0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给出弹珠 3:游戏结束_小猫纸片 4:游戏结束_小猫离开,0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给出弹珠 3:游戏结束_小猫纸片 4:游戏结束_小猫离开,c02_ball_game_stage,,
|
||||
0:初始化 1:已放肉,0:初始化 1:已放肉,c03_s01_meat_put,,
|
||||
0:初始化 1:已偷听_需邀请 2:完成邀请,0:初始化 1:已偷听_需邀请 2:完成邀请,c03_invite_xchan_supper,,
|
||||
0:初始化 1:已使用剪刀 2:已剪下,0:初始化 1:已使用剪刀 2:已剪下,c03_s03_laizi_braid,,
|
||||
0:初始化 1:跑开_纸人挡路 2:消除纸人,0:初始化 1:跑开_纸人挡路 2:消除纸人,c03_f2_madman_runaway,,
|
||||
c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,,,
|
||||
0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏,0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏,c03_before_mahjong_game,,
|
||||
0:麻将理牌 1:麻将出千 2:麻将结束 3:演出结束,0:麻将理牌 1:麻将出千 2:麻将结束 3:演出结束,c03_mahjong_game,,
|
||||
|
|
@ -12,7 +12,7 @@ c02_ball_game_stage: 0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给
|
||||
~ EventStage_c03
|
||||
c03_s01_meat_put: 0:初始化 1:已放肉
|
||||
c03_invite_xchan_supper: 0:初始化 1:已偷听_需邀请 2:完成邀请
|
||||
c03_s03_laizi_braid: 0:初始化 1:已用剪刀_准备剪辫 2:已剪下辫子
|
||||
c03_s03_laizi_braid: 0:初始化 1:已剪下辫子 2:演出结束
|
||||
c03_f2_madman_runaway: 0:初始化 1:跑开_纸人挡路 2:消除纸人
|
||||
c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2
|
||||
c03_before_mahjong_game: 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏
|
||||
|
@ -54,7 +54,7 @@ func _ready() -> void:
|
||||
next_btn.pressed.connect(_on_next_btn_pressed)
|
||||
|
||||
|
||||
func _validate_json():
|
||||
func _validate_json() -> void:
|
||||
# first_frame_mapping
|
||||
if !original_config.data.has("first_frame_mapping"):
|
||||
original_config.data["first_frame_mapping"] = {}
|
||||
@ -69,7 +69,7 @@ func _validate_json():
|
||||
original_config.data["frames_per_second"] = {}
|
||||
|
||||
|
||||
func _scan():
|
||||
func _scan() -> void:
|
||||
var dir = DirAccess.open(scan_path)
|
||||
if !dir:
|
||||
printerr("Failed to open directory:", scan_path)
|
||||
@ -109,7 +109,7 @@ func _scan_subdir_frames(path: String) -> Dictionary:
|
||||
return frames
|
||||
|
||||
|
||||
func load_and_display_pages(search_text):
|
||||
func load_and_display_pages(search_text) -> void:
|
||||
all_keys = original_config.data.dirs.keys()
|
||||
all_keys.sort_custom(func(a, b): return a < b)
|
||||
if search_edit.text:
|
||||
@ -126,7 +126,7 @@ func load_and_display_pages(search_text):
|
||||
_load_current_page()
|
||||
|
||||
|
||||
func _on_prev_btn_pressed():
|
||||
func _on_prev_btn_pressed() -> void:
|
||||
if current_page <= 1:
|
||||
current_page = all_pages
|
||||
else:
|
||||
@ -134,7 +134,7 @@ func _on_prev_btn_pressed():
|
||||
_load_current_page()
|
||||
|
||||
|
||||
func _on_next_btn_pressed():
|
||||
func _on_next_btn_pressed() -> void:
|
||||
if current_page >= all_pages:
|
||||
current_page = 1
|
||||
else:
|
||||
@ -142,7 +142,7 @@ func _on_next_btn_pressed():
|
||||
_load_current_page()
|
||||
|
||||
|
||||
func _load_current_page():
|
||||
func _load_current_page() -> void:
|
||||
page_label.text = str(current_page) + "/" + str(all_pages)
|
||||
var start = (current_page - 1) * PAGE_SIZE
|
||||
var end = min(start + PAGE_SIZE, matched_keys.size())
|
||||
@ -155,7 +155,7 @@ func _load_current_page():
|
||||
config_edit.text = text
|
||||
|
||||
|
||||
func _display_cards(current_keys: Array):
|
||||
func _display_cards(current_keys: Array) -> void:
|
||||
# clear frames_display_grid
|
||||
for child in frames_display_grid.get_children():
|
||||
child.queue_free()
|
||||
|
@ -34,7 +34,7 @@ func _ready() -> void:
|
||||
var reload_lock := Mutex.new()
|
||||
|
||||
|
||||
func display_frames():
|
||||
func display_frames() -> void:
|
||||
if mapping_name and animated_sprite.sprite_frames.has_animation(mapping_name):
|
||||
animated_sprite.play(mapping_name)
|
||||
# scale down if the frame is too big
|
||||
@ -47,7 +47,7 @@ func display_frames():
|
||||
reload_frames()
|
||||
|
||||
|
||||
func reload_frames():
|
||||
func reload_frames() -> void:
|
||||
# 暂不启用,使用手动调整
|
||||
# return
|
||||
var sprite_frames = animated_sprite.sprite_frames as SpriteFrames
|
||||
@ -85,7 +85,7 @@ func reload_frames():
|
||||
display_frames()
|
||||
|
||||
|
||||
func _on_mapping_submitted(new_text: String):
|
||||
func _on_mapping_submitted(new_text: String) -> void:
|
||||
# clear the old mapping
|
||||
var sprite_frames = animated_sprite.sprite_frames as SpriteFrames
|
||||
if sprite_frames.has_animation(mapping_name):
|
||||
@ -97,7 +97,7 @@ func _on_mapping_submitted(new_text: String):
|
||||
_save_and_update_frames_and_config()
|
||||
|
||||
|
||||
func _on_frames_speed_submitted(new_text: String):
|
||||
func _on_frames_speed_submitted(new_text: String) -> void:
|
||||
frames_per_sec = int(new_text)
|
||||
if frames_per_sec < 1:
|
||||
frames_per_sec = 1
|
||||
@ -108,7 +108,7 @@ func _on_frames_speed_submitted(new_text: String):
|
||||
_save_and_update_frames_and_config()
|
||||
|
||||
|
||||
func _on_first_frame_mapping_submitted(new_text: String):
|
||||
func _on_first_frame_mapping_submitted(new_text: String) -> void:
|
||||
# clear the old first frame mapping
|
||||
if first_frame_mapping != "":
|
||||
var sprite_frames = animated_sprite.sprite_frames as SpriteFrames
|
||||
@ -120,7 +120,7 @@ func _on_first_frame_mapping_submitted(new_text: String):
|
||||
_save_and_update_frames_and_config()
|
||||
|
||||
|
||||
func _on_mirror_mapping_submitted(new_text: String):
|
||||
func _on_mirror_mapping_submitted(new_text: String) -> void:
|
||||
# clear the old mirror mapping
|
||||
if mirror_mapping != "":
|
||||
var sprite_frames = animated_sprite.sprite_frames as SpriteFrames
|
||||
@ -132,7 +132,7 @@ func _on_mirror_mapping_submitted(new_text: String):
|
||||
_save_and_update_frames_and_config()
|
||||
|
||||
|
||||
func _create_mirror():
|
||||
func _create_mirror() -> void:
|
||||
if not mirror_mapping:
|
||||
return
|
||||
var mirror_dir_path = "res://asset/art/animation/" + mirror_mapping
|
||||
@ -159,7 +159,7 @@ func _create_mirror():
|
||||
sprite_frames.set_animation_speed(mapping_name, frames_per_sec)
|
||||
|
||||
|
||||
func _save_and_update_frames_and_config():
|
||||
func _save_and_update_frames_and_config() -> void:
|
||||
# save the sprite_frames
|
||||
if animated_sprite:
|
||||
ResourceSaver.save(animated_sprite.sprite_frames)
|
||||
|
@ -4,7 +4,7 @@ var gif_path = "res://asset/art/gif/"
|
||||
var sprite_frames = preload("res://config/animation/entity_sprite_frames.tres")
|
||||
|
||||
|
||||
func _ready():
|
||||
func _ready() -> void:
|
||||
var gif_files = []
|
||||
for file in DirAccess.open(gif_path).get_files():
|
||||
if file.get_extension() == "gif":
|
||||
|
@ -11,7 +11,7 @@ func _ready() -> void:
|
||||
load_btn.pressed.connect(_reload_all)
|
||||
|
||||
|
||||
func _reload_all():
|
||||
func _reload_all() -> void:
|
||||
static_frames.clear_all()
|
||||
var dir = DirAccess.open(path) as DirAccess
|
||||
static_frames.add_animation("placeholder")
|
||||
|
@ -9,7 +9,7 @@ func _init() -> void:
|
||||
bus = "game_sfx"
|
||||
|
||||
|
||||
func play_random():
|
||||
func play_random() -> void:
|
||||
if audio_collections == null:
|
||||
push_warning("empty audio_collections")
|
||||
return
|
||||
|
@ -25,7 +25,7 @@ func _ready() -> void:
|
||||
_reload_groups()
|
||||
|
||||
|
||||
func _reload_groups():
|
||||
func _reload_groups() -> void:
|
||||
VIBE_GROUPS.clear()
|
||||
for group in vibe_group_collection.groups:
|
||||
if group and group.group_name:
|
||||
@ -91,7 +91,7 @@ func _find_group_by_name(group_name: StringName) -> VibeGroup:
|
||||
|
||||
|
||||
## 核心方法:播放一个指定的 VibeGroup
|
||||
func play_group(group_name: StringName, ease_in := 1.0):
|
||||
func play_group(group_name: StringName, ease_in := 1.0) -> void:
|
||||
var group = _find_group_by_name(group_name)
|
||||
if not is_instance_valid(group):
|
||||
printerr("VibeManager: VibeGroup is not valid. group_name:", group_name)
|
||||
@ -109,7 +109,7 @@ func play_group(group_name: StringName, ease_in := 1.0):
|
||||
vibe_player.play()
|
||||
|
||||
|
||||
func stop_group(group_name: StringName, ease_out := 1.0):
|
||||
func stop_group(group_name: StringName, ease_out := 1.0) -> void:
|
||||
if not vibe_player_dict.has(group_name):
|
||||
return
|
||||
var vibe_player = vibe_player_dict[group_name]
|
||||
|
@ -24,7 +24,7 @@ extends Resource
|
||||
@export_range(0.0, 300.0, 0.1, "s") var max_interval: float = 10.0
|
||||
|
||||
|
||||
func _init():
|
||||
func _init() -> void:
|
||||
# 确保 min <= max
|
||||
if min_interval > max_interval:
|
||||
max_interval = min_interval
|
||||
|
@ -13,7 +13,7 @@ var _base_db := 0.0:
|
||||
_base_player.volume_db = val
|
||||
|
||||
|
||||
func _init(group: VibeGroup):
|
||||
func _init(group: VibeGroup) -> void:
|
||||
if not group or not group.base_sound:
|
||||
printerr("VibeGroupPlayer: vibe_group or base sound is null, cannot initialize.")
|
||||
return
|
||||
@ -49,7 +49,7 @@ func _init(group: VibeGroup):
|
||||
timer.timeout.connect(_on_embellishment_timer_timeout.bind(i))
|
||||
|
||||
|
||||
func _on_embellishment_timer_timeout(id: int):
|
||||
func _on_embellishment_timer_timeout(id: int) -> void:
|
||||
var embellishment = vibe_group.embellishments[id] as Embellishment
|
||||
if not embellishment:
|
||||
return
|
||||
@ -75,14 +75,14 @@ func _refresh_embellishment_player_db(id: int) -> void:
|
||||
)
|
||||
|
||||
|
||||
func set_volume_linear(volume: float):
|
||||
func set_volume_linear(volume: float) -> void:
|
||||
_base_db = linear_to_db(volume)
|
||||
for i in range(vibe_group.embellishments.size()):
|
||||
_refresh_embellishment_player_db(i)
|
||||
_refresh_base_player_db()
|
||||
|
||||
|
||||
func play():
|
||||
func play() -> void:
|
||||
if not vibe_group or not vibe_group.base_sound:
|
||||
printerr("VibeGroupPlayer: vibe_group or base sound is null, cannot play.")
|
||||
return
|
||||
@ -108,6 +108,6 @@ func play():
|
||||
timer.start(random_wait_time)
|
||||
|
||||
|
||||
func stop_and_free():
|
||||
func stop_and_free() -> void:
|
||||
if not is_queued_for_deletion():
|
||||
queue_free()
|
||||
|
@ -21,6 +21,17 @@ const LOCALE_PREFIX_MAPPING = {"zh": 0, "en": 1}
|
||||
const CAPTION_OPTIONS_DICT = {0: ["上海话", "普通话"], 1: [""]}
|
||||
const CAPTION_LOCALES_DICT = {0: ["zh_SH", "zh_CN"], 1: ["en"]}
|
||||
|
||||
### dailog
|
||||
const DIALOG_C01 = preload("uid://ckaq073w1lsom")
|
||||
const DIALOG_C02 = preload("uid://o7gam82qlv3s")
|
||||
const DIALOG_C03 = preload("uid://b66v5hsf3tdox")
|
||||
const DIALOG_C04 = preload("uid://cthsrdkrseijb")
|
||||
const DIALOG_C05 = preload("uid://c2em7wb623pd7")
|
||||
const DIALOG_C06 = preload("uid://c1bkhblw88ls0")
|
||||
const DIALOG_NPC = preload("uid://cni46vt7glkes")
|
||||
const DIALOG_INSPECT = preload("uid://dwykrbeikrpw1")
|
||||
const DIALOG_ITEM = preload("uid://b1vwhxctfhl5d")
|
||||
|
||||
## layers
|
||||
# 设置, DebugPanel
|
||||
const CANVAS_LAYER_SETTINGS = 30
|
||||
|
@ -2,6 +2,7 @@
|
||||
extends Node2D
|
||||
class_name Event2D
|
||||
|
||||
@export_group("Event", "event")
|
||||
# 当前事件
|
||||
@export var event_name: StringName:
|
||||
set(val):
|
||||
@ -21,6 +22,7 @@ class_name Event2D
|
||||
event_stages = val
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
_auto_memo()
|
||||
@export_group("PreEvent", "pre_event")
|
||||
# 前置依赖事件,为空时意味着无前置事件
|
||||
@export var pre_event_name: StringName:
|
||||
set(val):
|
||||
@ -40,12 +42,12 @@ class_name Event2D
|
||||
pre_event_stages = val
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
_auto_memo()
|
||||
@export_multiline var event_memo := ""
|
||||
@export_tool_button("auto memo") var auto_memo = _auto_memo
|
||||
@export_tool_button("创建脚本") var create_script = _create_script
|
||||
@export_tool_button("复制 greater setter") var copy_greater_setter = _copy_greater_setter
|
||||
@export_tool_button("复制 setter") var copy_setter = _copy_setter
|
||||
@export_tool_button("复制 getter") var copy_getter = _copy_getter
|
||||
var event_memo := ""
|
||||
|
||||
var stage := 0
|
||||
var prev_stage := 0
|
||||
@ -113,6 +115,28 @@ func _on_stage_updated():
|
||||
pass
|
||||
|
||||
|
||||
##### event_memo getter and setter
|
||||
func _get(property: StringName) -> Variant:
|
||||
if property == "event_memo":
|
||||
if Engine.is_editor_hint():
|
||||
return null
|
||||
if event_memo == "":
|
||||
_auto_memo()
|
||||
return event_memo
|
||||
return null
|
||||
|
||||
|
||||
func _get_property_list() -> Array[Dictionary]:
|
||||
return [
|
||||
{
|
||||
"name": "event_memo",
|
||||
"type": TYPE_STRING,
|
||||
"hint": PROPERTY_HINT_MULTILINE_TEXT,
|
||||
"usage": PROPERTY_USAGE_EDITOR
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
###### TOOL BUTTON
|
||||
|
||||
var script_template = preload("uid://bmxsei74o3pyw") as Script
|
||||
@ -187,3 +211,4 @@ func _auto_memo() -> void:
|
||||
event_memo = "\n".join(kept_lines)
|
||||
event_memo += "\n" if kept_lines else ""
|
||||
event_memo += memo_str
|
||||
notify_property_list_changed()
|
||||
|
@ -1,9 +1,6 @@
|
||||
@tool
|
||||
class_name EventBinder extends Node
|
||||
|
||||
@export_tool_button("auto memo") var auto_memo = _auto_memo
|
||||
@export_multiline var memo := ""
|
||||
|
||||
@export_group("Updater", "updater")
|
||||
@export var updater_event := &"":
|
||||
set(val):
|
||||
@ -64,6 +61,9 @@ class_name EventBinder extends Node
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
_auto_memo()
|
||||
|
||||
var memo := ""
|
||||
@export_tool_button("auto memo") var auto_memo = _auto_memo
|
||||
|
||||
var _local_updater_event_stage := 0
|
||||
|
||||
|
||||
@ -160,6 +160,28 @@ func _auto_detect_mode():
|
||||
printerr("[EventBinder] _auto_detect_mode cannot detect trigger mode. path:", get_path())
|
||||
|
||||
|
||||
##### memo getter and setter
|
||||
func _get(property: StringName) -> Variant:
|
||||
if property == "memo":
|
||||
if Engine.is_editor_hint():
|
||||
return null
|
||||
if memo == "":
|
||||
_auto_memo()
|
||||
return memo
|
||||
return null
|
||||
|
||||
|
||||
func _get_property_list() -> Array[Dictionary]:
|
||||
return [
|
||||
{
|
||||
"name": "memo",
|
||||
"type": TYPE_STRING,
|
||||
"hint": PROPERTY_HINT_MULTILINE_TEXT,
|
||||
"usage": PROPERTY_USAGE_EDITOR
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
#### TOOL BUTTON
|
||||
|
||||
|
||||
@ -201,3 +223,4 @@ func _auto_memo() -> void:
|
||||
memo = "\n".join(kept_lines)
|
||||
memo += "\n" if kept_lines else ""
|
||||
memo += memo_str
|
||||
notify_property_list_changed()
|
||||
|
@ -74,6 +74,15 @@ func get_player() -> MainPlayer:
|
||||
return null
|
||||
|
||||
|
||||
func resettle_player(global_position_x: float, direction: Vector2) -> void:
|
||||
var player = get_player()
|
||||
if player:
|
||||
player.global_position.x = global_position_x
|
||||
player.set_facing_direction(direction)
|
||||
else:
|
||||
printerr("settle_player: Player node not found")
|
||||
|
||||
|
||||
func focus_node(node: Node2D, duration := 0.0) -> void:
|
||||
var marker = get_camera_marker()
|
||||
if marker:
|
||||
|
@ -76,6 +76,7 @@ runtime/balloon_path="res://scene/dialog/balloon.tscn"
|
||||
editor/translations/include_character_in_translation_exports=true
|
||||
editor/translations/include_notes_in_translation_exports=true
|
||||
editor/wrap_long_lines=true
|
||||
editor/advanced/custom_test_scene_path="uid://ugd552efvil0"
|
||||
|
||||
[display]
|
||||
|
||||
|
212
scene/entity/ux/ppt_helper.gd
Normal file
@ -0,0 +1,212 @@
|
||||
@tool
|
||||
|
||||
class_name PPTHelper
|
||||
extends Node2D
|
||||
|
||||
signal slide_changed(new_slide_index: int)
|
||||
signal presentation_finished
|
||||
|
||||
## 转场配置数组,按顺序播放
|
||||
@export var configs: Array[PPTHelperConfig] = []
|
||||
## 如果为 true, 将在场景加载完成后自动播放
|
||||
@export var auto_start := true
|
||||
## 如果为 true, 播放到结尾后将从头开始
|
||||
@export var loop := false
|
||||
|
||||
## 当前激活的配置索引
|
||||
var current_index := -1
|
||||
## 动画播放锁,防止在转场时重复触发
|
||||
var is_playing := false
|
||||
|
||||
## 编辑器工具按钮:自动配置 Slides
|
||||
@export_tool_button("自动配置 Slides") var auto_config_slides = _auto_config_slides
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
if auto_start:
|
||||
play()
|
||||
|
||||
|
||||
## 开始或重新开始播放
|
||||
## @param start_index 从指定的索引开始播放
|
||||
func play(start_index := 0) -> void:
|
||||
if configs.is_empty():
|
||||
printerr("PPTHelper: No configs to play.")
|
||||
return
|
||||
if start_index < 0 or start_index >= configs.size():
|
||||
printerr("PPTHelper: 'start_index' is out of bounds.")
|
||||
return
|
||||
|
||||
# 重置状态
|
||||
is_playing = false
|
||||
current_index = -1
|
||||
# 隐藏所有页面,准备从头开始
|
||||
for config in configs:
|
||||
if config and config.canvas_item:
|
||||
var node := get_node_or_null(config.canvas_item) as CanvasItem
|
||||
if is_instance_valid(node):
|
||||
node.modulate.a = 0.0
|
||||
|
||||
# 开始播放指定的页面
|
||||
_transition_to(start_index)
|
||||
|
||||
|
||||
## 手动切换到下一个页面
|
||||
func next() -> void:
|
||||
if is_playing or current_index == -1:
|
||||
return
|
||||
var next_index := current_index + 1
|
||||
if next_index >= configs.size():
|
||||
if loop:
|
||||
next_index = 0
|
||||
else:
|
||||
presentation_finished.emit()
|
||||
print("PPTHelper: Reached the end of the presentation.")
|
||||
return
|
||||
_transition_to(next_index)
|
||||
|
||||
|
||||
## 跳转到指定的页面
|
||||
func goto(target_index: int) -> void:
|
||||
if target_index < 0 or target_index >= configs.size():
|
||||
printerr("PPTHelper: 'target_index' for goto() is out of bounds.")
|
||||
return
|
||||
if target_index == current_index or is_playing:
|
||||
return
|
||||
_transition_to(target_index)
|
||||
|
||||
|
||||
# 核心转换函数
|
||||
func _transition_to(target_index: int) -> void:
|
||||
if is_playing:
|
||||
return
|
||||
is_playing = true
|
||||
var from_index := current_index
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_parallel(true) # 并行处理 in 和 out 动画
|
||||
# --- 处理上一页的 "Ease Out" ---
|
||||
if from_index != -1:
|
||||
var from_config := configs[from_index]
|
||||
var from_node := get_node_or_null(from_config.canvas_item) as CanvasItem
|
||||
if is_instance_valid(from_node):
|
||||
if from_config.ease_out_duration > 0:
|
||||
(
|
||||
tween
|
||||
. tween_property(from_node, "modulate:a", 0.0, from_config.ease_out_duration)
|
||||
. set_trans(_get_trans_type(from_config.ease_out_trans_type))
|
||||
. set_ease(_get_ease_type(from_config.ease_out_type))
|
||||
)
|
||||
else:
|
||||
from_node.modulate.a = 0.0
|
||||
else:
|
||||
printerr("PPTHelper: Invalid node for ease out at index %d." % from_index)
|
||||
|
||||
# --- 处理目标页的 "Ease In" ---
|
||||
var target_config := configs[target_index]
|
||||
var target_node := get_node_or_null(target_config.canvas_item) as CanvasItem
|
||||
if is_instance_valid(target_node):
|
||||
if target_config.ease_in_duration > 0:
|
||||
target_node.modulate.a = 0.0 # 确保开始时透明
|
||||
(
|
||||
tween
|
||||
. tween_property(target_node, "modulate:a", 1.0, target_config.ease_in_duration)
|
||||
. set_trans(_get_trans_type(target_config.ease_in_trans_type))
|
||||
. set_ease(_get_ease_type(target_config.ease_in_type))
|
||||
)
|
||||
else:
|
||||
target_node.modulate.a = 1.0
|
||||
else:
|
||||
printerr("PPTHelper: Invalid node for ease in at index %d." % target_index)
|
||||
is_playing = false # 如果节点无效,立即解锁
|
||||
return
|
||||
|
||||
tween.tween_interval(0.001) # 最小延迟防止无效
|
||||
await tween.finished
|
||||
|
||||
# --- 更新状态并检查自动播放下一个 ---
|
||||
current_index = target_index
|
||||
is_playing = false
|
||||
slide_changed.emit(current_index) # 发射信号
|
||||
|
||||
# 如果配置为自动转到下一个,等待指定时间后执行
|
||||
if target_config.ease_out_to_next:
|
||||
if target_config.ease_out_wait_time > 0.0:
|
||||
await Util.wait(target_config.ease_out_wait_time)
|
||||
next()
|
||||
else:
|
||||
presentation_finished.emit()
|
||||
|
||||
|
||||
# 辅助函数:将字符串映射到 Tween.TransitionType
|
||||
func _get_trans_type(trans_str: String) -> Tween.TransitionType:
|
||||
match trans_str.to_lower():
|
||||
"linear":
|
||||
return Tween.TRANS_LINEAR
|
||||
"sine":
|
||||
return Tween.TRANS_SINE
|
||||
"cubic":
|
||||
return Tween.TRANS_CUBIC
|
||||
"quart":
|
||||
return Tween.TRANS_QUART
|
||||
"quint":
|
||||
return Tween.TRANS_QUINT
|
||||
"expo":
|
||||
return Tween.TRANS_EXPO
|
||||
"elastic":
|
||||
return Tween.TRANS_ELASTIC
|
||||
"bounce":
|
||||
return Tween.TRANS_BOUNCE
|
||||
"spring":
|
||||
return Tween.TRANS_SPRING
|
||||
_:
|
||||
return Tween.TRANS_LINEAR
|
||||
|
||||
|
||||
# 辅助函数:将字符串映射到 Tween.EaseType
|
||||
func _get_ease_type(ease_str: String) -> Tween.EaseType:
|
||||
match ease_str.to_lower():
|
||||
"in":
|
||||
return Tween.EASE_IN
|
||||
"out":
|
||||
return Tween.EASE_OUT
|
||||
"inout":
|
||||
return Tween.EASE_IN_OUT
|
||||
_:
|
||||
return Tween.EASE_IN_OUT
|
||||
|
||||
|
||||
#### TOOL BUTTON
|
||||
func _auto_config_slides() -> void:
|
||||
if not Engine.is_editor_hint():
|
||||
return # 只在编辑器中运行
|
||||
# 清空现有配置
|
||||
configs = []
|
||||
# 获取所有直接子节点
|
||||
var children := get_children()
|
||||
if children.is_empty():
|
||||
printerr("PPTHelper: No child nodes found for auto-configuration.")
|
||||
notify_property_list_changed()
|
||||
return
|
||||
|
||||
# 从下到上配置(反转数组)
|
||||
children.reverse()
|
||||
var configured_count := 0
|
||||
for child in children:
|
||||
if child is CanvasItem:
|
||||
var config := PPTHelperConfig.new()
|
||||
config.canvas_item = get_path_to(child) # 设置 NodePath 到子节点
|
||||
# 其他属性使用默认值(如 ease_in_duration = 0.0 等),可手动调整
|
||||
configs.append(config)
|
||||
configured_count += 1
|
||||
else:
|
||||
print("PPTHelper: Skipping non-CanvasItem child: %s" % child.name)
|
||||
|
||||
if configured_count > 0:
|
||||
print("PPTHelper: Auto-configured %d slides from child nodes." % configured_count)
|
||||
else:
|
||||
printerr("PPTHelper: No valid CanvasItem children found for auto-configuration.")
|
||||
|
||||
# 刷新编辑器属性以显示更新
|
||||
notify_property_list_changed()
|
1
scene/entity/ux/ppt_helper.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cys8g55ahou1u
|
28
scene/entity/ux/ppt_helper_config.gd
Normal file
@ -0,0 +1,28 @@
|
||||
class_name PPTHelperConfig
|
||||
extends Resource
|
||||
|
||||
## 需要控制的 CanvasItem 节点路径
|
||||
@export_node_path("CanvasItem") var canvas_item: NodePath
|
||||
# 转场 ease in 参数
|
||||
@export_group("EaseIn", "ease_in_")
|
||||
## 动画的缓动方式 (进入, 退出, 或两者兼有)
|
||||
@export_enum("in", "out", "inout") var ease_in_type := "inout"
|
||||
## 动画的过渡曲线类型
|
||||
@export_enum("linear", "sine", "cubic", "quart", "quint", "expo", "elastic", "bounce", "spring")
|
||||
var ease_in_trans_type := "cubic"
|
||||
## 动画的持续时间(秒) 0 意味着直接出现(无需 ease)
|
||||
@export var ease_in_duration := 0.0
|
||||
|
||||
# 转场 ease out 参数
|
||||
@export_group("EaseOut", "ease_out_")
|
||||
## 是否自动转到下一个页面(在 ease in 完成后触发 ease out 并转场)
|
||||
@export var ease_out_to_next := true
|
||||
# ease_out_to_next 为 true 时, 等待 ease_out_wait_time 秒再执行
|
||||
@export var ease_out_wait_time := 0.5
|
||||
## 动画的缓动方式 (进入, 退出, 或两者兼有)
|
||||
@export_enum("in", "out", "inout") var ease_out_type := "inout"
|
||||
## 动画的过渡曲线类型
|
||||
@export_enum("linear", "sine", "cubic", "quart", "quint", "expo", "elastic", "bounce", "spring")
|
||||
var ease_out_trans_type := "cubic"
|
||||
## 动画的持续时间(秒) 0 意味着直接消失(无需 ease)
|
||||
@export var ease_out_duration := 0.5
|
1
scene/entity/ux/ppt_helper_config.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b1opm26eep8cw
|
@ -31,8 +31,11 @@ func _on_ground_ready() -> void:
|
||||
closeup刮海报_鬼母子.exit.connect(_check_if_flyer_shaven)
|
||||
_check_if_flyer_shaven()
|
||||
closeup癞子纸人.exit.connect(_on_laizi_exit)
|
||||
if EventManager.get_stage("c03_s03_laizi_braid") >= 2:
|
||||
var braid_satge := EventManager.get_stage("c03_s03_laizi_braid")
|
||||
if braid_satge >= 1:
|
||||
_setup_beheaded_laizi_paperman()
|
||||
if braid_satge == 1:
|
||||
closeup癞子纸人.display()
|
||||
|
||||
|
||||
func _check_if_flyer_shaven(_arg = false) -> void:
|
||||
@ -42,17 +45,16 @@ func _check_if_flyer_shaven(_arg = false) -> void:
|
||||
SceneManager.pop_os_with_str("c03_s03_获得剪刀纸舌头")
|
||||
|
||||
|
||||
# 癞子演出
|
||||
# 渠道有二:
|
||||
# 1. Closeup癞子纸人 exit true 后
|
||||
# 2. 自身 _on_ground_ready
|
||||
func _on_laizi_exit(_arg = false) -> void:
|
||||
if _arg:
|
||||
_setup_beheaded_laizi_paperman()
|
||||
# TODO 癞子纸人
|
||||
SceneManager.lock_player()
|
||||
# TODO
|
||||
SceneManager.pop_debug_dialog_info("美术&音效", "剪辫子演出")
|
||||
await Util.wait(2.0)
|
||||
SceneManager.unlock_player()
|
||||
$"../DeployLayer/Event2D癞子剪辫子".start_show()
|
||||
|
||||
|
||||
func _setup_beheaded_laizi_paperman():
|
||||
$"../DeployLayer/癞子纸人/癞子纸人头套".queue_free()
|
||||
closeup癞子纸人.enabled = false
|
||||
$"../DeployLayer/癞子纸人/癞子纸人头套".hide()
|
||||
closeup癞子纸人.enabled = false
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://bsqt2c061fmin"]
|
||||
[gd_scene load_steps=21 format=3 uid="uid://bsqt2c061fmin"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_40yjl"]
|
||||
[ext_resource type="Script" uid="uid://cim5bqm2nayls" path="res://scene/ground/scene/c03/s03_瞎子理发店.gd" id="2_irgvj"]
|
||||
@ -12,7 +12,13 @@
|
||||
[ext_resource type="PackedScene" uid="uid://d320nw5yrmvjo" path="res://scene/ground/script/c03/s03_closeup癞子纸人.tscn" id="9_4imwu"]
|
||||
[ext_resource type="Texture2D" uid="uid://bv5vcrdqwtlm3" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子纸人.png" id="9_bdtls"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckboywu6sjcpc" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子纸人头套.png" id="10_1pu6f"]
|
||||
[ext_resource type="Script" uid="uid://cp8osi230xaqa" path="res://scene/ground/script/c03/s03_event_2d癞子剪辫子.gd" id="10_6m0be"]
|
||||
[ext_resource type="PackedScene" uid="uid://bylmdf4duq6pw" path="res://scene/ground/script/c03/s03_closeup瞎子糕点.tscn" id="10_pkhgt"]
|
||||
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="11_1pu6f"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="11_6ryqd"]
|
||||
[ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="12_15t2b"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://cmvr3lbwe3h7p" path="res://asset/art/gif/c03_特写与游戏动画/c03_特写与游戏动画_frames.tres" id="14_pkhgt"]
|
||||
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="17_fq03x"]
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
|
||||
|
||||
@ -75,12 +81,65 @@ texture = ExtResource("9_bdtls")
|
||||
position = Vector2(1, -23)
|
||||
texture = ExtResource("10_1pu6f")
|
||||
|
||||
[node name="Note桌子" parent="Ground/DeployLayer" index="6" instance=ExtResource("11_1pu6f")]
|
||||
[node name="Event2D癞子剪辫子" type="Node2D" parent="Ground/DeployLayer" index="6"]
|
||||
script = ExtResource("10_6m0be")
|
||||
event_name = &"c03_s03_laizi_braid"
|
||||
event_stages = Array[int]([1])
|
||||
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||
|
||||
[node name="Pro癞子" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D癞子剪辫子"]
|
||||
position = Vector2(343, 43)
|
||||
sprite_frames = ExtResource("14_pkhgt")
|
||||
animation = &"癞子背坐呼吸"
|
||||
script = ExtResource("12_15t2b")
|
||||
action_configs = Array[Dictionary]([{
|
||||
"animation_intro": "癞子背坐呼吸",
|
||||
&"animation_next": "癞子背对侧头呼吸",
|
||||
&"intro_loop": 4
|
||||
}])
|
||||
metadata/_custom_type_script = "uid://cphfob11f7atx"
|
||||
|
||||
[node name="Pro瞎子" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D癞子剪辫子"]
|
||||
position = Vector2(377, 48)
|
||||
sprite_frames = ExtResource("11_6ryqd")
|
||||
animation = &"方瞎子呼吸-左"
|
||||
autoplay = "方瞎子呼吸-左"
|
||||
script = ExtResource("12_15t2b")
|
||||
move_configs = Array[Dictionary]([{
|
||||
"animation": "方瞎子走路-右",
|
||||
"animation_next": "",
|
||||
"duration": 1e+07,
|
||||
"movement_x": 300.0,
|
||||
"velocity": Vector2(70, 0)
|
||||
}])
|
||||
debug_mov_animation = "方瞎子走路-右"
|
||||
metadata/_custom_type_script = "uid://cphfob11f7atx"
|
||||
|
||||
[node name="Pro陆仁" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D癞子剪辫子"]
|
||||
position = Vector2(297, 37)
|
||||
sprite_frames = ExtResource("14_pkhgt")
|
||||
animation = &"父亲抱小孩"
|
||||
autoplay = "父亲抱小孩"
|
||||
script = ExtResource("12_15t2b")
|
||||
metadata/_custom_type_script = "uid://cphfob11f7atx"
|
||||
|
||||
[node name="Closeup瞎子糕点" parent="Ground/DeployLayer/Event2D癞子剪辫子" instance=ExtResource("5_d40x1")]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(357, -213)
|
||||
packed_scene = ExtResource("10_pkhgt")
|
||||
quit_closeup_on_cancel = false
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Event2D癞子剪辫子"]
|
||||
position = Vector2(337, 29)
|
||||
texture = ExtResource("17_fq03x")
|
||||
texture_scale = 0.6
|
||||
|
||||
[node name="Note桌子" parent="Ground/DeployLayer" index="7" instance=ExtResource("11_1pu6f")]
|
||||
position = Vector2(393, 33)
|
||||
title_filter = "c03"
|
||||
note_key = "c03_s03_桌子"
|
||||
|
||||
[node name="Note洗头盆" parent="Ground/DeployLayer" index="7" instance=ExtResource("11_1pu6f")]
|
||||
[node name="Note洗头盆" parent="Ground/DeployLayer" index="8" instance=ExtResource("11_1pu6f")]
|
||||
position = Vector2(501, 46)
|
||||
title_filter = "c03"
|
||||
note_key = "c03_s03_洗头盆"
|
||||
@ -106,7 +165,6 @@ offset = Vector2(0, -11)
|
||||
points = PackedVector2Array(35, 151, 541, 151)
|
||||
|
||||
[node name="DirectionalLight2D" parent="Ground" index="8"]
|
||||
visible = false
|
||||
energy = 0.85
|
||||
blend_mode = 1
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
extends CanvasLayer
|
||||
|
||||
@onready var bg = $BG as TextureRect
|
||||
@onready var braid = %"HoverBraid" as CanvasItem
|
||||
|
||||
|
||||
signal exit(success: bool)
|
||||
|
||||
@ -10,30 +12,24 @@ func _ready() -> void:
|
||||
# 两张纸钱点击事件
|
||||
%"Draggable纸钱1".picked.connect(_on_paper_coin_picked, CONNECT_ONE_SHOT)
|
||||
%"Draggable纸钱2".picked.connect(_on_paper_coin_picked, CONNECT_ONE_SHOT)
|
||||
%"HoverBraid".interacted.connect(_on_braid_interacted, CONNECT_ONE_SHOT)
|
||||
|
||||
braid.interacted.connect(_on_braid_interacted, CONNECT_ONE_SHOT)
|
||||
_check_if_notify_to_use_prop()
|
||||
# 如果用过剪刀,则直接展示后脑勺
|
||||
# 0:初始化 1:已使用剪刀 2:已剪下
|
||||
if EventManager.get_stage("c03_s03_laizi_braid") > 0:
|
||||
# 0:初始化 1:已剪下 2:演出结束
|
||||
var stage = EventManager.get_stage("c03_s03_laizi_braid")
|
||||
if stage == 1:
|
||||
_braid_cutting_show()
|
||||
elif stage > 1:
|
||||
$"头".hide()
|
||||
$"后脑勺".hide()
|
||||
$"头受伤".hide()
|
||||
|
||||
|
||||
func _on_paper_coin_picked(_node = null) -> void:
|
||||
if GlobalFunctor.c03_get_paper_coin():
|
||||
await SceneManager.get_inspector().quit_and_hidden
|
||||
_check_if_notify_to_use_prop()
|
||||
|
||||
func _on_braid_interacted() -> void:
|
||||
var closeup = get_parent() as Closeup2D
|
||||
# 禁用 cancel to quit
|
||||
closeup.hold_cancel_before_exit()
|
||||
SceneManager.enable_prop_item("prop_剪下的辫子")
|
||||
await SceneManager.get_inspector().quit_and_hidden
|
||||
await Util.wait(1.0)
|
||||
# 退出,播放剪辫子演出
|
||||
exit.emit(true)
|
||||
|
||||
|
||||
func _check_if_notify_to_use_prop() -> void:
|
||||
if EventManager.get_stage("c03_s03_papercoin1") > 0 and EventManager.get_stage("c03_s03_papercoin2") > 0:
|
||||
@ -63,10 +59,42 @@ func _try_interact() -> void:
|
||||
if using_scissors:
|
||||
return
|
||||
using_scissors = true
|
||||
var closeup = get_parent() as Closeup2D
|
||||
# 禁用 cancel to quit
|
||||
closeup.hold_cancel_before_exit()
|
||||
await Util.wait(0.5)
|
||||
# 飞针
|
||||
$AnimationPlayer.play("cutting_overhead")
|
||||
# 抖动
|
||||
Util.shake_layer(self, 0.3)
|
||||
# TODO
|
||||
SceneManager.pop_debug_dialog_info("音效", "使用剪刀(惊悚)")
|
||||
$"头".hide()
|
||||
await Util.wait(2.0)
|
||||
await Util.wait(5.0)
|
||||
$"后脑勺".show()
|
||||
$"头受伤".hide()
|
||||
# TODO
|
||||
SceneManager.pop_debug_dialog_info("音效", "纸人突然转头(咔嚓)")
|
||||
|
||||
|
||||
# 剪下辫子
|
||||
func _on_braid_interacted() -> void:
|
||||
# 剪刀变为重要物品
|
||||
SceneManager.disable_prop_item("prop_剪刀")
|
||||
EventManager.set_stage("c03_s03_laizi_braid", 1)
|
||||
SceneManager.enable_important_item("prop_剪刀", false)
|
||||
_braid_cutting_show()
|
||||
|
||||
|
||||
# 播放演出
|
||||
func _braid_cutting_show() -> void:
|
||||
$"头".hide()
|
||||
$"头受伤".hide()
|
||||
$"后脑勺".hide()
|
||||
# SceneManager.enable_prop_item("prop_剪下的辫子")
|
||||
await Util.wait(2.0)
|
||||
$AnimationPlayer.play("light_and_canvas_flipping")
|
||||
await Util.wait(1.5)
|
||||
DialogueManager.show_dialogue_balloon(GlobalConfig.DIALOG_C03, "c03_s03_理发店演出1")
|
||||
await DialogueManager.dialogue_ended
|
||||
# 退出,播放剪辫子演出
|
||||
exit.emit(true)
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://d320nw5yrmvjo"]
|
||||
[gd_scene load_steps=20 format=3 uid="uid://d320nw5yrmvjo"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://de2smnt2my047" path="res://scene/ground/script/c03/s03_closeup癞子纸人.gd" id="1_6n6qt"]
|
||||
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_uenj0"]
|
||||
@ -6,17 +6,247 @@
|
||||
[ext_resource type="Texture2D" uid="uid://cxlwpf82sqc8p" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1辫子没剪开.png" id="3_abwb2"]
|
||||
[ext_resource type="Texture2D" uid="uid://cpri1f3b2blfw" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1辫子散开.png" id="3_jijuh"]
|
||||
[ext_resource type="Texture2D" uid="uid://c12xhretrdxs6" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1大头.png" id="4_8yx5x"]
|
||||
[ext_resource type="Texture2D" uid="uid://doqxrw48g45iy" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口_头.png" id="4_c581m"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="4_nc54a"]
|
||||
[ext_resource type="PackedScene" uid="uid://bg7oictr1wgex" path="res://scene/little_game/general/draggable.tscn" id="4_uenj0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cqrc7v5lg2cey" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/l_辫子.png" id="5_jijuh"]
|
||||
[ext_resource type="Texture2D" uid="uid://fspvmlydy3hu" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/纸钱2.png" id="5_kcw8x"]
|
||||
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="6_uenj0"]
|
||||
[ext_resource type="Texture2D" uid="uid://vyuf0wekr1lq" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/纸钱1.png" id="7_kcw8x"]
|
||||
[ext_resource type="Texture2D" uid="uid://ypl41mx0etds" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口.png" id="9_eqvmt"]
|
||||
[ext_resource type="Texture2D" uid="uid://k4eplss3bx5g" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/刀劈特效.png" id="9_yixv2"]
|
||||
[ext_resource type="Texture2D" uid="uid://dr51e8ell86" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口血迹.png" id="10_eqvmt"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_eqvmt"]
|
||||
resource_name = "cutting_overhead"
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("飞针:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.133333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(435, -88), Vector2(-93, 354)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("DirectionalLight2D:color")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.0333333, 0.366667, 0.533333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(0.970477, 0.0170246, 0.00012822, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DirectionalLight2D:energy")
|
||||
tracks/2/interp = 2
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0.0333333, 0.133333, 0.233333, 0.3, 0.366667, 0.433333, 0.6),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 0.4, 0.0, 0.4, 0.0, 1.0, 0.0]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("DirectionalLight2D:blend_mode")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0.0333333, 0.233333, 0.3, 0.366667),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1, 0, 0]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("头受伤:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("头受伤/伤口:modulate")
|
||||
tracks/5/interp = 2
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.2, 0.566667),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.52549), Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("头受伤/伤口血迹:modulate")
|
||||
tracks/6/interp = 2
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0.733333, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_nucp3"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("飞针:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(435, -88)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("DirectionalLight2D:color")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DirectionalLight2D:energy")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("DirectionalLight2D:blend_mode")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("头受伤/伤口:modulate")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("头受伤/伤口血迹:modulate")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("后脑勺_剪辫:position")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_otai4"]
|
||||
resource_name = "light_and_canvas_flipping"
|
||||
length = 5.0
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DirectionalLight2D:energy")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 1.06667, 2.4, 4.16667, 4.96667),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 0.2, 4.2034e-05, 0.2, 0.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("后脑勺_剪辫:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1.43333, 3.53333, 5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0), Vector2(1, -2), Vector2(-1, 2), Vector2(0, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DirectionalLight2D:color")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_otai4"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_nucp3"),
|
||||
&"cutting_overhead": SubResource("Animation_eqvmt"),
|
||||
&"light_and_canvas_flipping": SubResource("Animation_otai4")
|
||||
}
|
||||
|
||||
[node name="Closeup癞子纸人" type="CanvasLayer"]
|
||||
script = ExtResource("1_6n6qt")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_otai4")
|
||||
}
|
||||
|
||||
[node name="BG" type="TextureRect" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -28,26 +258,13 @@ texture = ExtResource("2_xao0c")
|
||||
expand_mode = 1
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="后脑勺_剪辫" type="TextureRect" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
[node name="后脑勺_剪辫" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("3_jijuh")
|
||||
expand_mode = 1
|
||||
stretch_mode = 3
|
||||
centered = false
|
||||
|
||||
[node name="后脑勺" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("3_abwb2")
|
||||
expand_mode = 1
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="HoverBraid" parent="后脑勺" instance=ExtResource("4_nc54a")]
|
||||
unique_name_in_owner = true
|
||||
@ -62,19 +279,9 @@ texture = ExtResource("5_jijuh")
|
||||
|
||||
[node name="EventBinder" type="Node" parent="后脑勺/HoverBraid"]
|
||||
script = ExtResource("6_uenj0")
|
||||
memo = "[hoverbraid] interacted 时: c03_s03_laizi_braid=2:已剪下辫子(greater)"
|
||||
updater_stages = Array[int]([0])
|
||||
trigger_event = &"c03_s03_laizi_braid"
|
||||
trigger_mode = "interacted"
|
||||
trigger_stage = 2
|
||||
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
|
||||
|
||||
[node name="EventBinder" type="Node" parent="后脑勺"]
|
||||
script = ExtResource("6_uenj0")
|
||||
memo = "c03_s03_laizi_braid=[1:已用剪刀_准备剪辫] 时,显示: [后脑勺]
|
||||
"
|
||||
updater_event = &"c03_s03_laizi_braid"
|
||||
updater_mode = "shower"
|
||||
updater_ease_duration = 0.0
|
||||
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
|
||||
|
||||
[node name="头受伤" type="TextureRect" parent="."]
|
||||
@ -83,10 +290,28 @@ anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("4_c581m")
|
||||
texture = ExtResource("4_8yx5x")
|
||||
expand_mode = 1
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="伤口" type="Sprite2D" parent="头受伤"]
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
position = Vector2(249, 114)
|
||||
texture = ExtResource("9_eqvmt")
|
||||
|
||||
[node name="伤口血迹" type="Sprite2D" parent="头受伤"]
|
||||
position = Vector2(249, 114)
|
||||
texture = ExtResource("10_eqvmt")
|
||||
|
||||
[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."]
|
||||
energy = 0.0
|
||||
range_layer_max = 10
|
||||
|
||||
[node name="飞针" type="Sprite2D" parent="."]
|
||||
position = Vector2(435, -88)
|
||||
rotation = 0.0950055
|
||||
texture = ExtResource("9_yixv2")
|
||||
|
||||
[node name="头" type="TextureRect" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -105,8 +330,6 @@ texture = ExtResource("5_kcw8x")
|
||||
|
||||
[node name="EventBinder" type="Node" parent="头/Draggable纸钱2"]
|
||||
script = ExtResource("6_uenj0")
|
||||
memo = "c03_s03_papercoin2=[0] 时,显示: [纸钱2]
|
||||
[纸钱2] picked 时: c03_s03_papercoin2=1(greater)"
|
||||
updater_event = &"c03_s03_papercoin2"
|
||||
updater_mode = "shower"
|
||||
updater_ease_duration = 0.0
|
||||
@ -126,8 +349,6 @@ texture = ExtResource("7_kcw8x")
|
||||
|
||||
[node name="EventBinder" type="Node" parent="头/Draggable纸钱1"]
|
||||
script = ExtResource("6_uenj0")
|
||||
memo = "c03_s03_papercoin1=[0] 时,显示: [纸钱1]
|
||||
[纸钱1] picked 时: c03_s03_papercoin1=1(greater)"
|
||||
updater_event = &"c03_s03_papercoin1"
|
||||
updater_mode = "shower"
|
||||
updater_ease_duration = 0.0
|
||||
|