/// <summary> /// Déplace le joueur à un emplacement défini par le MovingType /// </summary> /// <param name="MovingType"></param> public virtual void Move(TypeDeplacement MovingType) { _inMoving = true; _movingType = MovingType; switch (_movingType) { case TypeDeplacement.Haut: _direction = -Vector2.UnitY; _posY--; break; case TypeDeplacement.Bas: _direction = Vector2.UnitY; _posY++; break; case TypeDeplacement.Gauche: _direction = -Vector2.UnitX; _posX--; break; case TypeDeplacement.Droite: _direction = Vector2.UnitX; _posX++; break; } _arrivee = GetPositionVoulu(); }
/// <summary> /// Déplace le joueur et son bloc /// </summary> /// <param name="MovingType"></param> private void MoveBloc(TypeDeplacement MovingType, bool OnlyPlayeur) { var pBloc = GetPlayerBloc(_CurrentPlayer); if (OnlyPlayeur) { _MovingType = TypeDeplacement.None; } else { GetPlainBloc(pBloc.PosX, pBloc.PosY).Move(MovingType); } pBloc.Move(MovingType); }
/// <summary> /// Vérifie qu'un déplacement est possible /// </summary> /// <param name="typeDeplacement">type de déplacement</param> /// <param name="inmoving">Le joueur était-il déjà en déplacement</param> /// <returns></returns> private bool IsDeplacementPossible(TypeDeplacement typeDeplacement, out bool OnlyPlayeur, bool inmoving = false) { OnlyPlayeur = false; var X = GetPlayerBloc(_CurrentPlayer).PosX; var Y = GetPlayerBloc(_CurrentPlayer).PosY; switch (typeDeplacement) { case TypeDeplacement.Haut: Y--; break; case TypeDeplacement.Bas: Y++; break; case TypeDeplacement.Gauche: X--; break; case TypeDeplacement.Droite: X++; break; } if (!HasBloc(X, Y)) { return(false); } var plainBloc = GetPlainBloc(X, Y); if (plainBloc == null) { return(true); } if (HasPlayerBloc(X, Y) || inmoving) { return(false); } OnlyPlayeur = true; return(true); }
/// <summary> /// Vérifie et stoppe le déplacement de l'objet s'il a atteint son but /// </summary> private void CheckPosition() { if (_inMoving) { bool fin = false; switch (_movingType) { case TypeDeplacement.Haut: if (_position.Y <= _arrivee.Y) { fin = true; } break; case TypeDeplacement.Bas: if (_position.Y >= _arrivee.Y) { fin = true; } break; case TypeDeplacement.Gauche: if (_position.X <= _arrivee.X) { fin = true; } break; case TypeDeplacement.Droite: if (_position.X >= _arrivee.X) { fin = true; } break; } if (fin) { _inMoving = false; _movingType = TypeDeplacement.None; _arrivee = Vector2.Zero; _direction = Vector2.Zero; } } }
public bool CheckIfCaseIsEmpty(TypeDeplacement typeDeplacement, Position position, IEnumerable <Position> listPosition) { switch (typeDeplacement) { case TypeDeplacement.Down: return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition && pos.TopCursorPosition == position.TopCursorPosition + 3).Any()); case TypeDeplacement.Up: return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition && pos.TopCursorPosition == position.TopCursorPosition - 3).Any()); case TypeDeplacement.Left: return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition - 5 && pos.TopCursorPosition == position.TopCursorPosition).Any()); case TypeDeplacement.Right: return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition + 5 && pos.TopCursorPosition == position.TopCursorPosition).Any()); default: return(false); } }
public bool CheckMoveValidity(TypeDeplacement typeDeplacement, Position currentPos, Grille grille) { switch (typeDeplacement) { case TypeDeplacement.Down: return(currentPos.TopCursorPosition + 3 < (grille.BottomBorder)); case TypeDeplacement.Up: return(currentPos.TopCursorPosition - 3 > (grille.TopBorder)); case TypeDeplacement.Left: return(currentPos.LeftCursorPosition - 5 > (grille.LeftBorder)); case TypeDeplacement.Right: return(currentPos.LeftCursorPosition + 5 < (grille.RightBorder)); default: return(false); } }
private bool CanMove(TypeDeplacement typeDeplacement, Position currentPositionJoueur) { return(_deplacementService.CheckMoveValidity(typeDeplacement, currentPositionJoueur, grille) && _deplacementService.CheckIfCaseIsEmpty(typeDeplacement, currentPositionJoueur, _listPosition)); }
/// <summary> /// Vérifie et stoppe le déplacement de l'objet s'il a atteint son but /// </summary> private void CheckPosition() { if (_inMoving) { bool fin = false; switch (_movingType) { case TypeDeplacement.Haut: if (_position.Y <= _arrivee.Y) fin = true; break; case TypeDeplacement.Bas: if (_position.Y >= _arrivee.Y) fin = true; break; case TypeDeplacement.Gauche: if (_position.X <= _arrivee.X) fin = true; break; case TypeDeplacement.Droite: if (_position.X >= _arrivee.X) fin = true; break; } if (fin) { _inMoving = false; _movingType = TypeDeplacement.None; _arrivee = Vector2.Zero; _direction = Vector2.Zero; } } }
/// <summary> /// Déplace le joueur et son bloc /// </summary> /// <param name="MovingType"></param> private void MoveBloc(TypeDeplacement MovingType, bool OnlyPlayeur) { var pBloc = GetPlayerBloc(_CurrentPlayer); if (OnlyPlayeur) _MovingType = TypeDeplacement.None; else GetPlainBloc(pBloc.PosX, pBloc.PosY).Move(MovingType); pBloc.Move(MovingType); }
/// <summary> /// Vérifie qu'un déplacement est possible /// </summary> /// <param name="typeDeplacement">type de déplacement</param> /// <param name="inmoving">Le joueur était-il déjà en déplacement</param> /// <returns></returns> private bool IsDeplacementPossible(TypeDeplacement typeDeplacement, out bool OnlyPlayeur, bool inmoving = false) { OnlyPlayeur = false; var X = GetPlayerBloc(_CurrentPlayer).PosX; var Y = GetPlayerBloc(_CurrentPlayer).PosY; switch (typeDeplacement) { case TypeDeplacement.Haut: Y--; break; case TypeDeplacement.Bas: Y++; break; case TypeDeplacement.Gauche: X--; break; case TypeDeplacement.Droite: X++; break; } if (!HasBloc(X, Y)) return false; var plainBloc = GetPlainBloc(X, Y); if (plainBloc == null) return true; if (HasPlayerBloc(X, Y) || inmoving) return false; OnlyPlayeur = true; return true; }