MCPcopy Create free account
hub / github.com/ddnet/ddnet / ExtractMap

Method ExtractMap

src/engine/shared/demo.cpp:901–939  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

899}
900
901bool CDemoPlayer::ExtractMap(class IStorage *pStorage)
902{
903 unsigned char *pMapData = GetMapData(pStorage);
904 if(!pMapData)
905 return false;
906
907 // handle sha256
908 std::optional<SHA256_DIGEST> Sha256;
909 if(m_Info.m_Header.m_Version >= gs_Sha256Version)
910 {
911 Sha256 = m_MapInfo.m_Sha256;
912 dbg_assert(Sha256.has_value(), "SHA256 missing for version %d demo", m_Info.m_Header.m_Version);
913 }
914 else
915 {
916 Sha256 = sha256(pMapData, m_MapInfo.m_Size);
917 m_MapInfo.m_Sha256 = Sha256;
918 }
919
920 // construct name
921 char aSha[SHA256_MAXSTRSIZE], aMapFilename[IO_MAX_PATH_LENGTH];
922 sha256_str(Sha256.value(), aSha, sizeof(aSha));
923 str_format(aMapFilename, sizeof(aMapFilename), "downloadedmaps/%s_%s.map", m_Info.m_Header.m_aMapName, aSha);
924
925 // save map
926 IOHANDLE MapFile = pStorage->OpenFile(aMapFilename, IOFLAG_WRITE, IStorage::TYPE_SAVE);
927 if(!MapFile)
928 {
929 free(pMapData);
930 return false;
931 }
932
933 io_write(MapFile, pMapData, m_MapInfo.m_Size);
934 io_close(MapFile);
935
936 // free data
937 free(pMapData);
938 return true;
939}
940
941int64_t CDemoPlayer::Time()
942{

Callers 2

DemoPlayer_PlayMethod · 0.80
SliceMethod · 0.80

Calls 6

sha256Function · 0.85
sha256_strFunction · 0.85
str_formatFunction · 0.85
io_writeFunction · 0.85
io_closeFunction · 0.85
OpenFileMethod · 0.45

Tested by

no test coverage detected