public void LoadPiles(GalaxyCardGameMainGameClass mainGame, GalaxyCardGameVMData model, CommandContainer command) { _mainGame = mainGame; _model = model; PlanetHand = new HandObservable <GalaxyCardGameCardInformation>(command); PlanetHand.BoardClickedAsync += PlanetHand_BoardClickedAsync; PlanetHand.Maximum = 2; PlanetHand.Visible = true; PlanetHand.Text = $"{NickName} Planet"; //PlanetHand.SendEnableProcesses(mainGame.ThisMod!, () => //{ // if (PlayerCategory != EnumPlayerCategory.Self) // return false; // if (mainGame.SaveRoot!.GameStatus != EnumGameStatus.PlaceSets) // return false; // return mainGame.HasAutomaticPlanet() || PlanetHand.HandList.Count == 0; //}); Moons = new MainSetsObservable <EnumSuitList, EnumColorList, GalaxyCardGameCardInformation, MoonClass, SavedSet>(command); Moons.SetClickedAsync += Moons_SetClickedAsync; Moons.HasFrame = true; Moons.Text = $"{NickName} Moons"; //Moons.Visible = true; //Moons.SendEnableProcesses(mainGame.ThisMod!, () => //{ // if (PlayerCategory != EnumPlayerCategory.Self) // return false; // return CanEnableMoon(); //}); }
public GalaxyCardGameMainViewModel(CommandContainer commandContainer, GalaxyCardGameMainGameClass mainGame, GalaxyCardGameVMData viewModel, BasicData basicData, TestOptions test, IGamePackageResolver resolver ) : base(commandContainer, mainGame, viewModel, basicData, test, resolver) { _mainGame = mainGame; _model = viewModel; _model.Deck1.NeverAutoDisable = true; _mainGame.PlayerList.ForEach(player => { if (player.PlanetHand == null) { throw new BasicBlankException("No planet hand. Rethink"); } if (player.Moons == null) { throw new BasicBlankException("No moons. Rethink"); } player.PlanetHand.SendEnableProcesses(this, (() => { if (player.PlayerCategory != EnumPlayerCategory.Self) { return(false); } if (mainGame.SaveRoot !.GameStatus != EnumGameStatus.PlaceSets) { return(false); } return(mainGame.HasAutomaticPlanet() || player.PlanetHand.HandList.Count == 0); })); player.Moons.SendEnableProcesses(this, (() => { if (player.PlayerCategory != EnumPlayerCategory.Self) { return(false); } return(player.CanEnableMoon()); })); commandContainer.ExecutingChanged += CommandContainer_ExecutingChanged; }); _model.TrickArea1.SendEnableProcesses(this, (() => _mainGame.CanEnableTrickAreas)); //if any other trick taking games has speciali processes, has to do here. }