Пример #1
0
    public static void Initialize()
    {
        //setup location
        RuntimeData.localMapData.Instantiate();

        _fleets = new List <Fleet>();
        _ships  = new List <ShipEntity>();

        //collect all entities
        _resources = Object.FindObjectsOfType <ResourceEntity>().ToList();

        _lastSpeed = SimulationSpeed.Normal;

        //setup ui
        CommandMapper.Initialize();

        //setup eventual fleets
        for (int i = 0; i < RuntimeData.localMapData.fleets.Count; i++)
        {
            AddFleet(RuntimeData.localMapData.fleets[i]);
        }

        //enable/disable leave status
        OnGameStatusUpdated?.Invoke(_ships.All(s => s.teamID == 0));

        CameraManager.getInstance.JumpTo(_ships[0].transform.position, true);
        CoroutineSurrogate.getInstance.StartCoroutine(TickAICommanders());
        CoroutineSurrogate.getInstance.StartCoroutine(TurnTickAsync());

        SetSimulationSpeed(SimulationSpeed.Stopped);
    }
Пример #2
0
 void OnSimulationSpeedChanged(SimulationSpeed currentSpeed)
 {
     //update time buttons
     for (int i = 0; i < _simulationSpeed.transform.childCount; i++)
     {
         Text t = _simulationSpeed.transform.GetChild(i).GetComponentInChildren <Text>();
         t.color = i == (int)currentSpeed ? _simulationSpeedCurrentColor : _simulationSpeedDefaultColor;
     }
 }
Пример #3
0
 public static void ToggleSimulation()
 {
     if (_simulationSpeed == SimulationSpeed.Stopped)
     {
         SetSimulationSpeed(_lastSpeed);
         _lastSpeed = SimulationSpeed.Stopped;
     }
     else
     {
         _lastSpeed = _simulationSpeed;
         SetSimulationSpeed(SimulationSpeed.Stopped);
     }
 }
Пример #4
0
    public void PlaySimulation(SimulationSpeed newSimulationSpeed)
    {
        currentSpeed = newSimulationSpeed;
        switch (currentSpeed)
        {
        case SimulationSpeed.Paused:
            _instructionsPerSecond = 0;
            break;

        case SimulationSpeed.Normal:
            _instructionsPerSecond = instructionsPerSecondNormal;
            break;

        case SimulationSpeed.Fast:
            _instructionsPerSecond = instructionsPerSecondFast;
            break;

        case SimulationSpeed.Faster:
            _instructionsPerSecond = instructionsPerSecondFaster;
            break;

        case SimulationSpeed.Fastest:
            _instructionsPerSecond = instructionsPerSecondFastest;
            break;
        }

        Debug.Log(gameState);
        if (gameState != State.Construction)
        {
            return;
        }

        Debug.Log("PlaySimulation");

        gameState = State.Simulation;

        StartCoroutine(SimulationCoroutine());
    }
Пример #5
0
    public void StopSimulation()
    {
        currentSpeed = SimulationSpeed.Stopped;

        gameState = State.Construction;

        Debug.Log("StopSimulation");
        // Reenable Input


        foreach (GrabbablePart part in parts)
        {
            if (part != null)
            {
                part.ParentConstruction.DestroySelf();
//				ObjectPoolManager.DestroyObject(part.ParentConstruction);
            }
        }
        parts.Clear();


        completedConstructions = 0;
    }
Пример #6
0
    public static void SetSimulationSpeed(SimulationSpeed speed)
    {
        float t = 0;

        switch (speed)
        {
        case SimulationSpeed.Stopped:
            t = 0f;
            break;

        case SimulationSpeed.Slow:
            t = .2f;
            break;

        case SimulationSpeed.Normal:
            t = 1f;
            break;

        case SimulationSpeed.Fast:
            t = 2f;
            break;

        case SimulationSpeed.VeryFast:
            t = 4f;
            break;

        default:
            t = 1f;
            break;
        }

        _simulationSpeed = speed;

        Time.timeScale = t;

        OnSimulationSpeedChanged?.Invoke(_simulationSpeed);
    }
