コード例 #1
0
        public MonsterPerson([NotNull] IMonsterScheme scheme)
        {
            Scheme = scheme ?? throw new ArgumentNullException(nameof(scheme));

            Hp = scheme.Hp;
            TacticalActCarrier = new TacticalActCarrier
            {
                Acts = new ITacticalAct[] {
                    new MonsterTacticalAct(scheme.PrimaryAct)
                }
            };

            var defenses = scheme.Defense?.Defenses?
                           .Select(x => new PersonDefenceItem(x.Type, x.Level))
                           .ToArray();

            CombatStats = new CombatStats
            {
                DefenceStats = new PersonDefenceStats(
                    defenses ?? new PersonDefenceItem[0],
                    new PersonArmorItem[0])
            };

            Survival = new MonsterSurvivalData(scheme);

            Effects = new EffectCollection();
        }
コード例 #2
0
        public IPerson Create(IMonsterScheme monsterScheme)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            var Acts = new ITacticalAct[] {
                new MonsterTacticalAct(monsterScheme.PrimaryAct)
            };

            var combaActModule = new MonsterCombatActModule(Acts);

            monsterPerson.AddModule(combaActModule);

            var defenses = monsterScheme.Defense?.Defenses?
                           .Select(x => new PersonDefenceItem(x.Type, x.Level))
                           .ToArray();

            var defenceStats = new PersonDefenceStats(
                defenses ?? Array.Empty <PersonDefenceItem>(),
                Array.Empty <PersonArmorItem>());

            var combatStatsModule = new MonsterCombatStatsModule(defenceStats);

            monsterPerson.AddModule(combatStatsModule);

            var survivalModule = new MonsterSurvivalModule(monsterScheme);

            monsterPerson.AddModule(survivalModule);

            var diseaseModule = new MonsterDiseaseModule();

            monsterPerson.AddModule(diseaseModule);

            return(monsterPerson);
        }
コード例 #3
0
 public MonsterSurvivalModule([NotNull] IMonsterScheme monsterScheme) : base(GetStats(monsterScheme))
 {
     if (monsterScheme == null)
     {
         throw new ArgumentNullException(nameof(monsterScheme));
     }
 }
コード例 #4
0
        private IActor CreateMonster(IActorManager actorManager, IMonsterScheme monsterScheme, IGraphNode startNode, IBotPlayer botPlayer)
        {
            var person = _monsterFactory.Create(monsterScheme);
            var actor  = new Actor(person, botPlayer, startNode);

            actorManager.Add(actor);
            return(actor);
        }
コード例 #5
0
        private IActor CreateMonster(IMonsterScheme monsterScheme, IMapNode startNode, IBotPlayer botPlayer)
        {
            var person = new MonsterPerson(monsterScheme);
            var actor  = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
コード例 #6
0
        private IActor CreateMonster(IActorManager actorManager, IMonsterScheme monsterScheme, IGraphNode startNode,
                                     IActorTaskSource <ISectorTaskSourceContext> actorTaskSource)
        {
            var person = _monsterFactory.Create(monsterScheme);
            var actor  = new Actor(person, actorTaskSource, startNode);

            actorManager.Add(actor);
            return(actor);
        }
コード例 #7
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] IMonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
コード例 #8
0
        private IActor CreateMonsterActor([NotNull] IMonsterScheme monsterScheme,
                                          [NotNull] IGraphNode startNode)
        {
            var monsterFactory = ServiceProvider.GetRequiredService <IMonsterPersonFactory>();

            var taskSource = ServiceProvider.GetRequiredService <MonsterBotActorTaskSource <ISectorTaskSourceContext> >();

            var monsterPerson = monsterFactory.Create(monsterScheme);

            var actor = new Actor(monsterPerson, taskSource, startNode);

            return(actor);
        }
コード例 #9
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] IMonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var survivalRandomSource = Container.GetInstance <ISurvivalRandomSource>();


            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
