public MainViewModel()
        {
            Effects = new EffectsCollection();
            Injection.Container.Map <EffectsCollection>().To(Effects);

            GameModule = new MainGameModule();
        }
示例#2
0
 private void AddEffects(EffectsCollection effects, IEnumerable <Entry> list)
 {
     foreach (var entry in list)
     {
         foreach (var effect in entry.Context.Effects)
         {
             effects.AddEffect(effect, entry, entry.Context);
         }
     }
 }
示例#3
0
        private static EffectsCollection GatherEffects()
        {
            List <Assembly> assemblies = new List <Assembly>();

            // this assembly
            assemblies.Add(Assembly.GetExecutingAssembly());

            // PaintDotNet.Effects.dll
            assemblies.Add(Assembly.GetAssembly(typeof(Effect)));

            // TARGETDIR\Effects\*.dll
            string homeDir    = PdnInfo.GetApplicationDir();
            string effectsDir = Path.Combine(homeDir, InvariantStrings.EffectsSubDir);
            bool   dirExists;

            try
            {
                dirExists = Directory.Exists(effectsDir);
            }

            catch
            {
                dirExists = false;
            }

            if (dirExists)
            {
                string   fileSpec  = "*" + InvariantStrings.DllExtension;
                string[] filePaths = Directory.GetFiles(effectsDir, fileSpec);

                foreach (string filePath in filePaths)
                {
                    Assembly pluginAssembly = null;

                    try
                    {
                        pluginAssembly = Assembly.LoadFrom(filePath);
                        assemblies.Add(pluginAssembly);
                    }

                    catch (Exception ex)
                    {
                        Tracing.Ping("Exception while loading " + filePath + ": " + ex.ToString());
                    }
                }
            }

            EffectsCollection ec = new EffectsCollection(assemblies);

            return(ec);
        }
示例#4
0
        private void BeginHandler(Event e)
        {
            // code generation start here
            EmitHandlerHeader(e.Name);
            EmitEnterBlock();

            _gc = new GateConverter();

            // process labels before they are added ...
            _gc.OnBeforeAddLabel = EvaluateCodeLabelBefore;

            _guards        = new GuardCollection();
            _effectsbefore = new EffectsCollection();
            _effectsafter  = new EffectsCollection();
        }
示例#5
0
        private void EndHandler()
        {
            if (TraceFlags.ShowLabel)
            {
                Trace("labels:\n{0}", _gc.ToDebugString());
            }

            _guards        = null;
            _effectsbefore = null;
            _effectsafter  = null;

            _gc.Dispose();
            _gc = null;

            EmitLeaveBlock();
            Writer.AppendComment();
        }
示例#6
0
文件: Event.cs 项目: thomas13335/smg
        public void CalculateEffects()
        {
            _tset = new TransitionSet();

            // overall precondition for the event
            var c = new TriggerTermCollection <bool>(true);

            foreach (var t in Triggers)
            {
                c.Add(t);

                // add to event wide transition set
                _tset.AddRange(t.Transitions);
            }

            var guards = new GuardCollection();
            var before = new EffectsCollection();
            var after  = new EffectsCollection();

            foreach (var t in Triggers)
            {
                foreach (var g in t.Guards)
                {
                    guards.AddGuard(t, g);
                }

                foreach (var effect in t.Effects)
                {
                    after.AddEffect(t, effect);
                }
            }

            guards.AddLeaveEffects(before);
            guards.AddEnterEffects(after);

            // make results visible
            EffectsBefore = before;
            EffectsAfter  = after;
            PreCondition  = c.PreCondition;
        }
示例#7
0
文件: Event.cs 项目: thomas13335/smg
        public void CalculateEffects()
        {
            _tset = new TransitionSet();

            // overall precondition for the event
            var c = new TriggerTermCollection<bool>(true);

            foreach (var t in Triggers)
            {
                c.Add(t);

                // add to event wide transition set
                _tset.AddRange(t.Transitions);
            }

            var guards = new GuardCollection();
            var before = new EffectsCollection();
            var after = new EffectsCollection();

            foreach (var t in Triggers)
            {
                foreach (var g in t.Guards)
                {
                    guards.AddGuard(t, g);
                }

                foreach (var effect in t.Effects)
                {
                    after.AddEffect(t, effect);
                }
            }

            guards.AddLeaveEffects(before);
            guards.AddEnterEffects(after);

            // make results visible
            EffectsBefore = before;
            EffectsAfter = after;
            PreCondition = c.PreCondition;
        }
示例#8
0
        private void AddEffectsToMenu()
        {
            // Fill the menu with the effect names, and "..." if it is configurable
            EffectsCollection effectsCollection = this.Effects;

            Type[] effectTypes   = effectsCollection.Effects;
            bool   withShortcuts = EnableEffectShortcuts;

            List <Effect> newEffects = new List <Effect>();

            foreach (Type type in effectsCollection.Effects)
            {
                try
                {
                    ConstructorInfo ci     = type.GetConstructor(Type.EmptyTypes);
                    Effect          effect = (Effect)ci.Invoke(null);

                    if (FilterEffects(effect))
                    {
                        newEffects.Add(effect);
                    }
                }

                catch
                {
                    // We don't want a DLL that can't be figured out to cause the app to crash
                    continue;
                }
            }

            newEffects.Sort(
                delegate(Effect lhs, Effect rhs)
            {
                return(string.Compare(lhs.Name, rhs.Name, true));
            });

            List <string> subMenuNames = new List <string>();

            foreach (Effect effect in newEffects)
            {
                if (!string.IsNullOrEmpty(effect.SubMenuName))
                {
                    subMenuNames.Add(effect.SubMenuName);
                }
            }

            subMenuNames.Sort(
                delegate(string lhs, string rhs)
            {
                return(string.Compare(lhs, rhs, true));
            });

            string lastSubMenuName = null;

            foreach (string subMenuName in subMenuNames)
            {
                if (subMenuName == lastSubMenuName)
                {
                    // skip duplicate names
                    continue;
                }

                PdnMenuItem subMenu = new PdnMenuItem(subMenuName, null, null);
                DropDownItems.Add(subMenu);
                lastSubMenuName = subMenuName;
            }

            foreach (Effect effect in newEffects)
            {
                AddEffectToMenu(effect, withShortcuts);
            }
        }
示例#9
0
        private void EndHandler()
        {
            if(TraceFlags.ShowLabel)
            {
                Trace("labels:\n{0}", _gc.ToDebugString());
            }

            _guards = null;
            _effectsbefore = null;
            _effectsafter = null;

            _gc.Dispose();
            _gc = null;

            EmitLeaveBlock();
            Writer.AppendComment();
        }
示例#10
0
        private void BeginHandler(Event e)
        {
            // code generation start here
            EmitHandlerHeader(e.Name);
            EmitEnterBlock();

            _gc = new GateConverter();

            // process labels before they are added ...
            _gc.OnBeforeAddLabel = EvaluateCodeLabelBefore;

            _guards = new GuardCollection();
            _effectsbefore = new EffectsCollection();
            _effectsafter = new EffectsCollection();
        }
示例#11
0
 public MainGameModule()
     : base("Content")
 {
     _effects = Injection.Container.Resolve <EffectsCollection>();
     _effects.PropertyChanged += (s, e) => { MouseStamp.Effect = _effects.Selected.Effect; };
 }
示例#12
0
        public void AddEnterEffects(EffectsCollection effects)
        {
            var list = _map.Values.Where(e => e.Context.Type != GuardType.LEAVE);

            AddEffects(effects, list);
        }