Batch #11809 by Yommy: 1 byte-identical, 0 confirmed by peer review. - fn_09299 UIApplyForPartyWnd::Slot15: byte-identical Merged automatically: every function is byte-identical to the original.
193 lines
6.6 KiB
C++
193 lines
6.6 KiB
C++
#include "Client/Session.h"
|
|
#include "File/ShortcutFilename.h"
|
|
#include "Render/Renderer.h"
|
|
#include "UI/Window/UINewSelectCharWnd.h"
|
|
#include "Contents/MessageTable.h"
|
|
#include "UI/Window/UIWindowMgr.h"
|
|
#include "Contents/Party/AdventurerAgencyMgr.h"
|
|
#include "Render/DeviceContext/DeviceContext.h"
|
|
#include "Render/Text/TextContext.h"
|
|
#include "Resource/Bitmap/BitmapResource.h"
|
|
#include "Resource/ResourceMgr.h"
|
|
#include "Resource/TextureNames.h"
|
|
#include "UI/Text/TextFitting.h"
|
|
#include "UI/Text/TextWrapping.h"
|
|
#include "UI/Party/UIApplyForPartyWnd.h"
|
|
#include "UI/Buttons/UIBasicButton.h"
|
|
#include "UI/Buttons/UIBitmapButton.h"
|
|
#include "UI/Party/UIPartyInfoWnd.h"
|
|
#include "UI/Text/UIStaticText.h"
|
|
#include "UI/Window/WindowManagerWindows.h"
|
|
#include "Client/Mode/CMode.h"
|
|
#include "Client/Mode/ModeMgr.h"
|
|
|
|
#include <cstdio>
|
|
|
|
// OFFSET: 0x007BAD00
|
|
// FUNCTION: fn_09275
|
|
UIApplyForPartyWnd::UIApplyForPartyWnd()
|
|
: UIFrameWnd(0) {
|
|
}
|
|
|
|
UIApplyForPartyWnd::~UIApplyForPartyWnd() = default;
|
|
|
|
// OFFSET: 0x007C2400
|
|
// FUNCTION: fn_09325
|
|
void UIApplyForPartyWnd::Slot11() {
|
|
if (this->saved) {
|
|
this->saved->width = this->geometry.width;
|
|
this->saved->height = this->geometry.height;
|
|
this->saved->x = this->geometry.x;
|
|
this->saved->y = this->geometry.y;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x007BD970
|
|
// FUNCTION: fn_09299
|
|
void UIApplyForPartyWnd::Slot15(int, int) {
|
|
UIBasicButton* button = new UIBasicButton();
|
|
button->Configure(this->TextWidth(LookupMessage(3374), 0, 0, 12, 0, 0) + 10, LookupMessage(3374));
|
|
button->Move(51, 165);
|
|
button->SetId(381);
|
|
this->AddChild(button);
|
|
|
|
button = new UIBasicButton();
|
|
button->Configure(this->TextWidth(LookupMessage(3373), 0, 0, 12, 0, 0) + 10, LookupMessage(3373));
|
|
button->Move(108, 165);
|
|
button->SetId(271);
|
|
this->AddChild(button);
|
|
|
|
button = new UIBasicButton();
|
|
button->Configure(this->TextWidth(LookupMessage(3045), 0, 0, 12, 0, 0) + 10, LookupMessage(3045));
|
|
button->Move(173, 165);
|
|
button->SetId(201);
|
|
this->AddChild(button);
|
|
|
|
std::vector<std::string> lines;
|
|
WrapPlainText(LookupMessage(3370), lines, 40);
|
|
|
|
for (unsigned index = 0; index < lines.size(); ++index) {
|
|
auto* label = new UIStaticText();
|
|
label->SetSize(this->geometry.width - 18, 15);
|
|
label->Move(9, 136 + index * 12);
|
|
label->SetText(lines[index].c_str(), 0);
|
|
label->SetFont(0, 11, 0, 0);
|
|
label->SetColor(255, 0, 0);
|
|
this->AddChild(label);
|
|
}
|
|
|
|
this->AddBigCloseButton("", 0);
|
|
}
|
|
|
|
// OFFSET: 0x007C1D10
|
|
// FUNCTION: fn_09319
|
|
void UIApplyForPartyWnd::SetInfo(CAdvenPartyInfo value) {
|
|
this->info = value;
|
|
this->Invalidate();
|
|
}
|
|
|
|
// OFFSET: 0x007BF5A0
|
|
// FUNCTION: fn_09303
|
|
void UIApplyForPartyWnd::Paint() {
|
|
this->ClearSurface(0xFFFF00FF);
|
|
const auto* background = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\UIadventurerAgency\\bg_agency_register.bmp")));
|
|
this->DrawBitmap(0, 0, background ? &background->image : nullptr, false);
|
|
this->DrawTitleBar(true, LookupMessage(3368), 0);
|
|
const auto text = [&](int x, int y, const char* value) { this->DrawTextAt(x, y, value, 0, 0, 12, 0, 0, 0); };
|
|
text(10, 25, LookupMessage(3415));
|
|
const std::string fitted = FitText(*this->geometry.surface, this->info.characterName, 119);
|
|
text(60, 25, fitted.c_str());
|
|
text(10, 49, LookupMessage(408));
|
|
char levels[10] = {};
|
|
_snprintf_s(levels, sizeof(levels), _TRUNCATE, "%d~%d", this->info.minimumLevel, this->info.maximumLevel);
|
|
text(60, 49, levels);
|
|
text(10, 73, LookupMessage(3369));
|
|
text(60, 73, UIPartyInfoWnd::TypeName(this->info.type));
|
|
text(10, 97, LookupMessage(504));
|
|
const auto job = [&](int x, bool selected, const char* selectedImage, const char* unselectedImage) {
|
|
const auto* icon = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve(selected == 1 ? selectedImage : unselectedImage)));
|
|
this->DrawBitmap(x, 95, icon ? &icon->image : nullptr, false);
|
|
};
|
|
job(60, this->info.tanker, "유저인터페이스\\UIadventurerAgency\\btn_job_def_on.bmp", "유저인터페이스\\UIadventurerAgency\\btn_job_def_off.bmp");
|
|
job(78, this->info.healer, "유저인터페이스\\UIadventurerAgency\\btn_job_heal_on.bmp", "유저인터페이스\\UIadventurerAgency\\btn_job_heal_off.bmp");
|
|
job(96, this->info.dealer, "유저인터페이스\\UIadventurerAgency\\btn_job_atk_on.bmp", "유저인터페이스\\UIadventurerAgency\\btn_job_atk_off.bmp");
|
|
job(114, this->info.assist, "유저인터페이스\\UIadventurerAgency\\btn_job_buf_on.bmp", "유저인터페이스\\UIadventurerAgency\\btn_job_buf_off.bmp");
|
|
text(10, 121, LookupMessage(3359));
|
|
text(60, 121, this->info.memo.c_str());
|
|
}
|
|
|
|
// OFFSET: 0x007BFCC0
|
|
// FUNCTION: fn_09309
|
|
void UIApplyForPartyWnd::Slot28(int x, int y) {
|
|
if (static_cast<unsigned>(y) - 95u > 16u) {
|
|
return;
|
|
}
|
|
|
|
const unsigned mouseX = static_cast<unsigned>(x);
|
|
std::string label;
|
|
int left = 0;
|
|
|
|
if (mouseX > 60 && mouseX < 76) {
|
|
left = 60;
|
|
label = LookupMessage(3420);
|
|
} else if (mouseX > 78 && mouseX < 94) {
|
|
left = 78;
|
|
label = LookupMessage(3491);
|
|
} else if (mouseX > 96 && mouseX < 112) {
|
|
left = 96;
|
|
label = LookupMessage(3444);
|
|
} else if (mouseX > 114 && mouseX < 130) {
|
|
left = 114;
|
|
label = LookupMessage(3508);
|
|
}
|
|
|
|
if (!label.empty()) {
|
|
int screenX = left;
|
|
int screenY = 75;
|
|
this->ToScreen(screenX, screenY);
|
|
g_modeMgr.gameMode->ShowTooltip(label.c_str(), screenX, screenY, -1, false, true);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x007C11E0
|
|
// FUNCTION: fn_09313
|
|
int UIApplyForPartyWnd::SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) {
|
|
switch (message) {
|
|
case 6:
|
|
switch (static_cast<int>(a)) {
|
|
case 201:
|
|
g_windowMgr.CloseWindow(345);
|
|
break;
|
|
case 271:
|
|
g_adventurerAgencyMgr->RequestInfo(this->info.accountId);
|
|
break;
|
|
case 381: {
|
|
const std::string name = this->info.characterName;
|
|
const char* relationship = nullptr;
|
|
|
|
if (g_windowMgr.IsFriend(name.c_str())) {
|
|
relationship = LookupMessage(102);
|
|
}
|
|
|
|
const char* group = g_session.IsGuildMemberAccount(this->info.accountId) ? "GuildMember" : relationship;
|
|
std::string code;
|
|
code = ShortcutFilename(this->info.characterId);
|
|
g_windowMgr.SendNotice(14, reinterpret_cast<std::intptr_t>(name.c_str()), reinterpret_cast<std::intptr_t>(group), reinterpret_cast<std::intptr_t>(code.c_str()), 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
case 34:
|
|
this->saved = reinterpret_cast<ApplyForPartyWndInfo*>(a);
|
|
|
|
if (!this->saved->IsValid()) {
|
|
this->saved->Reset();
|
|
}
|
|
|
|
this->Move(this->saved->x, this->saved->y);
|
|
return 0;
|
|
default:
|
|
return this->UIFrameWnd::SendMsg(sender, message, a, b, c, d);
|
|
}
|
|
}
|