Пример #1
0
        public void ShouldMapTutorial()
        {
            var roomSetUp = new BreadthFirstSearch();

            var list = roomSetUp.AssignCoords("Tutorial", "Tutorial");


            var gobCamp       = list.FirstOrDefault(x => x.areaId == 3);
            var gobCampActual = new Coordinates()
            {
                X = 1,
                Y = 2,
                Z = 0
            };



            foreach (var i in list.OrderBy(x => x.areaId))
            {
                Console.WriteLine("roomID " + i.areaId + " (" + i.coords.X + ", " + i.coords.Y + ")");
            }


            Assert.That(gobCamp.coords.X, Is.EqualTo(gobCampActual.X));
            Assert.That(gobCamp.coords.Y, Is.EqualTo(gobCampActual.Y));
        }
Пример #2
0
        public void ShouldFindDestination()
        {
            var roomSetUp = new BreadthFirstSearch();

            var list = roomSetUp.AssignCoords();


            var modo       = list.FirstOrDefault(x => x.areaId == 2);
            var modoActual = new Coordinates()
            {
                X = 0,
                Y = 2,
                Z = 0
            };

            var church       = list.FirstOrDefault(x => x.areaId == 18);
            var churchActual = new Coordinates()
            {
                X = 3,
                Y = 1,
                Z = 0
            };

            var elder      = list.FirstOrDefault(x => x.areaId == 13);
            var elderctual = new Coordinates()
            {
                X = 2,
                Y = 1,
                Z = 0
            };

            foreach (var i in list.OrderBy(x => x.areaId))
            {
                Console.WriteLine("roomID " + i.areaId + " (" + i.coords.X + ", " + i.coords.Y + ")");
            }


            Assert.That(modo.coords.X, Is.EqualTo(modoActual.X));
            Assert.That(modo.coords.Y, Is.EqualTo(modoActual.Y));

            Assert.That(church.coords.X, Is.EqualTo(churchActual.X));
            Assert.That(church.coords.Y, Is.EqualTo(churchActual.Y));

            Assert.That(elder.coords.X, Is.EqualTo(elderctual.X));
            Assert.That(elder.coords.Y, Is.EqualTo(elderctual.Y));
        }
Пример #3
0
        public static void DrawMap(string playerId)
        {
            var player = Cache.getPlayer(playerId);

            var nodes = new List <SigmaMapNode>();
            var edges = new List <SigmaMapEdge>();


            var roomSetUp = new BreadthFirstSearch();

            var list = roomSetUp.AssignCoords("Anker", "Anker");

            foreach (var node in list)
            {
                var y = "";


                if (node.coords.Y == 0)
                {
                    y = "0";
                }
                else if (node.coords.Y > 0)
                {
                    y = (node.coords.Y * -1).ToString();
                }
                else if (node.coords.Y < 0)
                {
                    y = Math.Abs(node.coords.Y).ToString();
                }

                var mapNode = new SigmaMapNode()
                {
                    id    = "node" + node.areaId,
                    label = node.title,
                    x     = node.coords.X.ToString(),
                    y     = y,
                };

                var room = list.Distinct().FirstOrDefault(z => z.areaId == node.areaId);

                if (room.needsBoat)
                {
                    mapNode.color = "#446CB3";
                }
                else if (room.type == Room.RoomType.Shop)
                {
                    mapNode.color = "#fed967";
                }

                nodes.Add(mapNode);

                foreach (var exit in node.exits)
                {
                    var mapEdge = new SigmaMapEdge()
                    {
                        id     = "edge" + node.areaId + exit.areaId,
                        source = "node" + node.areaId,
                        target = "node" + exit.areaId,
                    };

                    if (!edges.Contains(mapEdge))
                    {
                        edges.Add(mapEdge);
                    }
                }
            }


            var json = new SigmaMapJSON()
            {
                edges = edges,
                nodes = nodes
            };

            var brokenEdges = new List <string>();

            foreach (var e in edges.ToList())
            {
                if (nodes.FirstOrDefault(x => x.id == e.target) == null)
                {
                    brokenEdges.Add(e.id);
                    edges.Remove(e);
                }
            }

            using (StreamWriter file = File.CreateText(@"C:\path.txt"))
            {
                JsonSerializer serializer = new JsonSerializer();
                //serialize object directly into file stream
                serializer.Serialize(file, json);
            }

            HubContext.Instance.GetMap(playerId, json);
        }