lot's of stuff
BIN
Assets/Characters/Female1.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
35
Assets/Characters/Female1.png.import
Normal 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
|
After Width: | Height: | Size: 27 KiB |
35
Assets/Characters/Male1.png.import
Normal 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
|
||||||
BIN
Assets/Emotes/emote_faceAngry.png
Normal file
|
After Width: | Height: | Size: 281 B |
34
Assets/Emotes/emote_faceAngry.png.import
Normal 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
|
||||||
BIN
Assets/Emotes/emote_faceHappy.png
Normal file
|
After Width: | Height: | Size: 242 B |
34
Assets/Emotes/emote_faceHappy.png.import
Normal 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
|
||||||
BIN
Assets/Emotes/emote_faceSad.png
Normal file
|
After Width: | Height: | Size: 241 B |
35
Assets/Emotes/emote_faceSad.png.import
Normal 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
|
||||||
BIN
Assets/Emotes/emote_hearts.png
Normal file
|
After Width: | Height: | Size: 267 B |
35
Assets/Emotes/emote_hearts.png.import
Normal 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
|
||||||
BIN
Assets/Emotes/emote_star.png
Normal file
|
After Width: | Height: | Size: 264 B |
35
Assets/Emotes/emote_star.png.import
Normal 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
|
||||||
|
|
@ -2,7 +2,7 @@ extends CharacterBody3D
|
||||||
class_name Bullet
|
class_name Bullet
|
||||||
|
|
||||||
var target : CharacterBody3D
|
var target : CharacterBody3D
|
||||||
var speed : int = 20
|
@export var speed : int = 20
|
||||||
var bullet_damage : int = 1
|
var bullet_damage : int = 1
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,31 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://oykrff3g74eo"]
|
[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="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"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_r5o86"]
|
||||||
radius = 0.2
|
radius = 0.1
|
||||||
|
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_dsts2"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_dsts2"]
|
||||||
radius = 0.3
|
radius = 0.12
|
||||||
|
|
||||||
[node name="Arrow" type="CharacterBody3D"]
|
[node name="Arrow" type="CharacterBody3D"]
|
||||||
script = ExtResource("1_r5o86")
|
script = ExtResource("1_r5o86")
|
||||||
|
speed = 10
|
||||||
[node name="weapon-ammo-arrow2" parent="." instance=ExtResource("1_dsts2")]
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[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")
|
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="Impact" type="Area3D" parent="."]
|
||||||
|
|
||||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Impact"]
|
[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")
|
shape = SubResource("SphereShape3D_dsts2")
|
||||||
debug_color = Color(0.926858, 0.237749, 0.335021, 0.42)
|
debug_color = Color(0.926858, 0.237749, 0.335021, 0.42)
|
||||||
|
|
||||||
|
|
|
||||||
6
Globals/EventBus.gd
Normal 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
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cqrfsolhtr1k3
|
||||||
46
Towers/tower-b.tscn
Normal 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"]
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://trg7ag3dqr2l"]
|
[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="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"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
|
||||||
size = Vector3(1, 0.1, 1)
|
size = Vector3(1, 0.1, 1)
|
||||||
|
|
@ -10,10 +10,10 @@ size = Vector3(1, 0.1, 1)
|
||||||
radius = 3.0
|
radius = 3.0
|
||||||
|
|
||||||
[node name="Tower" type="StaticBody3D"]
|
[node name="Tower" type="StaticBody3D"]
|
||||||
|
collision_layer = 4
|
||||||
|
collision_mask = 4
|
||||||
script = ExtResource("1_egfuc")
|
script = ExtResource("1_egfuc")
|
||||||
|
|
||||||
[node name="tower-round-build-d2" parent="." instance=ExtResource("1_ovc7u")]
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
|
||||||
shape = SubResource("BoxShape3D_egfuc")
|
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="."]
|
[node name="Cooldown" type="Timer" parent="."]
|
||||||
wait_time = 1.5
|
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_entered" from="Range" to="." method="_on_range_body_entered"]
|
||||||
[connection signal="body_exited" from="Range" to="." method="_on_range_body_exited"]
|
[connection signal="body_exited" from="Range" to="." method="_on_range_body_exited"]
|
||||||
[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]
|
[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]
|
||||||
|
|
|
||||||
9
UI/health_bar_2d.gd
Normal 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
|
|
@ -0,0 +1 @@
|
||||||
|
uid://c4037f8r3bomr
|
||||||
29
UI/health_bar_2d.tscn
Normal 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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
uid://be8jd1w1bsfyt
|
||||||
16
UI/health_bar_3d.tscn
Normal 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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dyhtr6g7kd1g2
|
||||||
25
UI/tower_button.tscn
Normal 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
|
|
@ -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
|
|
@ -0,0 +1,10 @@
|
||||||
|
extends CPUParticles3D
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
call_deferred("play")
|
||||||
|
|
||||||
|
func play():
|
||||||
|
emitting = true
|
||||||
|
|
||||||
|
func _on_finished() -> void:
|
||||||
|
queue_free()
|
||||||
1
VFX/death_particles.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://c3cmwfdofbw0x
|
||||||
37
VFX/death_particles.tscn
Normal 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
|
|
@ -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"]
|
||||||
|
|
@ -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="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"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_7frlh"]
|
||||||
|
|
||||||
|
|
@ -9,12 +10,18 @@
|
||||||
|
|
||||||
[node name="EnemyA" type="CharacterBody3D" parent="."]
|
[node name="EnemyA" type="CharacterBody3D" parent="."]
|
||||||
script = ExtResource("1_l7e03")
|
script = ExtResource("1_l7e03")
|
||||||
health = 1
|
speed = 1
|
||||||
|
|
||||||
[node name="enemy-ufo-a2" parent="EnemyA" instance=ExtResource("2_cmo2f")]
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyA"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyA"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
|
||||||
shape = SubResource("SphereShape3D_7frlh")
|
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)
|
||||||
|
|
|
||||||
|
|
@ -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="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"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_7frlh"]
|
||||||
|
|
||||||
|
|
@ -9,10 +10,17 @@
|
||||||
|
|
||||||
[node name="EnemyB" type="CharacterBody3D" parent="."]
|
[node name="EnemyB" type="CharacterBody3D" parent="."]
|
||||||
script = ExtResource("1_uehkb")
|
script = ExtResource("1_uehkb")
|
||||||
health = 2
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyB"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyB"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
|
||||||
shape = SubResource("SphereShape3D_7frlh")
|
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)
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,29 @@
|
||||||
extends CharacterBody3D
|
extends CharacterBody3D
|
||||||
class_name Enemy
|
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 speed : int = 2
|
||||||
@export var health : int = 15 :
|
@export var max_life : int = 10
|
||||||
|
var health : int = 0 :
|
||||||
set(value):
|
set(value):
|
||||||
health = value
|
health = value
|
||||||
if health <= 0 and is_alive:
|
if health >= max_life and is_alive:
|
||||||
death()
|
death()
|
||||||
|
|
||||||
@onready var Path : PathFollow3D = get_parent()
|
@onready var Path : PathFollow3D = get_parent()
|
||||||
|
|
||||||
var is_alive : bool = true
|
var is_alive : bool = true
|
||||||
|
|
||||||
#func _ready() -> void:
|
func _ready() -> void:
|
||||||
#$HealthBar3D.set_up(health)
|
$HealthBar3D.set_up(health, max_life)
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
|
if !is_alive:
|
||||||
|
return
|
||||||
|
|
||||||
Path.set_progress(Path.get_progress() + speed * delta)
|
Path.set_progress(Path.get_progress() + speed * delta)
|
||||||
|
|
||||||
if Path.get_progress_ratio() >= 0.99:
|
if Path.get_progress_ratio() >= 0.99:
|
||||||
|
|
@ -24,12 +32,17 @@ func _physics_process(delta: float) -> void:
|
||||||
|
|
||||||
|
|
||||||
func take_damage(damage : int) -> void:
|
func take_damage(damage : int) -> void:
|
||||||
health -= damage
|
health += damage
|
||||||
#$HealthBar3D.update(health)
|
$HealthBar3D.update(health)
|
||||||
|
|
||||||
|
|
||||||
func death() -> void:
|
func death() -> void:
|
||||||
is_alive = false
|
is_alive = false
|
||||||
#Global.enemies_alive -= 1
|
#Global.enemies_alive -= 1
|
||||||
#Global.money += 50
|
#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()
|
Path.queue_free()
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bd7ed8dvc7m0v"
|
uid="uid://bd7ed8dvc7m0v"
|
||||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://icon.svg"
|
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]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|
@ -31,7 +32,7 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
svg/scale=1.0
|
svg/scale=1.0
|
||||||
editor/scale_with_editor_scale=false
|
editor/scale_with_editor_scale=false
|
||||||
editor/convert_colors_with_editor_theme=false
|
editor/convert_colors_with_editor_theme=false
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ config/icon="res://icon.svg"
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
GameManager="*res://Globals/GameManager.gd"
|
GameManager="*res://Globals/GameManager.gd"
|
||||||
|
EventBus="*res://Globals/EventBus.gd"
|
||||||
|
|
||||||
[file_customization]
|
[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)
|
"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"
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ func spawn_next_wave() -> void:
|
||||||
$SpawnTimer.start(current_wave.wait_time_before_next_wave)
|
$SpawnTimer.start(current_wave.wait_time_before_next_wave)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
spawn_manager()
|
spawn_manager()
|
||||||
|
|
||||||
|
|
|
||||||
16
world.gd
|
|
@ -5,9 +5,12 @@ extends Node3D
|
||||||
@onready var cam : Camera3D = $Camera3D
|
@onready var cam : Camera3D = $Camera3D
|
||||||
@onready var selector : Node3D = $Selector
|
@onready var selector : Node3D = $Selector
|
||||||
|
|
||||||
|
var in_build_menu : bool = false
|
||||||
|
|
||||||
#func _ready() -> void:
|
func _ready() -> void:
|
||||||
#$Spawner.spawn_next_wave()
|
$Spawner.spawn_next_wave()
|
||||||
|
$CanvasLayer/UI/ShopPanel.visible = in_build_menu
|
||||||
|
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
handle_player_controls()
|
handle_player_controls()
|
||||||
|
|
@ -43,3 +46,12 @@ func build_tower(scene : PackedScene) -> void:
|
||||||
var temp_cannon : Tower = scene.instantiate()
|
var temp_cannon : Tower = scene.instantiate()
|
||||||
add_child(temp_cannon)
|
add_child(temp_cannon)
|
||||||
temp_cannon.global_position = selector.global_position
|
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
|
||||||
|
|
|
||||||
23
world.tscn
|
|
@ -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="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"]
|
[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="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://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="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"]
|
[sub_resource type="Curve3D" id="Curve3D_aqk2v"]
|
||||||
_data = {
|
_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)
|
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)
|
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="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"]
|
||||||
|
|
|
||||||