public void RealTimeProcessEndDay() { TemperatureManager.ProcessDay(); buckets.ApplyDensityIllnessPenalty(); foreach (Civilian civ in civilians) { civ.UpdateTemperature(TemperatureManager.Temperature); civ.ProcessDay(); } if (realTimeState == RealTimeState.SelectingDestionation) { actionToPoint.CancelPlaceAction(); realTimeState = RealTimeState.Idle; } else if (realTimeState == RealTimeState.DisplayingListen) { currentResultsScreen.ExitScreen(); } }
private void ChangeState(RealTimeState newState) { State = newState; stateTime = Time.CurrentTime.Now; StateChanged.Fire(newState); }
public void RealTimeProcessStartDay() { actionsRemaining = totalActionsPerDay; realTimeState = RealTimeState.Idle; }
private void HandleInputReal(InputState input) { if (realTimeState == RealTimeState.SelectingDestionation) { if (input.GetMouseDown()) { Point? mousePoint = grid.GetGridPointFromMousePosition(input.GetMousePosition()); if(mousePoint.HasValue) { Rectangle actualPosition = grid.GetGridRectangleFromGridPoint(mousePoint.Value); actionToPoint.PlaceAction(actionToPointLocation, mousePoint.Value, new Vector2(actualPosition.X, actualPosition.Y), buckets); realTimeState = RealTimeState.Idle; --actionsRemaining; //And replensh the ui actions.Add(GameAction.CreateNewActionFromAction(actionToPoint, GetUiPosition(actionToPoint.ActionType))); //Are we done for today? if (actionsRemaining == 0) { EndDay(); } } } } }
private void ActionPlaced(GameAction droppedAction, Point gridLocation, Rectangle gridPosition) { if (droppedAction.ActionType == ActionType.DirectAction) { //Get some more input realTimeState = RealTimeState.SelectingDestionation; actionToPoint = droppedAction; actionToPointLocation = gridLocation; } else { //we are done for this action droppedAction.PlaceAction(gridLocation, buckets, gridPosition); // Decrease remaining actions --actionsRemaining; //And replensh the ui actions.Add(GameAction.CreateNewActionFromAction(droppedAction, GetUiPosition(droppedAction.ActionType))); List<Civilian> nearbyCivilians = new List<Civilian>(); ProcessingBucket[] adjacentBuckets = buckets.getNeighbours(gridLocation.X, gridLocation.Y); foreach (ProcessingBucket bucket in adjacentBuckets) { nearbyCivilians.AddRange(bucket.GetCivilians().Where(member => member.IsDead == false)); } currentResultsScreen= new AudioResultsScreen(nearbyCivilians, gridLocation.Y >= 9); parentScreen.ScreenManager.AddScreen(currentResultsScreen, parentScreen.ControllingPlayer); realTimeState = RealTimeState.DisplayingListen; //Are we done for today? -- NO PEOPLE CAN STILL MOVE /*if (actionsRemaining == 0) { EndDay(); }*/ } }
public void UpdateReal(GameTime gameTime, out bool missionRunning, bool isActive) { if (realTimeState == RealTimeState.DisplayingListen) { currentResultsScreen.UpdateData(); } if (realTimeState == RealTimeState.DisplayingListen && isActive) { realTimeState = RealTimeState.Idle; } foreach (Actions.GameAction action in actions) { action.Update(gameTime); } buckets.PopulateBuckets(); buckets.ApplyDensityIllnessPenalty(); foreach (Civilian civilian in civilians) { civilian.Update(gameTime); } missionRunning = this.missionRunning; }