コード例 #1
0
        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);
        }
コード例 #2
0
 public AIController(CharacterDomainDefinition brain)
 {
     _brainHandler = new Planner <CharacterContext>();
     _brain        = brain?.Create();
 }