コード例 #10
0
        public IPerson Create(IMonsterScheme monsterScheme)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            if (MonsterIdentifierGenerator != null)
            {
                monsterPerson.Id = MonsterIdentifierGenerator.GetNewId();
            }

            var movingModule = new MonsterMovingModule(monsterScheme);

            monsterPerson.AddModule(movingModule);

            if (monsterScheme?.PrimaryAct is null)
            {
                throw new InvalidOperationException();
            }

            var Acts = new ITacticalAct[]
            {
                new MonsterTacticalAct(monsterScheme.PrimaryAct)
            };

            var combaActModule = new MonsterCombatActModule(Acts);

            monsterPerson.AddModule(combaActModule);

            var defenses = monsterScheme.Defense?.Defenses?
                           .Where(x => x != null)
                           .Select(x => x !)
                           .Select(x => new PersonDefenceItem(x.Type, x.Level))
                           .ToArray();

            var defenceStats = new PersonDefenceStats(
                defenses ?? Array.Empty <PersonDefenceItem>(),
                Array.Empty <PersonArmorItem>());

            var combatStatsModule = new MonsterCombatStatsModule(defenceStats);

            monsterPerson.AddModule(combatStatsModule);

            var survivalModule = new MonsterSurvivalModule(monsterScheme);

            monsterPerson.AddModule(survivalModule);

            var diseaseModule = new MonsterDiseaseModule();

            monsterPerson.AddModule(diseaseModule);

            return(monsterPerson);
        }
コード例 #11
0
        private static SurvivalStat[] GetStats([NotNull] IMonsterScheme monsterScheme)
        {
            if (monsterScheme is null)
            {
                throw new ArgumentNullException(nameof(monsterScheme));
            }

            return(new[] {
                new SurvivalStat(monsterScheme.Hp, 0, monsterScheme.Hp)
                {
                    Type = SurvivalStatType.Health
                }
            });
        }
コード例 #12
0
        public MonsterSurvivalData([NotNull] IMonsterScheme monsterScheme)
        {
            if (monsterScheme == null)
            {
                throw new ArgumentNullException(nameof(monsterScheme));
            }

            Stats = new[] {
                new SurvivalStat(monsterScheme.Hp, 0, monsterScheme.Hp)
                {
                    Type = SurvivalStatType.Health
                }
            };
        }
コード例 #13
0
ファイル: Sector.cs プロジェクト: luisvita/Zilon_Roguelike
        private IDropTableScheme[] GetMonsterDropTables(IMonsterScheme monsterScheme)
        {
            if (monsterScheme.DropTableSids == null)
            {
                return(new IDropTableScheme[0]);
            }

            var dropTableCount = monsterScheme.DropTableSids.Length;
            var schemes        = new IDropTableScheme[dropTableCount];

            for (var i = 0; i < dropTableCount; i++)
            {
                var sid = monsterScheme.DropTableSids[i];
                schemes[i] = _schemeService.GetScheme <IDropTableScheme>(sid);
            }

            return(schemes);
        }
コード例 #14
0
ファイル: Sector.cs プロジェクト: kreghek/Zilon_Roguelike
        private IDropTableScheme[] GetMonsterDropTables(IMonsterScheme monsterScheme)
        {
            if (monsterScheme.DropTableSids == null)
            {
                return(Array.Empty <IDropTableScheme>());
            }

            var dropTableCount = monsterScheme.DropTableSids.Length;
            var schemes        = new IDropTableScheme[dropTableCount];

            for (var i = 0; i < dropTableCount; i++)
            {
                var sid = monsterScheme.DropTableSids[i];
                if (sid is null)
                {
                    throw new InvalidOperationException();
                }

                schemes[i] = _schemeService.GetScheme <IDropTableScheme>(sid);
            }

            return(schemes);
        }
コード例 #15
0
 public MonsterPerson([NotNull] IMonsterScheme scheme) : base(Fractions.MonsterFraction)
 {
     Scheme = scheme ?? throw new ArgumentNullException(nameof(scheme));
 }
コード例 #16
0
 public MonsterMovingModule(IMonsterScheme monsterScheme)
 {
     _monsterScheme = monsterScheme ?? throw new ArgumentNullException(nameof(monsterScheme));
 }