summaryrefslogtreecommitdiff
path: root/Scripts/Player/PlayerAction.gd
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2025-10-20 01:43:48 +0800
committeraltaf-creator <dev@altafcreator.com>2025-10-20 01:43:48 +0800
commit466bec0b724632f6dd2e1555a7bd58ffc1dd0458 (patch)
treed6645ea11914edeec645299fa497a9e542dbaec7 /Scripts/Player/PlayerAction.gd
Jam version.
Diffstat (limited to 'Scripts/Player/PlayerAction.gd')
-rw-r--r--Scripts/Player/PlayerAction.gd46
1 files changed, 46 insertions, 0 deletions
diff --git a/Scripts/Player/PlayerAction.gd b/Scripts/Player/PlayerAction.gd
new file mode 100644
index 0000000..989823a
--- /dev/null
+++ b/Scripts/Player/PlayerAction.gd
@@ -0,0 +1,46 @@
+extends Node
+class_name PlayerAction
+
+@export var plr_sprite : Sprite2D
+@export var hand_pivot : Node2D
+@export var curr_weapon : Node2D
+@export var machette_pivot : Node2D
+@export var machette : Node2D
+
+var can_attack : bool = true
+
+var delta_pos : Vector2
+
+func _process(_delta: float) -> void:
+ if UIConnector.is_inv_open:
+ return
+
+ var hpos : Vector2 = hand_pivot.get_global_transform_with_canvas().get_origin()
+ var mouse_position : Vector2 = get_viewport().get_mouse_position()
+ delta_pos = mouse_position - hpos
+
+ var angle = rad_to_deg(atan2(delta_pos.y, delta_pos.x)) - 90
+ hand_pivot.rotation_degrees = angle
+ if angle <= 0 && angle >= -180:
+ if machette_pivot.rotation_degrees < 0: machette_pivot.rotation_degrees *= -1
+ if machette.scale.x < 0: machette.scale.x *= -1
+ elif (angle <= -180 && angle >= -270) || (angle >= 0 && angle <= 90):
+ if machette_pivot.rotation_degrees > 0: machette_pivot.rotation_degrees *= -1
+ if machette.scale.x > 0: machette.scale.x *= -1
+
+func _input(_event: InputEvent) -> void:
+ if UIConnector.is_inv_open:
+ return
+
+ if Input.is_action_just_pressed("action") && can_attack:
+ if delta_pos.x < 0 && !plr_sprite.flip_h:
+ $"../PlayerMovement".look_left(true)
+ elif delta_pos.x > 0 && plr_sprite.flip_h:
+ $"../PlayerMovement".look_right(true)
+
+ curr_weapon.action()
+ can_attack = false
+ $"Cooldown".start()
+
+func _on_cooldown_timeout() -> void:
+ can_attack = true