Пример #1
0
 private void Igeoposition_Position(object sender, Position e)
 {
     if (PositionChange != null)
     {
         PositionChange.Invoke(this, e);
     }
 }
Пример #2
0
        public void TestEquality()
        {
            var change = new PositionChange {
                X = 5, Y = 5
            };
            var sameChange = new PositionChange {
                X = 5, Y = 5
            };
            var otherXChange = new PositionChange {
                X = 3, Y = 5
            };
            var otherYChange = new PositionChange {
                X = 5, Y = 7
            };

            // general
            Assert.AreEqual(change, change);
            Assert.AreNotEqual(change, null);
            Assert.AreNotEqual(change, new object());
            // MapPosition
            Assert.AreEqual(change, sameChange);
            Assert.AreEqual(change, (object)sameChange);
            Assert.AreNotEqual(change, otherXChange);
            Assert.AreNotEqual(change, otherYChange);
        }
Пример #3
0
        public void TestCreatedHaveNoChange()
        {
            var change = new PositionChange();

            Assert.AreEqual(0, change.X);
            Assert.AreEqual(0, change.Y);
        }
Пример #4
0
        public void TestChangeSetTo2_5()
        {
            var change = new PositionChange {
                X = 2, Y = 5
            };

            Assert.AreEqual(2, change.X);
            Assert.AreEqual(5, change.Y);
        }
Пример #5
0
        public void TestHashCode()
        {
            var baseChange = new PositionChange {X = 3, Y = 7};
            var sameChange = new PositionChange {X = 3, Y = 7};
            var differInXChange = new PositionChange {X = 2, Y = 7};
            var differInYChange = new PositionChange {X = 3, Y = 8};

            Assert.AreEqual(baseChange.GetHashCode(), sameChange.GetHashCode());
            Assert.AreNotEqual(baseChange.GetHashCode(), differInXChange.GetHashCode());
            Assert.AreNotEqual(baseChange.GetHashCode(), differInYChange.GetHashCode());
        }
        private static IEnumerable <ChessMove> MoveWhileValid(
            ChessboardPosition currentPosition, PositionChange positionChange)
        {
            var initialPosition = currentPosition;
            var chessMoves      = new List <ChessMove>();

            while (currentPosition.CanMoveBy(positionChange))
            {
                var nextPosition = currentPosition.MovedBy(positionChange);
                chessMoves.Add(new ChessMove(initialPosition, nextPosition));
                currentPosition = nextPosition;
            }
            return(chessMoves);
        }
            /// <summary>
            /// Reads parameters from byte array <paramref name="data"/> starting from zero-base <paramref name="offset"/>.
            /// </summary>
            /// <param name="data">Byte array containing heap.</param>
            /// <param name="offset">Zero-based offset to <paramref name="data"/> heap.</param>
            public override void ReadFrom(byte[] data, int offset)
            {
                _positionChanges.Clear();

                _count = data[offset++];

                for (int i = 0; i < _count; i++, offset += PositionChange.SizeOf)
                {
                    PositionChange position = new PositionChange();
                    position.ReadFrom(data, offset);

                    _positionChanges.Add(position);
                }
            }
Пример #8
0
        public void TestEquality()
        {
            var change = new PositionChange { X = 5, Y = 5 };
            var sameChange = new PositionChange { X = 5, Y = 5 };
            var otherXChange = new PositionChange { X = 3, Y = 5 };
            var otherYChange = new PositionChange { X = 5, Y = 7 };

            // general
            Assert.AreEqual(change, change);
            Assert.AreNotEqual(change, null);
            Assert.AreNotEqual(change, new object());
            // MapPosition
            Assert.AreEqual(change, sameChange);
            Assert.AreEqual(change, (object)sameChange);
            Assert.AreNotEqual(change, otherXChange);
            Assert.AreNotEqual(change, otherYChange);
        }
Пример #9
0
        public void TestHashCode()
        {
            var baseChange = new PositionChange {
                X = 3, Y = 7
            };
            var sameChange = new PositionChange {
                X = 3, Y = 7
            };
            var differInXChange = new PositionChange {
                X = 2, Y = 7
            };
            var differInYChange = new PositionChange {
                X = 3, Y = 8
            };

            Assert.AreEqual(baseChange.GetHashCode(), sameChange.GetHashCode());
            Assert.AreNotEqual(baseChange.GetHashCode(), differInXChange.GetHashCode());
            Assert.AreNotEqual(baseChange.GetHashCode(), differInYChange.GetHashCode());
        }
Пример #10
0
        private void TestMoveDirectionWithTwoObjects(
            MapPosition movablePosition,
            MapPosition staticPosition,
            PositionChange direction,
            MapPosition positionAfterMove)
        {
            var map          = new Map();
            var staticObject = new MapObject {
                Position = staticPosition
            };
            var moveableObject = new MapObject {
                Position = movablePosition
            };

            map.AddObject(staticObject);
            map.AddObject(moveableObject);

            map.Move(moveableObject, direction);
            Assert.AreEqual(positionAfterMove, moveableObject.Position);
        }
