lot's of stuff

This commit is contained in:
Daydreel 2025-04-02 18:02:13 +02:00
parent bdbffd0799
commit 6d1b50d0d6
43 changed files with 657 additions and 37 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://315k07rsgf6t"
path.s3tc="res://.godot/imported/Female1.png-32c7b3afa8b348d789d25434c42d0b3a.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/Characters/Female1.png"
dest_files=["res://.godot/imported/Female1.png-32c7b3afa8b348d789d25434c42d0b3a.s3tc.ctex"]
[params]
compress/mode=2
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=0

BIN
Assets/Characters/Male1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn6ikwol6x8r0"
path.s3tc="res://.godot/imported/Male1.png-771345d3aff75b5160c1a6dbc860364e.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/Characters/Male1.png"
dest_files=["res://.godot/imported/Male1.png-771345d3aff75b5160c1a6dbc860364e.s3tc.ctex"]
[params]
compress/mode=2
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cuphn1ph86gv8"
path.s3tc="res://.godot/imported/emote_faceSad.png-3f79bde2b0a21130630738dd11746564.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/Emotes/emote_faceSad.png"
dest_files=["res://.godot/imported/emote_faceSad.png-3f79bde2b0a21130630738dd11746564.s3tc.ctex"]
[params]
compress/mode=2
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c37o831e05ljr"
path.s3tc="res://.godot/imported/emote_hearts.png-1ece24d239c76081343c286ae865cb90.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/Emotes/emote_hearts.png"
dest_files=["res://.godot/imported/emote_hearts.png-1ece24d239c76081343c286ae865cb90.s3tc.ctex"]
[params]
compress/mode=2
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqyhhvxpwtpsy"
path.s3tc="res://.godot/imported/emote_star.png-d1f7308a1e87c81fd0d857808bfea092.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/Emotes/emote_star.png"
dest_files=["res://.godot/imported/emote_star.png-d1f7308a1e87c81fd0d857808bfea092.s3tc.ctex"]
[params]
compress/mode=2
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=0

View file

@ -2,7 +2,7 @@ extends CharacterBody3D
class_name Bullet
var target : CharacterBody3D
var speed : int = 20
@export var speed : int = 20
var bullet_damage : int = 1
func _physics_process(delta: float) -> void:

View file

@ -1,27 +1,31 @@
[gd_scene load_steps=5 format=3 uid="uid://oykrff3g74eo"]
[ext_resource type="PackedScene" uid="uid://3nq3g7ddnphr" path="res://Assets/GLB format/weapon-ammo-arrow.glb" id="1_dsts2"]
[ext_resource type="Script" uid="uid://b788twwo1o6l2" path="res://Bullets/arrow.gd" id="1_r5o86"]
[ext_resource type="Texture2D" uid="uid://dqyhhvxpwtpsy" path="res://Assets/Emotes/emote_star.png" id="2_r5o86"]
[sub_resource type="SphereShape3D" id="SphereShape3D_r5o86"]
radius = 0.2
radius = 0.1
[sub_resource type="SphereShape3D" id="SphereShape3D_dsts2"]
radius = 0.3
radius = 0.12
[node name="Arrow" type="CharacterBody3D"]
script = ExtResource("1_r5o86")
[node name="weapon-ammo-arrow2" parent="." instance=ExtResource("1_dsts2")]
speed = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.123779)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0715332, 0)
shape = SubResource("SphereShape3D_r5o86")
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(2.5, 0, 0, 0, 2.5, 0, 0, 0, 2.5, 0, 0, 0)
billboard = 2
texture = ExtResource("2_r5o86")
[node name="Impact" type="Area3D" parent="."]
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Impact"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.137329)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0714111, 0)
shape = SubResource("SphereShape3D_dsts2")
debug_color = Color(0.926858, 0.237749, 0.335021, 0.42)

6
Globals/EventBus.gd Normal file
View file

