private void MovePlayer(Toolbox.Orientation orientation, Vector2 vDestPos) { if (GameMap.Map.ContainsKey(vDestPos)) { GameMap.player.MoveTo(orientation, vDestPos); } }
private void MovePlayer(Toolbox.Orientation orientation, Vector2 vDestPos) { Rectangle pSourceRect = ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Anime.SourceRect; //Vector2 origin = new Vector2(pSourceRect.Width / 2, pSourceRect.Height / 2); Vector2 vLvlArea = ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.Map [ ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex ].Level.Size * ToT.Settings.LevelTileSize; //vDestPos = vDestPos - origin; //if (vDestPos.X >= ToT.Settings.LevelTileSize.X / 2 // && vDestPos.X <= vLvlArea.X - ToT.Settings.LevelTileSize.X / 2 // && vDestPos.Y >= ToT.Settings.LevelTileSize.Y / 2 // && vDestPos.Y <= vLvlArea.Y - ToT.Settings.LevelTileSize.Y / 2) //{ //if ( // !CheckIfThingBlocking( // vDestPos, // pSourceRect, // ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.Map // [ // ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex // ].Level.Things // ) // ) //{ if (IsMoveableTo(vDestPos, ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.Map [ ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex ].Level)) { ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.State = Toolbox.EntityState.Moving; ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.LevelMoveTo(orientation, vDestPos); } //} //} }
private void UpdatePlayerMovement(InputManager input) { Vector2 vCurrentPos = ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.LevelPosition; Toolbox.Orientation ori = ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Orientation; float pSpeed = ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.GetStat(Toolbox.Stat.Speed); ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.State = Toolbox.EntityState.Idle; if (input.KeyDown(Keys.Left) || input.KeyDown(ToT.Settings.Controls[Toolbox.Controls.MoveLeft])) { ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Anime.FY = 1; vCurrentPos = new Vector2(vCurrentPos.X - pSpeed, vCurrentPos.Y); ori = Toolbox.Orientation.West; } if (input.KeyDown(Keys.Right) || input.KeyDown(ToT.Settings.Controls[Toolbox.Controls.MoveRight])) { ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Anime.FY = 2; vCurrentPos = new Vector2(vCurrentPos.X + pSpeed, vCurrentPos.Y); ori = Toolbox.Orientation.East; } if (input.KeyDown(Keys.Up) || input.KeyDown(ToT.Settings.Controls[Toolbox.Controls.MoveUp])) { ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Anime.FY = 3; vCurrentPos = new Vector2(vCurrentPos.X, vCurrentPos.Y - pSpeed); ori = Toolbox.Orientation.North; } if (input.KeyDown(Keys.Down) || input.KeyDown(ToT.Settings.Controls[Toolbox.Controls.MoveDown])) { ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.Anime.FY = 0; vCurrentPos = new Vector2(vCurrentPos.X, vCurrentPos.Y + pSpeed); ori = Toolbox.Orientation.South; } if (vCurrentPos != ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.LevelPosition) { MovePlayer(ori, vCurrentPos); } }
internal void MoveTo(Toolbox.Orientation orientation, Vector2 vDestPos) { DestTileIndex = vDestPos; State = Toolbox.EntityState.Moving; Orientation = orientation; }
internal void LevelMoveTo(Toolbox.Orientation orientation, Vector2 vDestPos) { State = Toolbox.EntityState.Moving; LevelPosition = vDestPos; Orientation = orientation; }
public static Dictionary <Vector2, Room> GenerateMap(string lvlBase) { Dictionary <Vector2, Room> tMap = new Dictionary <Vector2, Room>(); int iX; int iY; int iLastX = 0; int iLastY = 0; int nbRoom; int LastRoomOri = -1; //0 = North, 1 = East, 2 = South, 3 = West int roomOri; bool bOverlapses; int maxLoops; Vector2 currentPos = Vector2.Zero; Vector2 tempPos = currentPos; nbRoom = Toolbox.StaticRandom.Instance.Next(6, 25); for (int iR = 0; iR < nbRoom; iR++) { maxLoops = 20; int[,] tArr; do { iX = Toolbox.StaticRandom.Instance.Next(6, 19); iY = Toolbox.StaticRandom.Instance.Next(6, 19); int[,] arr = new int[iX, iY]; for (int i = 0; i < iX; i++) { for (int j = 0; j < iY; j++) { arr[i, j] = 1; } } tArr = arr; do { roomOri = Toolbox.StaticRandom.Instance.Next(0, 4); } while (roomOri == LastRoomOri); if (LastRoomOri != -1) { switch (roomOri) { case 0: tempPos = new Vector2(currentPos.X, currentPos.Y - iY - 1); break; case 1: tempPos = new Vector2(currentPos.X + iLastX + 1, currentPos.Y); break; case 2: tempPos = new Vector2(currentPos.X, currentPos.Y + iLastY + 1); break; case 3: tempPos = new Vector2(currentPos.X - iX - 1, currentPos.Y); break; } } bOverlapses = false; foreach (KeyValuePair <Vector2, Room> tRoom in tMap) { if (Intersects(tRoom.Key, new Vector2(tRoom.Value.Size.GetLength(0), tRoom.Value.Size.GetLength(1)), tempPos, new Vector2(iX, iY))) { bOverlapses = true; break; } } maxLoops--; if (maxLoops <= 0) { return(null); } } while (bOverlapses); currentPos = tempPos; iLastX = iX; iLastY = iY; LastRoomOri = roomOri; Toolbox.Orientation gateOrientation = Toolbox.Orientation.North; //0 = North, 1 = East, 2 = South, 3 = West switch (roomOri) { case 0: gateOrientation = Toolbox.Orientation.South; break; case 1: gateOrientation = Toolbox.Orientation.West; break; case 2: gateOrientation = Toolbox.Orientation.North; break; case 3: gateOrientation = Toolbox.Orientation.East; break; } Room tNewRoom = new Room { Size = tArr, GateOrientation = gateOrientation }; tMap.Add(currentPos, tNewRoom); } return(tMap); }