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;
        }