예제 #1
0
        public override QuaxInfo SearchQuax(QuaxInfo curStatus)
        {
            QuadratNode quaxStartNode = null;

            for (var i = 0; i < StartQuadrate.Count; i++)
            {
                if (StartQuadrate[i].BeruehrtPoint(curStatus.QuaxPos))
                {
                    quaxStartNode = StartQuadrate[i];
                }
            }

            if (quaxStartNode != null)
            {
                Debug.Write("START QUADRAT:    ");
                var info = quaxStartNode.SearchQuax(curStatus);
                if (info.QuaxNode == null)
                {
                    info.QuaxNode = quaxStartNode;
                }
                return(info);
            }

            throw new Exception("Quax ist in keinem der Start Quadrate");
        }
예제 #2
0
        public override QuaxInfo SearchQuax(QuaxInfo curStatus)
        {
            if (MapQuadrat.MapTyp == MapQuadrat.MapTypen.Unbekannt)
            {
                if (NodeID == 0)
                {
                    NodeID = MapQuadrat.GetMapTyp();
                }
                else
                {
                    MapQuadrat.GetMapTyp();
                }
            }

            Console.Write(
                $"[{NodeID}] Node: ({MapQuadrat.LO_Eckpunkt.X}|{MapQuadrat.LO_Eckpunkt.Y}) -> ({MapQuadrat.RU_Eckpunkt.X}|{MapQuadrat.RU_Eckpunkt.Y}) - ");

            switch (MapQuadrat.MapTyp)
            {
            case MapQuadrat.MapTypen.Wasser:
                Console.WriteLine("Wasser");
                throw new Exception("Quax ist in Wasser Node");

            case MapQuadrat.MapTypen.Passierbar:
                Console.WriteLine("Passierbar");
                Console.WriteLine(
                    $"Quax gefunden: ({MapQuadrat.LO_Eckpunkt.X} | {MapQuadrat.LO_Eckpunkt.Y}) {MapQuadrat.Breite}");
                curStatus.QuaxNode = this;
                return(curStatus);

            case MapQuadrat.MapTypen.Gemischt:
                Console.WriteLine("Gemischt");

                QuadratNode nodeMitQuax = null;

                for (var i = 0; i < ChildNodes.Nodes.Length; i++)
                {
                    if (ChildNodes.Nodes[i].BeruehrtPoint(curStatus.QuaxPos))
                    {
                        nodeMitQuax = ChildNodes.Nodes[i];
                    }
                }

                if (nodeMitQuax == null)
                {
                    throw new Exception("Quax ist in keinem inneren Quadrat");
                }

                return(nodeMitQuax.SearchQuax(curStatus));

            case MapQuadrat.MapTypen.Unbekannt:
                throw new Exception("Unbekannter Map Typ");

            default:
                throw new ArgumentOutOfRangeException();
            }
        }