Пример #7
0
        //--------------------------------------------------------------------------------------------------
        // Constructor
        //--------------------------------------------------------------------------------------------------

        #region MainWindow

        public MainWindow()
        {
            Loaded += WainWindowOnLoad;

            InitializeComponent();

            #region InitalizeStartEndDate

            DatePickerStartDate.SelectedDate = DateTime.Now;
            DatePickerEndDate.SelectedDate   = DateTime.Now.AddMonths(1);

            #endregion

            #region InitiaizeDrawingSystem

            _drawingSystem = new DrawingOnCoordinateSystem(0, 300);
            DrawingSystem.VerticalAlignment   = VerticalAlignment.Stretch;
            DrawingSystem.HorizontalAlignment = HorizontalAlignment.Stretch;
            DrawingSystem.SetValue(Grid.RowProperty, 1);
            DrawingSystem.SetValue(Grid.ColumnProperty, 1);
            DrawingSystem.SetValue(Grid.ColumnSpanProperty, 2);

            MainGrid.Children.Add(DrawingSystem);

            #endregion

            #region IntiliazeBackgroundWorker

            _backGroundWorkerNonVisualization = new BackgroundWorker();
            _backGroundWorkerNonVisualization.WorkerReportsProgress      = true;
            _backGroundWorkerNonVisualization.WorkerSupportsCancellation = true;
            _backGroundWorkerNonVisualization.DoWork             += new System.ComponentModel.DoWorkEventHandler(BackGroundWorkerNonVisualizationDoWork);
            _backGroundWorkerNonVisualization.ProgressChanged    += new ProgressChangedEventHandler(BackGroundWorkerNonVisualizationProgressChanged);
            _backGroundWorkerNonVisualization.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackGroundWorkerNonVisualizationRunWorkerCompleted);

            #endregion

            ComboBoxTimeBase.SelectedIndex = 0;
            _simulationRunning             = false;
            _simulationInitialized         = false;

            _simulationTimer      = new DispatcherTimer();
            SimulationTimer.Tick += PlaySimulationTick;
            TextBoxSimSpeed.Text  = SimulationSpeed.ToString();

            CreateModel();

            #region InitializeClock

            _simulationDisplayClock = new DrawAnalogClockWithDate(Colors.Black, 0, 0);
            SimulationDisplayClock.VerticalAlignment   = VerticalAlignment.Stretch;
            SimulationDisplayClock.HorizontalAlignment = HorizontalAlignment.Stretch;
            SimulationDisplayClock.SetValue(Grid.RowProperty, 0);
            SimulationDisplayClock.SetValue(Grid.ColumnProperty, 2);

            MainGrid.Children.Add(SimulationDisplayClock);

            Loaded += delegate
            {
                SimulationDisplayClock.Initialize(SimulationModel.StartTime);
            };

            #endregion
        } // end of MainWindow
Пример #8
0
        private void Update(EvaluationContext context)
        {
            _renewPower      = RenewPower.GetValue(context);
            _renewHeating    = RenewHeating.GetValue(context);
            _renewMobility   = RenewMobility.GetValue(context);
            _simulationSpeed = SimulationSpeed.GetValue(context);
            var startPressed = TriggerSimulation.GetValue(context);

            switch (_state)
            {
            case States.Idle:
            case States.ShowConfiguration:
                SourceOil.Value       = SelectedSimulationMode.OilConsumption;
                SourceGas.Value       = SelectedSimulationMode.GasConsumption;
                SourceCoalMines.Value = SelectedSimulationMode.CoalConsumption;
                SourceCoal.Value      = SelectedSimulationMode.CoalConsumption;
                break;

            case States.Simulating:
            {
                // SourceOil.Value = 0;
                // SourceGas.Value = 0;
                // SourceCoalMines.Value = 0;
                // SourceCoal.Value = 0;

                var complete = Progress >= 1;
                if (complete)
                {
                    _lastInteractionTime = RunTime;
                    SetState(States.SimulationComplete);
                }

                //SimulationProgress.Value = (float)Progress;
                break;
            }

            case States.SimulationComplete:
            {
                // Update result animation?
                // Eventually switch to idle mode
                break;
            }
            }

            if (_state != States.SimulationComplete)
            {
                RestCarbon.Value         = GetRestCarbon();
                Temperature.Value        = GetTemperature();
                RestCarbonRatio.Value    = GetRestCarbonRatio();
                Date.Value               = GetDate();
                SimulationProgress.Value = (float)Progress;
            }

            FreezeParticleGrowth.Value = _state == States.SimulationComplete;

            if (startPressed != _startPressed)
            {
                if (startPressed)
                {
                    SetState(States.Simulating);
                }

                _startPressed = startPressed;
            }

            ResetParticles.Value = false;
            var newSimMode = GetModeFromRenewalSetting();

            if (newSimMode != _simulationModeIndex)
            {
                if (_state != States.ShowConfiguration)
                {
                    ResetParticles.Value = true;
                }

                SetState(States.ShowConfiguration);
                _simulationModeIndex = newSimMode;
            }

            if (_state != States.Simulating && _state != States.Idle)
            {
                if (RunTime - _lastInteractionTime > IdleTimeOut)
                {
                    SetState(States.Idle);
                }
            }

            IsSimulationRunning.Value = _state == States.Simulating;
        }
Пример #9
0
 public static void SetSimulationSpeed(SimulationSpeed speed)
 {
     GameManager.SetSimulationSpeed(speed);
 }