Skip to content

Commit

Permalink
Various enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
Kimjio committed May 12, 2024
1 parent ab731a6 commit 3976f34
Show file tree
Hide file tree
Showing 21 changed files with 5,010 additions and 712 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@
[submodule "deps/SQLiteCpp"]
path = deps/SQLiteCpp
url = https://github.com/SRombauts/SQLiteCpp.git
[submodule "deps/msgpack11"]
path = deps/msgpack11
url = https://github.com/ar90n/msgpack11.git

1 change: 1 addition & 0 deletions deps/msgpack11
Submodule msgpack11 added at aa0cc8
30 changes: 30 additions & 0 deletions deps/msgpack11.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
msgpack11 = {
source = path.join(dependencies.basePath, "msgpack11"),
}

function msgpack11.import()
links { "msgpack11" }
msgpack11.includes()
end

function msgpack11.includes()
includedirs {
msgpack11.source
}
end

function msgpack11.project()
project "msgpack11"
language "C++"

msgpack11.includes()

files {
path.join(msgpack11.source, "msgpack11.cpp")
}

warnings "Off"
kind "StaticLib"
end

table.insert(dependencies, msgpack11)
6 changes: 4 additions & 2 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ end
include "deps/minhook.lua"
include "deps/rapidjson.lua"
include "deps/SQLiteCpp.lua"
include "deps/msgpack11.lua"

workspace "umamusume-localify"
location "./build"
Expand Down Expand Up @@ -92,6 +93,7 @@ workspace "umamusume-localify"
"Shlwapi",
"WinHttp",
"ntdll",
"runtimeobject",
"./deps/discord_game_sdk/discord_game_sdk.dll.lib"
}

Expand All @@ -101,8 +103,8 @@ workspace "umamusume-localify"
}

nuget {
"Microsoft.Web.WebView2:1.0.2151.40",
"Microsoft.Windows.ImplementationLibrary:1.0.231028.1"
"Microsoft.Web.WebView2:1.0.2420.47",
"Microsoft.Windows.ImplementationLibrary:1.0.240122.1"
}

dependencies.imports()
Expand Down
153 changes: 153 additions & 0 deletions src/SaveIcon.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
#include "SaveIcon.h"

BOOL SaveIconToFile(HICON hIcon, LPWSTR szFileName, int nBit)
{
BOOL ret = FALSE;
PVOID MonoBits;
PVOID ColorBits;
DWORD dwWrite;
HANDLE hFile;
ICONINFO IconInfo;
TIconRes tIR;
TIconHeader tIH;
DWORD MonoInfoSize, ColorInfoSize, MonoBitsSize, ColorBitsSize;
BITMAPINFO* MonoInfo;
BITMAPINFO* ColorInfo;

switch (nBit)
{
case 0: case 1: case 4: case 8: case 16: case 24: case 32:
break;
default:
return FALSE;
}
if (!hIcon || !szFileName)
{
return FALSE;
}

GetIconInfo(hIcon, &IconInfo);

if (IconInfo.fIcon)
{
if (INVALID_HANDLE_VALUE !=
(hFile = CreateFileW(szFileName, GENERIC_WRITE,
FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0))
)
{
ZeroMemory(&tIH, sizeof(TIconHeader));
ZeroMemory(&tIR, sizeof(TIconRes));
GetDIBSizes(IconInfo.hbmMask, MonoInfoSize, MonoBitsSize, 1);
GetDIBSizes(IconInfo.hbmColor, ColorInfoSize, ColorBitsSize, nBit);
MonoInfo = reinterpret_cast<BITMAPINFO*>(malloc(MonoInfoSize));
ColorInfo = reinterpret_cast<BITMAPINFO*>(malloc(ColorInfoSize));
MonoBits = malloc(MonoBitsSize);
ColorBits = malloc(ColorBitsSize);
GetDIB(IconInfo.hbmMask, MonoInfo, MonoBits, 1);
GetDIB(IconInfo.hbmColor, ColorInfo, ColorBits, nBit);
tIH.wType = static_cast<WORD>(IconInfo.fIcon);
tIH.Count = 1;
ret = WriteFile(hFile, &tIH, sizeof(TIconHeader), &dwWrite, NULL);

if (!ColorInfo)
{
return FALSE;
}

tIR.Width = static_cast<BYTE>(ColorInfo->bmiHeader.biWidth);
tIR.Height = static_cast<BYTE>(ColorInfo->bmiHeader.biHeight);
tIR.Colors = ColorInfo->bmiHeader.biPlanes * ColorInfo->bmiHeader.biBitCount;
tIR.DIBSize = ColorInfoSize + ColorBitsSize + MonoBitsSize;
tIR.DIBOffset = sizeof(TIconHeader) + sizeof(TIconRes);
ret &= WriteFile(hFile, &tIR, sizeof(TIconRes), &dwWrite, NULL);
ColorInfo->bmiHeader.biHeight *= 2;
ret &= WriteFile(hFile, ColorInfo, ColorInfoSize, &dwWrite, NULL);
ret &= WriteFile(hFile, ColorBits, ColorBitsSize, &dwWrite, NULL);
ret &= WriteFile(hFile, MonoBits, MonoBitsSize, &dwWrite, NULL);
CloseHandle(hFile);
free(ColorInfo);
free(MonoInfo);
free(ColorBits);
free(MonoBits);
}

}

DeleteObject(IconInfo.hbmColor);
DeleteObject(IconInfo.hbmMask);

return ret;
}

