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(); }
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(); } }
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); } }
public TraitContext Adjust(TraitContext context) { return(new TraitContext() { barrier = true, opaque = true, }); }
private void Arrange() { var traitContext = new TraitContext() { visible = true, }; list.Aggregate(traitContext, (context, data) => { return(data.container.Adjust(context)); }); }
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); }
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]; }
private IAttachable SelectAttachable(IEnumerable <Player> players, TraitContext context) { return(players.Select(p => this.SelectAttachable(p, context)).Where(t => t != null).FirstOrDefault()); }
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)); }
private ITransformer SelectTransformer(IEnumerable <Player> players, TraitContext context) { return(players.Select(p => this.SelectTransformer(p, context)).Where(t => t != null).FirstOrDefault()); }
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); } }