Inheritance: IDisposable
        public PageSelectLanguageViewModel(IRegionManager regionManager, AppState state)
        {
            _state = state;
            _regionManager = regionManager;

            SelectLanguage = new DelegateCommand<string>(SetLanguage);
        }
        public PageSettingsViewModel(IRegionManager regionManager, AppState state)
        {
            _state = state;
            _regionManager = regionManager;

            SaveCommand = new DelegateCommand<object>(SaveSettings);
            BackCommand = new DelegateCommand<object>(GoBack);
        }
        public MainWindow(IEventAggregator eventAggregator, IRegionManager regionManager, ILoggerFacade logger, AppState state)
        {
            Uri mainPage;

            InitializeComponent();

            _logger = logger;

            // Subscribes to the CloseGameEvent and closes the window when triggered.
            eventAggregator.GetEvent<CloseGameEvent>().Subscribe(a => Close());

            if (state.Mode == ScreenMode.FullScreen)
            {
                WindowStyle = WindowStyle.None;
                WindowState = WindowState.Maximized;
                Focus();
            }

            if (string.IsNullOrEmpty(state.Language))
            {
                mainPage = new Uri("/PageSelectLanguage", UriKind.Relative);
            }
            else
            {
                _dictionary.SetCultureCommand.Execute(state.Language);
                mainPage = new Uri("/PageStartMenu", UriKind.Relative);
            }

            Width = SystemParameters.PrimaryScreenWidth;
            Height = SystemParameters.PrimaryScreenHeight;

            Loaded += (o, args) =>
            {
                _logger.Log("Navigating to default header and start menu.", Category.Debug, Priority.Medium);
                regionManager.RequestNavigate("HeaderContentRegion", new Uri("/PageHeader", UriKind.Relative));
                regionManager.RequestNavigate("MainContentRegion", mainPage);
            };

            Closing += (o, args) =>
            {
                state.SaveState();
            };

            //Setup.SetupGame();
        }
        public PageStartDataViewModel(AppState state, IRegionManager regionManager)
        {
            _state = state;
            _regionManager = regionManager;

            _allRegions = new Region {Name = "All Regions", Id = 100};

            var continents = from continent in _state.Context.Continents
                orderby continent.Id descending
                select continent;
            Continents = new ObservableCollection<Continent>(continents.ToList());

            _regions = from region in _state.Context.Regions select region;
            Regions = new ObservableCollection<Region>(_regions.ToList());
            Regions.Insert(0, _allRegions);
            SelectedRegion = _allRegions;

            MajorAirports = false;
            RandomOpponents = true;
            RealData = false;
            GameTurn = true;
            PausedOnStart = false;
            SameRegion = true;

            // Use Enumerable.Range to create lists for years and opponents.
            NumOpponents = Enumerable.Range(1, 51).ToList();

            var start = new DateTime(1960, 1, 1);
            var end = DateTime.Now;

            Years = Enumerable.Range(start.Year, (end.Year - start.Year) + 1).OrderByDescending(i => i).ToList();

            var difficulties = from difficulty in _state.Context.Difficulties select difficulty;
            Difficulties = new ObservableCollection<Difficulty>(difficulties.ToList());

            // DelegateCommand only works with Nullable objects hence the int?.
            ChangeRegions = new DelegateCommand<Continent>(UpdateRegions);
            NavigateCommand = new DelegateCommand<Uri>(ChangePages);
        }
 public PageAirlineDataViewModel(AppState state)
 {
     _state = state;
 }