VOID InitBmpHeader(HBITMAP hBitmap, BITMAPINFOHEADER& BI, int nBit)
{
INT Bytes;
DIBSECTION DS;
DS.dsBmih.biSize = 0;
Bytes = GetObject(hBitmap, sizeof(DIBSECTION), &DS);
if (Bytes >= sizeof(DS.dsBm) + sizeof(DS.dsBmih) &&
DS.dsBmih.biSize >= sizeof(DS.dsBmih))
{
CopyMemory(&BI, &DS.dsBmih, sizeof(BITMAPINFOHEADER));
}
else
{
ZeroMemory(&BI, sizeof(BI));
BI.biSize = sizeof(BI);
BI.biWidth = DS.dsBm.bmWidth;
BI.biHeight = DS.dsBm.bmHeight;
BI.biBitCount = DS.dsBm.bmPlanes * DS.dsBm.bmBitsPixel;
}
if (nBit)
{
BI.biBitCount = static_cast<WORD>(nBit);
}
if (BI.biBitCount <= 8)
{
BI.biClrUsed = 1 << BI.biBitCount;
}

BI.biPlanes = 1;

if (BI.biClrImportant > BI.biClrUsed)
{
BI.biClrImportant = BI.biClrUsed;
}
if (BI.biSizeImage == 0)
{
BI.biSizeImage =
((BI.biWidth * BI.biBitCount + 31) / 32) * 4 * BI.biHeight;
}
}

VOID GetDIBSizes(HBITMAP Bitmap,
DWORD& InfoSize,
DWORD& ImageSize,
int nBit)
{
BITMAPINFOHEADER BI;
InitBmpHeader(Bitmap, BI, nBit);
InfoSize = sizeof(BITMAPINFOHEADER);
if (BI.biBitCount > 8)
{
if (BI.biCompression & BI_BITFIELDS)
{
InfoSize = InfoSize + 12;
}
}
else
{
InfoSize += sizeof(RGBQUAD) *
(BI.biClrUsed != 0 ? BI.biClrUsed : (1 << BI.biBitCount));
}
ImageSize = BI.biSizeImage;
}

VOID GetDIB(HBITMAP Bitmap, BITMAPINFO* BmpInfo, PVOID Bits, INT nBit)
{
HDC DC = CreateCompatibleDC(NULL);
InitBmpHeader(Bitmap, BmpInfo->bmiHeader, nBit);
GetDIBits(DC, Bitmap, 0,
BmpInfo->bmiHeader.biHeight, Bits, BmpInfo, DIB_RGB_COLORS);
DeleteDC(DC);
}
36 changes: 36 additions & 0 deletions src/SaveIcon.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#ifndef HS_HEADER_DEF_ICONMEMFUNC_H
#define HS_HEADER_DEF_ICONMEMFUNC_H

