generated from krampus/template-godot4
Compare commits
No commits in common. "37edad916bcadfc25cd501e4c40a4db5cbb5e274" and "6abbe7f82a0b85ee3df697cdcf1abe02a6718719" have entirely different histories.
37edad916b
...
6abbe7f82a
Binary file not shown.
BIN
assets/sprites/particles/ball.png (Stored with Git LFS)
BIN
assets/sprites/particles/ball.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://dtsdecae83ah3"
|
|
||||||
path="res://.godot/imported/ball.png-9141da4d584001e11280d9c246b59589.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/sprites/particles/ball.png"
|
|
||||||
dest_files=["res://.godot/imported/ball.png-9141da4d584001e11280d9c246b59589.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=true
|
|
||||||
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
|
|
|
@ -11,6 +11,3 @@ func _collect(player: WorldPlayer) -> void:
|
||||||
player.set_balls(ball_type, -1)
|
player.set_balls(ball_type, -1)
|
||||||
else:
|
else:
|
||||||
player.mutate_balls(ball_type, amount)
|
player.mutate_balls(ball_type, amount)
|
||||||
|
|
||||||
player.shot_setup.hud.peek_club_selector()
|
|
||||||
player.shot_setup.hud.ball_particles.emit_spatial(maxi(amount, 1), global_position)
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
[gd_scene load_steps=30 format=3 uid="uid://comd88yp45mnb"]
|
[gd_scene load_steps=29 format=3 uid="uid://comd88yp45mnb"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://djfbit4v0qncc" path="res://assets/models/items/octahedron.gltf" id="1_a0q17"]
|
[ext_resource type="PackedScene" uid="uid://djfbit4v0qncc" path="res://assets/models/items/octahedron.gltf" id="1_a0q17"]
|
||||||
[ext_resource type="Script" path="res://src/items/item/item.gd" id="1_kesm6"]
|
[ext_resource type="Script" path="res://src/items/item/item.gd" id="1_kesm6"]
|
||||||
[ext_resource type="Material" uid="uid://c5hidbq5gbmr" path="res://assets/materials/crystal.tres" id="2_dtimm"]
|
[ext_resource type="Material" uid="uid://c5hidbq5gbmr" path="res://assets/materials/crystal.tres" id="2_dtimm"]
|
||||||
[ext_resource type="Shader" path="res://src/shaders/spatial_shine.gdshader" id="5_hvjqo"]
|
[ext_resource type="Shader" path="res://src/shaders/spatial_shine.gdshader" id="5_hvjqo"]
|
||||||
[ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="5_k1sdu"]
|
[ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="5_k1sdu"]
|
||||||
[ext_resource type="AudioStream" uid="uid://8uynlpios7u1" path="res://assets/sound/sfx/ui/ecofuture2.wav" id="6_f5kbg"]
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_7sxyq"]
|
[sub_resource type="Animation" id="Animation_7sxyq"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
|
@ -324,51 +323,6 @@ tracks/2/keys = {
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
tracks/3/type = "bezier"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:x")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0)
|
|
||||||
}
|
|
||||||
tracks/4/type = "bezier"
|
|
||||||
tracks/4/imported = false
|
|
||||||
tracks/4/enabled = true
|
|
||||||
tracks/4/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:y")
|
|
||||||
tracks/4/interp = 1
|
|
||||||
tracks/4/loop_wrap = true
|
|
||||||
tracks/4/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0)
|
|
||||||
}
|
|
||||||
tracks/5/type = "bezier"
|
|
||||||
tracks/5/imported = false
|
|
||||||
tracks/5/enabled = true
|
|
||||||
tracks/5/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:z")
|
|
||||||
tracks/5/interp = 1
|
|
||||||
tracks/5/loop_wrap = true
|
|
||||||
tracks/5/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0)
|
|
||||||
}
|
|
||||||
tracks/6/type = "value"
|
|
||||||
tracks/6/imported = false
|
|
||||||
tracks/6/enabled = true
|
|
||||||
tracks/6/path = NodePath("CollectionChime:playing")
|
|
||||||
tracks/6/interp = 1
|
|
||||||
tracks/6/loop_wrap = true
|
|
||||||
tracks/6/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_niure"]
|
[sub_resource type="Animation" id="Animation_niure"]
|
||||||
resource_name = "explode"
|
resource_name = "explode"
|
||||||
|
@ -423,51 +377,6 @@ tracks/3/keys = {
|
||||||
"method": &"queue_free"
|
"method": &"queue_free"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
tracks/4/type = "bezier"
|
|
||||||
tracks/4/imported = false
|
|
||||||
tracks/4/enabled = true
|
|
||||||
tracks/4/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:x")
|
|
||||||
tracks/4/interp = 1
|
|
||||||
tracks/4/loop_wrap = true
|
|
||||||
tracks/4/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0, 0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.2, 0.8, 0.001, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0.0333333, 0.333333)
|
|
||||||
}
|
|
||||||
tracks/5/type = "bezier"
|
|
||||||
tracks/5/imported = false
|
|
||||||
tracks/5/enabled = true
|
|
||||||
tracks/5/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:y")
|
|
||||||
tracks/5/interp = 1
|
|
||||||
tracks/5/loop_wrap = true
|
|
||||||
tracks/5/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0, 0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.2, 0.8, 0.001, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0, 0.3)
|
|
||||||
}
|
|
||||||
tracks/6/type = "bezier"
|
|
||||||
tracks/6/imported = false
|
|
||||||
tracks/6/enabled = true
|
|
||||||
tracks/6/path = NodePath("Pivot/Octahedron/ItemMeshContainer:scale:z")
|
|
||||||
tracks/6/interp = 1
|
|
||||||
tracks/6/loop_wrap = true
|
|
||||||
tracks/6/keys = {
|
|
||||||
"handle_modes": PackedInt32Array(0, 0),
|
|
||||||
"points": PackedFloat32Array(1, -0.25, 0, 0.2, 0.8, 0.001, -0.25, 0, 0.25, 0),
|
|
||||||
"times": PackedFloat32Array(0.0666667, 0.366667)
|
|
||||||
}
|
|
||||||
tracks/7/type = "value"
|
|
||||||
tracks/7/imported = false
|
|
||||||
tracks/7/enabled = true
|
|
||||||
tracks/7/path = NodePath("CollectionChime:playing")
|
|
||||||
tracks/7/interp = 1
|
|
||||||
tracks/7/loop_wrap = true
|
|
||||||
tracks/7/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [true]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lqra6"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lqra6"]
|
||||||
_data = {
|
_data = {
|
||||||
|
@ -536,10 +445,6 @@ libraries = {
|
||||||
"": SubResource("AnimationLibrary_lqra6")
|
"": SubResource("AnimationLibrary_lqra6")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="CollectionChime" type="AudioStreamPlayer" parent="."]
|
|
||||||
stream = ExtResource("6_f5kbg")
|
|
||||||
bus = &"SFX"
|
|
||||||
|
|
||||||
[connection signal="body_entered" from="Pivot/CollectionArea" to="." method="_on_collection_area_body_entered"]
|
[connection signal="body_entered" from="Pivot/CollectionArea" to="." method="_on_collection_area_body_entered"]
|
||||||
|
|
||||||
[editable path="Pivot/Octahedron"]
|
[editable path="Pivot/Octahedron"]
|
||||||
|
|
|
@ -30,6 +30,8 @@ signal on_death(player: WorldPlayer)
|
||||||
GameBall.Type.PLASMA: -1,
|
GameBall.Type.PLASMA: -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# TODO balls, pickups, etc
|
||||||
|
|
||||||
var shot_setup: ShotSetup:
|
var shot_setup: ShotSetup:
|
||||||
get:
|
get:
|
||||||
if not shot_setup:
|
if not shot_setup:
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
class_name HUDParticles extends GPUParticles2D
|
|
||||||
## 2D particle emitter with spatial logic, for emitting particles in the HUD.
|
|
||||||
|
|
||||||
|
|
||||||
## Emit the given number of particles in one shot.
|
|
||||||
func emit(_amount: int) -> void:
|
|
||||||
amount = _amount
|
|
||||||
emitting = true
|
|
||||||
|
|
||||||
|
|
||||||
## Emit the given number of particles from the given screen location.
|
|
||||||
func emit_at_location(_amount: int, source_location: Vector2) -> void:
|
|
||||||
var particle_mat: ParticleProcessMaterial = process_material
|
|
||||||
particle_mat.emission_shape_offset = Vector3(source_location.x, source_location.y, 0)
|
|
||||||
emit(_amount)
|
|
||||||
|
|
||||||
|
|
||||||
## Emit the given number of particles from the screen location of the given point in 3D space.
|
|
||||||
func emit_spatial(_amount: int, source_location: Vector3) -> void:
|
|
||||||
var screen_location := get_viewport().get_camera_3d().unproject_position(source_location)
|
|
||||||
# TODO: what to do if this is outside the viewport?
|
|
||||||
emit_at_location(_amount, screen_location)
|
|
|
@ -1,50 +0,0 @@
|
||||||
[gd_scene load_steps=9 format=3 uid="uid://dfh0bv7lwewj5"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/ui/decorations/hud_particles/hud_particles.gd" id="1_leh7k"]
|
|
||||||
|
|
||||||
[sub_resource type="Curve" id="Curve_mp3bg"]
|
|
||||||
max_value = 100.0
|
|
||||||
_data = [Vector2(0.0431211, 0), 0.0, 21.2919, 0, 0, Vector2(1, 100), 336.968, 0.0, 0, 0]
|
|
||||||
point_count = 2
|
|
||||||
|
|
||||||
[sub_resource type="CurveTexture" id="CurveTexture_satut"]
|
|
||||||
curve = SubResource("Curve_mp3bg")
|
|
||||||
|
|
||||||
[sub_resource type="Curve" id="Curve_a5ydw"]
|
|
||||||
max_value = 200.0
|
|
||||||
_data = [Vector2(0, 9.02831), 0.0, 0.618766, 0, 0, Vector2(1, 200), 450.985, 0.0, 0, 0]
|
|
||||||
point_count = 2
|
|
||||||
|
|
||||||
[sub_resource type="CurveTexture" id="CurveTexture_oynpa"]
|
|
||||||
curve = SubResource("Curve_a5ydw")
|
|
||||||
|
|
||||||
[sub_resource type="Curve" id="Curve_53gso"]
|
|
||||||
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0616016, 1), 0.0, 0.0, 0, 0, Vector2(0.761807, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
|
||||||
point_count = 4
|
|
||||||
|
|
||||||
[sub_resource type="CurveTexture" id="CurveTexture_a05qh"]
|
|
||||||
curve = SubResource("Curve_53gso")
|
|
||||||
|
|
||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_besmx"]
|
|
||||||
particle_flag_disable_z = true
|
|
||||||
direction = Vector3(0, 0, 0)
|
|
||||||
spread = 180.0
|
|
||||||
initial_velocity_min = 400.0
|
|
||||||
initial_velocity_max = 600.0
|
|
||||||
gravity = Vector3(0, 0, 0)
|
|
||||||
radial_accel_min = -100.0
|
|
||||||
radial_accel_max = -100.0
|
|
||||||
radial_accel_curve = SubResource("CurveTexture_oynpa")
|
|
||||||
damping_min = 200.0
|
|
||||||
damping_max = 200.0
|
|
||||||
damping_curve = SubResource("CurveTexture_satut")
|
|
||||||
scale_curve = SubResource("CurveTexture_a05qh")
|
|
||||||
|
|
||||||
[node name="HUDParticles" type="GPUParticles2D"]
|
|
||||||
emitting = false
|
|
||||||
amount = 32
|
|
||||||
process_material = SubResource("ParticleProcessMaterial_besmx")
|
|
||||||
lifetime = 1.4
|
|
||||||
one_shot = true
|
|
||||||
explosiveness = 0.7
|
|
||||||
script = ExtResource("1_leh7k")
|
|
|
@ -16,7 +16,6 @@ var player: WorldPlayer
|
||||||
|
|
||||||
@onready var club_selector: ClubSelector = %ClubSelector
|
@onready var club_selector: ClubSelector = %ClubSelector
|
||||||
@onready var ball_selector: BallSelector = %BallSelector
|
@onready var ball_selector: BallSelector = %BallSelector
|
||||||
@onready var ball_particles: HUDParticles = %BallParticles
|
|
||||||
|
|
||||||
@onready var _curve_animation: AnimationPlayer = %CurveAnimation
|
@onready var _curve_animation: AnimationPlayer = %CurveAnimation
|
||||||
@onready var _power_animation: AnimationPlayer = %PowerAnimation
|
@onready var _power_animation: AnimationPlayer = %PowerAnimation
|
||||||
|
@ -58,10 +57,6 @@ func hide_hud() -> void:
|
||||||
_sw_animation.play("hide")
|
_sw_animation.play("hide")
|
||||||
|
|
||||||
|
|
||||||
func peek_club_selector() -> void:
|
|
||||||
_club_selector_animation.play("peek")
|
|
||||||
|
|
||||||
|
|
||||||
func peek_life_bar() -> void:
|
func peek_life_bar() -> void:
|
||||||
_sw_animation.play("peek")
|
_sw_animation.play("peek")
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=44 format=3 uid="uid://c4ifdiohng830"]
|
[gd_scene load_steps=41 format=3 uid="uid://c4ifdiohng830"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
|
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
|
||||||
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
|
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
|
||||||
|
@ -12,8 +12,6 @@
|
||||||
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="8_bejx4"]
|
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="8_bejx4"]
|
||||||
[ext_resource type="Texture2D" uid="uid://tancoet1lih5" path="res://assets/ui/ball_icons/basic_icon.png" id="8_tt8i3"]
|
[ext_resource type="Texture2D" uid="uid://tancoet1lih5" path="res://assets/ui/ball_icons/basic_icon.png" id="8_tt8i3"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dmciuk3pbjsae" path="res://src/ui/shot_hud/life_bar/life_bar.tscn" id="9_w1fiw"]
|
[ext_resource type="PackedScene" uid="uid://dmciuk3pbjsae" path="res://src/ui/shot_hud/life_bar/life_bar.tscn" id="9_w1fiw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dfh0bv7lwewj5" path="res://src/ui/decorations/hud_particles/hud_particles.tscn" id="11_ie5ih"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dtsdecae83ah3" path="res://assets/sprites/particles/ball.png" id="12_fdbqt"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"]
|
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"]
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_2gt87"]
|
[sub_resource type="Animation" id="Animation_2gt87"]
|
||||||
|
@ -284,23 +282,6 @@ tracks/0/keys = {
|
||||||
"values": [0.0, 0.0872665, -1.5708]
|
"values": [0.0, 0.0872665, -1.5708]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_hmxtr"]
|
|
||||||
resource_name = "peek"
|
|
||||||
length = 2.4
|
|
||||||
step = 0.02
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath(".:rotation")
|
|
||||||
tracks/0/interp = 3
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 0.14, 0.2, 2.2, 2.26, 2.4),
|
|
||||||
"transitions": PackedFloat32Array(1.618, 1.618, 1, 1, 1.618, 1.618),
|
|
||||||
"update": 0,
|
|
||||||
"values": [-1.5708, 0.0872665, 0.0, 0.0, 0.0872665, -1.5708]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_x6kyr"]
|
[sub_resource type="Animation" id="Animation_x6kyr"]
|
||||||
resource_name = "show"
|
resource_name = "show"
|
||||||
length = 0.4
|
length = 0.4
|
||||||
|
@ -322,7 +303,6 @@ tracks/0/keys = {
|
||||||
_data = {
|
_data = {
|
||||||
"RESET": SubResource("Animation_4h8gq"),
|
"RESET": SubResource("Animation_4h8gq"),
|
||||||
"hide": SubResource("Animation_w7dmn"),
|
"hide": SubResource("Animation_w7dmn"),
|
||||||
"peek": SubResource("Animation_hmxtr"),
|
|
||||||
"show": SubResource("Animation_x6kyr")
|
"show": SubResource("Animation_x6kyr")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -734,20 +714,6 @@ anchor_right = 0.7
|
||||||
offset_right = 108.0
|
offset_right = 108.0
|
||||||
grow_horizontal = 1
|
grow_horizontal = 1
|
||||||
|
|
||||||
[node name="BallParticleContainer" type="Control" parent="ClubSelector/TextureRect"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="BallParticles" parent="ClubSelector/TextureRect/BallParticleContainer" instance=ExtResource("11_ie5ih")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
texture = ExtResource("12_fdbqt")
|
|
||||||
|
|
||||||
[node name="SouthWest" type="MarginContainer" parent="."]
|
[node name="SouthWest" type="MarginContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
|
|
Loading…
Reference in New Issue