Ui stuffy

This commit is contained in:
luna 2025-05-03 14:12:25 +02:00
parent 4160fd0d8c
commit 1617145240
26 changed files with 396 additions and 121 deletions

View file

@ -136,7 +136,7 @@ script = ExtResource("1_0qjqd")
shape = SubResource("CircleShape2D_k2aps")
[node name="image" type="Sprite2D" parent="."]
modulate = Color(2, 2, 2, 1)
modulate = Color(1.1, 1.1, 1.1, 1)
texture = ExtResource("1_k2aps")
[node name="animation" type="AnimationPlayer" parent="."]

92
components/canon.tscn Normal file
View file

@ -0,0 +1,92 @@
[gd_scene load_steps=7 format=3 uid="uid://cmy4ja82e7jdd"]
[ext_resource type="Script" uid="uid://dccya6vnwi1x4" path="res://player/railgun.gd" id="1_pl3fu"]
[ext_resource type="PackedScene" uid="uid://dnndsvtgqr8eq" path="res://bullet/bullet.tscn" id="2_8i0oe"]
[ext_resource type="PackedScene" uid="uid://800ou0i3omcs" path="res://effects/flash.tscn" id="3_ki6jn"]
[sub_resource type="Animation" id="Animation_g6k8r"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:sprite_scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:sprite_scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_qjkh3"]
resource_name = "shoot"
length = 0.4
step = 0.1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:sprite_scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.1, 0.003124, 0.835, -0.066667, -0.000579298, 0.133333, -0.000579298, 1, -0.2, 0.00127017, 0.25, 0),
"times": PackedFloat32Array(0, 0.166667, 0.4)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:sprite_scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.1, -0.000583708, 1.177, -0.066667, -0.00146496, 0.133333, -0.00517273, 1, -0.2, 0.003124, 0.25, 0),
"times": PackedFloat32Array(0, 0.166667, 0.4)
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"do_shoot"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g6k8r"]
_data = {
&"RESET": SubResource("Animation_g6k8r"),
&"shoot": SubResource("Animation_qjkh3")
}
[node name="railgun" type="Marker2D"]
gizmo_extents = 3.0
script = ExtResource("1_pl3fu")
bullet = ExtResource("2_8i0oe")
sprite_scale = Vector2(1, 1)
[node name="flash" parent="." instance=ExtResource("3_ki6jn")]
unique_name_in_owner = true
oneshot = false
[node name="animations" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_g6k8r")
}

BIN
hud/IBMBIOS8x8-8.fnt Normal file

Binary file not shown.

View file

@ -0,0 +1,17 @@
[remap]
importer="font_data_bmfont"
type="FontFile"
uid="uid://dbski8evni5if"
path="res://.godot/imported/IBMBIOS8x8-8.fnt-1601f954a6e0fb5e00ea614d2477cb7c.fontdata"
[deps]
source_file="res://hud/IBMBIOS8x8-8.fnt"
dest_files=["res://.godot/imported/IBMBIOS8x8-8.fnt-1601f954a6e0fb5e00ea614d2477cb7c.fontdata"]
[params]
fallbacks=[]
compress=true
scaling_mode=2

View file

@ -13,4 +13,4 @@ func _physics_process(_delta: float) -> void:
dot.visible = false
else:
dot.visible = true
dot.position.x = angle / PI * 13.0
dot.position.x = angle / PI * 32.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

After

Width:  |  Height:  |  Size: 135 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 184 B

Before After
Before After

BIN
hud/container.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

