extends Resource class_name Upgrade enum SCALE_TYPE { LINEAR, EXP, LOG } enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 } @export var icon : Texture2D = preload("res://Assets/Icones/medal2.png") @export var text : String = "Upgrade" @export var baseCost : int = 50 @export_range(1, INF, 1, "hide_slider") var value : float @export_range(-1, 100, 1, "hide_slider") var maxLevel : int = -1 ##[param -1] for infinite leveling @export_group("Upgrade Scaling") @export var upgradeDirection : UPGRADE_DIRECTION = UPGRADE_DIRECTION.INCREASE @export var upgradeScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR @export var costScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR @export var costModificator : float var cost : int = baseCost var level : int = 0 var isLevelMax : bool : get(): return maxLevel == level func upgrade(subject) -> void: pass func upgradeUpgrade() -> void: cost += baseCost func canUpgrade(): return not isLevelMax && Game.money > cost func getNextValue(oldValue): return oldValue + (value * upgradeDirection * level)