/// <summary> /// Tell us next row and column index /// </summary> /// <param name="direction"></param> /// <param name="nextRow"></param> /// <param name="nextColumn"></param> /// <returns></returns> private bool MoveToNextElement(MapMove direction, out int nextRow, out int nextColumn) { nextRow = _currentRowIndex; nextColumn = _currentColumnIndex; switch (direction) { case MapMove.Up: nextRow--; break; case MapMove.Down: nextRow++; break; case MapMove.Left: nextColumn--; break; case MapMove.Right: nextColumn++; break; case MapMove.None: default: break; } // validate result logic if (nextRow < 0 || nextRow >= _rows || nextColumn < 0 || nextColumn >= _columns) { return(false); } return(true); }
/// <summary> /// Determine next direction /// </summary> /// <param name="currentDirection"></param> /// <param name="mapBoard"></param> /// <param name="characterPath"></param> /// <returns></returns> private static MapMove FindNextMove(MapMove currentDirection, MapDirections mapBoard, StringBuilder characterPath) { var direction = currentDirection; if (currentDirection == MapMove.None) { direction = GetDirection(MapMove.Up, MapMove.Right, mapBoard, characterPath); direction = GetDirection(direction, MapMove.Down, mapBoard, characterPath); direction = GetDirection(direction, MapMove.Left, mapBoard, characterPath); } else if (!mapBoard.IsValidMove(currentDirection)) { // if current position is up or down go left or right and vice versa if (currentDirection == MapMove.Up || currentDirection == MapMove.Down) { direction = GetDirection(MapMove.Left, MapMove.Right, mapBoard, characterPath); } else if (currentDirection == MapMove.Left || currentDirection == MapMove.Right) { direction = GetDirection(MapMove.Up, MapMove.Down, mapBoard, characterPath); } } return(direction); }
void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.name == "Player") { if (!gameOver.activeSelf) { gameOver.SetActive(true); } MapMove map1 = GameObject.Find("Map1").GetComponent <MapMove> (); map1.enabled = false; MapMove map2 = GameObject.Find("Map2").GetComponent <MapMove> (); map2.enabled = false; Rigidbody2D playerRigidbody2D = GameObject.Find("Player").GetComponent <Rigidbody2D> (); Destroy(playerRigidbody2D); if (GameSever.getSingleton().isMute == true) { Die.mute = GameSever.getSingleton().isMute; Hit.mute = GameSever.getSingleton().isMute; } else { Die.Play(); Hit.Play(); } } }
private void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.name == "Player") { if (!gameOver.activeSelf) { gameOver.SetActive(true); if (!gameHomeBtn.activeSelf) { gameHomeBtn.SetActive(true); } if (!gameRestartBtn.activeSelf) { gameRestartBtn.SetActive(true); } AudioManager._instance.SetAudio(AudioClipType.dead); AudioManager._instance.StopAudio(); } MapMove map1 = GameObject.Find("MapMain").GetComponent <MapMove>(); map1.enabled = false; MapMove map2 = GameObject.Find("MapMain1").GetComponent <MapMove>(); map2.enabled = false; Rigidbody2D rigidbody2D = GameObject.Find("Player").GetComponent <Rigidbody2D>(); Destroy(rigidbody2D); } }
private void Awake() { mapMoveController = LuigisZip.Instance.luigis[zoneId]; if (confirmPanel == null) { //No va :((( confirmPanel = MenuManager.Instance.confirmPanel; } }
/// <summary> /// Return next character /// </summary> /// <param name="direction"></param> /// <returns></returns> public char?SearchNextChar(MapMove direction) { char?element = null; if (MoveToNextElement(direction, out int nextRow, out int nextColumn)) { element = _charMap[nextRow, nextColumn]; } return(element); }
/// <summary> /// Adjust current indexes and remember position /// </summary> /// <param name="direction"></param> /// <returns></returns> public bool AdjustIndexes(MapMove direction) { if (!MoveToNextElement(direction, out int nextRow, out int nextColumn)) { return(false); } _currentPostitionArray[_currentRowIndex, _currentColumnIndex] = PositionVisited; _currentRowIndex = nextRow; _currentColumnIndex = nextColumn; return(true); }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); rX = clickX - e.X; rY = clickY - e.Y; if (clickX != 0 || clickY != 0) { x = oldX + rX; y = Math.Min(Math.Max(0, oldY + rY), 160 * tileSize - this.ClientSize.Height); this.Invalidate(); MapMove?.Invoke(this, new MapMoveEventArgs() { C = x / tileSize, R = y / tileSize }); } }
/// <summary> /// Based on two input directions determine next move /// </summary> /// <param name="first"></param> /// <param name="second"></param> /// <param name="mapBoard"></param> /// <param name="characterPath"></param> /// <returns></returns> private static MapMove GetDirection(MapMove first, MapMove second, MapDirections mapBoard, StringBuilder characterPath) { var takeFirst = first != MapMove.None && mapBoard.IsValidMove(first); var takeSecond = second != MapMove.None && mapBoard.IsValidMove(second); var firstDirectionMark = GetDirectionMove(first, mapBoard.SearchNextChar(first)); var secondDirectionMark = GetDirectionMove(second, mapBoard.SearchNextChar(second)); // first check for possible invalid moves // only one direction is valid if (takeFirst && firstDirectionMark && takeSecond && secondDirectionMark) { string exceptionMessage = "Path is invalid at character: " + characterPath.ToString(); throw new MapException(exceptionMessage); } // only one direction is valid else if (takeFirst && takeSecond) { string exceptionMessage = "Path is invalid at character: " + characterPath.ToString(); throw new MapException(exceptionMessage); } // take valid move else if (takeFirst && firstDirectionMark) { return(first); } else if (takeSecond && secondDirectionMark) { return(second); } else if (takeFirst) { return(first); } else if (takeSecond) { return(second); } else { return(MapMove.None); } }
/// <summary> /// Determine if next character is mark for direction (left, right, up, down) /// </summary> /// <param name="currentMove"></param> /// <param name="nextChar"></param> /// <returns></returns> private static bool GetDirectionMove(MapMove currentMove, char?nextChar) { if (!nextChar.HasValue) { return(false); } if (currentMove == MapMove.Left || currentMove == MapMove.Right) { return(nextChar == MapConstant.FromLeftToRight); } else if (currentMove == MapMove.Up || currentMove == MapMove.Down) { return(nextChar == MapConstant.UpToDown); } else { return(false); } }
// Use this for initialization void OnCollisionEnter2D(Collision2D other) { Debug.Log("dshdjsf"); if (other.gameObject.name == "player") { AudioManager._instance.setAudio(AudioClipType.die); if (!gameOver.activeSelf) { gameOver.SetActive(true); } MapMove map1 = GameObject.Find("map1").GetComponent <MapMove>(); map1.enabled = false; MapMove map2 = GameObject.Find("map2").GetComponent <MapMove>(); map2.enabled = false; Rigidbody2D playerRigidbody2D = GameObject.Find("player").GetComponent <Rigidbody2D> (); Destroy(playerRigidbody2D); } }
/// <summary> /// Determine if we can move to this element /// </summary> /// <param name="direction"></param> /// <returns></returns> public bool IsValidMove(MapMove direction) { var element = SearchNextChar(direction); return(element.HasValue && element != MapConstant.Blank); }