Skip to content

Commit b8c7ea1

Browse files
committed
Adding visuals
Adding character sprites Textured bars Animated notes
1 parent d8bb0c5 commit b8c7ea1

13 files changed

Lines changed: 254 additions & 36 deletions

File tree

scenes/BattleDirector/BattleDirector.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,16 @@ private bool AddNoteToLane(Note note)
9292
#endregion
9393

9494
//Creeate dummy notes
95-
private void AddExampleNote()
95+
private void AddExampleNotes()
9696
{
9797
for (int i = 0; i < 4; i++)
9898
{
99-
Note exampleNote = new Note(NoteArrow.ArrowType.Up, i + 3);
99+
Note exampleNote = new Note(NoteArrow.ArrowType.Up, i + 20);
100100
AddNoteToLane(exampleNote);
101101
}
102102
for (int i = 0; i < 1; i++)
103103
{
104-
Note exampleNote = new Note(NoteArrow.ArrowType.Left, i + 4);
104+
Note exampleNote = new Note(NoteArrow.ArrowType.Left, i + 21);
105105
AddNoteToLane(exampleNote);
106106
}
107107
}
@@ -115,11 +115,26 @@ public override void _Ready()
115115
NumLoops = 5,
116116
};
117117
CM.PrepChart(_curSong);
118-
AddExampleNote();
118+
AddExampleNotes();
119119

120120
Player = GetNode<HealthBar>("PlayerHP");
121+
Player.GetNode<Sprite2D>("Sprite2D").Scale *= .5f; //TEMP
122+
Player.GetNode<Sprite2D>("Sprite2D").Position += Vector2.Down * 30; //TEMP
121123
Enemy = GetNode<HealthBar>("EnemyHP");
122124

125+
//TEMP
126+
var enemTween = CreateTween();
127+
enemTween
128+
.TweenProperty(Enemy.GetNode<Sprite2D>("Sprite2D"), "position", Vector2.Down * 5, 1f)
129+
.AsRelative();
130+
enemTween
131+
.TweenProperty(Enemy.GetNode<Sprite2D>("Sprite2D"), "position", Vector2.Up * 5, 1f)
132+
.AsRelative();
133+
enemTween.SetTrans(Tween.TransitionType.Spring);
134+
enemTween.SetEase(Tween.EaseType.In);
135+
enemTween.SetLoops();
136+
enemTween.Play();
137+
123138
CM.Connect(nameof(InputHandler.NotePressed), new Callable(this, nameof(OnNotePressed)));
124139
CM.Connect(nameof(InputHandler.NoteReleased), new Callable(this, nameof(OnNoteReleased)));
125140
}
@@ -174,25 +189,25 @@ private void HandleTiming(NoteArrow.ArrowType type, double beatDif)
174189
if (beatDif < _timingInterval * 2)
175190
{
176191
GD.Print("Perfect");
177-
Enemy.TakeDamage(10);
192+
Enemy.TakeDamage(1);
178193
NotePlacementBar.HitNote();
179194
}
180195
else if (beatDif < _timingInterval * 4)
181196
{
182197
GD.Print("Good");
183-
Enemy.TakeDamage(5);
198+
Enemy.TakeDamage(0);
184199
NotePlacementBar.HitNote();
185200
}
186201
else if (beatDif < _timingInterval * 6)
187202
{
188203
GD.Print("Okay");
189-
Enemy.TakeDamage(1);
204+
Player.TakeDamage(1);
190205
NotePlacementBar.HitNote();
191206
}
192207
else
193208
{
194209
GD.Print("Miss");
195-
Player.TakeDamage(10);
210+
Player.TakeDamage(2);
196211
NotePlacementBar.MissNote();
197212
}
198213
}

scenes/BattleDirector/HealthBar.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,21 @@ public partial class HealthBar : Control
77
int _health = MaxHealth;
88

99
[Export]
10-
public ProgressBar PlayerHealthBar;
10+
public TextureProgressBar PlayerHealthBar;
11+
12+
[Export]
13+
public Texture2D SpriteText;
14+
1115
//we can change this to a Texture Progress bar once we have art assets for it
1216