#if _MSC_VER >= 1000
#pragma once
#endif
//////////////////////////////////////////////////////////////////////////
#include <windows.h>

struct TIconHeader
{
WORD Reserved;
WORD wType;
WORD Count;
};

struct TIconRes
{
BYTE Width;
BYTE Height;
WORD Colors;
WORD Reserved1;
WORD Reserved2;
DWORD DIBSize;
DWORD DIBOffset;
};

VOID InitBmpHeader(HBITMAP hBitmap, BITMAPINFOHEADER& BI, int nBit);

VOID GetDIBSizes(HBITMAP Bitmap, DWORD &InfoSize, DWORD &ImageSize, int nBit);

VOID GetDIB(HBITMAP Bitmap, BITMAPINFO* BmpInfo, PVOID Bits, INT nBit);

BOOL SaveIconToFile(HICON hIcon, LPWSTR szFileName, int nBit);

#endif //HS_HEADER_DEF_ICONMEMFUNC_H
81 changes: 64 additions & 17 deletions src/VERSIONINFO.rc
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// 한국어(대한민국) resources

#if !defined(AFX_RESOURCE_DLL)
#pragma code_page(65001)

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,32,0,0
PRODUCTVERSION 1,32,0,0
FILEVERSION 1,33,0,0
PRODUCTVERSION 1,33,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -21,27 +27,68 @@ VS_VERSION_INFO VERSIONINFO
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041204b0"
BLOCK "000004b0"
BEGIN
VALUE "LegalCopyright", "Copyright © Ji O Kim\0"
VALUE "FileDescription", "우마무스메 현지화 패치\0"
VALUE "FileVersion", "1.32.0.0\0"
VALUE "InternalName", "umamusume-localify\0"
VALUE "ProductName", "Umamusume Localify\0"
VALUE "ProductVersion", "1.32.0\0"
VALUE "FileDescription", "Localization patch for Umamusume"
VALUE "FileVersion", "1.33.0.0"
VALUE "InternalName", "umamusume-localify"
VALUE "LegalCopyright", "Copyright ⓒ Ji O Kim"
VALUE "ProductName", "Umamusume Localify"
VALUE "ProductVersion", "1.33.0.0"
END
BLOCK "000004b0"
BLOCK "041204b0"
BEGIN
VALUE "LegalCopyright", "Copyright © Ji O Kim\0"
VALUE "FileDescription", "Localization patch for Umamusume\0"
VALUE "FileVersion", "1.32.0.0\0"
VALUE "InternalName", "umamusume-localify\0"
VALUE "ProductName", "Umamusume Localify\0"
VALUE "ProductVersion", "1.32.0\0"
VALUE "FileDescription", "우마무스메 현지화 패치"
VALUE "FileVersion", "1.33.0.0"
VALUE "InternalName", "umamusume-localify"
VALUE "LegalCopyright", "Copyright ⓒ Ji O Kim"
VALUE "ProductName", "Umamusume Localify"
VALUE "ProductVersion", "1.33.0.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0412, 1200, 0x0, 1200
VALUE "Translation", 0x412, 1200, 0x0, 1200
END
END


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

#endif // 한국어(대한민국) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

8 changes: 8 additions & 0 deletions src/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ using namespace std;
namespace config
{
rapidjson::Document config_document;
rapidjson::Document backup_document;

bool read_config()
{
Expand All @@ -24,6 +25,8 @@ namespace config
config_document.ParseStream(wrapper);
config_stream.close();

backup_document.CopyFrom(config_document, backup_document.GetAllocator(), true);

return !config_document.HasParseError();
}

Expand All @@ -38,4 +41,9 @@ namespace config
config_stream << buffer.GetString() << endl;
config_stream.close();
}

void rollback_config()
{
config_document.CopyFrom(backup_document, config_document.GetAllocator(), true);
}
}
Loading

0 comments on commit 3976f34

Please sign in to comment.