private IEnumerable <Tile> HighLightTilesInDirection(GoalDirection direction, int distance) { var directionVector = GlobalHelper.GetVectorForDirection(direction); var areaTiles = GameManager.Instance.CurrentArea.AreaTiles; var highlightedTiles = new List <Tile>(); var currentTile = GameManager.Instance.CurrentTile; for (var i = 0; i < distance; i++) { var nextTileId = new Vector2(currentTile.X + directionVector.x, currentTile.Y + directionVector.y); try { currentTile = areaTiles[(int)nextTileId.x, (int)nextTileId.y]; } catch (Exception) { break; } if (currentTile.GetBlocksLight() || currentTile.Visibility != Visibilities.Visible) { break; } HighlightTile(currentTile); highlightedTiles.Add(currentTile); } return(highlightedTiles); }
private static string GetDirectionName(GoalDirection direction) { if (direction == GoalDirection.Ascending) return "Ascending"; if (direction == GoalDirection.Descending) return "Descending"; return "N/A"; }
private void Update() { if (Input.anyKeyDown && _listeningForInput) { _listeningForInput = false; GoalDirection chosenDirection = GoalDirection.North; bool validDirectionChosen = false; if (Input.GetKeyDown(KeyCode.Escape)) { Hide(); return; } foreach (var keypadDirection in _keypadDirections) { if (Input.GetKeyDown(keypadDirection.Key)) { chosenDirection = keypadDirection.Value; validDirectionChosen = true; break; } } if (!validDirectionChosen) { _listeningForInput = true; return; } var currentTile = GameManager.Instance.Player.CurrentTile; var directionVector = GlobalHelper.GetVectorForDirection(chosenDirection); var targetVector = new Vector2(currentTile.X + directionVector.x, currentTile.Y + directionVector.y); var targetTile = GameManager.Instance.CurrentArea.AreaTiles[(int)targetVector.x, (int)targetVector.y]; if (targetTile.PresentProp is Grave) { //todo show grave inscription } EventMediator.Instance.Broadcast("DroppedItemPopup", this, targetTile); Hide(); } }
public Push(Entity target, GoalDirection direction, int distance = 1) { name = "push"; entity = target; var directionVector = GlobalHelper.GetVectorForDirection(direction); for (var i = 0; i < distance; i++) { var targetTileCoordinates = new Vector2(target.CurrentTile.X + directionVector.x, target.CurrentTile.Y + directionVector.y); if (!target.AreaMapCanMoveLocal(targetTileCoordinates)) { break; } target.AreaMove(targetTileCoordinates); } }
public static Vector2 GetVectorForDirection(GoalDirection direction) { return(DirectionVectorDictionary[direction]); }
public Step(GoalDirection direction) { StepDirection = direction; }
public static List <double> GetAllForbiddenAngle(int x1, int y1, List <System.Drawing.PointF> playetPos, GoalDirection goalDirection) { List <double> angels = new List <double>(); float GBx, GTx; float GTy = FieldLocations.TopGoal; float GBy = FieldLocations.ButtomGoal; if (goalDirection == GoalDirection.Left) { GTx = FieldLocations.LeftLine; GBx = FieldLocations.LeftLine; } else { GTx = FieldLocations.RightLine; GBx = FieldLocations.RightLine; } var angle = GetAngleBetweenTwoPoints(x1, y1, GBx, GBy); angels.Add(angle); angle = GetAngleBetweenTwoPoints(x1, y1, GTx, GTy); angels.Add(angle); foreach (var point in playetPos) { if (isPointInTriangle(x1, y1, GTx, GTy, GBx, GBy, point.X, point.Y)) { angle = GetAngleBetweenTwoPoints(x1, y1, point.X, point.Y); angels.Add(angle); } } angels.Sort(); return(angels); }
/// <summary> /// Добавление целевого поля для дамки /// </summary> /// <param name="goalList">Список целей, накопительный</param> /// <param name="pos">Адрес ячейки, вокруг которой ищется цель</param> /// <param name="direction">Направление поиска в "глубину"</param> /// <returns>true - была также найдена возможность боя</returns> private void AddKingGoal(List <Cell> steps, List <Cell> battles, Address pos, GoalDirection direction) { int dx, dy; switch (direction) { case GoalDirection.NW: dx = dy = -1; break; case GoalDirection.NE: dx = +1; dy = -1; break; case GoalDirection.SE: dx = dy = +1; break; case GoalDirection.SW: dx = -1; dy = +1; break; default: return; } var source = (Cell)_cells[pos]; var combat = false; var addr = pos; while (true) { addr = new Address(addr.Coords.X + dx, addr.Coords.Y + dy); if (addr.IsEmpty()) { break; } var cell = (Cell)_cells[addr]; if (cell.State == State.Empty) { if (combat) { battles.Add((Cell)_cells[addr]); } else { steps.Add((Cell)_cells[addr]); } } else if (cell.State != source.State) { addr = new Address(addr.Coords.X + dx, addr.Coords.Y + dy); if (addr.IsEmpty()) { break; } cell = (Cell)_cells[addr]; if (cell.State == State.Empty) { if (combat) { break; } battles.Add((Cell)_cells[addr]); combat = true; } else { break; } } else { break; } } }
public static void ShouldEqual(this ParsedGoal goal, decimal? quantity, GoalDirection direction, DateTime? deadline) { goal.Quantity.ShouldEqual(quantity); goal.Direction.ShouldEqual(direction); goal.Deadline.ShouldEqual(deadline); }