13-
17+
1418
public override void _Ready()
1519
{
1620
if (PlayerHealthBar != null)
1721
{
1822
SetHealth(MaxHealth, MaxHealth);
1923
}
24+
GetNode<Sprite2D>("Sprite2D").Texture = SpriteText;
2025
}
2126

2227
public void SetHealth(int max, int current)
Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,30 @@
1-
[gd_scene load_steps=2 format=3 uid="uid://bgomxovxs7sr8"]
1+
[gd_scene load_steps=8 format=3 uid="uid://bgomxovxs7sr8"]
22

33
[ext_resource type="Script" path="res://scenes/BattleDirector/HealthBar.cs" id="1_b1t4i"]
44

5+
[sub_resource type="Gradient" id="Gradient_ve5ki"]
6+
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 1)
7+
8+
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ti0cv"]
9+
gradient = SubResource("Gradient_ve5ki")
10+
width = 150
11+
height = 20
12+
13+
[sub_resource type="Gradient" id="Gradient_soqhm"]
14+
colors = PackedColorArray(0, 1, 0.0999999, 1, 1, 1, 1, 1)
15+
16+
[sub_resource type="GradientTexture2D" id="GradientTexture2D_r4hau"]
17+
gradient = SubResource("Gradient_soqhm")
18+
width = 146
19+
height = 16
20+
21+
[sub_resource type="Gradient" id="Gradient_58kj0"]
22+
offsets = PackedFloat32Array(1)
23+
colors = PackedColorArray(1, 1, 1, 1)
24+
25+
[sub_resource type="GradientTexture2D" id="GradientTexture2D_wwca1"]
26+
gradient = SubResource("Gradient_58kj0")
27+
528
[node name="Control" type="Control" node_paths=PackedStringArray("PlayerHealthBar")]
629
layout_mode = 3
730
anchors_preset = 0
@@ -10,9 +33,15 @@ offset_bottom = 40.0
1033
script = ExtResource("1_b1t4i")
1134
PlayerHealthBar = NodePath("ProgressBar")
1235

