mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-23 20:09:46 +03:00
* Finish level saving.
This commit is contained in:
@@ -16,10 +16,6 @@
|
||||
#include <io.h>
|
||||
#include <direct.h>
|
||||
|
||||
// XPL means "Cross PLatform"
|
||||
#define XPL_ACCESS _access
|
||||
#define XPL_MKDIR(path, mode) _mkdir(path)
|
||||
|
||||
// Why are we not using GetTickCount64()? It's simple -- getTimeMs has the exact same problem as using regular old GetTickCount.
|
||||
#pragma warning(disable : 28159)
|
||||
|
||||
@@ -37,6 +33,70 @@
|
||||
|
||||
int g_TimeSecondsOnInit = 0;
|
||||
|
||||
DIR* opendir(const char* name)
|
||||
{
|
||||
size_t len = strlen(name);
|
||||
if (len == 0)
|
||||
return NULL;
|
||||
|
||||
char buf[1024];
|
||||
if (len >= 1024 - 5)
|
||||
return NULL;
|
||||
|
||||
strcpy(buf, name);
|
||||
|
||||
if (name[len - 1] != '/')
|
||||
strcpy(&buf[len], "/*");
|
||||
else
|
||||
strcpy(&buf[len], "*");
|
||||
|
||||
DIR* pDir = (DIR*)malloc(sizeof(DIR));
|
||||
if (!pDir)
|
||||
return pDir;
|
||||
|
||||
memset(pDir, 0, sizeof * pDir);
|
||||
|
||||
pDir->current = FindFirstFile(buf, &pDir->findData);
|
||||
if (pDir->current == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
free(pDir);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pDir;
|
||||
}
|
||||
|
||||
dirent* readdir(DIR* dir)
|
||||
{
|
||||
if (dir->current == INVALID_HANDLE_VALUE)
|
||||
return NULL;
|
||||
|
||||
static dirent de;
|
||||
|
||||
if (!dir->returnedFirstFileData)
|
||||
{
|
||||
dir->returnedFirstFileData = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!FindNextFile(dir->current, &dir->findData))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strcpy(de.d_name, dir->findData.cFileName);
|
||||
de.d_type = (dir->findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? DT_DIR : DT_REG;
|
||||
|
||||
return &de;
|
||||
}
|
||||
|
||||
void closedir(DIR* dir)
|
||||
{
|
||||
if (dir->current != INVALID_HANDLE_VALUE)
|
||||
FindClose(dir->current);
|
||||
|
||||
free(dir);
|
||||
}
|
||||
|
||||
bool createFolderIfNotExists(const char* pDir)
|
||||
{
|
||||
if (!XPL_ACCESS(pDir, 0))
|
||||
@@ -45,6 +105,31 @@ bool createFolderIfNotExists(const char* pDir)
|
||||
return XPL_MKDIR(pDir, 0755) == 0;
|
||||
}
|
||||
|
||||
bool DeleteDirectory(const std::string& name, bool unused)
|
||||
{
|
||||
DIR* dir = opendir(name.c_str());
|
||||
if (!dir)
|
||||
return false;
|
||||
|
||||
char buffer[1024];
|
||||
|
||||
while (true)
|
||||
{
|
||||
dirent* de = readdir(dir);
|
||||
if (!de)
|
||||
break;
|
||||
|
||||
if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
|
||||
continue;
|
||||
|
||||
snprintf(buffer, sizeof buffer, "%s/%s", name.c_str(), de->d_name);
|
||||
remove(buffer);
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
return remove(name.c_str()) == 0;
|
||||
}
|
||||
|
||||
const char* GetTerrainName()
|
||||
{
|
||||
return "terrain.png";
|
||||
|
||||
@@ -15,16 +15,51 @@
|
||||
#include <cassert>
|
||||
#include <climits>
|
||||
|
||||
#include <string>
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
// @HACK: Include WinSock2.h also
|
||||
#include <WinSock2.h>
|
||||
#include <Windows.h>
|
||||
#include <WS2tcpip.h>
|
||||
#include <direct.h>
|
||||
#include <io.h>
|
||||
|
||||
// XPL means "Cross PLatform"
|
||||
#define XPL_ACCESS _access
|
||||
#define XPL_MKDIR(path, mode) _mkdir(path)
|
||||
|
||||
// Bare bones non conforming implementation, but good enough
|
||||
struct dirent
|
||||
{
|
||||
int d_type;
|
||||
char d_name[_MAX_PATH + 1];
|
||||
};
|
||||
|
||||
struct DIR
|
||||
{
|
||||
HANDLE current;
|
||||
WIN32_FIND_DATA findData;
|
||||
bool returnedFirstFileData;
|
||||
};
|
||||
|
||||
#define DT_UNKNOWN (0)
|
||||
#define DT_DIR (4)
|
||||
#define DT_REG (8)
|
||||
|
||||
DIR* opendir(const char* name);
|
||||
dirent* readdir(DIR* dir);
|
||||
void closedir(DIR* dir);
|
||||
|
||||
#else
|
||||
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
|
||||
// XPL means "Cross PLatform"
|
||||
#define XPL_ACCESS access
|
||||
#define XPL_MKDIR(path, mode) mkdir(path, mode)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -505,6 +540,7 @@ constexpr float Lerp(float a, float b, float progress)
|
||||
}
|
||||
|
||||
bool createFolderIfNotExists(const char* pDir);
|
||||
bool DeleteDirectory(const std::string& name, bool unused);
|
||||
|
||||
// things that we added:
|
||||
#ifndef ORIGINAL_CODE
|
||||
|
||||
Reference in New Issue
Block a user