Compare commits
2 Commits
bc582efb90
...
f2b58d7314
| Author | SHA1 | Date | |
|---|---|---|---|
| f2b58d7314 | |||
| 6482dab9b6 |
@@ -17,6 +17,12 @@ var desired_rotation: float = 0
|
|||||||
# Resources / money
|
# Resources / money
|
||||||
var resources: int = 0
|
var resources: int = 0
|
||||||
|
|
||||||
|
# Health
|
||||||
|
var healthPoints: int = 100
|
||||||
|
var isAlive: bool = true
|
||||||
|
@onready var invulnerable_cooldown_timer: Timer = $InvulnerableCooldownTimer
|
||||||
|
var hasiframes: bool = false # only used for iframe after collision for now
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var screen_size = get_viewport_rect().size
|
var screen_size = get_viewport_rect().size
|
||||||
GameManager.init_screen_size(screen_size.x, screen_size.y)
|
GameManager.init_screen_size(screen_size.x, screen_size.y)
|
||||||
@@ -27,17 +33,19 @@ func _ready() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
velocity = Vector2.ZERO
|
# TODO: Connects this to some respawn screen
|
||||||
if Input.is_action_pressed("move_right"):
|
if isAlive:
|
||||||
velocity.x += 1
|
velocity = Vector2.ZERO
|
||||||
if Input.is_action_pressed("move_left"):
|
if Input.is_action_pressed("move_right"):
|
||||||
velocity.x -= 1
|
velocity.x += 1
|
||||||
if Input.is_action_pressed("move_down"):
|
if Input.is_action_pressed("move_left"):
|
||||||
velocity.y += 1
|
velocity.x -= 1
|
||||||
if Input.is_action_pressed("move_up"):
|
if Input.is_action_pressed("move_down"):
|
||||||
velocity.y -= 1
|
velocity.y += 1
|
||||||
if Input.is_action_pressed("try_attack"):
|
if Input.is_action_pressed("move_up"):
|
||||||
try_attack()
|
velocity.y -= 1
|
||||||
|
if Input.is_action_pressed("try_attack"):
|
||||||
|
try_attack()
|
||||||
|
|
||||||
|
|
||||||
if not velocity.is_zero_approx():
|
if not velocity.is_zero_approx():
|
||||||
@@ -66,7 +74,7 @@ func _on_attack_timeout() -> void:
|
|||||||
sprite.play("default")
|
sprite.play("default")
|
||||||
attack_cooldown_timer.start()
|
attack_cooldown_timer.start()
|
||||||
|
|
||||||
func _on_cooldown_timeout() -> void:
|
func _on_attack_cooldown_timeout() -> void:
|
||||||
can_attack = true
|
can_attack = true
|
||||||
|
|
||||||
func _on_attack_hit(body: Node2D) -> void:
|
func _on_attack_hit(body: Node2D) -> void:
|
||||||
@@ -81,10 +89,19 @@ func _on_attack_hit(body: Node2D) -> void:
|
|||||||
await get_tree().create_timer(0.2).timeout
|
await get_tree().create_timer(0.2).timeout
|
||||||
sprite.play("default")
|
sprite.play("default")
|
||||||
# TODO: resource handling logic
|
# TODO: resource handling logic
|
||||||
|
|
||||||
|
func _on_invulnerable_cooldown_timeout() -> void:
|
||||||
|
hasiframes = false
|
||||||
|
|
||||||
func handle_damage(dmg: int, src: Node) -> void:
|
func handle_damage(dmg: int, src: Node) -> void:
|
||||||
# TODO: damage logic
|
# TODO: enhanced damage logic (src entity effects?)
|
||||||
pass
|
if not hasiframes:
|
||||||
|
print("Player took %d damage." % dmg)
|
||||||
|
healthPoints -= dmg
|
||||||
|
hasiframes = true
|
||||||
|
invulnerable_cooldown_timer.start()
|
||||||
|
if healthPoints <= 0:
|
||||||
|
isAlive = false
|
||||||
|
|
||||||
func collect_resource(damnt: int) -> void:
|
func collect_resource(damnt: int) -> void:
|
||||||
resources += damnt
|
resources += damnt
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ one_shot = true
|
|||||||
[node name="AttackCooldownTimer" type="Timer" parent="." unique_id=1056439284]
|
[node name="AttackCooldownTimer" type="Timer" parent="." unique_id=1056439284]
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
|
[node name="InvulnerableCooldownTimer" type="Timer" parent="." unique_id=311411582]
|
||||||
|
one_shot = true
|
||||||
|
|
||||||
[connection signal="body_entered" from="AttackArea" to="." method="_on_attack_hit"]
|
[connection signal="body_entered" from="AttackArea" to="." method="_on_attack_hit"]
|
||||||
[connection signal="timeout" from="AttackTimer" to="." method="_on_attack_timeout"]
|
[connection signal="timeout" from="AttackTimer" to="." method="_on_attack_timeout"]
|
||||||
[connection signal="timeout" from="AttackCooldownTimer" to="." method="_on_cooldown_timeout"]
|
[connection signal="timeout" from="AttackCooldownTimer" to="." method="_on_attack_cooldown_timeout"]
|
||||||
|
[connection signal="timeout" from="InvulnerableCooldownTimer" to="." method="_on_invulnerable_cooldown_timeout"]
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
@abstract
|
|
||||||
extends CharacterBody2D
|
extends CharacterBody2D
|
||||||
class_name NPC2D
|
class_name NPC2D
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
@abstract
|
|
||||||
extends NPC2D
|
extends NPC2D
|
||||||
class_name AbstractPrey2D
|
class_name AbstractPrey2D
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user