Ejemplo n.º 1
0
 private void RunScript(string file)
 {
     if (script != null)
     {
         script.Stop();
     }
     script = LunaScript.CompileScript(file);
     if (script != null)
     {
         script.Start(luna);
     }
 }
Ejemplo n.º 2
0
        public static LunaScript CompileScript(string fileName)
        {
            string code;

            try {
                code = File.ReadAllText(fileName);
            } catch {
                MessageBox.Show("Błąd wczytywania pliku",
                                "Błąd wczytywania pliku",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(null);
            }

            Microsoft.CSharp.CSharpCodeProvider csProvider = new Microsoft.CSharp.CSharpCodeProvider();

            CompilerParameters options = new CompilerParameters()
            {
                GenerateExecutable = false,
                GenerateInMemory   = true,
            };

            options.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);
            options.ReferencedAssemblies.Add("System.dll");


            CompilerResults result;

            result = csProvider.CompileAssemblyFromSource(options, code);

            if (result.Errors.HasErrors)
            {
                StringBuilder builder = new StringBuilder();
                foreach (var err in result.Errors)
                {
                    builder.AppendLine(err.ToString());
                }

                MessageBox.Show(builder.ToString(),
                                "Błędy kompilacji",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(null);
            }

            if (result.Errors.HasWarnings)
            {
                StringBuilder builder = new StringBuilder();
                foreach (var err in result.Errors)
                {
                    builder.AppendLine(err.ToString());
                }

                MessageBox.Show(builder.ToString(),
                                "Ostrzeżenia kompilacji",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
            }

            foreach (Type type in result.CompiledAssembly.GetExportedTypes())
            {
                if (typeof(LunaScript).IsAssignableFrom(type.BaseType))
                {
                    ConstructorInfo constructor = type.GetConstructor(System.Type.EmptyTypes);
                    if (constructor != null && constructor.IsPublic)
                    {
                        LunaScript scriptObject = constructor.Invoke(null) as LunaScript;
                        if (scriptObject != null)
                        {
                            return(scriptObject);
                        }
                        else
                        {
                            MessageBox.Show("Wystąpił błąd.", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Nie znaleziono konstruktora.", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }

            MessageBox.Show("Nie znaleziono klasy implementującej interfejs LunaScript.\n" +
                            @"namespace Luna {
public interface LunaScript {
		void Run(double[] leftPixels, double[] rightPixels, ref double leftWhite, ref double rightWhite);
	}
}",
                            "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);

            return(null);
        }
Ejemplo n.º 3
0
        private void switchTo(int index)
        {
            switch (previousTabIndex)
            {
                case 0:
                    script.Stop();
                    break;

                case 1:
                    script.Stop();
                    break;

                case 2:
                    previewControl1.StopRenderLoop();
                    break;

                case 3:
                    script.Stop();
                    break;

                case 4:
                    script.Stop();
                    break;

                case 5:
                    script.Stop();
                    break;

                case 6:
                    script.Stop();
                    break;
            }
            previousTabIndex = index;
            switch (previousTabIndex)
            {
                case 0:
                    script = new SettingsScript();
                    script.Start(luna);
                    break;

                case 1:
                    script = new LightScript();
                    script.Start(luna);
                    break;

                case 2:
                    previewControl1.StartRenderLoop();
                    break;

                case 4:
                    script = new SoundScript();
                    (script as SoundScript).spectrumViz = spectrumVisualizerControl1;
                    script.Start(luna);
                    break;

                case 5:
                    script = new FlameScript();
                    script.Start(luna);
                    break;

                case 6:
                    script = new PlasmaScript();
                    script.Start(luna);
                    break;
            }
        }
Ejemplo n.º 4
0
 private void StopButton_Click(object sender, EventArgs e)
 {
     script.Stop();
     script = null;
 }
Ejemplo n.º 5
0
 private void RunScript(string file)
 {
     if (script != null)
     {
         script.Stop();
     }
     script = LunaScript.CompileScript(file);
     if (script != null)
     {
         script.Start(luna);
     }
 }
Ejemplo n.º 6
0
        private void switchTo(int index)
        {
            switch (previousTabIndex)
            {
            case 0:
                script.Stop();
                break;

            case 1:
                script.Stop();
                break;

            case 2:
                previewControl1.StopRenderLoop();
                break;

            case 3:
                script.Stop();
                break;

            case 4:
                script.Stop();
                break;

            case 5:
                script.Stop();
                break;

            case 6:
                script.Stop();
                break;
            }
            previousTabIndex = index;
            switch (previousTabIndex)
            {
            case 0:
                script = new SettingsScript();
                script.Start(luna);
                break;

            case 1:
                script = new LightScript();
                script.Start(luna);
                break;

            case 2:
                previewControl1.StartRenderLoop();
                break;

            case 4:
                script = new SoundScript();
                (script as SoundScript).spectrumViz = spectrumVisualizerControl1;
                script.Start(luna);
                break;

            case 5:
                script = new FlameScript();
                script.Start(luna);
                break;

            case 6:
                script = new PlasmaScript();
                script.Start(luna);
                break;
            }
        }
Ejemplo n.º 7
0
 private void StopButton_Click(object sender, EventArgs e)
 {
     script.Stop();
     script = null;
 }