public void Save(PersistedSimulation simulation)
 {
     if (!CurrentFilenameIsKnown)
     {
         throw new InvalidOperationException();
     }
     SaveFile(_lastSaveFileName, simulation);
 }
 public SimulationOptions(PersistedSimulation persistedSimulation, ProcessOptions processOptions)
 {
     _persistedSimulation = persistedSimulation;
     ProcessOptions       = processOptions;
 }
Exemple #3
0
        private void RegisterAreaRenderHelper(TerraformingOptions terraformingOptions = null, PersistedSimulation persistedSimulation = null)
        {
            _gamePanel.Controls.Clear();

            var areaOptions = terraformingOptions != null
                ? new SimulationOptions(terraformingOptions,
                                        new ProcessOptions(() => showGrowthPathFinding.Checked, () => enableMoneyCheatToolStripMenuItem.Checked))
                : new SimulationOptions(persistedSimulation,
                                        new ProcessOptions(() => showGrowthPathFinding.Checked, () => enableMoneyCheatToolStripMenuItem.Checked));

            if (_areaRenderHelper != null)
            {
                _areaRenderHelper.Stop();
                ReloadGamePanel();
            }

            _areaRenderHelper = new SimulationRenderHelper(
                gamePanel: _gamePanel,
                renderZoneOptions: new RenderZoneOptions(
                    showDebugGrowthPathFinding: () => showGrowthPathFinding.Checked,
                    selectedGraphicsManagerFunc: () => _graphicsManagerSelection.GetCurrentOption(),
                    getCurrentOverlayOptionFunc: () => _overlaySelection.GetCurrentOption()
                    ),
                options: areaOptions
                );

            _areaRenderHelper.SimulationSession.OnAreaMessage +=
                (_sender, _e) =>
                statusStrip1.BeginInvoke(new MethodInvoker(() => { toolStripStatusLabel1.Text = _e.Message; }));

            _areaRenderHelper.SimulationSession.OnAreaHotMessage +=
                (_sender, _e) =>
            {
                if (_webserverForm == null)
                {
                    MessageBox.Show(_e.Message, _e.Title, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    statusStrip1.BeginInvoke(new MethodInvoker(() => { toolStripStatusLabel1.Text = _e.Message; }));
                }
            };

            _areaRenderHelper.SimulationSession.OnCityBudgetValueChanged +=
                (_sender, _e) =>
                statusStrip1.BeginInvoke(new MethodInvoker(() =>
            {
                foreach (var x in new[]
                {
                    new
                    {
                        LabelControl = cityBudgetLabel,
                        Text = _e.EventData.CurrentAmountDescription,
                        Amount = _e.EventData.CurrentAmount
                    },
                    new
                    {
                        LabelControl = projectedIncomeLabel,
                        Text = _e.EventData.ProjectedIncomeDescription,
                        Amount = _e.EventData.ProjectedIncome
                    }
                })
                {
                    x.LabelControl.Text      = x.Text;
                    x.LabelControl.ForeColor = x.Amount >= 0
                                ? SystemColors.ControlText
                                : Color.Red;
                }
            }));

            _areaRenderHelper.SimulationSession.OnYearAndOrMonthChanged +=
                (_sender, _e) =>
            {
                if (statusStrip1.IsHandleCreated)
                {
                    statusStrip1.BeginInvoke(new MethodInvoker(
                                                 () => { monthAndYearLabel.Text = _e.EventData.GetCurrentDescription(); }));
                }
            };

            _areaRenderHelper.Start();
            _citySaveStateController.ToggleSaveFunctionalityAvailable();
        }
 public void SaveFile(string fileName, PersistedSimulation simulation)
 {
     using (var file = File.Open(fileName, FileMode.Create, FileAccess.Write))
         _xmlSerializer.Serialize(file, simulation);
     _lastSaveFileName = fileName;
 }