Пример #1
0
        private void RunSpecificScriptOnPacket(object sender, RoutedEventArgs e)
        {
            var scriptView = new ScriptSelectView("Scripts");

            scriptView.ShowDialog();
            var toLoad = scriptView.GetSelectedScripts();

            var provider = new ScriptingProvider();

            provider.LoadScripts(toLoad);

            var items = PacketListView.SelectedItems;

            foreach (var item in items)
            {
                var packet = item as PacketEntry;

                try
                {
                    Scripting_RunOnPacket(packet, provider);
                }
                catch (Exception exc)
                {
                    new ExtendedErrorView(
                        $"Scripting exception thrown for {packet.Message} - {packet.Name}.", exc.ToString(), "Error").ShowDialog();
                    return;
                }
            }
        }
Пример #2
0
        private void Scripting_ReloadScripts(object sender, RoutedEventArgs e)
        {
            if (_selectedScripts.Length == 0)
            {
                MessageBox.Show("No scripts were selected.", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }

            ScriptProvider = new ScriptingProvider();
            ScriptProvider.LoadScripts(_selectedScripts);
        }
Пример #3
0
        private void Scripting_SelectScripts(object sender, RoutedEventArgs e)
        {
            var scriptView = new ScriptSelectView("Scripts");

            scriptView.ShowDialog();
            var toLoad = scriptView.GetSelectedScripts();

            ScriptProvider = new ScriptingProvider();
            ScriptProvider.LoadScripts(toLoad);

            _selectedScripts = toLoad;
        }
Пример #4
0
        public BeforeInsertValidator(string tableName, string script, ScriptingProvider provider)
        {
            _tableName = tableName;
            _provider  = provider;

            _scriptingEngine = provider switch
            {
                ScriptingProvider.Lua => new LuaScriptingEngine(script),
                ScriptingProvider.Javascript => new JavascriptScriptingEngine(script),
                _ => throw new ArgumentOutOfRangeException(nameof(provider), provider, null)
            };
        }
Пример #5
0
        private void Scripting_RunOnPacket(PacketEntry item, ScriptingProvider provider)
        {
            PacketEventArgs args = null;

            string structText = null;

            structText = item.Direction == "S" ? _db.GetServerZoneStruct(int.Parse(item.Message, NumberStyles.HexNumber)) : _db.GetClientZoneStruct(int.Parse(item.Message, NumberStyles.HexNumber));


            if (structText != null)
            {
                if (structText.Length != 0)
                {
                    try
                    {
                        var structProvider = new Struct();
                        var structEntries  = structProvider.Parse(structText, item.Data);

                        args = new PacketEventArgs(item, structEntries.Item2, _mainWindow.LogView);
                    }
                    catch (Exception exc)
                    {
                        _mainWindow.LogView.WriteLine($"[EXCEPTION] Thrown for {item.Message} - {item.Name}: {exc}");
                        args = new PacketEventArgs(item, null, _mainWindow.LogView);
                    }
                }
            }
            else
            {
                args = new PacketEventArgs(item, null, _mainWindow.LogView);
            }

            if (args != null)
            {
                provider.ExecuteScripts(null, args);
            }
        }
Пример #6
0
 public CSharpPlugin(ScriptPluginMeta pluginMeta, IDependencyContainer container, ScriptingProvider provider, CSharpScriptContext context) : base(pluginMeta, container, provider, context)
 {
 }
Пример #7
0
        public Main()
        {
            _instance = this;

            this.FontGenerator = new Endogine.Text.FontGenerator();
            Endogine.Text.FontGenerator fg = this.FontGenerator;
            fg.UseStyleTemplate("Test1");
            fg.FontSize          = 20;
            fg.DefinedCharacters = Endogine.Text.FontGenerator.GetCharSet(Endogine.Text.FontGenerator.CharSet.Default, false, false);

            this.Score = new Score();
            this.Score.FontGenerator = fg;
            this.Score.Value         = 0;
            this.Score.Loc           = new EPointF(30, 30);

//			Endogine.Forms.Label lbl = new Endogine.Forms.Label();
//			lbl.FontGenerator = fg;
//			lbl.Text = "AbrakadagvAsk49Å";
//			lbl.Loc = new EPointF(100,100);


            this._scripter = ScriptingProvider.CreateScripter("boo");
            Hashtable htScripts = new Hashtable();

            htScripts.Add("Test", Endogine.Files.FileReadWrite.Read(Endogine.AppSettings.Instance.FindFile("test.boo")));
            this._interactorClassNames = new ArrayList();
            this._interactorClassNames.Add("Test");
            this._scripter.CompileMultiple(htScripts);


            //Hashtable htKeys = new Hashtable();
            //Endogine.KeysSteering _keys = new KeysSteering(htKeys);
            EH.Instance.KeyEvent += new KeyEventHandler(Instance_KeyEvent);

            Node   tracks = new Node();
            string sFile  = "Muppet_Show";

            sFile = "Flourish";
            float fSpeed = 1f;

            switch (sFile)
            {
            case "Flourish":
                tracks.GetOrCreate("Drums.Interactor").Text   = "X";
                tracks.GetOrCreate("Drums.LocSetter").Text    = "Default";
                tracks.GetOrCreate("Kalimba.Interactor").Text = "Shake";
                tracks.GetOrCreate("Kalimba.LocSetter").Text  = "Swirl";
                tracks.GetOrCreate("Piano.Interactor").Text   = "Default";
                sFile  = @"C:\WINDOWS\Media\" + sFile;
                fSpeed = 0.8f;
                break;

            case "Muppet_Show":
                tracks.GetOrCreate("HONKY TONK PIAN.Interactor").Text = "X";
                tracks.GetOrCreate("HONKY TONK PIAN.LocSetter").Text  = "Default";
                tracks.GetOrCreate("SAX.Interactor").Text             = "Shake";
                tracks.GetOrCreate("SAX.LocSetter").Text   = "Swirl";
                tracks.GetOrCreate("TUBA.Interactor").Text = "Default";
                break;
            }

            this._factory = new InteractorFactory(tracks);
            this._factory.ReadAheadMsecs = this._readAheadMsecs;

            sFile = Endogine.AppSettings.Instance.FindFile(sFile + ".mid");
            //sFile = @"C:\WINDOWS\Media\Flourish.MID"; //ONESTOP
            MidiFileReader reader = new MidiFileReader(sFile);

            OutputDevice output = new OutputDevice(0);

            output.Open(0);
            this._sequencer          = new SequencerBase(null, output);
            this._sequencer.Sequence = reader.Sequence;

            this._sequencer.PlaybackSpeed = fSpeed;
            this._sequencer.Start();
            //			this._sequencer.Tempo = 40;

            Endogine.Midi.Devices.EmptyMidiSender midiSender = new Endogine.Midi.Devices.EmptyMidiSender();
            //ScreenOutputDevice midiSender = new ScreenOutputDevice(this.progressBar1);
            this._sequencerPre          = new SequencerBase(null, midiSender);
            this._sequencerPre.Sequence = reader.Sequence;

            TrackPlayer tp;

            for (int i = 0; i < tracks.ChildNodes.Count; i++)
            {
                tp = this._sequencerPre.Player.GetTrackPlayer(tracks[i].Name);                 //Drums
                tp.TrackMessage += new Endogine.Midi.TrackPlayer.TrackMessageDelegate(tp_TrackMessage);
            }

            this._sequencerPre.Start();
            this._sequencerPre.Position      = (int)(this._sequencer.PlaybackTempo * this._readAheadMsecs / 1000 * 6);  //PlaybackTempo
            this._sequencerPre.PlaybackSpeed = this._sequencer.PlaybackSpeed;
            this._sequencerPre.Tempo         = this._sequencer.Tempo;
        }
Пример #8
0
        public static async Task <int> MainApp(string[] args)
        {
            var parser             = new ConfigurationParser();
            var dependencyResolver = new DefaultDependencyResolver();

            Settings     settings;
            const string SettingsFilename = "settings.json";

            try
            {
                string contents = File.ReadAllText(SettingsFilename);
                settings = JsonConvert.DeserializeObject <Settings>(contents);
            }
            catch (Exception ex)
            {
                switch (ex)
                {
                case FileNotFoundException fex:
                    System.Console.WriteLine($"{SettingsFilename} could not be found.");
                    break;

                case UnauthorizedAccessException aux:
                    System.Console.WriteLine($"Access to {SettingsFilename} was denied.");
                    break;

                case JsonException jex:
                    System.Console.WriteLine($"Could not understand {SettingsFilename}: {jex.Message}");
                    break;

                default:
                    System.Console.WriteLine($"There was an error loading {SettingsFilename}: {ex.Message}");
                    break;
                }

                settings = new Settings
                {
                    DatabaseType = DatabaseType.Memory,
                    Listening    = new ListenSettings {
                        HttpPort = 5000, Host = "*", Scheme = Scheme.Http, WebSocketEnabled = true
                    }
                };
            }

            settings = parser.Parse(settings, args);

            if (settings.Install)
            {
                var installer = new Installer();
                await installer.Run(null);

                return(-1);
            }

            ITransactionStorage storage = CreateStorageFromSettings(settings);

            try
            {
                System.Console.WriteLine("Initializing a connection to the database provider...");
                await storage.OpenAsync();
            }
            catch (System.Net.Sockets.SocketException ex)
            {
                System.Console.WriteLine(ex.Message);
                return(-1);
            }

            var httpServer = new HttpServer(settings.Listening.BuildUri(), storage);

            var location         = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            var dir              = Directory.CreateDirectory(Path.Combine(location, "Modules"));
            var modules          = dir.GetFiles("*.dll", SearchOption.TopDirectoryOnly);
            var muteScriptRunner = new MuteScriptRunner();

            muteScriptRunner.AddImplicitType("Console", typeof(IEchoService));
            muteScriptRunner.AddImplicitType("IPaymentService", typeof(IPaymentService));
            dependencyResolver.Register <IEchoService>(new EchoService(), null);
            dependencyResolver.Register <IPaymentService>(new MockPaymentService(), "mock");

            foreach (var mod in modules)
            {
                try
                {
                    using (var fs = mod.OpenRead())
                    {
                        var asm = AssemblyLoadContext.Default.LoadFromStream(fs);

                        var types = asm.ExportedTypes;
                    }
                }
                catch (Exception)
                {
                }
            }

            ScriptingProvider provider = new ScriptingProvider(storage);

            provider.RegisterLanguageProvider("mute", muteScriptRunner);
            dependencyResolver.Register <IScriptRunner>(provider, null);

            var listeningThread = new Thread(async() => await httpServer.Start(provider))
            {
                Name = "Web Server"
            };

            listeningThread.Start();


            TransactionProcessor processor = new TransactionProcessor(storage, provider, dependencyResolver);

            var cancelSource = new CancellationTokenSource();

            _cancel = cancelSource.Token;
            System.Console.CancelKeyPress += async(sender, ev) =>
            {
                await httpServer.Stop();
            };

            while (!cancelSource.IsCancellationRequested)
            {
                await processor.RunAsync(cancelSource.Token);
            }

            httpServer.Wait();

            return(0);
        }