示例#1
0
    private int[] getLevelMapBorder(ref LevelMap lmap, LevelMapOrientation orientation)
    {
        int[] result = new int[side_tile_count];

        if (lmap.index_x < 0)
        {
            // no neighbor
            for (int i = 0; i < side_tile_count; ++i)
            {
                result[i] = 0;
            }
            return(result);
        }

        switch (orientation)
        {
        case LevelMapOrientation.N:
            for (int i = 0; i < side_tile_count; ++i)
            {
                result[i] = lmap.levels[0, i];
            }
            break;

        case LevelMapOrientation.NE:
            result[0] = lmap.levels[0, side_tile_count - 1];
            break;

        case LevelMapOrientation.E:
            for (int i = 0; i < side_tile_count; ++i)
            {
                result[i] = lmap.levels[i, side_tile_count - 1];
            }
            break;

        case LevelMapOrientation.SE:
            result[0] = lmap.levels[side_tile_count - 1, side_tile_count - 1];
            break;

        case LevelMapOrientation.S:
            for (int i = 0; i < side_tile_count; ++i)
            {
                result[i] = lmap.levels[side_tile_count - 1, i];
            }
            break;

        case LevelMapOrientation.SW:
            result[0] = lmap.levels[side_tile_count - 1, 0];
            break;

        case LevelMapOrientation.W:
            for (int i = 0; i < side_tile_count; ++i)
            {
                result[i] = lmap.levels[i, 0];
            }
            break;

        case LevelMapOrientation.NW:
            result[0] = lmap.levels[0, 0];
            break;
        }

        return(result);
    }
示例#2
0
    private LevelMap getNeighborLevelMap(LevelMap original, LevelMapOrientation orientation, ref LevelMap[,] WorldLevelMaps)
    {
        LevelMap result = new LevelMap();

        result.invalidate();

        int n_ind_x = original.index_x;
        int n_ind_y = original.index_y;

        switch (orientation)
        {
        case LevelMapOrientation.N:
            if (original.index_y == 0)
            {
                return(result);
            }
            else
            {
                n_ind_y -= 1;
            }
            break;

        case LevelMapOrientation.NE:
            if (original.index_y == 0 || original.index_x == terrain_chunks_x - 1)
            {
                return(result);
            }
            else
            {
                n_ind_y -= 1;
                n_ind_x += 1;
            }
            break;

        case LevelMapOrientation.E:
            if (original.index_x == terrain_chunks_x - 1)
            {
                return(result);
            }
            else
            {
                n_ind_x += 1;
            }
            break;

        case LevelMapOrientation.SE:
            if (original.index_y == terrain_chunks_y - 1 || original.index_x == terrain_chunks_x - 1)
            {
                return(result);
            }
            else
            {
                n_ind_y += 1;
                n_ind_x += 1;
            }
            break;

        case LevelMapOrientation.S:
            if (original.index_y == terrain_chunks_y - 1)
            {
                return(result);
            }
            else
            {
                n_ind_y += 1;
            }
            break;

        case LevelMapOrientation.SW:
            if (original.index_y == terrain_chunks_y - 1 || original.index_x == 0)
            {
                return(result);
            }
            else
            {
                n_ind_y += 1;
                n_ind_x -= 1;
            }
            break;

        case LevelMapOrientation.W:
            if (original.index_x == 0)
            {
                return(result);
            }
            else
            {
                n_ind_x -= 1;
            }
            break;

        case LevelMapOrientation.NW:
            if (original.index_y == 0 || original.index_x == 0)
            {
                return(result);
            }
            else
            {
                n_ind_y -= 1;
                n_ind_x -= 1;
            }
            break;
        }

        result = WorldLevelMaps [n_ind_y, n_ind_x];

        return(result);
    }