예제 #1
0
파일: Effect.cs 프로젝트: nate0001/AIR
 public Effect()
 {
     Description = new Description();
     Events = new CombatEvents();
     Properties = new PropertyNotificationObject();
     Properties.PropertyChanged += PropertyChanged;
     _runtime = Scripting.Instance.Runtime;
 }
예제 #2
0
파일: Actor.cs 프로젝트: nate0001/AIR
        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();
        }
예제 #3
0
파일: Effect.cs 프로젝트: nate0001/AIR
        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)
                {
                }
            }
        }