rodecomp/Source/Contents/SkinInfo.cpp
ragnarok-clanker f464cd3f17 Decompile 41 functions in Source/Client/Input/InputCharset.cpp, Source/Client/Input/InputCharset.h, ...
Batch #1607 by ragnarok-clanker: 0 byte-identical, 41 confirmed by peer review.

- fn_11718 DrawItemIconById: logic confirmed by peer review
- fn_11719 DrawItemSlotBackground: logic confirmed by peer review
- fn_11721 UICntWnd::DrawBorder: logic confirmed by peer review
- fn_11760 UIBank_NewWnd::Paint: logic confirmed by peer review
- fn_11761 UIChatRoomWnd::Paint: logic confirmed by peer review
- fn_11767 UIMerInfoWnd::Paint: logic confirmed by peer review
- fn_12085 UIWindow::DrawPanelBackground: logic confirmed by peer review
- fn_12086 UIWindow::DrawPanelBackgroundAt: logic confirmed by peer review
- fn_12088 UIWindow::DrawButtonBar: logic confirmed by peer review
- fn_12089 UIWindow::DrawButtonBarAt: logic confirmed by peer review
- fn_12098 UIWindow::DrawTitleBar: logic confirmed by peer review
- fn_12099 UIWindow::DrawTitleBarAt: logic confirmed by peer review
- fn_12120 UIWindow::LoadStyledBitmap: logic confirmed by peer review
- fn_12219 UIDisconnectedServerMsgWnd::Paint: logic confirmed by peer review
- fn_12233 UINoticeConfirmWnd::Paint: logic confirmed by peer review
- fn_12245 UIQuitWnd::Paint: logic confirmed by peer review
- fn_12246 UIRestartWnd::Paint: logic confirmed by peer review
- fn_12258 UIWaitWnd::Paint: logic confirmed by peer review
- fn_14470 CUIFrameWnd::RefreshSkinColors: logic confirmed by peer review
- fn_14471 CUIFrameWnd::Paint: logic confirmed by peer review
- fn_14472 CUIFrameWnd::SetSkinColors: logic confirmed by peer review
- fn_14635 CUIControl::LoadBitmapResource: logic confirmed by peer review
- fn_17781 InputCharset::Prefix: logic confirmed by peer review
- fn_17788 InputCharset::ServiceName: logic confirmed by peer review
- fn_17847 FadeOutMode: logic confirmed by peer review
- fn_18378 Resolve: logic confirmed by peer review
- fn_02111 RendererDX7Operations::SaveLogo: logic confirmed by peer review
- fn_09446 UICashEmotionPack::Paint: logic confirmed by peer review
- fn_09453 UICashEmotionPack::SetSaleBadge: logic confirmed by peer review
- fn_09483 UICashEmotionPiece::Paint: logic confirmed by peer review
- fn_45445 CSkinMgr::CSkinMgr: logic confirmed by peer review
- fn_09681 CSkinMgr::~CSkinMgr: logic confirmed by peer review
- fn_09683 CSkinMgr::Prepare: logic confirmed by peer review
- fn_09684 SkinPaletteColor: logic confirmed by peer review
- fn_09685 SkinPaletteChannels: logic confirmed by peer review
- fn_09686 CSkinMgr::Name: logic confirmed by peer review
- fn_09687 CSkinMgr::Prefix: logic confirmed by peer review
- fn_09688 CSkinMgr::Name: logic confirmed by peer review
- fn_09690 CSkinMgr::Selected: logic confirmed by peer review
- fn_10758 UIEditCtrl::DrawSelectionAt: logic confirmed by peer review
- fn_10759 UIEditCtrl::DrawSelection: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
Adds to the build: Source/Contents/SkinMgr.cpp
2026-10-28 19:13:07 +00:00

72 lines
1.7 KiB
C++

#include "Contents/SkinMgr.h"
#include <cstdio>
#include <direct.h>
#include <io.h>
#include <process.h>
// OFFSET: 0x007E2130
// FUNCTION: fn_09690
bool CSkinMgr::Selected() const {
return this->selected > -1;
}
// OFFSET: 0x007E1020
// FUNCTION: fn_09686
const char* CSkinMgr::Name() const {
if (this->selected == -1) {
return g_defaultSkinPrefix.c_str();
}
return this->names[this->selected].c_str();
}
// OFFSET: 0x007E1060
// FUNCTION: fn_09687
const char* CSkinMgr::Prefix() const {
if (this->selected == -1) {
return g_defaultSkinPrefix.c_str();
}
return this->prefixes[this->selected].c_str();
}
// OFFSET: 0x007E10E0
// FUNCTION: fn_09688
const char* CSkinMgr::Name(int index) const {
if (index == -1) {
return g_defaultSkinPrefix.c_str();
}
return this->names[index].c_str();
}
// OFFSET: 0x007E0C40
// FUNCTION: fn_09683
void CSkinMgr::Prepare() {
if (this->selected == -1 || this->archives[this->selected] == 0 || this->prepared[this->selected] != 0) {
return;
}
char directory[2048];
std::sprintf(directory, "%s\\_tmpskin_", g_applicationDirectory);
const std::string target = std::string(directory) + "\\" + this->names[this->selected];
if (_access(target.c_str(), 0) == 0) {
return;
}
if (_access(directory, 0) != 0 && _mkdir(directory) != 0) {
return;
}
if (_access(target.c_str(), 0) != 0 && _mkdir(target.c_str()) != 0) {
return;
}
const std::string input = std::string("skin/") + this->names[this->selected];
const std::string output = std::string("_tmpskin_/") + this->names[this->selected];
_spawnl(_P_WAIT, "runzip.exe", "runzip.exe", "-n", input.c_str(), "-d", output.c_str(), nullptr);
this->prepared[this->selected] = 1;
}