public void Move(charDirs moveDirection) { if (moveDirection == nextMoveDir) //this means we're turning { currentMoveDir = nextMoveDir; isWaitingToTurn = false; } switch (currentMoveDir) { case charDirs.Up: position.Y -= pixelsMovedPerMove; if ((int)position.Y % Level.tileSize == 0) setGridPositionFromPosition(); break; case charDirs.Down: position.Y += pixelsMovedPerMove; if ((int)position.Y % Level.tileSize == 0) setGridPositionFromPosition(); break; case charDirs.Left: position.X -= pixelsMovedPerMove; if ((int)position.X % Level.tileSize == 0) setGridPositionFromPosition(); break; case charDirs.Right: position.X += pixelsMovedPerMove; if ((int)position.X % Level.tileSize == 0) setGridPositionFromPosition(); break; } if ((int)position.Y % Level.tileSize == 0 && (int)position.X % Level.tileSize == 0) isSnappedToGrid = true; else isSnappedToGrid = false; }
public Mobile(ContentManager myContent, SpriteBatch SpriteBatch) { timeSinceLastMove = 0; timeSinceLastAnimate = 0; isAnimated = false; //FOR NOW!!! mobileTiles = myContent.Load<Texture2D>("graphics\\GameScreen\\mobiletiles"); bigmobileTiles = myContent.Load<Texture2D>("graphics\\GameScreen\\bigmobiletiles"); spriteBatch = SpriteBatch; currentAnimationFrame = 0; SetSpriteSheetSrcRect(); currentMoveDir = charDirs.None; isWaitingToTurn = false; isSnappedToGrid = true; }
bool checkMove(int[,] levelMap, charDirs checkDirection) { int mapHeight = Level.mapHeight; int mapWidth = Level.mapWidth; switch (checkDirection) { case charDirs.Down: if (gridPosition.Y == mapHeight - 1) { gridPosition.Y = 0; setPositionFromGridPosition(); return true; } else if (levelMap[(int)gridPosition.Y + 1, (int)gridPosition.X] >= (int)mapTilesIDs.EMPTY) { Move(checkDirection); return true; } break; case charDirs.Right: if (gridPosition.X == mapWidth - 1) { gridPosition.X = 0; setPositionFromGridPosition(); return true; } else if (levelMap[(int)gridPosition.Y, (int)gridPosition.X + 1] >= (int)mapTilesIDs.EMPTY) { Move(checkDirection); return true; } break; case charDirs.Up: if (gridPosition.Y == 0) { gridPosition.Y = mapHeight - 1; setPositionFromGridPosition(); } else if (levelMap[(int)gridPosition.Y - 1, (int)gridPosition.X] >= (int)mapTilesIDs.EMPTY) { Move(checkDirection); return true; } break; case charDirs.Left: if (gridPosition.X == 0) { gridPosition.X = mapHeight - 1; setPositionFromGridPosition(); } else if (levelMap[(int)gridPosition.Y, (int)gridPosition.X - 1] >= (int)mapTilesIDs.EMPTY) { Move(checkDirection); return true; } break; } return false; }
public void SetNextDir(charDirs nextDir) { isWaitingToTurn = true; nextMoveDir = nextDir; }