Пример #1
0
        void AddLinkToParent(MazeMapPosition currentPosition, List <MazeMapPosition> links)
        {
            if (currentPosition == null)
            {
                return;
            }

            links.Add(currentPosition);
            AddLinkToParent(currentPosition.Parent, links);
        }
Пример #2
0
        public static MazeMapPosition Add(ulong[] position, MazeMapPosition parentMapPosition)
        {
            var key = MakeKey(position);

            if (!allMapPosition.ContainsKey(key))
            {
                var newOne = new MazeMapPosition {
                    Parent = parentMapPosition, Position = position
                };
                allMapPosition.Add(key, new List <MazeMapPosition> {
                    newOne
                });
                return(newOne);
            }

            var positionList = allMapPosition[key];

            if (positionList == null || !positionList.Any())
            {
                throw new Exception("MapHistory.cs/Add() ; positionList == null || !positionList.Any()");
            }

            for (var i = 0; i < positionList.Count; ++i)
            {
                if (AreSame(positionList[i].Position, position))
                {
                    return(null);
                }
            }

            var newMapPosition = new MazeMapPosition {
                Parent = parentMapPosition, Position = position
            };

            positionList.Add(newMapPosition);

            return(newMapPosition);
        }