import { CardType } from "../dominion/card-type" ; import { CostType } from "../dominion/cost-type" ; import { SetId } from "../dominion/set-id" ; export class RandomizerOptions { constructor ( readonly setIds , readonly includeCardIds , readonly excludeCardIds , readonly requireSingleCardOfType , readonly excludeTypes , readonly excludeCosts , readonly requireActionProvider , readonly requireCardProvider , readonly requireBuyProvider , readonly requireReactionIfAttacks , readonly requireTrashing , readonly distributeCost , readonly prioritizeSet , readonly baneCardId , readonly useAlchemyRecommendation ) { } } export class RandomizerOptionsBuilder { setIds : SetId [ ] = [ SetId . BASE_SET ] ; includeCardIds : string [ ] = [ ] ; excludeCardIds : string [ ] = [ ] ; requireSingleCardOfType : CardType | null = null ; excludeTypes : CardType [ ] = [ ] ; excludeCosts : CostType [ ] = [ ] ; requireActionProvider : boolean = true ; requireCardProvider : boolean = false ; requireBuyProvider : boolean = false ; requireReactionIfAttacks : boolean = false ; requireTrashing : boolean = false ; distributeCost : boolean = false ; prioritizeSet : SetId | null = null ; baneCardId : string | null = null ; useAlchemyRecommendation = true ; setSetIds ( setIds ) { this . setIds = setIds ; return this ; } setIncludeCardIds ( includeCardIds ) { this . includeCardIds = includeCardIds ; return this ; } setExcludeCardIds ( excludeCardIds ) { this . excludeCardIds = excludeCardIds ; return this ; } setRequireSingleCardOfType ( requireSingleCardOfType ) { this . requireSingleCardOfType = requireSingleCardOfType ; return this ; } setExcludeTypes ( excludeTypes ) { this . excludeTypes = excludeTypes ; return this ; } setExcludeCosts ( excludeCosts ) { this . excludeCosts = excludeCosts ; return this ; } setRequireActionProvider ( requireActionProvider ) { this . requireActionProvider = requireActionProvider ; return this ; } setRequireCardProvider ( requireCardProvider ) { this . requireCardProvider = requireCardProvider ; return this ; } setRequireBuyProvider ( requireBuyProvider ) { this . requireBuyProvider = requireBuyProvider ; return this ; } setRequireReactionIfAttacks ( requireReactionIfAttacks ) { this . requireReactionIfAttacks = requireReactionIfAttacks ; return this ; } setRequireTrashing ( requireTrashing ) { this . requireTrashing = requireTrashing ; return this ; } setDistributeCost ( distributeCost ) { this . distributeCost = distributeCost ; return this ; } setPrioritizeSet ( prioritizeSet ) { this . prioritizeSet = prioritizeSet ; return this ; } setBaneCardId ( baneCardId ) { this . baneCardId = baneCardId ; return this ; } setUseAlchemyRecommendation ( useAlchemyRecommendation ) { this . useAlchemyRecommendation = useAlchemyRecommendation ; return this ; } build ( ) { return new RandomizerOptions ( this . setIds , this . includeCardIds , this . excludeCardIds , this . requireSingleCardOfType , this . excludeTypes , this . excludeCosts , this . requireActionProvider , this . requireCardProvider , this . requireBuyProvider , this . requireReactionIfAttacks , this . requireTrashing , this . distributeCost , this . prioritizeSet , this . baneCardId , this . useAlchemyRecommendation ) ; } }