Beispiel #1
0
 public GamePlayerView()
 {
     InitializeComponent();
     tabControl1.SelectedTab = tpHumanPlayer;
     _model = new GamePlayerModel {
         Game = new GameState {
             new NewGame()
         }
     };
     _controller = new GamePlayerController(_model, this);
 }
        public GamePlayerController(IGamePlayerModel model, IGamePlayerView view)
        {
            Model                   = model;
            View                    = view;
            view.InputEvent        += ViewOnInputEvent;
            view.NavigateEvent     += ViewOnNavigateEvent;
            Model.CommittedState    = Model.Game.Last().NewState;
            Model.SelectionObject   = Location.Undefined;
            Model.SelectionTarget   = Location.Undefined;
            Model.SelectedVariation = null;
            Model.EditorState       = Model.CommittedState;
            Model.InHand            = Cell.Empty;
            Model.SelectionState    = SelectionState.Unselected;
            var seenList = new HashSet <Guid>();

            Model.AvailableActions =
                AvailableActionController.GetAvailableActions(Model.CommittedState, seenList);
            Model.EditMode     = false;
            Model.Restrictions = RestrictionState.None;
        }
        private static MouseTargetFlags GetMouseTargetType(IGamePlayerModel model, Location location, Cell contents)
        {
            var flags = MouseTargetFlags.None;

            if (location == model.SelectionObject)
            {
                flags |= MouseTargetFlags.Selection;
            }
            else if (location == model.SelectionTarget)
            {
                flags |= MouseTargetFlags.Selection | MouseTargetFlags.Target;
            }
            else if (model.HighlightLocations?.Contains(location) ?? false)
            {
                flags |= MouseTargetFlags.Target;
            }

            if (!contents.IsPiece())
            {
                return(flags);
            }

            if (contents.GetSide(model.CommittedState.Flags.IsRedTurn(), model.CommittedState.Flags.IsBlueTurn(), false))
            {
                flags |= MouseTargetFlags.OwnPiece;
            }
            else
            {
                flags |= MouseTargetFlags.OpponentPiece;
            }

            if (contents.IsStack())
            {
                flags |= MouseTargetFlags.Stack;
            }

            return(flags);
        }