private int BonusPoints(RackoPlayerItem thisPlayer)
        {
            RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation> thisInfo = new RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation>();

            thisInfo.HasSecond = false;
            thisInfo.HasWild   = false;
            thisInfo.NeedMatch = false; //try this too.
            thisInfo.LowNumber = 1;
            RackoDeckCount temps = MainContainer.Resolve <RackoDeckCount>();

            thisInfo.HighNumber = temps.GetDeckCount();
            DeckRegularDict <RackoCardInformation> tempCol = thisPlayer.MainHandList.ToRegularDeckDict();
            var newColls = thisInfo.WhatNewRummy(tempCol, 6, RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation> .EnumRummyType.Runs, true);

            if (newColls.Count > 0)
            {
                return(400);
            }
            newColls = thisInfo.WhatNewRummy(tempCol, 5, RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation> .EnumRummyType.Runs, true);
            if (newColls.Count > 0)
            {
                return(200);
            }
            newColls = thisInfo.WhatNewRummy(tempCol, 4, RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation> .EnumRummyType.Runs, true);
            if (newColls.Count > 0)
            {
                return(100);
            }
            newColls = thisInfo.WhatNewRummy(tempCol, 3, RummyProcesses <EnumSuitList, EnumSuitList, RackoCardInformation> .EnumRummyType.Runs, true);
            if (newColls.Count > 0)
            {
                return(50);
            }
            return(0);
        }
 public override void LoadSet(SavedSet payLoad)
 {
     HandList.ReplaceRange(payLoad.CardList);
     _whatSet     = payLoad.WhatSet;
     _useSecond   = payLoad.UseSecond;
     _firstNumber = payLoad.FirstNumber;
 }
예제 #3
0
        private void FillInSets(SetList firstSet, int howMany, RummyProcesses <EnumSuitList, EnumColorList, ChinazoCard> .EnumRummyType whatSet)
        {
            int x;
            var loopTo = howMany;

            for (x = 1; x <= loopTo; x++)
            {
                firstSet.PhaseSets.Add(new SetInfo()
                {
                    WhatSet = whatSet, HowMany = 3
                });
            }
        }
예제 #4
0
 public TileRummyMainGameClass(IGamePackageResolver resolver,
                               IEventAggregator aggregator,
                               BasicData basic,
                               TestOptions test,
                               TileRummyVMData model,
                               IMultiplayerSaveState state,
                               IAsyncDelayer delay,
                               CommandContainer command,
                               BasicGameContainer <TileRummyPlayerItem, TileRummySaveInfo> gameContainer
                               ) : base(resolver, aggregator, basic, test, model, state, delay, command, gameContainer)
 {
     _model   = model;
     _command = command;
     _rummys  = new RummyProcesses <EnumColorType, EnumColorType, TileInfo>(); //decided to create new one here.  hopefully i don't regret this
 }
예제 #5
0
 public Rummy500MainGameClass(IGamePackageResolver mainContainer,
                              IEventAggregator aggregator,
                              BasicData basicData,
                              TestOptions test,
                              Rummy500VMData currentMod,
                              IMultiplayerSaveState state,
                              IAsyncDelayer delay,
                              ICardInfo <RegularRummyCard> cardInfo,
                              CommandContainer command,
                              Rummy500GameContainer gameContainer)
     : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer)
 {
     _model         = currentMod;
     _command       = command;
     _gameContainer = gameContainer;
     _rummys        = new RummyProcesses <EnumSuitList, EnumColorList, RegularRummyCard>();
 }
