Merge branch 'main' of github.com:MarcEricMartel/Game-Jam-A23
This commit is contained in:
		@@ -5,19 +5,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[node name="BatSpawnable" instance=ExtResource("1_verf7")]
 | 
					[node name="BatSpawnable" instance=ExtResource("1_verf7")]
 | 
				
			||||||
maxHp = 10
 | 
					maxHp = 10
 | 
				
			||||||
attackSpeed = 10.0
 | 
					attackSpeed = 50.0
 | 
				
			||||||
speed = 2000.0
 | 
					speed = 4000.0
 | 
				
			||||||
damage = 1
 | 
					damage = 1
 | 
				
			||||||
priority = 1
 | 
					priority = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AnimatedSprite2D" parent="." index="0"]
 | 
					[node name="AnimatedSprite2D" parent="." index="0"]
 | 
				
			||||||
frame_progress = 0.482614
 | 
					frame_progress = 0.482614
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AttackCollision" parent="Attack" index="0"]
 | 
					[node name="AI" parent="." index="4"]
 | 
				
			||||||
position = Vector2(8, 1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="DamageCollision" parent="Attack" index="1"]
 | 
					 | 
				
			||||||
position = Vector2(10, 1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="AI" parent="." index="3"]
 | 
					 | 
				
			||||||
script = ExtResource("2_x3ldf")
 | 
					script = ExtResource("2_x3ldf")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,17 +1,21 @@
 | 
				
			|||||||
class_name TemplateSpawnable
 | 
					class_name TemplateSpawnable
 | 
				
			||||||
extends CharacterBody2D
 | 
					extends CharacterBody2D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const ATTACK_COOLDOWN : float = 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@export var maxHp : int = 0
 | 
					@export var maxHp : int = 0
 | 
				
			||||||
@export var attackSpeed : float = 0
 | 
					@export var attackSpeed : float = 0
 | 
				
			||||||
@export var speed : float = 0
 | 
					@export var speed : float = 0
 | 
				
			||||||
@export var damage : int = 0
 | 
					@export var damage : int = 0
 | 
				
			||||||
@export var priority : int = 0
 | 
					@export var priority : int = 0
 | 
				
			||||||
 | 
					@export var cost : int = 0
 | 
				
			||||||
 | 
					@export var minSpawnRange : float = 0
 | 
				
			||||||
@export var canAttack : bool = true
 | 
					@export var canAttack : bool = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@onready var ai : Node = $AI
 | 
					@onready var ai : Node = $AI
 | 
				
			||||||
@onready var animatedSprite : AnimatedSprite2D = $AnimatedSprite2D
 | 
					@onready var animatedSprite : AnimatedSprite2D = $AnimatedSprite2D
 | 
				
			||||||
@onready var attackCollision : CollisionShape2D = $Attack/AttackCollision
 | 
					@onready var attackArea : Area2D = $AttackArea
 | 
				
			||||||
@onready var damageCollision : CollisionShape2D = $Attack/DamageCollision
 | 
					@onready var damageCollision : CollisionShape2D = $DamageArea/DamageCollision
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var isAlive : bool = true
 | 
					var isAlive : bool = true
 | 
				
			||||||
var isFacingLeft : bool = false
 | 
					var isFacingLeft : bool = false
 | 
				
			||||||