Пример #11
0
        public void InitData(List <String> strs, PositionChange onPositionChange, int firstPosition)
        {
            filePosition          = -1;
            this.onPositionChange = onPositionChange;

            spLeft.Children.Clear();
            for (int i = 0; i < strs.Count; i++)
            {
                Border border = new Border();
                border.Background           = new SolidColorBrush(Colors.Transparent);
                border.MouseLeftButtonDown += TextBlock_MouseLeftButtonDown_1;
                border.CornerRadius         = new CornerRadius(3);
                border.BorderThickness      = new Thickness(2);
                border.BorderBrush          = new SolidColorBrush(Color.FromRgb(85, 85, 85));
                border.Margin = new Thickness(15, 10, 15, 0);
                if (i == 0)
                {
                    border.Margin = new Thickness(15, 15, 15, 0);
                }
                if (i == strs.Count - 1)
                {
                    border.Margin = new Thickness(15, 10, 15, 15);
                }
                if (strs.Count == 1)
                {
                    border.Margin = new Thickness(15);
                }
                Grid grid = new Grid();
                border.Child = grid;
                TextBlock tb = new TextBlock();
                tb.HorizontalAlignment = HorizontalAlignment.Center;
                tb.VerticalAlignment   = VerticalAlignment.Center;
                tb.Text       = strs[i];
                tb.FontSize   = 17;
                tb.Margin     = new Thickness(15);
                tb.Foreground = new SolidColorBrush(Color.FromRgb(184, 191, 198));
                grid.Children.Add(tb);
                spLeft.Children.Add(border);
            }
            SetSpFilePosition(firstPosition);
        }
Пример #12
0
 internal virtual void OnPositionChange(PositionChangeEventArgs e)
 {
     if (null != PositionChange)
     {
         foreach (PositionChangeEventHandler PositionChangeHandler in PositionChange.GetInvocationList())
         {
             ISynchronizeInvoke syncInvoke = PositionChangeHandler.Target as ISynchronizeInvoke;
             if ((null != syncInvoke) && (syncInvoke.InvokeRequired))
             {
                 try
                 {
                     syncInvoke.Invoke(PositionChangeHandler, new object[] { this, e });
                 }
                 catch { }
             }
             else
             {
                 PositionChangeHandler(this, e);
             }
         }
     }
 }
        /// <summary>
        /// Gets position change image
        /// </summary>
        /// <param name="positionChange">Position change</param>
        /// <returns>Image object</returns>
        public static Image GetPositionChange(PositionChange positionChange)
        {
            try {
                Image positionImage = null;
                switch (positionChange)
                {
                case PositionChange.MovingUp:
                    positionImage = Properties.Resources.PositionUp;
                    break;

                case PositionChange.MovingDown:
                    positionImage = Properties.Resources.PositionDown;
                    break;

                case PositionChange.NoChange:
                    positionImage = Properties.Resources.PositionEqual;
                    break;
                }

                return(positionImage);
            } catch (Exception ex) {
                throw ex;
            }
        }
Пример #14
0
        public static void Main()
        {
            var gameWindow = new GameWindow {
                Width = 512, Height = 512
            };
            var map = new Map();

            for (var x = 0; x < 16; x++)
            {
                for (var y = 0; y < 16; y++)
                {
                    map.AddObject(new MapObject
                    {
                        Blocking = false,
                        Position = new MapPosition(x, y),
                        Quad     = new Quad {
                            FragmentPositionX = 1.0, FragmentPositionY = 3.0
                        }
                    });
                }
            }

            map.AddObject(new MapObject
            {
                Blocking = true,
                Position = new MapPosition(3, 2),
                Quad     = new Quad {
                    FragmentPositionX = 2.0, FragmentPositionY = 3.0
                }
            });

            map.AddObject(new MapObject
            {
                Blocking = true,
                Position = new MapPosition(4, 7),
                Quad     = new Quad {
                    FragmentPositionX = 2.0, FragmentPositionY = 3.0
                }
            });

            map.AddObject(new MapObject
            {
                Blocking = true,
                Position = new MapPosition(2, 5),
                Quad     = new Quad {
                    FragmentPositionX = 2.0, FragmentPositionY = 3.0
                }
            });

            var character = new MapObject {
                Blocking = true, Position = new MapPosition(0, 0)
            };

            map.AddObject(character);

            var graphicObject = new Graphic
            {
                Gl                         = new GLWrapper(),
                Window                     = gameWindow,
                TextureFileName            = @"..\..\Images\textures.png",
                DetermineScreenSizeInTiles = size => new Vector2d(16, 16),
                QuadList                   = map
            };

            gameWindow.Keyboard.KeyDown += (sender, args) =>
            {
                switch (args.Key)
                {
                case Key.Escape:
                    graphicObject.Window.Close();
                    break;

                case Key.Right:
                    map.Move(character, PositionChange.CreateRight());
                    break;

                case Key.Left:
                    map.Move(character, PositionChange.CreateLeft());
                    break;

                case Key.Up:
                    map.Move(character, PositionChange.CreateUp());
                    break;

                case Key.Down:
                    map.Move(character, PositionChange.CreateDown());
                    break;
                }
            };

            graphicObject.Run();
        }
