Skip to content

Commit

Permalink
更新地图格式,做了个新旧版地图的转换器
Browse files Browse the repository at this point in the history
  • Loading branch information
zouhuidong committed Aug 21, 2022
1 parent ead37fa commit 27d83d7
Show file tree
Hide file tree
Showing 7 changed files with 485 additions and 119 deletions.
42 changes: 42 additions & 0 deletions MapConverter/MapConverter.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,49 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\HiEasyX\HiCanvas.cpp" />
<ClCompile Include="..\HiEasyX\HiDrawingProperty.cpp" />
<ClCompile Include="..\HiEasyX\HiFPS.cpp" />
<ClCompile Include="..\HiEasyX\HiFunc.cpp" />
<ClCompile Include="..\HiEasyX\HiGif.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\Button.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\Container.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\ControlBase.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\Page.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\ProgressCtrl.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\ScrollBar.cpp" />
<ClCompile Include="..\HiEasyX\HiGUI\Static.cpp" />
<ClCompile Include="..\HiEasyX\HiMouseDrag.cpp" />
<ClCompile Include="..\HiEasyX\HiMusicMCI.cpp" />
<ClCompile Include="..\HiEasyX\HiStart.cpp" />
<ClCompile Include="..\HiEasyX\HiWindow.cpp" />
<ClCompile Include="..\map_operation.cpp" />
<ClCompile Include="converter.cpp" />
<ClCompile Include="oldmap.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\HiEasyX.h" />
<ClInclude Include="..\HiEasyX\HiCanvas.h" />
<ClInclude Include="..\HiEasyX\HiDrawingProperty.h" />
<ClInclude Include="..\HiEasyX\HiFPS.h" />
<ClInclude Include="..\HiEasyX\HiFunc.h" />
<ClInclude Include="..\HiEasyX\HiGif.h" />
<ClInclude Include="..\HiEasyX\HiGUI\Button.h" />
<ClInclude Include="..\HiEasyX\HiGUI\Container.h" />
<ClInclude Include="..\HiEasyX\HiGUI\ControlBase.h" />
<ClInclude Include="..\HiEasyX\HiGUI\HiGUI.h" />
<ClInclude Include="..\HiEasyX\HiGUI\Page.h" />
<ClInclude Include="..\HiEasyX\HiGUI\ProgressCtrl.h" />
<ClInclude Include="..\HiEasyX\HiGUI\ScrollBar.h" />
<ClInclude Include="..\HiEasyX\HiGUI\Static.h" />
<ClInclude Include="..\HiEasyX\HiMacro.h" />
<ClInclude Include="..\HiEasyX\HiMouseDrag.h" />
<ClInclude Include="..\HiEasyX\HiMusicMCI.h" />
<ClInclude Include="..\HiEasyX\HiStart.h" />
<ClInclude Include="..\HiEasyX\HiWindow.h" />
<ClInclude Include="..\map_operation.h" />
<ClInclude Include="..\redstone.h" />
<ClInclude Include="oldmap.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
117 changes: 117 additions & 0 deletions MapConverter/MapConverter.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,122 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="converter.cpp" />
<ClCompile Include="oldmap.cpp" />
<ClCompile Include="..\map_operation.cpp" />
<ClCompile Include="..\HiEasyX\HiCanvas.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiDrawingProperty.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiFPS.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiFunc.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGif.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\Button.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\Container.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\ControlBase.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\Page.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\ProgressCtrl.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\ScrollBar.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiGUI\Static.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiMouseDrag.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiMusicMCI.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiStart.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
<ClCompile Include="..\HiEasyX\HiWindow.cpp">
<Filter>HiEasyX</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="oldmap.h" />
<ClInclude Include="..\map_operation.h" />
<ClInclude Include="..\redstone.h" />
<ClInclude Include="..\HiEasyX\HiCanvas.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiDrawingProperty.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiFPS.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiFunc.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGif.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\Button.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\Container.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\ControlBase.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\HiGUI.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\Page.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\ProgressCtrl.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\ScrollBar.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiGUI\Static.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiMacro.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiMouseDrag.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiMusicMCI.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiStart.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX\HiWindow.h">
<Filter>HiEasyX</Filter>
</ClInclude>
<ClInclude Include="..\HiEasyX.h">
<Filter>HiEasyX</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="HiEasyX">
<UniqueIdentifier>{3c5b4971-3097-4a26-8176-13ee6a2a98c5}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
76 changes: 75 additions & 1 deletion MapConverter/converter.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,84 @@
#include "oldmap.h"
#include <stdio.h>
#include "../redstone.h"
#include <conio.h>
#include <io.h>
#include <string>
#include <locale.h>

int main()
{
setlocale(LC_ALL, "chs");

while (true)
{
printf("Minecraft Redstone Simulator Ver 2.1 地图转换器\n");
printf("地图路径:\n");

// 清空键盘缓冲区
rewind(stdin);

TCHAR buf[256] = { 0 };
wscanf_s(L"%[^\n]", buf, 256);

int offset = 0;
if (buf[0] == L'\"')
offset = 1;
std::wstring wstr = buf + offset;
if (offset)
*(wstr.end() - 1) = L'\0';

FILE* fp = nullptr;
errno_t err = _wfopen_s(&fp, wstr.c_str(), L"r+");
if (err)
{
MessageBox(nullptr, L"打开文件失败", L"ERROR", MB_OK);
return -1;
}

printf("地图加载中……请稍等\n");

int len = _filelength(_fileno(fp));
int* pBuf = new int[len];
ZeroMemory(pBuf, len * sizeof(int));
fread(pBuf, len * sizeof(int), 1, fp);
fclose(fp);

RsMap map;
bool old = isOldMap(pBuf, len);

if (old)
map = oldmap::OpenProject(wstr.c_str());
else
map = OpenProject(wstr.c_str());

printf("\n地图类型:%s\n", old ? "旧版地图" : "新版地图");
printf("地图尺寸:%d x %d\n", map.w, map.h);

printf("\n按任意键将地图转换为%s\n", old ? "新版" : "旧版");
_getch();

// 备份
std::wstring wstrBackup = wstr;
wstrBackup.insert(wstrBackup.rfind(L'.'), L"_backup");

if (!CopyFile(wstr.c_str(), wstrBackup.c_str(), false))
{
printf("备份原地图文件失败,请手动备份后按任意键继续\n");
while (_kbhit())
_getch();
Sleep(1000);
_getch();
}

if (old)
SaveProject(map, wstr.c_str());
else
oldmap::SaveProject(map, wstr.c_str());

printf("\n完成。");
_getch();
system("cls");
}

return 0;
}
Loading

0 comments on commit 27d83d7

Please sign in to comment.