Пример #1
0
    /// <summary>
    /// The initialize function will setup all of the elements of the project. Namely SFML components.
    /// </summary>
    /// <param name="d">A reference to the primary data structure in the application.</param>
    public void Initialize(Data d)
    {
        data = d;

        ProgramDisplayTexture = new RenderTexture(data.Settings.SimulationResolution.X, data.Settings.SimulationResolution.Y);
        ProgramInfoTexture    = new RenderTexture(data.Settings.InformationResolution.X, data.Settings.InformationResolution.Y);
        ProgramWindow         = new RenderWindow(new VideoMode(data.Settings.ScreenResolution.X, data.Settings.ScreenResolution.Y), "Disaster Reactor - CS4330 Project", Styles.Close | Styles.Titlebar);

        Button.RenderWindow       = ProgramWindow;
        RadioButton.RenderWindow  = ProgramWindow;
        ToggleButton.RenderWindow = ProgramWindow;
        ProgramWindow.Closed     += onWindowClose;

        ProgramWindow.Clear(Color.White);
        ProgramWindow.Display();
        ProgramWindow.RequestFocus();

        RegularFont       = new Font("Anonymous_Pro.ttf");
        Button.ButtonFont = RegularFont;
        BoldFont          = new Font("Anonymous_Pro_B.ttf");

        HeaderText               = new Text("Initializing...", RegularFont);
        HeaderText.Color         = Color.Black;
        HeaderText.Font          = RegularFont;
        HeaderText.CharacterSize = data.Settings.InformationFontSize + 4;
        HeaderText.Position      = new Vector2f(5, 5);

        //INSPECT MODE HEADER TEXT
        ModesHeaderText               = new Text("Inspect Mode", RegularFont);
        ModesHeaderText.Color         = Color.Black;
        ModesHeaderText.CharacterSize = data.Settings.InformationFontSize + 10;

        //PAINT MODE HEADER TEXT
        InfoHeaderText               = new Text("Mode", RegularFont);
        InfoHeaderText.Color         = Color.Black;
        InfoHeaderText.CharacterSize = data.Settings.InformationFontSize + 10;
        InfoHeaderText.Origin        = new Vector2f(InfoHeaderText.GetLocalBounds().Width / 2f, InfoHeaderText.GetLocalBounds().Height / 2f);

        TextTemplate               = new Text("VOID", RegularFont);
        TextTemplate.Color         = Color.Black;
        TextTemplate.CharacterSize = data.Settings.InformationFontSize;

        //Creating Panels
        InspectModePanel = new Panel(new Vector2f(data.Settings.InformationResolution.X * 0.85f, data.Settings.InformationResolution.Y * 0.38f), new Vector2f(data.Settings.InformationResolution.X / 2f, data.Settings.InformationResolution.Y * 0.37f), Panel.PanelModes.InspectMode);
        PaintModePanel   = new Panel(new Vector2f(data.Settings.InformationResolution.X * 0.85f, data.Settings.InformationResolution.Y * 0.30f), new Vector2f(data.Settings.InformationResolution.X / 2f, data.Settings.InformationResolution.Y * 0.05f), Panel.PanelModes.PaintMode);

        //Creating Buttons
        LoadMapButton = new Button("loadmapimage.png", new Vector2f(data.Graphics.ProgramInfoTexture.Size.X / 5f, data.Graphics.ProgramInfoTexture.Size.Y * 0.95f), Button.ButtonFunctions.LoadMap);
        RunSimButton  = new Button("runsimimage.png", new Vector2f(4 * data.Graphics.ProgramInfoTexture.Size.X / 5f, data.Graphics.ProgramInfoTexture.Size.Y * 0.95f), Button.ButtonFunctions.RunSim);

        //Creating Radio Buttons
        InspectModeButton     = new RadioButton(new Vector2f(PaintModePanel.PanelShape.GetGlobalBounds().Width / 2f - 150, 160), RadioButton.ButtonFunctions.Inspect);
        PaintDamageButton     = new RadioButton(new Vector2f(PaintModePanel.PanelShape.GetGlobalBounds().Width / 2f - 150, 210), RadioButton.ButtonFunctions.PaintDamage);
        PaintDifficultyButton = new RadioButton(new Vector2f(PaintModePanel.PanelShape.GetGlobalBounds().Width / 2f - 150, 260), RadioButton.ButtonFunctions.PaintDifficulty);
        PaintValueButton      = new RadioButton(new Vector2f(PaintModePanel.PanelShape.GetGlobalBounds().Width / 2f - 150, 310), RadioButton.ButtonFunctions.PaintValue);


        //Creating Toggle Buttons
        ToggleAgentsButton = new ToggleButton(new Vector2f(80, 182), ToggleButton.ToggleOptions.ToggleAgents);
        ToggleAgentsButton.ChangeToggleStatus(true);
        ToggleEnvironmentButton = new ToggleButton(new Vector2f(80, 230), ToggleButton.ToggleOptions.ToggleEnvironment);
        ToggleEnvironmentButton.ChangeToggleStatus(true);
        ToggleSpawnsButton = new ToggleButton(new Vector2f(80, 278), ToggleButton.ToggleOptions.ToggleSpawns);
        ToggleSpawnsButton.ChangeToggleStatus(true);
        ToggleTrailsButton = new ToggleButton(new Vector2f(80, 326), ToggleButton.ToggleOptions.ToggleTrails);
        ToggleTrailsButton.ChangeToggleStatus(true);
    }
    public override void Update()
    {
        foreach (Agent a in data.Agents)
        {
            a.Update();
        }

        if (!mouseClickUsable) // ugly placement for custom mouse click delay
        {
            mouseClickDelay -= data.Time.deltaTime;
            if (mouseClickDelay <= 0)
            {
                mouseClickUsable = true;
                mouseClickDelay  = 0.25f;
            }
        }

        if (Mouse.IsButtonPressed(Mouse.Button.Left) && mouseClickUsable) // check for toggle or print button clicks
        {
            mouseClickUsable = false;
            ToggleButton ClickedToggleButton = ToggleButton.GetToggleButtonClicked();
            if (ClickedToggleButton != null)
            {
                ClickedToggleButton.ChangeToggleStatus(!ClickedToggleButton.IsToggled);
                switch (ClickedToggleButton.ToggleOption)
                {
                case ToggleButton.ToggleOptions.ToggleAgents:
                {
                    data.RenderAgents = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleEnvironment:
                {
                    renderEnv = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleSpawns:
                {
                    data.RenderSpawn = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleTrails:
                {
                    renderTra = ClickedToggleButton.IsToggled;
                    break;
                }
                }
            }
            else
            {
                Button ClickedButton = Button.GetButtonClicked();
                if (ClickedButton != null)
                {
                    if (ClickedButton.Function == Button.ButtonFunctions.PrintPDF)
                    {
                        string thePath;
                        FolderBrowserDialog FBD = new FolderBrowserDialog();
                        if (FBD.ShowDialog() == DialogResult.OK)
                        {
                            thePath = FBD.SelectedPath;
                        }
                        else
                        {
                            thePath = "NULL";
                        }
                        PrintResults(thePath);
                    }
                    else if (ClickedButton.Function == Button.ButtonFunctions.ExitSim)
                    {
                        data.Input.EscapeKeyPressed = true;
                    }
                }
            }
        }

        //if(data.Input.CheckKeyPressed(Keyboard.Key.A))
        //{
        //    data.RenderAgents = !data.RenderAgents;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.S))
        //{
        //    data.RenderSpawn = !data.RenderSpawn;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.E))
        //{
        //    renderEnv = !renderEnv;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.T))
        //{
        //    renderTra = !renderTra;
        //}


        if (renderEnv)
        {
            data.Graphics.ProgramDisplayTexture.Draw(SEnv, new RenderStates(BlendMode.Add));
        }

        if (renderTra)
        {
            TTra.Update(data.Trails);

            data.Graphics.ProgramDisplayTexture.Draw(STra, new RenderStates(BlendMode.Add));
        }


        data.Graphics.ProgramDisplayTexture.Display();
    }