@@ -35,24 +39,38 @@ func _process(delta):
 | 
				
			|||||||
	else:
 | 
						else:
 | 
				
			||||||
		direction = Vector2.ZERO
 | 
							direction = Vector2.ZERO
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if !isFacingLeft && velocity.x >= 0:
 | 
						if !isFacingLeft && direction.x < 0:
 | 
				
			||||||
		isFacingLeft = true
 | 
							isFacingLeft = true
 | 
				
			||||||
		scale = Vector2(1, 1)
 | 
					 | 
				
			||||||
	elif isFacingLeft && velocity.x < 0:
 | 
					 | 
				
			||||||
		isFacingLeft = false
 | 
					 | 
				
			||||||
		scale = Vector2(-1, 1)
 | 
							scale = Vector2(-1, 1)
 | 
				
			||||||
 | 
						elif isFacingLeft && direction.x > 0:
 | 
				
			||||||
 | 
							isFacingLeft = false
 | 
				
			||||||
 | 
							scale = Vector2(1, 1)
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	velocity = direction * speed * delta
 | 
						velocity = direction * speed * delta
 | 
				
			||||||
	move_and_slide()
 | 
						move_and_slide()
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
func attack():
 | 
						if cooldown > 0:
 | 
				
			||||||
	if !canAttack || !isAlive:
 | 
							if cooldown - attackSpeed * delta <= 0:
 | 
				
			||||||
 | 
								cooldown = 0
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								cooldown -= attackSpeed * delta
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
						attemptAttack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func attemptAttack():
 | 
				
			||||||
 | 
						if !canAttack || !isAlive || cooldown > 0:
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 | 
						if attackArea.overlaps_body(enemy):
 | 
				
			||||||
 | 
							attack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func attack():
 | 
				
			||||||
 | 
						cooldown = ATTACK_COOLDOWN
 | 
				
			||||||
	animatedSprite.play("attack")
 | 
						animatedSprite.play("attack")
 | 
				
			||||||
 | 
						damageCollision.disabled = false
 | 
				
			||||||
	animatedSprite.connect("animation_finished", endAttack)
 | 
						animatedSprite.connect("animation_finished", endAttack)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func endAttack():
 | 
					func endAttack():
 | 
				
			||||||
	
 | 
						damageCollision.disabled = true
 | 
				
			||||||
	animatedSprite.play("default")
 | 
						animatedSprite.play("default")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func receive_damage(dmg):
 | 
					func receive_damage(dmg):
 | 
				
			||||||
@@ -67,7 +85,10 @@ func receive_damage(dmg):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func die():
 | 
					func die():
 | 
				
			||||||
	isAlive = false
 | 
						isAlive = false
 | 
				
			||||||
 | 
						damageCollision.disabled = true
 | 
				
			||||||
 | 
						animatedSprite.stop()
 | 
				
			||||||
	animatedSprite.play("death")
 | 
						animatedSprite.play("death")
 | 
				
			||||||
 | 
						animatedSprite.disconnect("animation_finished", endAttack)
 | 
				
			||||||
	animatedSprite.connect("animation_finished", fadeOut)
 | 
						animatedSprite.connect("animation_finished", fadeOut)
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
func fadeOut():
 | 
					func fadeOut():
 | 
				
			||||||
@@ -78,3 +99,8 @@ func fadeOut():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func clean():
 | 
					func clean():
 | 
				
			||||||
	queue_free()
 | 
						queue_free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_damage_area_body_entered(body):
 | 
				
			||||||
 | 
						if body == enemy:
 | 
				
			||||||
 | 
							enemy.receive_damage(damage)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -245,15 +245,17 @@ frame_progress = 0.387978
 | 
				
			|||||||
rotation = 1.5708
 | 
					rotation = 1.5708
 | 
				
			||||||
shape = SubResource("CapsuleShape2D_5aviq")
 | 
					shape = SubResource("CapsuleShape2D_5aviq")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Attack" type="Area2D" parent="."]
 | 
					[node name="AttackArea" type="Area2D" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AttackCollision" type="CollisionShape2D" parent="Attack"]
 | 
					[node name="AttackCollision" type="CollisionShape2D" parent="AttackArea"]
 | 
				
			||||||
position = Vector2(1, 1)
 | 
					position = Vector2(1, 1)
 | 
				
			||||||
rotation = 1.5708
 | 
					rotation = 1.5708
 | 
				
			||||||
shape = SubResource("CapsuleShape2D_2l8j3")
 | 
					shape = SubResource("CapsuleShape2D_2l8j3")
 | 
				
			||||||
debug_color = Color(0.678431, 0.556863, 0.137255, 0.419608)
 | 
					debug_color = Color(0.678431, 0.556863, 0.137255, 0.419608)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DamageCollision" type="CollisionShape2D" parent="Attack"]
 | 
					[node name="DamageArea" type="Area2D" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="DamageCollision" type="CollisionShape2D" parent="DamageArea"]
 | 
				
			||||||
position = Vector2(2, 2)
 | 
					position = Vector2(2, 2)
 | 
				
			||||||
rotation = 1.5708
 | 
					rotation = 1.5708
 | 
				
			||||||
shape = SubResource("CapsuleShape2D_o2kl1")
 | 
					shape = SubResource("CapsuleShape2D_o2kl1")
 | 
				
			||||||
@@ -261,3 +263,5 @@ disabled = true
 | 
				
			|||||||
debug_color = Color(0.639216, 0, 0.156863, 0.419608)
 | 
					debug_color = Color(0.639216, 0, 0.156863, 0.419608)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AI" type="Node" parent="."]
 | 
					[node name="AI" type="Node" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[connection signal="body_entered" from="DamageArea" to="." method="_on_damage_area_body_entered"]
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user