public override Task FinishGetSavedAsync()
 {
     LoadControls();
     BoardGameSaved(); //i think.
     SaveRoot.LoadMod(_model);
     if (PlayerList.DidChooseColors() && SaveRoot.GameStatus != EnumWhatStatus.NeedChooseGender)
     {
         //if choosing gender, rethink.
         _gameBoard.LoadSavedGame();
         PlayerList !.ForEach(thisPlayer =>
         {
             var thisList = thisPlayer.Hand.ToRegularDeckDict();
             thisPlayer.Hand.Clear();
             thisList.ForEach(tempCard =>
             {
                 if (tempCard.Deck <= 9)
                 {
                     thisPlayer.Hand.Add(CardsModule.GetCareerCard(tempCard.Deck));
                 }
                 else if (tempCard.Deck <= 18)
                 {
                     thisPlayer.Hand.Add(CardsModule.GetHouseCard(tempCard.Deck));
                 }
                 else if (tempCard.Deck <= 27)
                 {
                     thisPlayer.Hand.Add(CardsModule.GetSalaryCard(tempCard.Deck));
                 }
                 else if (tempCard.Deck <= 36)
                 {
                     thisPlayer.Hand.Add(CardsModule.GetStockCard(tempCard.Deck));
                 }
                 else
                 {
                     throw new BasicBlankException("Must be between 1 and 36");
                 }
             });
         });
         if (SaveRoot.ChangePosition > 0)
         {
             _gameContainer.SpinnerPosition = SaveRoot.ChangePosition;
             _gameContainer.SpinnerRepaint();
         }
         if (SaveRoot.GameStatus == EnumWhatStatus.NeedToEndTurn)
         {
             SingleInfo = PlayerList.GetWhoPlayer();
             if (SingleInfo.Position > 0 && SingleInfo.LastMove == EnumFinal.None)
             {
                 _model.GameDetails = _boardProcesses.GetSpaceDetails(SingleInfo.Position);
             }
         }
     }
     //anything else needed is here.
     return(Task.CompletedTask);
 }
Exemplo n.º 2
0
        public async Task ChoseHouseAsync(int deck)
        {
            if (_gameContainer.CanSendMessage())
            {
                await _gameContainer.Network !.SendAllAsync("chosehouse", deck);
            }
            HouseInfo thisHouse = CardsModule.GetHouseCard(deck);
            await _gameContainer.ShowCardAsync(thisHouse);

            _gameContainer.SingleInfo !.Hand.Add(thisHouse);
            _gameContainer.SaveRoot !.HouseList.Clear();
            PopulatePlayerProcesses.FillInfo(_gameContainer.SingleInfo); //i think here too.
            _gameContainer.TakeOutExpense(thisHouse.HousePrice);
            _gameContainer.GameStatus = EnumWhatStatus.NeedToSpin;
            await _gameContainer.ContinueTurnAsync !.Invoke();
        }
        public static DeckRegularDict <HouseInfo> GetHouseList(this CustomBasicList <int> tempList, PlayerCollection <LifeBoardGamePlayerItem> playerList)
        {
            DeckRegularDict <HouseInfo> newList = new DeckRegularDict <HouseInfo>();

            foreach (var thisItem in tempList)
            {
                if (thisItem.SomeoneHasCard(playerList) == false)
                {
                    newList.Add(CardsModule.GetHouseCard(thisItem));
                    if (newList.Count == 2)
                    {
                        return(newList);
                    }
                }
            }
            throw new BasicBlankException("Has to find 2 cards to choose from for house");
        }
        //protected override async Task ShowHumanCanPlayAsync()
        //{
        //    await base.ShowHumanCanPlayAsync();
        //    if (BasicData.IsXamarinForms && (SaveRoot.GameStatus == EnumWhatStatus.NeedTradeSalary || SaveRoot.GameStatus == EnumWhatStatus.NeedStealTile))
        //    {
        //        await UIPlatform.ShowMessageAsync("Trying to show human can continue");
        //        if (_gameContainer.SubmitPlayerCommand == null)
        //        {
        //            //UIPlatform.ShowError("Nobody set up the submit player command.  Rethink");
        //            return;
        //        }
        //        _gameContainer.SubmitPlayerCommand.ReportCanExecuteChange(); //try this way.
        //        //await Task.Delay(200); //try delay to fix second bug.
        //        //await UIPlatform.ShowMessageAsync("Choose Player Or End Turn");
        //        //_gameContainer.Command.ManualReport();
        //    }
        //}
        async Task IMiscDataNM.MiscDataReceived(string status, string content)
        {
            switch (status) //can't do switch because we don't know what the cases are ahead of time.
            {
            //put in cases here.
            case "spin":
                SpinnerPositionData spin = await js.DeserializeObjectAsync <SpinnerPositionData>(content);

                await _spinnerProcesses.StartSpinningAsync(spin);

                return;

            case "gender":
                EnumGender gender = await js.DeserializeObjectAsync <EnumGender>(content);

                if (_gameContainer.SelectGenderAsync == null)
                {
                    throw new BasicBlankException("Nobody is handling the selecting gender.  Rethink");
                }
                await _gameContainer.SelectGenderAsync.Invoke(gender);

                return;

            case "firstoption":
                EnumStart firsts = await js.DeserializeObjectAsync <EnumStart>(content);

                await _boardProcesses.OpeningOptionAsync(firsts);

                return;

            case "chosecareer":
                await _careerProcesses.ChoseCareerAsync(int.Parse(content));

                return;

            case "purchasecarinsurance":
                await _boardProcesses.PurchaseCarInsuranceAsync();

                return;

            case "purchasedstock":
                await _boardProcesses.PurchaseStockAsync();

                return;

            case "tradedlifeforsalary":
                await _boardProcesses.Trade4TilesAsync();     //i think

                return;

            case "tradedsalary":
                await _tradeSalaryProcesses.TradedSalaryAsync(content);

                return;

            case "stole":
                await _stolenTileProcesses.TilesStolenAsync(content);

                return;

            case "purchasedhouseinsurance":
                await _boardProcesses.PurchaseHouseInsuranceAsync();

                return;

            case "attendednightschool":
                await _boardProcesses.AttendNightSchoolAsync();

                return;

            case "choseretirement":
                EnumFinal finals = await js.DeserializeObjectAsync <EnumFinal>(content);

                await _boardProcesses.RetirementAsync(finals);

                return;

            case "chosestock":
                await _chooseStockProcesses.ChoseStockAsync(int.Parse(content));

                return;

            case "chosesalary":
                await _basicSalaryProcesses.ChoseSalaryAsync(int.Parse(content));

                return;

            case "stockreturned":
                await _returnStockProcesses.StockReturnedAsync(int.Parse(content));

                return;

            case "chosehouse":
                await _houseProcesses.ChoseHouseAsync(int.Parse(content));

                return;

            case "willsellhouse":
                await _boardProcesses.SellHouseAsync();

                return;

            case "twins":
                CustomBasicList <EnumGender> gList = await js.DeserializeObjectAsync <CustomBasicList <EnumGender> >(content);

                await _twinProcesses.GetTwinsAsync(gList);

                return;

            case "houselist":
                CustomBasicList <int> tempList = await js.DeserializeObjectAsync <CustomBasicList <int> >(content);

                SaveRoot !.HouseList.Clear();
                tempList.ForEach(thisIndex => SaveRoot.HouseList.Add(CardsModule.GetHouseCard(thisIndex)));
                await ContinueTurnAsync();

                return;

            default:
                throw new BasicBlankException($"Nothing for status {status}  with the message of {content}");
            }
        }