public override PlanOfAction Think() { if (owner == null) { return(null); } // determine where the player is var player = board.Units.FirstOrDefault(unit => unit.Value is Hero).Value; SetLowestAbilityCost(); SetAttackRange(); if (ShouldWait(player)) { return(null); } var tilesOnBoard = RangeUtil.SurveyBoard(owner.Position, owner.Board); var targetData = FindTarget(tilesOnBoard, player); var tilesFromPlayerPerspective = RangeUtil.SurveyBoard(targetData.tile.Position, owner.Board); if (WithinShockwaveRange(tilesOnBoard, targetData)) { return(CloseRangePlan(tilesOnBoard, targetData, tilesFromPlayerPerspective)); } else { return(LongRangePlan(tilesOnBoard, targetData, tilesFromPlayerPerspective)); } }
public override PlanOfAction Think() { // determine where the player is var player = board.Units.FirstOrDefault(unit => unit.Value is Hero).Value; SetLowestAbilityCost(); SetAttackRange(); if (ShouldWait(player)) { return(null); } var tilesOnBoard = RangeUtil.SurveyBoard(owner.Position, owner.Board); var targetData = FindTarget(tilesOnBoard, player); var tilesFromPlayerPerspective = RangeUtil.SurveyBoard(targetData.tile.Position, owner.Board); // 1: if we are in range attack the player if (CanAttack(tilesOnBoard, targetData)) { return(Attack(tilesOnBoard, targetData)); } // 2: move towards player return(Move(tilesOnBoard, targetData, tilesFromPlayerPerspective)); }
public void RangeOrCurrentLine1() { var view = EditorUtil.CreateView("foo"); var res = RangeUtil.RangeOrCurrentLine(view, FSharpOption <SnapshotLineRange> .None); Assert.AreEqual(view.GetLineRange(0), res); }
public void ApplyCount1() { Create("foo", "bar", "baz", "jaz"); var first = _textBuffer.GetLineRange(0); var second = RangeUtil.ApplyCount(2, first); Assert.AreEqual(_textBuffer.GetLineRange(0, 1), second); }
public void ApplyCount3() { Create("foo", "bar", "baz"); var v1 = _textBuffer.GetLineRange(0); var v2 = RangeUtil.ApplyCount(2, v1); Assert.AreEqual(_textBuffer.GetLineRange(0, 1), v2); }
public void Apply_CountOfOne() { Create("cat", "dog", "rabbit", "tree"); var v1 = _textBuffer.GetLineRange(0, 1); var v2 = RangeUtil.ApplyCount(1, v1); Assert.AreEqual(SnapshotLineRangeUtil.CreateForLine(_textBuffer.GetLine(1)), v2); }
public override void doResize(int rowcount) { Range range = getRange(); //range.Fill.BackgroundColor = Color.White; dname.Range = RangeUtil.rangeResize(range, rowcount); }
public void Enumerate_Byte_ZeroLength() { IEnumerable <byte> actual, expected; actual = RangeUtil.Enumerate((byte)0, (byte)0); expected = new byte[] { 0 }; Assert.Equal(expected, actual); }
private void Create(params string[] lines) { _textView = CreateTextView(lines); _textBuffer = _textView.TextBuffer; var vimBufferData = CreateVimBufferData(_textView); _vimTextBuffer = vimBufferData.VimTextBuffer; _rangeUtil = new RangeUtil(vimBufferData); }
public void Enumerate_Byte_Down() { IEnumerable <byte> actual, expected; actual = RangeUtil.Enumerate((byte)5, (byte)0); expected = new byte[] { 5, 4, 3, 2, 1, 0 }; Assert.Equal(expected, actual); }
public void RangeOrCurrentLine2() { Create("foo", "bar"); var mock = new Moq.Mock <ITextView>(Moq.MockBehavior.Strict); var range = _textBuffer.GetLineRange(0); var res = RangeUtil.RangeOrCurrentLine(mock.Object, FSharpOption <SnapshotLineRange> .Some(range)); Assert.AreEqual(range, res); }
/// <summary> /// 指定したviewport座標がパネル範囲内に含まれる場合、true /// </summary> /// <param name="viewportPoint">Viewport point.</param> public bool Contains(Vector3 viewportPoint) { if (!RangeUtil.IsBetween(viewportPoint.x, leftX, leftX + width)) { return(false); } if (!RangeUtil.IsBetween(viewportPoint.y, bottomY, bottomY + height)) { return(false); } return(true); }
/// <summary> /// 指定した座標が経路途上に含まれるかを返します。 /// </summary> /// <returns><c>true</c>, if path range was withined, <c>false</c> otherwise.</returns> /// <param name="position">Position.</param> public bool OnPathWay(Vector3 position) { if (!RangeUtil.IsBetween(position.x, Origin.x, Destination.x)) { return(false); } if (!RangeUtil.IsBetween(position.y, Origin.y, Destination.y)) { return(false); } return(true); }
//根据当前选择点,判断选择区域 public void setSelectedNamed() { if (app == null) { app = new XApp(this.spreadsheetMain.Document, null); app.statu = SysStatu.SheetError; } AreasCollection areas = spreadsheetMain.Selection.Areas; /*if (currentXRange != null && RangeUtil.isInRange(areas, currentXRange.getRange()) < 0) * { * this.currentXRange = null; * }*/ this.currentXRange = null; rightClickBarManager.SetPopupContextMenu(spreadsheetMain, null); if (currentSheet != null && currentSheet.sheetName == "Config") { IList <Table> tables = spreadsheetMain.ActiveWorksheet.Tables.GetTables(spreadsheetMain.ActiveCell); if (tables.Count > 0 && tables[0].Name == "CFG_DATA") { if (RangeUtil.isInRange(areas, tables[0].DataRange) >= 0) { rightClickBarManager.SetPopupContextMenu(spreadsheetMain, menus["CfgData"]); } } } else if ((int)app.statu > 0) { XRSheet opSheet = app.getRSheetByName(spreadsheetMain.ActiveWorksheet.Name); //遍历当前Sheet全部命名区域,依次判断是否在区域范围内 if (opSheet != null) { foreach (var dicname in opSheet.ranges) { XRange xname = dicname.Value; int i = xname.isInRange(areas); if (i >= 0) { this.currentXRange = xname; rightClickBarManager.SetPopupContextMenu(spreadsheetMain, menus["Normal"]); //当选择点为命名区域时,将当前坐标写入单元格 //this.currentXRange.onMouseDown(); break;//如果判断到第一个区域,将该区域存储为currentXRange,退出循环判断 } } } else { currentXRange = null; } } }
public override int isInRange(Range range) { AreasCollection areas = getRange().Areas; foreach (Range irange in areas) { if (RangeUtil.isInRange(range, irange) > 0) { return(1); } } return(-1); }
public void Enumerate_Byte_Up() { IEnumerable <byte> actual, expected; actual = RangeUtil.Enumerate((byte)0, (byte)5); expected = new byte[] { 0, 1, 2, 3, 4, 5 }; Assert.Equal(expected, actual); actual = RangeUtil.Enumerate((byte)254, (byte)255); expected = new byte[] { 254, 255 }; Assert.Equal(expected, actual); }
private List <PathfindingData> GetTilesInRange() { // return normal range if the area is a cleared mob room // or we are not using a movement ability bool useMovementAbility = abilityComponent.CurrentAbility is MovementAbility; if (!AreaStateHandler.AreaIsCleared(Owner.Board) || !useMovementAbility) { return(abilityComponent.GetTilesInRange()); } // return all tiles if we are in a cleared room return(RangeUtil.SurveyBoard(Owner.Position, Owner.Board)); }
public override void doResize(int rowcount) { if (rowcount == 1) { rowcount = 2; } if (!isFilled) { AlertUtil.Show("错误!", "Table" + Name + "需先查询才能Update"); return; } Range range = this.table.Range; Range newrange = RangeUtil.rangeResize(range, rowcount); changeDefinedRange(newrange); }
private void HandleIndicator(List <PathfindingData> tilesInRange, Point mousePosition) { var selectedTile = Owner.Board.TileAt(mousePosition); var isValid = tilesInRange.Exists(data => data.tile == selectedTile); // tile is not valid or already is highlighted, return if (!isValid) { return; } if (abilityComponent.CurrentAbility.AreaOfEffect > 0) { var aoeRange = RangeUtil.GetAoERangeFromMousePosition(mousePosition, abilityComponent.CurrentAbility); var curFrameCenter = aoeRange.Find(data => data.shadow.distance == 0).tile; if (curFrameCenter == AoECenter) { return; } else { CleanIndicator(); aoeRange.ForEach(data => { if (data.shadow.distance == 0) { AoECenter = data.tile; } indicatorList.Add(data.tile); }); } } else { if (indicatorList.Contains(selectedTile)) { return; } CleanIndicator(); indicatorList.Add(selectedTile); } BoardVisuals.AddIndicator(Owner, indicatorList); }
public override PlanOfAction Think() { // determine where the player is var player = board.Units.FirstOrDefault(unit => unit.Value is Hero).Value; if (ShouldWait(player)) { return(null); } SetLowestAbilityCost(); var tilesOnBoard = RangeUtil.SurveyBoard(owner.Position, owner.Board); var targetData = FindTarget(tilesOnBoard, player); var tilesFromPlayerPerspective = RangeUtil.SurveyBoard(targetData.tile.Position, owner.Board); // 1: if too close, move away from player if (WeAreTooClose(tilesOnBoard, targetData)) { return(Move(tilesOnBoard, targetData, tilesFromPlayerPerspective, true)); } // 2: attack player if (WeOccupyTheSameAxis(tilesOnBoard, targetData)) { if (ThereAreNoObstacles(tilesOnBoard, targetData)) { return(Attack(tilesOnBoard, targetData, tilesFromPlayerPerspective)); } else { return(Move(tilesOnBoard, targetData, tilesFromPlayerPerspective, false, false)); } } // 3: move towards player return(Move(tilesOnBoard, targetData, tilesFromPlayerPerspective, false)); }
/// <summary> /// 尝试从字符串<paramref name="formula"/>中位置<paramref name="index"/>的位置开始构建区间 /// </summary> /// <param name="formula"></param> /// <param name="index"></param> /// <param name="expressionStack"></param> /// <returns>返回新的位置index,如果返回的位置与传入的相同则表示没有获取到</returns> private static int TryRangeBuild(string formula, int index, Stack <Expression> expressionStack) { if (!(formula[index] == '(' || formula[index] == '[')) { return(index); } var endIndex = Int32.MaxValue; var findIndex = formula.IndexOf(')', index); if (findIndex > 0) { endIndex = Math.Min(endIndex, findIndex); } findIndex = formula.IndexOf(')', index); if (findIndex > 0) { endIndex = Math.Min(endIndex, findIndex); } if (endIndex == Int32.MaxValue) { return(index); } var range = formula.Substring(index, endIndex - index + 1); if (RangeUtil.IsRange(range)) { expressionStack.Push(RangeConstant(range)); return(endIndex + 1); } return(index); }
/// <summary> /// 指定したステップでステージをクリアしたかどうか判定します。 /// </summary> /// <returns><c>true</c> if this instance is stage cleared the specified currentStepIndex; otherwise, <c>false</c>.</returns> /// <param name="stage">Stage.</param> /// <param name="currentStepIndex">Current step index.</param> /// <see cref="StageManager.IsStageCleared"/> protected bool IsStageCleared(StageInfo stage, int currentStepIndex) { return(!RangeUtil.IsBetween(GetRealStepIndex(stage, currentStepIndex), 0, stage.stepInfos.Count - 1)); }
private ParseRangeResult CaptureComplete(ITextSnapshotLine line, string input, IMarkMap map = null) { map = map ?? new MarkMap(new TrackingLineColumnService()); return(RangeUtil.ParseRange(line, map, ListModule.OfSeq(input))); }
public override string ToString() { return(string.IsNullOrEmpty(this.Name)? RangeUtil.GetColumnName(this.columnIndex):this.Name); }
public override ResultExpression Invoke(Parameters parameters) { if (Type == ExpressionType.Add) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); double result = leftResult.NumberResult + rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Subtract) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); double result = leftResult.NumberResult - rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Multiply) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); double result = leftResult.NumberResult * rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Divide) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); double result = leftResult.NumberResult / rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Greater) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.NumberResult > rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.GreaterEqual) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.NumberResult >= rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Less) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.NumberResult < rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.LessEqual) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.NumberResult <= rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.Equal) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); if (leftResult.IsNumber() && rightResult.IsNumber()) { bool result = ExpressionSetting.Instance.AreEquals(leftResult.NumberResult, rightResult.NumberResult); return(Result(result)); } else if (leftResult.IsNumber() && rightResult.DataType == ResultType.Range) { bool result = RangeUtil.IsInRange(leftResult.NumberResult, rightResult.Data.ToString()); return(Result(result)); } else { bool result = leftResult.Data == rightResult.Data; return(Result(result)); } } if (Type == ExpressionType.NotEqual) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); if (leftResult.IsNumber() && rightResult.IsNumber()) { bool result = !ExpressionSetting.Instance.AreEquals(leftResult.NumberResult, rightResult.NumberResult); return(Result(result)); } else if (leftResult.IsNumber() && rightResult.DataType == ResultType.Range) { bool result = !RangeUtil.IsInRange(leftResult.NumberResult, rightResult.Data.ToString()); return(Result(result)); } else { bool result = leftResult.Data != rightResult.Data; return(Result(result)); } } if (Type == ExpressionType.Power) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); double result = Math.Pow(leftResult.NumberResult, rightResult.NumberResult); return(Result(result)); } if (Type == ExpressionType.Modulo) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); int result = (int)leftResult.NumberResult % (int)rightResult.NumberResult; return(Result(result)); } if (Type == ExpressionType.BooleanAnd) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.BooleanResult && rightResult.BooleanResult; return(Result(result)); } if (Type == ExpressionType.BooleanOr) { ResultExpression leftResult = Left.Invoke(parameters); ResultExpression rightResult = Right.Invoke(parameters); bool result = leftResult.BooleanResult || rightResult.BooleanResult; return(Result(result)); } return(null); }
/// <summary> /// ステージをクリアしたかどうか判定します。 /// </summary> /// <returns><c>true</c> if this instance is stage cleared the specified currentStepIndex; otherwise, <c>false</c>.</returns> /// <param name="currentStepIndex">Current step index.</param> public bool IsStageCleared(int currentStepIndex) { StageInfo stage = GetCurrentStage(); return(!RangeUtil.IsBetween(GetRealStepIndex(stage, currentStepIndex), 0, stage.stepInfos.Count - 1)); }
//1:参数区域在本区域内;2:参数区域在本区域内,但包含表头;-1参数区域不在本区域内 //range为鼠标选择区域 public override int isInRange(Range range) { return(RangeUtil.isInRange(range, this.getRange())); }