13-
[node name="ProgressBar" type="ProgressBar" parent="."]
36+
[node name="ProgressBar" type="TextureProgressBar" parent="."]
1437
layout_mode = 0
15-
offset_left = 29.0
16-
offset_top = 18.0
17-
offset_right = 229.0
18-
offset_bottom = 45.0
38+
offset_right = 150.0
39+
offset_bottom = 20.0
40+
texture_under = SubResource("GradientTexture2D_ti0cv")
41+
texture_progress = SubResource("GradientTexture2D_r4hau")
42+
texture_progress_offset = Vector2(2, 2)
43+
44+
[node name="Sprite2D" type="Sprite2D" parent="."]
45+
position = Vector2(75, 86)
46+
scale = Vector2(2, 2)
47+
texture = SubResource("GradientTexture2D_wwca1")
2.05 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://b6fkei0i83vte"
6+
path="res://.godot/imported/Character1.png-d73d4a980ad79d80867b72bd7a029fb4.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://scenes/BattleDirector/assets/Character1.png"
14+
dest_files=["res://.godot/imported/Character1.png-d73d4a980ad79d80867b72bd7a029fb4.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1
2.51 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://veedngaorx3l"
6+
path="res://.godot/imported/Enemy1.png-fb95639d1545a326b6c39640343f3786.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://scenes/BattleDirector/assets/Enemy1.png"
14+
dest_files=["res://.godot/imported/Enemy1.png-fb95639d1545a326b6c39640343f3786.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
shader_type canvas_item;
2+
//Credit: https://godotshaders.com/shader/balatro-background-shader/
3+
4+
5+
uniform highp float spin_rotation_speed = 2.0;
6+
uniform highp float move_speed = 7.0;
7+
uniform highp vec2 offset = vec2(0., 0.);
8+
uniform highp vec4 colour_1 : source_color = vec4(0.871, 0.267, 0.231, 1.0);
9+
uniform highp vec4 colour_2 : source_color = vec4(0.0, 0.42, 0.706, 1.0);
10+
uniform highp vec4 colour_3 : source_color = vec4(0.086, 0.137, 0.145, 1.0);
11+
uniform highp float contrast = 3.5;
12+
uniform highp float lighting = 0.4;
13+
uniform highp float spin_amount = 0.25;
14+
uniform highp float pixel_filter = 740.;
15+
uniform bool is_rotating = false;
16+
#define SPIN_EASE 1.0
17+
18+
19+
vec4 effect(vec2 screenSize, vec2 screen_coords){
20+
21+
highp float pixel_size = length(screenSize.xy) / pixel_filter;
22+
highp vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*screenSize.xy)/length(screenSize.xy) - offset;
23+
highp float uv_len = length(uv);
24+
25+
26+
highp float speed = (spin_rotation_speed*SPIN_EASE*0.2);
27+
if(is_rotating){
28+
speed = TIME * speed;
29+
}
30+
speed += 302.2;
31+
highp float new_pixel_angle = (atan(uv.y, uv.x)) + speed - SPIN_EASE*20.*(1.*spin_amount*uv_len + (1. - 1.*spin_amount));
32+
highp vec2 mid = (screenSize.xy/length(screenSize.xy))/2.;
33+
uv = (vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid);
34+
35+
uv *= 30.;
36+
speed = TIME*(move_speed);
37+
highp vec2 uv2 = vec2(uv.x+uv.y);
38+
39+
for(int i=0; i < 5; i++) {
40+
uv2 += sin(max(uv.x, uv.y)) + uv;
41+
uv += 0.5*vec2(cos(5.1123314 + 0.353*uv2.y + speed*0.131121),sin(uv2.x - 0.113*speed));
42+
uv -= 1.0*cos(uv.x + uv.y) - 1.0*sin(uv.x*0.711 - uv.y);
43+
}
44+
45+
46+
highp float contrast_mod = (0.25*contrast + 0.5*spin_amount + 1.2);
47+
highp float paint_res = min(2., max(0.,length(uv)*(0.035)*contrast_mod));
48+
highp float c1p = max(0.,1. - contrast_mod*abs(1.-paint_res));
49+
highp float c2p = max(0.,1. - contrast_mod*abs(paint_res));
50+
highp float c3p = 1. - min(1., c1p + c2p);
51+
52+
highp float ligth = (lighting - 0.2) * max(c1p*5. - 4., 0.) + lighting * max(c2p*5. - 4., 0.);
53+
highp vec4 ret_col = (0.3/contrast)*colour_1 + (1. - 0.3/contrast)*(colour_1*c1p + colour_2*c2p + vec4(c3p*colour_3.rgb, c3p*colour_1.a)) + ligth;
54+
return ret_col;
55+
}
56+
57+
58+
void fragment() {
59+
vec2 uv = UV;
60+
COLOR *= effect(TEXTURE_PIXEL_SIZE, uv);
61+
}
Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1-
[gd_scene load_steps=5 format=3 uid="uid://b0mrgr7h0ty1y"]
1+
[gd_scene load_steps=9 format=3 uid="uid://b0mrgr7h0ty1y"]
22

33
[ext_resource type="Script" path="res://scenes/BattleDirector/BattleDirector.cs" id="1_cwqqr"]
44
[ext_resource type="PackedScene" uid="uid://dfevfib11kou1" path="res://scenes/ChartViewport/ChartViewport.tscn" id="2_cupb3"]
5+
[ext_resource type="Shader" path="res://scenes/BattleDirector/assets/test_background.gdshader" id="3_h0nj6"]
56
[ext_resource type="PackedScene" uid="uid://bgomxovxs7sr8" path="res://scenes/BattleDirector/HealthBar.tscn" id="3_pp0u0"]
6-
[ext_resource type="PackedScene" uid="uid://duhiilcv4tat3" path="res://scenes/BattleDirector/NotePlacementBar.tscn" id="4_y2yh3"]
7+
[ext_resource type="Texture2D" uid="uid://b6fkei0i83vte" path="res://scenes/BattleDirector/assets/Character1.png" id="5_elveq"]
8+
[ext_resource type="Texture2D" uid="uid://veedngaorx3l" path="res://scenes/BattleDirector/assets/Enemy1.png" id="6_0k4pw"]
9+
[ext_resource type="PackedScene" uid="uid://duhiilcv4tat3" path="res://scenes/BattleDirector/NotePlacementBar.tscn" id="7_3ko4g"]
10+
11+
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v58v7"]
12+
shader = ExtResource("3_h0nj6")
13+
shader_parameter/spin_rotation_speed = 2.0
14+
shader_parameter/move_speed = 7.0
15+
shader_parameter/offset = Vector2(0, 0)
16+
shader_parameter/colour_1 = Color(0.211765, 0.239216, 0.321569, 1)
17+
shader_parameter/colour_2 = Color(0.278431, 0.54902, 0.74902, 1)
18+
shader_parameter/colour_3 = Color(0.086, 0.137, 0.145, 1)
19+
shader_parameter/contrast = 2.5
20+
shader_parameter/lighting = 0.4
21+
shader_parameter/spin_amount = 0.1
22+
shader_parameter/pixel_filter = 200.0
23+
shader_parameter/is_rotating = false
724

825
[node name="ProtoBattleDirector" type="Node2D" node_paths=PackedStringArray("CM", "IH", "NotePlacementBar")]
926
script = ExtResource("1_cwqqr")
@@ -13,24 +30,36 @@ NotePlacementBar = NodePath("NotePlacementBar")
1330

1431
[node name="SubViewport" parent="." instance=ExtResource("2_cupb3")]
1532
offset_left = 80.0
16-
offset_top = 140.0
33+
offset_top = 150.0
1734
offset_right = 560.0
18-
offset_bottom = 360.0
35+
offset_bottom = 350.0
1936

2037
[node name="ColorRect" type="ColorRect" parent="."]
2138
z_index = -1
39+
material = SubResource("ShaderMaterial_v58v7")
40+
offset_left = -49.0
41+
offset_top = -32.0
42+
offset_right = 695.0
43+
offset_bottom = 396.0
44+
45+
[node name="ColorRect2" type="ColorRect" parent="."]
46+
self_modulate = Color(0.36, 0.36, 0.36, 0.780392)
47+
z_index = -1
2248
offset_left = -70.0
23-
offset_top = -34.0
49+
offset_top = 140.0
2450
offset_right = 673.0
25-
offset_bottom = 393.0
26-
color = Color(0.147672, 0.147672, 0.147672, 1)
51+
offset_bottom = 360.0
52+
color = Color(0.165656, 0.165656, 0.165656, 1)
2753

2854
[node name="PlayerHP" parent="." instance=ExtResource("3_pp0u0")]
55+
offset_left = 92.0
56+
offset_right = 132.0
57+
SpriteText = ExtResource("5_elveq")
2958

3059
[node name="EnemyHP" parent="." instance=ExtResource("3_pp0u0")]
3160
offset_left = 403.0
3261
offset_top = -4.0
3362
offset_right = 443.0
34-
offset_bottom = 36.0
63+
SpriteText = ExtResource("6_0k4pw")
3564

36-
[node name="NotePlacementBar" parent="." instance=ExtResource("4_y2yh3")]
65+
[node name="NotePlacementBar" parent="." instance=ExtResource("7_3ko4g")]

scenes/ChartViewport/ChartManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public void PrepChart(BattleDirector.SongData songData)
4444
BeatsPerLoop = (int)(_loopLen / (60f / songData.Bpm));
4545
ChartLength = (float)_loopLen * (float)Math.Floor(ChartLength / _loopLen);
4646
TimeKeeper.ChartLength = (float)ChartLength;
47+
TimeKeeper.Bpm = songData.Bpm;
4748

4849
InitBackgrounds();
4950

0 commit comments

Comments
 (0)