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; }
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 }); } }
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 }
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>(); }
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)); }
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); }
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>(); }
//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; }