示例#1
0
    /// <summary>
    /// Devuelve true si hay conexi�n entre ambas carreteras
    /// Lo usan los vehiculos
    /// No tiene encuenta si realmente est�n adyacentes
    /// </summary>
    /// <param name="road1"></param>
    /// <param name="road2"></param>
    /// <returns></returns>
    public static bool CheckConnection(RoadEntity road1, RoadEntity road2)
    {
        bool r = true; //Presuponemos "true"
        //en el "out" de CheckAdjacencyWith se devuelve una dirección
        //que apunta hacia donde está el otro RoadID.
        //Además devuelve True si es adyacente o false si no lo es
        //Si no están Adyacentes hacemos return false;
        CardinalPoint from1to2;

        if (!road1.position.CheckAdjacencyWith(road2.position, out from1to2))
        {
            return(false);
        }
        //Igual en la otra dirección
        CardinalPoint from2to1;

        if (!road2.position.CheckAdjacencyWith(road1.position, out from2to1))
        {
            return(false);
        }
        ;

        //Si llegamos hasta aquí, estan adyacentes y ambos "fromXtoX" tienen información

        //CheckAdjacency devuelve "true" y el out en "TruckDirection.None" (en ambos)
        //Si se trata, casualmente, de la misma casilla, devolvemos true automaticamente
        if (from1to2 == CardinalPoint.None || from2to1 == CardinalPoint.None)
        {
            return(true);
        }


        //Si road1 no posee la dirección hasta road2, se falla el check
        if (!road1.HasDirection(from1to2))
        {
            r = false;
        }
        //Si road2 no posee la dirección hasta road1, se falla el check
        if (!road2.HasDirection(from2to1))
        {
            r = false;
        }


        return(r);
    }