diff --git a/scripts/Modules/Cannon.gd b/scripts/Modules/Cannon.gd index 2dd40d2..8a2847f 100644 --- a/scripts/Modules/Cannon.gd +++ b/scripts/Modules/Cannon.gd @@ -5,35 +5,40 @@ class_name Cannon enum STATE {INACTIVE, RELOADING, SHOOTING} enum AMMO {NORMAL, HEAVY, LIGHT} var currentAmmo: AMMO -var CAN_ENGAGE = true +var currentPowderStashValue = 0 +var maxPowderStashValue = 3 +var CAN_ENGAGE = false var DAMAGE = 5 @onready var train = get_parent() as Train #------------Methods-------------# func _ready(): maxStashValue = 1 - currentStashValue = 1 + currentStashValue = 0 currentState = STATE.INACTIVE #TODO: FINISH func interact(player): - if currentState == STATE.INACTIVE: - #TODO: RELOADING - if currentStashValue < maxStashValue: - currentState = STATE.RELOADING - currentStashValue += 1 + if player.getResource == 0: + if currentStashValue < maxStashValue: + currentStashValue += 1 + return + return + if player.getResource == 1: + if currentPowderStashValue < maxPowderStashValue: + currentPowderStashValue += 1 + return return - return func shoot(): if not CAN_ENGAGE: return false CAN_ENGAGE = false create_tween().tween_callback(func(): CAN_ENGAGE = true).set_delay(2) - - if currentStashValue >= 1 and currentState == STATE.INACTIVE: + if currentStashValue >= 1 and currentPowderStashValue >= 1 and currentState == STATE.INACTIVE: currentState = STATE.SHOOTING currentStashValue -= 1 + currentPowderStashValue = 0 currentState = STATE.INACTIVE return true return false diff --git a/scripts/Modules/Storage.gd b/scripts/Modules/Storage.gd index 9c51428..88ab922 100644 --- a/scripts/Modules/Storage.gd +++ b/scripts/Modules/Storage.gd @@ -2,7 +2,7 @@ extends Module class_name Storage -enum TYPE {CANNONBALL, GUNPOWDER, COAL} +enum TYPE {AMMO, GUNPOWDER, COAL} @export var currentType: TYPE diff --git a/scripts/Player.gd b/scripts/Player.gd index 5c9a9d5..bf8651f 100644 --- a/scripts/Player.gd +++ b/scripts/Player.gd @@ -4,7 +4,7 @@ extends CharacterBody3D var SPEED = 10 var movement = Vector3(0,0,0) var inventory = 0 #1 - full, 0 - empty inventory -var resource = 0 +var resource = 0 : set = setResource, get = getResource var is_alive = true @onready var is_player1 = true @@ -24,7 +24,6 @@ func _physics_process(delta): $AnimatedSprite3D.play(walking) else: $AnimatedSprite3D.play(idle) - movement = Vector3(0,0,0) check_interaction() check_input() @@ -40,7 +39,6 @@ func _physics_process(delta): move_and_slide() func check_input(): - if is_player1: if Input.is_action_pressed("p1_left"): movement.x -= 1 @@ -90,3 +88,10 @@ func fill_inventory(type): 2: walking = "walking_coal" idle = "idle_coal" + + +func getResource(): + return self.resource + +func setResource(resource : int): + self.resource = resource