mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
parent
3555762e1a
commit
22be1be389
|
@ -1,5 +1,6 @@
|
||||||
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
||||||
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
||||||
|
#include <base/math.h>
|
||||||
#include <base/system.h>
|
#include <base/system.h>
|
||||||
#include <engine/storage.h>
|
#include <engine/storage.h>
|
||||||
#include "linereader.h"
|
#include "linereader.h"
|
||||||
|
@ -473,6 +474,28 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void IStorage::StripPathAndExtension(const char *pFilename, char *pBuffer, int BufferSize)
|
||||||
|
{
|
||||||
|
const char *pFilenameEnd = pFilename + str_length(pFilename);
|
||||||
|
const char *pExtractedName = pFilename;
|
||||||
|
const char *pEnd = pFilenameEnd;
|
||||||
|
for(const char *pIter = pFilename; *pIter; pIter++)
|
||||||
|
{
|
||||||
|
if(*pIter == '/' || *pIter == '\\')
|
||||||
|
{
|
||||||
|
pExtractedName = pIter + 1;
|
||||||
|
pEnd = pFilenameEnd;
|
||||||
|
}
|
||||||
|
else if(*pIter == '.')
|
||||||
|
{
|
||||||
|
pEnd = pIter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Length = min(BufferSize, (int)(pEnd - pExtractedName + 1));
|
||||||
|
str_copy(pBuffer, pExtractedName, Length);
|
||||||
|
}
|
||||||
|
|
||||||
IStorage *CreateStorage(const char *pApplicationName, int StorageType, int NumArgs, const char **ppArguments) { return CStorage::Create(pApplicationName, StorageType, NumArgs, ppArguments); }
|
IStorage *CreateStorage(const char *pApplicationName, int StorageType, int NumArgs, const char **ppArguments) { return CStorage::Create(pApplicationName, StorageType, NumArgs, ppArguments); }
|
||||||
|
|
||||||
IStorage *CreateLocalStorage()
|
IStorage *CreateLocalStorage()
|
||||||
|
|
|
@ -32,6 +32,8 @@ public:
|
||||||
virtual bool RemoveBinaryFile(const char *pFilename) = 0;
|
virtual bool RemoveBinaryFile(const char *pFilename) = 0;
|
||||||
virtual bool RenameBinaryFile(const char* pOldFilename, const char* pNewFilename) = 0;
|
virtual bool RenameBinaryFile(const char* pOldFilename, const char* pNewFilename) = 0;
|
||||||
virtual const char* GetBinaryPath(const char *pDir, char *pBuffer, unsigned BufferSize) = 0;
|
virtual const char* GetBinaryPath(const char *pDir, char *pBuffer, unsigned BufferSize) = 0;
|
||||||
|
|
||||||
|
static void StripPathAndExtension(const char *pFilename, char *pBuffer, int BufferSize);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern IStorage *CreateStorage(const char *pApplicationName, int StorageType, int NumArgs, const char **ppArguments);
|
extern IStorage *CreateStorage(const char *pApplicationName, int StorageType, int NumArgs, const char **ppArguments);
|
||||||
|
|
|
@ -3092,7 +3092,7 @@ void CEditor::ReplaceImage(const char *pFileName, int StorageType, void *pUser)
|
||||||
}
|
}
|
||||||
*pImg = ImgInfo;
|
*pImg = ImgInfo;
|
||||||
pImg->m_External = External;
|
pImg->m_External = External;
|
||||||
pEditor->ExtractName(pFileName, pImg->m_aName, sizeof(pImg->m_aName));
|
IStorage::StripPathAndExtension(pFileName, pImg->m_aName, sizeof(pImg->m_aName));
|
||||||
pImg->m_AutoMapper.Load(pImg->m_aName);
|
pImg->m_AutoMapper.Load(pImg->m_aName);
|
||||||
pImg->m_TexID = pEditor->Graphics()->LoadTextureRaw(ImgInfo.m_Width, ImgInfo.m_Height, ImgInfo.m_Format, ImgInfo.m_pData, CImageInfo::FORMAT_AUTO, 0);
|
pImg->m_TexID = pEditor->Graphics()->LoadTextureRaw(ImgInfo.m_Width, ImgInfo.m_Height, ImgInfo.m_Format, ImgInfo.m_pData, CImageInfo::FORMAT_AUTO, 0);
|
||||||
ImgInfo.m_pData = 0;
|
ImgInfo.m_pData = 0;
|
||||||
|
@ -3114,7 +3114,7 @@ void CEditor::AddImage(const char *pFileName, int StorageType, void *pUser)
|
||||||
|
|
||||||
// check if we have that image already
|
// check if we have that image already
|
||||||
char aBuf[128];
|
char aBuf[128];
|
||||||
ExtractName(pFileName, aBuf, sizeof(aBuf));
|
IStorage::StripPathAndExtension(pFileName, aBuf, sizeof(aBuf));
|
||||||
for(int i = 0; i < pEditor->m_Map.m_lImages.size(); ++i)
|
for(int i = 0; i < pEditor->m_Map.m_lImages.size(); ++i)
|
||||||
{
|
{
|
||||||
if(!str_comp(pEditor->m_Map.m_lImages[i]->m_aName, aBuf))
|
if(!str_comp(pEditor->m_Map.m_lImages[i]->m_aName, aBuf))
|
||||||
|
@ -3148,7 +3148,7 @@ void CEditor::AddSound(const char *pFileName, int StorageType, void *pUser)
|
||||||
|
|
||||||
// check if we have that sound already
|
// check if we have that sound already
|
||||||
char aBuf[128];
|
char aBuf[128];
|
||||||
ExtractName(pFileName, aBuf, sizeof(aBuf));
|
IStorage::StripPathAndExtension(pFileName, aBuf, sizeof(aBuf));
|
||||||
for(int i = 0; i < pEditor->m_Map.m_lSounds.size(); ++i)
|
for(int i = 0; i < pEditor->m_Map.m_lSounds.size(); ++i)
|
||||||
{
|
{
|
||||||
if(!str_comp(pEditor->m_Map.m_lSounds[i]->m_aName, aBuf))
|
if(!str_comp(pEditor->m_Map.m_lSounds[i]->m_aName, aBuf))
|
||||||
|
@ -3243,7 +3243,7 @@ void CEditor::ReplaceSound(const char *pFileName, int StorageType, void *pUser)
|
||||||
|
|
||||||
// replace sound
|
// replace sound
|
||||||
pSound->m_External = External;
|
pSound->m_External = External;
|
||||||
pEditor->ExtractName(pFileName, pSound->m_aName, sizeof(pSound->m_aName));
|
IStorage::StripPathAndExtension(pFileName, pSound->m_aName, sizeof(pSound->m_aName));
|
||||||
pSound->m_SoundID = pEditor->Sound()->LoadOpusFromMem(pData, (unsigned) DataSize, true);
|
pSound->m_SoundID = pEditor->Sound()->LoadOpusFromMem(pData, (unsigned) DataSize, true);
|
||||||
pSound->m_pData = pData;
|
pSound->m_pData = pData;
|
||||||
pSound->m_DataSize = DataSize;
|
pSound->m_DataSize = DataSize;
|
||||||
|
|
|
@ -1002,21 +1002,6 @@ public:
|
||||||
|
|
||||||
void AddFileDialogEntry(int Index, CUIRect *pView);
|
void AddFileDialogEntry(int Index, CUIRect *pView);
|
||||||
void SortImages();
|
void SortImages();
|
||||||
static void ExtractName(const char *pFileName, char *pName, int BufferSize)
|
|
||||||
{
|
|
||||||
const char *pExtractedName = pFileName;
|
|
||||||
const char *pEnd = 0;
|
|
||||||
for(; *pFileName; ++pFileName)
|
|
||||||
{
|
|
||||||
if(*pFileName == '/' || *pFileName == '\\')
|
|
||||||
pExtractedName = pFileName+1;
|
|
||||||
else if(*pFileName == '.')
|
|
||||||
pEnd = pFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Length = pEnd > pExtractedName ? min(BufferSize, (int)(pEnd-pExtractedName+1)) : BufferSize;
|
|
||||||
str_copy(pName, pExtractedName, Length);
|
|
||||||
}
|
|
||||||
|
|
||||||
int GetLineDistance();
|
int GetLineDistance();
|
||||||
void ZoomMouseTarget(float ZoomFactor);
|
void ZoomMouseTarget(float ZoomFactor);
|
||||||
|
|
|
@ -550,7 +550,7 @@ int CEditorMap::Save(class IStorage *pStorage, const char *pFileName)
|
||||||
|| !mem_comp(CurrentServerInfo.m_NetAddr.ip, ipv6Localhost, sizeof(ipv6Localhost)))
|
|| !mem_comp(CurrentServerInfo.m_NetAddr.ip, ipv6Localhost, sizeof(ipv6Localhost)))
|
||||||
{
|
{
|
||||||
char aMapName[128];
|
char aMapName[128];
|
||||||
m_pEditor->ExtractName(pFileName, aMapName, sizeof(aMapName));
|
IStorage::StripPathAndExtension(pFileName, aMapName, sizeof(aMapName));
|
||||||
if(!str_comp(aMapName, CurrentServerInfo.m_aMap))
|
if(!str_comp(aMapName, CurrentServerInfo.m_aMap))
|
||||||
m_pEditor->Client()->Rcon("reload");
|
m_pEditor->Client()->Rcon("reload");
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,22 +60,6 @@ int LoadPNG(CImageInfo *pImg, const char *pFilename)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtractName(const char *pFileName, char *pName, int BufferSize)
|
|
||||||
{
|
|
||||||
const char *pExtractedName = pFileName;
|
|
||||||
const char *pEnd = 0;
|
|
||||||
for(; *pFileName; ++pFileName)
|
|
||||||
{
|
|
||||||
if(*pFileName == '/' || *pFileName == '\\')
|
|
||||||
pExtractedName = pFileName+1;
|
|
||||||
else if(*pFileName == '.')
|
|
||||||
pEnd = pFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Length = pEnd > pExtractedName ? min(BufferSize, (int)(pEnd-pExtractedName+1)) : BufferSize;
|
|
||||||
str_copy(pName, pExtractedName, Length);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *ReplaceImageItem(void *pItem, int Type, const char *pImgName, const char *pImgFile, CMapItemImage *pNewImgItem)
|
void *ReplaceImageItem(void *pItem, int Type, const char *pImgName, const char *pImgFile, CMapItemImage *pNewImgItem)
|
||||||
{
|
{
|
||||||
if(Type != MAPITEMTYPE_IMAGE)
|
if(Type != MAPITEMTYPE_IMAGE)
|
||||||
|
@ -100,7 +84,7 @@ void *ReplaceImageItem(void *pItem, int Type, const char *pImgName, const char *
|
||||||
int PixelSize = ImgInfo.m_Format == CImageInfo::FORMAT_RGB ? 3 : 4;
|
int PixelSize = ImgInfo.m_Format == CImageInfo::FORMAT_RGB ? 3 : 4;
|
||||||
|
|
||||||
g_NewNameID = pImgItem->m_ImageName;
|
g_NewNameID = pImgItem->m_ImageName;
|
||||||
ExtractName(pImgFile, g_aNewName, sizeof(g_aNewName));
|
IStorage::StripPathAndExtension(pImgFile, g_aNewName, sizeof(g_aNewName));
|
||||||
g_NewDataID = pImgItem->m_ImageData;
|
g_NewDataID = pImgItem->m_ImageData;
|
||||||
g_pNewData = ImgInfo.m_pData;
|
g_pNewData = ImgInfo.m_pData;
|
||||||
g_NewDataSize = ImgInfo.m_Width * ImgInfo.m_Height * PixelSize;
|
g_NewDataSize = ImgInfo.m_Width * ImgInfo.m_Height * PixelSize;
|
||||||
|
|
Loading…
Reference in a new issue