예제 #1
0
        public void PlayRandom()
        {
            var decks = ChooseRandomDecks();

            try
            {
                var mp = MatchParameters.Default(
                    player1: new PlayerParameters
                {
                    Name     = YourName,
                    AvatarId = RandomEx.Next(),
                    Deck     = decks[0]
                },
                    player2: new PlayerParameters
                {
                    Name     = NameGenerator.GenerateRandomName(MediaLibrary.GetPlayerUnitNames()),
                    AvatarId = RandomEx.Next(),
                    Deck     = decks[1]
                },
                    isTournament: false
                    );

                Ui.Match = new Match(mp);
                Ui.Match.Start();
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }


            Shell.ChangeScreen(this);
        }
예제 #2
0
 public void Back()
 {
     if (SaveChanges())
     {
         Shell.ChangeScreen(_previousScreen);
     }
 }
예제 #3
0
        public override void Initialize()
        {
            Task.Factory
            .StartNew(() => MediaLibrary.LoadAll(ShowProgress))
            .ContinueWith(tsk =>
            {
                if (tsk.IsFaulted)
                {
                    var message = tsk.Exception.GetBaseException().Message;

                    MessageBox.Show(
                        message,
                        "Initialization error",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);

                    LogFile.Error(message);

                    Application.Current.Shutdown();
                    return;
                }

                var startScreen = ViewModels.StartScreen.Create();
                Shell.ChangeScreen(startScreen);
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
예제 #4
0
        public void Play()
        {
            SelectDeck.ViewModel selectDeck1 = null;
            SelectDeck.ViewModel selectDeck2 = null;

            var configuration1 = new Configuration
            {
                ScreenTitle    = "Select your deck",
                ForwardText    = "Next",
                PreviousScreen = this,
                Forward        = (deck1) =>
                {
                    if (selectDeck2 == null)
                    {
                        selectDeck2 = ViewModels.SelectDeck.Create(new Configuration
                        {
                            ScreenTitle    = "Select your opponent deck",
                            ForwardText    = "Start the game",
                            PreviousScreen = selectDeck1,
                            Forward        = (deck2) =>
                            {
                                try
                                {
                                    var mp = MatchParameters.Default(
                                        player1: new PlayerParameters
                                    {
                                        Name     = YourName,
                                        AvatarId = RandomEx.Next(),
                                        Deck     = deck1
                                    },
                                        player2: new PlayerParameters
                                    {
                                        Name     = NameGenerator.GenerateRandomName(MediaLibrary.GetPlayerUnitNames()),
                                        AvatarId = RandomEx.Next(),
                                        Deck     = deck2
                                    },
                                        isTournament: false);

                                    Ui.Match = new Match(mp);
                                    Ui.Match.Start();
                                }
                                catch (Exception ex)
                                {
                                    HandleException(ex);
                                }

                                Shell.ChangeScreen(this);
                            }
                        });
                    }

                    Shell.ChangeScreen(selectDeck2);
                }
            };

            selectDeck1 = ViewModels.SelectDeck.Create(configuration1);
            Shell.ChangeScreen(selectDeck1);
        }
예제 #5
0
 public override void Initialize()
 {
     Task.Factory.StartNew(() => MediaLibrary.LoadAll(ShowProgress))
     .ContinueWith(tsk =>
     {
         var startScreen = ViewModels.StartScreen.Create();
         Shell.ChangeScreen(startScreen);
     }, TaskScheduler.FromCurrentSynchronizationContext());
 }
예제 #6
0
        public void EditDeck()
        {
            var screen = ViewModels.BuildLimitedDeck.Create(_humanLibrary, new Deck(_humanPlayer.Deck));

            Shell.ChangeScreen(screen, blockUntilClosed: true, shouldClosePrevious: false);

            if (screen.WasCanceled == false)
            {
                _humanPlayer.Deck = screen.Result;
            }

            Shell.ChangeScreen(this, blockUntilClosed: true);
        }
예제 #7
0
        public void Load()
        {
            try
            {
                foreach (var loadGame in Handlers)
                {
                    if (loadGame(Selected.Filename))
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }

            Shell.ChangeScreen(_previousScreen);
        }
예제 #8
0
        public void Start()
        {
            var p = TournamentParameters.Default(
                YourName,
                Avatar,
                PlayersCount,
                new[] { BoosterPack1, BoosterPack2, BoosterPack3 },
                StarterPack,
                TypeOfTournament);

            try
            {
                Ui.Tournament = new Tournament(p);
                Ui.Tournament.Start();
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }

            Shell.ChangeScreen(_previousScreen);
        }
예제 #9
0
        public void Open()
        {
            if (!SaveChanges())
            {
                return;
            }

            var configuration = new Configuration
            {
                ScreenTitle    = "Select a deck to edit",
                ForwardText    = "Select",
                PreviousScreen = this,
                Forward        = deck =>
                {
                    Deck = ViewModels.Deck.Create(deck);
                    Shell.ChangeScreen(this);
                }
            };

            var selectDeck = ViewModels.SelectDeck.Create(configuration);

            Shell.ChangeScreen(selectDeck);
        }
예제 #10
0
 public void Back()
 {
     Shell.ChangeScreen(_previousScreen);
 }
예제 #11
0
        public void LoadSavedGame()
        {
            var loadSavedGame = ViewModels.LoadSavedGame.Create(this);

            Shell.ChangeScreen(loadSavedGame);
        }
예제 #12
0
        public void NewTournament()
        {
            var newTournament = ViewModels.NewTournament.Create(this);

            Shell.ChangeScreen(newTournament);
        }
예제 #13
0
        public void DeckEditor()
        {
            var deckEditorScreen = ViewModels.DeckEditor.Create(this);

            Shell.ChangeScreen(deckEditorScreen);
        }
예제 #14
0
 public void Back()
 {
     Shell.ChangeScreen(_configuration.PreviousScreen);
 }