Example #1
0
        private static void Init()
        {
            pausing = true;
            TextWriter tw;

            if (GUIenabled)
            {
                // Get and update the program run number.
                try {
                    TextReader tr     = new StreamReader(@"C:\RhythmcatScreenshots\config.txt");
                    string     numStr = tr.ReadToEnd().Trim();
                    tr.Close();
                    programRunNum = int.Parse(numStr) + 1;
                } catch {
                    programRunNum = 1;
                }
                tw = new StreamWriter(@"C:\RhythmcatScreenshots\config.txt", false);
                tw.WriteLine(programRunNum);
                tw.Close();
            }

            workspace = new Workspace(programRunNum, GUIenabled, curMelodyIndex);

            coderack = new Coderack(workspace);
            slipnet  = new Slipnet(coderack, workspace);

            workspace.Coderack = coderack;
            workspace.Slipnet  = slipnet;
            coderack.Slipnet   = slipnet;           // todo must be in this order to get coderack and slipnet linked to each other.

            if (GUIenabled)
            {
                workspace.CreateTheForms();
            }

            // Reset the big objects.
            workspace.Reset();
            coderack.Reset();
            slipnet.Reset();

            if (GUIenabled)
            {
                workspace.frmWorkspace.setProgramSpeedEvent += new EventHandler <WorkspaceForm.SetProgramSpeedEventArgs>(frmWorkspace_setProgamSpeedEvent);
                workspace.frmWorkspace.setDetailLevelEvent  += new EventHandler <WorkspaceForm.SetDetailLevelEventArgs>(frmWorkspace_setDetailLevelEvent);
                workspace.frmWorkspace.restartEvent         += new EventHandler <WorkspaceForm.RestartEventArgs>(frmWorkspace_restartEvent);
                workspace.frmWorkspace.pauseEvent           += new EventHandler <EventArgs>(frmWorkspace_pauseEvent);
                workspace.Close += new EventHandler <EventArgs>(workspace_Close);
            }

            List <Assembly> assemblies = new List <Assembly>();             // the list of assemblies containing codelets.

            assemblies.Add(Assembly.GetExecutingAssembly());                // Adds the musicat assembly.

            //assemblies.Add(Assembly.GetAssembly(typeof(MeasureLinkerCodelet)));	// Add the Codelets assembly.

            // Prepopulate the coderack with the codelets found in the source code tagged with the CodeletAttribute.
            coderack.Assemblies = assemblies;
            coderack.Populate();

            if (GUIenabled)
            {
                // Write a file containing the list of active codelets for this run.
                tw = new StreamWriter(string.Format(@"C:\RhythmcatScreenshots\codelets-run-{0}.txt", programRunNum), false);
                foreach (string name in coderack.GetActiveCodeletNames())
                {
                    tw.WriteLine(name);
                }
                tw.Close();
            }

            // Setup the slipnet.
            slipnet.Initialize();

            if (GUIenabled)
            {
                Thread.Sleep(100);

                lock (restartLock) {
                    if (!restarting)
                    {
                        workspace.Draw(coderack);
                    }
                }
            }
        }