You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
724 B
GDScript
26 lines
724 B
GDScript
|
2 years ago
|
extends Node3D
|
||
|
|
class_name CharacterManager
|
||
|
|
|
||
|
|
var scene_player = preload("res://scene/character/player.tscn")
|
||
|
|
var scene_monster = preload("res://scene/character/monster.tscn")
|
||
|
|
|
||
|
|
var character_map = {}
|
||
|
|
var character_idx : int = 0
|
||
|
|
|
||
|
|
func create_character(cfg:CharacterCfg):
|
||
|
|
var characterNode:Node
|
||
|
|
match cfg.type:
|
||
|
|
Enum.ECharacterType.Player:
|
||
|
|
characterNode = scene_player.instantiate()
|
||
|
|
Enum.ECharacterType.Monster:
|
||
|
|
characterNode = scene_monster.instantiate()
|
||
|
|
add_child(characterNode)
|
||
|
|
characterNode.name = cfg.name
|
||
|
|
var character:Character = characterNode as Character
|
||
|
|
character_idx += 1
|
||
|
|
character_map[character_idx]=character
|
||
|
|
character.init(character_idx,cfg)
|
||
|
|
|
||
|
|
func get_character(id:int):
|
||
|
|
return character_map[id]
|