public Character.Character Spawn(string race, string name, int2 position, out CharacterDomainDefinition brain) { brain = null; var character = GameObject.Instantiate(_characterPrefab).Init(); if (character.Context != null) { character.Context.Dungeon = this; } character.name = $"{race} {name}"; if (_characterDb) { if (_characterDb.Find(race, name, out var data)) { character.Meta = data; character.View.sprite = data.Sprite; character.View.color = data.Color; foreach (var sensor in data.Sensors) { character.AddSensor(sensor); } foreach (var stat in data.Stats) { character.AddStat(stat.Type, stat.Value, stat.StartValue, stat.RegenRate); } foreach (var item in character.Meta.Items) { character.GiveItem(item); } brain = data.Brain; } } character.transform.position = new Vector3(position.x, position.y, 0); _characters.Add(character); return(character); }
public AIController(CharacterDomainDefinition brain) { _brainHandler = new Planner <CharacterContext>(); _brain = brain?.Create(); }