コード例 #1
0
        public void ContextualInformation()
        {
            var context = new TraitContext()
            {
                Stats = new Dictionary <StatIdentifier, StatTemplate> ()
                {
                    [CharacterTrait.MaxHealth] = new StatTemplate()
                    {
                        Name     = "Max Health",
                        MaxValue = 1000
                    },
                    [CharacterTrait.MaxMana] = new StatTemplate()
                    {
                        Name     = "Max Mana",
                        MaxValue = 1000
                    }
                },
                States = new Dictionary <StateIdentifier, StateTemplate> ()
                {
                    [CharacterTrait.CurrentHealth] = new StateTemplate()
                    {
                        Name     = "Current Health",
                        MaxValue = 1000
                    }
                }
            };

            var characterTraits = new TraitCollection();
        }
コード例 #2
0
        public override void Execute(GameContext context)
        {
            var actions = new LinkedList <TraitAction>(this.Actions);

            while (actions.Count > 0)
            {
                var action = actions.First.Value;

                var          traitContext = new TraitContext(context.Game, action);
                ITransformer transformer;

                while ((transformer = this.SelectTransformer(context.Game.Players, traitContext)) != null)
                {
                    action       = transformer.Transform(traitContext);
                    traitContext = new TraitContext(context.Game, action);
                }

                action.Execute(context);

                IAttachable attachable;
                while ((attachable = this.SelectAttachable(context.Game.Players, traitContext)) != null)
                {
                    attachable.Attach(traitContext);
                }

                actions.RemoveFirst();
            }
        }
コード例 #3
0
        public void DetectMissingIdentifiers()
        {
            var context = TraitContext.Create()
                          .UseTraits(new Dictionary <StatIdentifier, StatTemplate>()
            {
                [StaticTraits.Health.Maximum] = new StatTemplate()
                {
                    Name     = "Max Health",
                    MaxValue = 1000,
                    MinValue = 0
                },
            })
                          .UseTraits(new Dictionary <StateIdentifier, StateTemplate>()
            {
                [StaticTraits.Health.Current] = new StateTemplate()
                {
                    Name     = "Current Health",
                    MaxValue = 1000,
                    MinValue = 0
                },
            })
                          .Build();

            foreach (string error in context.ValidateAgainstStaticShortcuts(typeof(StaticTraits)))
            {
                TestContext.Error.WriteLine(error);
            }
        }
コード例 #4
0
ファイル: Activity.cs プロジェクト: 372572571/ecs_mvp
 public TraitContext Adjust(TraitContext context)
 {
     return(new TraitContext()
     {
         barrier = true,
         opaque = true,
     });
 }
コード例 #5
0
ファイル: Window.cs プロジェクト: 372572571/ecs_mvp
        private void Arrange()
        {
            var traitContext = new TraitContext()
            {
                visible = true,
            };

            list.Aggregate(traitContext, (context, data) =>
            {
                return(data.container.Adjust(context));
            });
        }
コード例 #6
0
        private IAttachable SelectAttachable(Player player, TraitContext context)
        {
            var traits = player.Animals.SelectMany(a => a.Traits.OfType <IAttachable>().Where(t => t.CanAttach(context))).ToList();

            if (traits.Count > 1)
            {
                return((IAttachable)player.Brain.SelectTrait(traits.Cast <Trait>(), false));
            }

            if (traits.Count > 0)
            {
                return(traits.Single());
            }

            return(null);
        }
コード例 #7
0
        public void ContextualInformation()
        {
            var charStatA = (StatIdentifier)"char_statA";

            var context = TraitContext.Create()
                          .UseTrait(charStatA, new StatTemplate()
            {
                Name     = "Character Stat A",
                MinValue = 2,
                MaxValue = 12,
            })
                          .Build();

            var characterTraits = new TraitCollection(context);

            var charStatAInstance = characterTraits[charStatA];
        }
コード例 #8
0
 private IAttachable SelectAttachable(IEnumerable <Player> players, TraitContext context)
 {
     return(players.Select(p => this.SelectAttachable(p, context)).Where(t => t != null).FirstOrDefault());
 }
コード例 #9
0
        private ITransformer SelectTransformer(Player player, TraitContext context)
        {
            var traits = player.Animals.SelectMany(a => a.Traits.OfType <ITransformer>().Where(t => t.CanTransform(context)));

            return((ITransformer)player.Brain.SelectTrait(traits.Cast <Trait>(), true));
        }
コード例 #10
0
 private ITransformer SelectTransformer(IEnumerable <Player> players, TraitContext context)
 {
     return(players.Select(p => this.SelectTransformer(p, context)).Where(t => t != null).FirstOrDefault());
 }
コード例 #11
0
        public void ValidateAgainstStaticShortcuts()
        {
            var context = TraitContext.Create()
                          .UseTraits(new Dictionary <StatIdentifier, StatTemplate>()
            {
                [StaticTraits.Health.Maximum] = new StatTemplate()
                {
                    Name     = "Max Health",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Health.RegenDelay] = new StatTemplate()
                {
                    Name     = "Regen Delay",
                    MaxValue = 60,
                    MinValue = 0
                },
                [StaticTraits.Health.RegenRate] = new StatTemplate()
                {
                    Name     = "Regen Rate",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Mana.Maximum] = new StatTemplate()
                {
                    Name     = "Max Mana",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Mana.RegenDelay] = new StatTemplate()
                {
                    Name     = "Mana Regen Delay",
                    MaxValue = 60,
                    MinValue = 0
                },
                [StaticTraits.Mana.RegenRate] = new StatTemplate()
                {
                    Name     = "Mana Regen Rate",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Stamina.Maximum] = new StatTemplate()
                {
                    Name     = "Stamina Max Mana",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Stamina.RegenDelay] = new StatTemplate()
                {
                    Name     = "StaminaRegen Delay",
                    MaxValue = 60,
                    MinValue = 0
                },
                [StaticTraits.Stamina.RegenRate] = new StatTemplate()
                {
                    Name     = "StaminaRegen Rate",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Elemental[0].Proficiency] = new StatTemplate()
                {
                    Name     = "Fire Proficiency",
                    MaxValue = 500,
                    MinValue = 0
                },
                [StaticTraits.Elemental[0].Resistance] = new StatTemplate()
                {
                    Name     = "Fire Resistance",
                    MaxValue = 500,
                    MinValue = 0
                },
            })
                          .UseTraits(new Dictionary <StateIdentifier, StateTemplate>()
            {
                [StaticTraits.Health.Current] = new StateTemplate()
                {
                    Name     = "Current Health",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Health.RegenCooldown] = new StateTemplate()
                {
                    Name     = "Health Regen Cooldown",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Mana.Current] = new StateTemplate()
                {
                    Name     = "Current Mana",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Mana.RegenCooldown] = new StateTemplate()
                {
                    Name     = "Mana Regen Cooldown",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Stamina.Current] = new StateTemplate()
                {
                    Name     = "Current Stamina",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Stamina.RegenCooldown] = new StateTemplate()
                {
                    Name     = "Stamina Regen Cooldown",
                    MaxValue = 1000,
                    MinValue = 0
                },
                [StaticTraits.Elemental[0].Shielding] = new StateTemplate()
                {
                    Name     = "Fire Shielding",
                    MaxValue = 1000,
                    MinValue = 0
                },
            })
                          .Build();

            foreach (string error in context.ValidateAgainstStaticShortcuts(typeof(StaticTraits)))
            {
                TestContext.Error.WriteLine(error);
            }
        }