Example #1
0
 static void InputEngine_onButtonUp(InputEngine.MouseArgs e)
 {
     if (MineSweeper.IsGUI())
         currentScreen.OnButtonUp(e);
     if (MineSweeper.IsField())
         s_hud.OnButtonUp(e);
 }
Example #2
0
        /*
         * Activates tile logic when it's been clicked on. x,y,z - indexes.
         */

        public virtual unsafe void OnHit(int x, int y, int z, int button)
        {
            if (isLost || isWon)
            {
                return;
            }

            if (((button == 0 && InputEngine.curMouse.RightButton == ButtonState.Pressed) ||
                 (button == 1 && InputEngine.curMouse.LeftButton == ButtonState.Pressed) ||
                 InputEngine.WereBothMouseButtonsClicked()) && tiles[x][y][z].IsOpened)
            {
                if (GetSurroundingMinesLeftCount(x, y, z) == 0)
                {
                    for (int i = x - 1; i <= x + 1; i++)
                    {
                        for (int j = y - 1; j <= y + 1; j++)
                        {
                            if (i >= 0 && j >= 0 &&
                                i < fieldSize.X && j < fieldSize.Y &&
                                !tiles[i][j][0].IsOpened && !tiles[i][j][0].IsFlagged)
                            {
                                OnHitRightLeft(i, j, 0);
                            }
                        }
                    }
                }
                else
                {
                    Entity.EntityManager.AddSquareCross(new Vector3(x * 16, y * 16, 0), new Vector3(16, 16, 0));
                }
                return;
            }

            if (button == 0)
            {
                Tile t = tiles[x][y][z];
                if (t.IsFlagged || t.IsOpened)
                {
                    return;
                }
                t.OnOpened();
                if (t.CurrentState == 0)
                {
                    for (int i = x - 1; i <= x + 1; i++)
                    {
                        for (int j = y - 1; j <= y + 1; j++)
                        {
                            if (i >= 0 && j >= 0 &&
                                i < fieldSize.X && j < fieldSize.Y &&
                                !tiles[i][j][0].IsOpened && !tiles[i][j][0].IsFlagged && tiles[i][j][0].CurrentState >= 0)
                            {
                                OnHit(i, j, 0, button);
                            }
                        }
                    }
                }
            }
            if (button == 1)
            {
                Tile t = tiles[x][y][z];
                if (!t.IsOpened)
                {
                    t.IsFlagged = !t.IsFlagged;
                    minesLeft  += t.IsFlagged ? -1 : 1;
                }
            }
        }
Example #3
0
 static void InputEngine_onKeyUp(InputEngine.KeyboardArgs e)
 {
     if (MineSweeper.IsGUI())
         currentScreen.OnKeyUp(e);
     if (MineSweeper.IsField())
         s_hud.OnKeyUp(e);
 }
Example #4
0
 static void InputEngine_onButtonUp(InputEngine.MouseArgs e)
 {
     if (MineSweeper.IsField() && !InputEngine.eventHandled && !ignoreNextClick)
     {
         MineSweeper.gameField.HitTest(new Vector3(e.curState.X, e.curState.Y, 0), e.button);
     }
     ignoreNextClick = leftPressed && rightPressed;
     if (e.button == 0) leftPressed = false;
     if (e.button == 1) rightPressed = false;
 }
Example #5
0
 static void InputEngine_onButtonDown(InputEngine.MouseArgs e)
 {
     leftPressed |= (e.button == 0);
     rightPressed |= (e.button == 1);
     if (MineSweeper.IsField())
     {
         if (e.button == 0 && e.curState.RightButton == ButtonState.Released)
         {
             allowDnD = true;
             DnDstart = new Vector2(e.curState.X,e.curState.Y);
         }
     }
 }