shovel fully done
This commit is contained in:
parent
797fbfb4fe
commit
2639322dbf
12 changed files with 107 additions and 14 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
BIN
assets/sprites/gui/shovel_button.png
Normal file
BIN
assets/sprites/gui/shovel_button.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
34
assets/sprites/gui/shovel_button.png.import
Normal file
34
assets/sprites/gui/shovel_button.png.import
Normal 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
|
||||||
|
|
@ -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"]
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue