forked from team-sg/hero-mark-2
initial work on level select statistics popup
This commit is contained in:
parent
cf54fd2eca
commit
a5cea08767
2 changed files with 341 additions and 12 deletions
|
@ -3,6 +3,8 @@ extends Node
|
||||||
export var travel_time: float = 1.0
|
export var travel_time: float = 1.0
|
||||||
|
|
||||||
var selected_level: int = 0
|
var selected_level: int = 0
|
||||||
|
var made_selection: bool = false
|
||||||
|
var selected_shard: int = 0
|
||||||
var tween: SceneTreeTween = null
|
var tween: SceneTreeTween = null
|
||||||
var hop_tween: SceneTreeTween = null
|
var hop_tween: SceneTreeTween = null
|
||||||
|
|
||||||
|
@ -14,6 +16,14 @@ onready var level_title: Label = $"%LevelTitle"
|
||||||
onready var forward_arrow: TextureRect = $"%ForwardArrow"
|
onready var forward_arrow: TextureRect = $"%ForwardArrow"
|
||||||
onready var in_cave: PathFollow2D = $"%InCave"
|
onready var in_cave: PathFollow2D = $"%InCave"
|
||||||
onready var out_cave: PathFollow2D = $"%OutCave"
|
onready var out_cave: PathFollow2D = $"%OutCave"
|
||||||
|
onready var score_any: Label = $"%ScoreAny"
|
||||||
|
onready var time_any: Label = $"%TimeAny"
|
||||||
|
onready var score_100: Label = $"%Score100"
|
||||||
|
onready var time_100: Label = $"%Time100"
|
||||||
|
onready var filled_shards: Node2D = $"%FilledShards"
|
||||||
|
onready var shard_title: Label = $"%ShardTitle"
|
||||||
|
onready var shard_arrow: Sprite = $"%ShardArrow"
|
||||||
|
onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
Fade.fade_in(0.4)
|
Fade.fade_in(0.4)
|
||||||
|
@ -35,22 +45,49 @@ func _ready() -> void:
|
||||||
# elif Input.is_action_just_pressed("ui_left"):
|
# elif Input.is_action_just_pressed("ui_left"):
|
||||||
# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)))
|
# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)))
|
||||||
|
|
||||||
|
#func _process(delta: float) -> void:
|
||||||
|
# # load selected map
|
||||||
|
# if Input.is_action_just_pressed("ui_accept"):
|
||||||
|
# Game.current_level = selected_level
|
||||||
|
# Game.change_map(LevelData.levels[selected_level].scene)
|
||||||
|
# elif Input.is_action_just_pressed("ui_right"):
|
||||||
|
# _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)))
|
||||||
|
# elif Input.is_action_just_pressed("ui_left"):
|
||||||
|
# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)))
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
# load selected map
|
|
||||||
if Input.is_action_just_pressed("ui_accept"):
|
|
||||||
Game.current_level = selected_level
|
|
||||||
Game.change_map(LevelData.levels[selected_level].scene)
|
|
||||||
elif Input.is_action_just_pressed("ui_right"):
|
|
||||||
_select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)))
|
|
||||||
elif Input.is_action_just_pressed("ui_left"):
|
|
||||||
_select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)))
|
|
||||||
|
|
||||||
# make SG disappear inside of cave
|
# make SG disappear inside of cave
|
||||||
if player_position.offset >= in_cave.offset and player_position.offset <= out_cave.offset:
|
if player_position.offset >= in_cave.offset and player_position.offset <= out_cave.offset:
|
||||||
player_sprite.visible = false
|
player_sprite.visible = false
|
||||||
else:
|
else:
|
||||||
player_sprite.visible = true
|
player_sprite.visible = true
|
||||||
|
|
||||||
|
func _input(event: InputEvent) -> void:
|
||||||
|
if not made_selection: # player is walking around
|
||||||
|
if event.is_action_pressed("ui_accept"):
|
||||||
|
_update_stats()
|
||||||
|
animation_player.play("show_stats")
|
||||||
|
made_selection = true
|
||||||
|
elif event.is_action_pressed("ui_right"):
|
||||||
|
_select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)))
|
||||||
|
elif event.is_action_pressed("ui_left"):
|
||||||
|
_select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)))
|
||||||
|
else: # player has selected level
|
||||||
|
if event.is_action_pressed("ui_accept"):
|
||||||
|
Game.current_level = selected_level
|
||||||
|
Game.change_map(LevelData.levels[selected_level].scene)
|
||||||
|
elif event.is_action_pressed("ui_cancel"):
|
||||||
|
animation_player.play("hide_stats")
|
||||||
|
made_selection = false
|
||||||
|
elif event.is_action_pressed("ui_right"):
|
||||||
|
selected_shard = posmod(selected_shard + 1, 8)
|
||||||
|
shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard]
|
||||||
|
shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x
|
||||||
|
elif event.is_action_pressed("ui_left"):
|
||||||
|
selected_shard = posmod(selected_shard - 1, 8)
|
||||||
|
shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard]
|
||||||
|
shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x
|
||||||
|
|
||||||
func _select_level(level_id: int) -> void:
|
func _select_level(level_id: int) -> void:
|
||||||
var level = LevelData.levels[level_id]
|
var level = LevelData.levels[level_id]
|
||||||
selected_level = level_id
|
selected_level = level_id
|
||||||
|
@ -97,3 +134,19 @@ func _travel_to_level(level_name: String) -> void:
|
||||||
# kill other animation
|
# kill other animation
|
||||||
tween.tween_callback(hop_tween, "kill")
|
tween.tween_callback(hop_tween, "kill")
|
||||||
tween.tween_property(player_sprite, "position:y", -2.0, 0.0)
|
tween.tween_property(player_sprite, "position:y", -2.0, 0.0)
|
||||||
|
|
||||||
|
func _update_stats() -> void:
|
||||||
|
# fill in level panel information
|
||||||
|
var save_id = LevelData.levels[selected_level].save_id
|
||||||
|
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
|
||||||
|
score_any.text = "%05d" % save_data.score_any
|
||||||
|
time_any.text = Game.format_time(save_data.time_any)
|
||||||
|
score_100.text = "%05d" % save_data.score_100
|
||||||
|
time_100.text = Game.format_time(save_data.time_100)
|
||||||
|
var shards = filled_shards.get_children()
|
||||||
|
print(save_data.shards_collected)
|
||||||
|
for i in 8:
|
||||||
|
shards[i].visible = save_data.shards_collected[i]
|
||||||
|
selected_shard = 0
|
||||||
|
shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard]
|
||||||
|
shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=11 format=2]
|
[gd_scene load_steps=19 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1]
|
[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2]
|
[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2]
|
||||||
|
@ -7,6 +7,10 @@
|
||||||
[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5]
|
[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5]
|
||||||
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6]
|
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6]
|
||||||
[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=7]
|
[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=7]
|
||||||
|
[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9]
|
||||||
|
[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=10]
|
||||||
|
[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=11]
|
||||||
|
[ext_resource path="res://graphics/hud/levelselect_arrow.png" type="Texture" id=14]
|
||||||
|
|
||||||
[sub_resource type="Curve2D" id=1]
|
[sub_resource type="Curve2D" id=1]
|
||||||
_data = {
|
_data = {
|
||||||
|
@ -27,12 +31,100 @@ shader_param/ammount = Vector2( 2, 0 )
|
||||||
shader_param/offset = Vector2( 0, 0 )
|
shader_param/offset = Vector2( 0, 0 )
|
||||||
shader_param/delay = Vector2( 4, 0 )
|
shader_param/delay = Vector2( 4, 0 )
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=5]
|
||||||
|
shader = ExtResource( 9 )
|
||||||
|
shader_param/border_color = Color( 0, 0, 0, 1 )
|
||||||
|
shader_param/border_corners = false
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=6]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("LevelStats:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ false ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/path = NodePath("LevelStats:rect_scale")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ Vector2( 1, 1 ) ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=8]
|
||||||
|
resource_name = "hide_stats"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("LevelStats:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ true ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/path = NodePath("LevelStats:rect_scale")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.2, 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ Vector2( 1, 1 ), Vector2( 1, 0.02 ), Vector2( 0, 0.02 ) ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=7]
|
||||||
|
resource_name = "show_stats"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("LevelStats:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ true ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/path = NodePath("LevelStats:rect_scale")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.2, 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ Vector2( 0, 0.02 ), Vector2( 1, 0.02 ), Vector2( 1, 1 ) ]
|
||||||
|
}
|
||||||
|
|
||||||
[node name="LevelSelect" type="Node"]
|
[node name="LevelSelect" type="Node"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="WorldMap" type="TextureRect" parent="."]
|
[node name="WorldMap" type="TextureRect" parent="."]
|
||||||
margin_right = 40.0
|
margin_right = 256.0
|
||||||
margin_bottom = 40.0
|
margin_bottom = 192.0
|
||||||
texture = ExtResource( 2 )
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
[node name="LevelPath" type="Path2D" parent="."]
|
[node name="LevelPath" type="Path2D" parent="."]
|
||||||
|
@ -145,3 +237,187 @@ margin_right = 183.0
|
||||||
margin_bottom = 12.0
|
margin_bottom = 12.0
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
texture = ExtResource( 5 )
|
texture = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="LevelStats" type="Panel" parent="."]
|
||||||
|
visible = false
|
||||||
|
margin_left = 40.0
|
||||||
|
margin_top = 45.0
|
||||||
|
margin_right = 216.0
|
||||||
|
margin_bottom = 147.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
rect_min_size = Vector2( 176, 102 )
|
||||||
|
rect_pivot_offset = Vector2( 88, 51 )
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="HighScoreLabel" type="Label" parent="LevelStats"]
|
||||||
|
material = ExtResource( 6 )
|
||||||
|
margin_left = 16.0
|
||||||
|
margin_top = 16.0
|
||||||
|
margin_right = 160.0
|
||||||
|
margin_bottom = 26.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "High SCORE:"
|
||||||
|
align = 1
|
||||||
|
|
||||||
|
[node name="Any" type="Label" parent="LevelStats"]
|
||||||
|
material = ExtResource( 6 )
|
||||||
|
margin_left = 39.0
|
||||||
|
margin_top = 27.0
|
||||||
|
margin_right = 67.0
|
||||||
|
margin_bottom = 37.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "any%"
|
||||||
|
align = 1
|
||||||
|
|
||||||
|
[node name="ScoreAny" type="Label" parent="LevelStats/Any"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
use_parent_material = true
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 28.0
|
||||||
|
margin_bottom = 23.0
|
||||||
|
text = "0000"
|
||||||
|
|
||||||
|
[node name="TimeAny" type="Label" parent="LevelStats/Any"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
use_parent_material = true
|
||||||
|
margin_left = -11.0
|
||||||
|
margin_top = 26.0
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 36.0
|
||||||
|
text = "0:00.00"
|
||||||
|
|
||||||
|
[node name="100" type="Label" parent="LevelStats"]
|
||||||
|
material = ExtResource( 6 )
|
||||||
|
margin_left = 102.0
|
||||||
|
margin_top = 27.0
|
||||||
|
margin_right = 130.0
|
||||||
|
margin_bottom = 37.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "100%"
|
||||||
|
align = 1
|
||||||
|
|
||||||
|
[node name="Score100" type="Label" parent="LevelStats/100"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
use_parent_material = true
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 28.0
|
||||||
|
margin_bottom = 23.0
|
||||||
|
text = "0000"
|
||||||
|
|
||||||
|
[node name="Time100" type="Label" parent="LevelStats/100"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
use_parent_material = true
|
||||||
|
margin_left = -11.0
|
||||||
|
margin_top = 26.0
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 36.0
|
||||||
|
text = "0:00.00"
|
||||||
|
|
||||||
|
[node name="ShardTitle" type="Label" parent="LevelStats"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
material = ExtResource( 6 )
|
||||||
|
margin_left = 3.0
|
||||||
|
margin_top = 89.0
|
||||||
|
margin_right = 173.0
|
||||||
|
margin_bottom = 99.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "AAAAAAAAAAAAAAAAAAAAAAAA"
|
||||||
|
align = 1
|
||||||
|
|
||||||
|
[node name="EmptyShards" type="Node2D" parent="LevelStats"]
|
||||||
|
position = Vector2( -40, -35 )
|
||||||
|
|
||||||
|
[node name="EmptyShard1" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 76, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard2" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 91, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard3" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 106, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard4" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 121, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard5" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 136, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard6" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 151, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard7" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 166, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="EmptyShard8" type="Sprite" parent="LevelStats/EmptyShards"]
|
||||||
|
modulate = Color( 0, 0, 0, 1 )
|
||||||
|
material = SubResource( 5 )
|
||||||
|
position = Vector2( 181, 118 )
|
||||||
|
texture = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="FilledShards" type="Node2D" parent="LevelStats"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Shard1" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 31, 80 )
|
||||||
|
|
||||||
|
[node name="Shard2" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 46, 80 )
|
||||||
|
|
||||||
|
[node name="Shard3" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 61, 80 )
|
||||||
|
|
||||||
|
[node name="Shard4" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 76, 80 )
|
||||||
|
|
||||||
|
[node name="Shard5" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 91, 80 )
|
||||||
|
|
||||||
|
[node name="Shard6" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 106, 80 )
|
||||||
|
|
||||||
|
[node name="Shard7" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 121, 80 )
|
||||||
|
|
||||||
|
[node name="Shard8" parent="LevelStats/FilledShards" instance=ExtResource( 11 )]
|
||||||
|
visible = false
|
||||||
|
position = Vector2( 136, 80 )
|
||||||
|
|
||||||
|
[node name="ShardArrow" type="Sprite" parent="LevelStats"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2( 31, 71 )
|
||||||
|
texture = ExtResource( 14 )
|
||||||
|
offset = Vector2( 5, 0 )
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
anims/RESET = SubResource( 6 )
|
||||||
|
anims/hide_stats = SubResource( 8 )
|
||||||
|
anims/show_stats = SubResource( 7 )
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue