shovel fully done

This commit is contained in:
Rendo 2025-07-23 18:08:29 +05:00
commit 2639322dbf
12 changed files with 107 additions and 14 deletions

View file

@ -5,6 +5,7 @@
[resource] [resource]
resource_local_to_scene = true resource_local_to_scene = true
shader = ExtResource("1_38cc4") shader = ExtResource("1_38cc4")
shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5) shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961)
shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353)
shader_parameter/selected = false shader_parameter/selected = false
shader_parameter/blend = 0.0 shader_parameter/blend = 0.0

View file

@ -5,6 +5,7 @@
[resource] [resource]
resource_local_to_scene = true resource_local_to_scene = true
shader = ExtResource("1_fsu5r") shader = ExtResource("1_fsu5r")
shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5) shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961)
shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353)
shader_parameter/blend = 0.0 shader_parameter/blend = 0.0
shader_parameter/selected = false shader_parameter/selected = false

View file

@ -2,6 +2,7 @@ shader_type canvas_item;
render_mode unshaded; render_mode unshaded;
uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5); uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
uniform vec4 HIGHLIGHT_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
uniform float blend : hint_range(0,1,0.01); uniform float blend : hint_range(0,1,0.01);
uniform bool selected = false; uniform bool selected = false;
@ -15,7 +16,7 @@ void fragment() {
if (selected) if (selected)
{ {
COLOR = vec4(mix(text.rgb,FLASH_COLOR.rgb,FLASH_COLOR.a),text.a); COLOR = vec4(mix(text.rgb,HIGHLIGHT_COLOR.rgb,HIGHLIGHT_COLOR.a),text.a);
} }
else else
{ {

View file

@ -1,6 +1,7 @@
shader_type canvas_item; shader_type canvas_item;
uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5); uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
uniform vec4 HIGHLIGHT_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
uniform bool selected = false; uniform bool selected = false;
uniform float blend : hint_range(0.0, 1.0, 0.01); uniform float blend : hint_range(0.0, 1.0, 0.01);
@ -9,7 +10,7 @@ void fragment() {
if (selected) if (selected)
{ {
COLOR = vec4(mix(text.rgb,FLASH_COLOR.rgb,FLASH_COLOR.a),text.a); COLOR = vec4(mix(text.rgb,HIGHLIGHT_COLOR.rgb,HIGHLIGHT_COLOR.a),text.a);
} }
else else
{ {

View file

@ -1,7 +1,20 @@
shader_type canvas_item; shader_type canvas_item;
uniform vec4 region_rect;
uniform float progress;
void fragment() { void fragment() {
//vec4 text = texture(TEXTURE,UV); if (progress > 0.9999)
vec3 argg = vec3(distance(vec2(0.5),UV)); {
COLOR = vec4(argg,1); vec4 text = texture(TEXTURE,UV);
COLOR = text;
}
vec2 c = vec2(0.5)-UV;
float d = atan(c.x,c.y)+PI;
if (d > progress*TAU)
{
discard;
}
vec4 text = texture(TEXTURE,UV);
COLOR = text;
} }

View file

@ -5,3 +5,4 @@
[resource] [resource]
atlas = ExtResource("1_i8m7w") atlas = ExtResource("1_i8m7w")
region = Rect2(0, 174, 46, 46) region = Rect2(0, 174, 46, 46)
filter_clip = true

View file

@ -5,3 +5,4 @@
[resource] [resource]
atlas = ExtResource("1_s2rs0") atlas = ExtResource("1_s2rs0")
region = Rect2(46, 174, 51, 47) region = Rect2(46, 174, 51, 47)
filter_clip = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

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

View file

@ -1,10 +1,19 @@
[gd_scene load_steps=12 format=3 uid="uid://bq7imkpr2yqyr"] [gd_scene load_steps=14 format=3 uid="uid://bq7imkpr2yqyr"]
[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_fluxn"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_fluxn"]
[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="2_bi7an"]
[ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="2_o5tda"] [ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="2_o5tda"]
[ext_resource type="AnimationLibrary" uid="uid://0bdesb8j2mbo" path="res://assets/animations/plants/wallnut.res" id="3_xl65q"] [ext_resource type="AnimationLibrary" uid="uid://0bdesb8j2mbo" path="res://assets/animations/plants/wallnut.res" id="3_xl65q"]
[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/entities/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"] [ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/entities/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ladjs"]
resource_local_to_scene = true
shader = ExtResource("2_bi7an")
shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5)
shader_parameter/HIGHLIGHT_COLOR = Color(1, 0.709804, 0.439216, 0.5)
shader_parameter/selected = false
shader_parameter/blend = 0.0
[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_y3tlf"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_y3tlf"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds5ry"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds5ry"]
@ -42,10 +51,10 @@ internal_id = "wallnut"
MaxHP = 600.0 MaxHP = 600.0
[node name="Sprite2D" parent="." index="0"] [node name="Sprite2D" parent="." index="0"]
material = SubResource("ShaderMaterial_ladjs")
texture = ExtResource("2_o5tda") texture = ExtResource("2_o5tda")
hframes = 12 hframes = 12
vframes = 3 vframes = 3
frame = 10
[node name="AnimationPlayer" parent="." index="1"] [node name="AnimationPlayer" parent="." index="1"]
libraries = { libraries = {
@ -65,4 +74,7 @@ shape = SubResource("RectangleShape2D_khltr")
script = ExtResource("4_cjtyy") script = ExtResource("4_cjtyy")
parameters = Array[String](["parameters/Tree/blend_position"]) parameters = Array[String](["parameters/Tree/blend_position"])
[node name="FlashController" parent="." index="5"]
shaderMaterial = SubResource("ShaderMaterial_ladjs")
[connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"] [connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"]

View file

@ -1,14 +1,16 @@
[gd_scene load_steps=6 format=3 uid="uid://t0vpmycj6c8j"] [gd_scene load_steps=6 format=3 uid="uid://t0vpmycj6c8j"]
[ext_resource type="Texture2D" uid="uid://cw73vihkrfenc" path="res://assets/sprites/gui/Shovel.tres" id="1_46afk"]
[ext_resource type="Shader" uid="uid://c5kv2gwtme1dk" path="res://assets/shaders/radial_progress.gdshader" id="1_jj4sa"] [ext_resource type="Shader" uid="uid://c5kv2gwtme1dk" path="res://assets/shaders/radial_progress.gdshader" id="1_jj4sa"]
[ext_resource type="Texture2D" uid="uid://b0jta6xgl7mvc" path="res://assets/sprites/gui/shovel_button.png" id="2_jj4sa"]
[ext_resource type="Texture2D" uid="uid://fd6drk2su0df" path="res://assets/sprites/gui/EmptyShovel.tres" id="2_pw2pj"] [ext_resource type="Texture2D" uid="uid://fd6drk2su0df" path="res://assets/sprites/gui/EmptyShovel.tres" id="2_pw2pj"]
[ext_resource type="Script" uid="uid://d4dbg0us5ngxy" path="res://scripts/gui/ShovelButton.cs" id="3_u6gir"] [ext_resource type="Script" uid="uid://d4dbg0us5ngxy" path="res://scripts/gui/ShovelButton.cs" id="3_u6gir"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_grw26"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_grw26"]
shader = ExtResource("1_jj4sa") shader = ExtResource("1_jj4sa")
shader_parameter/region_rect = Vector4(46, 174, 51, 47)
shader_parameter/progress = 1.0
[node name="ShovelButton" type="TextureButton" node_paths=PackedStringArray("raycast")] [node name="ShovelButton" type="TextureButton" node_paths=PackedStringArray("raycast", "timer")]
material = SubResource("ShaderMaterial_grw26") material = SubResource("ShaderMaterial_grw26")
anchors_preset = -1 anchors_preset = -1
anchor_right = 0.085 anchor_right = 0.085
@ -19,11 +21,12 @@ size_flags_horizontal = 4
size_flags_vertical = 0 size_flags_vertical = 0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
toggle_mode = true toggle_mode = true
texture_normal = ExtResource("1_46afk") texture_normal = ExtResource("2_jj4sa")
texture_pressed = ExtResource("2_pw2pj") texture_pressed = ExtResource("2_pw2pj")
stretch_mode = 0 stretch_mode = 5
script = ExtResource("3_u6gir") script = ExtResource("3_u6gir")
raycast = NodePath("RayCast2D") raycast = NodePath("RayCast2D")
timer = NodePath("Timer")
[node name="RayCast2D" type="RayCast2D" parent="."] [node name="RayCast2D" type="RayCast2D" parent="."]
exclude_parent = false exclude_parent = false
@ -32,3 +35,7 @@ collision_mask = 24
hit_from_inside = true hit_from_inside = true
collide_with_areas = true collide_with_areas = true
collide_with_bodies = false collide_with_bodies = false
[node name="Timer" type="Timer" parent="."]
wait_time = 90.0
one_shot = true

View file

@ -7,11 +7,14 @@ namespace Newlon.Components.GUI;
public partial class ShovelButton : TextureButton public partial class ShovelButton : TextureButton
{ {
const float CONE_HEALTH = 295.0f;
[Export] private PackedScene particles; [Export] private PackedScene particles;
private Entity hoveredEntity; private Entity hoveredEntity;
private bool Selected => hoveredEntity != null; private bool Selected => hoveredEntity != null;
[Export] [Export]
private RayCast2D raycast; private RayCast2D raycast;
[Export]
private Timer timer;
private void OnFocusExited() private void OnFocusExited()
{ {
ButtonPressed = false; ButtonPressed = false;
@ -20,6 +23,7 @@ public partial class ShovelButton : TextureButton
{ {
raycast.Reparent(PoolContainer.Instance); raycast.Reparent(PoolContainer.Instance);
FocusExited += OnFocusExited; FocusExited += OnFocusExited;
timer.Timeout += OnTimerTimeout;
} }
public override void _Toggled(bool toggledOn) public override void _Toggled(bool toggledOn)
@ -42,7 +46,9 @@ public partial class ShovelButton : TextureButton
} }
else else
{ {
hoveredEntity.TakeDamage(205, null); hoveredEntity.TakeDamage(CONE_HEALTH, null);
timer.Start();
Disabled = true;
} }
} }
hoveredEntity?.GetNode<FlashShaderController>("FlashController").Deselect(); hoveredEntity?.GetNode<FlashShaderController>("FlashController").Deselect();
@ -58,6 +64,7 @@ public partial class ShovelButton : TextureButton
} }
public override void _Process(double delta) public override void _Process(double delta)
{ {
UpdateTimer();
if (ButtonPressed) if (ButtonPressed)
{ {
@ -145,6 +152,20 @@ public partial class ShovelButton : TextureButton
return true; return true;
} }
} }
else
{
hoveredEntity?.GetNode<FlashShaderController>("FlashController").Deselect();
hoveredEntity = null;
return false;
}
return hoveredEntity != null && hoveredEntity is RuntimeZombieData; return hoveredEntity != null && hoveredEntity is RuntimeZombieData;
} }
private void UpdateTimer()
{
((ShaderMaterial)Material).SetShaderParameter("progress", 1.0-timer.TimeLeft/timer.WaitTime);
}
private void OnTimerTimeout()
{
Disabled = false;
}
} }