rodecomp/Source/Contents/SignBoard/SignBoard.cpp
ragnarok-clanker dc3d5ce1a5 Maintenance: Resubmission of 14942 (gate: three existing in-class helpers whose lines changed lacked an annotation; marked // INLINED
Batch #14943 by ragnarok-clanker: no function's compiled code changes; checked with 741 compiled unit(s), including every includer of Source/ActorPickNode.h, Source/Client/Browser/BrowserClientSite.h, Source/Client/Browser/BrowserPopupDispatch.h, Source/Client/Mode/CGameMode.h, Source/Client/Mode/CLoginMode.h, Source/Client/Mode/CMode.h, Source/Client/Mode/ModeDragState.h, Source/Client/Replay.h, Source/Client/Session.h, Source/Client/Stove/StoveMgr.h, Source/Contents/AchievementMgr.h, Source/Contents/ActorNameCard.h, Source/Contents/Actors/CharacterRender.h, Source/Contents/Actors/EffectActors.h, Source/Contents/Actors/GameActor.h, Source/Contents/Actors/GrannyGameActor.h, Source/Contents/Actors/GroundScope.h, Source/Contents/Actors/Item.h, Source/Contents/Actors/Npc.h, Source/Contents/Actors/Pc.h, Source/Contents/Actors/RenderObjectState.h, Source/Contents/Actors/Skill.h, Source/Contents/AdventureGuideMgr.h, Source/Contents/Camera/Camera.h, Source/Contents/Camera/CameraState.h, Source/Contents/CashEmotionMgr.h, Source/Contents/Configuration/GameSettingsMgr.h, Source/Contents/EffectResourceSwitcher.h, Source/Contents/Effects/AMachineEffect.h, Source/Contents/Effects/AcidifiedThrow.h, Source/Contents/Effects/AxeBoomerang.h, Source/Contents/Effects/BlastForge.h, Source/Contents/Effects/CaneOfEvilEyeEffect.h, Source/Contents/Effects/CharacterParticleBundle.h, Source/Contents/Effects/CloudKillEffect.h, Source/Contents/Effects/Effect.h, Source/Contents/Effects/EffectActor.h, Source/Contents/Effects/EffectEmitter.h, Source/Contents/Effects/EffectMaker.h, Source/Contents/Effects/EffectPrimitiveState.h, Source/Contents/Effects/FuumaShouakuEffect.h, Source/Contents/Effects/GravityControlEffect.h, Source/Contents/Effects/HealSpEffect.h, Source/Contents/Effects/Level99Effect.h, Source/Contents/Effects/MapChainEffect.h, Source/Contents/Effects/MonsterSkillEffects.h, Source/Contents/Effects/MsgEffect.h, Source/Contents/Effects/NyanggrassEffect.h, Source/Contents/Effects/Particle.h, Source/Contents/Effects/PowderingEffect.h, Source/Contents/Effects/RagEffectState.h, Source/Contents/Effects/RectUpEffect.h, Source/Contents/Effects/ShadowExceedEffect.h, Source/Contents/Effects/SkillEffects.h, Source/Contents/Effects/SpriteParticle.h, Source/Contents/Effects/StormCannonEffect.h, Source/Contents/Effects/ThrowEffects.h, Source/Contents/EntryQueueMgr.h, Source/Contents/EquipmentResourceMgr.h, Source/Contents/FlyingShipRouteInfo.h, Source/Contents/Ground/GroundGeometry.h, Source/Contents/GuildInfo.h, Source/Contents/Items/ItemDescription.h, Source/Contents/Items/ItemInfo.h, Source/Contents/MapSkyMgr.h, Source/Contents/Messenger/MessengerWindows.h, Source/Contents/Models/ModelNode.h, Source/Contents/NavigationManager.h, Source/Contents/Party/AdventurerAgencyMgr.h, Source/Contents/RDamageVar.h, Source/Contents/RenewQuestMgr.h, Source/Contents/ReputeMgr.h, Source/Contents/RodexMailStore.h, Source/Contents/RouletteMgr.h, Source/Contents/Schedule/Schedule.h, Source/Contents/SignBoard/SignBoard.h, Source/Contents/Skills/ClientSkills.h, Source/Contents/Skills/PlayerSkillBundle.h, Source/Contents/Skills/SkillInfo.h, Source/Contents/SpriteLayerDrawing.h, Source/Contents/TipBoxTitles.h, Source/Contents/UserData/AccountLinkedUserDataMgr.h, Source/Contents/UserData/NormalItemSlots.h, Source/Contents/World/World.h, Source/Contents/WorldView/WorldViewData.h, Source/Render/Primitives/LightmappedPrimitive.h, Source/Render/Primitives/RenderPrimitive.h, Source/Render/Renderer.h, Source/Render/Textures/SpritePixels.h, Source/Render/Textures/Texture.h, Source/Resource/EZeffectResource.h, Source/Resource/Models/AnimatedModelResource.h, Source/Resource/Models/GrannyModelResource.h, Source/Resource/Sprites/ActionResource.h, Source/Resource/World/GroundResource.h, Source/Resource/World/WorldResource.h, Source/Resource/XmlNode.h, Source/UI/AdventureGuide/UIAdventureGuide.h, Source/UI/Buttons/UIBmpRadioBtn.h, Source/UI/Buttons/UIDescriptRace.h, Source/UI/Buttons/UIItemTagButton.h, Source/UI/Buttons/UISlotBmpButton.h, Source/UI/Buttons/UISpriteButton.h, Source/UI/Buttons/UITVTextButton.h, Source/UI/Buttons/UITextureButton.h, Source/UI/CashEmotion/UICashEmotionListWnd.h, Source/UI/CashEmotion/UICashEmotionPack.h, Source/UI/CashShop/UICashShopWnd.h, Source/UI/Chat/UIChatRoomMakeWnd.h, Source/UI/Chat/UIChatRoomTitle.h, Source/UI/Chat/UINewChatWnd.h, Source/UI/Chat/UISubChatHisWnd.h, Source/UI/Chat/UISubChatMiniWnd.h, Source/UI/Chat/UIWhisperWnd.h, Source/UI/Clan/UIClanWnd.h, Source/UI/Dialogs/UIBookWnd.h, Source/UI/Dialogs/UIChooseWarpWnd.h, Source/UI/Dialogs/UIMenuWnd.h, Source/UI/Dialogs/UIMiniMapWnd.h, Source/UI/Dialogs/UIMinimapZoomWnd.h, Source/UI/Dialogs/UINpcEditDialogWnd.h, Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Dialogs/UISayDialogWnd.h, Source/UI/Dialogs/UISelectCartWnd.h, Source/UI/Dialogs/UITipboxWnd.h, Source/UI/Edit/UIEditBoxEx.h, Source/UI/Edit/UIEditCtrl.h, Source/UI/Edit/UIEditCtrl_Currency.h, Source/UI/Edit/UIItemTagCtrl.h, Source/UI/Enchant/EnchantUI.h, Source/UI/Exchange/UIExchangeUI.h, Source/UI/FrameSkin.h, Source/UI/GameSettings/GameSettingsUI.h, Source/UI/Gauges/UIPcGage.h, Source/UI/Guild/UIGuildHelperWnd.h, Source/UI/Guild/UIGuildWnd.h, Source/UI/Guild/UIGuild_Storage_Log.h, Source/UI/Item/UIEquipmentPropertiesWnd.h, Source/UI/Item/UIItemBaseWnd.h, Source/UI/Item/UIItemPurchaseWnd.h, Source/UI/Item/UIItemSellWnd2.h, Source/UI/Item/UIItemShopWnd.h, Source/UI/Item/UIItemShopWnd2.h, Source/UI/Item/UIItemStoreFindWnd.h, Source/UI/Item/UIItemStoreSubWnd.h, Source/UI/Item/UIItemStoreWnd.h, Source/UI/Item/UIItemWnd.h, Source/UI/Item/UIMerchantItemLogWnd.h, Source/UI/Item/UIParaItemShopWnd.h, Source/UI/Items/UICardItemIllustWnd.h, Source/UI/Items/UIEquipWnd.h, Source/UI/Items/UIExchangeWnd.h, Source/UI/Items/UIGameItem.h, Source/UI/Items/UIItemCollectionWnd.h, Source/UI/Items/UIItemIdentifyWnd.h, Source/UI/Items/UIItemParamChangeDisplayWnd.h, Source/UI/Items/UISwapEquipmentWnd.h, Source/UI/Layout/WindowGeometry.h, Source/UI/Lists/UIChatHisBox.h, Source/UI/Lists/UIComboBoxV2Wnd.h, Source/UI/Lists/UIImgMenu.h, Source/UI/Lists/UIListBoxID.h, Source/UI/Lists/UIListBoxTemplate.h, Source/UI/Lists/UIMemberListBox.h, Source/UI/Lists/UITabControl.h, Source/UI/Lists/UITagListBox.h, Source/UI/Lists/UITreeView.h, Source/UI/Menu/UIMenuIconWnd.h, Source/UI/Navigation/UINavigationV4Wnd.h, Source/UI/ProbabilityTable/UIProbabilityTable.h, Source/UI/Quest/UIQuestDisplay.h, Source/UI/Quest/UIRenewQuestUI.h, Source/UI/Quest/UIRenewQuestWnd.h, Source/UI/Rodex/UIRodexComposeWnd.h, Source/UI/Rodex/UIRodexInboxWnd.h, Source/UI/RuneSystem/UIRuneSystemWindows.h, Source/UI/RuneSystem/UIRuneSystemWnd.h, Source/UI/Shop/UIMerchantItemMyShopWnd.h, Source/UI/Shop/UIMerchantItemPurchaseMSGWnd.h, Source/UI/Shop/UIMerchantItemPurchaseWnd.h, Source/UI/Shop/UIMerchantItemShopWnd.h, Source/UI/Shop/UIMerchantMirrorItemWnd.h, Source/UI/Shop/UIMerchantShopMakeWnd.h, Source/UI/Shop/UIMerchantShopTitle.h, Source/UI/Skill/UISkillDescribeWnd.h, Source/UI/Skill/UISkillListWnd.h, Source/UI/SkillDelayInfo/SkillDelayInfo.h, Source/UI/StylingShop/UIStylingShopWnd.h, Source/UI/Text/CreateLineInfo.h, Source/UI/Text/UIAchWnd.h, Source/UI/Text/UIBalloonText.h, Source/UI/Text/UINameBalloonText.h, Source/UI/Text/UIStaticTextControl.h, Source/UI/Text/UIString.h, Source/UI/Text/UITextViewerControl.h, Source/UI/UIBarGraph.h, Source/UI/UIBartermarketWnd.h, Source/UI/UIChangeMaterialWnd.h, Source/UI/UIGradeEnchantWnd.h, Source/UI/UILapineScrollBar.h, Source/UI/UIMacroBlackListCheckWnd.h, Source/UI/UIMacroDetectorWnd.h, Source/UI/UIMacroReport.h, Source/UI/UIMacroUserInfoWnd.h, Source/UI/UIPreviewEquipWnd.h, Source/UI/UIRefiningWnd.h, Source/UI/UIScrollWnd.h, Source/UI/UISlotBitmap.h, Source/UI/Window/FuncDrawWNDChar.h, Source/UI/Window/UIBattleMsgOptionWnd.h, Source/UI/Window/UIChatRoomWnd.h, Source/UI/Window/UICollectionSystemWnd.h, Source/UI/Window/UIControl.h, Source/UI/Window/UIHomunInfoWnd.h, Source/UI/Window/UIHotKeyWnd.h, Source/UI/Window/UIJobListWnd.h, Source/UI/Window/UILoginOTPWnd.h, Source/UI/Window/UILoginWnd.h, Source/UI/Window/UIMakeCharWnd.h, Source/UI/Window/UIMonsterDisplayWnd.h, Source/UI/Window/UIMonsterInfoWnd.h, Source/UI/Window/UINavigationHelpWnd.h, Source/UI/Window/UINavigationWnd.h, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UINewSelectCharWnd.h, Source/UI/Window/UINoticeWnd.h, Source/UI/Window/UIPetInfoWnd.h, Source/UI/Window/UIRegisterMgr.h, Source/UI/Window/UIRoMapWnd.h, Source/UI/Window/UIRodexContentsWnd.h, Source/UI/Window/UISecondCostumeWnd.h, Source/UI/Window/UISeekPartyMBWnd.h, Source/UI/Window/UISeekPartyWnd.h, Source/UI/Window/UISelCharForUServerWnd.h, Source/UI/Window/UISerachStoreInfoWnd.h, Source/UI/Window/UITransMenuWnd.h, Source/UI/Window/UIWindow.h, Source/UI/Window/UIWindowMgr.h, Source/UI/Window/UIWindowMgr.inl, Source/Utility/Lexicon/LexiconSerializer.h.
2026-11-08 16:44:36 +00:00

408 lines
12 KiB
C++

#include "Contents/SignBoard/SignBoard.h"
#include "Client/Mode/CGameMode.h"
#include "Client/Mode/ModeMgr.h"
#include "Client/Session.h"
#include "Resource/World/TerrainResource.h"
#include "Contents/World/World.h"
#include "Network/TextEncoding.h"
#include "Render/Renderer.h"
#include "Render/SpriteGeometry.h"
#include "Resource/Bitmap/BitmapResource.h"
#include "Resource/ResourceMgr.h"
#include "Resource/Sprites/ActionResource.h"
#include "Resource/TextureNames.h"
#include "Script/LuaScript.h"
#include "UI/Buttons/UIButton.h"
#include "UI/Text/UIStaticText.h"
#include "UI/Window/UIWindowMgr.h"
#include <cstdlib>
#include <mbstring.h>
#include <new>
#include <windows.h>
#include <timeapi.h>
// GLOBAL: gl_24892
CSignBoardMgr* s_signBoardMgr = nullptr;
// OFFSET: 0x0081FC30
// FUNCTION: fn_10244
bool CreateSignBoardMgr() {
if (s_signBoardMgr == nullptr) {
s_signBoardMgr = new (std::nothrow) CSignBoardMgr();
if (s_signBoardMgr != nullptr) {
if (!s_signBoardMgr->initialized) {
delete s_signBoardMgr;
s_signBoardMgr = nullptr;
} else {
return true;
}
}
}
return false;
}
// OFFSET: 0x0081FE30
// FUNCTION: fn_10245
void DestroySignBoardMgr() {
if (s_signBoardMgr != nullptr) {
delete s_signBoardMgr;
s_signBoardMgr = nullptr;
}
}
// OFFSET: 0x0081FE50
// FUNCTION: fn_10246
void __fastcall InitializeSignBoardManager(CSignBoardMgr* manager) {
manager->LoadList();
manager->Initialize();
}
// OFFSET: 0x0081FE60
// FUNCTION: fn_10247
void CSignBoardMgr::Initialize() {
std::string mapName;
if (g_modeMgr.GetGameMode() != nullptr) {
mapName = std::string(static_cast<CGameMode*>(g_modeMgr.GetGameMode())->mapName);
}
mapName = mapName.substr(0, mapName.find(".rsw"));
for (std::vector<SignBoardInfo>::iterator it = this->m_entries.begin(); it != this->m_entries.end(); ++it) {
std::string entryMap(it->map);
LowercaseText(entryMap);
LowercaseText(mapName);
if (entryMap != mapName) {
continue;
}
switch (it->type) {
case 1: {
C3DCooRendering* object = new C3DCooRendering();
object->type = it->type;
object->Create();
std::string image;
if (_mbsstr(reinterpret_cast<const unsigned char*>(it->image), reinterpret_cast<const unsigned char*>("유저인터페이스")) == nullptr) {
image = "유저인터페이스\\";
}
image += it->image;
object->SetWindowImage(image);
vector3d position = {0.0f, 0.0f, 0.0f};
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->CellCenter(it->column, it->row, position.x, position.z);
position.y = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->terrain->Height(position.x, position.z) -
static_cast<float>(it->offset);
object->render.position = position;
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->objects.push_back(object);
break;
}
case 2: {
CIcon* icon = new CIcon();
vector3d position = {0.0f, 0.0f, 0.0f};
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->CellCenter(it->column, it->row, position.x, position.z);
position.y = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->terrain->Height(position.x, position.z) -
static_cast<float>(it->offset);
icon->render.position = position;
icon->Load(std::string(it->image));
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->objects.push_back(icon);
break;
}
case 3: {
C3DCooRendering* object = new C3DCooRendering();
object->type = it->type;
object->Create();
std::string image;
if (_mbsstr(reinterpret_cast<const unsigned char*>(it->image), reinterpret_cast<const unsigned char*>("유저인터페이스")) == nullptr) {
image = "유저인터페이스\\";
}
image += it->image;
object->SetWindowImage(image);
object->SetBoard(std::string(it->text), std::string(it->color));
vector3d position = {0.0f, 0.0f, 0.0f};
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->CellCenter(it->column, it->row, position.x, position.z);
position.y = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->terrain->Height(position.x, position.z) -
static_cast<float>(it->offset);
object->render.position = position;
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->objects.push_back(object);
break;
}
}
}
}
// OFFSET: 0x00820BD0
// FUNCTION: fn_10248
void CSignBoardMgr::LoadList() {
SignBoardInfo defaults;
g_session.m_hotkeyScript->Call(
"GetSignBoardListTable", "d>sddddsss", 1, &defaults.map, &defaults.column, &defaults.row, &defaults.offset, &defaults.type, &defaults.image,
&defaults.text, &defaults.color
);
int count = 0;
g_session.m_hotkeyScript->Call("GetTableSizeForC", "s>d", "SignBoardList", &count);
for (int index = 2; index < count + 1; ++index) {
SignBoardInfo info;
g_session.m_hotkeyScript->Call(
"GetSignBoardListTable", "d>sddddsss", index, &info.map, &info.column, &info.row, &info.offset, &info.type, &info.image, &info.text,
&info.color
);
switch (info.type) {
case 2:
info.type = 2;
break;
case 3:
info.type = 3;
if (info.text == nullptr) {
info.text = defaults.text;
}
if (info.color == nullptr) {
info.color = defaults.color;
}
break;
case 1:
default:
info.type = 1;
break;
}
if (info.image == nullptr) {
info.image = defaults.image;
}
info.offset -= 3;
this->m_entries.push_back(info);
}
}
// OFFSET: 0x00821040
// FUNCTION: fn_10254
C3DCooRendering::C3DCooRendering() : window(nullptr) {
}
// OFFSET: 0x008210A0
// FUNCTION: fn_10255
CBmpObjWnd::CBmpObjWnd() : UIWindow(0) {
}
// OFFSET: 0x00821120
// FUNCTION: fn_10256
CIcon::CIcon() {
}
// OFFSET: 0x00821180
// FUNCTION: fn_10257
CSignBoardWnd::CSignBoardWnd() : UIWindow(0) {
}
// OFFSET: 0x008213D0
// FUNCTION: fn_10258
C3DCooRendering::~C3DCooRendering() = default;
// OFFSET: 0x00821440
// FUNCTION: fn_10259
CBmpObjWnd::~CBmpObjWnd() = default;
// OFFSET: 0x008214C0
// FUNCTION: fn_10260
CIcon::~CIcon() = default;
// OFFSET: 0x00821530
// FUNCTION: fn_10261
CSignBoardWnd::~CSignBoardWnd() = default;
// OFFSET: 0x008215D0
// FUNCTION: fn_10262
void CSignBoardWnd::ApplyColor() {
int red = 0;
int green = 0;
int blue = 0;
if (this->colorText.size() != 0) {
int values[3] = {0, 0, 0};
int index = 0;
std::string rest = this->colorText;
std::string token = this->colorText;
std::size_t comma = this->colorText.find(",");
if (comma != std::string::npos) {
while (comma != std::string::npos) {
token = rest.substr(0, comma);
values[index] = std::atoi(token.c_str());
index += 1;
rest = rest.substr(comma + 1);
comma = rest.find(",");
}
values[index] = std::atoi(rest.c_str());
}
red = values[0];
green = values[1];
blue = values[2];
if (this->colorText.find("#") != std::string::npos) {
std::string hex = this->colorText;
hex = hex.substr(hex.find("#") + 1);
const unsigned long color = std::strtoul(hex.c_str(), nullptr, 16);
red = static_cast<int>((color >> 16) & 0xff);
green = static_cast<int>((color >> 8) & 0xff);
blue = static_cast<int>(color & 0xff);
}
}
this->text->SetColor(red, green, blue);
}
// OFFSET: 0x00821B40
// FUNCTION: fn_10263
void CBmpObjWnd::OnCreate(int width, int height) {
}
// OFFSET: 0x00821B50
// FUNCTION: fn_10264
void CSignBoardWnd::OnCreate(int width, int height) {
CBitmapRes* bitmap = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\signboard\\bg_signboard.bmp")));
this->Resize(bitmap->image.width, bitmap->image.height);
this->text = new (std::nothrow) UIStaticText();
this->text->SetSize(0x7e, 0xe);
this->text->Move(0x1e, this->geometry.height / 2 - 7);
this->text->SetTextFitted("");
this->text->SetFont(0, 12, 0, 0);
this->text->SetColor(0x9e, 0xbd, 0xff);
this->AddChild(this->text);
}
// OFFSET: 0x00821C50
// FUNCTION: fn_10265
void CBmpObjWnd::Paint() {
this->DrawBitmap(0, 0, static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve(this->path.c_str()))), false);
}
// OFFSET: 0x00821C90
// FUNCTION: fn_10266
void CSignBoardWnd::Paint() {
this->ClearSurface(0xFFFF00FF);
this->DrawBitmap(0, 0, static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\signboard\\bg_signboard.bmp"))), false);
this->DrawBitmap(5, 5, static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve(this->iconPath.c_str()))), true);
}
// OFFSET: 0x00821D10
// FUNCTION: fn_10267
void C3DCooRendering::Create() {
UIWindow* window;
int width;
int height;
switch (this->type) {
case 1:
window = new (std::nothrow) CBmpObjWnd();
width = 0xaa;
height = 0xaa;
break;
case 3:
window = new (std::nothrow) CSignBoardWnd();
width = 0xa2;
height = 0x24;
break;
default:
return;
}
this->window = window;
window->SetSize(width, height);
g_windowMgr.AddRenderedFront(this->window);
}
// OFFSET: 0x00821EC0
// FUNCTION: fn_10268
void C3DCooRendering::SetOverrideColor() {
this->render.overrideColor = 0xFFFFFF00;
}
// OFFSET: 0x00821ED0
// FUNCTION: fn_10269
bool C3DCooRendering::OnProcess() {
if (UIWindow* window = this->window) {
const int lift = g_renderer->viewport.height * 81 / 480;
window->Move(
this->render.screenX - window->geometry.width / 2,
static_cast<int>(static_cast<float>(this->render.screenY - window->geometry.height / 2) - static_cast<float>(lift) * this->render.distanceScale)
);
}
return true;
}
// OFFSET: 0x00821F50
// FUNCTION: fn_10270
bool CIcon::OnProcess() {
const float frame = static_cast<float>(static_cast<double>(timeGetTime() - this->render.motionStartTime) / 24.0);
this->render.previousAnimation = this->render.animation;
this->render.curMotion = static_cast<int>(frame / this->render.speed) % static_cast<int>(this->GetActRes()->FrameCount(this->render.previousAnimation));
return true;
}
// OFFSET: 0x00821FC0
// FUNCTION: fn_10271
void C3DCooRendering::Render(int argument) {
float x;
float y;
float reciprocalDepth;
g_renderer->ProjectViewport(&this->render.position.x, reinterpret_cast<const float*>(argument), &x, &y, &reciprocalDepth);
this->render.distanceScale = g_renderer->ScaleDistance(reciprocalDepth) / g_heightScale;
this->SetTlvert(x, y);
}
// OFFSET: 0x00822040
// FUNCTION: fn_10272
void CIcon::Render(int argument) {
this->DrawSprite(argument, false, 0.0f);
}
// OFFSET: 0x008220A0
// FUNCTION: fn_10273
void CIcon::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) {
g_modeMgr.GetGameMode();
this->CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
}
// OFFSET: 0x008220F0
// FUNCTION: fn_10274
void CIcon::SetRenderInfo(const float* bounds, float x, float y) {
this->SetTlvert(x, y);
}
// OFFSET: 0x00822140
// FUNCTION: fn_10275
void CIcon::Load(const std::string& name) {
std::string stem;
if (name.find(".") != std::string::npos) {
stem = name.substr(0, name.find("."));
}
this->SetSpriteName(ResourceMgr::Instance(), (stem + ".spr").c_str());
this->SetActionName(ResourceMgr::Instance(), (stem + ".act").c_str());
this->SetAction(0, 10, 0);
}
// OFFSET: 0x00822310
// FUNCTION: fn_10276
void C3DCooRendering::SetBoard(const std::string& text, const std::string& color) {
static_cast<CSignBoardWnd*>(this->window)->boardText = text;
static_cast<CSignBoardWnd*>(this->window)->colorText = color;
CSignBoardWnd* board = static_cast<CSignBoardWnd*>(this->window);
board->ApplyColor();
board->text->SetTextFitted(board->boardText.c_str());
}
// OFFSET: 0x00822390
// FUNCTION: fn_10277
void C3DCooRendering::SetWindowImage(const std::string& name) {
if (this->window == nullptr) {
return;
}
switch (this->type) {
case 1: {
CBmpObjWnd* window = static_cast<CBmpObjWnd*>(this->window);
window->path = name;
const CBitmapRes* bitmap = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve(window->path.c_str())));
window->Resize(bitmap->image.width, bitmap->image.height);
break;
}
case 3:
static_cast<CSignBoardWnd*>(this->window)->iconPath = name;
break;
}
}