예제 #6
0
 public Phase10MainGameClass(IGamePackageResolver mainContainer,
                             IEventAggregator aggregator,
                             BasicData basicData,
                             TestOptions test,
                             Phase10VMData currentMod,
                             IMultiplayerSaveState state,
                             IAsyncDelayer delay,
                             ICardInfo <Phase10CardInformation> cardInfo,
                             CommandContainer command,
                             Phase10GameContainer gameContainer)
     : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer)
 {
     _model         = currentMod;
     _command       = command;
     _gameContainer = gameContainer;
     _rummys        = new RummyProcesses <EnumColorTypes, EnumColorTypes, Phase10CardInformation>();
 }
 public OpetongGameContainer(BasicData basicData,
                             TestOptions test,
                             IGameInfo gameInfo,
                             IAsyncDelayer delay,
                             IEventAggregator aggregator,
                             CommandContainer command,
                             IGamePackageResolver resolver,
                             IListShuffler <RegularRummyCard> deckList,
                             RandomGenerator random)
     : base(basicData, test, gameInfo, delay, aggregator, command, resolver, deckList, random)
 {
     Rummys            = new RummyProcesses <EnumSuitList, EnumColorList, RegularRummyCard>();
     Rummys.HasSecond  = true;
     Rummys.HasWild    = false;
     Rummys.LowNumber  = 1;
     Rummys.HighNumber = 13;
     Rummys.NeedMatch  = false;
 }
 public Task NewGameAsync(CribbagePatienceMainViewModel model)
 {
     _model    = model;
     GameGoing = true;
     if (_rummys != null)
     {
         throw new BasicBlankException("Rummy should not have been created since its fresh every new game");
     }
     _rummys            = new RummyProcesses <EnumSuitList, EnumColorList, CribbageCard>();
     _rummys.HasSecond  = false;
     _rummys.HasWild    = false;
     _rummys.LowNumber  = 1;
     _rummys.HighNumber = 13;
     _rummys.NeedMatch  = false;
     _rummys.UseAll     = true;
     PopulateLists();
     return(base.NewGameAsync(_model.DeckPile));
 }
예제 #9
0
 public FiveCrownsMainGameClass(IGamePackageResolver mainContainer,
                                IEventAggregator aggregator,
                                BasicData basicData,
                                TestOptions test,
                                FiveCrownsVMData currentMod,
                                IMultiplayerSaveState state,
                                IAsyncDelayer delay,
                                ICardInfo <FiveCrownsCardInformation> cardInfo,
                                CommandContainer command,
                                FiveCrownsGameContainer gameContainer,
                                FiveCrownsDelegates delegates
                                )
     : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer)
 {
     _model                   = currentMod;
     _command                 = command;
     _gameContainer           = gameContainer;
     _rummys                  = new RummyProcesses <EnumSuitList, EnumColorList, FiveCrownsCardInformation>();
     delegates.CardsToPassOut = (() => CardsToPassOut);
 }
예제 #10
0
 public GalaxyCardGameMainGameClass(IGamePackageResolver mainContainer,
                                    IEventAggregator aggregator,
                                    BasicData basicData,
                                    TestOptions test,
                                    GalaxyCardGameVMData currentMod,
                                    IMultiplayerSaveState state,
                                    IAsyncDelayer delay,
                                    ICardInfo <GalaxyCardGameCardInformation> cardInfo,
                                    CommandContainer command,
                                    GalaxyCardGameGameContainer gameContainer,
                                    ITrickData trickData,
                                    ITrickPlay trickPlay,
                                    IAdvancedTrickProcesses aTrick,
                                    GalaxyDelegates delegates
                                    )
     : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer, trickData, trickPlay)
 {
     _model                   = currentMod;
     _command                 = command;
     _gameContainer           = gameContainer;
     _aTrick                  = aTrick;
     delegates.PlayerGetCards = (() => PlayerGetCards);
     _rummys                  = new RummyProcesses <EnumSuitList, EnumColorList, GalaxyCardGameCardInformation>();
 }