Пример #15
0
 public void TestCreateRight()
 {
     Assert.AreEqual(new PositionChange {
         X = 1
     }, PositionChange.CreateRight());
 }
        /// <summary>
        /// Gets position change image
        /// </summary>
        /// <param name="positionChange">Position change</param>
        /// <returns>Image object</returns>
        public static Image GetPositionChange(PositionChange positionChange)
        {
            try {
                Image positionImage = null;
                switch (positionChange) {
                    case PositionChange.MovingUp:
                        positionImage = Properties.Resources.PositionUp;
                        break;
                    case PositionChange.MovingDown:
                        positionImage = Properties.Resources.PositionDown;
                        break;
                    case PositionChange.NoChange:
                        positionImage = Properties.Resources.PositionEqual;
                        break;
                }

                return positionImage;
            } catch (Exception ex) {
                throw ex;
            }
        }
Пример #17
0
 public bool Equals(PositionChange change)
 {
     return(change != null && change.X == X && change.Y == Y);
 }
Пример #18
0
 public void QueueChange(PositionChange change)
 {
     this.Changes.Add(change);
 }
Пример #19
0
        private void TestMoveDirectionWithTwoObjects(
            MapPosition movablePosition,
            MapPosition staticPosition,
            PositionChange direction,
            MapPosition positionAfterMove)
        {
            var map = new Map();
            var staticObject = new MapObject { Position = staticPosition };
            var moveableObject = new MapObject { Position = movablePosition };
            map.AddObject(staticObject);
            map.AddObject(moveableObject);

            map.Move(moveableObject, direction);
            Assert.AreEqual(positionAfterMove, moveableObject.Position);
        }
Пример #20
0
 public void TestChangeSetTo2_5()
 {
     var change = new PositionChange {X = 2, Y = 5};
     Assert.AreEqual(2, change.X);
     Assert.AreEqual(5, change.Y);
 }
Пример #21
0
 public MapPosition(MapPosition position, PositionChange change)
 {
     X = position.X + change.X;
     Y = position.Y + change.Y;
 }
Пример #22
0
 public void TestCreatedHaveNoChange()
 {
     var change = new PositionChange();
     Assert.AreEqual(0, change.X);
     Assert.AreEqual(0, change.Y);
 }
Пример #23
0
 public void TestCreateDown()
 {
     Assert.AreEqual(new PositionChange {
         Y = -1
     }, PositionChange.CreateDown());
 }
Пример #24
0
 public void InitData(List <String> strs, PositionChange onPositionChange)
 {
     InitData(strs, onPositionChange, 0);
 }
Пример #25
0
        public void InitData(List <String> strs, PositionChange onPositionChange, int firstPosition, MouseButtonEventHandler e)
        {
            luc.InitData(strs, onPositionChange, firstPosition);

            bNew.MouseLeftButtonUp += e;
        }
Пример #26
0
 private void DispatchEvents()
 {
     PositionChange?.Invoke(this, new PlayerEventArgs(Position));
 }
Пример #27
0
 /// <summary>
 /// Advances the players position.
 /// </summary>
 /// <param name="positionChange">Describes the players position change.</param>
 /// <returns>Task used to track the completion of this operation.</returns>
 public Task AdvancePosition(PositionChange positionChange)
 {
     return this.ScheduleOperation(this.DoAdvancePosition, positionChange)
         .ContinueWith(this.ExtractResult, TaskContinuationOptions.ExecuteSynchronously);
 }
Пример #28
0
 protected void OnPositionChangeEvent(Dictionary <string, long> positions)
 {
     PositionChange?.Invoke(positions);
 }
Пример #29
0
        /// <summary>
        /// Exclusively performs the character position change operation.
        /// </summary>
        /// <param name="positionChange">Character position change information.</param>
        /// <returns>Task used to track the operations completion.</returns>
        private Task<ActorResponse> DoAdvancePosition(PositionChange positionChange)
        {
            this.Position = new Quadrilateral(this.Position.Corner + positionChange.Delta, this.Position.Diagonal);
            this.Gravity.IsGrounded = positionChange.Grounded;

            return CachedResponse;
        }