@ -0,0 +1,6 @@
extends Node
#Emitter : TowerButton.gd
#Subscriber : World.gd
signal tower_selected(tower : PackedScene)

1
Globals/EventBus.gd.uid Normal file
View file

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

46
Towers/tower-b.tscn Normal file
View file

@ -0,0 +1,46 @@
[gd_scene load_steps=5 format=3 uid="uid://dp846r4jscm5p"]
[ext_resource type="Script" uid="uid://8kpvuurr5h5n" path="res://Towers/tower.gd" id="1_pb6ru"]
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="2_pb6ru"]
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
size = Vector3(1, 0.1, 1)
[sub_resource type="SphereShape3D" id="SphereShape3D_pajr1"]
radius = 3.0
[node name="Tower" type="StaticBody3D"]
collision_layer = 4
collision_mask = 4
script = ExtResource("1_pb6ru")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
shape = SubResource("BoxShape3D_egfuc")
[node name="Range" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.923584, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Range"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.475708, 0)
shape = SubResource("SphereShape3D_pajr1")
[node name="Aim" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02026, 0)
[node name="BulletContainer" type="Node" parent="."]
[node name="Cooldown" type="Timer" parent="."]
wait_time = 1.5
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(3.5, 0, 0, 0, 3.5, 0, 0, 0, 3.5, 0, 0.515442, 0)
billboard = 2
texture = ExtResource("2_pb6ru")
hframes = 8
vframes = 12
frame = 75
[connection signal="body_entered" from="Range" to="." method="_on_range_body_entered"]
[connection signal="body_exited" from="Range" to="." method="_on_range_body_exited"]
[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://trg7ag3dqr2l"]
[ext_resource type="Script" uid="uid://8kpvuurr5h5n" path="res://Towers/tower.gd" id="1_egfuc"]
[ext_resource type="PackedScene" uid="uid://bkrwjcxb47n0d" path="res://Assets/GLB format/tower-round-build-d.glb" id="1_ovc7u"]
[ext_resource type="Texture2D" uid="uid://bn6ikwol6x8r0" path="res://Assets/Characters/Male1.png" id="2_egfuc"]
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
size = Vector3(1, 0.1, 1)
@ -10,10 +10,10 @@ size = Vector3(1, 0.1, 1)
radius = 3.0
[node name="Tower" type="StaticBody3D"]
collision_layer = 4
collision_mask = 4
script = ExtResource("1_egfuc")
[node name="tower-round-build-d2" parent="." instance=ExtResource("1_ovc7u")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
shape = SubResource("BoxShape3D_egfuc")
@ -33,6 +33,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02026, 0)
[node name="Cooldown" type="Timer" parent="."]
wait_time = 1.5
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(3.5, 0, 0, 0, 3.5, 0, 0, 0, 3.5, 0, 0.515442, 0)
billboard = 2
texture = ExtResource("2_egfuc")
hframes = 8
vframes = 12
frame = 75
[connection signal="body_entered" from="Range" to="." method="_on_range_body_entered"]
[connection signal="body_exited" from="Range" to="." method="_on_range_body_exited"]
[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]

9
UI/health_bar_2d.gd Normal file
View file

@ -0,0 +1,9 @@
extends ProgressBar
func setup_bar(amount : int, max_amount : int) -> void:
max_value = max_amount
value = amount
func update_bar(amount : int) -> void:
value = amount

1
UI/health_bar_2d.gd.uid Normal file
View file

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

29
UI/health_bar_2d.tscn Normal file
View file

@ -0,0 +1,29 @@
[gd_scene load_steps=4 format=3 uid="uid://cwl31nkib7ixp"]
[ext_resource type="Script" uid="uid://c4037f8r3bomr" path="res://UI/health_bar_2d.gd" id="1_qpj2g"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qpj2g"]
bg_color = Color(0.341176, 0.0823529, 0.0941176, 0)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
expand_margin_left = 4.0
expand_margin_top = 4.0
expand_margin_right = 4.0
expand_margin_bottom = 4.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xcn5x"]
bg_color = Color(0.921569, 0.419608, 0.415686, 1)
[node name="HealthBar2D" type="ProgressBar"]
custom_minimum_size = Vector2(100, 10)
offset_left = 4.0
offset_top = 4.0
offset_right = 104.0
offset_bottom = 14.0
theme_override_styles/background = SubResource("StyleBoxFlat_qpj2g")
theme_override_styles/fill = SubResource("StyleBoxFlat_xcn5x")
value = 50.0
show_percentage = false
script = ExtResource("1_qpj2g")

14
UI/health_bar_3d.gd Normal file
View file

@ -0,0 +1,14 @@
extends Sprite3D
@onready var bar : ProgressBar = $SubViewport/HealthBar2D
func _ready() -> void:
texture = $SubViewport.get_texture()
func set_up(value : int, max_amount : int) -> void:
bar.setup_bar(value, max_amount)
func update(value : int) -> void:
bar.update_bar(value)

1
UI/health_bar_3d.gd.uid Normal file
View file

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

16
UI/health_bar_3d.tscn Normal file
View file

@ -0,0 +1,16 @@
[gd_scene load_steps=4 format=3 uid="uid://daiqb0q373002"]
[ext_resource type="Texture2D" uid="uid://bd7ed8dvc7m0v" path="res://icon.svg" id="1_dna40"]
[ext_resource type="Script" uid="uid://be8jd1w1bsfyt" path="res://UI/health_bar_3d.gd" id="1_l5e25"]
[ext_resource type="PackedScene" uid="uid://cwl31nkib7ixp" path="res://UI/health_bar_2d.tscn" id="2_l5e25"]
[node name="HealthBar3D" type="Sprite3D"]
billboard = 2
texture = ExtResource("1_dna40")
script = ExtResource("1_l5e25")
[node name="SubViewport" type="SubViewport" parent="."]
size = Vector2i(108, 18)
size_2d_override_stretch = true
[node name="HealthBar2D" parent="SubViewport" instance=ExtResource("2_l5e25")]

42
UI/shop_panel.tscn Normal file
View file

@ -0,0 +1,42 @@
[gd_scene load_steps=3 format=3 uid="uid://he31g7f3ru1c"]
[ext_resource type="PackedScene" uid="uid://bqpeu50pgsdfk" path="res://UI/tower_button.tscn" id="1_txsyf"]
[ext_resource type="PackedScene" uid="uid://dp846r4jscm5p" path="res://Towers/tower-b.tscn" id="2_oxe32"]
[node name="ShopPanel" type="Panel"]
custom_minimum_size = Vector2(300, 0)
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 0
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PierreButton" parent="VBoxContainer" instance=ExtResource("1_txsyf")]
layout_mode = 2
[node name="AlineButton" parent="VBoxContainer" instance=ExtResource("1_txsyf")]
layout_mode = 2
text = "Aline
350 Trucs"
tower = ExtResource("2_oxe32")
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="CancelButton" type="Button" parent="VBoxContainer"]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "Cancel
"
[editable path="VBoxContainer/AlineButton"]

7
UI/tower_button.gd Normal file
View file

@ -0,0 +1,7 @@
extends Button
@export var tower : PackedScene
func _on_pressed() -> void:
EventBus.tower_selected.emit(tower)

1
UI/tower_button.gd.uid Normal file
View file

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

25
UI/tower_button.tscn Normal file
View file

@ -0,0 +1,25 @@
[gd_scene load_steps=4 format=3 uid="uid://bqpeu50pgsdfk"]
[ext_resource type="Texture2D" uid="uid://dqyhhvxpwtpsy" path="res://Assets/Emotes/emote_star.png" id="1_88p3s"]
[ext_resource type="Script" uid="uid://dyhtr6g7kd1g2" path="res://UI/tower_button.gd" id="1_i47ne"]
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="2_4qiv5"]
[node name="TowerButton" type="Button"]
custom_minimum_size = Vector2(300, 50)
text = "Pierre
250 Trucs"
script = ExtResource("1_i47ne")
tower = ExtResource("2_4qiv5")
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -20.0
offset_right = 40.0
offset_bottom = 20.0
grow_vertical = 2
texture = ExtResource("1_88p3s")
[connection signal="pressed" from="." to="." method="_on_pressed"]

14
UI/ui.tscn Normal file
View file

@ -0,0 +1,14 @@
[gd_scene load_steps=2 format=3 uid="uid://dbx8ow3v45k4k"]
[ext_resource type="PackedScene" uid="uid://he31g7f3ru1c" path="res://UI/shop_panel.tscn" id="1_2fwl4"]
[node name="UI" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ShopPanel" parent="." instance=ExtResource("1_2fwl4")]
layout_mode = 1

10
VFX/death_particles.gd Normal file
View file

@ -0,0 +1,10 @@
extends CPUParticles3D
func _ready() -> void:
call_deferred("play")
func play():
emitting = true
func _on_finished() -> void:
queue_free()

View file

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

37
VFX/death_particles.tscn Normal file
View file

@ -0,0 +1,37 @@
[gd_scene load_steps=6 format=3 uid="uid://ddm57pv5ox171"]
[ext_resource type="Texture2D" uid="uid://c37o831e05ljr" path="res://Assets/Emotes/emote_hearts.png" id="1_sjjhj"]
[ext_resource type="Script" uid="uid://c3cmwfdofbw0x" path="res://VFX/death_particles.gd" id="2_d4t8v"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u5ixm"]
transparency = 2
alpha_scissor_threshold = 0.252
alpha_antialiasing_mode = 0
blend_mode = 1
shading_mode = 0
albedo_texture = ExtResource("1_sjjhj")
billboard_mode = 2
billboard_keep_scale = true
[sub_resource type="QuadMesh" id="QuadMesh_8oxv1"]
material = SubResource("StandardMaterial3D_u5ixm")
[sub_resource type="Curve" id="Curve_wov25"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.464378), 0.0, 0.0, 0, 0]
point_count = 2
[node name="DeathParticles" type="CPUParticles3D"]
emitting = false
amount = 6
one_shot = true
explosiveness = 1.0
mesh = SubResource("QuadMesh_8oxv1")
direction = Vector3(1, 1, 0)
spread = 180.0
gravity = Vector3(0, 0, 0)
initial_velocity_min = 0.5
initial_velocity_max = 1.0
scale_amount_curve = SubResource("Curve_wov25")
script = ExtResource("2_d4t8v")
[connection signal="finished" from="." to="." method="_on_finished"]

37
VFX/sad_particles.tscn Normal file
View file

@ -0,0 +1,37 @@
[gd_scene load_steps=6 format=3 uid="uid://m0vj2ac5oesx"]
[ext_resource type="Texture2D" uid="uid://cuphn1ph86gv8" path="res://Assets/Emotes/emote_faceSad.png" id="1_kukuk"]
[ext_resource type="Script" uid="uid://c3cmwfdofbw0x" path="res://VFX/death_particles.gd" id="2_n3nax"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u5ixm"]
transparency = 2
alpha_scissor_threshold = 0.252
alpha_antialiasing_mode = 0
blend_mode = 1
shading_mode = 0
albedo_texture = ExtResource("1_kukuk")
billboard_mode = 2
billboard_keep_scale = true
[sub_resource type="QuadMesh" id="QuadMesh_8oxv1"]
material = SubResource("StandardMaterial3D_u5ixm")
[sub_resource type="Curve" id="Curve_wov25"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.464378), 0.0, 0.0, 0, 0]
point_count = 2
[node name="SadParticles" type="CPUParticles3D"]
emitting = false
amount = 6
one_shot = true
explosiveness = 1.0
mesh = SubResource("QuadMesh_8oxv1")
direction = Vector3(1, 1, 0)
spread = 180.0
gravity = Vector3(0, 0, 0)
initial_velocity_min = 0.5
initial_velocity_max = 1.0
scale_amount_curve = SubResource("Curve_wov25")
script = ExtResource("2_n3nax")
[connection signal="finished" from="." to="." method="_on_finished"]

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://dknt1oiyei5e5"]
[gd_scene load_steps=5 format=3 uid="uid://dknt1oiyei5e5"]
[ext_resource type="Script" uid="uid://dg6f6na1nn2c6" path="res://enemies/enemy.gd" id="1_l7e03"]
[ext_resource type="PackedScene" uid="uid://52kknuv6xd3x" path="res://Assets/GLB format/enemy-ufo-a.glb" id="2_cmo2f"]
[ext_resource type="Texture2D" uid="uid://bn6ikwol6x8r0" path="res://Assets/Characters/Male1.png" id="2_l7e03"]
[ext_resource type="PackedScene" uid="uid://daiqb0q373002" path="res://UI/health_bar_3d.tscn" id="3_cmo2f"]
[sub_resource type="SphereShape3D" id="SphereShape3D_7frlh"]
@ -9,12 +10,18 @@
[node name="EnemyA" type="CharacterBody3D" parent="."]
script = ExtResource("1_l7e03")
health = 1
[node name="enemy-ufo-a2" parent="EnemyA" instance=ExtResource("2_cmo2f")]
speed = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyA"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
shape = SubResource("SphereShape3D_7frlh")
[editable path="EnemyA/enemy-ufo-a2"]
[node name="Sprite3D" type="Sprite3D" parent="EnemyA"]
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0)
billboard = 2
texture = ExtResource("2_l7e03")
hframes = 8
vframes = 12
[node name="HealthBar3D" parent="EnemyA" instance=ExtResource("3_cmo2f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0)

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://bfngnvgbcbakd"]
[gd_scene load_steps=5 format=3 uid="uid://bfngnvgbcbakd"]
[ext_resource type="Script" uid="uid://dg6f6na1nn2c6" path="res://enemies/enemy.gd" id="1_uehkb"]
[ext_resource type="PackedScene" uid="uid://dk8gnkd85ik25" path="res://Assets/GLB format/enemy-ufo-b.glb" id="2_uehkb"]
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="2_uehkb"]
[ext_resource type="PackedScene" uid="uid://daiqb0q373002" path="res://UI/health_bar_3d.tscn" id="3_s3rvm"]
[sub_resource type="SphereShape3D" id="SphereShape3D_7frlh"]
@ -9,10 +10,17 @@
[node name="EnemyB" type="CharacterBody3D" parent="."]
script = ExtResource("1_uehkb")
health = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyB"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
shape = SubResource("SphereShape3D_7frlh")
[node name="enemy-ufo-b2" parent="EnemyB" instance=ExtResource("2_uehkb")]
[node name="Sprite3D" type="Sprite3D" parent="EnemyB"]
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0)
billboard = 2
texture = ExtResource("2_uehkb")
hframes = 8
vframes = 12
[node name="HealthBar3D" parent="EnemyB" instance=ExtResource("3_s3rvm")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0)

View file

@ -1,21 +1,29 @@
extends CharacterBody3D
class_name Enemy
@onready var death_vfx_packed : PackedScene = preload("res://VFX/death_particles.tscn")
@onready var sad_vfx_packed : PackedScene = preload("res://VFX/sad_particles.tscn")
@export var speed : int = 2
@export var health : int = 15 :
@export var max_life : int = 10
var health : int = 0 :
set(value):
health = value
if health <= 0 and is_alive:
if health >= max_life and is_alive:
death()
@onready var Path : PathFollow3D = get_parent()
var is_alive : bool = true
#func _ready() -> void:
#$HealthBar3D.set_up(health)
func _ready() -> void:
$HealthBar3D.set_up(health, max_life)
func _physics_process(delta: float) -> void:
if !is_alive:
return
Path.set_progress(Path.get_progress() + speed * delta)
if Path.get_progress_ratio() >= 0.99:
@ -24,12 +32,17 @@ func _physics_process(delta: float) -> void:
func take_damage(damage : int) -> void:
health -= damage
#$HealthBar3D.update(health)
health += damage
$HealthBar3D.update(health)
func death() -> void:
is_alive = false
#Global.enemies_alive -= 1
#Global.money += 50
$Sprite3D.visible = false
var death_vfx : CPUParticles3D = death_vfx_packed.instantiate()
get_tree().current_scene.add_child(death_vfx)
death_vfx.global_position = global_position
Path.queue_free()

View file

@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bd7ed8dvc7m0v"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
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/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -31,7 +32,7 @@ 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
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View file

@ -18,6 +18,7 @@ config/icon="res://icon.svg"
[autoload]
GameManager="*res://Globals/GameManager.gd"
EventBus="*res://Globals/EventBus.gd"
[file_customization]
@ -39,3 +40,9 @@ build={
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(344, 20),"global_position":Vector2(353, 68),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[layer_names]
3d_physics/layer_1="floor"
3d_physics/layer_2="tower"
3d_physics/layer_3="baddy"

View file

@ -15,7 +15,6 @@ func spawn_next_wave() -> void:
$SpawnTimer.start(current_wave.wait_time_before_next_wave)
func _process(delta: float) -> void:
spawn_manager()

View file

@ -5,9 +5,12 @@ extends Node3D
@onready var cam : Camera3D = $Camera3D
@onready var selector : Node3D = $Selector
var in_build_menu : bool = false
#func _ready() -> void:
#$Spawner.spawn_next_wave()
func _ready() -> void:
$Spawner.spawn_next_wave()
$CanvasLayer/UI/ShopPanel.visible = in_build_menu
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
func _process(delta: float) -> void:
handle_player_controls()
@ -43,3 +46,12 @@ func build_tower(scene : PackedScene) -> void:
var temp_cannon : Tower = scene.instantiate()
add_child(temp_cannon)
temp_cannon.global_position = selector.global_position
func _on_EventBus_tower_selected(tower : PackedScene):
tower_blueprint = tower
func _on_recrutement_button_pressed() -> void:
in_build_menu = !in_build_menu
$CanvasLayer/UI/ShopPanel.visible = in_build_menu

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://ky0uewndeuwv"]
[gd_scene load_steps=12 format=3 uid="uid://ky0uewndeuwv"]
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://world.gd" id="1_fj7yv"]
[ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"]
@ -8,6 +8,7 @@
[ext_resource type="Script" uid="uid://chu8s12rtdeqx" path="res://Scripts/Wave.gd" id="6_gbfbk"]
[ext_resource type="Resource" uid="uid://dkbuy7fetnihs" path="res://Waves/wave_1.tres" id="7_ioo17"]
[ext_resource type="Resource" uid="uid://dvw6vm3vbpmdl" path="res://Waves/wave_2.tres" id="8_wse8f"]
[ext_resource type="PackedScene" uid="uid://dbx8ow3v45k4k" path="res://UI/ui.tscn" id="9_ioo17"]
[sub_resource type="Curve3D" id="Curve3D_aqk2v"]
_data = {
@ -152,4 +153,24 @@ environment = SubResource("Environment_036b0")
transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 4, 6)
light_color = Color(0.823308, 0.863845, 0.742102, 1)
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="UI" parent="CanvasLayer" instance=ExtResource("9_ioo17")]
[node name="RecrutementButton" type="Button" parent="CanvasLayer/UI"]
custom_minimum_size = Vector2(200, 50)
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 29.0
offset_top = -77.0
offset_right = 229.0
offset_bottom = -27.0
grow_vertical = 0
text = "Recrutement"
[connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]
[connection signal="pressed" from="CanvasLayer/UI/RecrutementButton" to="." method="_on_recrutement_button_pressed"]
[editable path="CanvasLayer/UI"]