From 822d23ccca6a1782ebbaedde998f9f98bb490ed2 Mon Sep 17 00:00:00 2001 From: SondreElg Date: Sat, 4 Oct 2025 23:56:38 +0200 Subject: [PATCH] fix merge --- growth/level.tscn | 9 +++-- growth/player.gd | 88 ++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 90 insertions(+), 7 deletions(-) diff --git a/growth/level.tscn b/growth/level.tscn index 5542484..df0c965 100644 --- a/growth/level.tscn +++ b/growth/level.tscn @@ -1,11 +1,16 @@ -[gd_scene load_steps=4 format=3 uid="uid://cyr5hbucxlmm5"] +[gd_scene load_steps=5 format=4 uid="uid://c5qbqj52kr0aw"] [ext_resource type="PackedScene" uid="uid://dhhnr3xkxbxlu" path="res://player.tscn" id="1_vonw3"] [ext_resource type="PackedScene" uid="uid://bsv3h2lpv7h77" path="res://virus.tscn" id="2_oi3di"] -[ext_resource type="PackedScene" uid="uid://co8jnr2dew5ts" path="res://hand.tscn" id="3_oi3di"] +[ext_resource type="PackedScene" path="res://hand.tscn" id="3_oi3di"] +[ext_resource type="TileSet" uid="uid://c20bl25rqyf68" path="res://assets/tiles/new_tile_set.tres" id="4_0b4ue"] [node name="Level" type="Node2D"] +[node name="TileMapLayer" type="TileMapLayer" parent="."] +tile_map_data = PackedByteArray("AAD0//T/AgAAAAAAAAD0//X/AgACAAAAAAD0//b/AgAAAAAAAAD0//f/AgACAAAAAAD0//j/AgAAAAAAAAD0//n/AgACAAAAAAD0//r/AgACAAAAAAD0//v/AgAAAAAAAAD0//z/AgABAAAAAAD0//3/AgABAAAAAAD0//7/AgABAAAAAAD0////AgAAAAAAAAD0/wAAAgACAAAAAAD0/wEAAgABAAAAAAD0/wIAAgABAAAAAAD0/wMAAgAAAAAAAAD0/wQAAgABAAAAAAD0/wUAAgAAAAAAAAD0/wYAAgABAAAAAAD0/wcAAgACAAAAAAD0/wgAAgABAAAAAAD0/wkAAgACAAAAAAD0/woAAgACAAAAAAD0/wsAAgACAAAAAAD0/wwAAgACAAAAAAD1//T/AgACAAAAAAD1//X/AgAAAAAAAAD1//b/AgAAAAAAAAD1//f/AgACAAAAAAD1//j/AgAAAAAAAAD1//n/AgABAAAAAAD1//r/AgABAAAAAAD1//v/AgACAAAAAAD1//z/AgACAAAAAAD1//3/AgABAAAAAAD1//7/AgABAAAAAAD1////AgAAAAAAAAD1/wAAAgABAAAAAAD1/wEAAgACAAAAAAD1/wIAAgABAAAAAAD1/wMAAgABAAAAAAD1/wQAAgABAAAAAAD1/wUAAgACAAAAAAD1/wYAAgABAAAAAAD1/wcAAgACAAAAAAD1/wgAAgACAAAAAAD1/wkAAgACAAAAAAD1/woAAgAAAAAAAAD1/wsAAgABAAAAAAD1/wwAAgAAAAAAAAD2//T/AgACAAAAAAD2//X/AgAAAAAAAAD2//b/AgABAAAAAAD2//f/AgAAAAAAAAD2//j/AgABAAAAAAD2//n/AgAAAAAAAAD2//r/AgABAAAAAAD2//v/AgACAAAAAAD2//z/AgACAAAAAAD2//3/AgACAAAAAAD2//7/AgABAAAAAAD2////AgACAAAAAAD2/wAAAgACAAAAAAD2/wEAAgAAAAAAAAD2/wIAAgAAAAAAAAD2/wMAAgAAAAAAAAD2/wQAAgABAAAAAAD2/wUAAgABAAAAAAD2/wYAAgABAAAAAAD2/wcAAgABAAAAAAD2/wgAAgACAAAAAAD2/wkAAgACAAAAAAD2/woAAgAAAAAAAAD2/wsAAgABAAAAAAD2/wwAAgACAAAAAAD3//T/AgABAAAAAAD3//X/AgACAAAAAAD3//b/AgACAAAAAAD3//f/AgAAAAAAAAD3//j/AgABAAAAAAD3//n/AgAAAAAAAAD3//r/AgACAAAAAAD3//v/AgABAAAAAAD3//z/AgAAAAAAAAD3//3/AgABAAAAAAD3//7/AgABAAAAAAD3////AgAAAAAAAAD3/wAAAgABAAAAAAD3/wEAAgABAAAAAAD3/wIAAgAAAAAAAAD3/wMAAgAAAAAAAAD3/wQAAgAAAAAAAAD3/wUAAgABAAAAAAD3/wYAAgABAAAAAAD3/wcAAgACAAAAAAD3/wgAAgAAAAAAAAD3/wkAAgAAAAAAAAD3/woAAgABAAAAAAD3/wsAAgACAAAAAAD3/wwAAgAAAAAAAAD4//T/AgABAAAAAAD4//X/AgAAAAAAAAD4//b/AgAAAAAAAAD4//f/AgACAAAAAAD4//j/AgAAAAAAAAD4//n/AgABAAAAAAD4//r/AgACAAAAAAD4//v/AgAAAAAAAAD4//z/AgACAAAAAAD4//3/AgAAAAAAAAD4//7/AgAAAAAAAAD4////AgACAAAAAAD4/wAAAgAAAAAAAAD4/wEAAgABAAAAAAD4/wIAAgABAAAAAAD4/wMAAgABAAAAAAD4/wQAAgACAAAAAAD4/wUAAgACAAAAAAD4/wYAAgAAAAAAAAD4/wcAAgABAAAAAAD4/wgAAgABAAAAAAD4/wkAAgAAAAAAAAD4/woAAgAAAAAAAAD4/wsAAgABAAAAAAD4/wwAAgACAAAAAAD5//T/AgAAAAAAAAD5//X/AgABAAAAAAD5//b/AgABAAAAAAD5//f/AgAAAAAAAAD5//j/AgABAAAAAAD5//n/AgABAAAAAAD5//r/AgACAAAAAAD5//v/AgACAAAAAAD5//z/AgACAAAAAAD5//3/AgAAAAAAAAD5//7/AgAAAAAAAAD5////AgAAAAAAAAD5/wAAAgABAAAAAAD5/wEAAgACAAAAAAD5/wIAAgAAAAAAAAD5/wMAAgABAAAAAAD5/wQAAgABAAAAAAD5/wUAAgABAAAAAAD5/wYAAgABAAAAAAD5/wcAAgABAAAAAAD5/wgAAgAAAAAAAAD5/wkAAgACAAAAAAD5/woAAgACAAAAAAD5/wsAAgABAAAAAAD5/wwAAgAAAAAAAAD6//T/AgACAAAAAAD6//X/AgACAAAAAAD6//b/AgAAAAAAAAD6//f/AgABAAAAAAD6//j/AgACAAAAAAD6//n/AgABAAAAAAD6//r/AgACAAAAAAD6//v/AgACAAAAAAD6//z/AgABAAAAAAD6//3/AgAAAAAAAAD6//7/AgABAAAAAAD6////AgAAAAAAAAD6/wAAAgACAAAAAAD6/wEAAgAAAAAAAAD6/wIAAgABAAAAAAD6/wMAAgAAAAAAAAD6/wQAAgACAAAAAAD6/wUAAgACAAAAAAD6/wYAAgACAAAAAAD6/wcAAgABAAAAAAD6/wgAAgABAAAAAAD6/wkAAgACAAAAAAD6/woAAgAAAAAAAAD6/wsAAgACAAAAAAD6/wwAAgACAAAAAAD7//T/AgACAAAAAAD7//X/AgABAAAAAAD7//b/AgAAAAAAAAD7//f/AgABAAAAAAD7//j/AgAAAAAAAAD7//n/AgACAAAAAAD7//r/AgACAAAAAAD7//v/AgAAAAAAAAD7//z/AgACAAAAAAD7//3/AgABAAAAAAD7//7/AgACAAAAAAD7////AgACAAAAAAD7/wAAAgACAAAAAAD7/wEAAgACAAAAAAD7/wIAAgABAAAAAAD7/wMAAgAAAAAAAAD7/wQAAgABAAAAAAD7/wUAAgAAAAAAAAD7/wYAAgABAAAAAAD7/wcAAgACAAAAAAD7/wgAAgABAAAAAAD7/wkAAgACAAAAAAD7/woAAgAAAAAAAAD7/wsAAgACAAAAAAD7/wwAAgACAAAAAAD8//T/AgACAAAAAAD8//X/AgABAAAAAAD8//b/AgACAAAAAAD8//f/AgAAAAAAAAD8//j/AgACAAAAAAD8//n/AgABAAAAAAD8//r/AgACAAAAAAD8//v/AgAAAAAAAAD8//z/AgACAAAAAAD8//3/AgABAAAAAAD8//7/AgACAAAAAAD8////AgACAAAAAAD8/wAAAgACAAAAAAD8/wEAAgAAAAAAAAD8/wIAAgAAAAAAAAD8/wMAAgABAAAAAAD8/wQAAgABAAAAAAD8/wUAAgACAAAAAAD8/wYAAgABAAAAAAD8/wcAAgACAAAAAAD8/wgAAgABAAAAAAD8/wkAAgAAAAAAAAD8/woAAgAAAAAAAAD8/wsAAgAAAAAAAAD8/wwAAgACAAAAAAD9//T/AgAAAAAAAAD9//X/AgACAAAAAAD9//b/AgACAAAAAAD9//f/AgAAAAAAAAD9//j/AgABAAAAAAD9//n/AgAAAAAAAAD9//r/AgABAAAAAAD9//v/AgACAAAAAAD9//z/AgABAAAAAAD9//3/AgAAAAAAAAD9//7/AgAAAAAAAAD9////AgABAAAAAAD9/wAAAgACAAAAAAD9/wEAAgABAAAAAAD9/wIAAgACAAAAAAD9/wMAAgAAAAAAAAD9/wQAAgACAAAAAAD9/wUAAgABAAAAAAD9/wYAAgAAAAAAAAD9/wcAAgABAAAAAAD9/wgAAgACAAAAAAD9/wkAAgACAAAAAAD9/woAAgAAAAAAAAD9/wsAAgAAAAAAAAD9/wwAAgAAAAAAAAD+//T/AgAAAAAAAAD+//X/AgACAAAAAAD+//b/AgAAAAAAAAD+//f/AgABAAAAAAD+//j/AgAAAAAAAAD+//n/AgAAAAAAAAD+//r/AgACAAAAAAD+//v/AgAAAAAAAAD+//z/AgAAAAAAAAD+//3/AgAAAAAAAAD+//7/AgACAAAAAAD+////AgACAAAAAAD+/wAAAgABAAAAAAD+/wEAAgABAAAAAAD+/wIAAgAAAAAAAAD+/wMAAgAAAAAAAAD+/wQAAgAAAAAAAAD+/wUAAgACAAAAAAD+/wYAAgACAAAAAAD+/wcAAgABAAAAAAD+/wgAAgACAAAAAAD+/wkAAgACAAAAAAD+/woAAgACAAAAAAD+/wsAAgACAAAAAAD+/wwAAgABAAAAAAD///T/AgACAAAAAAD///X/AgAAAAAAAAD///b/AgAAAAAAAAD///f/AgAAAAAAAAD///j/AgACAAAAAAD///n/AgACAAAAAAD///r/AgACAAAAAAD///v/AgABAAAAAAD///z/AgABAAAAAAD///3/AgACAAAAAAD///7/AgACAAAAAAD/////AgACAAAAAAD//wAAAgABAAAAAAD//wEAAgACAAAAAAD//wIAAgAAAAAAAAD//wMAAgABAAAAAAD//wQAAgACAAAAAAD//wUAAgACAAAAAAD//wYAAgACAAAAAAD//wcAAgAAAAAAAAD//wgAAgACAAAAAAD//wkAAgAAAAAAAAD//woAAgAAAAAAAAD//wsAAgABAAAAAAD//wwAAgACAAAAAAAAAPT/AgABAAAAAAAAAPX/AgAAAAAAAAAAAPb/AgABAAAAAAAAAPf/AgACAAAAAAAAAPj/AgAAAAAAAAAAAPn/AgACAAAAAAAAAPr/AgACAAAAAAAAAPv/AgABAAAAAAAAAPz/AgAAAAAAAAAAAP3/AgACAAAAAAAAAP7/AgABAAAAAAAAAP//AgAAAAAAAAAAAAAAAgAAAAAAAAAAAAEAAgAAAAAAAAAAAAIAAgABAAAAAAAAAAMAAgACAAAAAAAAAAQAAgACAAAAAAAAAAUAAgABAAAAAAAAAAYAAgAAAAAAAAAAAAcAAgAAAAAAAAAAAAgAAgACAAAAAAAAAAkAAgABAAAAAAAAAAoAAgABAAAAAAAAAAsAAgABAAAAAAAAAAwAAgABAAAAAAABAPT/AgABAAAAAAABAPX/AgAAAAAAAAABAPb/AgACAAAAAAABAPf/AgACAAAAAAABAPj/AgAAAAAAAAABAPn/AgAAAAAAAAABAPr/AgACAAAAAAABAPv/AgABAAAAAAABAPz/AgABAAAAAAABAP3/AgAAAAAAAAABAP7/AgAAAAAAAAABAP//AgACAAAAAAABAAAAAgAAAAAAAAABAAEAAgACAAAAAAABAAIAAgABAAAAAAABAAMAAgABAAAAAAABAAQAAgABAAAAAAABAAUAAgABAAAAAAABAAYAAgAAAAAAAAABAAcAAgAAAAAAAAABAAgAAgACAAAAAAABAAkAAgAAAAAAAAABAAoAAgACAAAAAAABAAsAAgAAAAAAAAABAAwAAgACAAAAAAACAPT/AgAAAAAAAAACAPX/AgAAAAAAAAACAPb/AgACAAAAAAACAPf/AgACAAAAAAACAPj/AgACAAAAAAACAPn/AgAAAAAAAAACAPr/AgABAAAAAAACAPv/AgACAAAAAAACAPz/AgACAAAAAAACAP3/AgAAAAAAAAACAP7/AgACAAAAAAACAP//AgABAAAAAAACAAAAAgACAAAAAAACAAEAAgAAAAAAAAACAAIAAgACAAAAAAACAAMAAgAAAAAAAAACAAQAAgABAAAAAAACAAUAAgACAAAAAAACAAYAAgAAAAAAAAACAAcAAgACAAAAAAACAAgAAgACAAAAAAACAAkAAgABAAAAAAACAAoAAgACAAAAAAACAAsAAgABAAAAAAACAAwAAgAAAAAAAAADAPT/AgABAAAAAAADAPX/AgAAAAAAAAADAPb/AgACAAAAAAADAPf/AgACAAAAAAADAPj/AgACAAAAAAADAPn/AgAAAAAAAAADAPr/AgABAAAAAAADAPv/AgABAAAAAAADAPz/AgABAAAAAAADAP3/AgAAAAAAAAADAP7/AgACAAAAAAADAP//AgAAAAAAAAADAAAAAgABAAAAAAADAAEAAgACAAAAAAADAAIAAgABAAAAAAADAAMAAgAAAAAAAAADAAQAAgABAAAAAAADAAUAAgACAAAAAAADAAYAAgABAAAAAAADAAcAAgACAAAAAAADAAgAAgAAAAAAAAADAAkAAgABAAAAAAADAAoAAgAAAAAAAAADAAsAAgAAAAAAAAADAAwAAgABAAAAAAAEAPT/AgACAAAAAAAEAPX/AgACAAAAAAAEAPb/AgAAAAAAAAAEAPf/AgABAAAAAAAEAPj/AgABAAAAAAAEAPn/AgABAAAAAAAEAPr/AgAAAAAAAAAEAPv/AgAAAAAAAAAEAPz/AgAAAAAAAAAEAP3/AgABAAAAAAAEAP7/AgABAAAAAAAEAP//AgACAAAAAAAEAAAAAgAAAAAAAAAEAAEAAgACAAAAAAAEAAIAAgACAAAAAAAEAAMAAgAAAAAAAAAEAAQAAgAAAAAAAAAEAAUAAgACAAAAAAAEAAYAAgABAAAAAAAEAAcAAgACAAAAAAAEAAgAAgAAAAAAAAAEAAkAAgABAAAAAAAEAAoAAgACAAAAAAAEAAsAAgACAAAAAAAEAAwAAgAAAAAAAAAFAPT/AgABAAAAAAAFAPX/AgACAAAAAAAFAPb/AgABAAAAAAAFAPf/AgAAAAAAAAAFAPj/AgABAAAAAAAFAPn/AgACAAAAAAAFAPr/AgACAAAAAAAFAPv/AgABAAAAAAAFAPz/AgABAAAAAAAFAP3/AgABAAAAAAAFAP7/AgACAAAAAAAFAP//AgACAAAAAAAFAAAAAgABAAAAAAAFAAEAAgACAAAAAAAFAAIAAgACAAAAAAAFAAMAAgAAAAAAAAAFAAQAAgAAAAAAAAAFAAUAAgAAAAAAAAAFAAYAAgAAAAAAAAAFAAcAAgAAAAAAAAAFAAgAAgACAAAAAAAFAAkAAgACAAAAAAAFAAoAAgACAAAAAAAFAAsAAgABAAAAAAAFAAwAAgABAAAAAAAGAPT/AgAAAAAAAAAGAPX/AgAAAAAAAAAGAPb/AgAAAAAAAAAGAPf/AgABAAAAAAAGAPj/AgABAAAAAAAGAPn/AgACAAAAAAAGAPr/AgAAAAAAAAAGAPv/AgACAAAAAAAGAPz/AgABAAAAAAAGAP3/AgABAAAAAAAGAP7/AgABAAAAAAAGAP//AgABAAAAAAAGAAAAAgACAAAAAAAGAAEAAgABAAAAAAAGAAIAAgAAAAAAAAAGAAMAAgABAAAAAAAGAAQAAgAAAAAAAAAGAAUAAgACAAAAAAAGAAYAAgACAAAAAAAGAAcAAgACAAAAAAAGAAgAAgAAAAAAAAAGAAkAAgAAAAAAAAAGAAoAAgAAAAAAAAAGAAsAAgAAAAAAAAAGAAwAAgACAAAAAAAHAPT/AgAAAAAAAAAHAPX/AgAAAAAAAAAHAPb/AgABAAAAAAAHAPf/AgAAAAAAAAAHAPj/AgAAAAAAAAAHAPn/AgABAAAAAAAHAPr/AgABAAAAAAAHAPv/AgACAAAAAAAHAPz/AgABAAAAAAAHAP3/AgAAAAAAAAAHAP7/AgABAAAAAAAHAP//AgABAAAAAAAHAAAAAgACAAAAAAAHAAEAAgACAAAAAAAHAAIAAgAAAAAAAAAHAAMAAgABAAAAAAAHAAQAAgABAAAAAAAHAAUAAgABAAAAAAAHAAYAAgABAAAAAAAHAAcAAgACAAAAAAAHAAgAAgABAAAAAAAHAAkAAgAAAAAAAAAHAAoAAgAAAAAAAAAHAAsAAgACAAAAAAAHAAwAAgACAAAAAAAIAPT/AgAAAAAAAAAIAPX/AgACAAAAAAAIAPb/AgAAAAAAAAAIAPf/AgABAAAAAAAIAPj/AgABAAAAAAAIAPn/AgACAAAAAAAIAPr/AgACAAAAAAAIAPv/AgACAAAAAAAIAPz/AgACAAAAAAAIAP3/AgAAAAAAAAAIAP7/AgAAAAAAAAAIAP//AgACAAAAAAAIAAAAAgAAAAAAAAAIAAEAAgABAAAAAAAIAAIAAgACAAAAAAAIAAMAAgAAAAAAAAAIAAQAAgACAAAAAAAIAAUAAgAAAAAAAAAIAAYAAgACAAAAAAAIAAcAAgABAAAAAAAIAAgAAgABAAAAAAAIAAkAAgACAAAAAAAIAAoAAgAAAAAAAAAIAAsAAgABAAAAAAAIAAwAAgABAAAAAAAJAPT/AgAAAAAAAAAJAPX/AgABAAAAAAAJAPb/AgAAAAAAAAAJAPf/AgAAAAAAAAAJAPj/AgAAAAAAAAAJAPn/AgABAAAAAAAJAPr/AgABAAAAAAAJAPv/AgAAAAAAAAAJAPz/AgAAAAAAAAAJAP3/AgACAAAAAAAJAP7/AgABAAAAAAAJAP//AgABAAAAAAAJAAAAAgAAAAAAAAAJAAEAAgAAAAAAAAAJAAIAAgACAAAAAAAJAAMAAgACAAAAAAAJAAQAAgAAAAAAAAAJAAUAAgACAAAAAAAJAAYAAgABAAAAAAAJAAcAAgACAAAAAAAJAAgAAgACAAAAAAAJAAkAAgAAAAAAAAAJAAoAAgAAAAAAAAAJAAsAAgACAAAAAAAJAAwAAgABAAAAAAAKAPT/AgACAAAAAAAKAPX/AgACAAAAAAAKAPb/AgACAAAAAAAKAPf/AgAAAAAAAAAKAPj/AgAAAAAAAAAKAPn/AgACAAAAAAAKAPr/AgAAAAAAAAAKAPv/AgAAAAAAAAAKAPz/AgACAAAAAAAKAP3/AgAAAAAAAAAKAP7/AgABAAAAAAAKAP//AgACAAAAAAAKAAAAAgAAAAAAAAAKAAEAAgACAAAAAAAKAAIAAgACAAAAAAAKAAMAAgAAAAAAAAAKAAQAAgAAAAAAAAAKAAUAAgABAAAAAAAKAAYAAgAAAAAAAAAKAAcAAgACAAAAAAAKAAgAAgACAAAAAAAKAAkAAgABAAAAAAAKAAoAAgAAAAAAAAAKAAsAAgABAAAAAAAKAAwAAgAAAAAAAAALAPT/AgABAAAAAAALAPX/AgABAAAAAAALAPb/AgAAAAAAAAALAPf/AgABAAAAAAALAPj/AgACAAAAAAALAPn/AgAAAAAAAAALAPr/AgABAAAAAAALAPv/AgABAAAAAAALAPz/AgACAAAAAAALAP3/AgACAAAAAAALAP7/AgACAAAAAAALAP//AgAAAAAAAAALAAAAAgACAAAAAAALAAEAAgABAAAAAAALAAIAAgABAAAAAAALAAMAAgABAAAAAAALAAQAAgACAAAAAAALAAUAAgABAAAAAAALAAYAAgABAAAAAAALAAcAAgABAAAAAAALAAgAAgABAAAAAAALAAkAAgAAAAAAAAALAAoAAgACAAAAAAALAAsAAgABAAAAAAALAAwAAgABAAAAAAAMAPT/AgACAAAAAAAMAPX/AgABAAAAAAAMAPb/AgACAAAAAAAMAPf/AgACAAAAAAAMAPj/AgABAAAAAAAMAPn/AgAAAAAAAAAMAPr/AgACAAAAAAAMAPv/AgABAAAAAAAMAPz/AgABAAAAAAAMAP3/AgABAAAAAAAMAP7/AgACAAAAAAAMAP//AgAAAAAAAAAMAAAAAgAAAAAAAAAMAAEAAgACAAAAAAAMAAIAAgABAAAAAAAMAAMAAgACAAAAAAAMAAQAAgACAAAAAAAMAAUAAgABAAAAAAAMAAYAAgAAAAAAAAAMAAcAAgABAAAAAAAMAAgAAgAAAAAAAAAMAAkAAgABAAAAAAAMAAoAAgACAAAAAAAMAAsAAgABAAAAAAAMAAwAAgACAAAAAAA=") +tile_set = ExtResource("4_0b4ue") + [node name="Player" parent="." instance=ExtResource("1_vonw3")] position = Vector2(349, 283) hand = [null] diff --git a/growth/player.gd b/growth/player.gd index 2b28c20..9e1fe28 100644 --- a/growth/player.gd +++ b/growth/player.gd @@ -1,4 +1,4 @@ -extends Node2D +extends CharacterBody2D # ActionState should probably be expandable to enum ActionState {None, Cycling, Firing, Charging} @@ -8,9 +8,11 @@ enum MoveState {Still, Moving, Dashing, Knockback} @export var dash_cooldown = 0.3 @export var hand_size = 3 +@onready var camera: Camera2D = %PlayerCamera +@onready var sprite: AnimatedSprite2D = $PlayerSprite + var shield_active = true; -@export var move_direction = Vector2.ZERO; -var velocity = Vector2.ZERO # The player's movement vector. +var move_direction = Vector2.ZERO; var target = Vector2.ZERO # The position of the player's cursor. const drawpile = []; @@ -43,13 +45,77 @@ func update_move_direction(): func update_target_coords(): target = get_viewport().get_mouse_position() + sprite.look_at(get_global_mouse_position()) +func update_camera_position(): + if not camera: + return; + var camera_target = (target - screen_size / 2) / 4 + camera.position = camera.position.lerp(camera_target, 0.1) + +func charge(): + # Charge attack + if not charged and action_state == ActionState.Charging: + charge_level += charge_rate; + if charge_level >= 100: + charged = false; + charge_level = 0; + elif charge_level > 0: + # Gradual charge dropoff + charge_level = max(charge_level - charge_rate * 2, 0); + +func dash(): + var card = hand.get(active_card_index); + if not card or dash_on_cooldown: + return; + + card.discard(self); # Must set move_state at start and end of dash + dash_on_cooldown = true; + +func play_card(): + if active_card_index >= 0 and active_card_index < hand.size(): + var card = hand[active_card_index]; + card.play(self); + +func cycle_card(index_shift): + if hand.size() > 0: + active_card_index = (active_card_index + index_shift) % hand.size(); + else: + draw_card(); + +func discard_active_card(): + if active_card_index >= 0 and active_card_index < hand.size(): + var card = hand[active_card_index]; + discard_pile.append(card); + hand.remove_at(active_card_index); + active_card_index = min(active_card_index, hand.size() - 1); + draw_card(); + +func draw_card(): + if drawpile.size() == 0: + shuffle_deck(); + if drawpile.size() > 0 and hand.size() < hand_size: + var card = drawpile.pop_back(); + hand.append(card); + if active_card_index == -1: + active_card_index = 0; + +# TODO: Reboot mechanics +func shuffle_deck(): + for card in discard_pile: + drawpile.append(card); + discard_pile.clear(); + drawpile.shuffle(); + active_card_index = 0; func _ready(): screen_size = get_viewport_rect().size + while (hand.size() < hand_size and drawpile.size() > 0): + draw_card(); func _process(delta): update_target_coords(); + update_camera_position(); if (move_state != MoveState.Dashing): update_move_direction(); @@ -62,12 +128,24 @@ func _process(delta): # handle move_state if move_state == MoveState.Knockback: pass + elif Input.is_action_just_pressed("dash"): + dash(); elif (move_state != MoveState.Dashing): velocity = move_direction * speed; if velocity.x || velocity.y: move_state = MoveState.Moving; else: move_state = MoveState.Still; + + move_and_slide(); - position += velocity * delta - position = position.clamp(Vector2.ZERO, screen_size) + # Handle action_state + if Input.is_action_pressed("play_card"): + play_card(); + + if Input.is_action_just_pressed("cycle_card_left"): + action_state = ActionState.Cycling; + cycle_card(-1); + elif Input.is_action_just_pressed("cycle_card_right"): + action_state = ActionState.Cycling; + cycle_card(1);