Exemplo n.º 1
0
        public ShortestPathModel([NotNull] ISelkieLogger logger,
                                 [NotNull] ISelkieInMemoryBus bus,
                                 [NotNull] IPathToLineToLineNodeConverter pathToLineToLineNodeConverter,
                                 [NotNull] ILineToLineNodeConverterToDisplayLineConverterFactory factory)
        {
            m_Logger = logger;
            m_Bus = bus;
            m_PathToLineToLineNodeConverter = pathToLineToLineNodeConverter;
            m_Factory = factory;
            m_Nodes = new ILineToLineNodeConverter[0];
            m_Converter = m_Factory.Create();

            bus.SubscribeAsync <ColonyBestTrailMessage>(GetType().FullName,
                                                        ColonyBestTrailHandler);
        }
        internal List <IDisplayLine> CreateDisplayLinesForNodes(ILineToLineNodeConverter[] nodes)
        {
            var lines = new List <IDisplayLine>();

            for ( var i = 0 ; i < nodes.Length ; i++ )
            {
                ILineToLineNodeConverter node = nodes [ i ];

                IDisplayLine fromLine = m_DisplayLineFactory.Create(node.From,
                                                                    node.FromDirection);
                lines.Add(fromLine);

                if ( i != nodes.Length - 1 )
                {
                    continue;
                }

                IDisplayLine toLine = m_DisplayLineFactory.Create(node.To,
                                                                  node.ToDirection);
                lines.Add(toLine);
            }

            return lines;
        }
        internal List <IDisplayLine> CreateDisplayLinesSingleNode(ILineToLineNodeConverter[] nodes)
        {
            var lines = new List <IDisplayLine>();

            ILineToLineNodeConverter onlyNode = nodes [ 0 ];

            IDisplayLine fromLine = m_DisplayLineFactory.Create(onlyNode.From,
                                                                onlyNode.FromDirection);
            IDisplayLine toLine = m_DisplayLineFactory.Create(onlyNode.To,
                                                              onlyNode.ToDirection);

            lines.Add(fromLine);
            lines.Add(toLine);

            return lines;
        }