static void InputEngine_onButtonUp(InputEngine.MouseArgs e) { if (MineSweeper.IsGUI()) currentScreen.OnButtonUp(e); if (MineSweeper.IsField()) s_hud.OnButtonUp(e); }
/* * 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; } } }
static void InputEngine_onKeyUp(InputEngine.KeyboardArgs e) { if (MineSweeper.IsGUI()) currentScreen.OnKeyUp(e); if (MineSweeper.IsField()) s_hud.OnKeyUp(e); }
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; }
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); } } }