extends Node

## 게임 내 유닛 및 몬스터 스펙 데이터를 총괄하는 데이터 매니저 싱글톤

# 유닛 리소스 템플릿 목록
var unit_templates: Array[UnitData] = []

func _ready() -> void:
	_initialize_unit_templates()

## 5종의 유닛 능력치 데이터 초기 셋업
func _initialize_unit_templates() -> void:
	# 1. Striker (연사형 근접 유닛)
	var striker: UnitData = UnitData.new()
	striker.unit_id = "Unit_Striker"
	striker.unit_name = "Striker"
	striker.damage = 12.0
	striker.cooldown = 1.5
	striker.move_speed = 6.0
	striker.attack_range = 1.5
	striker.is_ranged = false
	striker.unit_color = Color(0.12, 0.45, 0.85, 1.0) # 청색
	unit_templates.append(striker)
	
	# 2. Guardian (밸런스형 근접 유닛)
	var guardian: UnitData = UnitData.new()
	guardian.unit_id = "Unit_Guardian"
	guardian.unit_name = "Guardian"
	guardian.damage = 25.0
	guardian.cooldown = 1.0
	guardian.move_speed = 4.0
	guardian.attack_range = 1.5
	guardian.is_ranged = false
	guardian.unit_color = Color(0.85, 0.65, 0.12, 1.0) # 황금색
	unit_templates.append(guardian)
	
	# 3. Ranger (원거리 유닛)
	#var ranger: UnitData = UnitData.new()
	#ranger.unit_id = "Unit_Ranger"
	#ranger.unit_name = "Ranger"
	#ranger.damage = 18.0
	#ranger.cooldown = 0.8
	#ranger.move_speed = 4.5
	#ranger.attack_range = 10.0
	#ranger.is_ranged = true
	#ranger.unit_color = Color(0.12, 0.75, 0.25, 1.0) # 녹색
	#unit_templates.append(ranger)
	
	# 4. Slayer (고화력 대형 유닛)
	#var slayer: UnitData = UnitData.new()
	#slayer.unit_id = "Unit_Slayer"
	#slayer.unit_name = "Slayer"
	#slayer.damage = 55.0
	#slayer.cooldown = 1.8
	#slayer.move_speed = 3.5
	#slayer.attack_range = 1.6
	#slayer.is_ranged = false
	#slayer.unit_color = Color(0.85, 0.12, 0.12, 1.0) # 진적색
	#unit_templates.append(slayer)
	
	# 5. Archmage (극단적 극딜 마법 유닛)
	#var archmage: UnitData = UnitData.new()
	#archmage.unit_id = "Unit_Archmage"
	#archmage.unit_name = "Archmage"
	#archmage.damage = 110.0
	#archmage.cooldown = 3.0
	#archmage.move_speed = 3.0
	#archmage.attack_range = 12.0
	#archmage.is_ranged = true
	#archmage.unit_color = Color(0.55, 0.12, 0.85, 1.0) # 보라색
	#unit_templates.append(archmage)

## 특정 스테이지에 따른 몬스터 체력(HP) 반환
func get_monster_hp(stage: int) -> float:
	return 100.0 + (stage - 1) * 50.0

## 특정 스테이지에 따른 몬스터 처치 보상 골드 반환
func get_monster_gold_reward(stage: int) -> int:
	if stage >= 20: return 100
	elif stage >= 15: return 60 + (stage - 15) * 8
	elif stage >= 10: return 40 + (stage - 10) * 4
	elif stage >= 5: return 25 + (stage - 5) * 3
	elif stage >= 2: return 18 + (stage - 2) * 2
	else: return 15
