private int GetMoveCost(FDPosition position, FDCreature creature) { ShapeDefinition targetShape = gameField.GetShapeAt(position.X, position.Y); if (targetShape == null) { return(-1); } int moveCost = 0; if (creature.Definition.CanFly()) { if (targetShape.CanFly) { moveCost = 1; } else { moveCost = -1; } } else if (creature.Definition.IsKnight()) { moveCost = targetShape.MoveCostForKnight; } else { moveCost = targetShape.MoveCost; } return(moveCost); }
private void SetKey(FDPosition position, float value) { if (position.X <= 0 || position.X > field.Width || position.Y <= 0 || position.Y > field.Height) { return; } if (distanceDict.ContainsKey(position)) { float lastValue = distanceDict[position]; if (lastValue <= value) { return; } } ShapeDefinition shape = field.GetShapeAt(position); if (shape.Type != ShapeType.Gap) { distanceDict[position] = value; positionQueue.Enqueue(position); } else { distanceDict[position] = 999; } }
internal override ShapeItem Clone(ReadableIdentifier cloneName) { var shapeItem = new ShapeItem2D(cloneName, ShapeDefinition.ToUV()); shapeItem.MetricWidth = MetricWidth; shapeItem.RotationAngle = RotationAngle; shapeItem.MetricHeight = MetricHeight; return(shapeItem); }
private void Reset() { Shape shape; if (this.shape == null) { this.shape = new ShapeDefinition(); } if (base.collider && base.collider.GetGeometricShapeLocal(out shape)) { this.shape.Shape = shape; } }
private static AttackInformation AttackFrom(FDCreature subject, FDCreature target, GameField field) { bool isHit = FDRandom.BoolFromRate(subject.Data.CalculatedHit - target.Data.CalculatedEv); bool isCritical = FDRandom.BoolFromRate(commonCriticalAttackRate); int reduceHp = 0; if (isHit) { FDPosition pos = subject.Position; ShapeDefinition shape = field.GetShapeAt(pos.X, pos.Y); int adjustedAp = subject.Data.CalculatedAp * (100 + shape.AdjustedAp) / 100; FDPosition targetPos = target.Position; ShapeDefinition targetShape = field.GetShapeAt(targetPos.X, targetPos.Y); int adjustedDp = target.Data.CalculatedDp * (100 + shape.AdjustedDp) / 100; int attackMax = adjustedAp - adjustedDp; int attackMin = (int)(attackMax * 0.9f); reduceHp = FDRandom.IntFromSpan(attackMin, attackMax); reduceHp = (reduceHp < 0) ? 0 : reduceHp; if (isCritical) { reduceHp *= 2; } // Poisoned AttackItemDefinition attackItem = subject.Data.GetAttackItem(); if (attackItem != null) { bool isPoisoned = FDRandom.BoolFromRate(attackItem.GetPoisonRate()); if (isPoisoned) { target.Data.SetEffect(CreatureData.CreatureEffects.Poisoned); } } } AttackInformation info = new AttackInformation(target.Data.Hp, target.Data.Hp - reduceHp, isCritical); target.Data.UpdateHp(-reduceHp); return(info); }
protected virtual void constructionInitialization() { ShapeUV = new PlaneShape(ShapeDefinition.Select(p => p.ToUV())); ShapeXY = new PlaneShape(ShapeDefinition.Select(p => p.ToXY())); BorderThickness = new Thickness(0); Padding = new Thickness(0); Background = null; //reset rotation var desiredAngle = _rotationAngle; RotationAngle = desiredAngle + 1; RotationAngle = desiredAngle; initialize(); _isClockwise = arePointsClockwise(_shapeDefinition); }
/// <inheritdoc/> internal override ShapeItem Clone(ReadableIdentifier cloneName) { return(new NativeControlItem(cloneName, ShapeDefinition.ToUV(), SegmentSpeeds)); }
static ShapeDefinitions() { OuterShapes = new ShapeDefinition[] { (renderer, cell, index) => { renderer.AddTriangle(0, 0, cell, cell, 0); }, (renderer, cell, index) => { renderer.AddTriangle(0, cell / 2f, cell, cell / 2f, 0); }, (renderer, cell, index) => { renderer.AddRhombus(0, 0, cell, cell); }, (renderer, cell, index) => { var m = cell * 0.16667f; renderer.AddCircle(m, m, cell - 2 * m); }, }; CenterShapes = new ShapeDefinition[] { (renderer, cell, index) => { var k = cell * 0.42f; renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell - k * 2), new PointF(cell - k, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { var w = (int)(cell * 0.5); var h = (int)(cell * 0.8); renderer.AddTriangle(cell - w, 0, w, h, TriangleDirection.NorthEast); }, (renderer, cell, index) => { var s = cell / 3; renderer.AddRectangle(s, s, cell - s, cell - s); }, (renderer, cell, index) => { var tmp = cell * 0.1f; var inner = tmp > 1 ? (int)tmp : // large icon => truncate decimals tmp > 0.5 ? 1 : // medium size icon => fixed width tmp; // small icon => anti-aliased border // Use fixed outer border widths in small icons to ensure the border is drawn var outer = cell < 6 ? 1 : cell < 8 ? 2 : cell / 4; renderer.AddRectangle(outer, outer, cell - inner - outer, cell - inner - outer); }, (renderer, cell, index) => { var m = (int)(cell * 0.15); var s = (int)(cell * 0.5); renderer.AddCircle(cell - s - m, cell - s - m, s); }, (renderer, cell, index) => { var inner = cell * 0.1f; var outer = inner * 4; // Align edge to nearest pixel in large icons if (outer > 3) { outer = (int)outer; } renderer.AddRectangle(0, 0, cell, cell); renderer.AddPolygon(new [] { new PointF(outer, outer), new PointF(cell - inner, outer), new PointF(outer + (cell - outer - inner) / 2, cell - inner) }, true); }, (renderer, cell, index) => { renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell * 0.7f), new PointF(cell * 0.4f, cell * 0.4f), new PointF(cell * 0.7f, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { renderer.AddTriangle(cell / 2f, cell / 2f, cell / 2f, cell / 2f, TriangleDirection.SouthEast); }, (renderer, cell, index) => { renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell / 2), new PointF(cell / 2, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { var tmp = cell * 0.14f; var inner = cell < 8 ? tmp : // small icon => anti-aliased border (int)tmp; // large icon => truncate decimals // Use fixed outer border widths in small icons to ensure the border is drawn var outer = cell < 4 ? 1 : cell < 6 ? 2 : (int)(cell * 0.35f); renderer.AddRectangle(0, 0, cell, cell); renderer.AddRectangle(outer, outer, cell - outer - inner, cell - outer - inner, true); }, (renderer, cell, index) => { var inner = cell * 0.12f; var outer = inner * 3; renderer.AddRectangle(0, 0, cell, cell); renderer.AddCircle(outer, outer, cell - inner - outer, true); }, (renderer, cell, index) => { renderer.AddTriangle(cell / 2f, cell / 2f, cell / 2f, cell / 2f, TriangleDirection.SouthEast); }, (renderer, cell, index) => { var m = cell * 0.25f; renderer.AddRectangle(0, 0, cell, cell); renderer.AddRhombus(m, m, cell - m, cell - m, true); }, (renderer, cell, index) => { var m = cell * 0.4f; var s = cell * 1.2f; if (index != 0) { renderer.AddCircle(m, m, s); } } }; }
public override DiscoverShapesResponse Shapes(DiscoverPublisherShapesRequest request) { var siteUrl = request.Settings["site_url"] as string; var userName = request.Settings["username"] as string; var password = request.Settings["password"] as string; var domain = request.Settings["domain"] as string; var shapes = new List <ShapeDefinition>(); ClientContext clientContext = new ClientContext(siteUrl); clientContext.Credentials = new System.Net.NetworkCredential(userName, password, domain); Web site = clientContext.Web; clientContext.Load(site); clientContext.ExecuteQuery(); clientContext.Load(site.Lists); clientContext.ExecuteQuery(); foreach (var list in site.Lists) { if (list.BaseType == BaseType.GenericList) { var shape = new ShapeDefinition { Name = list.Title, Description = list.Description, Properties = new List <PropertyDefinition>() }; clientContext.Load(list.Fields); clientContext.ExecuteQuery(); foreach (var field in list.Fields) { if (SUPPORTED_FIELD_TYPES.Contains(field.TypeAsString)) { var propDef = new PropertyDefinition { Name = normalizeFieldName(field.Title), Description = field.Description }; switch (field.FieldTypeKind) { case FieldType.Boolean: propDef.Type = "boolean"; break; case FieldType.Number: case FieldType.Integer: propDef.Type = "number"; break; default: propDef.Type = "string"; break; } shape.Properties.Add(propDef); } } shapes.Add(shape); } } _shapes = shapes; return(new DiscoverShapesResponse { Shapes = shapes }); }
static ShapeDefinitions() { OuterShapes = new ShapeDefinition[] { (renderer, cell, index) => { renderer.AddTriangle(0, 0, cell, cell, 0); }, (renderer, cell, index) => { renderer.AddTriangle(0, cell / 2f, cell, cell / 2f, 0); }, (renderer, cell, index) => { renderer.AddRhombus(0, 0, cell, cell); }, (renderer, cell, index) => { var m = cell / 6; renderer.AddCircle(m, m, cell - 2 * m); }, }; CenterShapes = new ShapeDefinition[] { (renderer, cell, index) => { var k = cell * 0.42f; renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell - k * 2), new PointF(cell - k, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { var w = (int)(cell * 0.5); var h = (int)(cell * 0.8); renderer.AddTriangle(cell - w, 0, w, h, TriangleDirection.NorthEast); }, (renderer, cell, index) => { var s = cell / 3; renderer.AddRectangle(s, s, cell - s, cell - s); }, (renderer, cell, index) => { var inner = (int)(cell * 0.1); var outer = (int)(cell * 0.25); renderer.AddRectangle(outer, outer, cell - inner - outer, cell - inner - outer); }, (renderer, cell, index) => { var m = (int)(cell * 0.15); var s = (int)(cell * 0.5); renderer.AddCircle(cell - s - m, cell - s - m, s); }, (renderer, cell, index) => { var inner = cell * 0.1f; var outer = inner * 4; renderer.AddRectangle(0, 0, cell, cell); renderer.AddPolygon(new [] { new PointF(outer, outer), new PointF(cell - inner, outer), new PointF(outer + (cell - outer - inner) / 2, cell - inner) }, true); }, (renderer, cell, index) => { renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell * 0.7f), new PointF(cell * 0.4f, cell * 0.4f), new PointF(cell * 0.7f, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { renderer.AddTriangle(cell / 2f, cell / 2f, cell / 2f, cell / 2f, TriangleDirection.SouthEast); }, (renderer, cell, index) => { renderer.AddPolygon(new [] { new PointF(0, 0), new PointF(cell, 0), new PointF(cell, cell / 2), new PointF(cell / 2, cell), new PointF(0, cell) }); }, (renderer, cell, index) => { var inner = (int)(cell * 0.14f); var outer = (int)(cell * 0.35f); renderer.AddRectangle(0, 0, cell, cell); renderer.AddRectangle(outer, outer, cell - outer - inner, cell - outer - inner, true); }, (renderer, cell, index) => { var inner = cell * 0.12f; var outer = inner * 3; renderer.AddRectangle(0, 0, cell, cell); renderer.AddCircle(outer, outer, cell - inner - outer, true); }, (renderer, cell, index) => { renderer.AddTriangle(cell / 2f, cell / 2f, cell / 2f, cell / 2f, TriangleDirection.SouthEast); }, (renderer, cell, index) => { var m = cell * 0.25f; renderer.AddRectangle(0, 0, cell, cell); renderer.AddRhombus(m, m, cell - m, cell - m, true); }, (renderer, cell, index) => { var m = cell * 0.4f; var s = cell * 1.2f; if (index != 0) { renderer.AddCircle(m, m, s); } } }; }