rodecomp/Source/UI/Navigation/UINavigationWnd.cpp
ragnarok-clanker 0f561a5dca Maintenance: Source reorganisation, parts 2+3: Source/UI, Client, Render, Resource, Utility, Network, Archive, Interface and loose So
Batch #16644 by ragnarok-clanker: no function's compiled code changes; checked with 593 compiled unit(s), including every includer of Source/Client/Application/Registry.h, Source/Client/Application/RegistryKey.h, Source/Client/Application/Timer.h, Source/Client/Mode/ModeFade.h, Source/Client/Mode/ModeFadeOut.h, Source/Client/Mode/ModeScreenshot.h, Source/Client/Replay/Replay.h, Source/Client/Replay/ReplayRecordOption.h, Source/Client/Session/Session.h, Source/Contents/Actors/ActorPickNode.h, Source/Contents/Effects/Core/RagEffectState.h, Source/Contents/Effects/Particles/Particle.h, Source/Contents/Movies/BinkMovie.h, Source/Contents/Sprites/SpriteLayerDrawing.h, Source/File/NFileLog.h, Source/Network/NIPAddr.h, Source/Network/Packets/ActorNamePacket.h, Source/Network/Packets/ClientKeepalive.h, Source/Network/Packets/ClientOptionPacket.h, Source/Network/Packets/ExecutableDigestPacket.h, Source/Network/Packets/GameTickPacket.h, Source/Render/DX7/QueuedDrawingDX7.h, Source/Render/DX7/RendererDX7.h, Source/Render/DX9/RenderSystemDX9.h, Source/Render/Device/DeviceSelection.h, Source/Render/Device/Direct3DErrors.h, Source/Render/Device/DisplayMode.h, Source/Render/Device/RenderAdapter.h, Source/Render/Device/RenderBackends.h, Source/Render/Drawing/ActionSpriteDrawing.h, Source/Render/Drawing/BitmapDrawing.h, Source/Render/Drawing/BlendColor.h, Source/Render/Drawing/SpriteGeometry.h, Source/Render/Drawing/TextureStageModes.h, Source/Render/Primitives/AuxiliarySubmission.h, Source/Render/Primitives/SpriteQuad.h, Source/Render/Primitives/TextureQuad.h, Source/Render/Projection/ScreenGeometry.h, Source/Render/Projection/ScreenRectangle.h, Source/Resource/Audio/BinkRuntime.h, Source/Resource/Bitmap/EmblemResource.h, Source/Resource/Bitmap/GifLzw.h, Source/Resource/Bitmap/GifResource.h, Source/Resource/Bitmap/PaletteResource.h, Source/Resource/Bitmap/SkinPalette.h, Source/Resource/Bitmap/TextureNames.h, Source/Resource/Effects/EZeffectResource.h, Source/Resource/Json/JsonCppLoader.h, Source/Resource/Models/RmaResource.h, Source/Resource/Sprites/ImfResource.h, Source/Resource/Xml/XmlNode.h, Source/Security/FileSignatureVerifier.h, Source/Security/ProcessSecurity.h, Source/UI/Achievement/UIAchWnd.h, Source/UI/AdventureGuide/UIAdventureGuide.h, Source/UI/Buttons/UIBalloonOpenBtn.h, Source/UI/Buttons/UIMiniBtnWnd.h, Source/UI/Buttons/UISlotBitmap.h, Source/UI/Buttons/UIStaticBitmap.h, Source/UI/Buttons/UIStaticItem.h, Source/UI/Buttons/UIWindowCallBtnWnd.h, Source/UI/CashEmotion/UICashEmotionSprBtn.h, Source/UI/CashShop/UIMileageWnd.h, Source/UI/CashShop/UIPayConfirmWnd.h, Source/UI/Chat/UIChatRoomWnd.h, Source/UI/Dialogs/UIAccountLimitedToolWnd.h, Source/UI/Dialogs/UICntWnd.h, Source/UI/Dialogs/UILoadingWnd.h, Source/UI/Dialogs/UIMessageBox.h, Source/UI/Dialogs/UIMessageBoxAutoreturn.h, Source/UI/Dialogs/UINormalMB.h, Source/UI/Dialogs/UINoteWnd.h, Source/UI/Dialogs/UINoticeWnd.h, Source/UI/Dialogs/UIRPImageWnd.h, Source/UI/Dialogs/UIRPImageWnd2.h, Source/UI/Dialogs/UITalkboxTrapInputWnd.h, Source/UI/Dialogs/UITransMenuWnd.h, Source/UI/Dialogs/UIVideoWnd.h, Source/UI/Dialogs/UIWordDisplayWnd.h, Source/UI/Edit/UIItemTagCtrl.h, Source/UI/Enchant/EnchantUI.h, Source/UI/Events/UICheckAttendanceWnd.h, Source/UI/Events/UIOpenRoulletteWnd.h, Source/UI/Events/UIRoulletteWnd.h, Source/UI/Exchange/UIExchangeUI.h, Source/UI/GameSettings/GameSettingsUI.h, Source/UI/GameSettings/UIBattleMsgOptionWnd.h, Source/UI/GameSettings/UIEscOptionWnd.h, Source/UI/GameSettings/UIHotKeyWnd.h, Source/UI/GameSettings/UIHotkeyGuideWnd.h, Source/UI/GameSettings/UIViewCameraInfoWnd.h, Source/UI/Gauges/UIBarGraph.h, Source/UI/Guild/UIEmblemWnd.h, Source/UI/Guild/UIGuildWnd.h, Source/UI/Items/UIChangeMaterialWnd.h, Source/UI/Items/UICollectionSystemWnd.h, Source/UI/Items/UIEquipmentPropertiesWnd.h, Source/UI/Items/UIGradeEnchantWnd.h, Source/UI/Items/UIIngredientInfoWnd.h, Source/UI/Items/UIItemBaseWnd.h, Source/UI/Items/UIItemCollectionWnd.h, Source/UI/Items/UIItemMoveInfo.h, Source/UI/Items/UIItemPurchaseWnd.h, Source/UI/Items/UIItemReformWnd.h, Source/UI/Items/UIItemSellWnd.h, Source/UI/Items/UIItemSellWnd2.h, Source/UI/Items/UIItemShopWnd.h, Source/UI/Items/UIItemShopWnd2.h, Source/UI/Items/UIItemStoreComboBox.h, Source/UI/Items/UIItemStoreFindWnd.h, Source/UI/Items/UIItemStoreSubWnd.h, Source/UI/Items/UIItemStoreWnd.h, Source/UI/Items/UIItemWnd.h, Source/UI/Items/UILapineScrollBar.h, Source/UI/Items/UILapineUpgradeBoxWnd.h, Source/UI/Items/UIMerchantItemLogWnd.h, Source/UI/Items/UIParaItemShopWnd.h, Source/UI/Items/UIPreviewEquipWnd.h, Source/UI/Items/UIRefiningWnd.h, Source/UI/Items/UISecondCostumeWnd.h, Source/UI/Items/UISelectCartWnd.h, Source/UI/Lists/UIComboBoxEx.h, Source/UI/Lists/UIScrollBarVariants.h, Source/UI/Lists/UIScrollWnd.h, Source/UI/Lists/UITagListBox.h, Source/UI/Login/FuncDrawWNDChar.h, Source/UI/Login/UIChangeNameWnd.h, Source/UI/Login/UIDescriptRace.h, Source/UI/Login/UIEmailAddressWnd.h, Source/UI/Login/UILoginOTPWnd.h, Source/UI/Login/UILoginWnd.h, Source/UI/Login/UIMakeCharWnd.h, Source/UI/Login/UINewMakeCharWnd.h, Source/UI/Login/UINewSelectCharWnd.h, Source/UI/Login/UIPasswordWnd.h, Source/UI/Login/UISecondPasswordEditWnd.h, Source/UI/Login/UISelCharForUServerWnd.h, Source/UI/Login/UISelectServerWnd.h, Source/UI/Login/UIWaitDBSaveWnd.h, Source/UI/Macro/UICaptchaPreviewWnd.h, Source/UI/Macro/UICaptchaRegisterWnd.h, Source/UI/Macro/UIMacroBlackListCheckWnd.h, Source/UI/Macro/UIMacroDetectorWnd.h, Source/UI/Macro/UIMacroReport.h, Source/UI/Macro/UIMacroUserInfoWnd.h, Source/UI/Monster/UIMonsterDisplayWnd.h, Source/UI/Monster/UIMonsterInfoWnd.h, Source/UI/Navigation/NavigationLink.h, Source/UI/Navigation/UIChooseWarpWnd.h, Source/UI/Navigation/UIListBoxNavi.h, Source/UI/Navigation/UIListBoxNaviSearch.h, Source/UI/Navigation/UIMemorialDunWnd.h, Source/UI/Navigation/UIMiniMapWnd.h, Source/UI/Navigation/UIMinimapZoomWnd.h, Source/UI/Navigation/UINavigationHelpWnd.h, Source/UI/Navigation/UINavigationWnd.h, Source/UI/Navigation/UIRoMapWnd.h, Source/UI/Navigation/UIScrollBarNavi.h, Source/UI/Navigation/UIShowWarpWnd.h, Source/UI/Party/MiniPartyGrid.h, Source/UI/Party/MiniPartyPlacement.h, Source/UI/Party/MiniPartyWndAreaMgr.h, Source/UI/Party/UIJobSlotButton.h, Source/UI/Party/UIPartyBookingHelpWnd.h, Source/UI/Party/UISeekPartyListWnd.h, Source/UI/Party/UISeekPartyMBWnd.h, Source/UI/Party/UISeekPartyWnd.h, Source/UI/ProbabilityTable/UIProbabilityTable.h, Source/UI/Quest/UINotifyQuestWnd.h, Source/UI/Quest/UIOngoingQuestInfo.h, Source/UI/Quest/UIRecommendedQuestInfo.h, Source/UI/Quest/UIRenewQuestUI.h, Source/UI/Quest/UIRenewQuestWnd.h, Source/UI/Replay/UIReplayButton.h, Source/UI/Replay/UIReplayControlWnd.h, Source/UI/Replay/UIReplayListBox.h, Source/UI/Replay/UIReplayRECControlWnd.h, Source/UI/Replay/UISelectReplayDataWnd.h, Source/UI/Repute/UIReputeWnd.h, Source/UI/Rodex/UIOpenMailBoxWnd.h, Source/UI/Rodex/UIRodexContentsWnd.h, Source/UI/Rodex/UIRodexInboxWnd.h, Source/UI/RuneSystem/UIRuneSystemWindows.h, Source/UI/RuneSystem/UIRuneSystemWnd.h, Source/UI/SelectPackageItemBox/SelectPackageItemBox.h, Source/UI/SelectPackageItemBox/UIPackageBoxNameList.h, Source/UI/Shop/PriceCommission.h, Source/UI/Shop/UIBank_NewWnd.h, Source/UI/Shop/UIBartermarketWnd.h, Source/UI/Shop/UIMerchantItemMyShopWnd.h, Source/UI/Shop/UIMerchantItemPurchaseWnd.h, Source/UI/Shop/UIMerchantItemShopWnd.h, Source/UI/Shop/UIMerchantItemWnd.h, Source/UI/Shop/UIMerchantMirrorItemWnd.h, Source/UI/Shop/UISerachStoreInfoWnd.h, Source/UI/Shop/UInCash_CallWnd.h, Source/UI/Skill/UIDebuffRemoveWnd.h, Source/UI/Skill/UIGraffiStrboxWnd.h, Source/UI/Skill/UINewSkillListWnd.h, Source/UI/SkillDelayInfo/SkillDelayInfo.h, Source/UI/Status/UIBasicInfoWnd.h, Source/UI/Status/UIHomunInfoWnd.h, Source/UI/Status/UIJobListWnd.h, Source/UI/Status/UIMerInfoWnd.h, Source/UI/Status/UIPetEvolutionWnd.h, Source/UI/Status/UIPetInfoWnd.h, Source/UI/Status/UIPetTamingDeceiveWnd.h, Source/UI/Status/UIRebirthWnd.h, Source/UI/StylingShop/UIStylingShopWnd.h, Source/UI/Text/TextTags.h, Source/UI/Text/UIBroadcastBalloon.h, Source/UI/Text/UIRoundBoxTooltipWnd.h, Source/UI/Window/FrameSkin.h, Source/UI/Window/UIBasicCtrl.h, Source/UI/Window/UIControl.h, Source/UI/Window/UIWindowMgr.inl, Source/Utility/Cipher/EncryptedName.h, Source/Utility/Hash/CRC32.h, Source/Utility/Hash/GGHash.h, Source/Utility/Hash/GGHashMgr.h, Source/Utility/Hash/Md5State.h, Source/Utility/Hash/SHA3.h, Source/Utility/Hash/XxHash3.h, Source/Utility/Text/GuidParse.h, Source/Utility/Text/Tokenizer.h, Source/Utility/Zlib.h, Source/ActorPickNode.h, Source/Client/ModeFade.h, Source/Client/ModeFadeOut.h, Source/Client/ModeScreenshot.h, Source/Client/Registry.h, Source/Client/Replay.h, Source/Client/ReplayRecordOption.h, Source/Client/Session.h, Source/Client/Timer.h, Source/Network/ActorNamePacket.h, Source/Network/ClientKeepalive.h, Source/Network/ClientOptionPacket.h, Source/Network/ExecutableDigestPacket.h, Source/Network/GameTickPacket.h, Source/Render/ActionSpriteDrawing.h, Source/Render/AuxiliarySubmission.h, Source/Render/BitmapDrawing.h, Source/Render/BlendColor.h, Source/Render/DeviceSelection.h, Source/Render/Direct3DErrors.h, Source/Render/DisplayMode.h, Source/Render/RenderAdapter.h, Source/Render/RenderBackends.h, Source/Render/RendererDX7.h, Source/Render/ScreenGeometry.h, Source/Render/ScreenRectangle.h, Source/Render/SpriteGeometry.h, Source/Render/SpriteQuad.h, Source/Render/TextureQuad.h, Source/Render/TextureStageModes.h, Source/Resource/BinkRuntime.h, Source/Resource/EZeffectResource.h, Source/Resource/EmblemResource.h, Source/Resource/GifLzw.h, Source/Resource/GifResource.h, Source/Resource/ImfResource.h, Source/Resource/PaletteResource.h, Source/Resource/RmaResource.h, Source/Resource/SkinPalette.h, Source/Resource/TextureNames.h, Source/Resource/XmlNode.h, Source/UI/Buttons/UICashEmotionSprBtn.h, Source/UI/Buttons/UIDescriptRace.h, Source/UI/Buttons/UIItemMoveInfo.h, Source/UI/Buttons/UIJobSlotButton.h, Source/UI/Buttons/UIReplayButton.h, Source/UI/Dialogs/UIChooseWarpWnd.h, Source/UI/Dialogs/UIEmailAddressWnd.h, Source/UI/Dialogs/UIGraffiStrboxWnd.h, Source/UI/Dialogs/UIMemorialDunWnd.h, Source/UI/Dialogs/UIMiniMapWnd.h, Source/UI/Dialogs/UIMinimapZoomWnd.h, Source/UI/Dialogs/UINotifyQuestWnd.h, Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Dialogs/UIPetTamingDeceiveWnd.h, Source/UI/Dialogs/UISecondPasswordEditWnd.h, Source/UI/Dialogs/UISelectCartWnd.h, Source/UI/Dialogs/UIWaitDBSaveWnd.h, Source/UI/FrameSkin.h, Source/UI/Item/UIEquipmentPropertiesWnd.h, Source/UI/Item/UIItemBaseWnd.h, Source/UI/Item/UIItemPurchaseWnd.h, Source/UI/Item/UIItemSellWnd.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/Lists/UIItemStoreComboBox.h, Source/UI/Lists/UIListBoxNavi.h, Source/UI/Lists/UIListBoxNaviSearch.h, Source/UI/Lists/UIPackageBoxNameList.h, Source/UI/Lists/UIReplayListBox.h, Source/UI/Lists/UIScrollBarNavi.h, Source/UI/MiniPartyGrid.h, Source/UI/MiniPartyPlacement.h, Source/UI/PriceCommission.h, Source/UI/Text/NavigationLink.h, Source/UI/Text/UIAchWnd.h, Source/UI/TextTags.h, Source/UI/UIBarGraph.h, Source/UI/UIBartermarketWnd.h, Source/UI/UIBasicCtrl.h, Source/UI/UIBroadcastBalloon.h, Source/UI/UICaptchaPreviewWnd.h, Source/UI/UICaptchaRegisterWnd.h, Source/UI/UIChangeMaterialWnd.h, Source/UI/UICheckAttendanceWnd.h, Source/UI/UIGradeEnchantWnd.h, Source/UI/UIHotkeyGuideWnd.h, Source/UI/UIIngredientInfoWnd.h, Source/UI/UIItemReformWnd.h, Source/UI/UILapineScrollBar.h, Source/UI/UILapineUpgradeBoxWnd.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/UIReputeWnd.h, Source/UI/UIRoundBoxTooltipWnd.h, Source/UI/UIScrollWnd.h, Source/UI/UISlotBitmap.h, Source/UI/UIStaticBitmap.h, Source/UI/UIStaticItem.h, Source/UI/Window/FuncDrawWNDChar.h, Source/UI/Window/MiniPartyWndAreaMgr.h, Source/UI/Window/UIAccountLimitedToolWnd.h, Source/UI/Window/UIBalloonOpenBtn.h, Source/UI/Window/UIBank_NewWnd.h, Source/UI/Window/UIBasicInfoWnd.h, Source/UI/Window/UIBattleMsgOptionWnd.h, Source/UI/Window/UIChangeNameWnd.h, Source/UI/Window/UIChatRoomWnd.h, Source/UI/Window/UICntWnd.h, Source/UI/Window/UICollectionSystemWnd.h, Source/UI/Window/UIDebuffRemoveWnd.h, Source/UI/Window/UIEmblemWnd.h, Source/UI/Window/UIEscOptionWnd.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/UIMerInfoWnd.h, Source/UI/Window/UIMessageBox.h, Source/UI/Window/UIMessageBoxAutoreturn.h, Source/UI/Window/UIMileageWnd.h, Source/UI/Window/UIMiniBtnWnd.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/UINewSkillListWnd.h, Source/UI/Window/UINormalMB.h, Source/UI/Window/UINoteWnd.h, Source/UI/Window/UINoticeWnd.h, Source/UI/Window/UIOpenMailBoxWnd.h, Source/UI/Window/UIOpenRoulletteWnd.h, Source/UI/Window/UIPartyBookingHelpWnd.h, Source/UI/Window/UIPayConfirmWnd.h, Source/UI/Window/UIPetEvolutionWnd.h, Source/UI/Window/UIPetInfoWnd.h, Source/UI/Window/UIRPImageWnd.h, Source/UI/Window/UIRPImageWnd2.h, Source/UI/Window/UIRebirthWnd.h, Source/UI/Window/UIReplayControlWnd.h, Source/UI/Window/UIReplayRECControlWnd.h, Source/UI/Window/UIRoMapWnd.h, Source/UI/Window/UIRodexContentsWnd.h, Source/UI/Window/UIRoulletteWnd.h, Source/UI/Window/UISecondCostumeWnd.h, Source/UI/Window/UISeekPartyListWnd.h, Source/UI/Window/UISeekPartyMBWnd.h, Source/UI/Window/UISeekPartyWnd.h, Source/UI/Window/UISelCharForUServerWnd.h, Source/UI/Window/UISelectReplayDataWnd.h, Source/UI/Window/UISelectServerWnd.h, Source/UI/Window/UISerachStoreInfoWnd.h, Source/UI/Window/UIShowWarpWnd.h, Source/UI/Window/UITalkboxTrapInputWnd.h, Source/UI/Window/UITransMenuWnd.h, Source/UI/Window/UIVideoWnd.h, Source/UI/Window/UIViewCameraInfoWnd.h, Source/UI/Window/UIWindowCallBtnWnd.h, Source/UI/Window/UIWordDisplayWnd.h, Source/Utility/CRC32.h, Source/Utility/Compression/Zlib.h, Source/Utility/EncryptedName.h, Source/Utility/FileSignatureVerifier.h, Source/Utility/GGHash.h, Source/Utility/GGHashMgr.h, Source/Utility/GuidParse.h, Source/Utility/JsonCppLoader.h, Source/Utility/Md5State.h, Source/Utility/NFileLog.h, Source/Utility/NIPAddr.h, Source/Utility/ProcessSecurity.h, Source/Utility/RegistryKey.h, Source/Utility/SHA3.h, Source/Utility/Tokenizer.h, Source/Utility/XxHash3.h.
Adds to the build: Source/Client/Application/ClientOptions.cpp, Source/Client/Application/Registry.cpp, Source/Client/Application/RegistryKey.cpp, Source/Client/Application/Timer.cpp, Source/Client/Mode/EntityInit.cpp, Source/Client/Mode/ModeBaseEvents.cpp, Source/Client/Mode/ModeCursorDrawing.cpp, Source/Client/Mode/ModeFade.cpp, Source/Client/Mode/ModeFadeOut.cpp, Source/Client/Mode/ModeScreenshot.cpp, Source/Client/Mode/ModeTransitions.cpp, Source/Client/Replay/Replay.cpp, Source/Client/Replay/ReplayControl.cpp, Source/Client/Replay/ReplayPacketRecorder.cpp, Source/Client/Session/Session.cpp, Source/Client/Session/SessionAchievements.cpp, Source/Client/Session/SessionParty.cpp, Source/Client/Session/SessionPredicates.cpp, Source/Client/Session/SessionState.cpp, Source/Contents/Actors/ActorPickNode.cpp, Source/File/NFileLog.cpp, Source/Network/NIPAddr.cpp, Source/Network/Packets/ActorNamePacket.cpp, Source/Network/Packets/ClientKeepalive.cpp, Source/Network/Packets/ClientOptionPacket.cpp, Source/Network/Packets/ExecutableDigestPacket.cpp, Source/Network/Packets/GameTickPacket.cpp, Source/Render/DX7/AlphaQueuesDX7.cpp, Source/Render/DX7/AuxiliaryQueuesDX7.cpp, Source/Render/DX7/OpaqueQueuesDX7.cpp, Source/Render/DX7/RendererDX7.cpp, Source/Render/DX9/DeviceCapabilitiesDX9.cpp, Source/Render/Device/DeviceSelection.cpp, Source/Render/Device/Direct3DErrors.cpp, Source/Render/Device/DisplayMode.cpp, Source/Render/Device/RenderAdapter.cpp, Source/Render/Device/RenderBackends.cpp, Source/Render/Drawing/ActionSpriteDrawing.cpp, Source/Render/Drawing/BitmapDrawing.cpp, Source/Render/Drawing/BlendColor.cpp, Source/Render/Drawing/SpriteGeometry.cpp, Source/Render/Primitives/AlphaRectangle.cpp, Source/Render/Primitives/AuxiliarySubmission.cpp, Source/Render/Primitives/SpriteQuad.cpp, Source/Render/Primitives/TextureQuad.cpp, Source/Render/Primitives/UIRPDataDrawing.cpp, Source/Render/Projection/ScreenGeometry.cpp, Source/Render/Projection/ScreenRectangle.cpp, Source/Render/Projection/ViewportProjection.cpp, Source/Resource/Bitmap/EmblemResource.cpp, Source/Resource/Bitmap/GifLzw.cpp, Source/Resource/Bitmap/GifResource.cpp, Source/Resource/Bitmap/PaletteResource.cpp, Source/Resource/Bitmap/SkinPalette.cpp, Source/Resource/Bitmap/TextureNames.cpp, Source/Resource/Effects/EZeffectResource.cpp, Source/Resource/Json/JsonCppLoader.cpp, Source/Resource/Models/RmaResource.cpp, Source/Resource/Sprites/ImfLayerIndex.cpp, Source/Resource/Sprites/ImfResource.cpp, Source/Resource/Xml/XmlNode.cpp, Source/Resource/Xml/XmlParsing.cpp, Source/Security/FileSignatureVerifier.cpp, Source/Security/ProcessSecurity.cpp, Source/Security/UnknownA68.cpp, Source/UI/Achievement/UIAchWnd.cpp, Source/UI/Buttons/UIBalloonOpenBtn.cpp, Source/UI/Buttons/UIMiniBtnWnd.cpp, Source/UI/Buttons/UISlotBitmap.cpp, Source/UI/Buttons/UIStaticBitmap.cpp, Source/UI/Buttons/UIStaticItem.cpp, Source/UI/CashShop/UIMileageWnd.cpp, Source/UI/Chat/UIZeroChatWnd.cpp, Source/UI/Dialogs/UIAccountLimitedToolWnd.cpp, Source/UI/Dialogs/UILocaleTextWnd.cpp, Source/UI/Dialogs/UIMessageBox.cpp, Source/UI/Dialogs/UINormalMB.cpp, Source/UI/Dialogs/UINoteWnd.cpp, Source/UI/Dialogs/UINoticeWnd.cpp, Source/UI/Dialogs/UIRPImageWnd.cpp, Source/UI/Dialogs/UIRPImageWnd2.cpp, Source/UI/Dialogs/UITransMenuWnd.cpp, Source/UI/Dialogs/UIVideoWnd.cpp, Source/UI/Dialogs/UIWordDisplayWnd.cpp, Source/UI/Events/UICheckAttendanceWnd.cpp, Source/UI/Events/UIOpenRoulletteWnd.cpp, Source/UI/Events/UIRoulletteWnd.cpp, Source/UI/GameSettings/UIBattleMsgOptionWnd.cpp, Source/UI/GameSettings/UIEscOptionWnd.cpp, Source/UI/GameSettings/UIHotKeyWnd.cpp, Source/UI/GameSettings/UIHotkeyGuideWnd.cpp, Source/UI/GameSettings/UIViewCameraInfoWnd.cpp, Source/UI/Gauges/UIBarGraph.cpp, Source/UI/Guild/UIEmblemWnd.cpp, Source/UI/Items/UIChangeMaterialWnd.cpp, Source/UI/Items/UICollectionSystemWnd.cpp, Source/UI/Items/UIEquipmentPropertiesWnd.cpp, Source/UI/Items/UIGradeEnchantWnd.cpp, Source/UI/Items/UIItemMoveInfo.cpp, Source/UI/Items/UIItemReformWnd.cpp, Source/UI/Items/UIItemStoreComboBox.cpp, Source/UI/Items/UIItemStoreWnd.cpp, Source/UI/Items/UILapineBoxWnd.cpp, Source/UI/Items/UILapineScrollBar.cpp, Source/UI/Items/UILapineUpgradeBoxWnd.cpp, Source/UI/Items/UIMerchantItemLogWnd.cpp, Source/UI/Items/UIParaItemShopWnd.cpp, Source/UI/Items/UIPreviewEquipWnd.cpp, Source/UI/Items/UIRefiningWnd.cpp, Source/UI/Items/UISecondCostumeWnd.cpp, Source/UI/Lists/UIScrollWnd.cpp, Source/UI/Login/FuncDrawWNDChar.cpp, Source/UI/Login/UIChangeNameWnd.cpp, Source/UI/Login/UIDescriptRace.cpp, Source/UI/Login/UIEmailAddressWnd.cpp, Source/UI/Login/UILoginWnd.cpp, Source/UI/Login/UINewMakeCharWnd.cpp, Source/UI/Login/UINewSelectCharWnd.cpp, Source/UI/Login/UIPasswordWnd.cpp, Source/UI/Login/UISelCharForUServerWnd.cpp, Source/UI/Login/UIWaitDBSaveWnd.cpp, Source/UI/Macro/UICaptchaPreviewWnd.cpp, Source/UI/Macro/UICaptchaRegisterWnd.cpp, Source/UI/Macro/UIMacroBlackListCheckWnd.cpp, Source/UI/Macro/UIMacroDetectorWnd.cpp, Source/UI/Macro/UIMacroReport.cpp, Source/UI/Macro/UIMacroUserInfoWnd.cpp, Source/UI/Navigation/NavigationLink.cpp, Source/UI/Navigation/UIListBoxNavi.cpp, Source/UI/Navigation/UIMinimapZoomWnd.cpp, Source/UI/Navigation/UINavigationHelpWnd.cpp, Source/UI/Navigation/UINavigationWnd.cpp, Source/UI/Navigation/UIRoMapWnd.cpp, Source/UI/Navigation/UIScrollBarNavi.cpp, Source/UI/Navigation/UIShowWarpWnd.cpp, Source/UI/Party/MiniPartyGrid.cpp, Source/UI/Party/MiniPartyManager.cpp, Source/UI/Party/MiniPartyPlacement.cpp, Source/UI/Party/MiniPartyUsableArea.cpp, Source/UI/Party/UIJobSlotButton.cpp, Source/UI/Party/UIPartyBookingHelpWnd.cpp, Source/UI/Party/UISeekPartyListWnd.cpp, Source/UI/Party/UISeekPartyMBWnd.cpp, Source/UI/Party/UISeekPartyWnd.cpp, Source/UI/Repute/UIReputeWnd.cpp, Source/UI/Rodex/UIOpenMailBoxWnd.cpp, Source/UI/Rodex/UIRodexContentsWnd.cpp, Source/UI/SelectPackageItemBox/UIPackageBoxNameList.cpp, Source/UI/Shop/PriceCommission.cpp, Source/UI/Shop/UIBartermarketWnd.cpp, Source/UI/Shop/UISerachStoreInfoWnd.cpp, Source/UI/Skill/UIDebuffRemoveWnd.cpp, Source/UI/Skill/UIGraffiStrboxWnd.cpp, Source/UI/Skill/UINewSkillListWnd.cpp, Source/UI/Skill/UINewSkillListWndHitTest.cpp, Source/UI/Status/UIBasicInfoWnd.cpp, Source/UI/Status/UIJobListWnd.cpp, Source/UI/Status/UIPetEvolutionWnd.cpp, Source/UI/Status/UIRebirthWnd.cpp, Source/UI/Text/TextTagExtraction.cpp, Source/UI/Text/TextTagRegistry.cpp, Source/UI/Text/UIBroadcastBalloon.cpp, Source/UI/Text/UIRoundBoxTooltipWnd.cpp, Source/UI/Window/FrameSkin.cpp, Source/UI/Window/UIBasicCtrl.cpp, Source/UI/Window/WindowBackground.cpp, Source/UI/Window/WindowLowerBorder.cpp, Source/UI/Window/WindowOverlay.cpp, Source/UI/Window/WindowSprite.cpp, Source/UI/Window/WindowTitlebar.cpp, Source/Utility/BoolStubs.cpp, Source/Utility/Hash/CRC32.cpp, Source/Utility/Hash/GGHash.cpp, Source/Utility/Hash/GGHashMgr.cpp, Source/Utility/Hash/Md5State.cpp, Source/Utility/Hash/SHA3.cpp, Source/Utility/Hash/XxHash3.cpp, Source/Utility/Lexicon/LexiconTrie.cpp, Source/Utility/Text/GuidParse.cpp, Source/Utility/Text/Tokenizer.cpp
Deletes: Source/ActorPickNode.cpp, Source/ActorPickNode.h, Source/Archive/UnknownA68.cpp, Source/Client/ClientOptions.cpp, Source/Client/ModeBaseEvents.cpp, Source/Client/ModeCursorDrawing.cpp, Source/Client/ModeFade.cpp, Source/Client/ModeFade.h, Source/Client/ModeFadeOut.cpp, Source/Client/ModeFadeOut.h, Source/Client/ModeScreenshot.cpp, Source/Client/ModeScreenshot.h, Source/Client/ModeTransitions.cpp, Source/Client/Registry.cpp, Source/Client/Registry.h, Source/Client/Replay.cpp, Source/Client/Replay.h, Source/Client/ReplayControl.cpp, Source/Client/ReplayPacketRecorder.cpp, Source/Client/ReplayRecordOption.h, Source/Client/Session.cpp, Source/Client/Session.h, Source/Client/SessionAchievements.cpp, Source/Client/SessionParty.cpp, Source/Client/SessionPredicates.cpp, Source/Client/SessionState.cpp, Source/Client/Timer.cpp, Source/Client/Timer.h, Source/EntityInit.cpp, Source/Interface/BoolStubs.cpp, Source/LexiconTrie.cpp, Source/Network/ActorNamePacket.cpp, Source/Network/ActorNamePacket.h, Source/Network/ClientKeepalive.cpp, Source/Network/ClientKeepalive.h, Source/Network/ClientOptionPacket.cpp, Source/Network/ClientOptionPacket.h, Source/Network/ExecutableDigestPacket.cpp, Source/Network/ExecutableDigestPacket.h, Source/Network/GameTickPacket.cpp, Source/Network/GameTickPacket.h, Source/Render/ActionSpriteDrawing.cpp, Source/Render/ActionSpriteDrawing.h, Source/Render/AlphaQueuesDX7.cpp, Source/Render/AlphaRectangle.cpp, Source/Render/AuxiliaryQueuesDX7.cpp, Source/Render/AuxiliarySubmission.cpp, Source/Render/AuxiliarySubmission.h, Source/Render/BitmapDrawing.cpp, Source/Render/BitmapDrawing.h, Source/Render/BlendColor.cpp, Source/Render/BlendColor.h, Source/Render/DeviceCapabilitiesDX9.cpp, Source/Render/DeviceSelection.cpp, Source/Render/DeviceSelection.h, Source/Render/Direct3DErrors.cpp, Source/Render/Direct3DErrors.h, Source/Render/DisplayMode.cpp, Source/Render/DisplayMode.h, Source/Render/OpaqueQueuesDX7.cpp, Source/Render/RenderAdapter.cpp, Source/Render/RenderAdapter.h, Source/Render/RenderBackends.cpp, Source/Render/RenderBackends.h, Source/Render/RendererDX7.cpp, Source/Render/RendererDX7.h, Source/Render/ScreenGeometry.cpp, Source/Render/ScreenGeometry.h, Source/Render/ScreenRectangle.cpp, Source/Render/ScreenRectangle.h, Source/Render/SpriteGeometry.cpp, Source/Render/SpriteGeometry.h, Source/Render/SpriteQuad.cpp, Source/Render/SpriteQuad.h, Source/Render/TextureQuad.cpp, Source/Render/TextureQuad.h, Source/Render/TextureStageModes.h, Source/Render/UIRPDataDrawing.cpp, Source/Render/ViewportProjection.cpp, Source/Resource/BinkRuntime.h, Source/Resource/EZeffectResource.cpp, Source/Resource/EZeffectResource.h, Source/Resource/EmblemResource.cpp, Source/Resource/EmblemResource.h, Source/Resource/GifLzw.cpp, Source/Resource/GifLzw.h, Source/Resource/GifResource.cpp, Source/Resource/GifResource.h, Source/Resource/ImfLayerIndex.cpp, Source/Resource/ImfResource.cpp, Source/Resource/ImfResource.h, Source/Resource/PaletteResource.cpp, Source/Resource/PaletteResource.h, Source/Resource/RmaResource.cpp, Source/Resource/RmaResource.h, Source/Resource/SkinPalette.cpp, Source/Resource/SkinPalette.h, Source/Resource/TextureNames.cpp, Source/Resource/TextureNames.h, Source/Resource/XmlNode.cpp, Source/Resource/XmlNode.h, Source/Resource/XmlParsing.cpp, Source/UI/Buttons/UICashEmotionSprBtn.h, Source/UI/Buttons/UIDescriptRace.cpp, Source/UI/Buttons/UIDescriptRace.h, Source/UI/Buttons/UIItemMoveInfo.cpp, Source/UI/Buttons/UIItemMoveInfo.h, Source/UI/Buttons/UIJobSlotButton.cpp, Source/UI/Buttons/UIJobSlotButton.h, Source/UI/Buttons/UIReplayButton.h, Source/UI/Dialogs/UIChooseWarpWnd.h, Source/UI/Dialogs/UIEmailAddressWnd.cpp, Source/UI/Dialogs/UIEmailAddressWnd.h, Source/UI/Dialogs/UIGraffiStrboxWnd.cpp, Source/UI/Dialogs/UIGraffiStrboxWnd.h, Source/UI/Dialogs/UIMemorialDunWnd.h, Source/UI/Dialogs/UIMiniMapWnd.h, Source/UI/Dialogs/UIMinimapZoomWnd.cpp, Source/UI/Dialogs/UIMinimapZoomWnd.h, Source/UI/Dialogs/UINotifyQuestWnd.h, Source/UI/Dialogs/UIPasswordWnd.cpp, Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Dialogs/UIPetTamingDeceiveWnd.h, Source/UI/Dialogs/UISecondPasswordEditWnd.h, Source/UI/Dialogs/UISelectCartWnd.h, Source/UI/Dialogs/UIWaitDBSaveWnd.cpp, Source/UI/Dialogs/UIWaitDBSaveWnd.h, Source/UI/FrameSkin.cpp, Source/UI/FrameSkin.h, Source/UI/Item/UIEquipmentPropertiesWnd.cpp, Source/UI/Item/UIEquipmentPropertiesWnd.h, Source/UI/Item/UIItemBaseWnd.h, Source/UI/Item/UIItemPurchaseWnd.h, Source/UI/Item/UIItemSellWnd.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.cpp, Source/UI/Item/UIItemStoreWnd.h, Source/UI/Item/UIItemWnd.h, Source/UI/Item/UIMerchantItemLogWnd.cpp, Source/UI/Item/UIMerchantItemLogWnd.h, Source/UI/Item/UIParaItemShopWnd.cpp, Source/UI/Item/UIParaItemShopWnd.h, Source/UI/Lists/UIItemStoreComboBox.cpp, Source/UI/Lists/UIItemStoreComboBox.h, Source/UI/Lists/UIListBoxNavi.cpp, Source/UI/Lists/UIListBoxNavi.h, Source/UI/Lists/UIListBoxNaviSearch.h, Source/UI/Lists/UIPackageBoxNameList.cpp, Source/UI/Lists/UIPackageBoxNameList.h, Source/UI/Lists/UIReplayListBox.h, Source/UI/Lists/UIScrollBarNavi.cpp, Source/UI/Lists/UIScrollBarNavi.h, Source/UI/MiniPartyGrid.cpp, Source/UI/MiniPartyGrid.h, Source/UI/MiniPartyManager.cpp, Source/UI/MiniPartyPlacement.cpp, Source/UI/MiniPartyPlacement.h, Source/UI/MiniPartyUsableArea.cpp, Source/UI/PriceCommission.cpp, Source/UI/PriceCommission.h, Source/UI/Text/NavigationLink.cpp, Source/UI/Text/NavigationLink.h, Source/UI/Text/UIAchWnd.cpp, Source/UI/Text/UIAchWnd.h, Source/UI/TextTagExtraction.cpp, Source/UI/TextTagRegistry.cpp, Source/UI/TextTags.h, Source/UI/UIBarGraph.cpp, Source/UI/UIBarGraph.h, Source/UI/UIBartermarketWnd.cpp, Source/UI/UIBartermarketWnd.h, Source/UI/UIBasicCtrl.cpp, Source/UI/UIBasicCtrl.h, Source/UI/UIBroadcastBalloon.cpp, Source/UI/UIBroadcastBalloon.h, Source/UI/UICaptchaPreviewWnd.cpp, Source/UI/UICaptchaPreviewWnd.h, Source/UI/UICaptchaRegisterWnd.cpp, Source/UI/UICaptchaRegisterWnd.h, Source/UI/UIChangeMaterialWnd.cpp, Source/UI/UIChangeMaterialWnd.h, Source/UI/UICheckAttendanceWnd.cpp, Source/UI/UICheckAttendanceWnd.h, Source/UI/UIGradeEnchantWnd.cpp, Source/UI/UIGradeEnchantWnd.h, Source/UI/UIHotkeyGuideWnd.cpp, Source/UI/UIHotkeyGuideWnd.h, Source/UI/UIIngredientInfoWnd.h, Source/UI/UIItemReformWnd.cpp, Source/UI/UIItemReformWnd.h, Source/UI/UILapineBoxWnd.cpp, Source/UI/UILapineScrollBar.cpp, Source/UI/UILapineScrollBar.h, Source/UI/UILapineUpgradeBoxWnd.cpp, Source/UI/UILapineUpgradeBoxWnd.h, Source/UI/UIMacroBlackListCheckWnd.cpp, Source/UI/UIMacroBlackListCheckWnd.h, Source/UI/UIMacroDetectorWnd.cpp, Source/UI/UIMacroDetectorWnd.h, Source/UI/UIMacroReport.cpp, Source/UI/UIMacroReport.h, Source/UI/UIMacroUserInfoWnd.cpp, Source/UI/UIMacroUserInfoWnd.h, Source/UI/UIPreviewEquipWnd.cpp, Source/UI/UIPreviewEquipWnd.h, Source/UI/UIRefiningWnd.cpp, Source/UI/UIRefiningWnd.h, Source/UI/UIReputeWnd.cpp, Source/UI/UIReputeWnd.h, Source/UI/UIRoundBoxTooltipWnd.cpp, Source/UI/UIRoundBoxTooltipWnd.h, Source/UI/UIScrollWnd.cpp, Source/UI/UIScrollWnd.h, Source/UI/UISlotBitmap.cpp, Source/UI/UISlotBitmap.h, Source/UI/UIStaticBitmap.cpp, Source/UI/UIStaticBitmap.h, Source/UI/UIStaticItem.cpp, Source/UI/UIStaticItem.h, Source/UI/Window/FuncDrawWNDChar.cpp, Source/UI/Window/FuncDrawWNDChar.h, Source/UI/Window/MiniPartyWndAreaMgr.h, Source/UI/Window/UIAccountLimitedToolWnd.cpp, Source/UI/Window/UIAccountLimitedToolWnd.h, Source/UI/Window/UIBalloonOpenBtn.cpp, Source/UI/Window/UIBalloonOpenBtn.h, Source/UI/Window/UIBank_NewWnd.h, Source/UI/Window/UIBasicInfoWnd.cpp, Source/UI/Window/UIBasicInfoWnd.h, Source/UI/Window/UIBattleMsgOptionWnd.cpp, Source/UI/Window/UIBattleMsgOptionWnd.h, Source/UI/Window/UIChangeNameWnd.cpp, Source/UI/Window/UIChangeNameWnd.h, Source/UI/Window/UIChatRoomWnd.h, Source/UI/Window/UICntWnd.h, Source/UI/Window/UICollectionSystemWnd.cpp, Source/UI/Window/UICollectionSystemWnd.h, Source/UI/Window/UIDebuffRemoveWnd.cpp, Source/UI/Window/UIDebuffRemoveWnd.h, Source/UI/Window/UIEmblemWnd.cpp, Source/UI/Window/UIEmblemWnd.h, Source/UI/Window/UIEscOptionWnd.cpp, Source/UI/Window/UIEscOptionWnd.h, Source/UI/Window/UIHomunInfoWnd.h, Source/UI/Window/UIHotKeyWnd.cpp, Source/UI/Window/UIHotKeyWnd.h, Source/UI/Window/UIJobListWnd.cpp, Source/UI/Window/UIJobListWnd.h, Source/UI/Window/UILocaleTextWnd.cpp, Source/UI/Window/UILoginOTPWnd.h, Source/UI/Window/UILoginWnd.cpp, Source/UI/Window/UILoginWnd.h, Source/UI/Window/UIMakeCharWnd.h, Source/UI/Window/UIMerInfoWnd.h, Source/UI/Window/UIMessageBox.cpp, Source/UI/Window/UIMessageBox.h, Source/UI/Window/UIMessageBoxAutoreturn.h, Source/UI/Window/UIMileageWnd.cpp, Source/UI/Window/UIMileageWnd.h, Source/UI/Window/UIMiniBtnWnd.cpp, Source/UI/Window/UIMiniBtnWnd.h, Source/UI/Window/UIMonsterDisplayWnd.h, Source/UI/Window/UIMonsterInfoWnd.h, Source/UI/Window/UINavigationHelpWnd.cpp, Source/UI/Window/UINavigationHelpWnd.h, Source/UI/Window/UINavigationWnd.cpp, Source/UI/Window/UINavigationWnd.h, Source/UI/Window/UINewMakeCharWnd.cpp, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UINewSelectCharWnd.cpp, Source/UI/Window/UINewSelectCharWnd.h, Source/UI/Window/UINewSkillListWnd.cpp, Source/UI/Window/UINewSkillListWnd.h, Source/UI/Window/UINewSkillListWndHitTest.cpp, Source/UI/Window/UINormalMB.cpp, Source/UI/Window/UINormalMB.h, Source/UI/Window/UINoteWnd.cpp, Source/UI/Window/UINoteWnd.h, Source/UI/Window/UINoticeWnd.cpp, Source/UI/Window/UINoticeWnd.h, Source/UI/Window/UIOpenMailBoxWnd.cpp, Source/UI/Window/UIOpenMailBoxWnd.h, Source/UI/Window/UIOpenRoulletteWnd.cpp, Source/UI/Window/UIOpenRoulletteWnd.h, Source/UI/Window/UIPartyBookingHelpWnd.cpp, Source/UI/Window/UIPartyBookingHelpWnd.h, Source/UI/Window/UIPayConfirmWnd.h, Source/UI/Window/UIPetEvolutionWnd.cpp, Source/UI/Window/UIPetEvolutionWnd.h, Source/UI/Window/UIPetInfoWnd.h, Source/UI/Window/UIRPImageWnd.cpp, Source/UI/Window/UIRPImageWnd.h, Source/UI/Window/UIRPImageWnd2.cpp, Source/UI/Window/UIRPImageWnd2.h, Source/UI/Window/UIRebirthWnd.cpp, Source/UI/Window/UIRebirthWnd.h, Source/UI/Window/UIReplayControlWnd.h, Source/UI/Window/UIReplayRECControlWnd.h, Source/UI/Window/UIRoMapWnd.cpp, Source/UI/Window/UIRoMapWnd.h, Source/UI/Window/UIRodexContentsWnd.cpp, Source/UI/Window/UIRodexContentsWnd.h, Source/UI/Window/UIRoulletteWnd.cpp, Source/UI/Window/UIRoulletteWnd.h, Source/UI/Window/UISecondCostumeWnd.cpp, Source/UI/Window/UISecondCostumeWnd.h, Source/UI/Window/UISeekPartyListWnd.cpp, Source/UI/Window/UISeekPartyListWnd.h, Source/UI/Window/UISeekPartyMBWnd.cpp, Source/UI/Window/UISeekPartyMBWnd.h, Source/UI/Window/UISeekPartyWnd.cpp, Source/UI/Window/UISeekPartyWnd.h, Source/UI/Window/UISelCharForUServerWnd.cpp, Source/UI/Window/UISelCharForUServerWnd.h, Source/UI/Window/UISelectReplayDataWnd.h, Source/UI/Window/UISelectServerWnd.h, Source/UI/Window/UISerachStoreInfoWnd.cpp, Source/UI/Window/UISerachStoreInfoWnd.h, Source/UI/Window/UIShowWarpWnd.cpp, Source/UI/Window/UIShowWarpWnd.h, Source/UI/Window/UITalkboxTrapInputWnd.h, Source/UI/Window/UITransMenuWnd.cpp, Source/UI/Window/UITransMenuWnd.h, Source/UI/Window/UIVideoWnd.cpp, Source/UI/Window/UIVideoWnd.h, Source/UI/Window/UIViewCameraInfoWnd.cpp, Source/UI/Window/UIViewCameraInfoWnd.h, Source/UI/Window/UIWindowCallBtnWnd.h, Source/UI/Window/UIWordDisplayWnd.cpp, Source/UI/Window/UIWordDisplayWnd.h, Source/UI/Window/UIZeroChatWnd.cpp, Source/UI/WindowBackground.cpp, Source/UI/WindowLowerBorder.cpp, Source/UI/WindowOverlay.cpp, Source/UI/WindowSprite.cpp, Source/UI/WindowTitlebar.cpp, Source/Utility/CRC32.cpp, Source/Utility/CRC32.h, Source/Utility/Compression/Zlib.h, Source/Utility/EncryptedName.h, Source/Utility/FileSignatureVerifier.cpp, Source/Utility/FileSignatureVerifier.h, Source/Utility/GGHash.cpp, Source/Utility/GGHash.h, Source/Utility/GGHashMgr.cpp, Source/Utility/GGHashMgr.h, Source/Utility/GuidParse.cpp, Source/Utility/GuidParse.h, Source/Utility/JsonCppLoader.cpp, Source/Utility/JsonCppLoader.h, Source/Utility/Md5State.cpp, Source/Utility/Md5State.h, Source/Utility/NFileLog.cpp, Source/Utility/NFileLog.h, Source/Utility/NIPAddr.cpp, Source/Utility/NIPAddr.h, Source/Utility/ProcessSecurity.cpp, Source/Utility/ProcessSecurity.h, Source/Utility/RegistryKey.cpp, Source/Utility/RegistryKey.h, Source/Utility/SHA3.cpp, Source/Utility/SHA3.h, Source/Utility/Tokenizer.cpp, Source/Utility/Tokenizer.h, Source/Utility/XxHash3.cpp, Source/Utility/XxHash3.h
2026-11-11 01:05:24 +00:00

