public InputViewModel(Camera camera, BoardViewModel boardViewModel, BoardView boardView, GameConfig.InputSettings inputSetting) { _shootInterval = inputSetting.ShootInterval; _camera = camera; _boardViewModel = boardViewModel; _boardView = boardView; _isAiming = new ReactiveProperty <bool>().AddTo(Disposer); _aimPosition = new ReactiveProperty <Vector2>().AddTo(Disposer); _trajectoryPoints = new ReactiveProperty <IReadOnlyList <Vector3> >(_linePositions); _hasValidTarget = new ReactiveProperty <bool>().AddTo(Disposer); _targetGridPos = new ReactiveProperty <Vector2Int>().AddTo(Disposer); _shootSubject = new Subject <Unit>().AddTo(Disposer); _canShootTimerDisposable = new SerialDisposable().AddTo(Disposer); Observable.EveryUpdate() .Subscribe(_ => UpdateInput()).AddTo(Disposer); AimPosition .SkipLatestValueOnSubscribe() .Subscribe(OnAimPositionChanged).AddTo(Disposer); IsAiming .SkipLatestValueOnSubscribe() .IfFalse() .Do(_ => Shoot()) .DelayFrame(1) .Subscribe(_ => _hasValidTarget.Value = false).AddTo(Disposer); }
public BoardView GetBoard(int id) { var model = new BoardView(); var board = dbContext.Boards .Include(b => b.Columns) // Init Lazy Loading of related Table .ThenInclude(c => c.Cards) .SingleOrDefault(x => x.Id == id); model.Id = board.Id; model.Title = board.Title; foreach (var item in board.Columns) { var modelColumn = new BoardView.Column(); modelColumn.Title = item.Title; modelColumn.Id = item.Id; foreach (var card in item.Cards) { var modelCard = new BoardView.Card(); modelCard.Content = card.Contents; modelCard.Id = card.Id; modelColumn.Cards.Add(modelCard); } model.Columns.Add(modelColumn); } return(model); }
private void ButtonCreate_OnClick(object sender, RoutedEventArgs e) { if (ComboBoxIP.SelectedItem == null || TextBoxGameName.Text == "" || TextBoxPort.Text == "" || TextBoxPseudo.Text == "") { _mainWindow.ShowMessageAsync("Paramètres incorrects", "Veuillez remplir tout les champs."); return; } Uri uri = new Uri("net.tcp://" + ComboBoxIP.SelectedItem + ":" + TextBoxPort.Text + "/" + TextBoxGameName.Text + TextBoxPseudo.Text); WaitJoinWindow waitJoinWindow = new WaitJoinWindow(uri, GetComboBoxColor()); if (waitJoinWindow.ShowDialog() == true) { GameFactory gameFactory = new GameFactory(); BoardView boardView = new BoardView(_container); Core.Game game = gameFactory.CreateGame(Mode.Network, _container, boardView, GetComboBoxColor(), null); _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView); } else { // Attention : pratique choquante try { NetworkServiceHost.Close(); } catch (Exception) { ; //Rien à faire (technique de pro) } _mainWindow.ShowMessageAsync("Erreur réseau", "Il y a eu un problème lors de la connexion avec l'autre joueur... Vueillez réessayer."); } }
// ---------------------------------------------------------------- // Initialize // ---------------------------------------------------------------- override public void Initialize(BoardView _myBoardView, BoardObject bo) { MyCrate = bo as Crate; base.Initialize(_myBoardView, bo); // Auto-move visuals! if (MyCrate.DoAutoMove) { i_body.color = new ColorHSB(0.5f, 0.3f, 1f).ToColor(); } else { Destroy(i_autoMoveDir.gameObject); i_autoMoveDir = null; } // Add dimple images! for (int corner = 0; corner < Corners.NumCorners; corner++) { if (MyCrate.IsDimple[corner]) { Image newImg = new GameObject().AddComponent <Image>(); GameUtils.ParentAndReset(newImg.gameObject, rt_contents); GameUtils.FlushRectTransform(newImg.rectTransform); newImg.name = "Dimple" + corner; newImg.sprite = s_dimple; newImg.transform.localEulerAngles = new Vector3(0, 0, -90 * corner); } } }
public void Init(PrefabController prefabController) { _prefabController = prefabController; _view = _prefabController.GetObject <BoardView>(PrefabConstant.PathBoardView, Vector3.zero, Quaternion.identity, null); _view.OnBoardSelected += (boardcoord) => OnBoardSelected?.Invoke(boardcoord); SetChessmanOnBoard(BoardDataModel.CreateAsNormalGame()); }
public HistoryView(GameView gameView) { InitializeComponent(); _game = gameView.Game; _gameView = gameView; _realBoardView = gameView.UcBoardView.Content as BoardView; _conversation = new HistoryViewConversation(); foreach (ICompensableCommand command in _game.Container.Moves) { ICompensableCommand momand = command.Copy(_board); _conversation.Execute(momand); _moves.Add(momand); } _game.Container.Moves.CollectionChanged += (sender, args) => { if (args.Action == NotifyCollectionChangedAction.Add) { ICompensableCommand command = args.NewItems[args.NewItems.Count - 1] as ICompensableCommand; command = command.Copy(_board); _conversation.Execute(command); _moves.Add(command); } if (args.Action == NotifyCollectionChangedAction.Remove) { _moves.RemoveAt(_moves.Count - 1); _conversation.Undo(); } }; _boardView = new BoardView(new Container(_board, _moves)); ListViewHistory.ItemsSource = _moves; }
public void ResumeGame() { BoardView.UpdateView(BoardModel, _blocks); IsPaused = false; _pausePanel.SetActive(false); }
public void Display(BoardView board) { Console.Clear(); Console.WriteLine(" a b c d e f g h "); for (int y = 7; y >= 0; y--) { Console.Write(y + 1 + " "); for (int x = 0; x < 8; x++) { Point point = new Point(x, y); ImmutablePiece piece = board[point]; SetColor(point, piece); if (board.IsEmpty(point)) { Console.Write(" "); } else { Console.Write(board[point].Identifier + " "); } } SetDefaultColor(); Console.WriteLine(); } Console.WriteLine(); }
private void RemoveClearedLines(List <int> clearedLines) { List <int[]> listBlocks = new List <int[]>(); for (int line = 0; line < BoardModel.NumLines; line++) { int[] columns = new int[BoardModel.NumColumns]; for (int column = 0; column < BoardModel.NumColumns; column++) { columns[column] = BoardModel.Blocks[line, column]; } listBlocks.Add(columns); } int[] emptyLine = new int[BoardModel.NumColumns]; for (int i = 0; i < clearedLines.Count; i++) { int clearedLine = clearedLines[i] + i; listBlocks.RemoveAt(clearedLine); listBlocks.Insert(0, emptyLine); } for (int line = 0; line < BoardModel.NumLines; line++) { for (int column = 0; column < BoardModel.NumColumns; column++) { BoardModel.Blocks[line, column] = Mathf.Max(listBlocks[line][column], Utils.TetrominoUtils.NoPiece); } } BoardView.UpdateView(BoardModel, _blocks); }
private void DrawTetromino(ITetrominoModel tetromino) { // Draw normal tetromino for (int blockLine = 0; blockLine < tetromino.NumLines; blockLine++) { for (int blockColumn = 0; blockColumn < tetromino.NumColumns; blockColumn++) { int blockType = tetromino.Blocks[blockLine, blockColumn]; if (blockType > Utils.TetrominoUtils.NoPiece) { // Converts the block line and column to board line and column int boardLine = tetromino.CurrentLine + blockLine; int boardColumn = tetromino.CurrentColumn + blockColumn; if (boardLine >= 0 && boardLine < BoardModel.NumLines && boardColumn >= 0 && boardColumn < BoardModel.NumColumns) { BoardModel.Blocks[boardLine, boardColumn] = blockType; } } } } // Update view after showing tetromino int endLine = tetromino.CurrentLine + tetromino.NumLines; int endColumn = tetromino.CurrentColumn + tetromino.NumColumns; BoardView.UpdateView(BoardModel, tetromino.CurrentLine, tetromino.CurrentColumn, endLine, endColumn, _blocks); }
public BoardView GetBoardView(int id) { var modelBoard = new BoardView(); var dbBoard = _dbContext.Boards .Include(b => b.Columns) .ThenInclude(c => c.Cards) .SingleOrDefault(x => x.Id == id); modelBoard.Title = dbBoard.Title; modelBoard.Id = dbBoard.Id; foreach (var dbColumn in dbBoard.Columns) { var modelColumn = new BoardView.Column() { Id = dbColumn.Id, Title = dbColumn.Title }; foreach (var dbCard in dbColumn.Cards) { var modelCard = new BoardView.Card() { Id = dbCard.Id, Content = dbCard.Contents }; modelColumn.Cards.Add(modelCard); } modelBoard.Columns.Add(modelColumn); } return(modelBoard); }
private void DrawGhostTetromino(ITetrominoModel ghostTetromino) { // Draw ghost tetromino for (int blockLine = 0; blockLine < ghostTetromino.NumLines; blockLine++) { for (int blockColumn = 0; blockColumn < ghostTetromino.NumColumns; blockColumn++) { int blockType = ghostTetromino.Blocks[blockLine, blockColumn]; if (blockType > Utils.TetrominoUtils.NoPiece) { // Converts the block line and column to board line and column int boardLine = ghostTetromino.CurrentLine + blockLine; int boardColumn = ghostTetromino.CurrentColumn + blockColumn; if (boardLine >= 0 && boardLine < BoardModel.NumLines && boardColumn >= 0 && boardColumn < BoardModel.NumColumns) { BoardModel.Blocks[boardLine, boardColumn] = Utils.TetrominoUtils.GhostPiece; } } } } // Update view after showing tetromino int ghostEndLine = ghostTetromino.CurrentLine + ghostTetromino.NumLines; int ghostEndColumn = ghostTetromino.CurrentColumn + ghostTetromino.NumColumns; BoardView.UpdateView(BoardModel, ghostTetromino.CurrentLine, ghostTetromino.CurrentColumn, ghostEndLine, ghostEndColumn, _blocks); }
public Game(BoardView boardView) { m_boardView = boardView; GameBoardBuilder builder = new GameBoardBuilder (); AddGameUnity (builder,Point.Make(0,4)); m_logicBoard = builder.GetBoard (); m_currentSelection = m_logicBoard.Select (Point.Make(-1,-1)); m_boardView.OnCellClicked.Register((x,y) =>{ //TODO: Usar state pattern var point = Point.Make(x,y); Debug.Log(point); if(m_currentSelection.IsEmpty) { m_currentSelection = m_logicBoard.Select(point); } else { var visitor = new WalkVisitor(point); m_currentSelection.Commands.Visit(visitor); m_boardView.AddResult(visitor.Result); m_currentSelection = m_logicBoard.Select (Point.Make(-1,-1)); } }); }
public void Undo(BoardView boardView) { if (Settlement != null) { GameObject.Destroy(Settlement.gameObject); } }
public BoardView GetBoard(int id) { var model = new BoardView(); var board = context.Boards .Include(b => b.Columns) .ThenInclude(c => c.Cards) .FirstOrDefault(x => x.Id == id); model.Id = board.Id; model.BoardTitle = board.Title; foreach (var column in board.Columns) { var modelColumn = new BoardView.Column { Title = column.Title }; foreach (var card in column.Cards) { var modelCard = new BoardView.Card { Id = card.Id, Content = card.Contents }; modelColumn.Cards.Add(modelCard); } model.Columns.Add(modelColumn); } return(model); }
private void BoardView_AskForUndo(object sender, EventArgs e) { if (PlayerToMove.IsThinking) { return; } if (GamePosition.GameFinished) { return; } int HowManyHalfMoves = (PlayerWaiting is EnginePlayer) ? 2 : 1; for (int i = 0; i < HowManyHalfMoves; i++) { int?MoveToUndo = GamePosition.LastMove; if (MoveToUndo == null) { //No moves handler return; } GamePosition.UnMake(); BoardView.UndoMove((int)MoveToUndo); } int WhiteMaterialAdvantage = CountMaterial(); BoardView.SetMaterial(WhiteMaterialAdvantage, -WhiteMaterialAdvantage); }
public override bool CanMoveTo(Point to, BoardView board) { Point delta = to - _currentPoint; if (delta.x == 0) { if (IsLegalMove(delta) && board.IsEmpty(to)) { return(true); } else if (delta.y == (int)Team * 2 && board.IsEmpty(to) && !IsMoved) { return(true); } else { return(false); } } if (Math.Abs(delta.x) == 1 && IsLegalMove(delta)) { if (board.IsOccupied(to) && IsEnemy(board[to])) { return(true); } } return(false); }
private void BoardView_AskForFinish(object sender, Tuple <Square, Square> e) { //Game is finished if (GamePosition.Status != Position.GameResult.InProcess) { BoardView.CancelMove(); MessageBox.Show("Error. Can't finish the move. Game is finished."); } int?Move = ConvertMove(e.Item1, e.Item2, GamePosition); if (Move is null) { BoardView.CancelMove(); } else { if (PlayerToMove is HumanPlayer) { PlayerToMove.MakeMove((int)Move); } else if (PlayerWaiting is HumanPlayer) { PlayerWaiting.PreMoves.Push((int)Move); } else { MessageBox.Show("Don't bother the comps! Let them play!"); } } }
private void Awake() { //Singleton Instance = this; // load setup LoadSetup(); // create board m_board = new Board(boardSize, players, winningCheck, maxLineWidth); m_boardView = GetComponent <BoardView>(); // initialize view m_boardView.Initialize(this, boardSize); // initialize IA for (int i = 0; i < players.Count; i++) { if (players[i].playerType == PlayerType.AI_Easy || players[i].playerType == PlayerType.AI_Medium || players[i].playerType == PlayerType.AI_Hard) { AIManager ia = gameObject.AddComponent <AIManager>(); ia.Initialize(this, players[i], minimaxType, maxMinimaxDepth); } } }
private void MoveToNextBoard() { if (!nextPoint) { CallFinishMoveDelegate(); return; } Vector2 startPosition = boardManagerPosition + currentPoint.BoardPosition; Vector2 nextPosition = boardManagerPosition + nextPoint.BoardPosition; Vector3 vectorDirection = nextPosition - startPosition; vectorDirection.Normalize(); if (Vector2.Distance(transform.position, nextPosition) > stoppedDistance) { transform.position += vectorDirection * speed * Time.deltaTime; } else { numberOfMove += 1; currentPoint = nextPoint; nextPoint = NextBoardPosition(); } }
public void Undo(BoardView boardView) { if (Road != null) { GameObject.Destroy(Road.gameObject); } }
public static void StartGame() { var player = SqlController.GetPlayer(); var board = new Board(player.Result); board.CreateBoard(); SqlController.BoardUpdate(board).Wait(); SqlController.NextTurn(board).Wait(); while (true) { if (Conditions.GameEnd(board)) { return; } var currentPlayer = SqlController.GetPlayer(); if (currentPlayer.Result == board.CurrentPlayer) { break; } BoardView.WaitForNewPlayer(board); } Console.Clear(); SqlController.BoardUpdate(board).Wait(); if (!Conditions.GameEnd(board)) { PlayerTurn(board); } }
/// <summary> /// Creates a base player /// </summary> /// <param name="team">Team</param> /// <param name="isHuman">Is the player human</param> /// <param name="callback">Move found callback</param> protected Player(sbyte team, bool isHuman, BoardView boardView) { this.boardView = boardView; Team = team; IsHuman = isHuman; }
public static void PlayerTurn(Board board) { while (!Conditions.GameEnd(board)) { Console.Clear(); SqlController.BoardUpdate(board).Wait(); BoardView.StaticText(PlayerLetter(board)); var input = Console.ReadLine(); int.TryParse(input, out var result); if (string.IsNullOrWhiteSpace(input) || result == 0) { BoardView.GameError(board, 0); continue; } var inputToNumber = int.Parse(input); if (inputToNumber < 0 || inputToNumber > 9) { BoardView.GameError(board, 1); continue; } var panel = PlayerLetter(board); board.PlayerAction(inputToNumber - 1, panel == "X" ? Panel.X : panel == "O" ? Panel.O : Panel.Empty); SqlController.BoardSend(board, result, PlayerLetter(board)); Console.Clear(); SqlController.BoardUpdate(board).Wait(); SqlController.NextTurn(board).Wait(); break; } if (!Conditions.GameEnd(board)) { OpponentTurn(board); } }
// create a new board, destroy old first void CreateBoard() { Debug.Assert(Model.InLevel); var level = Model.CurrentLevel; Util.Trace(1, "Create board '{0}' level {1} size {2}x{3}", GameDef.GetSetting(OptionSetting.title, "unknown"), Model.CurrentLevelIndex, level.Length, level.Depth); var camera = Camera.main; var camerasize = new Vector2(2 * camera.orthographicSize * camera.aspect, 2 * camera.orthographicSize); _screentoortho = 2 * camera.orthographicSize / camera.pixelHeight; // the size of the board including surroundings var boardsize = new Vector3(camerasize.x, camerasize.y) * BoardScale; // the rectangle of tiles in the level var levelsize = new Vector3Int(level.Width, level.Height, level.Depth); // the rectangle of tiles to be displayed var displaysize = (_modelinfo.ScreenSize == Vector2Int.zero) ? levelsize : Vector3Int.Min(levelsize, new Vector3Int(_modelinfo.ScreenSize.x, _modelinfo.ScreenSize.y, level.Depth)); // the size of each tile in units var scale = Math.Min(boardsize.x / displaysize.x, boardsize.y / displaysize.y); _board = Instantiate(BoardPrefab); _boardview = _board.GetComponent <BoardView>(); _boardview.Setup(boardsize); _boardview.CreateTiles(displaysize, scale, level.Width, TilePrefab); }
public async Task <IActionResult> Detail(int id) { var board = await _boardService.GetBoardInfo(id); var model = new BoardView(); model.Id = board.Id; model.Title = board.Title; foreach (var column in board.Columns) { var modelColumn = new BoardView.Column { Title = column.Title, Id = column.Id }; foreach (var card in column.Cards) { var modelCard = new BoardView.Card { Id = card.Id, Title = card.Title }; modelColumn.Cards.Add(modelCard); } model.Columns.Add(modelColumn); } return(View(model)); }
// ---------------------------------------------------------------- // Initialize // ---------------------------------------------------------------- public void Initialize(BoardView _boardView, BoardSpace mySpace) { this.myBoardView = _boardView; int col = mySpace.Col; int row = mySpace.Row; // Parent me to my boooard! GameUtils.ParentAndReset(this.gameObject, _boardView.tf_boardSpaces); this.gameObject.name = "BoardSpace_" + col + "," + row; // Size/position me right! float diameter = _boardView.UnitSize - 1; myRectTransform.anchoredPosition = new Vector2(_boardView.BoardToX(col), _boardView.BoardToY(row)); myRectTransform.sizeDelta = new Vector2(diameter, diameter); // Only show body if I'm playable. i_body.enabled = mySpace.IsPlayable; // Add walls! if (mySpace.IsWall(Sides.T)) { AddWallImage(Sides.T); } if (mySpace.IsWall(Sides.L)) { AddWallImage(Sides.L); } }
private void TeleportToPoint() { int index = currentPoint.BoardModel.BoardNumber; TeleportModel teleportModel = teleporter.Teleports.FindTeleportByTrigger(index); Vector2 playerPosition = transform.position; Vector2 startPosition = boardManagerPosition + playerPosition; Vector2 nextPosition = boardManagerPosition + teleportModel.BoardPoint.finalPoint.BoardPosition; Vector3 vectorDirection = nextPosition - startPosition; vectorDirection.Normalize(); if (Vector2.Distance(transform.position, nextPosition) > stoppedDistance) { transform.position += vectorDirection * speed * Time.deltaTime; } else { currentPoint = teleportModel.BoardPoint.finalPoint; nextPoint = NextBoardPosition(); numberOfMove = 0; diceNumber = 0; turnType = TurnType.Wating; CallFinishMoveDelegate(); } }
public GameScene(int boardRows, int boardColumns, int gameTimeMilliseconds, SpriteFont font) : base(font) { _boardView = new BoardView(new BoardModel(boardRows, boardColumns), _boardPosition); _boardView.BoardModel.TileDeleted += OnTileDeleted; _timer = new Timer(gameTimeMilliseconds); _timer.TimeOut += OnTimeOut; }
private void LocalGameButton_OnClick(object sender, RoutedEventArgs e) { var gameFactory = new GameFactory(); var boardView = new BoardView(_container); var game = gameFactory.CreateGame(Mode.Local, _container, boardView, Color.White, null); _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView); }
private void Engine_Click(object sender, RoutedEventArgs e) { var gameFactory = new GameFactory(); var boardView = new BoardView(new Container()); var game = gameFactory.CreateGame(Mode.Engine, new Container(), boardView, Color.White, null); _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView); }
public GameController() { _game = Game.Current; _boardview = new BoardView(); _gameview = new GameView(); _inputController = new InputController(); }
public override void ViewDidLoad() { base.ViewDidLoad (); gameView = new BoardView(); gameView.Frame = new System.Drawing.RectangleF(0,0,960,640); scrollView = new UIScrollView(); scrollView.AddSubview(gameView); scrollView.BackgroundColor = UIColor.DarkGray; scrollView.MaximumZoomScale = 1f; scrollView.MinimumZoomScale = .5f; scrollView.ViewForZoomingInScrollView = delegate{ return gameView; }; scrollView.ContentSize = gameView.Frame.Size; scrollView.SetZoomScale(.5f,false); BoardGame = new Game(gameView); this.View = scrollView; gameView.StartGame(new List<Card>{ new Card{Value1 = "1",Value2 = "1"}, new Card{Value1 = "2",Value2 = "2"}, new Card{Value1 = "3",Value2 = "3"}, new Card{Value1 = "4",Value2 = "4"}, new Card{Value1 = "5",Value2 = "5"}, new Card{Value1 = "6",Value2 = "6"}, new Card{Value1 = "7",Value2 = "7"}, new Card{Value1 = "8",Value2 = "8"}, new Card{Value1 = "9",Value2 = "9"}, new Card{Value1 = "10",Value2 = "10"}, new Card{Value1 = "11",Value2 = "11"}, new Card{Value1 = "12",Value2 = "12"}, new Card{Value1 = "13",Value2 = "13"}, new Card{Value1 = "14",Value2 = "14"}, new Card{Value1 = "15",Value2 = "15"}, }); }
public Game(BoardView gameView) { GameView = gameView; CurrentGame = this; }
private void Awake() { _boardView = GetComponent<BoardView>(); _boardGridField = GetComponent<BoardGridField>(); _pool = GetComponent<TrashMan>(); }