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); }
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; } }
public static void ToggleSimulation() { if (_simulationSpeed == SimulationSpeed.Stopped) { SetSimulationSpeed(_lastSpeed); _lastSpeed = SimulationSpeed.Stopped; } else { _lastSpeed = _simulationSpeed; SetSimulationSpeed(SimulationSpeed.Stopped); } }
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()); }
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; }
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); }
//-------------------------------------------------------------------------------------------------- // 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
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; }
public static void SetSimulationSpeed(SimulationSpeed speed) { GameManager.SetSimulationSpeed(speed); }