911 lines
34 KiB
C++

#include "UI/Navigation/UINavigationWnd.h"
#include "UI/Window/WindowId.h"
#include "UI/Window/UIEnums.h"
#include "Client/Application/Launcher.h"
#include "Client/Replay/Replay.h"
#include "Client/Session/Session.h"
#include "Contents/Tables/MessageTable.h"
#include "Contents/Navigation/NavigationManager.h"
#include "File/FileEnumeration.h"
#include "Render/DeviceContext/DeviceContext.h"
#include "Render/Renderer.h"
#include "Render/Textures/Texture.h"
#include "Resource/Sprites/ActionResource.h"
#include "Resource/Sprites/SpriteResource.h"
#include "UI/Buttons/UIBitmapButton.h"
#include "UI/Buttons/UIButton.h"
#include "UI/Buttons/UICheckBox.h"
#include "UI/Edit/UIEditCtrl.h"
#include "UI/Lists/UIComboBox.h"
#include "UI/Lists/UIComboBoxDefWnd.h"
#include "UI/Navigation/UIListBoxNavi.h"
#include "UI/Navigation/UINavigationV4Wnd.h"
#include "UI/Window/UIResizer.h"
#include "UI/Navigation/UIRoMapWnd.h"
#include "UI/Window/UIWindowMgr.h"
#include "Utility/Text/FormatString.h"
#include "Resource/MSGSTRINGID.h"
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
// GLOBAL: gl_25083
float g_navigationPointScale = 0.0078125f;
// GLOBAL: gl_25084
float g_navigationMarkerScale = 0.453125f;
// OFFSET: 0x00921A70
// FUNCTION: fn_12643
void UINavigationWnd::OnCreate(int width, int height) {
this->m_routePanel = new UIListBoxNavi();
this->m_routePanel->SetSize(215, 96);
this->m_routePanel->backgroundRed = 210;
this->m_routePanel->backgroundGreen = 210;
this->m_routePanel->backgroundBlue = 210;
this->m_routePanel->SetId(336);
this->m_routePanel->Move(-1000, -1000);
this->AddChild(this->m_routePanel);
this->m_searchPanel = new UIListBoxNavi();
this->m_searchPanel->SetSize(215, 96);
this->m_searchPanel->backgroundRed = 210;
this->m_searchPanel->backgroundGreen = 210;
this->m_searchPanel->backgroundBlue = 210;
this->m_searchPanel->SetId(441);
this->m_searchPanel->Move(-1000, -1000);
this->m_searchPanel->SetDefaultLineColor(0x1414F0);
this->AddChild(this->m_searchPanel);
std::string base = "유저인터페이스\\";
this->m_resizer = new UIResizer();
this->m_resizer->SetSize(14, 14);
this->m_resizer->SetDirection(7);
this->m_resizer->SetBitmapName((base + "btn_resize.bmp").c_str());
this->m_resizer->SetColors(0xFFFF00FF, 0xFFFF00FF);
this->m_resizer->Move(-1000, -1000);
this->AddChild(this->m_resizer);
std::string path = base;
path += "navigation_interface\\";
const char* tooltips[6] = {
LookupMessage(MSI_NAVIGATION_SEARCHINFO), LookupMessage(MSI_NAVIGATION_VIEWCHANGE), LookupMessage(MSI_NAVIGATION_LIGHTCHANGE), LookupMessage(MSI_NAVIGATION_END), LookupMessage(MSI_NAVIGATION_BASE), LookupMessage(MSI_NAVIGATION_MINI),
};
const char* names[6] = {"NaviSearch", "NaviStart", "NaviRoute", "NaviList", "Navisyschange2", "navifolder"};
const int ids[6] = {321, 184, 189, 190, 284, 191};
for (int index = 0; index < 6; ++index) {
this->m_buttons[index] = new UIBitmapButton();
this->m_buttons[index]->SetBitmap((path + names[index] + "_A.bmp").c_str(), 0, 0);
this->m_buttons[index]->SetBitmap((path + names[index] + "_B.bmp").c_str(), 1, 0);
this->m_buttons[index]->SetBitmap((path + names[index] + "_C.bmp").c_str(), 2, 0);
this->m_buttons[index]->SetSize(this->m_buttons[index]->BitmapWidth(), this->m_buttons[index]->BitmapHeight());
this->m_buttons[index]->Move(-1000, -1000);
this->m_buttons[index]->SetId(ids[index]);
this->m_buttons[index]->SetTooltip(tooltips[index]);
this->AddChild(this->m_buttons[index]);
}
this->m_closeButton = this->AddCloseButton(LookupMessage(MSI_NAVIGATION_HELP), 0);
this->m_minimizeButton = this->AddMinimizeButton("", 0);
this->m_helpButton = new UIBitmapButton();
this->m_helpButton->SetBitmap((path + "NaviHelp_off.bmp").c_str(), 0, 0);
this->m_helpButton->SetBitmap((path + "NaviHelp_on.bmp").c_str(), 1, 0);
this->m_helpButton->SetBitmap((path + "NaviHelp_on.bmp").c_str(), 2, 0);
this->m_helpButton->SetSize(this->m_helpButton->BitmapWidth(), this->m_helpButton->BitmapHeight());
this->m_helpButton->Move(this->geometry.width - 42, 3);
this->m_helpButton->SetId(343);
this->m_helpButton->SetTooltip(LookupMessage(MSI_NAVIGATION_NPC));
this->AddChild(this->m_helpButton);
this->m_searchType = new UIComboBoxDefWnd();
this->m_searchType->dropdownHeight = 67;
this->m_searchType->SetSize(56, 18);
this->m_searchType->Move(-1000, -1000);
this->m_searchType->SetBorderColor(100, 100, 100);
this->m_searchType->SetColor(232, 232, 232);
this->AddChild(this->m_searchType);
this->m_searchType->AddOption(LookupMessage(MSI_NAVIGATION_MOB), 0);
this->m_searchType->AddOption(LookupMessage(MSI_NAVIGATION_SETSTRING), 0);
this->m_searchType->AddOption(LookupMessage(MSI_NAVIGATION_SCROLL), 0);
this->m_searchType->AddOption(LookupMessage(MSI_NAVIGATION_USESCROLL), 0);
this->m_titleBar = new UIEditCtrl();
this->m_titleBar->SetSize(226, 18);
this->m_titleBar->Move(-1000, -1000);
this->m_titleBar->maximum = 60;
this->m_titleBar->Background(232, 232, 232);
this->m_titleBar->Border(200, 100, 100);
this->m_titleBar->flat = 0;
UIEditCtrl* edit = this->m_titleBar;
const char* tooltip = LookupMessage(MSI_NAVIGATION_SERVICE);
if (tooltip) {
edit->tooltip = tooltip;
}
this->AddChild(this->m_titleBar);
if (g_replayAnimationScaling) {
UIEditCtrl* titleBar = this->m_titleBar;
titleBar->disabled = 1;
titleBar->Invalidate();
}
this->m_includeObjects = new UICheckBox();
this->m_includeObjects->SetSize(this->TextWidth(LookupMessage(MSI_NAVIGATION_USESERVICE), 10, 0, 12, 0, 0), 12);
path = base;
this->m_includeObjects->SetImages((path + "checkbox_1.bmp").c_str(), (path + "checkbox_0.bmp").c_str(), LookupMessage(MSI_NAVIGATION_USESERVICE));
this->m_includeObjects->Move(-1000, -1000);
this->m_includeObjects->SetChecked(g_navigationManager.includeObjects);
this->m_includeObjects->SetTooltip(LookupMessage(MSI_NAVIGATION_PLANE));
this->AddChild(this->m_includeObjects);
this->m_allowGates = new UICheckBox();
this->m_allowGates->SetSize(this->TextWidth(LookupMessage(MSI_NAVIGATION_USEPLANE), 10, 0, 12, 0, 0), 12);
path = base;
this->m_allowGates->SetImages((path + "checkbox_1.bmp").c_str(), (path + "checkbox_0.bmp").c_str(), LookupMessage(MSI_NAVIGATION_USEPLANE));
this->m_allowGates->Move(-1000, -1000);
this->m_allowGates->SetChecked(g_navigationManager.allowGates);
this->m_allowGates->SetTooltip(LookupMessage(MSI_NAVIGATION_TARGETUNKNOWN));
this->AddChild(this->m_allowGates);
this->m_allowWarps = new UICheckBox();
this->m_allowWarps->SetSize(this->TextWidth(LookupMessage(MSI_NAVIGATION_GOING), 10, 0, 12, 0, 0), 12);
path = base;
this->m_allowWarps->SetImages((path + "checkbox_1.bmp").c_str(), (path + "checkbox_0.bmp").c_str(), LookupMessage(MSI_NAVIGATION_GOING));
this->m_allowWarps->Move(-1000, -1000);
this->m_allowWarps->SetChecked(g_navigationManager.allowWarps);
this->m_allowWarps->SetTooltip(LookupMessage(MSI_NAVIGATION_SEARCHING));
this->AddChild(this->m_allowWarps);
}
// OFFSET: 0x00931390
// FUNCTION: fn_12702
void UINavigationWnd::OnLBtnUp(int x, int y) {
if (static_cast<unsigned int>(x - 8) <= 126 && static_cast<unsigned int>(y - 39) <= 126) {
this->SendMsg(this, UM_COMMAND, 429, 0, 0, 0);
}
this->UIFrameWnd::OnLBtnUp(x, y);
}
// OFFSET: 0x0093DAB0
// FUNCTION: fn_12770
void UINavigationWnd::LayoutTabs() {
this->m_routePanel->Move(-1000, -1000);
this->m_searchPanel->Move(-1000, -1000);
this->m_routeFooter->Move(-1000, -1000);
this->m_searchFooter->Move(-1000, -1000);
const int x = this->geometry.width - 222;
if (!g_navigationManager.expandedMap) {
UIWindow* footer;
if (g_navigationManager.displayMode == 1) {
this->m_searchPanel->Move(x, 37);
this->m_searchPanel->Invalidate();
footer = this->m_searchFooter;
} else {
this->m_routePanel->Move(x, 37);
this->m_routePanel->Invalidate();
footer = this->m_routeFooter;
}
footer->Move(x, this->geometry.height - 41);
}
this->Invalidate();
}
// OFFSET: 0x0093DB80
// FUNCTION: fn_12771
void UINavigationWnd::RefreshHeaderTexts(int mode) {
if (g_navigationManager.expandedMap) {
if (mode == 2) {
char text[260];
char saved[260];
std::memset(text, 0, sizeof(text));
std::memset(saved, 0, sizeof(saved));
if (g_navigationManager.SavedTargetText(saved, sizeof(saved))) {
std::sprintf(text, ">>%s", saved);
} else {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_UN));
}
this->m_title = LookupMessage(MSI_NAVIGATION_NAVI);
this->m_subtitle = text;
} else {
this->m_title = LookupMessage(MSI_NAVIGATION_SEARCHRESULT_D);
this->m_subtitle = LookupMessage(MSI_NAVIGATION_NPC_S_S);
}
} else {
this->m_title = LookupMessage(MSI_NAVIGATION_MOB_S_S);
this->m_subtitle = LookupMessage(MSI_NAVIGATION_NPC_S_S);
}
this->Invalidate();
}
// OFFSET: 0x0093DD20
// FUNCTION: fn_12772
void UINavigationWnd::RefreshWorldMapMarks() {
g_worldViewMgr.ClearMarks();
if (g_navigationManager.viewMode == 2) {
std::string name;
for (int index = 0; index < g_navigationManager.NodeCount(); ++index) {
CNavi_Link* node = g_navigationManager.GetNode(index);
if (node) {
name = node->GetInfo()->GetName();
name += ".rsw";
g_worldViewMgr.AddMark(name.c_str());
}
}
name = g_navigationManager.GetDestinationInfo()->GetName();
name += ".rsw";
g_worldViewMgr.AddMark(name.c_str());
this->Invalidate();
}
}
// OFFSET: 0x0093DED0
// FUNCTION: fn_12773
void UINavigationWnd::RefreshWorldMapSelection() {
this->Invalidate();
std::string name = g_navigationManager.GetCurrentTargetName();
if (!name.empty()) {
name.append(".rsw", 4);
g_worldViewMgr.SelectField(name.c_str());
} else {
g_worldViewMgr.ResetSelection();
}
}
// OFFSET: 0x0093DF80
// FUNCTION: fn_12774
void UINavigationWnd::RefreshWorldMapLevels() {
g_worldViewMgr.ClearLevels();
const int count = g_navigationManager.StateCount();
if (count > 0) {
std::string name;
for (int index = 0; index < count; ++index) {
int distance = 0;
name = g_navigationManager.StateMapName(index, &distance);
if (!name.empty()) {
name += ".rsw";
g_worldViewMgr.AddLevel(name.c_str(), distance);
}
}
this->Invalidate();
}
}
// OFFSET: 0x0093E150
// FUNCTION: fn_12775
void UINavigationWnd::RefreshRouteList() {
this->m_searchPanel->Clear();
this->m_searchPanel->ResetLineColors();
this->m_searchPanel->Invalidate();
const int nodeCount = g_navigationManager.NodeCount();
if (g_navigationManager.viewMode != 2) {
return;
}
NavigationTarget target = g_navigationManager.GetSavedTarget();
if (!target.object) {
return;
}
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(LookupMessage(MSI_NAVIGATION_TARGET_S_D_D)), 0, 0);
char text[100];
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_BOSS), g_navigationManager.GetRouteResult(), nodeCount);
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
int lineOffset;
if (target.type == 2) {
CNavi_Object* npc = static_cast<CNavi_Object*>(target.object);
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_NORMAL), npc->GetInfo()->GetTitle(), npc->GetInfo()->GetName());
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
std::memset(text, 0, sizeof(text));
NaviCell cellX;
NaviCell cellY;
std::sprintf(text, LookupMessage(MSI_NAVIGATION_TARGET_S_S), npc->GetName(), npc->GetCell(&cellX)->x, npc->GetCell(&cellY)->y);
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
lineOffset = 5;
} else if (target.type == 3) {
CNavi_Object* mob = static_cast<CNavi_Object*>(target.object);
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_NORMAL), mob->GetInfo()->GetTitle(), mob->GetInfo()->GetName());
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
std::string kind;
kind = LookupMessage(mob->GetType() == 301 ? 0x8B6 : 0x8B7);
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_ITEM_S_S), mob->GetName(), kind.c_str());
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
lineOffset = 5;
} else if (target.type == 1) {
CNaviInfo* map = static_cast<CNaviInfo*>(target.object);
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_NORMAL), map->GetTitle(), map->GetName());
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
lineOffset = 4;
} else if (target.type == 0) {
CNaviInfo* map = static_cast<CNaviInfo*>(target.object);
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_NORMAL), map->GetTitle(), map->GetName());
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
std::memset(text, 0, sizeof(text));
NaviCell cellX;
NaviCell cellY;
std::sprintf(text, LookupMessage(MSI_NAVIGATION_D_S_D_D_D_D), g_navigationManager.GetDestinationCell(&cellX)->x, g_navigationManager.GetDestinationCell(&cellY)->y);
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
lineOffset = 5;
} else {
return;
}
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(LookupMessage(MSI_NAVIGATION_E_D_S_D_D_D_D)), 0, 0);
this->m_searchPanel->SetLineOffset(lineOffset);
CNavi_Link* previous = nullptr;
for (int index = 0; index < nodeCount; ++index) {
std::memset(text, 0, 64);
CNavi_Link* node = g_navigationManager.GetNode(index);
NaviCell cellX;
NaviCell cellY;
if (index == 0) {
if (node->GetType() == 400) {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_E_D_S), index, node->GetName(), node->GetLinkedName());
} else {
int column = 0;
int row = 0;
g_navigationManager.PlayerCell(&column, &row);
std::sprintf(
text, LookupMessage(MSI_NAVIGATION_GOEXIT), index, node->GetInfo()->GetName(), column, row, node->GetCell(&cellX)->x, node->GetCell(&cellY)->y
);
}
} else {
std::sprintf(
text,
LookupMessage(MSI_NAVIGATION_GOEXIT),
index,
node->GetInfo()->GetName(),
previous->GetLinkedCell().x,
previous->GetLinkedCell().y,
node->GetCell(&cellX)->x,
node->GetCell(&cellY)->y
);
}
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
previous = node;
}
const int savedType = g_navigationManager.GetSavedTarget().type;
std::string destination = g_navigationManager.GetDestinationInfo()->GetName();
int startX;
int startY;
NaviCell cell;
int destinationX;
if (nodeCount == 0) {
g_navigationManager.PlayerCell(&startX, &startY);
destinationX = g_navigationManager.GetDestinationCell(&cell)->x;
} else {
startX = previous->GetLinkedCell().x;
startY = previous->GetLinkedCell().y;
destinationX = g_navigationManager.GetDestinationCell(&cell)->x;
}
const int destinationY = g_navigationManager.GetDestinationCell(&cell)->y;
if (savedType == 2 || savedType == 0) {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_HELPTITLE), nodeCount, destination.c_str(), startX, startY, destinationX, destinationY);
} else {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_HELP1), nodeCount, destination.c_str());
}
this->SendMsg(nullptr, UM_ADDITEM, 441, reinterpret_cast<std::intptr_t>(text), 0, 0);
if (g_navigationManager.GetSelectedNode() == -1) {
if (g_navigationManager.GetRouteFlag()) {
this->m_searchPanel->SetLineColor(nodeCount, 1);
this->m_searchPanel->Invalidate();
}
} else {
this->m_searchPanel->SetLineColor(g_navigationManager.GetSelectedNode(), 1);
this->m_searchPanel->Invalidate();
}
}
// OFFSET: 0x0093EB60
// FUNCTION: fn_12776
void UINavigationWnd::ApplyMinimized() {
if (g_navigationManager.expandedMap) {
this->Resize(134, 61);
int x = this->geometry.x;
int y = this->geometry.y;
if (g_renderer->viewport.width - 272 <= x) {
x = g_renderer->viewport.width - this->geometry.width;
}
if (g_renderer->viewport.height - 338 <= y) {
y = g_renderer->viewport.height - this->geometry.height;
}
this->Move(std::ranges::max(x, 0), std::ranges::max(y, 0));
this->m_resizer->Move(-1000, -1000);
this->m_helpButton->Move(this->geometry.width - 42, 3);
this->m_closeButton->Move(this->geometry.width - 14, 3);
this->m_minimizeButton->Move(this->geometry.width - 28, 3);
this->m_minimizeButton->SetTooltip(LookupMessage(MSI_NAVIGATION_ALL));
for (int index = 0; index < 6; ++index) {
this->m_buttons[index]->Move(-1000, -1000);
}
this->LayoutTabs();
this->m_searchType->Move(-1000, -1000);
this->m_allowGates->Move(-1000, -1000);
this->m_includeObjects->Move(-1000, -1000);
this->m_allowWarps->Move(-1000, -1000);
this->m_titleBar->Move(-1000, -1000);
} else {
if (this->m_saved->minimized) {
this->m_saved->width = 272;
this->m_titleBar->Resize(226, 18);
} else {
this->m_saved->width = 228;
this->m_titleBar->Resize(182, 18);
}
this->Resize(this->m_saved->width, this->m_saved->height);
int x = g_renderer->viewport.width - this->m_saved->width;
if (x > this->geometry.x) {
x = this->geometry.x;
}
int y = g_renderer->viewport.height - this->m_saved->height;
if (y > this->geometry.y) {
y = this->geometry.y;
}
this->Move(std::ranges::max(x, 0), std::ranges::max(y, 0));
this->m_routePanel->Resize(215, this->geometry.height - 78);
this->m_searchPanel->Resize(215, this->geometry.height - 78);
this->m_resizer->Move(this->geometry.width - 14, this->geometry.height - 14);
this->m_helpButton->Move(this->geometry.width - 42, 3);
this->m_closeButton->Move(this->geometry.width - 14, 3);
this->m_minimizeButton->Move(this->geometry.width - 28, 3);
this->m_minimizeButton->SetTooltip(LookupMessage(MSI_NAVIGATION_MAP));
int buttonX[6] = {this->geometry.width - 66, this->geometry.width - 77, -1000, -1000, this->geometry.width - 224,
this->geometry.width - 31};
int buttonY[6] = {18, this->geometry.height - 37, -1000, -1000, this->geometry.height - 22, 18};
for (int index = 0; index < 6; ++index) {
this->m_buttons[index]->Move(buttonX[index], buttonY[index]);
}
this->LayoutTabs();
this->m_searchType->Move(6, 18);
this->m_allowGates->Move(this->geometry.width - 136, this->geometry.height - 37);
this->m_includeObjects->Move(this->geometry.width - 186, this->geometry.height - 37);
this->m_allowWarps->Move(this->geometry.width - 136, this->geometry.height - 21);
this->m_titleBar->Move(65, 18);
}
}
// OFFSET: 0x00940E20
// FUNCTION: fn_12781
void UINavigationWnd::StoreInfo() {
if (this->m_saved) {
this->m_saved->width = this->geometry.width;
this->m_saved->height = this->geometry.height;
const int maxX = g_renderer->viewport.width - (!this->m_saved->minimized ? 228 : 272);
if (maxX < this->geometry.x) {
this->geometry.x = maxX;
}
if (this->geometry.x < 0) {
this->geometry.x = 0;
}
this->m_saved->x = this->geometry.x;
const int maxY = g_renderer->viewport.height - 338;
if (maxY < this->geometry.y) {
this->geometry.y = maxY;
}
if (this->geometry.y < 0) {
this->geometry.y = 0;
}
this->m_saved->y = this->geometry.y;
}
}
// OFFSET: 0x0092CEF0
// FUNCTION: fn_12668
void UINavigationWnd::Paint() {
this->DrawTitleBar(true, this->m_title.c_str(), 0);
this->DrawPanelBackground(0x11, 0, "");
if (g_navigationManager.expandedMap) {
this->DrawTextAt(6, 20, this->m_subtitle.c_str(), 0, 0, 12, 0, 0, 0);
return;
}
if (!this->m_saved->minimized) {
return;
}
int mapCellY = g_navigationManager.previewY;
int mapCellX = g_navigationManager.previewX;
const int targetType = g_navigationManager.GetCurrentTarget().type;
int size = 0x80;
this->FillRegion(6, 0x25, 0x82, 0x82, 0x646464);
if (g_navigationManager.previewType == 2) {
int markerSize = size;
if (targetType == 2) {
markerSize = size - 0x3D;
size = 0x3A;
if (mapCellX > -1 && mapCellY > -1) {
mapCellX = static_cast<int>(static_cast<float>(mapCellX) * g_navigationMarkerScale);
mapCellY = static_cast<int>(static_cast<float>(mapCellY) * g_navigationMarkerScale);
}
} else if (targetType == 3) {
size = 0x20;
}
this->DrawActionSprite(g_navigationManager.previewSprite, g_navigationManager.previewAction, 7, 0x26, markerSize, 0x80, 0x5dc, true, nullptr);
}
const int mapX = 0x87 - size;
const int mapY = 0xA6 - size;
this->FillRegion(mapX, mapY, size, size, 0);
if (g_navigationManager.previewTexture != nullptr) {
const float scale = static_cast<float>(size) / static_cast<float>(g_navigationManager.previewTexture->Width());
this->geometry.surface->DrawScaledSurface(
mapX, mapY, size, size, g_navigationManager.previewTexture, g_navigationManager.previewTexture->Width(), g_navigationManager.previewTexture->Height(), scale, scale, 0xFFFFFFFFu, false, 0, 0, 0,
0
);
}
bool drawCrosshair = true;
if (g_navigationManager.viewMode == 2) {
if (g_navigationManager.IsCurrentTarget(g_session.m_navigationPlayerMap)) {
if (g_navigationManager.displayMode == 1) {
drawCrosshair = false;
}
const float scale = static_cast<float>(size) * g_navigationPointScale;
for (const NaviCell& point : g_navigationManager.cells) {
this->FillRegion(static_cast<int>(point.x * scale + mapX), static_cast<int>(point.y * scale + mapY), 2, 2, 0x00F0F00A);
}
int playerCellX = 0;
int playerCellY = 0;
if (g_navigationManager.PlayerCell(&playerCellX, &playerCellY)) {
NaviCell playerView;
g_navigationManager.MapCellToView(
&playerView, g_session.m_navigationPlayerMap, playerCellX, playerCellY, static_cast<float>(size)
);
this->FillRegion(playerView.x + mapX - 1, playerView.y + mapY - 1, 3, 3, 0xFF);
this->FillRegion(playerView.x + mapX, playerView.y + mapY, 1, 1, 0xFFFF);
}
}
}
if (mapCellX >= 0 && mapCellY >= 0) {
if (drawCrosshair) {
this->FillRegion(mapX, mapY + mapCellY - 1, size, 2, 0x1414C8);
this->FillRegion(mapX + mapCellX - 1, mapY, 2, size, 0x1414C8);
}
this->FillRegion(mapX + mapCellX - 2, mapY + mapCellY - 2, 4, 4, 0xFF);
this->FillRegion(mapX + mapCellX - 1, mapY + mapCellY - 1, 2, 2, 0xFFFF);
}
const int activeLabel = g_navigationManager.previewType;
const int labelCount = static_cast<int>(g_navigationManager.routeLines.size());
for (int index = 0; index < labelCount; ++index) {
if (g_navigationManager.routeLines[index].kind == activeLabel) {
const int x = g_navigationManager.routeLines[index].x;
const int y = g_navigationManager.routeLines[index].y;
this->DrawTextAt(x + 1, y + 1, g_navigationManager.routeLines[index].text.c_str(), 0, 0, 12, 0x1E1E1E, 0, 0);
this->DrawTextAt(x, y, g_navigationManager.routeLines[index].text.c_str(), 0, 0, 12, 0xE6E6E6, 0, 0);
}
}
}
// OFFSET: 0x00935A00
// FUNCTION: fn_12749
int UINavigationWnd::SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3,
std::intptr_t argument4) {
switch (message) {
case UM_SETINFO:
this->m_saved = reinterpret_cast<NavigationWndInfo*>(argument1);
reinterpret_cast<NavigationWindowInfo*>(this->m_saved)->Clamp();
this->Move(this->m_saved->x, this->m_saved->y);
this->Invalidate();
return 0;
case UM_COMMAND:
if (argument1 != ID_SELECT_ITEM && argument1 != 0x1B9) {
this->RecordResponse(static_cast<int>(argument1), argument2, argument3, argument4);
}
switch (argument1) {
case ID_OK: {
this->Invalidate();
int result = g_navigationManager.SaveCurrentTarget();
if (result == 0) {
{
NavigationTarget target = g_navigationManager.GetSavedTarget();
result = g_navigationManager.Navigate(target.x, target.y);
}
if (result >= 0) {
this->SendMsg(this, UM_COMMAND, ID_BUTTON1, 0, 0, 0);
this->RefreshRouteList();
if (g_windowMgr.modal) {
static_cast<UINavigationWnd*>(g_windowMgr.modal)->RefreshWorldMapMarks();
}
}
}
g_navigationManager.ShowRouteResult(result, 1);
return 0;
}
case ID_SEARCH:
if (this->m_titleBar->Length() != 0) {
g_navigationManager.searchText = this->m_titleBar->Text();
g_navigationManager.RefreshSearch();
this->SendMsg(this, UM_COMMAND, ID_BUTTON2, 0, 0, 0);
if (g_windowMgr.modal) {
static_cast<UINavigationWnd*>(g_windowMgr.modal)->RefreshWorldMapLevels();
return 0;
}
}
break;
case ID_SELECT_ITEM:
if (g_replayAnimationScaling == 0) {
argument2 = this->m_routePanel->selected;
}
if (argument2 != -1) {
this->RecordResponse(static_cast<int>(argument1), argument2, argument3, argument4);
const int index = static_cast<int>(argument2) - this->m_routePanel->LineOffset();
if (index >= 0 && g_navigationManager.SelectState(index)) {
if (g_windowMgr.modal) {
static_cast<UINavigationWnd*>(g_windowMgr.modal)->RefreshWorldMapSelection();
}
this->Invalidate();
return 0;
}
}
break;
case 0x1AD:
if (!g_navigationManager.expandedMap && this->m_saved->minimized) {
const int targetType = g_navigationManager.GetCurrentTarget().type;
if (targetType != 1 && targetType != 6 && targetType != 0) {
if (g_navigationManager.previewType == 1) {
g_navigationManager.previewType = 2;
this->Invalidate();
return 0;
}
if (g_navigationManager.previewType == 2) {
g_navigationManager.previewType = 1;
}
this->Invalidate();
return 0;
}
}
break;
case 0x11C:
this->m_saved->minimized = !this->m_saved->minimized;
this->ApplyMinimized();
this->Invalidate();
return 0;
case ID_MINI:
g_navigationManager.expandedMap = !g_navigationManager.expandedMap;
this->ApplyMinimized();
this->RefreshHeaderTexts(g_navigationManager.viewMode);
if (g_navigationManager.expandedMap && g_windowMgr.modal) {
static_cast<UIRoMapWnd*>(g_windowMgr.modal)->UpdateNavigationButtons();
return 0;
}
break;
case ID_CLOSE:
if (g_navigationManager.viewMode == 2) {
const int response = g_windowMgr.Confirm(LookupMessage(MSI_NAVIGATION_HELP2), 2, true, false, 0, "Message", 280, 120, 0);
if (response != 0xBB) {
break;
}
g_navigationManager.SetViewMode(0);
}
g_worldViewMgr.ClearMarks();
g_worldViewMgr.ClearLevels();
g_worldViewMgr.ResetSelection();
g_navigationManager.Reset(true);
g_navigationManager.expandedMap = false;
g_navigationManager.hideWindow = false;
if (g_windowMgr.modal) {
g_navigationManager.expandedMap = true;
static_cast<UIRoMapWnd*>(g_windowMgr.modal)->UpdateNavigationButtons();
return 0;
}
g_windowMgr.Schedule(this);
g_windowMgr.navigationWnd = nullptr;
return 0;
case ID_BUTTON1:
g_navigationManager.displayMode = 1;
this->LayoutTabs();
return 0;
case ID_BUTTON2:
g_navigationManager.displayMode = 0;
this->LayoutTabs();
return 0;
case 0xBF: {
if (g_windowMgr.comboBoxWnd) {
g_windowMgr.CloseWindow(WID_COMBOBOXWND);
}
this->ClearHistory();
const std::string directory = FormatOwnedString("%s\\Navigationdata\\", g_applicationDirectory);
EnumerateFileNames(this->m_history, directory.c_str(), "txt");
const int count = static_cast<int>(this->m_history.size());
if (count != 0) {
UIWindow* historyWindow = g_windowMgr.EnsureWindow(WID_COMBOBOXWND);
for (std::vector<std::string>::iterator it = this->m_history.begin(); it != this->m_history.end(); ++it) {
historyWindow->SendMsg(nullptr, UM_ADDITEM, reinterpret_cast<std::intptr_t>(it->c_str()), 0, 0, 0);
}
const int height = (std::min)(0xA0, count * 0x10);
historyWindow->SendMsg(nullptr, UM_SETCURITEM, 0, 0, 0, 0);
historyWindow->Resize(0xA0, height);
historyWindow->SendMsg(nullptr, UM_SET_CALLER_WID, 0xCB, 0, 0, 0);
int x = this->geometry.width - 0xA5;
int y = 0x24;
this->ToScreen(x, y);
historyWindow->Move(x, y);
}
return 0;
}
case ID_CHECK:
if (sender == this->m_allowGates) {
g_navigationManager.allowGates = argument2 != 0;
return 0;
}
if (sender == this->m_includeObjects) {
g_navigationManager.includeObjects = argument2 != 0;
return 0;
}
if (sender == this->m_allowWarps) {
g_navigationManager.allowWarps = argument2 != 0;
return 0;
}
break;
case ID_HELP:
if (!g_windowMgr.CloseWindow(WID_NAVIGATIONHELPWND)) {
g_windowMgr.EnsureWindow(WID_NAVIGATIONHELPWND);
return 0;
}
break;
case 0x1B9:
if (g_replayAnimationScaling == 0) {
argument2 = this->m_searchPanel->selected;
}
if (argument2 != -1) {
this->RecordResponse(0x1B9, argument2, argument3, argument4);
if (g_navigationManager.SelectTarget(static_cast<int>(argument2) - this->m_searchPanel->LineOffset())) {
if (g_windowMgr.modal) {
static_cast<UINavigationWnd*>(g_windowMgr.modal)->RefreshWorldMapSelection();
}
this->Invalidate();
return 0;
}
}
break;
default:
break;
}
break;
case UM_COMBOBOX_SELECTED:
if (this->m_searchType == sender) {
g_navigationManager.searchType = static_cast<int>(argument1);
this->Invalidate();
if (g_replayAnimationScaling != 0) {
this->m_searchType->SendMsg(nullptr, UM_CHANGEMSG, argument1, 0, 0, 0);
return 0;
}
break;
}
if (g_replayAnimationScaling == 0) {
this->LoadRoute(static_cast<int>(argument1));
return 0;
}
break;
case UM_ADDITEM:
switch (argument1) {
case ID_SELECT_ITEM:
this->m_routePanel->AddLine(reinterpret_cast<const char*>(argument2));
break;
case 0x1B9:
this->m_searchPanel->AddLine(reinterpret_cast<const char*>(argument2));
break;
}
case UM_DEFPUSH:
if (this->m_titleBar == sender && this->m_titleBar->Length() > 0) {
this->SendMsg(this->m_titleBar, UM_COMMAND, ID_SEARCH, 0, 0, 0);
return 0;
}
case UM_RESIZE:
if (argument1 == 7) {
const int height = (std::min)(std::ranges::max(static_cast<int>(argument3), 0x152), 0x152);
this->m_saved->height = height;
this->ApplyMinimized();
}
break;
default:
return UIFrameWnd::SendMsg(sender, message, argument1, argument2, argument3, argument4);
}
return 0;
}
// OFFSET: 0x0093D620
// FUNCTION: fn_12769
void UINavigationWnd::FillRouteList() {
this->m_routePanel->Invalidate();
this->m_routePanel->Clear();
if (g_navigationManager.StateCount() == 0) {
return;
}
char text[64];
std::memset(text, 0, sizeof(text));
std::sprintf(text, LookupMessage(MSI_NAVIGATION_MAP_S), g_navigationManager.StateCount());
this->SendMsg(nullptr, UM_ADDITEM, 0x150, reinterpret_cast<std::intptr_t>(text), 0, 0);
this->m_routePanel->SetLineOffset(1);
for (int index = 0; index < g_navigationManager.StateCount(); ++index) {
std::memset(text, 0, sizeof(text));
NavigationTarget state = g_navigationManager.GetState(index);
if (state.type == 2) {
CNavi_Object* object = static_cast<CNavi_Object*>(state.object);
std::sprintf(text, LookupMessage(MSI_NAVIGATION_RESULTINFO), object->GetInfo()->GetName(), object->GetName());
} else if (state.type == 3) {
CNavi_Object* object = static_cast<CNavi_Object*>(state.object);
const int flag = object->GetFlag();
if (flag > 0) {
std::string kind = "없음";
if (flag > 99) {
kind = LookupMessage(MSI_NAVIGATION_NUM4);
} else if (flag > 49) {
kind = LookupMessage(MSI_NAVIGATION_NUM5);
} else if (flag >= 20 && flag <= 49) {
kind = LookupMessage(MSI_BANK_SYSTEM_ERROR);
} else if (flag >= 5 && flag <= 19) {
kind = LookupMessage(MSI_BANK_WITHDRAW_NO_MONEY);
} else if (flag >= 1 && flag <= 4) {
kind = LookupMessage(MSI_BANK_DEPOSIT_NO_MONEY);
}
std::sprintf(text, LookupMessage(MSI_NAVIGATION_NUM2), object->GetInfo()->GetName(), object->GetName(), kind.c_str());
} else {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_LENGTH), object->GetInfo()->GetName(), object->GetName());
}
} else if (state.type == 1) {
std::sprintf(text, LookupMessage(MSI_NAVIGATION_TARGETMAP_S_S), static_cast<CNaviInfo*>(state.object)->GetName());
} else if (state.type == 0) {
CNaviInfo* info = static_cast<CNaviInfo*>(state.object);
if (state.name.empty()) {
std::sprintf(text, LookupMessage(MSI_REFUSE_ERRORCODE), info->GetName(), state.x, state.y);
} else {
std::sprintf(text, LookupMessage(MSI_REFUSE_DISCONNECT_KEEP_TIME), state.name.c_str(), info->GetName(), state.x, state.y);
}
}
this->SendMsg(nullptr, UM_ADDITEM, 0x150, reinterpret_cast<std::intptr_t>(text), 0, 0);
}
}
// OFFSET: 0x00917000
// FUNCTION: fn_12587
bool UINavigationWnd::ClearHistory() {
for (std::vector<std::string>::iterator it = this->m_history.begin(); it != this->m_history.end(); ++it) {
it->clear();
}
this->m_history.clear();
return true;
}