public Effect() { Description = new Description(); Events = new CombatEvents(); Properties = new PropertyNotificationObject(); Properties.PropertyChanged += PropertyChanged; _runtime = Scripting.Instance.Runtime; }
public Actor(int id, string name) { Id = id; Name = name; Abilities = new Dictionary<int, Ability>(); CurrentAbilities = new Dictionary<int, Ability>(); Skills = new Dictionary<int, Skill>(); CurrentSkills = new Dictionary<int, Skill>(); Traits = new Dictionary<int, Trait>(); CurrentTraits = new Dictionary<int, Trait>(); Classes = new EventListCollection<Class>(); Classes.ListAdded += ClassAdded; Classes.ListRemoved += ClassRemoved; Effects = new EventListCollection<Effect>(); Effects.ListAdded += EffectAdded; Effects.ListRemoved += EffectRemoved; Modifiers = new EventListCollection<Modifier>(); Modifiers.ListAdded += ModifierAdded; Modifiers.ListRemoved += ModifierRemoved; Equipment = new Equipment(); Equipment.EquipmentList.DictionaryAdded += EquipmentAdded; Equipment.EquipmentList.DictionaryRemoved += EquipmentRemoved; _baseStats = new Stat(); _baseStats.Properties.PropertyChanged += PropertyChanged; _effectiveStats = new Stat(); _effectiveStats.Properties.PropertyChanged += PropertyChanged; _numPointWeights = new[] {25, 25, 25, 25}; _events = new CombatEvents(); _properties = new PropertyNotificationObject(); _properties.PropertyChanged += PropertyChanged; _random = new Random(); }
private void PropertyChanged(object sender, PropertyChangedEventArgs e) { var args = (PropertyNotificationEventArgs) e; if (args.PropertyName.Equals("Script")) { try { _python = _runtime.UseFile(_script); Events = new CombatEvents(); foreach (string member in _runtime.Operations.GetMemberNames(_python)) { EventInfo eventInfo = Events.GetType().GetEvent(member); if (eventInfo != null) { Delegate method = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, member); eventInfo.AddEventHandler(Events, method); } } } catch (FileNotFoundException ex) { } } }