41 lines
1 KiB
GDScript
41 lines
1 KiB
GDScript
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(money : int):
|
|
return isLevelMax && money > cost
|
|
|
|
|
|
func getNextValue(oldValue):
|
|
return oldValue + (value * upgradeDirection * level)
|