Beispiel #1
0
        Geometry.Figures.Point target; //точка цели

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Конструктор текущего действия (движения)
        /// </summary>
        /// <param name="a">Действие</param>
        /// <param name="curPoint">Текущее положение отряда</param>
        public OrderPresenter(AbstractGameEngine.Action a, Geometry.Figures.Point curPoint)
        {
            double ratio = Transformer.Ratio;
            this.origin = curPoint;
            this.target = (a as GameEngine.Characters.MoveAction).Destination;
            OrderOrigin = new Point(curPoint.X * ratio, curPoint.Y * ratio);
            OrderTarget = new Point(target.X * ratio, target.Y * ratio);
            this.OrderType = 0;

            VisibleWayAim = Visibility.Visible;
            this.TurnsToComplete = (a as GameEngine.Characters.MoveAction).TurnsToComplete;

            double dX=0;//смещение значка цели перемещения относительно положения отряда по оси X
            double dY=0;//смещение значка цели перемещения относительно положения отряда по оси Y

            if ((target.X - origin.X) < 0) dX = 2 * (target.X - origin.X) * ratio;//если отряд двигается влево
            else dX = (target.X - origin.X) * ratio - 12.5;//если отряд двигается вправо
            if ((origin.Y - target.Y) < 0) dY = 2 * (origin.Y - target.Y) * ratio;//если отряд двигается вверх
            else dY = (origin.Y - target.Y) * ratio - 12.5;//если отряд двигается вниз
            this.Margin = new Thickness(dX, dY, 0, 0);

            DeltaHorisontal = (target.X - origin.X) * ratio;
            DeltaVertical = (origin.Y - target.Y) * ratio;

            this.WayLine = new System.Windows.Media.PointCollection();
            Point aimPos = new Point(dX, dY);//получение точки цели перемещения отряда
            this.WayLine.Add(new Point(0, 0));//точка нахождения отряда относительно отряда
            this.WayLine.Add(new Point((target.X - origin.X) * ratio, (origin.Y - target.Y) * ratio));
        }
        public FigurePresenter(Figure f, AbstractGameEngine.Area parent)
        {
            this.original = f;
            Type = f.GetType();
            AParent = parent;

            // todo find another way for that?
            if (Type == typeof(ConvexPolygon))
            {
                if (parent.GetType() == typeof(GameEngine.Lands.Mountains))
                    Smoothing = 1;
                if (parent.GetType() == typeof(GameEngine.Lands.Forest))
                    Smoothing = 0.5;
                if (parent.GetType() == typeof(GameEngine.Lands.Lowland))
                    Smoothing = 0.8;
            }

            Update();
        }
 public GameItemsPresenter(AbstractGameEngine.Item x)
 {
     this.original = x;
 }