Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        internal override ShapeItem Clone(ReadableIdentifier cloneName)
        {
            var shapeItem = new ShapeItem2D(cloneName, ShapeDefinition.ToUV());

            shapeItem.MetricWidth   = MetricWidth;
            shapeItem.RotationAngle = RotationAngle;
            shapeItem.MetricHeight  = MetricHeight;
            return(shapeItem);
        }
Esempio n. 4
0
 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;
     }
 }
Esempio n. 5
0
    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;
        }
    }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 /// <inheritdoc/>
 internal override ShapeItem Clone(ReadableIdentifier cloneName)
 {
     return(new NativeControlItem(cloneName, ShapeDefinition.ToUV(), SegmentSpeeds));
 }
Esempio n. 9
0
        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
            });
        }
Esempio n. 11
0
        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);
                    }
                }
            };
        }