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.
        }