34
hud/container.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpmshe0qinq6g"
path="res://.godot/imported/container.png-b6eb836c8095356597f7621dec423886.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://hud/container.png"
dest_files=["res://.godot/imported/container.png-b6eb836c8095356597f7621dec423886.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

65
hud/crt.gdshader Normal file
View file

@ -0,0 +1,65 @@
/*
Shader from Godot Shaders - the free shader library.
godotshaders.com/shader/VHS-and-CRT-monitor-effect
This shader is under CC0 license. Feel free to use, improve and
change this shader according to your needs and consider sharing
the modified result to godotshaders.com.
*/
shader_type canvas_item;
uniform float scanlines_opacity : hint_range(0.0, 1.0) = 0.4;
uniform float scanlines_width : hint_range(0.0, 0.5) = 0.25;
uniform float grille_opacity : hint_range(0.0, 1.0) = 0.3;
uniform vec2 resolution = vec2(640.0, 480.0);
uniform float aberration : hint_range(-1.0, 1.0) = 0.03;
uniform float brightness = 1.4;
uniform float warp_amount :hint_range(0.0, 5.0) = 1.0;
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
vec2 warp(vec2 uv) {
vec2 delta = uv - 0.5;
float delta2 = dot(delta.xy, delta.xy);
float delta4 = delta2 * delta2;
float delta_offset = delta4 * warp_amount;
return ((uv + delta * delta_offset) - vec2(0.5, 0.5)) * 0.97 + vec2(0.5, 0.5);
}
float border (vec2 uv) {
float radius = min(warp_amount, 0.08);
radius = max(min(min(abs(radius * 2.0), abs(1.0)), abs(1.0)), 1e-5);
vec2 abs_uv = abs(uv * 2.0 - 1.0) - vec2(1.0, 1.0) + radius;
float dist = length(max(vec2(0.0), abs_uv)) / radius;
float square = smoothstep(0.96, 1.0, dist);
return clamp(1.0 - square, 0.0, 1.0);
}
void fragment() {
vec2 uv = warp(SCREEN_UV);
float time = fract(TIME / 3.0);
float x = (uv.y - time)*100.0;
uv.x += pow(100.0,-x*x) * sin(x) / 200.0;
COLOR.r = texture(SCREEN_TEXTURE, uv + vec2(aberration, 0.0) * .1).r;
COLOR.g = texture(SCREEN_TEXTURE, uv - vec2(aberration, 0.0) * .1).g;
COLOR.b = texture(SCREEN_TEXTURE, uv).b;
COLOR.a = 1.0;
vec3 grill = vec3(smoothstep(0.85, 0.95, abs(sin(uv.x * (resolution.x * 3.14159265)))), smoothstep(0.85, 0.95, abs(sin(1.05 + uv.x * (resolution.x * 3.14159265)))), smoothstep(0.85, 0.95, abs(sin(2.1 + uv.x * (resolution.x * 3.14159265)))));
COLOR.r = mix(COLOR.r, COLOR.r * grill.r, grille_opacity);
COLOR.g = mix(COLOR.g, COLOR.g * grill.g, grille_opacity);
COLOR.b = mix(COLOR.b, COLOR.b * grill.b, grille_opacity);
COLOR.r = clamp(COLOR.r * brightness, 0.0, 1.0);
COLOR.g = clamp(COLOR.g * brightness, 0.0, 1.0);
COLOR.b = clamp(COLOR.b * brightness, 0.0, 1.0);
float scanlines = 0.5;
scanlines = smoothstep(scanlines_width, scanlines_width + 0.5, abs(sin(uv.y * (resolution.y * 3.14159265))));
COLOR.rgb = mix(COLOR.rgb, COLOR.rgb * vec3(scanlines), scanlines_opacity);
COLOR *= border(uv);
}

1
hud/crt.gdshader.uid Normal file
View file

@ -0,0 +1 @@
uid://ddc1twbjwqs6e

View file

@ -1,37 +1,83 @@
[gd_scene load_steps=13 format=3 uid="uid://cyq7l8x1pbh1h"]
[gd_scene load_steps=22 format=3 uid="uid://cyq7l8x1pbh1h"]
[ext_resource type="Script" uid="uid://dwjysathl0a8g" path="res://hud/hud.gd" id="1_0ivg5"]
[ext_resource type="Texture2D" uid="uid://c7pknth5b6pt6" path="res://hud/dial.png" id="1_6ca3a"]
[ext_resource type="Texture2D" uid="uid://dtrxl6d62e3c2" path="res://hud/text.png" id="1_318vg"]
[ext_resource type="Script" uid="uid://dm6tu57vgijdh" path="res://hud/energy_indicator.gd" id="2_1kkc0"]
[ext_resource type="Texture2D" uid="uid://dxnwaxcclojrh" path="res://hud/dial_full.png" id="2_2gk58"]
[ext_resource type="Shader" uid="uid://c6i3a0ue8m0sj" path="res://hud/vignette.gdshader" id="2_jvpmi"]
[ext_resource type="Script" uid="uid://bkcrwbj4qsyu6" path="res://hud/aim_indicator.gd" id="4_fjv1a"]
[ext_resource type="Shader" uid="uid://b1dxg2p1lqx1g" path="res://hud/yclip.gdshader" id="4_qv4qp"]
[ext_resource type="Texture2D" uid="uid://phih5e11qe3a" path="res://hud/aim_indicator/scale.png" id="4_w8tcp"]
[ext_resource type="Texture2D" uid="uid://cxfxrcm7n85cp" path="res://hud/aim_indicator/dot.png" id="5_svhta"]
[ext_resource type="Script" uid="uid://cbfjmrwk5vvgx" path="res://hud/component_indicators.gd" id="10_sh35x"]
[ext_resource type="Texture2D" uid="uid://tnjq0pju1y5o" path="res://hud/dia_smalll.png" id="11_gms7k"]
[ext_resource type="Texture2D" uid="uid://bpmshe0qinq6g" path="res://hud/container.png" id="12_hwufu"]
[ext_resource type="FontFile" uid="uid://mseegkts3icm" path="res://hud/Px437_Acer_VGA_8x8.ttf" id="13_mq7b8"]
[ext_resource type="Shader" uid="uid://ddc1twbjwqs6e" path="res://hud/crt.gdshader" id="14_jvpmi"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0jxvb"]
shader = ExtResource("2_jvpmi")
shader_parameter/vignette_intensity = 1.0
shader_parameter/vignette_opacity = 1.0
[sub_resource type="Gradient" id="Gradient_0jxvb"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_pt78x"]
gradient = SubResource("Gradient_0jxvb")
width = 1
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sh35x"]
shader = ExtResource("4_qv4qp")
shader_parameter/min_y = 0.235291
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jvpmi"]
content_margin_left = 3.0
content_margin_top = 3.0
content_margin_right = 3.0
content_margin_bottom = 3.0
bg_color = Color(0.6, 0.6, 0.6, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_t2ad4"]
shader = ExtResource("14_jvpmi")
shader_parameter/scanlines_opacity = 0.2
shader_parameter/scanlines_width = 0.5
shader_parameter/grille_opacity = 0.1
shader_parameter/resolution = Vector2(640, 480)
shader_parameter/aberration = 0.00200005
shader_parameter/brightness = 1.0
shader_parameter/warp_amount = 0.3
[node name="hud" type="CanvasLayer" node_paths=PackedStringArray("aim_indicator", "energy_indicator")]
script = ExtResource("1_0ivg5")
aim_indicator = NodePath("aim_indicator")
energy_indicator = NodePath("energy_indicator")
[node name="vignette" type="TextureRect" parent="."]
material = SubResource("ShaderMaterial_0jxvb")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture1D_pt78x")
[node name="energy_indicator" type="Control" parent="."]
layout_mode = 3
anchors_preset = 2
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 10.0
offset_top = -8.0
offset_right = 10.0
offset_bottom = -8.0
offset_left = -268.0
offset_top = -4.0
offset_right = -268.0
offset_bottom = -4.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(6, 6)
scale = Vector2(4, 4)
script = ExtResource("2_1kkc0")
[node name="bg" type="Sprite2D" parent="energy_indicator"]
@ -63,11 +109,11 @@ anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_top = -39.0
offset_bottom = -39.0
offset_top = -143.0
offset_bottom = -143.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(6, 6)
scale = Vector2(4, 4)
script = ExtResource("4_fjv1a")
[node name="scale" type="Sprite2D" parent="aim_indicator"]
@ -79,24 +125,90 @@ texture = ExtResource("5_svhta")
[node name="component_indicators" type="Control" parent="."]
layout_mode = 3
anchors_preset = 3
anchor_left = 1.0
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
grow_horizontal = 0
offset_left = 351.0
offset_top = 6.0
offset_right = 351.0
offset_bottom = 6.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(6, 6)
scale = Vector2(4, 4)
script = ExtResource("10_sh35x")
[node name="Sprite2D" type="Sprite2D" parent="component_indicators"]
[node name="one" type="Sprite2D" parent="component_indicators"]
position = Vector2(-11.1667, -11.3333)
texture = ExtResource("11_gms7k")
[node name="Sprite2D2" type="Sprite2D" parent="component_indicators"]
[node name="two" type="Sprite2D" parent="component_indicators"]
position = Vector2(-28.8333, -11.3333)
texture = ExtResource("11_gms7k")
[node name="Sprite2D3" type="Sprite2D" parent="component_indicators"]
[node name="three" type="Sprite2D" parent="component_indicators"]
position = Vector2(-46.3333, -11)
texture = ExtResource("11_gms7k")
[node name="console" type="Control" parent="."]
layout_mode = 3
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_top = -67.0
offset_bottom = -67.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(4, 4)
[node name="container" type="Sprite2D" parent="console"]
texture = ExtResource("12_hwufu")
[node name="console_text" type="RichTextLabel" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -112.0
offset_top = -113.0
offset_right = 336.0
offset_bottom = 71.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(0.5, 0.5)
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 10
theme_override_constants/shadow_offset_y = 2
theme_override_constants/shadow_offset_x = 1
theme_override_constants/shadow_outline_size = 3
theme_override_constants/line_separation = 3
theme_override_fonts/normal_font = ExtResource("13_mq7b8")
theme_override_font_sizes/normal_font_size = 16
theme_override_styles/normal = SubResource("StyleBoxFlat_jvpmi")
text = "-- status --
[shields] - medium
[reactor] - danger
[hull] - critical
[railgun] - normal
[sensors] - normal
-- ok --"
horizontal_alignment = 1
vertical_alignment = 1
[node name="copy" type="BackBufferCopy" parent="."]
copy_mode = 2
[node name="crt_filter" type="TextureRect" parent="."]
material = SubResource("ShaderMaterial_t2ad4")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture1D_pt78x")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

After

Width:  |  Height:  |  Size: 73 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 B

After

Width:  |  Height:  |  Size: 76 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 B

After

Width:  |  Height:  |  Size: 76 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

After

Width:  |  Height:  |  Size: 73 B

Before After
Before After

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=11 format=3 uid="uid://dwk5lnfnntqh2"]
[ext_resource type="Texture2D" uid="uid://b8u4cc61kpl" path="res://hud/radar/threat_normal.png" id="1_cuq7j"]
[ext_resource type="Texture2D" uid="uid://cxfxrcm7n85cp" path="res://hud/aim_indicator/dot.png" id="1_66ojb"]
[ext_resource type="Script" uid="uid://bm76ox7rvuita" path="res://hud/radar/threat.gd" id="2_oq6ws"]
[ext_resource type="Texture2D" uid="uid://45x7cysybp10" path="res://hud/radar/line_pattern1.png" id="3_66ojb"]
[ext_resource type="Texture2D" uid="uid://bdeu7o7ot7863" path="res://hud/radar/line_pattern2.png" id="4_k5g0t"]
@ -57,8 +57,8 @@ frame_3/texture = ExtResource("6_qa0nt")
frame_3/duration = 1.0
[node name="threat" type="Sprite2D"]
modulate = Color(2, 2, 2, 1)
texture = ExtResource("1_cuq7j")
modulate = Color(1.1, 1.1, 1.1, 1)
texture = ExtResource("1_66ojb")
script = ExtResource("2_oq6ws")
[node name="animations" type="AnimationPlayer" parent="."]

27
hud/vignette.gdshader Normal file
View file

@ -0,0 +1,27 @@
/*
Shader from Godot Shaders - the free shader library.
godotshaders.com/shader/VHS-and-CRT-monitor-effect
This shader is under CC0 license. Feel free to use, improve and
change this shader according to your needs and consider sharing
the modified result to godotshaders.com.
*/
shader_type canvas_item;
uniform float vignette_intensity = 0.4;
uniform float vignette_opacity : hint_range(0.0, 1.0) = 0.5;
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
float vignette(vec2 uv){
uv *= 1.0 - uv.xy;
float vignette = uv.x * uv.y * 15.0;
return pow(vignette, vignette_intensity * vignette_opacity);
}
void fragment()
{
COLOR = texture(SCREEN_TEXTURE, UV);
COLOR.rgb *= vignette(UV);
}

View file

@ -0,0 +1 @@
uid://c6i3a0ue8m0sj

View file

@ -812,8 +812,6 @@ glow_blend_mode = 1
[node name="main" type="Node2D"]
[node name="player" parent="." instance=ExtResource("1_1fxsm")]
thruster_strength = 40.0
rotation_strength = 10.0
[node name="tilesbig" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAD3//f/AQAAAAAAAQD3//j/AQAAAAAAAAD3//n/AQAAAAAAAgD3//r/AQAAAAAAAwD3//v/AQAAAAAAAgD3//z/AQAAAAAAAQD3//3/AQAAAAAAAgD3//7/AQAAAAAAAAD3////AQAAAAAAAAD3/wAAAQAAAAAAAwD3/wEAAQAAAAAAAAD3/wIAAQAAAAAAAQD3/wMAAQAAAAAAAwD3/wQAAQAAAAAAAgD3/wUAAQAAAAAAAwD3/wYAAQAAAAAAAwD3/wcAAQAAAAAAAQD4/wcAAQAAAAAAAgD5//f/AQAAAAAAAQD5/wcAAQAAAAAAAAD6//f/AQAAAAAAAgD6/wcAAQAAAAAAAQD7//f/AQAAAAAAAwD7/wcAAQAAAAAAAQD8//f/AQAAAAAAAwD8/wcAAQAAAAAAAQD9//f/AQAAAAAAAgD9/wcAAQAAAAAAAgD+//f/AQAAAAAAAQD+/wcAAQAAAAAAAwD///f/AQAAAAAAAQD//wcAAQAAAAAAAwAAAPf/AQAAAAAAAAAAAAcAAQAAAAAAAAABAPf/AQAAAAAAAAABAAcAAQAAAAAAAQACAPf/AQAAAAAAAgACAAcAAQAAAAAAAgADAPf/AQAAAAAAAAADAAcAAQAAAAAAAwAEAPf/AQAAAAAAAwAEAAcAAQAAAAAAAwAFAPf/AQAAAAAAAwAFAAcAAQAAAAAAAwAGAPf/AQAAAAAAAQAGAAcAAQAAAAAAAgAHAPf/AQAAAAAAAQAHAAcAAQAAAAAAAgAIAPf/AQAAAAAAAwAIAAcAAQAAAAAAAgAJAPf/AQAAAAAAAwAJAAcAAQAAAAAAAwAKAPf/AQAAAAAAAAAKAAcAAQAAAAAAAAALAPf/AQAAAAAAAQALAAcAAQAAAAAAAAAMAPf/AQAAAAAAAwAMAAcAAQAAAAAAAAANAPf/AQAAAAAAAwANAPj/AQAAAAAAAAANAPn/AQAAAAAAAgANAPr/AQAAAAAAAQANAPv/AQAAAAAAAgANAPz/AQAAAAAAAQANAP3/AQAAAAAAAgANAP7/AQAAAAAAAQANAP//AQAAAAAAAwANAAAAAQAAAAAAAAANAAEAAQAAAAAAAgANAAIAAQAAAAAAAAANAAMAAQAAAAAAAAANAAQAAQAAAAAAAwANAAUAAQAAAAAAAgANAAYAAQAAAAAAAwANAAcAAQAAAAAAAQD4//f/AQAAAAAAAgD8//v/AQAAAAAAAwD7//v/AQAAAAAAAQD6//v/AQAAAAAAAwD5//v/AQAAAAAAAgD5//r/AQAAAAAAAQD5//n/AQAAAAAAAQD6//n/AQAAAAAAAQD6//j/AQAAAAAAAAD///j/AQAAAAAAAgAAAPn/AQAAAAAAAwABAPn/AQAAAAAAAQABAPj/AQAAAAAAAgACAPj/AQAAAAAAAgACAPn/AQAAAAAAAAADAPn/AQAAAAAAAwAEAPn/AQAAAAAAAgAEAPr/AQAAAAAAAQAFAPr/AQAAAAAAAQAFAPv/AQAAAAAAAAAEAPz/AQAAAAAAAAAFAPz/AQAAAAAAAwAGAPv/AQAAAAAAAgAGAPz/AQAAAAAAAwAFAP3/AQAAAAAAAwAFAP7/AQAAAAAAAwAGAP7/AQAAAAAAAgAGAP//AQAAAAAAAgAGAAAAAQAAAAAAAAAHAAAAAQAAAAAAAwAIAAAAAQAAAAAAAwAIAAEAAQAAAAAAAgAIAAIAAQAAAAAAAgAJAAIAAQAAAAAAAQAKAAIAAQAAAAAAAQAKAAEAAQAAAAAAAQAJAPv/AQAAAAAAAAAKAPv/AQAAAAAAAgALAPv/AQAAAAAAAQALAPr/AQAAAAAAAAALAPn/AQAAAAAAAwALAPj/AQAAAAAAAwAKAPj/AQAAAAAAAAAJAPn/AQAAAAAAAwAJAPr/AQAAAAAAAQAKAPr/AQAAAAAAAAAEAAEAAQAAAAAAAgAEAAIAAQAAAAAAAwAFAAIAAQAAAAAAAQAFAAMAAQAAAAAAAQAAAAMAAQAAAAAAAAABAAQAAQAAAAAAAgACAAQAAQAAAAAAAgD6/wEAAQAAAAAAAAD6/wIAAQAAAAAAAQD6/wMAAQAAAAAAAgD7/wMAAQAAAAAAAQD8/wMAAQAAAAAAAAD8/wQAAQAAAAAAAAD7/wQAAQAAAAAAAQD4/wYAAQAAAAAAAwD4/wMAAQAAAAAAAgD4/wQAAQAAAAAAAAD5/wUAAQAAAAAAAgD5/wYAAQAAAAAAAQD6/wYAAQAAAAAAAAD7/wYAAQAAAAAAAgD4/wUAAQAAAAAAAgAGAAYAAQAAAAAAAwAKAAYAAQAAAAAAAwAKAAUAAQAAAAAAAwAKAAQAAQAAAAAAAAAJAP3/AQAAAAAAAAAJAP7/AQAAAAAAAAAKAP7/AQAAAAAAAgAKAP3/AQAAAAAAAgADAP//AQAAAAAAAAAAAPz/AQAAAAAAAwD///z/AQAAAAAAAgD6//7/AQAAAAAAAQD7//7/AQAAAAAAAgD7//3/AQAAAAAAAwD6//3/AQAAAAAAAgAAAAEAAQAAAAAAAAA=")

7
player/components.gd Normal file
View file

@ -0,0 +1,7 @@
extends Node2D
@onready var canon: Marker2D = %canon
@onready var reactor: Reactor = $reactor
func _process(_delta: float) -> void:
%image.scale = canon.sprite_scale

1
player/components.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://qg3wympvxydq

View file

@ -27,7 +27,7 @@ func _physics_process(delta: float) -> void:
%thruster.active = false
if Input.is_action_just_pressed("shoot"):
%railgun.shoot()
%canon.shoot()
func _integrate_forces(state: PhysicsDirectBodyState2D) -> void:
state.angular_velocity = lerp(state.angular_velocity, angular_velocity_target, 0.1)

View file

@ -1,12 +1,11 @@
[gd_scene load_steps=20 format=3 uid="uid://b3xadpl4pu33u"]
[gd_scene load_steps=16 format=3 uid="uid://b3xadpl4pu33u"]
[ext_resource type="Script" uid="uid://erjhplyctxik" path="res://player/player.gd" id="1_kkw55"]
[ext_resource type="Texture2D" uid="uid://dlenptyfk1iwn" path="res://player/ship.png" id="2_1h4u8"]
[ext_resource type="PackedScene" uid="uid://cyq7l8x1pbh1h" path="res://hud/hud.tscn" id="2_rgyib"]
[ext_resource type="PackedScene" uid="uid://dnndsvtgqr8eq" path="res://bullet/bullet.tscn" id="2_yw30f"]
[ext_resource type="PackedScene" uid="uid://y08tu4ftj3t4" path="res://player/thruster.tscn" id="3_r6c8y"]
[ext_resource type="Script" uid="uid://dccya6vnwi1x4" path="res://player/railgun.gd" id="5_g6k8r"]
[ext_resource type="PackedScene" uid="uid://800ou0i3omcs" path="res://effects/flash.tscn" id="5_qjkh3"]
[ext_resource type="PackedScene" uid="uid://cmy4ja82e7jdd" path="res://components/canon.tscn" id="6_boad6"]
[ext_resource type="Script" uid="uid://qg3wympvxydq" path="res://player/components.gd" id="6_rgyib"]
[ext_resource type="PackedScene" uid="uid://dfm1atk5lpdo4" path="res://hud/radar/radar.tscn" id="7_rgyib"]
[ext_resource type="PackedScene" uid="uid://dqic53gtybiyf" path="res://components/reactor.tscn" id="9_hg6s5"]
@ -46,78 +45,6 @@ scale_max = 2.0
scale_curve = SubResource("CurveTexture_w2mcu")
alpha_curve = SubResource("CurveTexture_q5aon")
[sub_resource type="Animation" id="Animation_g6k8r"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%railgun/../image:scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%railgun/../image:scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_qjkh3"]
resource_name = "shoot"
length = 0.4
step = 0.1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%railgun/../image:scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.1, 0.003124, 0.835, -0.066667, -0.000579298, 0.133333, -0.000579298, 1, -0.2, 0.00127017, 0.25, 0),
"times": PackedFloat32Array(0, 0.166667, 0.4)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%railgun/../image:scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.1, -0.000583708, 1.177, -0.066667, -0.00146496, 0.133333, -0.00517273, 1, -0.2, 0.003124, 0.25, 0),
"times": PackedFloat32Array(0, 0.166667, 0.4)
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"do_shoot"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g6k8r"]
_data = {
&"RESET": SubResource("Animation_g6k8r"),
&"shoot": SubResource("Animation_qjkh3")
}
[node name="player" type="RigidBody2D" node_paths=PackedStringArray("radar", "reactor")]
physics_material_override = SubResource("PhysicsMaterial_6481p")
gravity_scale = 0.0
@ -144,30 +71,21 @@ player = NodePath("../..")
polygon = PackedVector2Array(-5, 7, 0, -7, 5, 7, 2, 8, -2, 8)
[node name="image" type="Sprite2D" parent="."]
unique_name_in_owner = true
texture = ExtResource("2_1h4u8")
[node name="thruster" parent="." instance=ExtResource("3_r6c8y")]
unique_name_in_owner = true
position = Vector2(0, 8)
[node name="railgun" type="Marker2D" parent="."]
unique_name_in_owner = true
position = Vector2(0, -10)
gizmo_extents = 3.0
script = ExtResource("5_g6k8r")
bullet = ExtResource("2_yw30f")
[node name="flash" parent="railgun" instance=ExtResource("5_qjkh3")]
unique_name_in_owner = true
oneshot = false
[node name="animations" type="AnimationPlayer" parent="railgun"]
libraries = {
&"": SubResource("AnimationLibrary_g6k8r")
}
[node name="radar" parent="." instance=ExtResource("7_rgyib")]
[node name="components" type="Node" parent="."]
[node name="components" type="Node2D" parent="."]
script = ExtResource("6_rgyib")
[node name="canon" parent="components" node_paths=PackedStringArray("player") instance=ExtResource("6_boad6")]
unique_name_in_owner = true
position = Vector2(0, -10)
player = NodePath("../..")
[node name="reactor" parent="components" instance=ExtResource("9_hg6s5")]

View file

@ -6,7 +6,9 @@ extends Marker2D
@export var energy_cost: float = 0.5
@onready var flash: Flash = %flash
@onready var player: Player = get_parent()
@export var player: Player
@export var sprite_scale: Vector2
var can_shoot: bool = true

View file

@ -57,4 +57,4 @@ shoot={
textures/canvas_textures/default_texture_filter=0
viewport/hdr_2d=true
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
environment/defaults/default_clear_color=Color(0.0338533, 0.0338533, 0.0338533, 1)