Skip to content

Optimization in Get_Map_Preview_Image #1036

Open
@xezon

Description

@xezon
Image *Get_Map_Preview_Image(Utf8String map_name)
{
    if (g_theWriteableGlobalData == nullptr) {
        return nullptr;
    }

    captainslog_debug("%s Map Name ", map_name.Str());
    Utf8String map_image(map_name);
    Utf8String image_file;
    Utf8String image_name;
    Utf8String str4;
    map_image.Remove_Last_Char();
    map_image.Remove_Last_Char();
    map_image.Remove_Last_Char();
    map_image.Remove_Last_Char();
    image_file = map_image;
    str4 = map_image.Reverse_Find('\\') + 1;
    str4.Concat(".tga");
    map_image.Concat(".tga");
    Utf8String portable_map_path = g_theGameState->Real_To_Portable_Map_Path(image_file);
    image_name.Set(Utf8String::s_emptyString);

    for (int i = 0; i < portable_map_path.Get_Length(); i++) {
        char c = portable_map_path.Get_Char(i);

        if (c == '\\' || c == ':') {
            image_name.Concat('_');
        } else {
            image_name.Concat(c);
        }
    }

    image_file = image_name;
    image_file.Concat(".tga");
    Image *image = g_theMappedImageCollection->Find_Image_By_Name(image_name);

    if (image == nullptr) {
        if (!g_theFileSystem->Does_File_Exist(map_image.Str())) {
            return nullptr;
        }

        Utf8String preview_image;
        preview_image.Format("%sMapPreviews/", g_theWriteableGlobalData->Get_Path_User_Data().Str());
        g_theFileSystem->Create_Directory(preview_image);
        preview_image += image_file;
        Copy_From_Big_To_Dir(map_image, preview_image);

        image = new Image();
        image->Set_Name(image_name);
        image->Set_Filename(image_file);
        image->Set_Status(0);

        Region2D region;
        region.hi.x = 1.0f;
        region.hi.y = 1.0f;
        region.lo.x = 0.0f;
        region.lo.y = 0.0f;
        image->Set_UV_Region(&region);

        image->Set_Texture_Height(128);
        image->Set_Texture_Width(128);
        g_theMappedImageCollection->Add_Image(image);
    }

    return image;
}

str4 is never used. Can be removed.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions