@DaveTheCoder said:
Try this:
stats = preload("res://Stats.gd").new()
(Correct the file path if needed.)
Thank you so much bro, you example helped me to solve the problem.
when i used preload the problem persist, so i used load instead and it worked
extends Node2D
class_name Tower
# Imports
var Stats = load("res://Assets/Stats.gd")
# Constants
# Properties
var stats
func _ready():
stats = Stats.new()
print_debug(stats.getStatsDict())
pass
Update: Part of the problem was the use of self in the getset functions and the use of the Range keyword, so the Stats.gd file finished like this:
class_name Stats
const DEFAULT_LEVEL = 1
const DEFAULT_ATTACK = 1
const DEFAULT_DEFENSE = 1
const DEFAULT_RANGE = 1
const DEFAULT_ENERGY = 10
const DEFAULT_EXPERIENCE = 0
export (int) var Level = DEFAULT_LEVEL setget setLevel, getLevel
export (int) var Attack = DEFAULT_ATTACK setget setAttack, getAttack
export (int) var Defense = DEFAULT_DEFENSE setget setDefense, getDefense
export (int) var AttackRange = DEFAULT_RANGE setget setRange, getRange
export (int) var Energy = DEFAULT_ENERGY setget setEnergy, getEnergy
export (int) var Experience = DEFAULT_EXPERIENCE setget setExperience, getExperience
func _init(
stats = {
"level": DEFAULT_LEVEL,
"attack": DEFAULT_ATTACK,
"defense": DEFAULT_DEFENSE,
"range": DEFAULT_RANGE,
"energy": DEFAULT_ENERGY,
"experience": DEFAULT_EXPERIENCE
}):
setLevel(stats["level"])
setAttack(stats["attack"])
setDefense(stats["defense"])
setRange(stats["range"])
setEnergy(stats["energy"])
setExperience(stats["experience"])
func changeStats(stats):
setLevel(stats["level"])
setAttack(stats["attack"])
setDefense(stats["defense"])
setRange(stats["range"])
setEnergy(stats["energy"])
setExperience(stats["experience"])
func getStatsDict():
return {
"level": getLevel(),
"attack": getAttack(),
"defense": getDefense(),
"range": getRange(),
"energy": getEnergy(),
"experience": getExperience()
}
func setLevel(level: int) -> void:
Level = level
func getLevel() -> int:
return Level
func setAttack(attack:int) -> void:
Attack = attack
func getAttack() -> int:
return Attack
func setDefense(defense:int) -> void:
Defense = defense
func getDefense() -> int:
return Defense
func setRange(attackRange:int) -> void:
AttackRange = attackRange
func getRange() -> int:
return AttackRange
func setEnergy(energy:int) -> void:
Energy = energy
func getEnergy() -> int:
return Energy
func setExperience(experience:int) -> void:
Experience = experience
func getExperience() -> int:
return Experience