예제 #11
0
        //private readonly TileRummyMainGameClass _mainGame;
        //can't require main game.  or overflow errors.

        public TileSet(CommandContainer command, RummyProcesses <EnumColorType, EnumColorType, TileInfo> rummys) : base(command)
        {
            _rummys = rummys;
            //_mainGame = thisMod.MainContainer!.Resolve<TileRummyMainGameClass>();
        }
        public void CreateSet(IDeckDict <ChinazoCard> thisList, RummyProcesses <EnumSuitList, EnumColorList, ChinazoCard> .EnumRummyType whichSet, bool useSecond)
        {
            _whatSet   = whichSet;
            _useSecond = useSecond;
            var wildCol = thisList.Where(items => items.IsObjectWild == true).ToRegularDeckDict();

            thisList.ForEach(thisCard =>
            {
                thisCard.IsSelected = false;
                thisCard.Drew       = false;
            });
            if (_whatSet != RummyProcesses <EnumSuitList, EnumColorList, ChinazoCard> .EnumRummyType.Runs)
            {
                HandList.ReplaceRange(thisList);
                if (HandList.Count == 0)
                {
                    throw new BasicBlankException("the hand list was blank");
                }
                return;
            }
            EnumSuitList suitOfSet      = thisList.First(items => items.IsObjectWild == false).Suit;
            int          originalNumber = thisList.Count;
            var          tempCol        = thisList.Where(items => items.IsObjectWild == false).ToRegularDeckDict();

            if (useSecond == true)
            {
                tempCol = tempCol.OrderBy(items => items.SecondNumber).ToRegularDeckDict();
            }
            int firstNum;

            if (useSecond == true)
            {
                tempCol.First().UsedAs = (int)tempCol.First().SecondNumber;
            }
            else
            {
                tempCol.First().UsedAs = (int)tempCol.First().Value;
            }
            firstNum = tempCol.First().UsedAs;
            if (firstNum > 12)
            {
                throw new BasicBlankException("The first number cannot be higher than 12 for runs.");
            }
            tempCol.Last().UsedAs = (int)tempCol.Last().Value;
            int         whatFirst = firstNum;
            int         lastNum   = tempCol.Last().UsedAs;
            int         y         = tempCol.Count;
            ChinazoCard tempCard;

            for (int x = 2; x <= y; x++)
            {
                firstNum += 1;
                tempCard  = tempCol[x - 1];
                if ((int)tempCard.Value != firstNum)
                {
                    tempCard        = wildCol.First();
                    tempCard.UsedAs = firstNum;
                    tempCard.Suit   = suitOfSet;          //hopefully that is okay (?)
                    tempCol.Add(tempCard);
                    wildCol.RemoveSpecificItem(tempCard); //hopefully still works.
                    x--;
                }
                else
                {
                    if (useSecond == true)
                    {
                        tempCard.UsedAs = (int)tempCard.SecondNumber;
                    }
                    else
                    {
                        tempCard.UsedAs = (int)tempCard.Value;
                    }
                }
                if (tempCard.UsedAs > 14)
                {
                    throw new BasicBlankException("The use as cannot be higher than 14 ever");
                }
            }
            if (wildCol.Count > 0)
            {
                lastNum += 1;
                for (int x = lastNum; x <= 14; x++)
                {
                    if (wildCol.Count == 0)
                    {
                        break;
                    }
                    tempCard        = wildCol.First();
                    tempCard.UsedAs = x;
                    tempCard.Suit   = suitOfSet;
                    tempCol.Add(tempCard);
                    wildCol.RemoveSpecificItem(tempCard);
                }
                whatFirst--;
                for (int x = whatFirst; x >= 1; x += -1)
                {
                    if (wildCol.Count == 0)
                    {
                        break;
                    }
                    tempCard        = wildCol.First(); //hopefully still okay.
                    tempCard.UsedAs = x;
                    tempCard.Suit   = suitOfSet;
                    tempCol.Add(tempCard);
                    wildCol.RemoveSpecificItem(tempCard);
                }
                if (tempCol.Count != originalNumber)
                {
                    throw new BasicBlankException("Must have the same number of cards sent for creating set");
                }
            }
            if (tempCol.Any(items => items.UsedAs == 0))
            {
                throw new BasicBlankException("You must have accounted for all used.  Rethink");
            }
            var tempList = tempCol.OrderBy(items => items.UsedAs).ToRegularDeckDict();

            HandList.ReplaceRange(tempList);
            if (HandList.Count == 0)
            {
                throw new BasicBlankException("HandList Blank");
            }
            _firstNumber = HandList.First().UsedAs;
        }