Showing preview only (3,929K chars total). Download the full file or copy to clipboard to get everything.
Repository: Kagamia/WzComparerR2
Branch: master
Commit: db2dc902e065
Files: 542
Total size: 3.6 MB
Directory structure:
gitextract_7zirm0f1/
├── .gitattributes
├── .gitignore
├── .gitmodules
├── Build/
│ ├── Common.props
│ └── WcR2Plugin.targets
├── LICENSE
├── README.md
├── UpdateLogs/
│ ├── dev.md
│ ├── v2.0.1.md
│ ├── v2.0.9.md
│ ├── v2.1.1.md
│ └── v2.1.md
├── WzComparerR2/
│ ├── AnimateEncoderFactory.cs
│ ├── CharaSim/
│ │ ├── CharaEquip.cs
│ │ ├── CharaProp.cs
│ │ ├── CharaSimLoader.cs
│ │ ├── Character.cs
│ │ └── CharacterStatus.cs
│ ├── CharaSimControl/
│ │ ├── AControl.cs
│ │ ├── ACtrlButton.cs
│ │ ├── ACtrlVScroll.cs
│ │ ├── AfrmEquip.cs
│ │ ├── AfrmItem.cs
│ │ ├── AfrmStat.cs
│ │ ├── AfrmTooltip.cs
│ │ ├── ButtonState.cs
│ │ ├── CharaSimControlGroup.cs
│ │ ├── DamageSkinTooltipRender.cs
│ │ ├── FamiliarTooltipRender.cs
│ │ ├── GearGraphics.cs
│ │ ├── GearTooltipRender.cs
│ │ ├── GearTooltipRender2.cs
│ │ ├── ItemMouseEventArgs.cs
│ │ ├── ItemMouseEventHandler.cs
│ │ ├── ItemTooltipRender.cs
│ │ ├── ItemTooltipRender2.cs
│ │ ├── MobTooltipRenderer.cs
│ │ ├── NpcTooltipRenderer.cs
│ │ ├── RecipeTooltipRender.cs
│ │ ├── RenderHelper.cs
│ │ ├── SetItemTooltipRender.cs
│ │ ├── SkillTooltipRender.cs
│ │ ├── SkillTooltipRender2.cs
│ │ ├── TextBlock.cs
│ │ └── TooltipRender.cs
│ ├── Comparer/
│ │ ├── CompareDifference.cs
│ │ ├── DifferenceType.cs
│ │ ├── EasyComparer.cs
│ │ ├── WzFileComparer.cs
│ │ ├── WzPngComparison.cs
│ │ └── WzVirtualNode.cs
│ ├── Config/
│ │ ├── CharaSimConfig.cs
│ │ ├── CharaSimDamageSkinConfig.cs
│ │ ├── CharaSimGearConfig.cs
│ │ ├── CharaSimItemConfig.cs
│ │ ├── CharaSimMobConfig.cs
│ │ ├── CharaSimNpcConfig.cs
│ │ ├── CharaSimRecipeConfig.cs
│ │ ├── CharaSimSkillConfig.cs
│ │ ├── CustomCSSConfig.cs
│ │ ├── ImageHandlerConfig.cs
│ │ ├── MosaicInfo.cs
│ │ └── WcR2Config.cs
│ ├── DBConnection.cs
│ ├── Dotnet4Polyfill.cs
│ ├── Dotnet6Patches.cs
│ ├── DownloadingItem.cs
│ ├── FrmAbout.Designer.cs
│ ├── FrmAbout.cs
│ ├── FrmAbout.resx
│ ├── FrmCustomCSS.Designer.cs
│ ├── FrmCustomCSS.cs
│ ├── FrmCustomCSS.resx
│ ├── FrmGifClipOptions.Designer.cs
│ ├── FrmGifClipOptions.cs
│ ├── FrmGifClipOptions.resx
│ ├── FrmGifMaker.Designer.cs
│ ├── FrmGifMaker.cs
│ ├── FrmGifMaker.resx
│ ├── FrmGifSetting.Designer.cs
│ ├── FrmGifSetting.cs
│ ├── FrmGifSetting.resx
│ ├── FrmOptions.Designer.cs
│ ├── FrmOptions.cs
│ ├── FrmOptions.resx
│ ├── FrmPatcher.Designer.cs
│ ├── FrmPatcher.cs
│ ├── FrmPatcher.resx
│ ├── FrmQuickViewSetting.Designer.cs
│ ├── FrmQuickViewSetting.cs
│ ├── FrmQuickViewSetting.resx
│ ├── FrmUpdater.Designer.cs
│ ├── FrmUpdater.cs
│ ├── FrmUpdater.resx
│ ├── HistoryList.cs
│ ├── ImageDragHandler.cs
│ ├── MainForm.Designer.cs
│ ├── MainForm.cs
│ ├── MainForm.resx
│ ├── MemoryTributary.cs
│ ├── Patcher/
│ │ ├── Builder/
│ │ │ ├── BuildInstruction.cs
│ │ │ ├── BuildType.cs
│ │ │ ├── CheckSum.cs
│ │ │ ├── InflateStream.cs
│ │ │ ├── PatchPart.cs
│ │ │ ├── PatchType.cs
│ │ │ ├── StreamUtils.cs
│ │ │ ├── WzPatcherReader.cs
│ │ │ └── WzPatcherWriter.cs
│ │ ├── PatchPartContext.cs
│ │ ├── PatcherSetting.cs
│ │ ├── PatcherSettingCollection.cs
│ │ ├── PatchingEventArgs.cs
│ │ ├── PatchingState.cs
│ │ ├── ReversePatcherBuilder.cs
│ │ └── WzPatcher.cs
│ ├── PictureBoxEx.cs
│ ├── PluginLoadContext.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── QueryPerformance.cs
│ ├── SoundPlayer/
│ │ ├── BassSoundPlayer.cs
│ │ ├── CustomSoundFile.cs
│ │ ├── ISoundFile.cs
│ │ ├── ISoundPlayer.cs
│ │ └── PlayState.cs
│ ├── Updater.cs
│ ├── WzComparerR2.csproj
│ ├── app.config
│ └── app.manifest
├── WzComparerR2.Avatar/
│ ├── Action.cs
│ ├── ActionFrame.cs
│ ├── AvatarCanvas.cs
│ ├── AvatarPart.cs
│ ├── Bone.cs
│ ├── Entry.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Skin.cs
│ ├── UI/
│ │ ├── AvatarCodeForm.Designer.cs
│ │ ├── AvatarCodeForm.cs
│ │ ├── AvatarCodeForm.resx
│ │ ├── AvatarContainer.Designer.cs
│ │ ├── AvatarContainer.cs
│ │ ├── AvatarForm.Designer.cs
│ │ ├── AvatarForm.cs
│ │ ├── AvatarForm.resx
│ │ ├── AvatarPartButtonItem.Designer.cs
│ │ ├── AvatarPartButtonItem.cs
│ │ └── AvatarPartButtonItem.resx
│ └── WzComparerR2.Avatar.csproj
├── WzComparerR2.Common/
│ ├── Animation/
│ │ ├── Frame.cs
│ │ ├── FrameAnimationData.cs
│ │ ├── FrameAnimator.cs
│ │ ├── ISpineAnimationData.cs
│ │ ├── ISpineAnimator.cs
│ │ ├── KeyFrame.cs
│ │ ├── MaplestoryCanvasVideoLoader.cs
│ │ ├── ModelBound.cs
│ │ ├── SpineAnimationDataV2.cs
│ │ ├── SpineAnimationDataV4.cs
│ │ ├── SpineAnimatorV2.cs
│ │ ├── SpineAnimatorV4.cs
│ │ └── WzSpineTextureLoader.cs
│ ├── BitmapOrigin.cs
│ ├── Calculator.cs
│ ├── CharaSim/
│ │ ├── Addition.cs
│ │ ├── AdditionType.cs
│ │ ├── AlienStone.cs
│ │ ├── AlienStoneGrade.cs
│ │ ├── DamageSkin.cs
│ │ ├── ExclusiveEquip.cs
│ │ ├── Familiar.cs
│ │ ├── FormulaVersion.cs
│ │ ├── Gear.cs
│ │ ├── GearGrade.cs
│ │ ├── GearLevelInfo.cs
│ │ ├── GearPropType.cs
│ │ ├── GearSealedInfo.cs
│ │ ├── GearState.cs
│ │ ├── GearType.cs
│ │ ├── HyperSkillType.cs
│ │ ├── Item.cs
│ │ ├── ItemBase.cs
│ │ ├── ItemBaseType.cs
│ │ ├── ItemPropType.cs
│ │ ├── ItemSpecType.cs
│ │ ├── ItemStringHelper.cs
│ │ ├── Mob.cs
│ │ ├── MobElemAttr.cs
│ │ ├── Npc.cs
│ │ ├── Potential.cs
│ │ ├── Recipe.cs
│ │ ├── RecipeItemInfo.cs
│ │ ├── RecipePropType.cs
│ │ ├── SetItem.cs
│ │ ├── SetItemActiveSkill.cs
│ │ ├── SetItemBonusByTime.cs
│ │ ├── SetItemEffect.cs
│ │ ├── SetItemIDList.cs
│ │ ├── SetItemIDPart.cs
│ │ ├── SetItemOptionToMob.cs
│ │ ├── Skill.cs
│ │ ├── SummaryParams.cs
│ │ └── SummaryParser.cs
│ ├── Config/
│ │ ├── ConfigArrayList.cs
│ │ ├── ConfigItem.cs
│ │ ├── ConfigItemCollectionBase.cs
│ │ ├── ConfigManager.cs
│ │ ├── ConfigSectionBase.cs
│ │ └── SectionNameAttribute.cs
│ ├── Controls/
│ │ ├── AlphaForm.cs
│ │ ├── AnimationClipOptions.cs
│ │ ├── AnimationControl.Designer.cs
│ │ ├── AnimationControl.cs
│ │ ├── AnimationItem.cs
│ │ ├── AnimationItemEventArgs.cs
│ │ ├── AnimationRecoder.cs
│ │ ├── FrmProgressDialog.Designer.cs
│ │ ├── FrmProgressDialog.cs
│ │ ├── FrmProgressDialog.resx
│ │ ├── GraphicsDeviceControl.cs
│ │ ├── GraphicsDeviceService.cs
│ │ ├── ProgressDialog.cs
│ │ ├── ProgressDialogContext.cs
│ │ └── ServiceContainer.cs
│ ├── Encoders/
│ │ ├── BuildInApngEncoder.cs
│ │ ├── BuildInGifEncoder.cs
│ │ ├── FFmpegEncoder.cs
│ │ ├── GifEncoder.cs
│ │ ├── GifEncoderCompatibility.cs
│ │ └── IndexGifEncoder.cs
│ ├── Gif.cs
│ ├── GifCanvas.cs
│ ├── GifFrame.cs
│ ├── GifLayer.cs
│ ├── GlobalFindNodeFunction.cs
│ ├── IGifFrame.cs
│ ├── ImageDataObject.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Rendering/
│ │ ├── AnimationGraphics.cs
│ │ ├── BlendEx.cs
│ │ ├── D2DContext.cs
│ │ ├── D2DFactory.cs
│ │ ├── D2DFont.cs
│ │ ├── D2DRenderer.cs
│ │ ├── DxExtension.cs
│ │ ├── Effect/
│ │ │ ├── EffectCompiler.bat
│ │ │ ├── Macros.fxh
│ │ │ ├── PngEffect.3.8.0.1641.mgfxo
│ │ │ ├── PngEffect.3.8.1.303.mgfxo
│ │ │ ├── PngEffect.3.8.2.1105.mgfxo
│ │ │ └── PngEffect.fx
│ │ ├── EffectCompiler/
│ │ │ ├── ConstantBuffer.cs
│ │ │ ├── Internal/
│ │ │ │ ├── ConstantBufferData.cs
│ │ │ │ ├── D3DXObjects.cs
│ │ │ │ ├── EffectObject.cs
│ │ │ │ └── ShaderData.cs
│ │ │ ├── SampleInfo.cs
│ │ │ ├── ShaderConverter.cs
│ │ │ └── ShaderStage.cs
│ │ ├── MonogameUtils.cs
│ │ ├── PngEffect.cs
│ │ ├── SpriteBatchEx.cs
│ │ ├── SurfaceFormatEx.cs
│ │ ├── TextUtils.cs
│ │ ├── Texture2DEx.cs
│ │ ├── WzLibExtension.cs
│ │ ├── XnaFont.cs
│ │ └── XnaFontRenderer.cs
│ ├── SpineLoader.cs
│ ├── StringLinker.cs
│ ├── StringResult.cs
│ ├── Text/
│ │ ├── DocumentElements.cs
│ │ ├── Parser.cs
│ │ ├── TextAlignment.cs
│ │ └── TextRenderer.cs
│ ├── VpxVideoDecoder.cs
│ ├── WzComparerR2.Common.csproj
│ └── Wz_NodeExtension2.cs
├── WzComparerR2.LuaConsole/
│ ├── AppSyntaxModeProvider.cs
│ ├── Config/
│ │ └── LuaConsoleConfig.cs
│ ├── Entry.cs
│ ├── Examples/
│ │ ├── DumpAnimations.lua
│ │ ├── DumpImages.lua
│ │ ├── DumpSounds.lua
│ │ ├── DumpXml.lua
│ │ └── Helper.lua
│ ├── FrmConsole.Designer.cs
│ ├── FrmConsole.cs
│ ├── FrmConsole.resx
│ ├── FrmLuaEditor.Designer.cs
│ ├── FrmLuaEditor.cs
│ ├── FrmLuaEditor.resx
│ ├── Lua/
│ │ └── CLRPackage.lua
│ ├── LuaSandbox.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources/
│ │ ├── Lua.xshd
│ │ └── SharpLua.xshd
│ └── WzComparerR2.LuaConsole.csproj
├── WzComparerR2.MapRender/
│ ├── Animation/
│ │ ├── IStateMachineAnimationData.cs
│ │ ├── RepeatableFrameAnimationData.cs
│ │ ├── RepeatableFrameAnimator.cs
│ │ └── StateMachineAnimator.cs
│ ├── Camera.cs
│ ├── Chat.cs
│ ├── Config/
│ │ └── MapRenderConfig.cs
│ ├── Coroutine.cs
│ ├── Effects/
│ │ ├── EffectResources.cs
│ │ ├── NativeShaderDesc.cs
│ │ ├── Resources/
│ │ │ └── Native/
│ │ │ ├── GrayTintWorldMask
│ │ │ ├── alpha
│ │ │ ├── alphaMap
│ │ │ ├── alphaMaps
│ │ │ ├── blurRadial
│ │ │ ├── blurX
│ │ │ ├── blurY
│ │ │ ├── colorModulate
│ │ │ ├── default
│ │ │ ├── glitch
│ │ │ ├── grayScale
│ │ │ ├── lens
│ │ │ ├── light
│ │ │ ├── overlayBlend
│ │ │ ├── pointLight
│ │ │ ├── refract
│ │ │ ├── rope
│ │ │ ├── textureBinaryMask
│ │ │ ├── textureMask
│ │ │ ├── vs_position_color_texture
│ │ │ ├── waterBack
│ │ │ ├── waterFront
│ │ │ └── wave
│ │ └── ShaderMaterials.cs
│ ├── Entry.cs
│ ├── FpsCounter.cs
│ ├── FrmMapRender.cs
│ ├── FrmMapRender2.SceneManager.cs
│ ├── FrmMapRender2.SceneRendering.cs
│ ├── FrmMapRender2.cs
│ ├── GameExt.cs
│ ├── IRandom.cs
│ ├── ITooltip.cs
│ ├── IWcR2Font.cs
│ ├── InputState.cs
│ ├── LifeInfo.cs
│ ├── LightRenderer.cs
│ ├── LineListMesh.cs
│ ├── MapData.cs
│ ├── MapEvent.cs
│ ├── MapLight.cs
│ ├── MapRenderFonts.cs
│ ├── MapScene.cs
│ ├── MathHelper2.cs
│ ├── MeshBatcher.cs
│ ├── MeshItem.cs
│ ├── MiniMap.cs
│ ├── MouseButton.cs
│ ├── MsCustomSprite.cs
│ ├── MsSpriteRenderer.cs
│ ├── Music.cs
│ ├── Particle.cs
│ ├── ParticleDesc.cs
│ ├── ParticleDesc1.cs
│ ├── ParticleDesc3.cs
│ ├── ParticleEmitter.cs
│ ├── ParticleRandom.cs
│ ├── ParticleSystem.cs
│ ├── PatchVisibility.cs
│ ├── Patches/
│ │ ├── BackPatch.cs
│ │ ├── FootholdPatch.cs
│ │ ├── LadderRopePatch.cs
│ │ ├── LifePatch.cs
│ │ ├── ObjTilePatch.cs
│ │ ├── PortalPatch.cs
│ │ ├── ReactorPatch.cs
│ │ ├── RenderObjectType.cs
│ │ ├── RenderPatch.cs
│ │ └── TooltipPatch.cs
│ ├── Patches2/
│ │ ├── BackItem.cs
│ │ ├── FootholdItem.cs
│ │ ├── IlluminantClusterItem.cs
│ │ ├── ItemEvent.cs
│ │ ├── LadderRopeItem.cs
│ │ ├── LifeItem.cs
│ │ ├── ObjItem.cs
│ │ ├── ParticleItem.cs
│ │ ├── PortalItem.cs
│ │ ├── QuestInfo.cs
│ │ ├── ReactorItem.cs
│ │ ├── SceneItem.cs
│ │ ├── SkyWhaleItem.cs
│ │ ├── TileItem.cs
│ │ └── TooltipItem.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── RenderAnimate.cs
│ ├── RenderArgs.cs
│ ├── RenderEnv.cs
│ ├── RenderFrame.cs
│ ├── ResourceLoader.cs
│ ├── SceneNode.cs
│ ├── TextMesh.cs
│ ├── TextureAtlas.cs
│ ├── TextureLoader.cs
│ ├── TileMode.cs
│ ├── UI/
│ │ ├── ColorWConverter.cs
│ │ ├── HitMap.cs
│ │ ├── ITooltipTarget.cs
│ │ ├── LCRBrush.cs
│ │ ├── MapRenderButtonStyle.cs
│ │ ├── MapRenderResourceKey.cs
│ │ ├── MapRenderUIRoot.cs
│ │ ├── MessageBoxBackgroundBrush.cs
│ │ ├── MessageBoxStyle.cs
│ │ ├── NineFormResource.cs
│ │ ├── NinePatchBrush.cs
│ │ ├── TCBBrush.cs
│ │ ├── TextBoxEx.cs
│ │ ├── Tooltip.cs
│ │ ├── Tooltip2.cs
│ │ ├── TooltipHelper.cs
│ │ ├── UIChatBox.cs
│ │ ├── UIDanmaku.cs
│ │ ├── UIGraphics.cs
│ │ ├── UIHelper.cs
│ │ ├── UIMiniMap.cs
│ │ ├── UIMinimap2.cs
│ │ ├── UIMirrorFrame.cs
│ │ ├── UIOptions.cs
│ │ ├── UITeleport.cs
│ │ ├── UITopBar.cs
│ │ ├── UIWorldMap.cs
│ │ ├── WcR2Engine.cs
│ │ ├── WcR2Renderer.cs
│ │ └── WindowEx.cs
│ └── WzComparerR2.MapRender.csproj
├── WzComparerR2.Network/
│ ├── Contracts/
│ │ ├── ByteArrayConverter.cs
│ │ ├── PackCryptReq.cs
│ │ ├── PackCryptResp.cs
│ │ ├── PackCustomPackage.cs
│ │ ├── PackGetAllUsersReq.cs
│ │ ├── PackGetAllUsersResp.cs
│ │ ├── PackGetServerInfoReq.cs
│ │ ├── PackGetServerInfoResp.cs
│ │ ├── PackHeartBeat.cs
│ │ ├── PackLoginReq.cs
│ │ ├── PackLoginResp.cs
│ │ ├── PackOnChat.cs
│ │ ├── PackOnCustomPackage.cs
│ │ ├── PackOnServerMessage.cs
│ │ ├── PackOnUserUpdate.cs
│ │ ├── PackSendChat.cs
│ │ ├── PackUserProfileUpdateReq.cs
│ │ └── TypeNameBinder.cs
│ ├── Entry.cs
│ ├── Log.cs
│ ├── LoggerForm.Designer.cs
│ ├── LoggerForm.cs
│ ├── LoggerForm.resx
│ ├── NativeMethods.cs
│ ├── NetworkConfig.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── RC4CryptoServiceProvider.cs
│ ├── RingBufferStream.cs
│ ├── WcClient.cs
│ └── WzComparerR2.Network.csproj
├── WzComparerR2.PluginBase/
│ ├── FindWzEventArgs.cs
│ ├── FindWzEventHandler.cs
│ ├── PluginContext.cs
│ ├── PluginContextProvider.cs
│ ├── PluginEntry.cs
│ ├── PluginInfo.cs
│ ├── PluginManager.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── WzComparerR2.PluginBase.csproj
│ ├── WzNodeEventArgs.cs
│ └── WzStructureEventArgs.cs
├── WzComparerR2.Updater/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── WzComparerR2.Updater.csproj
│ └── app.manifest
├── WzComparerR2.WzLib/
│ ├── Compatibility/
│ │ ├── WzDirStringReader.cs
│ │ ├── WzOffsetCalc.cs
│ │ ├── WzPreReadProvider.cs
│ │ ├── WzVersionProfile.cs
│ │ └── WzVersionVerifier.cs
│ ├── Cryptography/
│ │ ├── ChaCha20CryptoTransform.cs
│ │ └── Snow2CryptoTransform.cs
│ ├── IMapleStoryBlob.cs
│ ├── IMapleStoryFile.cs
│ ├── IMapleStoryFileEntry.cs
│ ├── Interop.cs
│ ├── Mcv_Types.cs
│ ├── Ms_Entry.cs
│ ├── Ms_File.cs
│ ├── Ms_FileV2.cs
│ ├── Ms_Header.cs
│ ├── Ms_Image.cs
│ ├── Ms_ImageV2.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Utilities/
│ │ ├── ChunkedEncryptedInputStream.cs
│ │ ├── CollectionsMarshal.cs
│ │ ├── ConcatenatedStream.cs
│ │ ├── IWzDecrypter.cs
│ │ ├── IWzStringPool.cs
│ │ ├── ImageCodec.cs
│ │ ├── MathHelper.cs
│ │ ├── PartialStream.cs
│ │ ├── SimpleWzStringPool.cs
│ │ ├── StreamExtension.cs
│ │ ├── WzBinaryReader.cs
│ │ └── WzStreamReader.cs
│ ├── WzComparerR2.WzLib.csproj
│ ├── Wz_Capabilities.cs
│ ├── Wz_Convex.cs
│ ├── Wz_Crypto.cs
│ ├── Wz_Directory.cs
│ ├── Wz_File.cs
│ ├── Wz_Header.cs
│ ├── Wz_Image.cs
│ ├── Wz_Node.cs
│ ├── Wz_Png.cs
│ ├── Wz_RawData.cs
│ ├── Wz_Sound.cs
│ ├── Wz_SoundType.cs
│ ├── Wz_Structure.cs
│ ├── Wz_Type.cs
│ ├── Wz_Uol.cs
│ ├── Wz_Vector.cs
│ └── Wz_Video.cs
├── WzComparerR2.sln
└── azure-pipelines.yml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
# build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studo 2015 cache/options directory
.vs/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
*.[Cc]ache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Ignore WcR2 temp directory
OldVer/
!References/x86/
!References/x64/
================================================
FILE: .gitmodules
================================================
[submodule "CharaSimResource"]
path = CharaSimResource
url = https://github.com/Kagamia/CharaSimResource.git
================================================
FILE: Build/Common.props
================================================
<Project>
<!-- common c# language build config -->
<PropertyGroup>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<LangVersion>latest</LangVersion>
<Nullable>disable</Nullable>
</PropertyGroup>
<!-- disable code analysis -->
<PropertyGroup>
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
<RunAnalyzers>false</RunAnalyzers>
</PropertyGroup>
<!-- net6 -->
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch($(TargetFramework), '^net8'))">
<ImplicitUsings>disable</ImplicitUsings>
<NoWarn>CA1416</NoWarn>
<DotnetEdition>core</DotnetEdition>
<MonogameFrameworkVersion>3.8.2.1105</MonogameFrameworkVersion>
<SystemDrawingCommonVersion>8.0.11</SystemDrawingCommonVersion>
</PropertyGroup>
<!-- net6 -->
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch($(TargetFramework), '^net6'))">
<ImplicitUsings>disable</ImplicitUsings>
<NoWarn>CA1416</NoWarn>
<DotnetEdition>core</DotnetEdition>
<MonogameFrameworkVersion>3.8.1.303</MonogameFrameworkVersion>
<SystemDrawingCommonVersion>6.0.0</SystemDrawingCommonVersion>
</PropertyGroup>
<!-- net framework -->
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch($(TargetFramework), '^net4'))">
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<DotnetEdition>framework</DotnetEdition>
<MonogameFrameworkVersion>3.8.0.1641</MonogameFrameworkVersion>
</PropertyGroup>
<!-- common -->
<PropertyGroup>
<SharpDXVersion>4.2.0</SharpDXVersion>
<SystemResourcesExtensionsVersion>8.0.0</SystemResourcesExtensionsVersion>
</PropertyGroup>
<!-- plugin specified property -->
<PropertyGroup Condition="$(WcR2Plugin) == 'true' and $(DotnetEdition) == 'core'">
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>
================================================
FILE: Build/WcR2Plugin.targets
================================================
<Project>
<PropertyGroup>
<MainProgramOutputDir Condition="'$(MainProgramOutputDir)' == ''">$(SolutionDir)WzComparerR2\bin\$(Configuration)\$(TargetFramework)</MainProgramOutputDir>
<PluginOutputDir Condition="'$(PluginOutputDir)' == ''">$(MainProgramOutputDir)\Plugin\$(MSBuildProjectName)</PluginOutputDir>
<NativeLibOutputDir Condition="'$(NativeLibOutputDir)' == ''">$(MainProgramOutputDir)\Lib</NativeLibOutputDir>
</PropertyGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('Windows'))">
<Exec Command="xcopy "$(TargetDir)*.dll" "$(PluginOutputDir)" /I /Y /F" />
<Exec Condition="$(DotnetEdition) == 'core'" Command="xcopy "$(TargetDir)*.deps.json" "$(PluginOutputDir)" /I /Y /F" />
<Exec Condition="$(DotnetEdition) == 'core'" Command="xcopy "$(TargetDir)*.runtimeconfig.json" "$(PluginOutputDir)" /I /Y /F" />
<Exec Condition="Exists('$(TargetDir)x86')" Command="xcopy "$(TargetDir)x86\*.dll" "$(NativeLibOutputDir)\x86" /I /Y /F" />
<Exec Condition="Exists('$(TargetDir)x64')" Command="xcopy "$(TargetDir)x64\*.dll" "$(NativeLibOutputDir)\x64" /I /Y /F" />
<Exec Condition="Exists('$(TargetDir)ARM64')" Command="xcopy "$(TargetDir)ARM64\*.dll" "$(NativeLibOutputDir)\ARM64" /I /Y /F" />
</Target>
</Project>
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright © 2015 Kagamia Studio
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
*<s>使用前先大喊 niconiconi! poi! duang!以减少bug发生率</s>*
[](https://dev.azure.com/kagamiastudio/WzComparerR2/_build/latest?definitionId=4&branchName=master)
# Maintenance Status
⚠️ The WzComparerR2 project is now in deep maintenance status. This means that only critical bugs or wz file format breaking changes are being considered for inclusion by owner. Expect slow replies to issues.
# WzComparerR2
这是一个用C# latest/.Net4.62+.Net8组装的冒险岛提取器...
包含了一些奇怪的机能比如stringWZ搜索 客户端对比 装备模拟 地图模拟等等..
tips: WcR2将尽力维持每周更新,Releases里**不会**提供最稳定版下载,最新版会通过azure-pipeline自动发布。
links: [\[更新日志\]](https://github.com/Kagamia/WzComparerR2/tree/master/UpdateLogs) [\[版本计划\]](https://github.com/Kagamia/WzComparerR2/wiki/Roadmap) [\[最新版下载\]](https://github.com/Kagamia/WzComparerR2/releases/tag/ci-build)
# Modules
- **WzComparerR2** 主程序
- **WzComparerR2.Common** 一些通用类
- **WzComparerR2.PluginBase** 插件管理器
- **WzComparerR2.WzLib** wz文件读取相关
- **CharaSimResource** 用于装备模拟的资源文件
- **WzComparerR2.LuaConsole** (可选插件)Lua控制台
- **WzComparerR2.MapRender** (可选插件)地图仿真器
- **WzComparerR2.Avatar** (可选插件)纸娃娃
- **WzComparerR2.Network** (可选插件)在线聊天室
# Prerequisite
- **2.x**: Win7sp1+/.net4.6.2+/dx11.0
- **1.x**: WinXp+/.net2.0+/dx9.0
# Installation
```sh
git clone --recurse-submodules -j8 git://github.com/Kagamia/WzComparerR2.git
```
Clone repository with submodules.
# Compile
- vs2022 or higher/.net 8 SDK
# Credits and Acknowledgement
- **Fiel** ([Southperry](http://www.southperry.net)) wz文件读取代码改造自WzExtract 以及WzPatcher
- **Index** ([Exrpg](http://bbs.exrpg.com/space-uid-137285.html)) MapRender的原始代码 以及libgif
- **Deneo** For .ms file format and video format
- [DotNetBar](http://www.devcomponents.com/)
- [SharpDX](https://github.com/sharpdx/SharpDX) & [Monogame](https://github.com/MonoGame/MonoGame)
- [BassLibrary](http://www.un4seen.com/)
- [IMEHelper](https://github.com/JLChnToZ/IMEHelper)
- [Spine-Runtime](https://github.com/EsotericSoftware/spine-runtimes)
- [EmptyKeysUI](https://github.com/EmptyKeys)
- [libvpx](https://www.webmproject.org/code/) & [libyuv](https://chromium.googlesource.com/libyuv/libyuv/) for video decoding
- [VC-LTL5](https://github.com/Chuyu-Team/VC-LTL5) for native library build
- All testers from CMST tester group.
================================================
FILE: UpdateLogs/dev.md
================================================
## 2018.7.5
### 共通
- 添加了一个api以利于插件输出error.log。
- 更新了buildin gif encoder以修复某些场合导出错误的bug。
### WzLib
- 修复了上次修复Uol链接推断的bug。
- 修复了上次新增支持读取独立的img文件的bug。
### CharaSim
- 修复某些动作下发型渲染错误的bug。
- 支持了宠物套装的渲染,添加宠物过期时间。
- 支持显示GMS按时间奖励的套装效果。
### MapRender
- 调整了粒子系统渲染效果。
- Worldmap支持了KMST1070的QuestLimit分阶段渲染机制。
## 2018.6.20
### 共通
- 支持了按照imgID进行排序。
- 配置文件中默认开启wz自动排序和自动加载扩展wz。
- File-Option里添加了一些新的配置项。
### WzLib
- 修复了wz类型推断的bug。
- 修复Uol链接推断的bug。
- 支持读取独立的img文件。
- 支持跳过img校验和检测,以识别老旧版本的客户端。
### CharaSim
- 称号支持模拟包含任务数量宏字符串。
- 添加Ark特殊装备类型的模拟。
- 添加KMST1069的新属性nbdR识别。
### MapRender
- 修复了阿斯旺地图特有的wz怪物声明的识别。
## 2018.4.25
### WzLib
- 重新设计数据结构,以减少内存占用。
### CharaSim
- 支持套装显示点装图标。
- 支持徽章的tag显示。
- 龙神的v5技能模拟可以超过等级上限了。
- 重新设计StringLinker数据结构,以减少内存占用。
### MapRender
- 修复了MapRender窗口反复开关引发的的内存泄露。
## 2018.4.13
### 共通
- 修复了BGR565格式纹理对于win8前系统的支持。
### MapRender
- 屏蔽了因输入框失去焦点导致的按键处理异常的错误。
### Patcher
- 添加了CMS的补丁地址。
## 2018.4.10
### MapRender
- 修复下拉菜单点击无效的bug。
- 支持更多交互命令。
## 2018.4.9
### MapRender
- 支持隐藏NPC和怪物名字。
- 更新了MessageBox样式。
- 修复了UIChatBox渲染模糊和操作上的bug。
## 2018.4.8
### WzLib
- 修复了format517图片解码错误的bug。
### MapRender
- 添加UIMessageBox用于各种提示信息。
- 添加UIChatBox,并支持了输入法,用于交互和显示提示。
- 临时修复粒子系统的渲染错误。
- UIWorldmap支持右键返回。
- 修复了back图层的渲染错误,支持blend模式。
- UI布局略微调整。
## 2018.3.23
### CharaSim
- 支持了KMST1066版本拆分的03xx.img物品识别。
## 2018.3.22
### Wz提取
- 修复了一个可能导致Gif/Apng导出有锯齿的bug。
### WzLib
- 修复了GetValue()导致搜索效率低下的bug。
- 调整string.intern过滤条件,减少字符串池常驻内存占用。
### MapRender
- UIWorldMap支持更丰富的tooltip信息,并且支持点击传送了。
- 修复UI绘图资源的潜在内存泄露。
================================================
FILE: UpdateLogs/v2.0.1.md
================================================
WzComparerR2 2.0.1
==================================
##共通:
- 程序已升级至C#6.0/.net4.0编译
- 程序已支持anyCPU编译 wcR2.exe(32位) wcR2.anyCPU.exe(32/64位自适应)
- 配置文件系统完全重制 旧有文件废弃并不继承 新的配置文件为setting.config
- 图片浏览模块完全重制 使用Monogame 3.4/DX11作为绘图引擎
- 图片保存模块完全重制 原因参考上一条
- 为了支持上述环境 程序最低运行环境为win7以上/显示卡支持dx11以上
- 目前没有计划重新支持xp/GL环境 但是理论上是可以支持的 您可以自行编译试试:)
##基础提取:
- 支持dxt5图片格式
- 支持CMST115版本后的套装属性合并的显示方式
- 支持KMST1033版本后的图片链接方式
- 支持Spine动画预览 方式为选择.altas节点 点击ExtractGif按钮
##UI变化:
- HandleUol按钮移动到wz内容浏览的右键菜单中
- Gif保存添加了更多选项 包括图片背景和文件命名方式
- 图片的拖拽保存需要按住ctrl才会执行了 普通的拖拽只是移动而已:)
##CharaSim:
- 爆破手职业装备支持
- 勋章预览支持
- 怪物卡片 NPC卡片功能已内置
- 技能等级上限提升至100
- 属性表达式计算器完全重制 如果有bug请报告
- 添加了更多的显示控制项 自行感受
##MapRender:
- 插件已废弃 准备重制
##MonsterCard:
- 插件已废弃 部分功能合并到主程序
================================================
FILE: UpdateLogs/v2.0.9.md
================================================
## 2017.7.6
### MapRender
- 更新至正式版本。
## 2017.6.25
### SoundPlayer
- 重新支持Bass插件,把插件放置在Lib/x86和Lib/x64中生效。
### MapRender2
- 更新了一个测试版本。
## 2017.6.18
### Avatar
- 修复了一个因主程序更新无法初始化的bug。
## 2017.6.11
### WzComparer
- Options实装,添加了一些全局设置,以解决GMS无法正确解析字符串的bug。
### Patcher
- 修复了多开时config文件保存不正确的bug
## 2017.6.2
### Comparer
- 使用大小写敏感的方式寻找link,大幅度优化对比速度。
- 修复了一个对比过程中手动回收img可能导致错误的bug。
- 稍微调整了输出文件样式,默认隐藏掉因开启ResolvePngLink无变动项的img对比结果。
## 2017.5.12
### Comparer
- 修复了在补丁对比过程中ResolvePngLink无法正常工作的bug。
## 2017.4.25
### CharaSim
- 装备模拟:能正确显示多行的套装效果了。
## 2017.3.20
### Comparer
- 修复了开启ResolvePngLink会出现OutOfMemoryException的bug,现在在对比中打开的image会自动回收了。
### WzLib
- 优化了忽略大小写的wz节点搜索方法。
### CharaSim
- 装备模拟:能量源重新正确的识别了。
## 2017.3.15
### CharaSim
- 装备模拟:支持识别更多特性,支持多行装备特性的排版。
- 修复上版本装备加载异常的bug。
- 默认字体调整回“宋体”。
## 2017.3.14
积累更新
### WzComparer
- 优化了wz节点搜索效率,不再突然卡死了。
- 关于里面可以看到插件的文件版本了。
### WzLib
- 添加了自定义Encoding的支持,用于特定场合下解决ansi字符串解析的bug。
### CharaSim
- 更新支持同步至最新CMST。
- 装备模拟:支持显示装备属性与标准属性差异,支持限时属性的模拟。
- 技能模拟:链接属性时不再识别数字开头的属性名称,以修复某些场合的解析bug。
### Comparer
- 支持对于Link的图片智能链接对比,以减少输出对比报告的文件大小。
## 2017.1.11
积累更新
### 共通
- 绘图引擎更新,大部分场合使用Bgra32替代Color作为后备绘图缓冲区像素格式,以提高文件保存与加载效率。
### CharaSim
- 迎接第5次转职,更新技能/道具/装备的仿真效果至最新CMST。
- 为了支持CharaSim其他语言版本开发,更新了支持非等宽字体和word-wrap的排版算法。
- 默认字体由宋体改为新宋体。
- 添加了一个韩文字体供测试。
- 装备模拟:移除魔法防御力/命中/回避,调整关于暴击伤害的显示,添加支持戒指特殊潜能显示。
- 道具模拟:添加道具等级显示,支持道具限时的显示。
- 略微调整文字坐标以适配最新游戏效果。
### Issue讨论中未更新内容
- #20:Ansi编码导致某些字符串显示错误问题(已确认,待解决)
- #19:装备特殊潜能等级的显示问题(CMS未确认)
- #15:技能模拟中宏变量引用无视大小写导致链接错误问题(GMS已确认,未更新)
- #14:套装模拟中文字范围溢出错误(已确认,未更新)
## 2016.10.27
### WzLib
- 修复了因CMS加密方式变更 导致Lua无法正常提取的bug
## 2016.10.18
### WzLib
- img导出xml移至WzLib作为扩展函数出现
- 修复了xml导出时对于SoundType.Binary无法正常导出的bug
### LuaConsole
- 实现lua文件载入和保存按钮功能
- 添加了一个使用脚本批量导出的example
## 2016.10.08
### 共通
- 添加了可以对img导出为xml的功能
## 2016.09.26
### CharaSim
- 修复Item无法识别link没有图标的bug
## 2016.09.16
### 共通
- wzlib读取结构变更 Wz_Image.Node.Value不再指向Wz_Image自身的引用
- 修复因上一条导致的若干运行效果不正确的场合
### WzCompare
- 支持了CMS/TMS等wz合并对比时同名节点冲突的场合,目前可以分别对比
### CharaSim
- 修复恶魔盾牌MP/DF显示bug
### LuaConsole
- 添加了可以获取全局插件环境和事件的接口 因此在Lua中可以获取当前选中的Wz节点了
## 2016.08.11
### 共通
- 整理Lua的提取方式 直接绑定在顶层节点上 可能会影响对比
### Avatar
- 修复了纸娃娃无法识别Link的Bug
## 2016.08.07
### 共通
- 临时支持了CMST117新增的Lua节点特殊格式
##2016.07.31
### 共通
- 修复了JMSwz无法解析的bug
- 加入了一个设置项 允许wz打开时自动排序 这个设置项可通过手动编辑setting文件配置
- wz显示的部分代码整理
- 动画部分代码整理 以兼容新的MapRender
### CharaSim
- 支持显示KMST新增属性incARC
### Patcher
- 支持了新的64位长度标记的Patch.exe文件格式
## 2016.07.11
### 共通
- 修复了IndexGifEncoder编码纯色帧导致gif文件损坏的bug
- 修复了MonoGame多Device共存可能出现的bug
### CharaSim
- Eval计算支持了KMST新的log公式,说不定未来会用到
- 修复了属性Eval计算时因公式出现空白符解析失败的bug
### MapRender
- Xna引擎升级至MonoGame,功能部分恢复到之前的版本,并未支持KMST的压缩版客户端资源链接方式
- 暂时移除没用的输入法和聊天模块
================================================
FILE: UpdateLogs/v2.1.1.md
================================================
## 2018.3.15
久违的积累更新
### 共通
- 支持了Apng格式动画导出
### WzLib
- 支持自动检测扩展wz(如map2, map001)的设置
### CharaSim
- 对于V5技能模拟,提高等级上限至100。
- 支持新职业装备,更新模拟效果至最新的CMST。
- 对于装备附带技能,可以在模拟中显示技能说明了。
- 支持互斥装备的显示说明。(ExclusiveEquip)
- 修复了bodyattack默认值的错误。
- 改进怪物卡数值的显示格式。
### Comparer
- 修复了在应用补丁中同类型wz对比时,输出文件覆盖的bug。
### Avatar
- 支持arc职业耳朵的模拟。
### MapRender
- 支持了D2D渲染引擎的支持,可用于文字和简单图元渲染。
- 支持了粒子特效渲染。
- 大幅度优化运行效率,内存占用与GC。
- 修复了潜在的内存泄露。
================================================
FILE: UpdateLogs/v2.1.md
================================================
## 2017.10.10
积累更新
### Network
-
### Patcher
- 追加了全世界冒险岛补丁下载地址。
- 修复了ftp开头的地址无法探测文件更新时间的bug。
### WzLib
- 兼容2G以上的wz文件。
### CharaSim
- 更新至CMST最新版。
## 2017.8.8
### Avatar
- 修复骑宠相关的大量bug,实验性支持flip,removeBody等特性。
- 修复了z层排序异常的错误。
- 重构缓冲算法,不再因为总图像范围过大无法渲染了。
## 2017.8.5
### CharaSim
- 支持套装属性的扩展显示和默认装备名称显示。
- 对于封印解除属性显示时自动合并同类属性。
### Avatar
- 支持骑宠的强制身体动作字段。
- 加载骑宠时将自动设置为关联的身体动作和表情。
- 优化了预渲染效率。
## 2017.8.2
### 共通
- 支持了渲染Spine骨骼动画的新特性。
### MapRender
- 新增了一个Option界面和配置文件,TopBar回归。
### CharaSim
- 忽略属性表达式中的'%',以强行屏蔽一个bug。
- 修复了宏字符串中'#'会丢失字符的bug。
### Avatar
- 支持了选择ear图层类型,以支持KMST新职业。
## 2017.7.23
### 共通
- GearGraphics.TextRenderer重构,排版与渲染分离,支持Monogame。
### MapRender
- 完整支持了UIWorldMap。
## 2017.7.20
### 基础
- 修复了技能编号8001xxxx无法自动链接的bug。
## 2017.7.8
积累更新
### 共通
- 因为发现了一个特殊的wz结构,调整了全部解决uol引用的代码。这影响到了全部动画加载相关的模块。
### WzLib
- 添加了可以支持自动挂接扩展wz文件(mob2, map2, etc.)的选项。
### MapRender
- 修复了一些可能造成内存泄漏的bug(但并无卵用)。
================================================
FILE: WzComparerR2/AnimateEncoderFactory.cs
================================================
using System;
using System.Collections.Generic;
using WzComparerR2.Config;
using WzComparerR2.Encoders;
namespace WzComparerR2
{
public static class AnimateEncoderFactory
{
static AnimateEncoderFactory()
{
registeredEncoders = new Dictionary<int, IAnimateEncoderProvider>();
RegisterEncoders();
}
private static Dictionary<int, IAnimateEncoderProvider> registeredEncoders;
private static void RegisterEncoders()
{
registeredEncoders.Add(0, new AnimateEncoderProvider<BuildInGifEncoder>
{
ID = 0,
Name = nameof(BuildInGifEncoder),
CreateEncoderCallback = () => new BuildInGifEncoder(),
});
registeredEncoders.Add(1, new AnimateEncoderProvider<IndexGifEncoder>
{
ID = 1,
Name = nameof(IndexGifEncoder),
CreateEncoderCallback = () => new IndexGifEncoder(),
});
registeredEncoders.Add(2, new AnimateEncoderProvider<BuildInApngEncoder>
{
ID = 2,
Name = nameof(BuildInApngEncoder),
CreateEncoderCallback = () => new BuildInApngEncoder(),
ConfigureEncoderCallback = (encoder, config) =>
{
encoder.OptimizeEnabled = config.PaletteOptimized;
}
});
registeredEncoders.Add(3, new AnimateEncoderProvider<FFmpegEncoder>
{
ID = 3,
Name = nameof(FFmpegEncoder),
CreateEncoderCallback = () => new FFmpegEncoder(),
ConfigureEncoderCallback = (encoder, config) =>
{
encoder.FFmpegBinPath = config.FFmpegBinPath;
encoder.FFmpegArgumentFormat = config.FFmpegArgument;
encoder.OutputFileExtension = config.FFmpegOutputFileExtension;
}
});
}
public static GifEncoder CreateEncoder(ImageHandlerConfig config)
{
return CreateEncoder(config.GifEncoder, config);
}
public static GifEncoder CreateEncoder(int id, ImageHandlerConfig config)
{
if (!registeredEncoders.TryGetValue(id, out var provider))
{
throw new Exception($"Encoder ID {id} has not registered");
}
var encoder = provider.CreateEncoder();
provider.ConfigureEncoder(encoder, config);
return encoder;
}
public interface IAnimateEncoderProvider
{
GifEncoder CreateEncoder();
void ConfigureEncoder(GifEncoder encoder, ImageHandlerConfig config);
}
public class AnimateEncoderProvider<T> : IAnimateEncoderProvider where T : GifEncoder
{
public int ID { get; set; }
public string Name { get; set; }
public Func<T> CreateEncoderCallback { get; set; }
public Action<T, ImageHandlerConfig> ConfigureEncoderCallback { get; set; }
public GifEncoder CreateEncoder()
{
if (this.CreateEncoderCallback == null)
{
throw new ArgumentNullException(nameof(CreateEncoderCallback));
}
return this.CreateEncoderCallback();
}
public void ConfigureEncoder(GifEncoder encoder, ImageHandlerConfig config)
{
if (this.ConfigureEncoderCallback != null)
{
this.ConfigureEncoderCallback((T)encoder, config);
}
}
}
}
}
================================================
FILE: WzComparerR2/CharaSim/CharaEquip.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace WzComparerR2.CharaSim
{
public class CharaEquip
{
public CharaEquip()
{
int slotsCount = 66;
gearSlots = new Gear[slotsCount];
cashGearSlots = new Gear[slotsCount];
}
public const int RingCount = 6;
public const int PendantCount = 2;
private Gear[] gearSlots;
private Gear[] cashGearSlots;
public Gear[] GearSlots
{
get { return gearSlots; }
}
public Gear[] CashGearSlots
{
get { return cashGearSlots; }
}
public int GetGearSlot(GearType type, int index)
{
switch (type)
{
//line 0
case GearType.badge: return 0;
case GearType.cap: return 1;
case GearType.ring:
switch (index)
{
case 0: return 8;
case 1: return 9;
case 2: return 23;
case 3: return 24;
case 4: return 2;
case 5: return 7;
default: return -1;
}
case GearType.android: return 3;
case GearType.machineHeart: return 4;
//line 1
case GearType.medal: return 5;
case GearType.faceAccessory: return 6;
//line 2
case GearType.pocket: return 10;
case GearType.eyeAccessory: return 11;
case GearType.pendant:
switch (index)
{
case 0: return 17;
case 1: return 12;
default: return -1;
}
case GearType.earrings: return 13;
case GearType.shoulderPad: return 14;
//line 3
case GearType.cape: return 15;
case GearType.coat:
case GearType.longcoat: return 16;
default:
if (Gear.IsLeftWeapon(type) || Gear.IsDoubleHandWeapon(type))
return 18;
else if (Gear.IsSubWeapon(type))
return 19;
else
return -1;
//line 4
case GearType.glove: return 20;
case GearType.pants: return 21;
case GearType.belt: return 22;
//line 5
case GearType.shoes: return 27;
//dragon
case GearType.dragonMask: return 35;
case GearType.dragonPendant: return 36;
case GearType.dragonWings: return 37;
case GearType.dragonTail: return 38;
//machine
case GearType.machineTransistors: return 39;
case GearType.machineEngine: return 40;
case GearType.machineBody: return 41;
case GearType.machineArms: return 42;
case GearType.machineLegs: return 43;
//totem
case GearType.totem:
switch (index)
{
case 0: return 44;
case 1: return 45;
case 2: return 46;
default: return -1;
}
}
}
public IEnumerable<Gear> GearsEquiped
{
get
{
foreach (Gear gear in gearSlots)
{
if (gear != null)
yield return gear;
}
foreach (Gear gear in cashGearSlots)
{
if (gear != null)
yield return gear;
}
}
}
public bool AddGear(Gear gear, out Gear[] removedGears)
{
if (gear == null)
{
removedGears = new Gear[0];
return false;
}
int emptyIdx = GetEmptySlotIndex(gear.type, gear.Cash);
return AddGear(gear, emptyIdx, out removedGears);
}
public bool AddGear(Gear gear, int index, out Gear[] removedGears)
{
if (gear == null)
{
removedGears = new Gear[0];
return false;
}
int slotIdx = GetGearSlot(gear.type, index);
if (slotIdx == -1)
{
removedGears = new Gear[0];
return false;
}
List<Gear> removedGearList = new List<Gear>();
Gear[] slotList = gear.Cash ? cashGearSlots : gearSlots;
if (slotList[slotIdx] != null) //移除同槽
{
removedGearList.Add(slotList[slotIdx]);
}
slotList[slotIdx] = gear; //装备上
Gear preRemove = getPreRemoveGears(gear.type, gear.Cash);
if (preRemove != null) //移除冲突装备
{
removedGearList.Add(preRemove);
}
removedGears = removedGearList.ToArray();
return true;
}
public int GetEmptySlotIndex(GearType gearType, bool cash)
{
Gear[] slotList = cash ? cashGearSlots : gearSlots;
int max;
switch (gearType)
{
case GearType.ring: max = RingCount; break;
case GearType.pendant: max = PendantCount; break;
default: return 0;
}
for (int i = 0; i < max; i++)
{
if (slotList[GetGearSlot(gearType, i)] == null)
return i;
}
return 0;
}
private Gear getPreRemoveGears(GearType newGearType, bool cash)
{
Gear[] slotList = cash ? cashGearSlots : gearSlots;
if (Gear.IsDoubleHandWeapon(newGearType)) //双手 移除副手
{
Gear gear = slotList[GetGearSlot(GearType.shield, 0)];
if (gear != null)
return gear;
}
else if (Gear.IsSubWeapon(newGearType)) //副手 移除双手
{
Gear gear = slotList[GetGearSlot(GearType.ohSword, 0)];
if (gear != null
&& (Gear.IsDoubleHandWeapon(gear.type)
|| (newGearType != GearType.magicArrow && gear.type == GearType.dualBow))) //非魔法箭 移除双弓的主手
return gear;
}
else if (newGearType == GearType.dualBow) //双弩 移除非魔法箭的副手
{
Gear gear = slotList[GetGearSlot(GearType.magicArrow, 0)];
if (gear != null && gear.type != GearType.magicArrow)
{
return gear;
}
}
else if (newGearType == GearType.pants) //下装 移除套服
{
Gear gear = slotList[GetGearSlot(GearType.longcoat, 0)];
if (gear != null && gear.type == GearType.longcoat)
{
return gear;
}
}
else if (newGearType == GearType.pants) //套服 移除下装
{
Gear gear = slotList[GetGearSlot(GearType.pants, 0)];
if (gear != null && gear.type == GearType.pants)
{
return gear;
}
}
return null;
}
}
}
================================================
FILE: WzComparerR2/CharaSim/CharaProp.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace WzComparerR2.CharaSim
{
public class CharaProp
{
public CharaProp()
{
}
public CharaProp(int totalMax)
{
this.totalMax = totalMax;
}
private int baseVal; //基础值
private int gearAdd; //装备附加值
private int buffAdd; //技能buff增加值
private int eBuffAdd; //技能增加的enhance值
private int rate; //装备潜能百分比
private int aBuffRate; //主动buff百分比 如骰子
private int pBuffRate; //被动buff百分比 如盾防精通
private int totalMax;
private bool smart; //当前的技能buff增加值是否为smart
public int BaseVal
{
get { return baseVal; }
set { baseVal = value; }
}
public int GearAdd
{
get { return gearAdd; }
set { gearAdd = value; }
}
public int BuffAdd
{
get { return buffAdd; }
set { buffAdd = value; }
}
public int EBuffAdd
{
get { return eBuffAdd; }
set { eBuffAdd = value; }
}
public int Rate
{
get { return rate; }
set { rate = value; }
}
public int ABuffRate
{
get { return aBuffRate; }
set { aBuffRate = value; }
}
public int PBuffRate
{
get { return pBuffRate; }
set { pBuffRate = value; }
}
public bool Smart
{
get { return smart; }
set { smart = value; }
}
public int TotalMax
{
get { return totalMax; }
set { totalMax = value; }
}
public int GetSum()
{
int origSum = (baseVal + gearAdd + buffAdd + eBuffAdd) * (100 + rate + aBuffRate + pBuffRate) / 100;
return this.totalMax > 0 ? Math.Min(this.totalMax, origSum) : origSum;
}
public int GetGearReqSum()
{
int origSum = (baseVal + gearAdd + buffAdd) * (100 + rate + aBuffRate + pBuffRate) / 100;
return this.totalMax > 0 ? Math.Min(this.totalMax, origSum) : origSum;
}
public void ResetAdd()
{
gearAdd = 0;
eBuffAdd = 0;
buffAdd = 0;
rate = 0;
aBuffRate = 0;
pBuffRate = 0;
smart = false;
}
public void ResetAll()
{
baseVal = 0;
ResetAdd();
}
public override string ToString()
{
int sum = GetSum();
return baseVal == sum ? baseVal.ToString() :
string.Format("{0} ({1}+{2})", sum, baseVal, sum - baseVal);
}
public string ToStringDetail(out int red)
{
int sum = GetSum();
int baseSum = (baseVal + gearAdd) +
(baseVal + gearAdd + buffAdd + eBuffAdd) * (rate + aBuffRate) / 100;
if (buffAdd == 0 && eBuffAdd == 0 && pBuffRate == 0 && baseSum <= sum)
{
red = Math.Sign(aBuffRate);
return baseSum.ToString();
}
red = Math.Sign(sum - baseSum);
return (sum == baseSum) ? sum.ToString() :
string.Format("{0} ({1}{2}{3})", sum, baseSum, (sum - baseSum >= 0) ? "+" : "-", sum - baseSum);
}
}
}
================================================
FILE: WzComparerR2/CharaSim/CharaSimLoader.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WzComparerR2.WzLib;
using WzComparerR2.PluginBase;
namespace WzComparerR2.CharaSim
{
public static class CharaSimLoader
{
static CharaSimLoader()
{
LoadedSetItems = new Dictionary<int, SetItem>();
LoadedExclusiveEquips = new Dictionary<int, ExclusiveEquip>();
}
public static Dictionary<int, SetItem> LoadedSetItems { get; private set; }
public static Dictionary<int, ExclusiveEquip> LoadedExclusiveEquips { get; private set; }
public static void LoadSetItemsIfEmpty()
{
if (LoadedSetItems.Count == 0)
{
LoadSetItems();
}
}
public static void LoadSetItems()
{
//搜索setItemInfo.img
Wz_Node etcWz = PluginManager.FindWz(Wz_Type.Etc);
if (etcWz == null)
return;
Wz_Node setItemNode = etcWz.FindNodeByPath("SetItemInfo.img", true);
if (setItemNode == null)
return;
//搜索ItemOption.img
Wz_Node itemWz = PluginManager.FindWz(Wz_Type.Item);
if (itemWz == null)
return;
Wz_Node optionNode = itemWz.FindNodeByPath("ItemOption.img", true);
if (optionNode == null)
return;
LoadedSetItems.Clear();
foreach (Wz_Node node in setItemNode.Nodes)
{
int setItemIndex;
if (Int32.TryParse(node.Text, out setItemIndex))
{
SetItem setItem = SetItem.CreateFromNode(node, optionNode);
if (setItem != null)
LoadedSetItems[setItemIndex] = setItem;
}
}
}
public static void LoadExclusiveEquipsIfEmpty()
{
if (LoadedExclusiveEquips.Count == 0)
{
LoadExclusiveEquips();
}
}
public static void LoadExclusiveEquips()
{
Wz_Node exclusiveNode = PluginManager.FindWz("Etc/ExclusiveEquip.img");
if (exclusiveNode == null)
return;
LoadedExclusiveEquips.Clear();
foreach (Wz_Node node in exclusiveNode.Nodes)
{
int exclusiveEquipIndex;
if (Int32.TryParse(node.Text, out exclusiveEquipIndex))
{
ExclusiveEquip exclusiveEquip = ExclusiveEquip.CreateFromNode(node);
if (exclusiveEquip != null)
LoadedExclusiveEquips[exclusiveEquipIndex] = exclusiveEquip;
}
}
}
public static void ClearAll()
{
LoadedSetItems.Clear();
LoadedExclusiveEquips.Clear();
}
public static int GetActionDelay(string actionName)
{
if (string.IsNullOrEmpty(actionName))
{
return 0;
}
Wz_Node actionNode = PluginManager.FindWz("Character/00002000.img/" + actionName);
if (actionNode == null)
{
return 0;
}
int delay = 0;
foreach (Wz_Node frameNode in actionNode.Nodes)
{
Wz_Node delayNode = frameNode.Nodes["delay"];
if (delayNode != null)
{
delay += Math.Abs(delayNode.GetValue<int>());
}
}
return delay;
}
}
}
================================================
FILE: WzComparerR2/CharaSim/Character.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace WzComparerR2.CharaSim
{
public class Character
{
public Character()
{
this.status = new CharacterStatus();
this.status.Job = 0;
this.status.Level = 1;
this.status.MaxHP.BaseVal = 50;
this.status.HP = 50;
this.status.MaxMP.BaseVal = 10;
this.status.MP = 10;
this.status.Strength.BaseVal = 12;
this.status.Dexterity.BaseVal = 5;
this.status.Intelligence.BaseVal = 4;
this.status.Luck.BaseVal = 4;
this.status.CriticalRate.BaseVal = 5;
this.status.MoveSpeed.BaseVal = 100;
this.status.Jump.BaseVal = 100;
this.status.CriticalDamageMax.BaseVal = 150;
this.status.CriticalDamageMin.BaseVal = 120;
this.itemSlots = new ItemBase[5][];
for (int i = 0; i < this.itemSlots.Length; i++)
{
this.itemSlots[i] = new ItemBase[96];
}
this.equip = new CharaEquip();
}
private static FormulaVersion version;
/// <summary>
/// 获取或设置角色属性计算的公式版本。
/// </summary>
public static FormulaVersion Version
{
get { return Character.version; }
set { Character.version = value; }
}
private string name;
private string guild;
private CharacterStatus status;
private ItemBase[][] itemSlots;
private CharaEquip equip;
public string Name
{
get { return name; }
set { name = value; }
}
public string Guild
{
get { return guild; }
set { guild = value; }
}
public CharacterStatus Status
{
get { return status; }
}
public ItemBase[][] ItemSlots
{
get { return itemSlots; }
}
public CharaEquip Equip
{
get { return equip; }
set { equip = value; }
}
public void UpdateProps()
{
status.Strength.ResetAdd();
status.Dexterity.ResetAdd();
status.Intelligence.ResetAdd();
status.Luck.ResetAdd();
status.MaxHP.ResetAdd();
status.MaxMP.ResetAdd();
status.PADamage.ResetAll();
status.MADamage.ResetAll();
status.PDDamage.ResetAll();
status.MDDamage.ResetAll();
status.PAccurate.ResetAll();
status.MAccurate.ResetAll();
status.PEvasion.ResetAll();
status.MEvasion.ResetAll();
status.MoveSpeed.ResetAdd();
status.Jump.ResetAdd();
status.CriticalRate.ResetAdd();
status.CriticalDamageMax.ResetAdd();
status.CriticalDamageMin.ResetAdd();
status.DamageRate.ResetAll();
//foreach (Buff buff in buffs)
//{
// foreach (KeyValuePair<GearPropType, int> prop in buff.props)
// {
// AddBuffProp(prop.Key, prop.Value, buff.Type == BuffType.passiveSkill);
// }
//}
foreach (Gear gear in equip.GearsEquiped)
{
if (gear.State == GearState.enable)
{
foreach (KeyValuePair<GearPropType, int> prop in gear.Props)
{
addProp(prop.Key, prop.Value);
}
foreach (Potential potential in gear.Options)
{
if (potential != null)
{
foreach (KeyValuePair<GearPropType, int> prop in potential.props)
{
addProp(prop.Key, prop.Value);
}
}
}
foreach (Addition addition in gear.Additions)
{
foreach (KeyValuePair<GearPropType, int> prop in getAdditionProps(addition))
{
addProp(prop.Key, prop.Value);
}
}
}
}
checkSetItemEnabled();
foreach (SetItem setItem in CharaSimLoader.LoadedSetItems.Values)
{
foreach (SetItemEffect effect in setItem.Effects.Values)
{
if (effect.Enabled)
{
foreach (KeyValuePair<GearPropType, object> prop in effect.Props)
{
if (prop.Key == GearPropType.Option)
{
List<Potential> potens = prop.Value as List<Potential>;
foreach (Potential p in potens)
{
foreach (KeyValuePair<GearPropType, int> pprop in p.props)
{
addProp(pprop.Key, pprop.Value);
}
}
}
else
{
addProp(prop.Key, Convert.ToInt32(prop.Value));
}
}
}
}
}
int[] sum = new int[4] { status.Strength.GetSum(),
status.Dexterity.GetSum(),
status.Intelligence.GetSum(),
status.Luck.GetSum() };
if (version == FormulaVersion.Bigbang)
{
status.PDDamage.BaseVal = (int)Math.Floor(sum[0] * 1.2 + sum[1] * 0.5 + sum[2] * 0.4 + sum[3] * 0.5);
status.MDDamage.BaseVal = (int)Math.Floor(sum[0] * 0.4 + sum[1] * 0.5 + sum[2] * 1.2 + sum[3] * 0.5);
status.PAccurate.BaseVal = (int)Math.Floor(sum[1] * 1.2 + sum[3] * 1.0);
status.MAccurate.BaseVal = (int)Math.Floor(sum[2] * 1.2 + sum[3] * 1.0);
status.PEvasion.BaseVal = sum[1] * 1 + sum[3] * 2;
status.MEvasion.BaseVal = sum[2] * 1 + sum[3] * 2;
}
else if (version == FormulaVersion.Chaos)
{
status.PDDamage.BaseVal = (int)Math.Floor(sum[0] * 1.5 + sum[1] * 0.4 + sum[2] * 0 + sum[3] * 0.4);
status.MDDamage.BaseVal = (int)Math.Floor(sum[0] * 0 + sum[1] * 0.4 + sum[2] * 1.5 + sum[3] * 0.4);
status.PAccurate.BaseVal = (int)Math.Floor(sum[0] * 0.4 + sum[1] * 1.6 + sum[2] * 0 + sum[3] * 0.8);
status.MAccurate.BaseVal = (int)Math.Floor(sum[0] * 0 + sum[1] * 0.4 + sum[2] * 1.6 + sum[3] * 0.8);
status.PEvasion.BaseVal = (int)Math.Floor(sum[0] * 0.2 + sum[1] * 0.6 + sum[2] * 0 + sum[3] * 1.4);
status.MEvasion.BaseVal = (int)Math.Floor(sum[0] * 0 + sum[1] * 0.2 + sum[2] * 0.6 + sum[3] * 1.4);
}
}
private void addProp(GearPropType type, int value)
{
switch (type)
{
case GearPropType.incSTR: status.Strength.GearAdd += value; break;
case GearPropType.incSTRr: status.Strength.Rate += value; break;
case GearPropType.incDEX: status.Dexterity.GearAdd += value; break;
case GearPropType.incDEXr: status.Dexterity.Rate += value; break;
case GearPropType.incINT: status.Intelligence.GearAdd += value; break;
case GearPropType.incINTr: status.Intelligence.Rate += value; break;
case GearPropType.incLUK: status.Luck.GearAdd += value; break;
case GearPropType.incLUKr: status.Luck.Rate += value; break;
case GearPropType.incAllStat:
status.Strength.GearAdd += value;
status.Dexterity.GearAdd += value;
status.Intelligence.GearAdd += value;
status.Luck.GearAdd += value;
break;
case GearPropType.incPAD: status.PADamage.GearAdd += value; break;
case GearPropType.incPADr: status.PADamage.Rate += value; break;
case GearPropType.incPDD: status.PDDamage.GearAdd += value; break;
case GearPropType.incPDDr: status.PDDamage.Rate += value; break;
case GearPropType.incMAD: status.MADamage.GearAdd += value; break;
case GearPropType.incMADr: status.MADamage.Rate += value; break;
case GearPropType.incMDD: status.MDDamage.GearAdd += value; break;
case GearPropType.incMDDr: status.MDDamage.Rate += value; break;
case GearPropType.incACC: status.PAccurate.GearAdd += value; status.MAccurate.GearAdd += value; break;
case GearPropType.incACCr: status.PAccurate.Rate += value; status.MAccurate.Rate += value; break;
case GearPropType.incEVA: status.PEvasion.GearAdd += value; status.MEvasion.GearAdd += value; break;
case GearPropType.incEVAr: status.PEvasion.Rate += value; status.MEvasion.Rate += value; break;
case GearPropType.incCr: status.CriticalRate.GearAdd += value; break;
case GearPropType.incMHP: status.MaxHP.GearAdd += value; break;
case GearPropType.incMHPr: status.MaxHP.Rate += value; break;
case GearPropType.incMMP: status.MaxMP.GearAdd += value; break;
case GearPropType.incMMPr: status.MaxMP.Rate += value; break;
case GearPropType.incSpeed: status.MoveSpeed.GearAdd += value; break;
case GearPropType.incJump: status.Jump.GearAdd += value; break;
case GearPropType.incCriticaldamageMax: status.CriticalDamageMax.GearAdd += value; break;
case GearPropType.incCriticaldamageMin: status.CriticalDamageMin.GearAdd += value; break;
}
}
private Dictionary<GearPropType, int> getAdditionProps(Addition addition)
{
Dictionary<GearPropType, int> props = new Dictionary<GearPropType, int>();
if (addition != null &&
(addition.Type == AdditionType.critical || addition.Type == AdditionType.statinc))
{
bool con = false;
switch (addition.ConType)
{
case GearPropType.reqLevel:
con = (this.status.Level >= addition.ConValue[0]);
break;
case GearPropType.reqJob:
foreach (int val in addition.ConValue)
{
con |= this.status.Job == val;
}
break;
case GearPropType.reqCraft:
default:
con = true;
break;
}
if (con)
{
string strcr; int cr;
if (addition.Props.TryGetValue("prob", out strcr) && Int32.TryParse(strcr, out cr))
props.Add(GearPropType.incCr, cr);
if (addition.Type == AdditionType.statinc)
{
foreach (var kv in addition.Props)
{
try
{
GearPropType propType = (GearPropType)Enum.Parse(typeof(GearPropType), kv.Key);
if ((int)propType > 0 && (int)propType < 100)
props.Add(propType, Convert.ToInt32(kv.Value));
}
catch
{
}
}
}
}
}
return props;
}
private void checkSetItemEnabled()
{
//重置所有setItem
List<int> idList = new List<int>();
foreach (SetItem setItem in CharaSimLoader.LoadedSetItems.Values)
{
foreach (KeyValuePair<int, SetItemIDPart> idPart in setItem.ItemIDs.Parts)
{
idList.AddRange(idPart.Value.ItemIDs.Keys);
foreach (int id in idList)
{
idPart.Value.ItemIDs[id] = false;
}
idList.Clear();
}
setItem.currentCount = 0;
}
//验证有效装备
int setItemID;
foreach (Gear gear in equip.GearsEquiped)
{
if (gear.State == GearState.enable
&& gear.Props.TryGetValue(GearPropType.setItemID, out setItemID))
{
CharaSimLoader.LoadedSetItems[setItemID].ItemIDs[gear.ItemID] = true;
CharaSimLoader.LoadedSetItems[setItemID].currentCount++;
}
}
//验证所有setItem
foreach (SetItem setItem in CharaSimLoader.LoadedSetItems.Values)
{
foreach (KeyValuePair<int, SetItemEffect> effect in setItem.Effects)
{
effect.Value.Enabled = (setItem.currentCount >= effect.Key);
}
}
}
public void ChangeGear(Gear newGear)
{
int emptyIdx = this.equip.GetEmptySlotIndex(newGear.type, newGear.Cash);
ChangeGear(newGear, emptyIdx);
}
public void ChangeGear(Gear newGear, int index)
{
ItemBase[] itemTab = this.itemSlots[0];
int newGearIndex = Array.IndexOf<ItemBase>(itemTab, newGear);
if (newGearIndex < 0 || newGear.State != GearState.itemList)
{
throw new InvalidOperationException("未知错误:装备不在背包。");
}
int onlyEquip;
if (newGear.Props.TryGetValue(GearPropType.onlyEquip, out onlyEquip) && onlyEquip > 0)
{
foreach (Gear gear in this.equip.GearsEquiped)
{
if (gear.ItemID == newGear.ItemID)
{
throw new InvalidOperationException("该道具只能同时装备一个。");
}
}
}
string errorString;
if (!checkGearReq(newGear, out errorString))
{
throw new InvalidOperationException(errorString);
}
Gear[] removedGear;
if (!this.equip.AddGear(newGear, out removedGear))
{
throw new InvalidOperationException("未知错误:添加装备失败。");
}
CheckGearEnabled();
if (newGear.State == GearState.enable)
{
Queue<int> emptyItemSlot = new Queue<int>();
emptyItemSlot.Enqueue(newGearIndex);
if (removedGear.Length > 1) //检查剩余背包大小
{
for (int i = 0; i < itemTab.Length; i++)
{
if (itemTab[i] == null)
{
emptyItemSlot.Enqueue(i);
}
}
}
if (emptyItemSlot.Count >= removedGear.Length)
{
for (int i = 0; i < removedGear.Length; i++)
{
Gear gear = removedGear[i];
gear.State = GearState.itemList;
itemTab[emptyItemSlot.Dequeue()] = gear;
}
return; //函数出口
}
else
{
errorString = "背包已满。";
}
}
else
{
errorString = "能力值不足,无法装备道具。";
}
//还原装备
foreach (Gear gear in removedGear)
{
Gear[] arg;
this.equip.AddGear(gear, index, out arg); //可以证明直接输入index是可以还原的。
}
newGear.State = GearState.itemList;
throw new InvalidOperationException(errorString);
}
private bool checkGearReq(Gear gear, out string errorMessage)
{
if (Gear.IsMechanicGear(gear.type) && status.Job / 100 != 35)
{
errorMessage = "只有机械师才能装备。";
return false;
}
if (Gear.IsDragonGear(gear.type) && status.Job / 100 != 22)
{
errorMessage = "只有龙神才能装备。";
return false;
}
if (gear.type == GearType.katara && status.Job / 10 != 43)
{
errorMessage = "只有暗影双刀才能装备。";
return false;
}
if (gear.type == GearType.shield &&
(status.Job / 10 == 43 || status.Job / 100 == 23 || status.Job / 100 == 31))
{
errorMessage = "该职业无法装备盾牌。";
return false;
}
if (gear.type == GearType.magicArrow && status.Job / 100 != 23)
{
errorMessage = "只有双弩精灵职业才能装备。";
return false;
}
if (gear.type == GearType.demonShield && status.Job / 100 != 31)
{
errorMessage = "只有恶魔猎手职业才能装备。";
return false;
}
if (!checkGearPropReq(gear))
{
errorMessage = "能力值不足,无法装备道具。";
return false;
}
errorMessage = null;
return true;
}
private bool checkGearPropReq(Gear gear)
{
return checkGearPropReq(gear.Props, GearPropType.reqSTR, status.Strength.GetGearReqSum())
&& checkGearPropReq(gear.Props, GearPropType.reqDEX, status.Dexterity.GetGearReqSum())
&& checkGearPropReq(gear.Props, GearPropType.reqINT, status.Intelligence.GetGearReqSum())
&& checkGearPropReq(gear.Props, GearPropType.reqLUK, status.Luck.GetGearReqSum())
&& checkGearPropReq(gear.Props, GearPropType.reqLevel, status.Level)
&& checkGearPropReq(gear.Props, GearPropType.reqPOP, status.Pop)
&& checkGearJobReq(gear.Props, gear.type);
}
private bool checkGearPropReq(Dictionary<GearPropType, int> props, GearPropType prop, int value)
{
int v;
if (!props.TryGetValue(prop, out v) || value >= v)
{
return true;
}
return false;
}
private bool checkGearJobReq(Dictionary<GearPropType, int> props, GearType type)
{
int reqJob;
props.TryGetValue(GearPropType.reqJob, out reqJob);
int jobClass = status.Job % 1000 / 100;
if (reqJob == 0) //全职
return true;
if (reqJob == -1) //新手
return jobClass == 0;
return (reqJob & (1 << (jobClass - 1))) != 0;
}
/// <summary>
/// 检查指定的职业ID是否归属于标准职业。
/// </summary>
/// <param name="jobID">要检查的职业ID。</param>
/// <param name="baseJob">标准职业代码。0-新手 1-战士 2-法师 3-弓手 4-飞侠 5-海盗</param>
/// <returns></returns>
public static bool CheckJobReq(int jobID, int baseJob)
{
switch (jobID / 100)
{
case 27: return baseJob == 2; //夜光
case 36: return baseJob == 4 || baseJob == 5; //煎饼
default:
return jobID / 100 % 10 == baseJob;
}
}
public bool CheckGearEnabled()
{
List<Gear> gearsEquip = new List<Gear>(this.equip.GearsEquiped);
List<GearState> oldStates = new List<GearState>(gearsEquip.Count);
foreach (Gear gear in gearsEquip)
{
oldStates.Add(gear.State);
gear.State = GearState.enable;
}
while (true)
{
bool reset = false;
//逐个装备判定装备要求
foreach (Gear gear in gearsEquip)
{
if (gear.State == GearState.enable)
{
gear.State = GearState.disable;
UpdateProps();
//判定装备要求
if (!checkGearPropReq(gear))
{
reset = true; //如果不符合 无效化装备 进行下一轮判断
break;
}
//恢复有效性
gear.State = GearState.enable;
}
}
if (!reset) //如果本轮判断没变化则停止 可以证明是不会进入死循环的
break;
}
for (int i = 0; i < gearsEquip.Count; i++)
{
if (gearsEquip[i].State != oldStates[i]) //装备状态变化
{
return true;
}
}
return false;
}
public void CalcAttack(out double max, out double min)
{
int sign;
CalcAttack(out max, out min, out sign);
}
public void CalcAttack(out double max, out double min, out int sign)
{
max = CalcAttack(status.Strength.GetSum(),
status.Dexterity.GetSum(),
status.Intelligence.GetSum(),
status.Luck.GetSum(),
status.PADamage.GetSum(),
status.MADamage.GetSum(),
GearType.totem,
version);
min = max * status.Mastery.GetSum() / 100;
sign = 0;
}
public static double CalcAttack(int str, int dex, int inte, int luk, int pad, int mad,
GearType WeaponType, FormulaVersion version)
{
switch (WeaponType)
{
case GearType.ohSword:
case GearType.ohAxe:
case GearType.ohBlunt:
return (str * 4 + dex) * 1.2 * pad * 0.01;
case GearType.dagger:
return (str + dex + luk * 4) * 1.3 * pad * 0.01;
case GearType.cane:
return (dex + luk * 4) * 1.3 * pad * 0.01;
case GearType.wand:
case GearType.staff:
return (inte * 4 + luk) * 1.0 * mad * 0.01;
case GearType.barehand:
return (str * 4 + dex) * 1.43 * 1 * 0.01;
case GearType.thSword:
case GearType.thAxe:
case GearType.thBlunt:
if (version == FormulaVersion.Bigbang)
return (str * 4 + dex) * 1.32 * pad * 0.01;
else if (version == FormulaVersion.Chaos)
return (str * 4 + dex) * 1.34 * pad * 0.01;
break;
case GearType.spear:
case GearType.polearm:
return (str * 4 + dex) * 1.49 * pad * 0.01;
case GearType.bow:
if (version == FormulaVersion.Bigbang)
return (dex * 4 + str) * 1.2 * pad * 0.01;
else if (version == FormulaVersion.Chaos)
return (dex * 4 + str) * 1.3 * pad * 0.01;
break;
case GearType.crossbow:
return (dex * 4 + str) * 1.35 * pad * 0.01;
case GearType.throwingGlove:
return (dex + luk * 4) * 1.75 * pad * 0.01;
case GearType.knuckle:
return (str * 4 + dex) * 1.7 * pad * 0.01;
case GearType.gun:
return (dex * 4 + str) * 1.5 * pad * 0.01;
case GearType.dualBow:
return (dex * 4 + str) * 1.3 * pad * 0.01;
case GearType.handCannon:
return (str * 4 + dex) * 1.5 * pad * 0.01;
}
return 0;
}
private static int[] _exptnl = new int[]
{
15,34,57,92,
135,372,560,840,
1242,19136,479143,10063200
};
public static int ExpToNextLevel(int level)
{
int exp;
if (level < 1 || level > 200)
return -1;
if (level < 10)
return _exptnl[level - 1];
if (level >= 10 && level <= 14)
return _exptnl[8];
if (level >= 15 && level <= 29)
{
exp = _exptnl[8]; //level 10
while (level > 14)
{
exp = (int)Math.Round(exp * 1.2, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
if (level >= 30 && level <= 34)
{
return _exptnl[9];//level 30
}
if (level >= 35 && level <= 39)
{
exp = ExpToNextLevel(34);
while (level > 34)
{
exp = (int)Math.Round(exp * 1.2, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
if (level >= 40 && level <= 69)
{
exp = ExpToNextLevel(39);
while (level > 39)
{
exp = (int)Math.Round(exp * 1.08, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
if (level >= 70 && level <= 74)
{
return _exptnl[10];//level 70
}
if (level >= 75 && level <= 119)
{
exp = ExpToNextLevel(74);
while (level > 74)
{
exp = (int)Math.Round(exp * 1.07, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
if (level >= 120 && level <= 124)
{
return _exptnl[11];//level 120
}
if (level >= 125 && level <= 159)
{
exp = _exptnl[11];
while (level > 124)
{
exp = (int)Math.Round(exp * 1.07, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
if (level >= 160 && level <= 199)
{
exp = ExpToNextLevel(159);
while (level > 159)
{
exp = (int)Math.Round(exp * 1.06, MidpointRounding.AwayFromZero);
level -= 1;
}
return exp;
}
return -1;
}
}
}
================================================
FILE: WzComparerR2/CharaSim/CharacterStatus.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace WzComparerR2.CharaSim
{
public class CharacterStatus
{
public CharacterStatus()
{
this.maxHP = new CharaProp(99999);
this.maxMP = new CharaProp(99999);
this.pdd = new CharaProp(9999);
this.mdd = new CharaProp(9999);
this.pAcc = new CharaProp(9999);
this.mAcc = new CharaProp(9999);
this.pEva = new CharaProp(9999);
this.mEva = new CharaProp(9999);
FieldInfo[] fields = this.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
foreach (FieldInfo f in fields)
{
if (f.FieldType == typeof(CharaProp) && f.GetValue(this) == null)
{
f.SetValue(this, new CharaProp());
}
}
}
private int job;
private int level;
private int hp;
private int mp;
private int exp;
private int ap;
private int pop;
private CharaProp maxHP;
private CharaProp maxMP;
private CharaProp str = null;
private CharaProp dex = null;
private CharaProp inte = null;
private CharaProp luk = null;
private CharaProp pad = null;
private CharaProp mad = null;
private CharaProp pdd;
private CharaProp mdd;
private CharaProp pAcc;
private CharaProp mAcc;
private CharaProp pEva;
private CharaProp mEva;
private CharaProp crit = null;
private CharaProp move = null;
private CharaProp jump = null;
private CharaProp critDamMax = null;
private CharaProp critDamMin = null;
private CharaProp mastery = null;
private CharaProp damR = null;
private CharaProp bossDamR = null;
#region 基础属性
/// <summary>
/// 获取或设置角色的职业代码。
/// </summary>
public int Job
{
get { return job; }
set { job = value; }
}
/// <summary>
/// 获取或设置角色的等级。
/// </summary>
public int Level
{
get { return level; }
set { level = value; }
}
/// <summary>
/// 获取或设置角色的当前HP。
/// </summary>
public int HP
{
get { hp = Math.Max(0, Math.Min(maxHP.GetSum(), hp)); return hp; }
set { value = Math.Max(0, Math.Min(maxHP.GetSum(), value)); hp = value; }
}
/// <summary>
/// 获取角色的HP上限。
/// </summary>
public CharaProp MaxHP
{
get { return maxHP; }
}
/// <summary>
/// 获取或设置角色的当前MP。
/// </summary>
public int MP
{
get { mp = Math.Max(0, Math.Min(maxMP.GetSum(), mp)); return mp; }
set { value = Math.Max(0, Math.Min(maxMP.GetSum(), value)); mp = value; }
}
/// <summary>
/// 获取角色的MP上限。
/// </summary>
public CharaProp MaxMP
{
get { return maxMP; }
}
/// <summary>
/// 获取或设置角色的当前经验值。
/// </summary>
public int Exp
{
get { exp = (Exptnl == -1) ? -1 : Math.Max(0, Math.Min(Exptnl - 1, exp)); return exp; }
set { value = (Exptnl == -1) ? -1 : Math.Max(0, Math.Min(Exptnl - 1, value)); exp = value; }
}
/// <summary>
/// 获取角色当前升级经验值。
/// </summary>
public int Exptnl
{
get { return Character.ExpToNextLevel(this.level); }
}
/// <summary>
/// 获取或设置角色的人气度。
/// </summary>
public int Pop
{
get { return pop; }
set { pop = value; }
}
/// <summary>
/// 获取或设置角色的可分配AP。
/// </summary>
public int Ap
{
get { return ap; }
set { if (value >= 0)ap = value; }
}
/// <summary>
/// 获取角色的力量值。
/// </summary>
public CharaProp Strength
{
get { return str; }
}
/// <summary>
/// 获取角色的敏捷值。
/// </summary>
public CharaProp Dexterity
{
get { return dex; }
}
/// <summary>
/// 获取角色的智力值。
/// </summary>
public CharaProp Intelligence
{
get { return inte; }
}
/// <summary>
/// 获取角色的运气值。
/// </summary>
public CharaProp Luck
{
get { return luk; }
}
#endregion
#region 扩展属性
/// <summary>
/// 获取角色的攻击力,这是一个隐藏属性。
/// </summary>
public CharaProp PADamage
{
get { return pad; }
}
/// <summary>
/// 获取角色的魔法攻击力,这是一个隐藏属性。
/// </summary>
public CharaProp MADamage
{
get { return mad; }
}
/// <summary>
/// 获取角色的物理防御力。
/// </summary>
public CharaProp PDDamage
{
get { return pdd; }
}
/// <summary>
/// 获取角色的魔法防御力。
/// </summary>
public CharaProp MDDamage
{
get { return mdd; }
}
/// <summary>
/// 获取角色的物理命中率。
/// </summary>
public CharaProp PAccurate
{
get { return pAcc; }
}
/// <summary>
/// 获取角色的魔法命中率。
/// </summary>
public CharaProp MAccurate
{
get { return mAcc; }
}
/// <summary>
/// 获取角色的物理回避率。
/// </summary>
public CharaProp PEvasion
{
get { return pEva; }
}
/// <summary>
/// 获取角色的魔法回避率。
/// </summary>
public CharaProp MEvasion
{
get { return mEva; }
}
/// <summary>
/// 获取角色的暴击率,这是一个百分比属性。
/// </summary>
public CharaProp CriticalRate
{
get { return crit; }
}
/// <summary>
/// 获取角色的移动速度,这是一个百分比属性。
/// </summary>
public CharaProp MoveSpeed
{
get { return move; }
}
/// <summary>
/// 获取角色的跳跃力,这是一个百分比属性。
/// </summary>
public CharaProp Jump
{
get { return jump; }
}
/// <summary>
/// 获取角色的暴击最大伤害,这是一个隐藏的百分比属性。
/// </summary>
public CharaProp CriticalDamageMax
{
get { return critDamMax; }
}
/// <summary>
/// 获取角色的暴击最小伤害,这是一个隐藏的百分比属性。
/// </summary>
public CharaProp CriticalDamageMin
{
get { return critDamMin; }
}
/// <summary>
/// 获取角色的攻击熟练度,这是一个隐藏的百分比属性。
/// </summary>
public CharaProp Mastery
{
get { return mastery; }
}
/// <summary>
/// 获取角色的攻击力百分比加成,这是一个隐藏的百分比属性。
/// </summary>
public CharaProp DamageRate
{
get { return damR; }
}
/// <summary>
/// 获取角色的BOSS攻击力百分比加成,这是一个隐藏的百分比属性。
/// </summary>
public CharaProp BossDamageRate
{
get { return bossDamR; }
}
#endregion
}
}
================================================
FILE: WzComparerR2/CharaSimControl/AControl.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace WzComparerR2.CharaSimControl
{
public abstract class AControl
{
public AControl()
{
}
private Point location;
private Size size;
private bool visible;
public Point Location
{
get { return location; }
set { location = value; }
}
public Size Size
{
get { return size; }
set { size = value; }
}
public bool Visible
{
get { return visible; }
set { visible = value; }
}
public Rectangle Rectangle
{
get { return new Rectangle(this.location, this.size); }
}
public abstract void Draw(Graphics g);
public virtual void OnMouseClick(MouseEventArgs e)
{
if (IsMouseContains(e.Location))
{
if (this.MouseClick != null)
this.MouseClick(this, e);
}
}
public virtual void OnMouseDown(MouseEventArgs e)
{
}
public virtual void OnMouseUp(MouseEventArgs e)
{
}
public virtual void OnMouseMove(MouseEventArgs e)
{
}
public virtual void OnMouseWheel(MouseEventArgs e)
{
}
protected virtual bool IsMouseContains(Point mouseLocation)
{
return this.visible && this.Rectangle.Contains(mouseLocation);
}
protected MouseEventArgs ToChildEventargs(MouseEventArgs e)
{
return new MouseEventArgs(e.Button, e.Clicks, e.X - this.Location.X, e.Y - this.Location.Y, e.Delta);
}
public event MouseEventHandler MouseClick;
}
}
================================================
FILE: WzComparerR2/CharaSimControl/ACtrlButton.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace WzComparerR2.CharaSimControl
{
public class ACtrlButton : AControl
{
public ACtrlButton()
{
this.Visible = true;
}
private BitmapOrigin normal;
private BitmapOrigin pressed;
private BitmapOrigin mouseOver;
private BitmapOrigin disabled;
private ButtonState state;
public BitmapOrigin Normal
{
get { return normal; }
set { normal = value; }
}
public BitmapOrigin Pressed
{
get { return pressed; }
set { pressed = value; }
}
public BitmapOrigin MouseOver
{
get { return mouseOver; }
set { mouseOver = value; }
}
public BitmapOrigin Disabled
{
get { return disabled; }
set { disabled = value; }
}
public ButtonState State
{
get { return state; }
set
{
if (state != value)
{
state = value;
OnButtonStateChanged();
}
}
}
public BitmapOrigin CurrentBitmap
{
get
{
switch (this.state)
{
default:
case ButtonState.Normal: return this.normal;
case ButtonState.Pressed: return this.pressed;
case ButtonState.MouseOver: return this.mouseOver;
case ButtonState.Disabled: return this.disabled;
}
}
}
/// <summary>
/// 应用当前的ButtonState和Location,绘制对应的图像。
/// </summary>
/// <param Name="g">要绘制的绘图表面。</param>
public override void Draw(Graphics g)
{
this.Draw(g, new Point(0, 0));
}
/// <summary>
/// 应用当前的ButtonState、Location以及给定的坐标偏移,绘制对应的图像。
/// </summary>
/// <param Name="g">要绘制的绘图表面。</param>
/// <param Name="Offset">表示对于绘图原点的坐标偏移。</param>
public void Draw(Graphics g, Point offset)
{
if (g == null || !this.Visible)
return;
BitmapOrigin bmp = this.CurrentBitmap;
if (bmp.Bitmap != null)
g.DrawImage(bmp.Bitmap, bmp.OpOrigin.X + this.Location.X + offset.X, bmp.OpOrigin.Y + this.Location.Y + offset.Y);
}
public override void OnMouseMove(MouseEventArgs e)
{
if (this.IsMouseContains(e.Location))
{
if (this.State == ButtonState.Normal)
{
this.State = ButtonState.MouseOver;
}
}
else if (this.state != ButtonState.Disabled)
{
this.State = ButtonState.Normal;
}
base.OnMouseMove(e);
}
public override void OnMouseDown(MouseEventArgs e)
{
if (this.IsMouseContains(e.Location))
{
if (this.State == ButtonState.Normal || this.State == ButtonState.MouseOver)
{
this.State = ButtonState.Pressed;
}
}
base.OnMouseDown(e);
}
public override void OnMouseUp(MouseEventArgs e)
{
if (this.IsMouseContains(e.Location))
{
if (this.State == ButtonState.Pressed)
{
this.State = ButtonState.MouseOver;
}
}
base.OnMouseUp(e);
}
protected virtual void OnButtonStateChanged()
{
if (this.ButtonStateChanged != null)
{
this.ButtonStateChanged(this, EventArgs.Empty);
}
}
public override void OnMouseClick(MouseEventArgs e)
{
if (this.state != ButtonState.Disabled)
{
base.OnMouseClick(e);
}
}
public event EventHandler ButtonStateChanged;
}
}
================================================
FILE: WzComparerR2/CharaSimControl/ACtrlVScroll.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace WzComparerR2.CharaSimControl
{
public class ACtrlVScroll : AControl
{
public ACtrlVScroll()
{
this.btnPrev = new ACtrlButton();
this.btnNext = new ACtrlButton();
this.btnThumb = new ACtrlButton();
this.picBase = new ACtrlButton();
this.btnPrev.ButtonStateChanged += new EventHandler(childBtn_ButtonStateChanged);
this.btnPrev.MouseClick += new MouseEventHandler(btnPrev_MouseClick);
this.btnNext.ButtonStateChanged += new EventHandler(childBtn_ButtonStateChanged);
this.btnNext.MouseClick += new MouseEventHandler(btnNext_MouseClick);
this.btnThumb.ButtonStateChanged += new EventHandler(childBtn_ButtonStateChanged);
this.picBase.ButtonStateChanged += new EventHandler(childBtn_ButtonStateChanged);
}
ACtrlButton btnPrev;
ACtrlButton btnNext;
ACtrlButton btnThumb;
ACtrlButton picBase;
int minimum;
int maximum;
int value;
bool isScrolling;
public int Minimum
{
get { return minimum; }
set
{
if (this.minimum != value)
{
value = Math.Min(value, maximum);
minimum = value;
this.Value = this.Value;
this.OnValueChanged();
}
}
}
public int Maximum
{
get { return maximum; }
set
{
if (this.maximum != value)
{
value = Math.Max(minimum, value);
maximum = value;
this.Value = this.Value;
this.OnValueChanged();
}
}
}
public int Value
{
get
{
return this.value;
}
set
{
value = Math.Min(Math.Max(this.minimum, value), this.maximum);
if (this.value != value)
{
this.value = value;
this.OnValueChanged();
}
}
}
public ACtrlButton BtnPrev
{
get { return btnPrev; }
}
public ACtrlButton BtnNext
{
get { return btnNext; }
}
public ACtrlButton BtnThumb
{
get { return btnThumb; }
}
public ACtrlButton PicBase
{
get { return picBase; }
}
public bool Enabled
{
get { return !(this.minimum == this.maximum); }
}
public override void OnMouseMove(MouseEventArgs e)
{
if (!this.Enabled)
{
setAllState(ButtonState.Disabled);
return;
}
if (IsMouseContains(e.Location))
{
MouseEventArgs e2 = ToChildEventargs(e);
foreach (ACtrlButton btn in this.buttons)
{
btn.OnMouseMove(e2);
}
if (this.isScrolling)
{
this.scrolling(e.Location);
}
}
else
{
setAllState(ButtonState.Normal);
}
base.OnMouseMove(e);
}
public override void OnMouseDown(MouseEventArgs e)
{
if (!this.Enabled)
{
setAllState(ButtonState.Disabled);
return;
}
if (IsMouseContains(e.Location))
{
this.isScrolling = true;
MouseEventArgs e2 = ToChildEventargs(e);
foreach (ACtrlButton btn in this.buttons)
{
btn.OnMouseDown(e2);
}
}
base.OnMouseDown(e);
}
public override void OnMouseUp(MouseEventArgs e)
{
if (!this.Enabled)
{
setAllState(ButtonState.Disabled);
return;
}
if (IsMouseContains(e.Location))
{
MouseEventArgs e2 = ToChildEventargs(e);
foreach (ACtrlButton btn in this.buttons)
{
btn.OnMouseUp(e2);
}
}
this.isScrolling = false;
base.OnMouseUp(e);
}
public override void OnMouseClick(MouseEventArgs e)
{
if (!this.Enabled)
{
setAllState(ButtonState.Disabled);
return;
}
if (IsMouseContains(e.Location))
{
MouseEventArgs e2 = ToChildEventargs(e);
foreach (ACtrlButton btn in this.buttons)
{
btn.OnMouseClick(e2);
}
}
base.OnMouseClick(e);
}
public override void OnMouseWheel(MouseEventArgs e)
{
if (!this.Enabled)
{
setAllState(ButtonState.Disabled);
return;
}
if (this.IsMouseContains(e.Location))
{
if (e.Delta > 0)
{
this.Value -= 1;
}
else if (e.Delta < 0)
{
this.Value += 1;
}
}
base.OnMouseWheel(e);
}
private void btnPrev_MouseClick(object sender, MouseEventArgs e)
{
this.Value -= 1;
}
private void btnNext_MouseClick(object sender, MouseEventArgs e)
{
this.Value += 1;
}
private void setAllState(ButtonState buttonState)
{
btnPrev.State = buttonState;
btnNext.State = buttonState;
btnThumb.State = buttonState;
picBase.State = buttonState;
}
private IEnumerable<ACtrlButton> buttons
{
get
{
yield return btnPrev;
yield return btnNext;
yield return btnThumb;
}
}
public override void Draw(Graphics g)
{
if (g == null || !this.Visible)
return;
if (picBase != null)
{
BitmapOrigin curBmp = picBase.CurrentBitmap;
g.SetClip(this.Rectangle);
for (int h = 0; h < Size.Height; h += curBmp.Bitmap.Size.Height)
{
g.DrawImage(curBmp.Bitmap, Location.X, Location.Y + h);
}
g.ResetClip();
}
if (btnPrev != null)
{
btnPrev.Draw(g, this.Location);
}
if (btnNext != null)
{
btnNext.Draw(g, this.Location);
}
if (btnThumb != null)
{
btnThumb.Location = new Point(0, calcThumbLocationY());
btnThumb.Draw(g, this.Location);
}
}
private int calcThumbLocationY()
{
if (this.minimum == this.maximum)
return 0;
int totalHeight = this.Size.Height - this.btnPrev.Size.Height - this.btnNext.Size.Height - this.btnThumb.Size.Height;
int thumbY = totalHeight * this.value / (this.maximum - this.minimum);
return thumbY + this.btnPrev.Size.Height;
}
private void childBtn_ButtonStateChanged(object sender, EventArgs e)
{
this.OnChildButtonStateChanged();
}
private void scrolling(Point mouseLocation)
{
if (this.minimum == this.maximum)
return;
Point origin = new Point(this.Location.X, this.Location.Y + this.btnPrev.Size.Height + this.btnThumb.Size.Height / 2);
Size size = new Size(this.Size.Width, this.Size.Height - this.btnPrev.Size.Height - this.btnNext.Size.Height - this.btnThumb.Size.Height);
Rectangle scrollingRect = new Rectangle(origin, size);
this.Value = (int)Math.Round(1.0 * (this.maximum - this.minimum) * (mouseLocation.Y - scrollingRect.Y) / scrollingRect.Height);
}
protected virtual void OnValueChanged()
{
if (this.ValueChanged != null)
{
this.ValueChanged(this, EventArgs.Empty);
}
}
protected virtual void OnChildButtonStateChanged()
{
if (this.ChildButtonStateChanged != null)
{
this.ChildButtonStateChanged(this, EventArgs.Empty);
}
}
public event EventHandler ValueChanged;
public event EventHandler ChildButtonStateChanged;
}
}
================================================
FILE: WzComparerR2/CharaSimControl/AfrmEquip.cs
================================================
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Windows.Forms;
using System.Drawing;
using System.Text;
using CharaSimResource;
using WzComparerR2.CharaSim;
using WzComparerR2.Common;
using WzComparerR2.Controls;
namespace WzComparerR2.CharaSimControl
{
public class AfrmEquip : AlphaForm
{
public AfrmEquip()
{
sec = new int[5];
for (int i = 0; i < sec.Length; i++)
sec[i] = 1 << i;
initCtrl();
this.AllowDrop = true;
this.TotemVisible = true;
}
private BitVector32 partVisible;
private int[] sec;
private Point baseOffset;
private Point newLocation;
private bool waitForRefresh;
private Character character;
private ACtrlButton btnPet;
private ACtrlButton btnDragon;
private ACtrlButton btnMechanic;
private ACtrlButton btnAndroid;
private ACtrlButton btnClose;
public Character Character
{
get { return character; }
set { character = value; }
}
public bool PetVisible
{
get { return partVisible[sec[0]]; }
private set { partVisible[sec[0]] = value; }
}
public bool DragonVisible
{
get { return partVisible[sec[1]]; }
private set
{
partVisible[sec[1]] = value;
if (value)
{
partVisible[sec[2]] = false;
partVisible[sec[3]] = false;
}
}
}
public bool MechanicVisible
{
get { return partVisible[sec[2]]; }
private set
{
partVisible[sec[2]] = value;
if (value)
{
partVisible[sec[1]] = false;
partVisible[sec[3]] = false;
}
}
}
public bool AndroidVisible
{
get { return partVisible[sec[3]]; }
private set
{
partVisible[sec[3]] = value;
if (value)
{
partVisible[sec[1]] = false;
partVisible[sec[2]] = false;
}
}
}
public bool TotemVisible
{
get { return partVisible[sec[4]]; }
private set { partVisible[sec[4]] = value; }
}
private Rectangle DragonRect
{
get
{
return new Rectangle(
new Point(baseOffset.X - Resource.Equip_dragon_backgrnd.Width, baseOffset.Y),
Resource.Equip_dragon_backgrnd.Size);
}
}
private Rectangle MechanicRect
{
get
{
return new Rectangle(
new Point(baseOffset.X - Resource.Equip_mechanic_backgrnd.Width, baseOffset.Y),
Resource.Equip_mechanic_backgrnd.Size);
}
}
private Rectangle AndroidRect
{
get
{
return new Rectangle(
new Point(baseOffset.X - Resource.Equip_Android_backgrnd.Width, baseOffset.Y),
Resource.Equip_Android_backgrnd.Size);
}
}
private Rectangle PetRect
{
get
{
return new Rectangle(
new Point(baseOffset.X + Resource.Equip_character_backgrnd.Width,
baseOffset.Y + Resource.Equip_character_backgrnd.Height - Resource.Equip_pet_backgrnd.Height),
Resource.Equip_pet_backgrnd.Size);
}
}
private Rectangle TotemRect
{
get
{
return new Rectangle(
new Point(baseOffset.X - Resource.Equip_totem_backgrnd.Width,
baseOffset.Y + Resource.Equip_character_backgrnd.Height - Resource.Equip_totem_backgrnd.Height),
Resource.Equip_pet_backgrnd.Size);
}
}
private void initCtrl()
{
this.btnPet = new ACtrlButton();
this.btnPet.Normal = new BitmapOrigin(Resource.Equip_character_BtPet_normal_0);
this.btnPet.Pressed = new BitmapOrigin(Resource.Equip_character_BtPet_pressed_0);
this.btnPet.MouseOver = new BitmapOrigin(Resource.Equip_character_BtPet_mouseOver_0);
this.btnPet.Disabled = new BitmapOrigin(Resource.Equip_character_BtPet_disabled_0);
this.btnPet.Location = new Point(139, 264);
this.btnPet.Size = new Size(36, 17);
this.btnPet.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnPet.MouseClick += new System.Windows.Forms.MouseEventHandler(btnPet_MouseClick);
this.btnDragon = new ACtrlButton();
this.btnDragon.Normal = new BitmapOrigin(Resource.Equip_character_BtDragon_normal_0);
this.btnDragon.Pressed = new BitmapOrigin(Resource.Equip_character_BtDragon_pressed_0);
this.btnDragon.MouseOver = new BitmapOrigin(Resource.Equip_character_BtDragon_mouseOver_0);
this.btnDragon.Disabled = new BitmapOrigin(Resource.Equip_character_BtDragon_disabled_0);
this.btnDragon.Location = new Point(10, 264);
this.btnDragon.Size = new Size(43, 17);
this.btnDragon.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnDragon.MouseClick += new MouseEventHandler(btnDragon_MouseClick);
this.btnMechanic = new ACtrlButton();
this.btnMechanic.Normal = new BitmapOrigin(Resource.Equip_character_BtMechanic_normal_0);
this.btnMechanic.Pressed = new BitmapOrigin(Resource.Equip_character_BtMechanic_pressed_0);
this.btnMechanic.MouseOver = new BitmapOrigin(Resource.Equip_character_BtMechanic_mouseOver_0);
this.btnMechanic.Disabled = new BitmapOrigin(Resource.Equip_character_BtMechanic_disabled_0);
this.btnMechanic.Location = new Point(10, 264);
this.btnMechanic.Size = new Size(43, 17);
this.btnMechanic.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnMechanic.MouseClick += new MouseEventHandler(btnMechanic_MouseClick);
this.btnAndroid = new ACtrlButton();
this.btnAndroid.Normal = new BitmapOrigin(Resource.Equip_character_BtAndroid_normal_0);
this.btnAndroid.Pressed = new BitmapOrigin(Resource.Equip_character_BtAndroid_pressed_0);
this.btnAndroid.MouseOver = new BitmapOrigin(Resource.Equip_character_BtAndroid_mouseOver_0);
this.btnAndroid.Disabled = new BitmapOrigin(Resource.Equip_character_BtAndroid_disabled_0);
this.btnAndroid.Location = new Point(65, 266);
this.btnAndroid.Size = new Size(25, 12);
this.btnAndroid.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnAndroid.MouseClick += new MouseEventHandler(btnAndroid_MouseClick);
this.btnClose = new ACtrlButton();
this.btnClose.Normal = new BitmapOrigin(Resource.BtClose3_normal_0);
this.btnClose.Pressed = new BitmapOrigin(Resource.BtClose3_pressed_0);
this.btnClose.MouseOver = new BitmapOrigin(Resource.BtClose3_mouseOver_0);
this.btnClose.Disabled = new BitmapOrigin(Resource.BtClose3_disabled_0);
this.btnClose.Location = new Point(162, 6);
this.btnClose.Size = new Size(13, 13);
this.btnClose.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnClose.MouseClick += new MouseEventHandler(btnClose_MouseClick);
}
public override void Refresh()
{
this.preRender();
this.SetBitmap(this.Bitmap);
this.CaptionRectangle = new Rectangle(this.baseOffset, new Size(Resource.Equip_character_backgrnd.Width, 24));
this.Location = newLocation;
base.Refresh();
}
protected override bool captionHitTest(Point point)
{
Rectangle rect = this.btnClose.Rectangle;
rect.Offset(this.baseOffset);
if (rect.Contains(point))
return false;
return base.captionHitTest(point);
}
private void preRender()
{
if (Bitmap != null)
Bitmap.Dispose();
//处理按钮可见
setControlState();
//计算图像大小
Point baseOffsetnew = calcRenderBaseOffset();
Size size = Resource.Equip_character_backgrnd.Size;
size.Width += baseOffsetnew.X;
if (this.PetVisible)
size.Width += Resource.Equip_pet_backgrnd.Width;
//处理偏移
this.newLocation = new Point(this.Location.X + this.baseOffset.X - baseOffsetnew.X,
this.Location.Y + this.baseOffset.Y - baseOffsetnew.Y);
this.baseOffset = baseOffsetnew;
//绘制图像
Bitmap bitmap = new Bitmap(size.Width, size.Height);
Graphics g = Graphics.FromImage(bitmap);
renderBase(g);
if (this.DragonVisible) renderDragon(g);
else if (this.MechanicVisible) renderMechanic(g);
else if (this.AndroidVisible) renderAndroid(g);
if (this.PetVisible) renderPet(g);
if (this.TotemVisible) renderTotem(g);
g.Dispose();
this.Bitmap = bitmap;
}
private Point calcRenderBaseOffset()
{
if (this.DragonVisible)
return new Point(Resource.Equip_dragon_backgrnd.Width, 0);
else if (this.MechanicVisible)
return new Point(Resource.Equip_mechanic_backgrnd.Width, 0);
else if (this.AndroidVisible)
return new Point(Resource.Equip_Android_backgrnd.Width, 0);
else
return new Point(Resource.Equip_totem_backgrnd.Width, 0);
}
private void setControlState()
{
if (this.character == null)
{
this.btnDragon.Visible = false;
this.btnMechanic.Visible = false;
this.DragonVisible = false;
this.MechanicVisible = false;
}
else
{
if (this.character.Status.Job / 100 == 22) //龙神
{
this.btnDragon.Visible = true;
}
else
{
this.btnDragon.Visible = false;
this.DragonVisible = false;
}
if (this.character.Status.Job / 100 == 35) //机械
{
this.btnMechanic.Visible = true;
}
else
{
this.btnMechanic.Visible = false;
this.MechanicVisible = false;
}
}
}
private void renderBase(Graphics g)
{
g.TranslateTransform(baseOffset.X, baseOffset.Y);
g.DrawImage(Resource.Equip_character_backgrnd, 0, 0);
g.DrawImage(Resource.Equip_character_backgrnd2, 6, 22);
g.DrawImage(Resource.Equip_character_backgrnd3, 10, 27);
g.DrawImage(Resource.Equip_character_cashPendant, 76, 93);
g.DrawImage(Resource.Equip_character_charmPocket, 10, 93);
if (this.character != null
&& (this.character.Status.Job / 100 == 23 || this.character.Status.Job == 2002))
{
g.DrawImage(Resource.Equip_character_magicArrow, 142, 126);
}
foreach (AControl aCtrl in this.aControls)
{
aCtrl.Draw(g);
}
if (this.character != null)
{
for (int i = 0; i < 30; i++)
{
Gear gear = this.character.Equip.GearSlots[i];
if (gear != null)
{
int dx = 10 + i % 5 * 33, dy = 27 + i / 5 * 33;
drawGearIcon(gear, g, dx, dy);
}
}
}
g.ResetTransform();
}
private void renderDragon(Graphics g)
{
Rectangle rect = this.DragonRect;
g.TranslateTransform(rect.X, rect.Y);
g.DrawImage(Resource.Equip_dragon_backgrnd, 0, 0);
g.DrawImage(Resource.Equip_dragon_backgrnd2, 6, 22);
g.DrawImage(Resource.Equip_dragon_backgrnd3, 10, 29);
if (this.character != null)
{
for (int i = 35; i < 39; i++)
{
Gear gear = this.character.Equip.GearSlots[i];
if (gear != null)
{
int dx = 10 + (i - 35) * 33, dy = 22 + (((i - 1) % 2) + 1) * 33;
drawGearIcon(gear, g, dx, dy);
}
}
}
g.ResetTransform();
}
private void renderMechanic(Graphics g)
{
Rectangle rect = this.MechanicRect;
g.TranslateTransform(rect.X, rect.Y);
g.DrawImage(Resource.Equip_mechanic_backgrnd, 0, 0);
g.DrawImage(Resource.Equip_mechanic_backgrnd2, 6, 22);
g.DrawImage(Resource.Equip_mechanic_backgrnd3, 12, 35);
if (this.character != null)
{
int dx, dy;
for (int i = 39; i < 44; i++)
{
Gear gear = this.character.Equip.GearSlots[i];
if (gear != null)
{
switch(i)
{
case 39: dx = 1; dy = 1; break;
case 40: dx = 1; dy = 2; break;
case 41: dx = 2; dy = 2; break;
case 42: dx = 0; dy = 3; break;
case 43: dx = 1; dy = 3; break;
default: continue;
}
dx = 10 + dx * 33;
dy = 22 + dy * 33;
drawGearIcon(gear, g, dx, dy);
}
}
}
g.ResetTransform();
}
private void renderPet(Graphics g)
{
Rectangle rect = this.PetRect;
g.TranslateTransform(rect.X, rect.Y);
g.DrawImage(Resource.Equip_pet_backgrnd, 0, 0);
g.DrawImage(Resource.Equip_pet_backgrnd2, 6, 21);
g.DrawImage(Resource.Equip_pet_backgrnd3, 11, 27);
g.ResetTransform();
}
private void renderAndroid(Graphics g)
{
Rectangle rect = this.AndroidRect;
g.TranslateTransform(rect.X, rect.Y);
g.DrawImage(Resource.Equip_Android_backgrnd, 0, 0);
g.DrawImage(Resource.Equip_Android_backgrnd2, 6, 24);
g.DrawImage(Resource.Equip_Android_backgrnd3, 12, 28);
g.ResetTransform();
}
private void renderTotem(Graphics g)
{
Rectangle rect = this.TotemRect;
g.TranslateTransform(rect.X, rect.Y);
g.DrawImage(Resource.Equip_totem_backgrnd, 0, 0);
g.ResetTransform();
}
private void drawGearIcon(Gear gear, Graphics g, int x, int y)
{
if (gear == null || g == null)
return;
if (gear.State == GearState.disable)
g.DrawImage(Resource.Equip_character_disabled, x, y);
Pen pen = GearGraphics.GetGearItemBorderPen(gear.Grade);
if (pen != null)
{
Point[] path = GearGraphics.GetIconBorderPath(x, y);
g.DrawLines(pen, path);
}
g.DrawImage(gear.Icon.Bitmap,
x - gear.Icon.Origin.X,
y + 32 - gear.Icon.Origin.Y);
}
private IEnumerable<AControl> aControls
{
get
{
yield return btnDragon;
yield return btnMechanic;
yield return btnPet;
yield return btnClose;
yield return btnAndroid;
}
}
private void aCtrl_RefreshCall(object sender, EventArgs e)
{
this.waitForRefresh = true;
}
private void btnPet_MouseClick(object sender, MouseEventArgs e)
{
this.PetVisible = !this.PetVisible;
this.waitForRefresh = true;
}
private void btnDragon_MouseClick(object sender, MouseEventArgs e)
{
this.DragonVisible = !this.DragonVisible;
this.waitForRefresh = true;
}
private void btnMechanic_MouseClick(object sender, MouseEventArgs e)
{
this.MechanicVisible = !this.MechanicVisible;
this.waitForRefresh = true;
}
private void btnAndroid_MouseClick(object sender, MouseEventArgs e)
{
this.AndroidVisible = !this.AndroidVisible;
this.waitForRefresh = true;
}
private void btnClose_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = false;
}
protected override void OnMouseMove(MouseEventArgs e)
{
MouseEventArgs childArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - baseOffset.X, e.Y - baseOffset.Y, e.Delta);
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseMove(childArgs);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseMove(e);
}
protected override void OnMouseDown(MouseEventArgs e)
{
MouseEventArgs childArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - baseOffset.X, e.Y - baseOffset.Y, e.Delta);
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseDown(childArgs);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
MouseEventArgs childArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - baseOffset.X, e.Y - baseOffset.Y, e.Delta);
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseUp(childArgs);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseUp(e);
}
protected override void OnMouseClick(MouseEventArgs e)
{
MouseEventArgs childArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - baseOffset.X, e.Y - baseOffset.Y, e.Delta);
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseClick(childArgs);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseClick(e);
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/AfrmItem.cs
================================================
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Text;
using CharaSimResource;
using WzComparerR2.CharaSim;
using WzComparerR2.Common;
using WzComparerR2.Controls;
namespace WzComparerR2.CharaSimControl
{
public class AfrmItem : AlphaForm
{
public AfrmItem()
{
this.AllowDrop = true;
initCtrl();
}
private ItemTab[] itemTabs;
private bool fullMode;
private bool selectedIndexChanging;
private ACtrlVScroll vScroll;
private Character character;
private ACtrlButton btnFull;
private ACtrlButton btnSmall;
private ACtrlButton btnCoin;
private ACtrlButton btnGather;
private ACtrlButton btnSort;
private ACtrlButton btnClose;
private bool waitForRefresh;
public event ItemMouseEventHandler ItemMouseDown;
public event ItemMouseEventHandler ItemMouseUp;
public event ItemMouseEventHandler ItemMouseClick;
public event ItemMouseEventHandler ItemMouseMove;
public event EventHandler ItemMouseLeave;
public Character Character
{
get { return character; }
set
{
character = value;
for (int i = 0; i < this.itemTabs.Length; i++)
{
if (this.character == null || !this.itemTabs[i].SetItemSource(character.ItemSlots[i]))
{
this.itemTabs[i].ClearItems();
}
}
}
}
private void initCtrl()
{
this.itemTabs = new ItemTab[5];
for (int i = 0; i < itemTabs.Length; i++)
{
this.itemTabs[i] = new ItemTab(this);
this.itemTabs[i].TabEnabled = new BitmapOrigin((Bitmap)Resource.ResourceManager.GetObject("Item_Tab_enabled_" + i),
-9 - 31 * i, -26);
this.itemTabs[i].TabDisabled = new BitmapOrigin((Bitmap)Resource.ResourceManager.GetObject("Item_Tab_disabled_" + i),
-9 - 31 * i, -26);
}
this.itemTabs[0].Selected = true;
this.vScroll = new ACtrlVScroll();
this.vScroll.PicBase.Normal = new BitmapOrigin(Resource.VScr9_enabled_base);
this.vScroll.PicBase.Disabled = new BitmapOrigin(Resource.VScr9_disabled_base);
this.vScroll.BtnPrev.Normal = new BitmapOrigin(Resource.VScr9_enabled_prev0);
this.vScroll.BtnPrev.Pressed = new BitmapOrigin(Resource.VScr9_enabled_prev1);
this.vScroll.BtnPrev.MouseOver = new BitmapOrigin(Resource.VScr9_enabled_prev2);
this.vScroll.BtnPrev.Disabled = new BitmapOrigin(Resource.VScr9_disabled_prev);
this.vScroll.BtnPrev.Size = this.vScroll.BtnPrev.Normal.Bitmap.Size;
this.vScroll.BtnPrev.Location = new Point(0, 0);
this.vScroll.BtnNext.Normal = new BitmapOrigin(Resource.VScr9_enabled_next0);
this.vScroll.BtnNext.Pressed = new BitmapOrigin(Resource.VScr9_enabled_next1);
this.vScroll.BtnNext.MouseOver = new BitmapOrigin(Resource.VScr9_enabled_next2);
this.vScroll.BtnNext.Disabled = new BitmapOrigin(Resource.VScr9_disabled_next);
this.vScroll.BtnNext.Size = this.vScroll.BtnNext.Normal.Bitmap.Size;
this.vScroll.BtnNext.Location = new Point(0, 195);
this.vScroll.BtnThumb.Normal = new BitmapOrigin(Resource.VScr9_enabled_thumb0);
this.vScroll.BtnThumb.Pressed = new BitmapOrigin(Resource.VScr9_enabled_thumb1);
this.vScroll.BtnThumb.MouseOver = new BitmapOrigin(Resource.VScr9_enabled_thumb2);
this.vScroll.BtnThumb.Size = this.vScroll.BtnThumb.Normal.Bitmap.Size;
this.vScroll.Location = new Point(152, 51);
this.vScroll.Size = new Size(11, 207);
this.vScroll.ValueChanged += new EventHandler(vScroll_ValueChanged);
this.vScroll.ChildButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnFull = new ACtrlButton();
this.btnFull.Normal = new BitmapOrigin(Resource.Item_BtFull_normal_0);
this.btnFull.Pressed = new BitmapOrigin(Resource.Item_BtFull_pressed_0);
this.btnFull.MouseOver = new BitmapOrigin(Resource.Item_BtFull_mouseOver_0);
this.btnFull.Disabled = new BitmapOrigin(Resource.Item_BtFull_disabled_0);
this.btnFull.Location = new Point(147, 267);
this.btnFull.Size = new Size(16, 16);
this.btnFull.MouseClick += new MouseEventHandler(btnFull_MouseClick);
this.btnFull.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnSmall = new ACtrlButton();
this.btnSmall.Normal = new BitmapOrigin(Resource.Item_BtSmall_normal_0);
this.btnSmall.Pressed = new BitmapOrigin(Resource.Item_BtSmall_pressed_0);
this.btnSmall.MouseOver = new BitmapOrigin(Resource.Item_BtSmall_mouseOver_0);
this.btnSmall.Disabled = new BitmapOrigin(Resource.Item_BtSmall_disabled_0);
this.btnSmall.Location = new Point(147, 267);
this.btnSmall.Size = new Size(16, 16);
this.btnSmall.MouseClick += new MouseEventHandler(btnSmall_MouseClick);
this.btnSmall.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnCoin = new ACtrlButton();
this.btnCoin.Normal = new BitmapOrigin(Resource.Item_BtCoin_normal_0);
this.btnCoin.Pressed = new BitmapOrigin(Resource.Item_BtCoin_pressed_0);
this.btnCoin.MouseOver = new BitmapOrigin(Resource.Item_BtCoin_mouseOver_0);
this.btnCoin.Disabled = new BitmapOrigin(Resource.Item_BtCoin_disabled_0);
this.btnCoin.Location = new Point(9, 267);
this.btnCoin.Size = new Size(40, 16);
this.btnCoin.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnGather = new ACtrlButton();
this.btnGather.Normal = new BitmapOrigin(Resource.Item_BtGather_normal_0);
this.btnGather.Pressed = new BitmapOrigin(Resource.Item_BtGather_pressed_0);
this.btnGather.MouseOver = new BitmapOrigin(Resource.Item_BtGather_mouseOver_0);
this.btnGather.Disabled = new BitmapOrigin(Resource.Item_BtGather_disabled_0);
this.btnGather.Location = new Point(129, 267);
this.btnGather.Size = new Size(16, 16);
this.btnGather.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnGather.MouseClick += new MouseEventHandler(btnGather_MouseClick);
this.btnSort = new ACtrlButton();
this.btnSort.Normal = new BitmapOrigin(Resource.Item_BtSort_normal_0);
this.btnSort.Pressed = new BitmapOrigin(Resource.Item_BtSort_pressed_0);
this.btnSort.MouseOver = new BitmapOrigin(Resource.Item_BtSort_mouseOver_0);
this.btnSort.Disabled = new BitmapOrigin(Resource.Item_BtSort_disabled_0);
this.btnSort.Location = new Point(129, 267);
this.btnSort.Size = new Size(16, 16);
this.btnSort.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnSort.MouseClick += new MouseEventHandler(btnSort_MouseClick);
this.btnClose = new ACtrlButton();
this.btnClose.Normal = new BitmapOrigin(Resource.BtClose3_normal_0);
this.btnClose.Pressed = new BitmapOrigin(Resource.BtClose3_pressed_0);
this.btnClose.MouseOver = new BitmapOrigin(Resource.BtClose3_mouseOver_0);
this.btnClose.Disabled = new BitmapOrigin(Resource.BtClose3_disabled_0);
this.btnClose.Location = new Point(150, 6);
this.btnClose.Size = new Size(13, 13);
this.btnClose.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnClose.MouseClick += new MouseEventHandler(btnClose_MouseClick);
}
public override void Refresh()
{
this.preRender();
this.SetBitmap(this.Bitmap);
this.CaptionRectangle = new Rectangle(0, 0, this.Bitmap.Width, 24);
base.Refresh();
}
protected override bool captionHitTest(Point point)
{
if (this.btnClose.Rectangle.Contains(point))
return false;
return base.captionHitTest(point);
}
private void preRender()
{
if (Bitmap != null)
Bitmap.Dispose();
if (this.btnGather.Visible)
{
this.btnSort.Visible = false;
}
else
{
this.btnSort.Visible = true;
}
if (this.fullMode)
{
this.btnFull.Visible = false;
this.btnSmall.Visible = true;
this.vScroll.Visible = false;
this.btnClose.Location = new Point(574, 6);
renderFull();
}
else
{
this.btnFull.Visible = true;
this.btnSmall.Visible = false;
this.vScroll.Visible = true;
this.vScroll.Maximum = this.SelectedTab.ScrollMaxValue - 6;
this.vScroll.Value = this.SelectedTab.ScrollValue;
this.btnClose.Location = new Point(150, 6);
renderSmall();
}
}
private void renderSmall()
{
this.Bitmap = new Bitmap(Resource.Item_backgrnd);
Graphics g = Graphics.FromImage(this.Bitmap);
g.DrawImage(Resource.Item_backgrnd2, 6, 23);
renderTabs(g);
g.DrawImage(Resource.Item_backgrnd3, 7, 45);
foreach (AControl ctrl in this.aControls)
{
ctrl.Draw(g);
}
ItemBase[] itemArray = this.SelectedTab.Items;
int idxOffset = 4 * this.SelectedTab.ScrollValue;
for (int i = 0; i < 24; i++)
{
Point origin = getItemIconOrigin(i);
origin.Offset(0, 32);
renderItemBase(g, itemArray[i + idxOffset], origin);
}
g.Dispose();
}
private void renderFull()
{
this.Bitmap = new Bitmap(Resource.Item_FullBackgrnd);
Graphics g = Graphics.FromImage(this.Bitmap);
g.DrawImage(Resource.Item_FullBackgrnd2, 6, 23);
renderTabs(g);
g.DrawImage(Resource.Item_FullBackgrnd3, 10, 51);
foreach (AControl ctrl in this.aControls)
{
ctrl.Draw(g);
}
ItemBase[] itemArray = this.SelectedTab.Items;
for (int i = 0; i < itemArray.Length; i++)
{
int idx = i % 24, group = i / 24;
Point origin = getItemIconOrigin(i);
origin.Offset(0, 32);
renderItemBase(g, itemArray[i], origin);
}
g.Dispose();
}
private void renderTabs(Graphics g)
{
for (int i = 0; i < this.itemTabs.Length; i++)
{
if (this.itemTabs[i].Selected)
{
Point pos = this.itemTabs[i].TabEnabled.OpOrigin;
// if (this.fullMode)
pos.Offset(0, -2);
g.DrawImage(this.itemTabs[i].TabEnabled.Bitmap, pos);
}
else
{
g.DrawImage(this.itemTabs[i].TabDisabled.Bitmap, this.itemTabs[i].TabEnabled.OpOrigin);
}
}
}
private void renderItemBase(Graphics g, ItemBase itemBase, Point origin)
{
if (itemBase is Gear)
renderGear(g, itemBase as Gear, origin);
else if (itemBase is Item)
renderItem(g, itemBase as Item, origin);
}
private void renderGear(Graphics g, Gear gear, Point origin)
{
if (g == null || gear == null)
return;
Pen pen = GearGraphics.GetGearItemBorderPen(gear.Grade);
if (pen != null)
{
Point[] path = GearGraphics.GetIconBorderPath(origin.X, origin.Y - 32);
g.DrawLines(pen, path);
}
g.DrawImage(Resource.Item_shadow, origin.X + 3, origin.Y - 6);
if (gear.IconRaw.Bitmap != null)
{
g.DrawImage(gear.IconRaw.Bitmap, origin.X - gear.IconRaw.Origin.X, origin.Y - gear.IconRaw.Origin.Y);
}
if (gear.Cash)
{
/*
int value;
if (gear.Props.TryGetValue(GearPropType.royalSpecial, out value) && value > 0)
g.DrawImage(Resource.CashItem_label_0, origin.X + 20, origin.Y - 12);
else if (gear.Props.TryGetValue(GearPropType.masterSpecial, out value) && value > 0)
g.DrawImage(Resource.CashItem_label_3, origin.X + 20, origin.Y - 12);
else
*/
g.DrawImage(Resource.CashItem_0, origin.X + 20, origin.Y - 12);
}
}
private void renderItem(Graphics g, Item item, Point origin)
{
if (g == null || item == null)
return;
g.DrawImage(Resource.Item_shadow, origin.X + 3, origin.Y - 6);
if (item.IconRaw.Bitmap != null)
{
g.DrawImage(item.IconRaw.Bitmap, origin.X - item.IconRaw.Origin.X, origin.Y - item.IconRaw.Origin.Y);
}
if (item.Cash)
{
if (item.Props.TryGetValue(ItemPropType.wonderGrade, out long value) && value > 0)
{
Image label = Resource.ResourceManager.GetObject("CashItem_label_" + (value + 3)) as Image;
if (label != null)
{
g.DrawImage(new Bitmap(label), origin.X + 20, origin.Y - 12);
}
}
else
{
g.DrawImage(Resource.CashItem_0, origin.X + 20, origin.Y - 12);
}
}
}
private Point getItemIconOrigin(int index)
{
int idx = index % 24, group = index / 24;
Point p = new Point((idx % 4 + group * 4) * 36, idx / 4 * 35);
p.Offset(10, 51);
return p;
}
public int GetSlotIndexByPoint(Point point)
{
Point p = point;
p.Offset(-10, -51);
if (p.X < 0 || p.Y < 0)
return -1;
int x = p.X / 36, y = p.Y / 35;
if (y >= 6 || (fullMode ? x >= 24 : x >= 4))
return -1;
int idx = y * 4 + x % 4 + x / 4 * 24;
if (new Rectangle(getItemIconOrigin(idx), new Size(33, 33)).Contains(point))
return idx;
else
return -1;
}
public int GetItemIndexByPoint(Point point)
{
int slotIdx = GetSlotIndexByPoint(point);
if (slotIdx != -1 && !this.fullMode)
{
slotIdx += 4 * this.SelectedTab.ScrollValue;
}
return slotIdx;
}
public ItemBase GetItemByPoint(Point point)
{
int itemIdx = GetItemIndexByPoint(point);
if (itemIdx > -1 && itemIdx < this.SelectedTab.Items.Length)
return this.SelectedTab.Items[itemIdx];
else
return null;
}
#region 重写和响应事件
protected override void OnMouseMove(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseMove(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseMove(e);
ItemBase item = GetItemByPoint(e.Location);
if (item != null)
this.OnItemMouseMove(new ItemMouseEventArgs(e, item));
else
this.OnItemMouseLeave(EventArgs.Empty);
}
protected override void OnMouseDown(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseDown(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseDown(e);
ItemBase item = GetItemByPoint(e.Location);
if (item != null)
this.OnItemMouseDown(new ItemMouseEventArgs(e, item));
}
protected override void OnMouseUp(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseUp(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseUp(e);
ItemBase item = GetItemByPoint(e.Location);
if (item != null)
this.OnItemMouseUp(new ItemMouseEventArgs(e, item));
}
protected override void OnMouseClick(MouseEventArgs e)
{
//处理选择选项卡
tab_OnMouseClick(e);
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseClick(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseClick(e);
ItemBase item = GetItemByPoint(e.Location);
if (item != null)
this.OnItemMouseClick(new ItemMouseEventArgs(e, item));
}
protected override void OnMouseWheel(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseWheel(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseWheel(e);
}
protected virtual void OnItemMouseDown(ItemMouseEventArgs e)
{
if (this.ItemMouseDown != null)
this.ItemMouseDown(this, e);
}
protected virtual void OnItemMouseUp(ItemMouseEventArgs e)
{
if (this.ItemMouseUp != null)
this.ItemMouseUp(this, e);
}
protected virtual void OnItemMouseClick(ItemMouseEventArgs e)
{
if (this.ItemMouseClick != null)
this.ItemMouseClick(this, e);
}
protected virtual void OnItemMouseMove(ItemMouseEventArgs e)
{
if (this.ItemMouseMove != null)
this.ItemMouseMove(this, e);
}
protected virtual void OnItemMouseLeave(EventArgs e)
{
if (this.ItemMouseLeave != null)
this.ItemMouseLeave(this, e);
}
#endregion
private void tab_OnMouseClick(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
for (int i = 0; i < this.itemTabs.Length; i++)
{
Rectangle rect;
if (this.itemTabs[i].Selected)
{
rect = this.itemTabs[i].TabEnabled.Rectangle;
}
else
{
rect = this.itemTabs[i].TabDisabled.Rectangle;
}
if (rect.Contains(e.Location))
{
if (this.SelectedIndex != i)
{
this.SelectedIndex = i;
this.btnGather.Visible = true; //切换tab时重置btnGather状态
this.waitForRefresh = true;
}
break;
}
}
}
}
private void btnSmall_MouseClick(object sender, MouseEventArgs e)
{
this.fullMode = false;
this.waitForRefresh = true;
}
private void btnFull_MouseClick(object sender, MouseEventArgs e)
{
this.fullMode = true;
this.waitForRefresh = true;
}
private void vScroll_ValueChanged(object sender, EventArgs e)
{
this.SelectedTab.ScrollValue = this.vScroll.Value;
this.waitForRefresh = true;
}
private void btnGather_MouseClick(object sender, MouseEventArgs e)
{
this.btnGather.Visible = !this.btnGather.Visible;
this.gather();
this.waitForRefresh = true;
}
private void btnSort_MouseClick(object sender, MouseEventArgs e)
{
this.btnGather.Visible = !this.btnGather.Visible;
this.sort();
this.waitForRefresh = true;
}
private void btnClose_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = false;
}
private void aCtrl_RefreshCall(object sender, EventArgs e)
{
this.waitForRefresh = true;
}
private void gather()
{
ItemBase[] itemArray = this.SelectedTab.Items;
Queue<int> nullQueue = new Queue<int>();
for (int i = 0; i < itemArray.Length; i++)
{
if (itemArray[i] == null)
{
nullQueue.Enqueue(i);
}
else if (nullQueue.Count > 0)
{
int nullIdx = nullQueue.Dequeue();
itemArray[nullIdx] = itemArray[i];
itemArray[i] = null;
nullQueue.Enqueue(i);
}
}
}
private void sort()
{
ItemBase[] itemArray = this.SelectedTab.Items;
Array.Sort<ItemBase>(itemArray, (a, b) =>
{
if (a == null) return 1;
if (b == null) return -1;
return a.ItemID - b.ItemID;
});
}
private IEnumerable<AControl> aControls
{
get
{
yield return this.vScroll;
yield return this.btnFull;
yield return this.btnSmall;
yield return this.btnCoin;
yield return this.btnGather;
yield return this.btnSort;
yield return this.btnClose;
}
}
public ItemTab[] ItemTabs
{
get { return this.itemTabs; }
}
/// <summary>
/// 获取或设置一个bool值,它表示是否当前背包显示为大背包模式。
/// </summary>
public bool FullMode
{
get { return fullMode; }
set { fullMode = value; }
}
/// <summary>
/// 获取或设置正在选中的背包选项卡的索引。
/// </summary>
public int SelectedIndex
{
get
{
for (int i = 0; i < this.itemTabs.Length; i++)
{
if (this.itemTabs[i].Selected)
return i;
}
this.itemTabs[0].Selected = true;
return 0;
}
set
{
value = Math.Min(Math.Max(value, 0), this.itemTabs.Length - 1);
this.selectedIndexChanging = true;
for (int i = 0; i < this.itemTabs.Length; i++)
{
this.itemTabs[i].Selected = (i == value);
}
this.selectedIndexChanging = false;
}
}
public bool AddItem(ItemBase item)
{
if (item == null)
return false;
int idx;
switch (item.Type)
{
case ItemBaseType.Equip: idx = 0; break;
case ItemBaseType.Consume: idx = 1; break;
case ItemBaseType.Install: idx = 3; break;
case ItemBaseType.Etc: idx = 2; break;
case ItemBaseType.Cash: idx = 4; break;
default: return false;
}
ItemBase[] itemArray = this.itemTabs[idx].Items;
for (int i = 0; i < itemArray.Length; i++)
{
if (itemArray[i] == null)
{
itemArray[i] = (ItemBase)item.Clone();
this.SelectedIndex = idx;
this.itemTabs[idx].ScrollValue = (i - 20) / 4;
this.Refresh();
return true;
}
}
return false;
}
public void RemoveItem(int index)
{
ItemBase[] itemArray = this.SelectedTab.Items;
if (index >= 0 && index < itemArray.Length && itemArray[index] != null)
{
itemArray[index] = null;
this.Refresh();
}
}
/// <summary>
/// 获取或设置正在选中的背包选项卡。
/// </summary>
public ItemTab SelectedTab
{
get { return this.itemTabs[this.SelectedIndex]; }
set { this.SelectedIndex = Array.IndexOf(this.itemTabs, value); }
}
public class ItemTab
{
public ItemTab(AfrmItem owner)
{
this.owner = owner;
this.items = new ItemBase[ItemCount];
}
public const int ItemCount = 96;
private AfrmItem owner;
private ItemBase[] items;
private bool selected;
private BitmapOrigin tabEnabled;
private BitmapOrigin tabDisabled;
private int scrollValue;
public ItemBase[] Items
{
get { return this.items; }
}
public bool Selected
{
get { return selected; }
set
{
if (selected != value)
{
if (!this.owner.selectedIndexChanging)
this.owner.SelectedIndex = Array.IndexOf(this.owner.itemTabs, this);
this.selected = value;
}
}
}
public bool SetItemSource(ItemBase[] items)
{
if (items == null || items.Length != ItemCount)
{
return false;
}
else
{
this.items = items;
return true;
}
}
public void ClearItems()
{
for (int i = 0; i < this.items.Length; i++)
{
this.items[i] = null;
}
}
public BitmapOrigin TabEnabled
{
get { return tabEnabled; }
set { tabEnabled = value; }
}
public BitmapOrigin TabDisabled
{
get { return tabDisabled; }
set { tabDisabled = value; }
}
public int ScrollMaxValue
{
get { return this.items.Length / 4; }
}
public int ScrollValue
{
get { return scrollValue; }
set
{
value = Math.Min(Math.Max(0, value), ScrollMaxValue);
scrollValue = value;
}
}
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/AfrmStat.cs
================================================
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Text;
using CharaSimResource;
using WzComparerR2.CharaSim;
using WzComparerR2.Common;
using WzComparerR2.Controls;
namespace WzComparerR2.CharaSimControl
{
public class AfrmStat : AlphaForm
{
public AfrmStat()
{
initCtrl();
}
private bool fullMode;
private Character character;
private ACtrlButton btnHPUp;
private ACtrlButton btnMPUp;
private ACtrlButton btnStrUp;
private ACtrlButton btnDexUp;
private ACtrlButton btnIntUp;
private ACtrlButton btnLukUp;
private ACtrlButton btnAuto;
private ACtrlButton btnClose;
private ACtrlButton btnDetailOpen;
private ACtrlButton btnDetailClose;
private bool waitForRefresh;
public Character Character
{
get { return character; }
set { character = value; }
}
private void initCtrl()
{
this.btnHPUp = new ACtrlButton();
this.btnHPUp.Location = new Point(167, 157);
this.btnMPUp = new ACtrlButton();
this.btnMPUp.Location = new Point(167, 175);
this.btnStrUp = new ACtrlButton();
this.btnStrUp.Location = new Point(167, 262);
this.btnDexUp = new ACtrlButton();
this.btnDexUp.Location = new Point(167, 280);
this.btnIntUp = new ACtrlButton();
this.btnIntUp.Location = new Point(167, 298);
this.btnLukUp = new ACtrlButton();
this.btnLukUp.Location = new Point(167, 316);
ACtrlButton[] addBtnList = new ACtrlButton[] { btnHPUp, btnMPUp, btnStrUp, btnDexUp, btnIntUp, btnLukUp };
for (int i = 0; i < addBtnList.Length; i++)
{
addBtnList[i].Normal = new BitmapOrigin(Resource.Stat_main_BtUp_normal_0);
addBtnList[i].MouseOver = new BitmapOrigin(Resource.Stat_main_BtUp_mouseOver_0);
addBtnList[i].Pressed = new BitmapOrigin(Resource.Stat_main_BtUp_pressed_0);
addBtnList[i].Disabled = new BitmapOrigin(Resource.Stat_main_BtUp_disabled_0);
addBtnList[i].Size = new Size(12, 12);
addBtnList[i].ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
}
this.btnClose = new ACtrlButton();
this.btnClose.Normal = new BitmapOrigin(Resource.BtClose3_normal_0);
this.btnClose.Pressed = new BitmapOrigin(Resource.BtClose3_pressed_0);
this.btnClose.MouseOver = new BitmapOrigin(Resource.BtClose3_mouseOver_0);
this.btnClose.Disabled = new BitmapOrigin(Resource.BtClose3_disabled_0);
this.btnClose.Location = new Point(170, 6);
this.btnClose.Size = new Size(13, 13);
this.btnClose.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnClose.MouseClick += new MouseEventHandler(btnClose_MouseClick);
this.btnDetailOpen = new ACtrlButton();
this.btnDetailOpen.Normal = new BitmapOrigin(Resource.Stat_main_BtDetailOpen_normal_0);
this.btnDetailOpen.Pressed = new BitmapOrigin(Resource.Stat_main_BtDetailOpen_pressed_0);
this.btnDetailOpen.MouseOver = new BitmapOrigin(Resource.Stat_main_BtDetailOpen_mouseOver_0);
this.btnDetailOpen.Disabled = new BitmapOrigin(Resource.Stat_main_BtDetailOpen_disabled_0);
this.btnDetailOpen.Location = new Point(112,344);
this.btnDetailOpen.Size = new Size(68, 16);
this.btnDetailOpen.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnDetailOpen.MouseClick += new MouseEventHandler(btnDetailOpen_MouseClick);
this.btnDetailClose = new ACtrlButton();
this.btnDetailClose.Normal = new BitmapOrigin(Resource.Stat_main_BtDetailClose_normal_0);
this.btnDetailClose.Pressed = new BitmapOrigin(Resource.Stat_main_BtDetailClose_pressed_0);
this.btnDetailClose.MouseOver = new BitmapOrigin(Resource.Stat_main_BtDetailClose_mouseOver_0);
this.btnDetailClose.Disabled = new BitmapOrigin(Resource.Stat_main_BtDetailClose_disabled_0);
this.btnDetailClose.Location = new Point(112, 344);
this.btnDetailClose.Size = new Size(68, 16);
this.btnDetailClose.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
this.btnDetailClose.MouseClick += new MouseEventHandler(btnDetailClose_MouseClick);
this.btnAuto = new ACtrlButton();
this.btnAuto.Normal = new BitmapOrigin(Resource.Stat_main_BtAuto_normal_3);
this.btnAuto.Pressed = new BitmapOrigin(Resource.Stat_main_BtAuto_pressed_0);
this.btnAuto.MouseOver = new BitmapOrigin(Resource.Stat_main_BtAuto_mouseOver_0);
this.btnAuto.Disabled = new BitmapOrigin(Resource.Stat_main_BtAuto_disabled_0);
this.btnAuto.Location = new Point(108, 217);
this.btnAuto.Size = new Size(67, 34);
this.btnAuto.ButtonStateChanged += new EventHandler(aCtrl_RefreshCall);
}
private IEnumerable<AControl> aControls
{
get
{
yield return btnHPUp;
yield return btnMPUp;
yield return btnStrUp;
yield return btnDexUp;
yield return btnIntUp;
yield return btnLukUp;
yield return btnAuto;
yield return btnClose;
yield return btnDetailOpen;
yield return btnDetailClose;
}
}
public override void Refresh()
{
this.preRender();
this.SetBitmap(this.Bitmap);
this.CaptionRectangle = new Rectangle(0, 0, this.Bitmap.Width, 24);
base.Refresh();
}
protected override bool captionHitTest(Point point)
{
if (this.btnClose.Rectangle.Contains(point))
return false;
return base.captionHitTest(point);
}
private void preRender()
{
if (Bitmap != null)
Bitmap.Dispose();
setControlState();
Size size = Resource.Stat_main_backgrnd.Size;
if (fullMode)
size = new Size(size.Width + Resource.Stat_detail_backgrnd.Width, size.Height);
//绘制背景
Bitmap stat = new Bitmap(size.Width, size.Height);
Graphics g = Graphics.FromImage(stat);
renderBase(g);
if (fullMode)
renderDetail(g);
//绘制按钮
foreach (AControl ctrl in this.aControls)
{
ctrl.Draw(g);
}
g.Dispose();
this.Bitmap = stat;
}
private void setControlState()
{
if (this.fullMode)
{
this.btnDetailOpen.Visible = true;
this.btnDetailClose.Visible = false;
}
else
{
this.btnDetailOpen.Visible = false;
this.btnDetailClose.Visible = true;
}
if (this.character != null)
{
CharacterStatus charStat = this.character.Status;
setButtonEnabled(this.btnHPUp, charStat.Ap > 0 && charStat.MaxHP.BaseVal < charStat.MaxHP.TotalMax);
setButtonEnabled(this.btnMPUp, charStat.Ap > 0 && charStat.MaxMP.BaseVal < charStat.MaxMP.TotalMax);
setButtonEnabled(this.btnStrUp, charStat.Ap > 0 && charStat.Strength.BaseVal <= 999);
setButtonEnabled(this.btnDexUp, charStat.Ap > 0 && charStat.Dexterity.BaseVal <= 999);
setButtonEnabled(this.btnIntUp, charStat.Ap > 0 && charStat.Intelligence.BaseVal <= 999);
setButtonEnabled(this.btnLukUp, charStat.Ap > 0 && charStat.Luck.BaseVal <= 999);
setButtonEnabled(this.btnAuto, charStat.Ap > 0);
}
else
{
foreach (AControl ctrl in this.aControls)
{
setButtonEnabled(ctrl as ACtrlButton, true);
}
}
}
private void setButtonEnabled(ACtrlButton button, bool enabled)
{
if (button == null)
return;
if (enabled)
{
if (button.State == ButtonState.Disabled)
{
button.State = ButtonState.Normal;
}
}
else
{
if (button.State != ButtonState.Disabled)
{
button.State = ButtonState.Disabled;
}
}
}
private void renderBase(Graphics g)
{
g.DrawImage(Resource.Stat_main_backgrnd, 0, 0);
g.DrawImage(Resource.Stat_main_backgrnd2, 6, 22);
g.DrawImage(Resource.Stat_main_backgrnd3, 7, 211);
if (this.character != null)
{
CharacterStatus charStat = this.character.Status;
//绘制自动分配
// g.DrawImage(charStat.Ap > 0 ? Resource.Stat_main_BtAuto_normal_3 : Resource.Stat_main_BtAuto_disabled_0, 94, 180);
switch (charStat.Job / 100 % 10)//绘制角色属性灰色背景
{
case 0:
case 1:
case 3:
case 5:
g.DrawImage(Resource.Stat_main_Disabled_INT, 11, 296);
g.DrawImage(Resource.Stat_main_Disabled_LUK, 11, 314);
break;
case 2:
g.DrawImage(Resource.Stat_main_Disabled_STR, 11, 260);
g.DrawImage(Resource.Stat_main_Disabled_DEX, 11, 278);
break;
case 4:
g.DrawImage(Resource.Stat_main_Disabled_STR, 11, 260);
g.DrawImage(Resource.Stat_main_Disabled_INT, 11, 296);
break;
}
g.DrawString(this.character.Name, GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 32f);
g.DrawString(ItemStringHelper.GetJobName(charStat.Job), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 50f);
g.DrawString(charStat.Level.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 68f);
g.DrawString(charStat.Exp + " (" + (charStat.Exp == -1 ? 0 : ((long)charStat.Exp * 100 / charStat.Exptnl)) + "%)",
GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 86f);
g.DrawString("1", GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 104f);
g.DrawString("0 (0%)", GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 122f);
g.DrawString(string.IsNullOrEmpty(this.character.Guild) ? "-" : this.character.Guild, GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 140f);
g.DrawString(charStat.HP + " / " + charStat.MaxHP.GetSum(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 158f);
g.DrawString(charStat.MP + " / " + charStat.MaxMP.GetSum(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 176f);
g.DrawString(charStat.Pop.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 194f);
g.DrawString(charStat.Ap.ToString().PadLeft(4), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 64f, 236f);
g.DrawString(charStat.Strength.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 263f);
g.DrawString(charStat.Dexterity.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 281f);
g.DrawString(charStat.Intelligence.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 299f);
g.DrawString(charStat.Luck.ToString(), GearGraphics.ItemDetailFont, GearGraphics.StatDetailGrayBrush, 72f, 317f);
}
}
private void renderDetail(Graphics g)
{
g.TranslateTransform(Resource.Stat_main_backgrnd.Width,
Resource.Stat_main_backgrnd.Height - Resource.Stat_detail_backgrnd.Height);
g.DrawImage(Resource.Stat_detail_backgrnd, 0, 0);
g.DrawImage(Resource.Stat_detail_backgrnd2, 6, 7);
if (this.character != null)
{
CharacterStatus charStat = this.character.Status;
//g.DrawString("0 ( 0% )", GearGraphics.GearDetailFont, getDetailBrush(0), 72f, 16f);
//g.DrawString("0", GearGraphics.GearDetailFont, getDetailBrush(0), 72f, 34f);
int brushSign;
double max, min;
this.character.CalcAttack(out max, out min, out brushSign);
float y = 16f;
g.DrawString(max == 0 ? "0" : Math.Round(min) + " ~ " + Math.Round(max), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, y);
g.DrawString(charStat.CriticalRate.GetSum() + "%", GearGraphics.ItemDetailFont, charStat.CriticalRate.BuffAdd > 0 ? Brushes.Red : GearGraphics.StatDetailGrayBrush, 72f, (y += 18f));
g.DrawString(charStat.PDDamage.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.MDDamage.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.PAccurate.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.MAccurate.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.PEvasion.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.MEvasion.ToStringDetail(out brushSign), GearGraphics.ItemDetailFont, getDetailBrush(brushSign), 72f, (y += 18f));
g.DrawString(charStat.MoveSpeed.GetSum() + "%", GearGraphics.ItemDetailFont, getDetailBrush(0), 72f, (y += 18f));
g.DrawString(charStat.Jump.GetSum() + "%", GearGraphics.ItemDetailFont, getDetailBrush(0), 72f, (y += 18f));
}
g.ResetTransform();
}
private Brush getDetailBrush(int sign)
{
switch (sign)
{
case 1: return Brushes.Red;
case -1: return Brushes.Blue;
case 0:
default: return GearGraphics.StatDetailGrayBrush;
}
}
private void btnClose_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = false;
}
private void aCtrl_RefreshCall(object sender, EventArgs e)
{
this.waitForRefresh = true;
}
private void btnDetailOpen_MouseClick(object sender, MouseEventArgs e)
{
this.fullMode = false;
this.waitForRefresh = true;
}
private void btnDetailClose_MouseClick(object sender, MouseEventArgs e)
{
this.fullMode = true;
this.waitForRefresh = true;
}
protected override void OnMouseMove(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseMove(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseMove(e);
}
protected override void OnMouseDown(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseDown(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseUp(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseUp(e);
}
protected override void OnMouseClick(MouseEventArgs e)
{
foreach (AControl ctrl in this.aControls)
{
ctrl.OnMouseClick(e);
}
if (this.waitForRefresh)
{
this.Refresh();
waitForRefresh = false;
}
base.OnMouseClick(e);
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/AfrmTooltip.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using WzComparerR2.Common;
using WzComparerR2.CharaSim;
using WzComparerR2.Controls;
namespace WzComparerR2.CharaSimControl
{
public class AfrmTooltip : AlphaForm
{
public AfrmTooltip()
{
this.menu = new ContextMenuStrip();
this.menu.Items.Add(new ToolStripMenuItem("复制(&C)", null, tsmiCopy_Click));
this.menu.Items.Add(new ToolStripMenuItem("保存(&S)", null, tsmiSave_Click));
this.ContextMenuStrip = this.menu;
this.Size = new Size(1, 1);
this.HideOnHover = true;
this.FamiliarRender = new FamiliarTooltipRender();
this.GearRender = new GearTooltipRender2();
this.ItemRender = new ItemTooltipRender2();
this.SkillRender = new SkillTooltipRender2();
this.RecipeRender = new RecipeTooltipRender();
this.MobRender = new MobTooltipRenderer();
this.NpcRender = new NpcTooltipRenderer();
this.SizeChanged += AfrmTooltip_SizeChanged;
this.MouseClick += AfrmTooltip_MouseClick;
}
private object item;
private ContextMenuStrip menu;
private bool showMenu;
private bool showID;
public Object TargetItem
{
get { return item; }
set { item = value; }
}
public StringLinker StringLinker { get; set; }
public Character Character { get; set; }
public FamiliarTooltipRender FamiliarRender { get; private set; }
public GearTooltipRender2 GearRender { get; private set; }
public ItemTooltipRender2 ItemRender { get; private set; }
public SkillTooltipRender2 SkillRender { get; private set; }
public RecipeTooltipRender RecipeRender { get; private set; }
public MobTooltipRenderer MobRender { get; private set; }
public NpcTooltipRenderer NpcRender { get; private set; }
public string ImageFileName { get; set; }
public bool ShowID
{
get { return this.showID; }
set
{
this.showID = value;
this.FamiliarRender.ShowObjectID = value;
this.GearRender.ShowObjectID = value;
this.ItemRender.ShowObjectID = value;
this.SkillRender.ShowObjectID = value;
this.RecipeRender.ShowObjectID = value;
}
}
public bool ShowMenu
{
get { return showMenu; }
set { showMenu = value; }
}
public override void Refresh()
{
this.PreRender();
if (this.Bitmap != null)
{
this.SetBitmap(Bitmap);
this.CaptionRectangle = new Rectangle(0, 0, Bitmap.Width, Bitmap.Height);
base.Refresh();
}
}
public void PreRender()
{
if (this.item == null)
return;
TooltipRender renderer;
if (item is Item)
{
renderer = ItemRender;
ItemRender.Item = this.item as Item;
}
else if (item is Familiar)
{
renderer = FamiliarRender;
FamiliarRender.Familiar = this.item as Familiar;
// FamiliarRender.UseAssembleUI = EnableAssembleTooltip;
}
else if (item is Gear)
{
renderer = GearRender;
GearRender.Gear = this.TargetItem as Gear;
if (false)
{
Gear g = GearRender.Gear;
if (this.StringLinker.StringEqp.ContainsKey(g.ItemID))
{
this.StringLinker.StringEqp[g.ItemID].Name = "暴君之高卡文黑锅";
this.StringLinker.StringEqp[g.ItemID].Desc = @"""#c这个锅 我背了!#"" ————gaokawen";
}
g.Star = 25;
g.Grade = GearGrade.SS;
g.AdditionGrade = GearGrade.B;
g.Props[GearPropType.reqLevel] = 250;
g.Props[GearPropType.reqSTR] = 6;
g.Props[GearPropType.reqDEX] = 6;
g.Props[GearPropType.reqINT] = 6;
g.Props[GearPropType.reqLUK] = 6;
g.Props[GearPropType.reqPOP] = 666;
g.Props[GearPropType.level] = 1;
g.Props[GearPropType.reqJob] = 0;
g.Props[GearPropType.incPAD] = 6;
g.Props[GearPropType.incMAD] = 6;
g.Props[GearPropType.incPDD] = 666;
g.Props[GearPropType.incMDD] = 666;
g.Props[GearPropType.tuc] = 66;
g.Props[GearPropType.superiorEqp] = 1;
g.Props[GearPropType.tradeAvailable] = 2;
//g.Props[GearPropType.charismaEXP] = 88;
//g.Props[GearPropType.willEXP] = 88;
//g.Props[GearPropType.charmEXP] = 88;
g.Props[GearPropType.nActivatedSocket] = 1;
//g.Props[GearPropType.setItemID] = 135;
//g.Options[0] = Potential.LoadFromWz(60001, 3);
//g.Options[1] = Potential.LoadFromWz(60001, 3);
//g.Options[2] = Potential.LoadFromWz(60001, 3);
//g.AdditionalOptions[0] = Potential.LoadFromWz(32086, 10);
//g.AdditionalOptions[1] = Potential.LoadFromWz(32086, 10);
//g.AdditionalOptions[2] = Potential.LoadFromWz(32086, 10);
}
}
else if (item is Skill)
{
renderer = SkillRender;
SkillRender.Skill = this.item as Skill;
}
else if (item is Recipe)
{
renderer = RecipeRender;
RecipeRender.Recipe = this.item as Recipe;
}
else if (item is Mob)
{
renderer = MobRender;
MobRender.MobInfo = this.item as Mob;
}
else if (item is Npc)
{
renderer = NpcRender;
NpcRender.NpcInfo = this.item as Npc;
}
else
{
this.Bitmap = null;
renderer = null;
return;
}
renderer.StringLinker = StringLinker;
this.Bitmap = renderer.Render();
}
void AfrmTooltip_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && this.showMenu)
{
this.menu.Show(this, e.Location);
}
}
void tsmiCopy_Click(object sender, EventArgs e)
{
if (this.Bitmap != null)
{
var dataObj = new ImageDataObject(this.Bitmap, this.ImageFileName);
Clipboard.SetDataObject(dataObj, false);
}
}
void tsmiSave_Click(object sender, EventArgs e)
{
if (this.Bitmap != null && this.item != null)
{
using (SaveFileDialog dlg = new SaveFileDialog())
{
dlg.Filter = "*.png|*.png|*.*|*.*";
dlg.FileName = this.ImageFileName;
if (dlg.ShowDialog() == DialogResult.OK)
{
this.Bitmap.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Png);
}
}
}
}
void AfrmTooltip_SizeChanged(object sender, EventArgs e)
{
if (this.Bitmap != null)
this.SetClientSizeCore(this.Bitmap.Width, this.Bitmap.Height);
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/ButtonState.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace WzComparerR2.CharaSimControl
{
public enum ButtonState
{
Normal = 0,
Pressed,
MouseOver,
Disabled
}
}
================================================
FILE: WzComparerR2/CharaSimControl/CharaSimControlGroup.cs
================================================
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Text;
using WzComparerR2.Common;
using WzComparerR2.CharaSim;
using WzComparerR2.Controls;
namespace WzComparerR2.CharaSimControl
{
public class CharaSimControlGroup
{
public CharaSimControlGroup()
{
tooltip = new AfrmTooltip();
tooltip.TopMost = true;
}
private AfrmTooltip tooltip;
private AfrmItem frmItem;
private AfrmStat frmStat;
private AfrmEquip frmEquip;
private Character character;
private StringLinker stringLinker;
public AfrmItem UIItem
{
get
{
if (frmItem == null)
{
frmItem = new AfrmItem();
frmItem.KeyDown += new KeyEventHandler(afrm_KeyDown);
frmItem.MouseDown += new MouseEventHandler(frmItem_MouseDown);
frmItem.DragOver += new DragEventHandler(frmItem_DragOver);
frmItem.DragDrop += new DragEventHandler(frmItem_DragDrop);
frmItem.ItemMouseMove += new ItemMouseEventHandler(frmItem_ItemMouseMove);
frmItem.ItemMouseLeave += new EventHandler(frmItem_ItemMouseLeave);
frmItem.Character = this.character;
}
return frmItem;
}
}
public AfrmStat UIStat
{
get
{
if (frmStat == null)
{
frmStat = new AfrmStat();
frmStat.KeyDown += new KeyEventHandler(afrm_KeyDown);
frmStat.Character = this.character;
}
return frmStat;
}
}
public AfrmEquip UIEquip
{
get
{
if (frmEquip == null)
{
frmEquip = new AfrmEquip();
frmEquip.KeyDown += new KeyEventHandler(afrm_KeyDown);
frmEquip.MouseDown += new MouseEventHandler(frmEquip_MouseDown);
frmEquip.DragOver += new DragEventHandler(frmEquip_DragOver);
frmEquip.DragDrop += new DragEventHandler(frmEquip_DragDrop);
frmEquip.Character = this.character;
}
return frmEquip;
}
}
public Character Character
{
get { return character; }
set
{
this.character = value;
this.tooltip.Character = value;
if (frmEquip != null)
this.frmEquip.Character = value;
if (frmStat != null)
this.frmStat.Character = value;
if (frmEquip != null)
this.frmEquip.Character = value;
}
}
public StringLinker StringLinker
{
get { return stringLinker; }
set
{
this.stringLinker = value;
this.tooltip.StringLinker = value;
}
}
private void afrm_KeyDown(object sender, KeyEventArgs e)
{
Form frm = sender as Form;
if (frm == null)
return;
switch (e.KeyCode)
{
case Keys.Escape:
frm.Hide();
break;
case Keys.F1:
break;
case Keys.Up:
frm.Top -= 1;
break;
case Keys.Down:
frm.Top += 1;
break;
case Keys.Left:
frm.Left -= 1;
break;
case Keys.Right:
frm.Left += 1;
break;
}
}
private void frmItem_MouseDown(object sender, MouseEventArgs e)
{
ItemBase dragItem = frmItem.GetItemByPoint(e.Location);
if (dragItem != null)
{
if (Control.ModifierKeys == Keys.Control)
{
int originIdx = Array.IndexOf<ItemBase>(frmItem.SelectedTab.Items, dragItem);
if (originIdx > -1)
{
frmItem.SelectedTab.Items[originIdx] = null;
frmItem.Refresh();
}
}
else
{
frmItem.DoDragDrop(dragItem, DragDropEffects.Move);
tooltip.Visible = false;
}
}
}
private ItemBase getDragDataItem(IDataObject data)
{
ItemBase dragItem;
if (data != null
&& ((dragItem = data.GetData(typeof(Item)) as Item) != null
|| (dragItem = data.GetData(typeof(Gear)) as Gear) != null))
{
return dragItem;
}
return null;
}
private void frmItem_DragOver(object sender, DragEventArgs e)
{
ItemBase dragItem;
int idx;
if ((e.AllowedEffect & DragDropEffects.Move) != 0
&& (idx = frmItem.GetItemIndexByPoint(frmItem.PointToClient(new Point(e.X, e.Y)))) != -1
&& (dragItem = getDragDataItem(e.Data)) != null)
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void frmItem_DragDrop(object sender, DragEventArgs e)
{
if ((e.Effect & (DragDropEffects.Move)) == 0)
{
return;
}
ItemBase dragItem;
int dropIdx, originIdx;
if ((dragItem = getDragDataItem(e.Data)) == null
|| (originIdx = Array.IndexOf<ItemBase>(frmItem.SelectedTab.Items, dragItem)) == -1)
{
return;
}
dropIdx = frmItem.GetItemIndexByPoint(frmItem.PointToClient(new Point(e.X, e.Y)));
if (dropIdx == -1) //移除装备
{
frmItem.SelectedTab.Items[originIdx] = null;
}
else if (originIdx != dropIdx)
{
frmItem.SelectedTab.Items[originIdx] = frmItem.SelectedTab.Items[dropIdx];
frmItem.SelectedTab.Items[dropIdx] = dragItem;
}
else
{
return;
}
frmItem.Refresh();
}
private void frmItem_ItemMouseMove(object sender, ItemMouseEventArgs e)
{
if (e.Item == null)
{
tooltip.Visible = false;
return;
}
if (e.Item != tooltip.TargetItem)
{
tooltip.TargetItem = e.Item;
tooltip.Refresh();
}
Point pos = frmItem.PointToScreen(e.Location);
pos.Offset(5, 5);
tooltip.Location = pos;
tooltip.Visible = true;
tooltip.BringToFront();
}
private void frmItem_ItemMouseLeave(object sender, EventArgs e)
{
tooltip.Visible = false;
}
private void frmEquip_MouseDown(object sender, MouseEventArgs e)
{
//throw new NotImplementedException();
}
private void frmEquip_DragOver(object sender, DragEventArgs e)
{
//throw new NotImplementedException();
}
private void frmEquip_DragDrop(object sender, DragEventArgs e)
{
//throw new NotImplementedException();
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/DamageSkinTooltipRender.cs
================================================
using System;
using System.Drawing;
using System.Linq;
using WzComparerR2.CharaSim;
using Resource = CharaSimResource.Resource;
namespace WzComparerR2.CharaSimControl
{
public class DamageSkinTooltipRender : TooltipRender
{
public DamageSkinTooltipRender()
{
}
private DamageSkin damageSkin;
public DamageSkin DamageSkin
{
get { return damageSkin; }
set { damageSkin = value; }
}
public override object TargetItem
{
get { return this.damageSkin; }
set { this.damageSkin = value as DamageSkin; }
}
public bool UseMiniSize { get; set; }
public bool AlwaysUseMseaFormat { get; set; }
public bool DisplayUnitOnSingleLine { get; set; }
public long DamageSkinNumber { get; set; }
public override Bitmap Render()
{
if (this.damageSkin == null)
{
return null;
}
Bitmap customSampleNonCritical = GetCustomSample(DamageSkinNumber, UseMiniSize, false);
Bitmap customSampleCritical = GetCustomSample(DamageSkinNumber, UseMiniSize, true);
Bitmap extraBitmap = GetExtraEffect();
Bitmap unitBitmap = null;
int previewWidth = Math.Max(customSampleNonCritical.Width, customSampleCritical.Width);
int previewHeight = customSampleNonCritical.Height + customSampleCritical.Height;
if (extraBitmap != null)
{
previewWidth = Math.Max(previewWidth, extraBitmap.Width);
previewHeight += extraBitmap.Height;
if (DisplayUnitOnSingleLine)
{
unitBitmap = GetUnit();
if (unitBitmap != null)
{
previewWidth = Math.Max(previewWidth, unitBitmap.Width);
previewHeight += unitBitmap.Height;
}
}
}
int picH = 10;
Bitmap tooltip = new Bitmap(previewWidth + 30, previewHeight + 30);
Graphics g = Graphics.FromImage(tooltip);
GearGraphics.DrawNewTooltipBack(g, 0, 0, tooltip.Width, tooltip.Height);
if (this.ShowObjectID)
{
GearGraphics.DrawGearDetailNumber(g, 3, 3, $"{this.damageSkin.DamageSkinID.ToString()}", true);
}
g.DrawImage(customSampleNonCritical, 10, picH, new Rectangle(0, 0, customSampleNonCritical.Width, customSampleNonCritical.Height), GraphicsUnit.Pixel);
picH += customSampleNonCritical.Height + 5;
g.DrawImage(customSampleCritical, 10, picH, new Rectangle(0, 0, customSampleCritical.Width, customSampleCritical.Height), GraphicsUnit.Pixel);
picH += customSampleCritical.Height + 5;
if (unitBitmap != null)
{
g.DrawImage(unitBitmap, 10, picH, new Rectangle(0, 0, unitBitmap.Width, unitBitmap.Height), GraphicsUnit.Pixel);
picH += unitBitmap.Height + 5;
}
if (extraBitmap != null)
{
g.DrawImage(extraBitmap, 10, picH, new Rectangle(0, 0, extraBitmap.Width, extraBitmap.Height), GraphicsUnit.Pixel);
}
customSampleNonCritical.Dispose();
customSampleCritical.Dispose();
g.Dispose();
return tooltip;
}
public Bitmap GetCustomSample(long inputNumber, bool useMiniSize, bool isCritical)
{
string numberStr = "";
if (DisplayUnitOnSingleLine)
{
numberStr = inputNumber.ToString();
}
else
{
switch (damageSkin.CustomType)
{
case "hangul": // CJK Detailed
numberStr = ItemStringHelper.ToChineseNumberExpr(inputNumber, true);
break;
case "hangulUnit": // CJK
numberStr = ItemStringHelper.ToChineseNumberExpr(inputNumber);
break;
case "glUnit": // GMS
numberStr = ItemStringHelper.ToThousandsNumberExpr(inputNumber, this.AlwaysUseMseaFormat);
break;
case "glUnit2": // MSEA
numberStr = ItemStringHelper.ToThousandsNumberExpr(inputNumber, true);
break;
default:
if (this.DamageSkin.MiniUnit.Count > 0) // Default to CJK format when units are available
{
numberStr = ItemStringHelper.ToChineseNumberExpr(inputNumber);
}
else
{
numberStr = inputNumber.ToString();
}
break;
}
}
Bitmap criticalSign = null;
if (this.damageSkin.BigCriticalDigit.ContainsKey("effect3"))
{
criticalSign = this.damageSkin.BigCriticalDigit["effect3"].Bitmap;
}
int totalWidth = 0;
int maxHeight = 0;
int digitSpacing = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalDigitSpacing :
this.damageSkin.BigCriticalDigitSpacing) :
(useMiniSize ? this.damageSkin.MiniDigitSpacing :
this.damageSkin.BigDigitSpacing);
int unitSpacing = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnitSpacing :
this.damageSkin.BigCriticalUnitSpacing) :
(useMiniSize ? this.damageSkin.MiniUnitSpacing :
this.damageSkin.BigUnitSpacing);
if (isCritical && criticalSign != null)
{
totalWidth += criticalSign.Width + unitSpacing;
maxHeight = Math.Max(maxHeight, criticalSign.Height);
}
// Calculate total width and max height
foreach (char c in numberStr)
{
string character = c.ToString();
switch (character)
{
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalDigit[character].Bitmap.Width :
this.damageSkin.BigCriticalDigit[character].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniDigit[character].Bitmap.Width :
this.damageSkin.BigDigit[character].Bitmap.Width);
totalWidth += digitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalDigit[character].Bitmap.Height :
this.damageSkin.BigCriticalDigit[character].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniDigit[character].Bitmap.Height :
this.damageSkin.BigDigit[character].Bitmap.Height));
break;
case "十":
case ".":
if (this.damageSkin.BigUnit.ContainsKey("0"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["0"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["0"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["0"].Bitmap.Width :
this.damageSkin.BigUnit["0"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["0"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["0"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["0"].Bitmap.Height :
this.damageSkin.BigUnit["0"].Bitmap.Height));
}
break;
case "百":
case "K":
if (this.damageSkin.BigUnit.ContainsKey("1"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["1"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["1"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["1"].Bitmap.Width :
this.damageSkin.BigUnit["1"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["1"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["1"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["1"].Bitmap.Height :
this.damageSkin.BigUnit["1"].Bitmap.Height));
}
break;
case "千":
case "M":
if (this.damageSkin.BigUnit.ContainsKey("2"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["2"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["2"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["2"].Bitmap.Width :
this.damageSkin.BigUnit["2"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["2"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["2"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["2"].Bitmap.Height :
this.damageSkin.BigUnit["2"].Bitmap.Height));
}
break;
case "万":
case "B":
if (this.damageSkin.BigUnit.ContainsKey("3"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["3"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["3"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["3"].Bitmap.Width :
this.damageSkin.BigUnit["3"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["3"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["3"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["3"].Bitmap.Height :
this.damageSkin.BigUnit["3"].Bitmap.Height));
}
break;
case "亿":
case "T":
if (this.damageSkin.BigUnit.ContainsKey("4"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["4"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["4"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["4"].Bitmap.Width :
this.damageSkin.BigUnit["4"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["4"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["4"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["4"].Bitmap.Height :
this.damageSkin.BigUnit["4"].Bitmap.Height));
}
break;
case "兆":
case "Q":
if (this.damageSkin.BigUnit.ContainsKey("5"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["5"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["5"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["5"].Bitmap.Width :
this.damageSkin.BigUnit["5"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["5"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["5"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["5"].Bitmap.Height :
this.damageSkin.BigUnit["5"].Bitmap.Height));
}
break;
case "京":
if (this.damageSkin.BigUnit.ContainsKey("6"))
{
totalWidth += isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["6"].Bitmap.Width :
this.damageSkin.BigCriticalUnit["6"].Bitmap.Width) :
(useMiniSize ? this.damageSkin.MiniUnit["6"].Bitmap.Width :
this.damageSkin.BigUnit["6"].Bitmap.Width);
totalWidth += unitSpacing;
maxHeight = Math.Max(maxHeight, isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["6"].Bitmap.Height :
this.damageSkin.BigCriticalUnit["6"].Bitmap.Height) :
(useMiniSize ? this.damageSkin.MiniUnit["6"].Bitmap.Height :
this.damageSkin.BigUnit["6"].Bitmap.Height));
}
break;
}
}
Bitmap finalBitmap = new Bitmap(totalWidth, maxHeight);
using (Graphics g = Graphics.FromImage(finalBitmap))
{
g.Clear(Color.Transparent);
int offsetX = 0;
if (isCritical && criticalSign != null)
{
g.DrawImage(criticalSign, offsetX, 0);
offsetX += criticalSign.Width;
}
foreach (char c in numberStr)
{
string character = c.ToString();
Bitmap charBitmap = null;
switch (character)
{
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalDigit[character].Bitmap :
this.damageSkin.BigCriticalDigit[character].Bitmap) :
(useMiniSize ? this.damageSkin.MiniDigit[character].Bitmap :
this.damageSkin.BigDigit[character].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + digitSpacing;
break;
case "十":
case ".":
if (this.damageSkin.BigUnit.ContainsKey("0"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["0"].Bitmap :
this.damageSkin.BigCriticalUnit["0"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["0"].Bitmap :
this.damageSkin.BigUnit["0"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "百":
case "K":
if (this.damageSkin.BigUnit.ContainsKey("1"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["1"].Bitmap :
this.damageSkin.BigCriticalUnit["1"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["1"].Bitmap :
this.damageSkin.BigUnit["1"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "千":
case "M":
if (this.damageSkin.BigUnit.ContainsKey("2"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["2"].Bitmap :
this.damageSkin.BigCriticalUnit["2"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["2"].Bitmap :
this.damageSkin.BigUnit["2"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "万":
case "B":
if (this.damageSkin.BigUnit.ContainsKey("3"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["3"].Bitmap :
this.damageSkin.BigCriticalUnit["3"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["3"].Bitmap :
this.damageSkin.BigUnit["3"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "亿":
case "T":
if (this.damageSkin.BigUnit.ContainsKey("4"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["4"].Bitmap :
this.damageSkin.BigCriticalUnit["4"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["4"].Bitmap :
this.damageSkin.BigUnit["4"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "兆":
case "Q":
if (this.damageSkin.BigUnit.ContainsKey("5"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["5"].Bitmap :
this.damageSkin.BigCriticalUnit["5"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["5"].Bitmap :
this.damageSkin.BigUnit["5"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
case "京":
if (this.damageSkin.BigUnit.ContainsKey("6"))
{
charBitmap = isCritical ?
(useMiniSize ? this.damageSkin.MiniCriticalUnit["6"].Bitmap :
this.damageSkin.BigCriticalUnit["6"].Bitmap) :
(useMiniSize ? this.damageSkin.MiniUnit["6"].Bitmap :
this.damageSkin.BigUnit["6"].Bitmap);
g.DrawImage(charBitmap, offsetX, maxHeight - charBitmap.Height);
offsetX += charBitmap.Width + unitSpacing;
}
break;
}
}
}
return finalBitmap;
}
public Bitmap GetUnit()
{
Bitmap unitBitmap = null;
int width = 0;
int height = 0;
if (damageSkin.BigUnit.Count > 0)
{
if (UseMiniSize)
{
foreach (var unit in damageSkin.MiniUnit.Values)
{
width += unit.Bitmap.Width;
height = Math.Max(height, unit.Bitmap.Height);
width += this.damageSkin.MiniUnitSpacing;
}
foreach (var unit in damageSkin.MiniCriticalUnit.Values)
{
width += unit.Bitmap.Width;
height = Math.Max(height, unit.Bitmap.Height);
width += this.damageSkin.MiniCriticalUnitSpacing;
}
unitBitmap = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(unitBitmap))
{
g.Clear(Color.Transparent);
int offsetX = 0;
foreach (var unit in damageSkin.MiniUnit.Values)
{
g.DrawImage(unit.Bitmap, offsetX, height - unit.Bitmap.Height);
offsetX += unit.Bitmap.Width;
offsetX += this.damageSkin.MiniUnitSpacing;
}
foreach (var unit in damageSkin.MiniCriticalUnit.Values)
{
g.DrawImage(unit.Bitmap, offsetX, height - unit.Bitmap.Height);
offsetX += unit.Bitmap.Width;
offsetX += this.damageSkin.MiniCriticalUnitSpacing;
}
}
}
else
{
foreach (var unit in damageSkin.BigUnit.Values)
{
width += unit.Bitmap.Width;
height = Math.Max(height, unit.Bitmap.Height);
width += this.damageSkin.BigUnitSpacing;
}
foreach (var unit in damageSkin.BigCriticalUnit.Values)
{
width += unit.Bitmap.Width;
height = Math.Max(height, unit.Bitmap.Height);
width += this.damageSkin.BigCriticalUnitSpacing;
}
unitBitmap = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(unitBitmap))
{
g.Clear(Color.Transparent);
int offsetX = 0;
foreach (var unit in damageSkin.BigUnit.Values)
{
g.DrawImage(unit.Bitmap, offsetX, height - unit.Bitmap.Height);
offsetX += unit.Bitmap.Width;
offsetX += this.damageSkin.BigUnitSpacing;
}
foreach (var unit in damageSkin.BigCriticalUnit.Values)
{
g.DrawImage(unit.Bitmap, offsetX, height - unit.Bitmap.Height);
offsetX += unit.Bitmap.Width;
offsetX += this.damageSkin.BigCriticalUnitSpacing;
}
}
}
}
return unitBitmap;
}
public Bitmap GetExtraEffect()
{
Bitmap[] originalBitmaps = new Bitmap[5]
{
this.damageSkin.MiniDigit.ContainsKey("Miss") ? this.damageSkin.MiniDigit?["Miss"].Bitmap : null,
this.damageSkin.MiniDigit.ContainsKey("guard") ? this.damageSkin.MiniDigit?["guard"].Bitmap : null,
this.damageSkin.MiniDigit.ContainsKey("resist") ? this.damageSkin.MiniDigit?["resist"].Bitmap : null,
this.damageSkin.MiniDigit.ContainsKey("shot") ? this.damageSkin.MiniDigit?["shot"].Bitmap : null,
this.damageSkin.MiniDigit.ContainsKey("counter") ? this.damageSkin.MiniDigit?["counter"].Bitmap : null
};
int width = 0;
int height = 0;
foreach (var bo in originalBitmaps)
{
if (bo == null) continue;
width += bo.Width;
height = Math.Max(height, bo.Height);
}
Bitmap bitmap = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.Clear(Color.Transparent);
int offsetX = 0;
for (int j = 0; j < originalBitmaps.Count(); j++)
{
if (originalBitmaps[j] == null) continue;
g.DrawImage(originalBitmaps[j], offsetX, height - originalBitmaps[j].Height);
offsetX += originalBitmaps[j].Width;
}
}
return bitmap;
}
}
}
================================================
FILE: WzComparerR2/CharaSimControl/FamiliarTooltipRender.cs
================================================
using System.Collections.Generic;
using System.Drawing;
using WzComparerR2.CharaSim;
using WzComparerR2.Common;
using WzComparerR2.PluginBase;
using static WzComparerR2.CharaSimControl.RenderHelper;
using Resource = CharaSimResource.Resource;
namespace WzComparerR2.CharaSimControl
{
public class FamiliarTooltipRender : TooltipRender
{
public FamiliarTooltipRender()
{
}
private Familiar familiar;
public Familiar Familiar
{
get { return familiar; }
set { familiar = value; }
}
public override object TargetItem
{
get { return this.familiar; }
set { this.familiar = value as Familiar; }
}
public int? ItemID { get; set; }
public int FamiliarTier { get; set; }
public bool AllowOutOfBounds { get; set; }
public bool UseAssembleUI { get; set; }
public override Bitmap Render()
{
if (this.familiar == null)
{
return null;
}
return UseAssembleUI ? GeneratePostAssembleFamiliarCard() : GeneratePreAssembleFamiliarCard();
}
private Bitmap GeneratePreAssembleFamiliarCard()
{
Bitmap baseTooltip = Resource.UIFamiliar_img_familiarCard_backgrnd;
// Get Mob image and name
Mob mob = Mob.CreateFromNode(PluginManager.FindWz($@"Mob\{familiar.MobID.ToString().PadLeft(7, '0')}.img"), PluginManager.FindWz);
Point alignOrigin = new Point(161, 200);
Point mobOrigin = new Point(0, 0);
int mobXoffset = 0;
int mobYoffset = 0;
int tDelta = 0;
int bDelta = 0;
gitextract_7zirm0f1/ ├── .gitattributes ├── .gitignore ├── .gitmodules ├── Build/ │ ├── Common.props │ └── WcR2Plugin.targets ├── LICENSE ├── README.md ├── UpdateLogs/ │ ├── dev.md │ ├── v2.0.1.md │ ├── v2.0.9.md │ ├── v2.1.1.md │ └── v2.1.md ├── WzComparerR2/ │ ├── AnimateEncoderFactory.cs │ ├── CharaSim/ │ │ ├── CharaEquip.cs │ │ ├── CharaProp.cs │ │ ├── CharaSimLoader.cs │ │ ├── Character.cs │ │ └── CharacterStatus.cs │ ├── CharaSimControl/ │ │ ├── AControl.cs │ │ ├── ACtrlButton.cs │ │ ├── ACtrlVScroll.cs │ │ ├── AfrmEquip.cs │ │ ├── AfrmItem.cs │ │ ├── AfrmStat.cs │ │ ├── AfrmTooltip.cs │ │ ├── ButtonState.cs │ │ ├── CharaSimControlGroup.cs │ │ ├── DamageSkinTooltipRender.cs │ │ ├── FamiliarTooltipRender.cs │ │ ├── GearGraphics.cs │ │ ├── GearTooltipRender.cs │ │ ├── GearTooltipRender2.cs │ │ ├── ItemMouseEventArgs.cs │ │ ├── ItemMouseEventHandler.cs │ │ ├── ItemTooltipRender.cs │ │ ├── ItemTooltipRender2.cs │ │ ├── MobTooltipRenderer.cs │ │ ├── NpcTooltipRenderer.cs │ │ ├── RecipeTooltipRender.cs │ │ ├── RenderHelper.cs │ │ ├── SetItemTooltipRender.cs │ │ ├── SkillTooltipRender.cs │ │ ├── SkillTooltipRender2.cs │ │ ├── TextBlock.cs │ │ └── TooltipRender.cs │ ├── Comparer/ │ │ ├── CompareDifference.cs │ │ ├── DifferenceType.cs │ │ ├── EasyComparer.cs │ │ ├── WzFileComparer.cs │ │ ├── WzPngComparison.cs │ │ └── WzVirtualNode.cs │ ├── Config/ │ │ ├── CharaSimConfig.cs │ │ ├── CharaSimDamageSkinConfig.cs │ │ ├── CharaSimGearConfig.cs │ │ ├── CharaSimItemConfig.cs │ │ ├── CharaSimMobConfig.cs │ │ ├── CharaSimNpcConfig.cs │ │ ├── CharaSimRecipeConfig.cs │ │ ├── CharaSimSkillConfig.cs │ │ ├── CustomCSSConfig.cs │ │ ├── ImageHandlerConfig.cs │ │ ├── MosaicInfo.cs │ │ └── WcR2Config.cs │ ├── DBConnection.cs │ ├── Dotnet4Polyfill.cs │ ├── Dotnet6Patches.cs │ ├── DownloadingItem.cs │ ├── FrmAbout.Designer.cs │ ├── FrmAbout.cs │ ├── FrmAbout.resx │ ├── FrmCustomCSS.Designer.cs │ ├── FrmCustomCSS.cs │ ├── FrmCustomCSS.resx │ ├── FrmGifClipOptions.Designer.cs │ ├── FrmGifClipOptions.cs │ ├── FrmGifClipOptions.resx │ ├── FrmGifMaker.Designer.cs │ ├── FrmGifMaker.cs │ ├── FrmGifMaker.resx │ ├── FrmGifSetting.Designer.cs │ ├── FrmGifSetting.cs │ ├── FrmGifSetting.resx │ ├── FrmOptions.Designer.cs │ ├── FrmOptions.cs │ ├── FrmOptions.resx │ ├── FrmPatcher.Designer.cs │ ├── FrmPatcher.cs │ ├── FrmPatcher.resx │ ├── FrmQuickViewSetting.Designer.cs │ ├── FrmQuickViewSetting.cs │ ├── FrmQuickViewSetting.resx │ ├── FrmUpdater.Designer.cs │ ├── FrmUpdater.cs │ ├── FrmUpdater.resx │ ├── HistoryList.cs │ ├── ImageDragHandler.cs │ ├── MainForm.Designer.cs │ ├── MainForm.cs │ ├── MainForm.resx │ ├── MemoryTributary.cs │ ├── Patcher/ │ │ ├── Builder/ │ │ │ ├── BuildInstruction.cs │ │ │ ├── BuildType.cs │ │ │ ├── CheckSum.cs │ │ │ ├── InflateStream.cs │ │ │ ├── PatchPart.cs │ │ │ ├── PatchType.cs │ │ │ ├── StreamUtils.cs │ │ │ ├── WzPatcherReader.cs │ │ │ └── WzPatcherWriter.cs │ │ ├── PatchPartContext.cs │ │ ├── PatcherSetting.cs │ │ ├── PatcherSettingCollection.cs │ │ ├── PatchingEventArgs.cs │ │ ├── PatchingState.cs │ │ ├── ReversePatcherBuilder.cs │ │ └── WzPatcher.cs │ ├── PictureBoxEx.cs │ ├── PluginLoadContext.cs │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── QueryPerformance.cs │ ├── SoundPlayer/ │ │ ├── BassSoundPlayer.cs │ │ ├── CustomSoundFile.cs │ │ ├── ISoundFile.cs │ │ ├── ISoundPlayer.cs │ │ └── PlayState.cs │ ├── Updater.cs │ ├── WzComparerR2.csproj │ ├── app.config │ └── app.manifest ├── WzComparerR2.Avatar/ │ ├── Action.cs │ ├── ActionFrame.cs │ ├── AvatarCanvas.cs │ ├── AvatarPart.cs │ ├── Bone.cs │ ├── Entry.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Skin.cs │ ├── UI/ │ │ ├── AvatarCodeForm.Designer.cs │ │ ├── AvatarCodeForm.cs │ │ ├── AvatarCodeForm.resx │ │ ├── AvatarContainer.Designer.cs │ │ ├── AvatarContainer.cs │ │ ├── AvatarForm.Designer.cs │ │ ├── AvatarForm.cs │ │ ├── AvatarForm.resx │ │ ├── AvatarPartButtonItem.Designer.cs │ │ ├── AvatarPartButtonItem.cs │ │ └── AvatarPartButtonItem.resx │ └── WzComparerR2.Avatar.csproj ├── WzComparerR2.Common/ │ ├── Animation/ │ │ ├── Frame.cs │ │ ├── FrameAnimationData.cs │ │ ├── FrameAnimator.cs │ │ ├── ISpineAnimationData.cs │ │ ├── ISpineAnimator.cs │ │ ├── KeyFrame.cs │ │ ├── MaplestoryCanvasVideoLoader.cs │ │ ├── ModelBound.cs │ │ ├── SpineAnimationDataV2.cs │ │ ├── SpineAnimationDataV4.cs │ │ ├── SpineAnimatorV2.cs │ │ ├── SpineAnimatorV4.cs │ │ └── WzSpineTextureLoader.cs │ ├── BitmapOrigin.cs │ ├── Calculator.cs │ ├── CharaSim/ │ │ ├── Addition.cs │ │ ├── AdditionType.cs │ │ ├── AlienStone.cs │ │ ├── AlienStoneGrade.cs │ │ ├── DamageSkin.cs │ │ ├── ExclusiveEquip.cs │ │ ├── Familiar.cs │ │ ├── FormulaVersion.cs │ │ ├── Gear.cs │ │ ├── GearGrade.cs │ │ ├── GearLevelInfo.cs │ │ ├── GearPropType.cs │ │ ├── GearSealedInfo.cs │ │ ├── GearState.cs │ │ ├── GearType.cs │ │ ├── HyperSkillType.cs │ │ ├── Item.cs │ │ ├── ItemBase.cs │ │ ├── ItemBaseType.cs │ │ ├── ItemPropType.cs │ │ ├── ItemSpecType.cs │ │ ├── ItemStringHelper.cs │ │ ├── Mob.cs │ │ ├── MobElemAttr.cs │ │ ├── Npc.cs │ │ ├── Potential.cs │ │ ├── Recipe.cs │ │ ├── RecipeItemInfo.cs │ │ ├── RecipePropType.cs │ │ ├── SetItem.cs │ │ ├── SetItemActiveSkill.cs │ │ ├── SetItemBonusByTime.cs │ │ ├── SetItemEffect.cs │ │ ├── SetItemIDList.cs │ │ ├── SetItemIDPart.cs │ │ ├── SetItemOptionToMob.cs │ │ ├── Skill.cs │ │ ├── SummaryParams.cs │ │ └── SummaryParser.cs │ ├── Config/ │ │ ├── ConfigArrayList.cs │ │ ├── ConfigItem.cs │ │ ├── ConfigItemCollectionBase.cs │ │ ├── ConfigManager.cs │ │ ├── ConfigSectionBase.cs │ │ └── SectionNameAttribute.cs │ ├── Controls/ │ │ ├── AlphaForm.cs │ │ ├── AnimationClipOptions.cs │ │ ├── AnimationControl.Designer.cs │ │ ├── AnimationControl.cs │ │ ├── AnimationItem.cs │ │ ├── AnimationItemEventArgs.cs │ │ ├── AnimationRecoder.cs │ │ ├── FrmProgressDialog.Designer.cs │ │ ├── FrmProgressDialog.cs │ │ ├── FrmProgressDialog.resx │ │ ├── GraphicsDeviceControl.cs │ │ ├── GraphicsDeviceService.cs │ │ ├── ProgressDialog.cs │ │ ├── ProgressDialogContext.cs │ │ └── ServiceContainer.cs │ ├── Encoders/ │ │ ├── BuildInApngEncoder.cs │ │ ├── BuildInGifEncoder.cs │ │ ├── FFmpegEncoder.cs │ │ ├── GifEncoder.cs │ │ ├── GifEncoderCompatibility.cs │ │ └── IndexGifEncoder.cs │ ├── Gif.cs │ ├── GifCanvas.cs │ ├── GifFrame.cs │ ├── GifLayer.cs │ ├── GlobalFindNodeFunction.cs │ ├── IGifFrame.cs │ ├── ImageDataObject.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Rendering/ │ │ ├── AnimationGraphics.cs │ │ ├── BlendEx.cs │ │ ├── D2DContext.cs │ │ ├── D2DFactory.cs │ │ ├── D2DFont.cs │ │ ├── D2DRenderer.cs │ │ ├── DxExtension.cs │ │ ├── Effect/ │ │ │ ├── EffectCompiler.bat │ │ │ ├── Macros.fxh │ │ │ ├── PngEffect.3.8.0.1641.mgfxo │ │ │ ├── PngEffect.3.8.1.303.mgfxo │ │ │ ├── PngEffect.3.8.2.1105.mgfxo │ │ │ └── PngEffect.fx │ │ ├── EffectCompiler/ │ │ │ ├── ConstantBuffer.cs │ │ │ ├── Internal/ │ │ │ │ ├── ConstantBufferData.cs │ │ │ │ ├── D3DXObjects.cs │ │ │ │ ├── EffectObject.cs │ │ │ │ └── ShaderData.cs │ │ │ ├── SampleInfo.cs │ │ │ ├── ShaderConverter.cs │ │ │ └── ShaderStage.cs │ │ ├── MonogameUtils.cs │ │ ├── PngEffect.cs │ │ ├── SpriteBatchEx.cs │ │ ├── SurfaceFormatEx.cs │ │ ├── TextUtils.cs │ │ ├── Texture2DEx.cs │ │ ├── WzLibExtension.cs │ │ ├── XnaFont.cs │ │ └── XnaFontRenderer.cs │ ├── SpineLoader.cs │ ├── StringLinker.cs │ ├── StringResult.cs │ ├── Text/ │ │ ├── DocumentElements.cs │ │ ├── Parser.cs │ │ ├── TextAlignment.cs │ │ └── TextRenderer.cs │ ├── VpxVideoDecoder.cs │ ├── WzComparerR2.Common.csproj │ └── Wz_NodeExtension2.cs ├── WzComparerR2.LuaConsole/ │ ├── AppSyntaxModeProvider.cs │ ├── Config/ │ │ └── LuaConsoleConfig.cs │ ├── Entry.cs │ ├── Examples/ │ │ ├── DumpAnimations.lua │ │ ├── DumpImages.lua │ │ ├── DumpSounds.lua │ │ ├── DumpXml.lua │ │ └── Helper.lua │ ├── FrmConsole.Designer.cs │ ├── FrmConsole.cs │ ├── FrmConsole.resx │ ├── FrmLuaEditor.Designer.cs │ ├── FrmLuaEditor.cs │ ├── FrmLuaEditor.resx │ ├── Lua/ │ │ └── CLRPackage.lua │ ├── LuaSandbox.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Resources/ │ │ ├── Lua.xshd │ │ └── SharpLua.xshd │ └── WzComparerR2.LuaConsole.csproj ├── WzComparerR2.MapRender/ │ ├── Animation/ │ │ ├── IStateMachineAnimationData.cs │ │ ├── RepeatableFrameAnimationData.cs │ │ ├── RepeatableFrameAnimator.cs │ │ └── StateMachineAnimator.cs │ ├── Camera.cs │ ├── Chat.cs │ ├── Config/ │ │ └── MapRenderConfig.cs │ ├── Coroutine.cs │ ├── Effects/ │ │ ├── EffectResources.cs │ │ ├── NativeShaderDesc.cs │ │ ├── Resources/ │ │ │ └── Native/ │ │ │ ├── GrayTintWorldMask │ │ │ ├── alpha │ │ │ ├── alphaMap │ │ │ ├── alphaMaps │ │ │ ├── blurRadial │ │ │ ├── blurX │ │ │ ├── blurY │ │ │ ├── colorModulate │ │ │ ├── default │ │ │ ├── glitch │ │ │ ├── grayScale │ │ │ ├── lens │ │ │ ├── light │ │ │ ├── overlayBlend │ │ │ ├── pointLight │ │ │ ├── refract │ │ │ ├── rope │ │ │ ├── textureBinaryMask │ │ │ ├── textureMask │ │ │ ├── vs_position_color_texture │ │ │ ├── waterBack │ │ │ ├── waterFront │ │ │ └── wave │ │ └── ShaderMaterials.cs │ ├── Entry.cs │ ├── FpsCounter.cs │ ├── FrmMapRender.cs │ ├── FrmMapRender2.SceneManager.cs │ ├── FrmMapRender2.SceneRendering.cs │ ├── FrmMapRender2.cs │ ├── GameExt.cs │ ├── IRandom.cs │ ├── ITooltip.cs │ ├── IWcR2Font.cs │ ├── InputState.cs │ ├── LifeInfo.cs │ ├── LightRenderer.cs │ ├── LineListMesh.cs │ ├── MapData.cs │ ├── MapEvent.cs │ ├── MapLight.cs │ ├── MapRenderFonts.cs │ ├── MapScene.cs │ ├── MathHelper2.cs │ ├── MeshBatcher.cs │ ├── MeshItem.cs │ ├── MiniMap.cs │ ├── MouseButton.cs │ ├── MsCustomSprite.cs │ ├── MsSpriteRenderer.cs │ ├── Music.cs │ ├── Particle.cs │ ├── ParticleDesc.cs │ ├── ParticleDesc1.cs │ ├── ParticleDesc3.cs │ ├── ParticleEmitter.cs │ ├── ParticleRandom.cs │ ├── ParticleSystem.cs │ ├── PatchVisibility.cs │ ├── Patches/ │ │ ├── BackPatch.cs │ │ ├── FootholdPatch.cs │ │ ├── LadderRopePatch.cs │ │ ├── LifePatch.cs │ │ ├── ObjTilePatch.cs │ │ ├── PortalPatch.cs │ │ ├── ReactorPatch.cs │ │ ├── RenderObjectType.cs │ │ ├── RenderPatch.cs │ │ └── TooltipPatch.cs │ ├── Patches2/ │ │ ├── BackItem.cs │ │ ├── FootholdItem.cs │ │ ├── IlluminantClusterItem.cs │ │ ├── ItemEvent.cs │ │ ├── LadderRopeItem.cs │ │ ├── LifeItem.cs │ │ ├── ObjItem.cs │ │ ├── ParticleItem.cs │ │ ├── PortalItem.cs │ │ ├── QuestInfo.cs │ │ ├── ReactorItem.cs │ │ ├── SceneItem.cs │ │ ├── SkyWhaleItem.cs │ │ ├── TileItem.cs │ │ └── TooltipItem.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── RenderAnimate.cs │ ├── RenderArgs.cs │ ├── RenderEnv.cs │ ├── RenderFrame.cs │ ├── ResourceLoader.cs │ ├── SceneNode.cs │ ├── TextMesh.cs │ ├── TextureAtlas.cs │ ├── TextureLoader.cs │ ├── TileMode.cs │ ├── UI/ │ │ ├── ColorWConverter.cs │ │ ├── HitMap.cs │ │ ├── ITooltipTarget.cs │ │ ├── LCRBrush.cs │ │ ├── MapRenderButtonStyle.cs │ │ ├── MapRenderResourceKey.cs │ │ ├── MapRenderUIRoot.cs │ │ ├── MessageBoxBackgroundBrush.cs │ │ ├── MessageBoxStyle.cs │ │ ├── NineFormResource.cs │ │ ├── NinePatchBrush.cs │ │ ├── TCBBrush.cs │ │ ├── TextBoxEx.cs │ │ ├── Tooltip.cs │ │ ├── Tooltip2.cs │ │ ├── TooltipHelper.cs │ │ ├── UIChatBox.cs │ │ ├── UIDanmaku.cs │ │ ├── UIGraphics.cs │ │ ├── UIHelper.cs │ │ ├── UIMiniMap.cs │ │ ├── UIMinimap2.cs │ │ ├── UIMirrorFrame.cs │ │ ├── UIOptions.cs │ │ ├── UITeleport.cs │ │ ├── UITopBar.cs │ │ ├── UIWorldMap.cs │ │ ├── WcR2Engine.cs │ │ ├── WcR2Renderer.cs │ │ └── WindowEx.cs │ └── WzComparerR2.MapRender.csproj ├── WzComparerR2.Network/ │ ├── Contracts/ │ │ ├── ByteArrayConverter.cs │ │ ├── PackCryptReq.cs │ │ ├── PackCryptResp.cs │ │ ├── PackCustomPackage.cs │ │ ├── PackGetAllUsersReq.cs │ │ ├── PackGetAllUsersResp.cs │ │ ├── PackGetServerInfoReq.cs │ │ ├── PackGetServerInfoResp.cs │ │ ├── PackHeartBeat.cs │ │ ├── PackLoginReq.cs │ │ ├── PackLoginResp.cs │ │ ├── PackOnChat.cs │ │ ├── PackOnCustomPackage.cs │ │ ├── PackOnServerMessage.cs │ │ ├── PackOnUserUpdate.cs │ │ ├── PackSendChat.cs │ │ ├── PackUserProfileUpdateReq.cs │ │ └── TypeNameBinder.cs │ ├── Entry.cs │ ├── Log.cs │ ├── LoggerForm.Designer.cs │ ├── LoggerForm.cs │ ├── LoggerForm.resx │ ├── NativeMethods.cs │ ├── NetworkConfig.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── RC4CryptoServiceProvider.cs │ ├── RingBufferStream.cs │ ├── WcClient.cs │ └── WzComparerR2.Network.csproj ├── WzComparerR2.PluginBase/ │ ├── FindWzEventArgs.cs │ ├── FindWzEventHandler.cs │ ├── PluginContext.cs │ ├── PluginContextProvider.cs │ ├── PluginEntry.cs │ ├── PluginInfo.cs │ ├── PluginManager.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── WzComparerR2.PluginBase.csproj │ ├── WzNodeEventArgs.cs │ └── WzStructureEventArgs.cs ├── WzComparerR2.Updater/ │ ├── App.config │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── WzComparerR2.Updater.csproj │ └── app.manifest ├── WzComparerR2.WzLib/ │ ├── Compatibility/ │ │ ├── WzDirStringReader.cs │ │ ├── WzOffsetCalc.cs │ │ ├── WzPreReadProvider.cs │ │ ├── WzVersionProfile.cs │ │ └── WzVersionVerifier.cs │ ├── Cryptography/ │ │ ├── ChaCha20CryptoTransform.cs │ │ └── Snow2CryptoTransform.cs │ ├── IMapleStoryBlob.cs │ ├── IMapleStoryFile.cs │ ├── IMapleStoryFileEntry.cs │ ├── Interop.cs │ ├── Mcv_Types.cs │ ├── Ms_Entry.cs │ ├── Ms_File.cs │ ├── Ms_FileV2.cs │ ├── Ms_Header.cs │ ├── Ms_Image.cs │ ├── Ms_ImageV2.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Utilities/ │ │ ├── ChunkedEncryptedInputStream.cs │ │ ├── CollectionsMarshal.cs │ │ ├── ConcatenatedStream.cs │ │ ├── IWzDecrypter.cs │ │ ├── IWzStringPool.cs │ │ ├── ImageCodec.cs │ │ ├── MathHelper.cs │ │ ├── PartialStream.cs │ │ ├── SimpleWzStringPool.cs │ │ ├── StreamExtension.cs │ │ ├── WzBinaryReader.cs │ │ └── WzStreamReader.cs │ ├── WzComparerR2.WzLib.csproj │ ├── Wz_Capabilities.cs │ ├── Wz_Convex.cs │ ├── Wz_Crypto.cs │ ├── Wz_Directory.cs │ ├── Wz_File.cs │ ├── Wz_Header.cs │ ├── Wz_Image.cs │ ├── Wz_Node.cs │ ├── Wz_Png.cs │ ├── Wz_RawData.cs │ ├── Wz_Sound.cs │ ├── Wz_SoundType.cs │ ├── Wz_Structure.cs │ ├── Wz_Type.cs │ ├── Wz_Uol.cs │ ├── Wz_Vector.cs │ └── Wz_Video.cs ├── WzComparerR2.sln └── azure-pipelines.yml
Showing preview only (325K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3592 symbols across 443 files)
FILE: WzComparerR2.Avatar/Action.cs
class Action (line 7) | public class Action
method ToString (line 14) | public override string ToString()
FILE: WzComparerR2.Avatar/ActionFrame.cs
class ActionFrame (line 8) | public class ActionFrame
method ActionFrame (line 10) | public ActionFrame()
method ActionFrame (line 14) | public ActionFrame(string action, int frame)
FILE: WzComparerR2.Avatar/AvatarCanvas.cs
class AvatarCanvas (line 11) | public class AvatarCanvas
method AvatarCanvas (line 13) | public AvatarCanvas()
method LoadZ (line 41) | public bool LoadZ()
method LoadZ (line 46) | public bool LoadZ(Wz_Node zMapNode)
method LoadActions (line 69) | public bool LoadActions()
method LoadEmotions (line 119) | public bool LoadEmotions()
method LoadTamingActions (line 140) | public bool LoadTamingActions()
method GetCashWeaponTypes (line 171) | public List<int> GetCashWeaponTypes()
method LoadAction (line 189) | private IEnumerable<Action> LoadAction(Wz_Node actionNode)
method LoadActionFromNode (line 220) | private Action LoadActionFromNode(Wz_Node actionNode, string actionName)
method AddPart (line 250) | public AvatarPart AddPart(Wz_Node imgNode)
method GetActionFrames (line 306) | public ActionFrame[] GetActionFrames(string actionName)
method GetActionFrame (line 357) | private ActionFrame GetActionFrame(string actionName, int frameIndex)
method GetFaceFrames (line 396) | public ActionFrame[] GetFaceFrames(string emotion)
method GetFaceFrame (line 414) | private ActionFrame GetFaceFrame(string emotion, int frameIndex)
method GetTamingFrames (line 438) | public ActionFrame[] GetTamingFrames(string action)
method GetTamingFrame (line 449) | private ActionFrame GetTamingFrame(string action, int frameIndex)
method LoadActionFrameDesc (line 472) | private void LoadActionFrameDesc(Wz_Node frameNode, ActionFrame action...
method LoadStandardFrames (line 497) | private IEnumerable<ActionFrame> LoadStandardFrames(Wz_Node actionNode...
method LoadStandardFrame (line 525) | private ActionFrame LoadStandardFrame(Wz_Node frameNode)
method CreateFrame (line 541) | public Bone CreateFrame(int bodyFrame, int faceFrame, int tamingFrame)
method CreateFrame (line 607) | public Bone CreateFrame(ActionFrame bodyAction, ActionFrame faceAction...
method SetBonePoperty (line 657) | private void SetBonePoperty(Bone bone, BoneGroup group, ActionFrame pr...
method RotateBone (line 667) | private void RotateBone(Bone root, Bone childBone)
method CreateBone (line 684) | private void CreateBone(Bone root, Wz_Node[] frameNodes, bool? bodyFac...
method AppendBone (line 809) | private Bone AppendBone(Bone root, Bone parentBone, Skin skin, string ...
method DrawFrame (line 861) | public BitmapOrigin DrawFrame(Bone bone)
method CreateFrameLayers (line 891) | public BitmapOrigin[] CreateFrameLayers(Bone bone)
method TransformPixel (line 905) | private unsafe void TransformPixel(Bitmap src, Bitmap dst, Matrix mt)
method GenerateLayer (line 932) | private List<AvatarLayer> GenerateLayer(Bone bone)
method RotateFlipImage (line 1005) | private bool RotateFlipImage(Bitmap bmp, Rectangle rect, bool flip, in...
method LinkPlayerParts (line 1066) | private Wz_Node[] LinkPlayerParts(ActionFrame bodyAction, ActionFrame ...
method LinkTamingParts (line 1164) | private Wz_Node[] LinkTamingParts(ActionFrame tamingAction)
method FindBodyActionNode (line 1184) | private Wz_Node FindBodyActionNode(ActionFrame actionFrame)
method FindActionFrameNode (line 1203) | private Wz_Node FindActionFrameNode(Wz_Node parent, ActionFrame action...
method GetHeadActionName (line 1228) | private string GetHeadActionName(string bodyAction, bool? face)
method GetHairActionName (line 1248) | private string GetHairActionName(string bodyAction, bool? face)
class AvatarLayer (line 1458) | private class AvatarLayer
type Matrix (line 1465) | private struct Matrix
method Matrix (line 1467) | public Matrix(int m11, int m12, int m21, int m22, int m31, int m32)
FILE: WzComparerR2.Avatar/AvatarPart.cs
class AvatarPart (line 10) | public class AvatarPart
method AvatarPart (line 12) | public AvatarPart(Wz_Node node)
method LoadInfo (line 25) | private void LoadInfo()
FILE: WzComparerR2.Avatar/Bone.cs
class Bone (line 8) | public class Bone
method Bone (line 10) | public Bone(string name)
method FindChild (line 48) | public Bone FindChild(string name)
type BoneGroup (line 63) | public enum BoneGroup
FILE: WzComparerR2.Avatar/Entry.cs
class Entry (line 15) | public class Entry : PluginEntry
method Entry (line 17) | public Entry(PluginContext context)
method OnLoad (line 22) | protected override void OnLoad()
method btnSetting_Click (line 35) | public void btnSetting_Click(object sender, EventArgs e)
method CreateContinueAction (line 136) | private Gif CreateContinueAction(AvatarCanvas canvas)
method CreateKeyDownAction (line 266) | private Gif CreateKeyDownAction(AvatarCanvas canvas)
method CreateChair (line 365) | private Gif CreateChair(AvatarCanvas canvas)
method AddPart (line 449) | void AddPart(AvatarCanvas canvas, string imgPath)
FILE: WzComparerR2.Avatar/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: WzComparerR2.Avatar/Skin.cs
class Skin (line 9) | public class Skin
FILE: WzComparerR2.Avatar/UI/AvatarCodeForm.Designer.cs
class AvatarCodeForm (line 3) | partial class AvatarCodeForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Avatar/UI/AvatarCodeForm.cs
class AvatarCodeForm (line 11) | public partial class AvatarCodeForm : DevComponents.DotNetBar.OfficeForm
method AvatarCodeForm (line 13) | public AvatarCodeForm()
method textBoxX1_KeyDown (line 43) | private void textBoxX1_KeyDown(object sender, KeyEventArgs e)
FILE: WzComparerR2.Avatar/UI/AvatarContainer.Designer.cs
class AvatarContainer (line 3) | partial class AvatarContainer
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Avatar/UI/AvatarContainer.cs
class AvatarContainer (line 11) | public partial class AvatarContainer : Control
method AvatarContainer (line 13) | public AvatarContainer()
method ClearAllCache (line 36) | public void ClearAllCache()
method AddCache (line 41) | public void AddCache(string key, BitmapOrigin[] layers)
method HasCache (line 46) | public bool HasCache(string key)
method SetKey (line 51) | public void SetKey(string key)
method OnPaint (line 57) | protected override void OnPaint(PaintEventArgs pe)
method DrawBackgrnd (line 79) | private void DrawBackgrnd(Graphics g)
method OnMouseDown (line 94) | protected override void OnMouseDown(MouseEventArgs e)
method OnMouseMove (line 104) | protected override void OnMouseMove(MouseEventArgs e)
method OnMouseUp (line 117) | protected override void OnMouseUp(MouseEventArgs e)
FILE: WzComparerR2.Avatar/UI/AvatarForm.Designer.cs
class AvatarForm (line 3) | partial class AvatarForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Avatar/UI/AvatarForm.cs
class AvatarForm (line 19) | internal partial class AvatarForm : DevComponents.DotNetBar.OfficeForm
method AvatarForm (line 21) | public AvatarForm()
method GetTabPanel (line 31) | public SuperTabControlPanel GetTabPanel()
method OnSelectedNode1Changed (line 56) | public void OnSelectedNode1Changed(object sender, WzNodeEventArgs e)
method OnWzClosing (line 84) | public void OnWzClosing(object sender, WzStructureEventArgs e)
method AvatarInit (line 111) | private bool AvatarInit()
method LoadPart (line 129) | private void LoadPart(Wz_Node imgNode)
method OnNewPartAdded (line 145) | private void OnNewPartAdded(AvatarPart part)
method SuspendUpdateDisplay (line 209) | private void SuspendUpdateDisplay()
method ResumeUpdateDisplay (line 215) | private void ResumeUpdateDisplay()
method UpdateDisplay (line 230) | private void UpdateDisplay()
method GetAllPartsTag (line 307) | private string GetAllPartsTag()
method AddPart (line 321) | void AddPart(string imgPath)
method SelectBodyAction (line 330) | private void SelectBodyAction(string actionName)
method SelectEmotion (line 343) | private void SelectEmotion(string emotionName)
method FillBodyAction (line 357) | private void FillBodyAction()
method FillEmotion (line 397) | private void FillEmotion()
method FillTamingAction (line 402) | private void FillTamingAction()
method FillWeaponTypes (line 407) | private void FillWeaponTypes()
method SetTamingDefaultBodyAction (line 413) | private void SetTamingDefaultBodyAction()
method SetTamingDefault (line 430) | private void SetTamingDefault()
method FillAvatarParts (line 455) | private void FillAvatarParts()
method BtnItemShow_Click (line 488) | private void BtnItemShow_Click(object sender, EventArgs e)
method BtnItemDel_Click (line 497) | private void BtnItemDel_Click(object sender, EventArgs e)
method Btn_CheckedChanged (line 516) | private void Btn_CheckedChanged(object sender, EventArgs e)
method FillBodyActionFrame (line 530) | private void FillBodyActionFrame()
method FillEmotionFrame (line 544) | private void FillEmotionFrame()
method FillTamingActionFrame (line 558) | private void FillTamingActionFrame()
method FillWeaponIdx (line 572) | private void FillWeaponIdx()
method FillEarSelection (line 577) | private void FillEarSelection()
method FillComboItems (line 582) | private void FillComboItems(ComboBoxEx comboBox, int start, int count)
method FillComboItems (line 594) | private void FillComboItems(ComboBoxEx comboBox, IEnumerable<string> i...
method FillComboItems (line 606) | private void FillComboItems(ComboBoxEx comboBox, IEnumerable<ActionFra...
method FillComboItems (line 620) | private void FillComboItems(ComboBoxEx comboBox, IEnumerable<ComboItem...
method GetSelectedActionFrame (line 650) | private bool GetSelectedActionFrame(ComboBoxEx comboBox, out int frame...
method GetSelectedBodyFrame (line 668) | private bool GetSelectedBodyFrame(out int frameIndex, out ActionFrame ...
method GetSelectedEmotionFrame (line 673) | private bool GetSelectedEmotionFrame(out int frameIndex, out ActionFra...
method GetSelectedTamingFrame (line 678) | private bool GetSelectedTamingFrame(out int frameIndex, out ActionFram...
method cmbActionBody_SelectedIndexChanged (line 684) | private void cmbActionBody_SelectedIndexChanged(object sender, EventAr...
method cmbEmotion_SelectedIndexChanged (line 692) | private void cmbEmotion_SelectedIndexChanged(object sender, EventArgs e)
method cmbActionTaming_SelectedIndexChanged (line 700) | private void cmbActionTaming_SelectedIndexChanged(object sender, Event...
method cmbBodyFrame_SelectedIndexChanged (line 710) | private void cmbBodyFrame_SelectedIndexChanged(object sender, EventArg...
method cmbEmotionFrame_SelectedIndexChanged (line 715) | private void cmbEmotionFrame_SelectedIndexChanged(object sender, Event...
method cmbTamingFrame_SelectedIndexChanged (line 720) | private void cmbTamingFrame_SelectedIndexChanged(object sender, EventA...
method cmbWeaponType_SelectedIndexChanged (line 725) | private void cmbWeaponType_SelectedIndexChanged(object sender, EventAr...
method cmbWeaponIdx_SelectedIndexChanged (line 730) | private void cmbWeaponIdx_SelectedIndexChanged(object sender, EventArg...
method cmbEar_SelectedIndexChanged (line 735) | private void cmbEar_SelectedIndexChanged(object sender, EventArgs e)
method chkBodyPlay_CheckedChanged (line 740) | private void chkBodyPlay_CheckedChanged(object sender, EventArgs e)
method chkEmotionPlay_CheckedChanged (line 761) | private void chkEmotionPlay_CheckedChanged(object sender, EventArgs e)
method chkTamingPlay_CheckedChanged (line 782) | private void chkTamingPlay_CheckedChanged(object sender, EventArgs e)
method chkHairCover_CheckedChanged (line 803) | private void chkHairCover_CheckedChanged(object sender, EventArgs e)
method chkHairShade_CheckedChanged (line 809) | private void chkHairShade_CheckedChanged(object sender, EventArgs e)
method timer1_Tick (line 815) | private void timer1_Tick(object sender, EventArgs e)
method AnimateUpdate (line 831) | private void AnimateUpdate()
method AnimateStart (line 853) | private void AnimateStart()
method TimerEnabledCheck (line 862) | private void TimerEnabledCheck()
method AnimateStop (line 878) | private void AnimateStop()
method FindNextFrame (line 886) | private bool FindNextFrame(ComboBoxEx cmbFrames)
method btnCode_Click (line 919) | private void btnCode_Click(object sender, EventArgs e)
method btnMale_Click (line 933) | private void btnMale_Click(object sender, EventArgs e)
method btnFemale_Click (line 942) | private void btnFemale_Click(object sender, EventArgs e)
method btnReset_Click (line 951) | private void btnReset_Click(object sender, EventArgs e)
method btnSaveAsGif_Click (line 957) | private void btnSaveAsGif_Click(object sender, EventArgs e)
method LoadCode (line 1231) | private void LoadCode(string code, int loadType)
method FindNodeByGearID (line 1304) | private Wz_Node FindNodeByGearID(Wz_Node characWz, int id)
class Animator (line 1345) | private class Animator
method Animator (line 1347) | public Animator()
method Elapse (line 1386) | public void Elapse(int millisecond)
method Update (line 1397) | private void Update()
FILE: WzComparerR2.Avatar/UI/AvatarPartButtonItem.Designer.cs
class AvatarPartButtonItem (line 3) | partial class AvatarPartButtonItem
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Avatar/UI/AvatarPartButtonItem.cs
class AvatarPartButtonItem (line 12) | internal partial class AvatarPartButtonItem : ButtonItem
method AvatarPartButtonItem (line 14) | public AvatarPartButtonItem()
method SetIcon (line 19) | public void SetIcon(Bitmap icon)
FILE: WzComparerR2.Common/Animation/Frame.cs
class Frame (line 13) | public class Frame
method Frame (line 15) | public Frame()
method Frame (line 21) | public Frame(Texture2D texture) : this(texture, null)
method Frame (line 25) | public Frame(Texture2D atlasPage, Rectangle? atlasRect) : this()
method CreateFromNode (line 61) | public static Frame CreateFromNode(Wz_Node frameNode, GraphicsDevice g...
FILE: WzComparerR2.Common/Animation/FrameAnimationData.cs
class FrameAnimationData (line 11) | public class FrameAnimationData
method FrameAnimationData (line 13) | public FrameAnimationData()
method FrameAnimationData (line 18) | public FrameAnimationData(IEnumerable<Frame> frames)
method GetBound (line 25) | public Rectangle GetBound()
method CreateFromNode (line 35) | public static FrameAnimationData CreateFromNode(Wz_Node node, Graphics...
type FrameAnimationCreatingOptions (line 74) | [Flags]
FILE: WzComparerR2.Common/Animation/FrameAnimator.cs
class FrameAnimator (line 11) | public class FrameAnimator : AnimationItem
method FrameAnimator (line 13) | public FrameAnimator(FrameAnimationData data)
method Update (line 38) | public override void Update(TimeSpan elapsedTime)
method Reset (line 52) | public override void Reset()
method Measure (line 58) | public override Rectangle Measure()
method GetKeyFrames (line 63) | public KeyFrame[] GetKeyFrames()
method Load (line 70) | protected virtual void Load()
method UpdateFrame (line 78) | protected virtual void UpdateFrame()
method Clone (line 102) | public override object Clone()
method CreateTimeline (line 107) | public static int[] CreateTimeline(IEnumerable<int> delays)
method GetProcessFromTimeline (line 117) | public static int GetProcessFromTimeline(int[] timeline, int timeOffse...
FILE: WzComparerR2.Common/Animation/ISpineAnimationData.cs
type ISpineAnimationData (line 6) | public interface ISpineAnimationData
method CreateAnimator (line 11) | ISpineAnimator CreateAnimator();
FILE: WzComparerR2.Common/Animation/ISpineAnimator.cs
type ISpineAnimator (line 7) | public interface ISpineAnimator
method Render (line 18) | void Render(Spine.SkeletonRenderer renderer);
method GetSlotBounds (line 19) | Microsoft.Xna.Framework.Rectangle GetSlotBounds(string slot);
FILE: WzComparerR2.Common/Animation/KeyFrame.cs
type KeyFrame (line 8) | public struct KeyFrame
FILE: WzComparerR2.Common/Animation/MaplestoryCanvasVideoLoader.cs
class MaplestoryCanvasVideoLoader (line 16) | public class MaplestoryCanvasVideoLoader
method Load (line 18) | public FrameAnimationData Load(Wz_Video wzVideo, GraphicsDevice graphi...
method I420ToARGB (line 105) | private static unsafe void I420ToARGB(IntPtr src_y, int src_stride_y, ...
method MergeAlphaMap (line 114) | private static unsafe void MergeAlphaMap(Span<byte> textureData, ReadO...
method I420ToARGB (line 186) | [DllImport(libYuv)]
FILE: WzComparerR2.Common/Animation/ModelBound.cs
type ModelBound (line 9) | public struct ModelBound
method Update (line 18) | public void Update(float[] vertices, int count)
method GetBound (line 58) | public Rectangle GetBound()
FILE: WzComparerR2.Common/Animation/SpineAnimationDataV2.cs
class SpineAnimationDataV2 (line 10) | public class SpineAnimationDataV2 : ISpineAnimationData
method SpineAnimationDataV2 (line 12) | private SpineAnimationDataV2()
method CreateFromNode (line 19) | public static SpineAnimationDataV2 CreateFromNode(Wz_Node atlasOrSkelN...
method CreateFromNode (line 25) | public static SpineAnimationDataV2 CreateFromNode(Wz_Node atlasOrSkelN...
method Create (line 30) | public static SpineAnimationDataV2 Create(SpineDetectionResult detecti...
method CreateAnimator (line 51) | ISpineAnimator ISpineAnimationData.CreateAnimator() => new SpineAnimat...
FILE: WzComparerR2.Common/Animation/SpineAnimationDataV4.cs
class SpineAnimationDataV4 (line 10) | public class SpineAnimationDataV4 : ISpineAnimationData
method SpineAnimationDataV4 (line 12) | private SpineAnimationDataV4()
method CreateFromNode (line 19) | public static SpineAnimationDataV4 CreateFromNode(Wz_Node atlasOrSkelN...
method CreateFromNode (line 25) | public static SpineAnimationDataV4 CreateFromNode(Wz_Node atlasOrSkelN...
method Create (line 30) | public static SpineAnimationDataV4 Create(SpineDetectionResult detecti...
method CreateAnimator (line 51) | ISpineAnimator ISpineAnimationData.CreateAnimator() => new SpineAnimat...
FILE: WzComparerR2.Common/Animation/SpineAnimatorV2.cs
class SpineAnimatorV2 (line 12) | public class SpineAnimatorV2 : AnimationItem, ISpineAnimator
method SpineAnimatorV2 (line 14) | public SpineAnimatorV2(SpineAnimationDataV2 data)
method Reset (line 102) | public override void Reset()
method Update (line 120) | public override void Update(TimeSpan elapsedTime)
method Measure (line 131) | public override Rectangle Measure()
method GetSlotBounds (line 138) | public Rectangle GetSlotBounds(string slotName)
method UpdateBounds (line 152) | private void UpdateBounds(ref ModelBound bound, Skeleton skeleton)
method GetSlotBoundingBox (line 185) | private Rectangle GetSlotBoundingBox(Slot slot)
method Clone (line 200) | public override object Clone()
method Load (line 211) | private void Load()
method Render (line 238) | void ISpineAnimator.Render(Spine.SkeletonRenderer renderer) => rendere...
FILE: WzComparerR2.Common/Animation/SpineAnimatorV4.cs
class SpineAnimatorV4 (line 12) | public class SpineAnimatorV4 : AnimationItem, ISpineAnimator
method SpineAnimatorV4 (line 14) | public SpineAnimatorV4(SpineAnimationDataV4 data)
method Reset (line 102) | public override void Reset()
method Update (line 120) | public override void Update(TimeSpan elapsedTime)
method Measure (line 131) | public override Rectangle Measure()
method GetSlotBounds (line 138) | public Rectangle GetSlotBounds(string slotName)
method UpdateBounds (line 152) | private void UpdateBounds(ref ModelBound bound, Skeleton skeleton)
method GetSlotBoundingBox (line 181) | private Rectangle GetSlotBoundingBox(Slot slot)
method Clone (line 196) | public override object Clone()
method Load (line 207) | private void Load()
method Render (line 234) | void ISpineAnimator.Render(Spine.SkeletonRenderer renderer) => rendere...
FILE: WzComparerR2.Common/Animation/WzSpineTextureLoader.cs
class WzSpineTextureLoader (line 10) | public class WzSpineTextureLoader : Spine.TextureLoader, Spine.V2.Textur...
method WzSpineTextureLoader (line 12) | public WzSpineTextureLoader(Wz_Node topNode, GraphicsDevice graphicsDe...
method WzSpineTextureLoader (line 17) | public WzSpineTextureLoader(Wz_Node topNode, GraphicsDevice graphicsDe...
method Load (line 32) | public void Load(Spine.AtlasPage page, string path)
method Load (line 46) | public void Load(Spine.V2.AtlasPage page, string path)
method Unload (line 60) | public void Unload(object texture)
method TryLoadTexture (line 65) | private bool TryLoadTexture(string path, out Texture2D texture)
method CreateEmptyTexture (line 82) | private Texture2D CreateEmptyTexture(int width, int height)
FILE: WzComparerR2.Common/BitmapOrigin.cs
type BitmapOrigin (line 10) | public struct BitmapOrigin
method BitmapOrigin (line 12) | public BitmapOrigin(Bitmap bitmap)
method BitmapOrigin (line 17) | public BitmapOrigin(Bitmap bitmap, int x, int y)
method BitmapOrigin (line 22) | public BitmapOrigin(Bitmap bitmap, Point origin)
method CreateFromNode (line 71) | public static BitmapOrigin CreateFromNode(Wz_Node node, GlobalFindNode...
FILE: WzComparerR2.Common/Calculator.cs
class Calculator (line 8) | public static class Calculator
method Parse (line 10) | public static decimal Parse(string mathExpression, params decimal[] args)
method Lexer (line 34) | private static List<Token> Lexer(string expr)
method Suffix (line 106) | private static List<Token> Suffix(List<Token> tokens)
method Execute (line 204) | private static decimal Execute(List<Token> inst, EvalContext param)
class Token (line 265) | private class Token
method Token (line 267) | public Token(TokenType type, String value)
method Priority (line 278) | private static int Priority(Token token)
type TokenType (line 292) | private enum TokenType
type Tag (line 306) | private enum Tag
class EvalContext (line 313) | private class EvalContext
method EvalContext (line 315) | public EvalContext()
method EvalContext (line 320) | public EvalContext(Dictionary<string, object> parameters)
method TryGetValue (line 335) | public bool TryGetValue(string key, out object value)
method TryGetFunction (line 341) | private bool TryGetFunction(string key, out object value)
FILE: WzComparerR2.Common/CharaSim/Addition.cs
class Addition (line 8) | public class Addition
method Addition (line 10) | public Addition()
method GetPropString (line 21) | public string GetPropString()
method GetConString (line 147) | public string GetConString()
method getPersonalityLevel (line 175) | private int getPersonalityLevel(int totalExp, out int lastExp)
method GetWeekDayString (line 221) | private static string GetWeekDayString(int weekDay)
method CreateFromNode (line 236) | public static Addition CreateFromNode(Wz_Node node)
FILE: WzComparerR2.Common/CharaSim/AdditionType.cs
type AdditionType (line 7) | public enum AdditionType
FILE: WzComparerR2.Common/CharaSim/AlienStone.cs
class AlienStone (line 7) | public class AlienStone
FILE: WzComparerR2.Common/CharaSim/AlienStoneGrade.cs
type AlienStoneGrade (line 7) | public enum AlienStoneGrade
FILE: WzComparerR2.Common/CharaSim/DamageSkin.cs
class DamageSkin (line 10) | public class DamageSkin
method DamageSkin (line 12) | public DamageSkin()
method CreateFromNode (line 56) | public static DamageSkin CreateFromNode(Wz_Node damageSkinNode, Global...
FILE: WzComparerR2.Common/CharaSim/ExclusiveEquip.cs
class ExclusiveEquip (line 9) | public class ExclusiveEquip
method ExclusiveEquip (line 11) | public ExclusiveEquip()
method CreateFromNode (line 19) | public static ExclusiveEquip CreateFromNode(Wz_Node exclusiveEquipNode)
FILE: WzComparerR2.Common/CharaSim/Familiar.cs
class Familiar (line 7) | public class Familiar
method Familiar (line 9) | public Familiar()
method CreateFromNode (line 25) | public static Familiar CreateFromNode(Wz_Node node, GlobalFindNodeFunc...
FILE: WzComparerR2.Common/CharaSim/FormulaVersion.cs
type FormulaVersion (line 7) | public enum FormulaVersion
FILE: WzComparerR2.Common/CharaSim/Gear.cs
class Gear (line 11) | public class Gear : ItemBase
method Gear (line 13) | public Gear()
method GetBooleanValue (line 74) | public bool GetBooleanValue(GearPropType type)
method GetMaxStar (line 88) | public int GetMaxStar()
method Clone (line 138) | public override object Clone()
method MakeTimeLimitedPropAvailable (line 151) | public void MakeTimeLimitedPropAvailable()
method RestoreStandardProperties (line 167) | public void RestoreStandardProperties()
method IsWeapon (line 195) | public static bool IsWeapon(GearType type)
method IsLeftWeapon (line 206) | public static bool IsLeftWeapon(GearType type)
method IsSubWeapon (line 212) | public static bool IsSubWeapon(GearType type)
method IsDoubleHandWeapon (line 236) | public static bool IsDoubleHandWeapon(GearType type)
method IsMechanicGear (line 245) | public static bool IsMechanicGear(GearType type)
method IsDragonGear (line 250) | public static bool IsDragonGear(GearType type)
method Compare (line 255) | public static int Compare(Gear gear, Gear originGear)
method GetPropTypeWeight (line 276) | private static int GetPropTypeWeight(GearPropType type)
method IsEpicPropType (line 293) | public static bool IsEpicPropType(GearPropType type)
method IsV5SupportPropType (line 309) | public static bool IsV5SupportPropType(GearPropType type)
method GetGearType (line 330) | public static GearType GetGearType(int code)
method GetGender (line 396) | public static int GetGender(int code)
method SpecialCanPotential (line 412) | public static bool SpecialCanPotential(GearType type)
method CombineProperties (line 433) | public static IEnumerable<KeyValuePair<GearPropType, int>> CombineProp...
method CombineProperties (line 440) | public static IEnumerable<KeyValuePair<GearPropType, object>> CombineP...
method CreateFromNode (line 532) | public static Gear CreateFromNode(Wz_Node node, GlobalFindNodeFunction...
FILE: WzComparerR2.Common/CharaSim/GearGrade.cs
type GearGrade (line 7) | public enum GearGrade
FILE: WzComparerR2.Common/CharaSim/GearLevelInfo.cs
class GearLevelInfo (line 8) | public class GearLevelInfo
method GearLevelInfo (line 10) | public GearLevelInfo()
method CreateFromNode (line 27) | public static GearLevelInfo CreateFromNode(Wz_Node node)
type Range (line 78) | public struct Range
method Range (line 80) | public Range(int min, int max)
FILE: WzComparerR2.Common/CharaSim/GearPropType.cs
type GearPropType (line 7) | public enum GearPropType
FILE: WzComparerR2.Common/CharaSim/GearSealedInfo.cs
class GearSealedInfo (line 8) | public class GearSealedInfo
method GearSealedInfo (line 10) | public GearSealedInfo()
method CreateFromNode (line 22) | public static GearSealedInfo CreateFromNode(Wz_Node node, GlobalFindNo...
FILE: WzComparerR2.Common/CharaSim/GearState.cs
type GearState (line 7) | public enum GearState
FILE: WzComparerR2.Common/CharaSim/GearType.cs
type GearType (line 7) | public enum GearType
FILE: WzComparerR2.Common/CharaSim/HyperSkillType.cs
type HyperSkillType (line 7) | public enum HyperSkillType
FILE: WzComparerR2.Common/CharaSim/Item.cs
class Item (line 9) | public class Item : ItemBase
method Item (line 11) | public Item()
method GetBooleanValue (line 37) | public bool GetBooleanValue(ItemPropType type)
method CreateFromNode (line 42) | public static Item CreateFromNode(Wz_Node node, GlobalFindNodeFunction...
FILE: WzComparerR2.Common/CharaSim/ItemBase.cs
class ItemBase (line 7) | public abstract class ItemBase : ICloneable
method ItemBase (line 9) | public ItemBase()
method Clone (line 23) | public virtual object Clone()
FILE: WzComparerR2.Common/CharaSim/ItemBaseType.cs
type ItemBaseType (line 7) | public enum ItemBaseType
FILE: WzComparerR2.Common/CharaSim/ItemPropType.cs
type ItemPropType (line 7) | public enum ItemPropType
FILE: WzComparerR2.Common/CharaSim/ItemSpecType.cs
type ItemSpecType (line 7) | public enum ItemSpecType
FILE: WzComparerR2.Common/CharaSim/ItemStringHelper.cs
class ItemStringHelper (line 7) | public static class ItemStringHelper
method GetMobCategoryName (line 14) | public static string GetMobCategoryName(int category)
method GetGearPropString (line 31) | public static string GetGearPropString(GearPropType propType, long value)
method GetGearPropString (line 42) | public static string GetGearPropString(GearPropType propType, long val...
method GetGearPropDiffString (line 154) | public static string GetGearPropDiffString(GearPropType propType, int ...
method GetGearGradeString (line 196) | public static string GetGearGradeString(GearGrade rank)
method GetGearTypeString (line 215) | public static string GetGearTypeString(GearType type)
method GetAttackSpeedString (line 389) | public static string GetAttackSpeedString(int attackSpeed)
method GetSetItemGearTypeString (line 411) | public static string GetSetItemGearTypeString(GearType type)
method GetExtraJobReqString (line 421) | public static string GetExtraJobReqString(GearType type)
method GetExtraJobReqString (line 531) | public static string GetExtraJobReqString(int specJob)
method GetExtraJobReqString (line 568) | public static string GetExtraJobReqString(IEnumerable<int> specJobs)
method GetItemPropString (line 593) | public static string GetItemPropString(ItemPropType propType, long value)
method GetSkillReqAmount (line 620) | public static string GetSkillReqAmount(int skillID, int reqAmount)
method GetJobName (line 632) | public static string GetJobName(int jobCode)
method ToChineseNumberExpr (line 994) | public static string ToChineseNumberExpr(long value, bool detailedExpr...
method ToThousandsNumberExpr (line 1096) | public static string ToThousandsNumberExpr(long value, bool isMsea = f...
FILE: WzComparerR2.Common/CharaSim/Mob.cs
class Mob (line 9) | public class Mob
method Mob (line 11) | public Mob()
method CreateFromNode (line 65) | public static Mob CreateFromNode(Wz_Node node, GlobalFindNodeFunction ...
FILE: WzComparerR2.Common/CharaSim/MobElemAttr.cs
class MobElemAttr (line 7) | public class MobElemAttr
method MobElemAttr (line 9) | public MobElemAttr(string elemAttr)
type ElemResistance (line 42) | public enum ElemResistance : byte
FILE: WzComparerR2.Common/CharaSim/Npc.cs
class Npc (line 9) | public class Npc
method Npc (line 11) | public Npc()
method CreateFromNode (line 26) | public static Npc CreateFromNode(Wz_Node node, GlobalFindNodeFunction ...
FILE: WzComparerR2.Common/CharaSim/Potential.cs
class Potential (line 8) | public class Potential
method Potential (line 10) | public Potential()
method ToString (line 29) | public override string ToString()
method ConvertSummary (line 35) | public string ConvertSummary()
method GetPotentialLevel (line 52) | public static int GetPotentialLevel(int gearReqLevel)
method CheckOptionType (line 59) | public static bool CheckOptionType(int optionType, GearType gearType)
method CreateFromNode (line 88) | public static Potential CreateFromNode(Wz_Node potentialNode, int pLevel)
method LoadFromWz (line 143) | public static Potential LoadFromWz(int optID, int optLevel, GlobalFind...
FILE: WzComparerR2.Common/CharaSim/Recipe.cs
class Recipe (line 8) | public class Recipe
method Recipe (line 10) | public Recipe()
method CreateFromNode (line 34) | public static Recipe CreateFromNode(Wz_Node node)
FILE: WzComparerR2.Common/CharaSim/RecipeItemInfo.cs
class RecipeItemInfo (line 7) | public class RecipeItemInfo
method RecipeItemInfo (line 9) | public RecipeItemInfo()
FILE: WzComparerR2.Common/CharaSim/RecipePropType.cs
type RecipePropType (line 7) | public enum RecipePropType
FILE: WzComparerR2.Common/CharaSim/SetItem.cs
class SetItem (line 9) | public class SetItem
method SetItem (line 11) | public SetItem()
method CreateFromNode (line 26) | public static SetItem CreateFromNode(Wz_Node setItemNode, Wz_Node opti...
method CombinePart (line 297) | private static SetItemIDPart CombinePart(SetItem setItem, Predicate<in...
FILE: WzComparerR2.Common/CharaSim/SetItemActiveSkill.cs
class SetItemActiveSkill (line 7) | public class SetItemActiveSkill
method SetItemActiveSkill (line 9) | public SetItemActiveSkill()
FILE: WzComparerR2.Common/CharaSim/SetItemBonusByTime.cs
class SetItemBonusByTime (line 7) | public class SetItemBonusByTime
method SetItemBonusByTime (line 9) | public SetItemBonusByTime()
FILE: WzComparerR2.Common/CharaSim/SetItemEffect.cs
class SetItemEffect (line 8) | public class SetItemEffect
method SetItemEffect (line 10) | public SetItemEffect()
FILE: WzComparerR2.Common/CharaSim/SetItemIDList.cs
class SetItemIDList (line 7) | public class SetItemIDList
method SetItemIDList (line 9) | public SetItemIDList()
method Add (line 16) | public void Add(int partID, SetItemIDPart part)
method Remove (line 21) | public void Remove(int partID)
FILE: WzComparerR2.Common/CharaSim/SetItemIDPart.cs
class SetItemIDPart (line 7) | public class SetItemIDPart
method SetItemIDPart (line 9) | public SetItemIDPart()
method SetItemIDPart (line 18) | public SetItemIDPart(int itemID)
method SetItemIDPart (line 28) | public SetItemIDPart(IEnumerable<int> itemIDList)
FILE: WzComparerR2.Common/CharaSim/SetItemOptionToMob.cs
class SetItemOptionToMob (line 7) | public class SetItemOptionToMob
method SetItemOptionToMob (line 9) | public SetItemOptionToMob()
method ConvertSummary (line 19) | public string ConvertSummary()
FILE: WzComparerR2.Common/CharaSim/Skill.cs
class Skill (line 8) | public class Skill
method Skill (line 10) | public Skill()
method CreateFromNode (line 93) | public static Skill CreateFromNode(Wz_Node node, GlobalFindNodeFunctio...
FILE: WzComparerR2.Common/CharaSim/SummaryParams.cs
type SummaryParams (line 7) | public struct SummaryParams
FILE: WzComparerR2.Common/CharaSim/SummaryParser.cs
class SummaryParser (line 10) | public class SummaryParser
method SummaryParser (line 12) | static SummaryParser()
method GetSkillSummary (line 18) | public static string GetSkillSummary(string H, int Level, Dictionary<s...
method GetValueIgnoreCase (line 203) | private static bool GetValueIgnoreCase(Dictionary<string,string> dict,...
method GetSkillSummary (line 218) | public static string GetSkillSummary(Skill skill, StringResultSkill sr...
method GetSkillSummary (line 225) | public static string GetSkillSummary(Skill skill, int level, StringRes...
type SkillSummaryOptions (line 275) | public struct SkillSummaryOptions
FILE: WzComparerR2.Common/Config/ConfigArrayList.cs
class ConfigArrayList (line 9) | public class ConfigArrayList<T> : ConfigurationElementCollection, IEnume...
method Add (line 21) | public void Add(T item)
method Insert (line 26) | public void Insert(int index, T item)
method RemoveAt (line 31) | public void RemoveAt(int index)
method Remove (line 36) | public bool Remove(T item)
method IndexOf (line 47) | public int IndexOf(T item)
method Clear (line 54) | public void Clear()
method CreateNewElement (line 59) | protected override ConfigurationElement CreateNewElement()
method GetElementKey (line 64) | protected override object GetElementKey(ConfigurationElement element)
method GetEnumerator (line 69) | public new IEnumerator<T> GetEnumerator()
class ItemElement (line 79) | public class ItemElement : ConfigurationElement
method ItemElement (line 81) | public ItemElement()
FILE: WzComparerR2.Common/Config/ConfigItem.cs
class ConfigItem (line 9) | public class ConfigItem<T> : ConfigurationElement
method ToString (line 28) | public override string ToString()
FILE: WzComparerR2.Common/Config/ConfigItemCollectionBase.cs
class ConfigItemCollectionBase (line 9) | public class ConfigItemCollectionBase<T> : ConfigurationElementCollection
method Add (line 23) | public void Add(T item)
method Insert (line 28) | public void Insert(int index, T item)
method RemoveAt (line 33) | public void RemoveAt(int index)
method Remove (line 38) | public void Remove(T item)
method Clear (line 47) | public void Clear()
method CreateNewElement (line 52) | protected override ConfigurationElement CreateNewElement()
method GetElementKey (line 57) | protected override object GetElementKey(ConfigurationElement element)
FILE: WzComparerR2.Common/Config/ConfigManager.cs
class ConfigManager (line 13) | public static class ConfigManager
method Open (line 27) | private static Configuration Open()
method Reload (line 38) | public static void Reload()
method Save (line 43) | public static void Save()
method RegisterSection (line 48) | public static bool RegisterSection<T>() where T : ConfigSectionBase<T>...
method RegisterSection (line 53) | public static bool RegisterSection(Type type)
method RegisterAllSection (line 75) | public static void RegisterAllSection()
method RegisterAllSection (line 81) | public static void RegisterAllSection(Assembly assembly)
method GetSectionName (line 106) | public static string GetSectionName(Type type)
FILE: WzComparerR2.Common/Config/ConfigSectionBase.cs
class ConfigSectionBase (line 10) | public abstract class ConfigSectionBase<T> : ConfigurationSection
FILE: WzComparerR2.Common/Config/SectionNameAttribute.cs
class SectionNameAttribute (line 8) | public sealed class SectionNameAttribute : Attribute
method SectionNameAttribute (line 10) | public SectionNameAttribute(string sectionName)
FILE: WzComparerR2.Common/Controls/AlphaForm.cs
class AlphaForm (line 9) | public class AlphaForm : PerPixelAlphaForm
method AlphaForm (line 11) | public AlphaForm()
method WndProc (line 45) | protected override void WndProc(ref Message m)
method OnKeyDown (line 81) | protected override void OnKeyDown(KeyEventArgs e)
method OnFormClosing (line 86) | protected override void OnFormClosing(FormClosingEventArgs e)
method captionHitTest (line 97) | protected virtual bool captionHitTest(Point point)
class PerPixelAlphaForm (line 109) | public class PerPixelAlphaForm : Form
method PerPixelAlphaForm (line 111) | public PerPixelAlphaForm()
method SetBitmap (line 118) | public void SetBitmap(Bitmap bitmap)
method SetBitmap (line 124) | public void SetBitmap(Bitmap bitmap, byte opacity)
class Win32 (line 182) | class Win32
type Bool (line 184) | public enum Bool
type Point (line 190) | [StructLayout(LayoutKind.Sequential)]
method Point (line 196) | public Point(Int32 x, Int32 y) { this.x = x; this.y = y; }
type Size (line 199) | [StructLayout(LayoutKind.Sequential)]
method Size (line 205) | public Size(Int32 cx, Int32 cy) { this.cx = cx; this.cy = cy; }
type BLENDFUNCTION (line 208) | [StructLayout(LayoutKind.Sequential, Pack = 1)]
method UpdateLayeredWindow (line 224) | [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
method GetDC (line 227) | [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
method ReleaseDC (line 230) | [DllImport("user32.dll", ExactSpelling = true)]
method CreateCompatibleDC (line 233) | [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
method DeleteDC (line 236) | [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
method SelectObject (line 239) | [DllImport("gdi32.dll", ExactSpelling = true)]
method DeleteObject (line 242) | [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
FILE: WzComparerR2.Common/Controls/AnimationClipOptions.cs
class AnimationClipOptions (line 9) | public class AnimationClipOptions
FILE: WzComparerR2.Common/Controls/AnimationControl.Designer.cs
class AnimationControl (line 3) | partial class AnimationControl
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Common/Controls/AnimationControl.cs
class AnimationControl (line 15) | public partial class AnimationControl : GraphicsDeviceControl
method AnimationControl (line 17) | public AnimationControl()
method Initialize (line 80) | protected override void Initialize()
method Update (line 86) | protected virtual void Update(TimeSpan elapsed)
method DrawBackground (line 97) | public virtual void DrawBackground()
method Draw (line 102) | protected override void Draw()
method GetItemAt (line 136) | public virtual AnimationItem GetItemAt(int x, int y)
method OnItemDragSave (line 156) | protected virtual void OnItemDragSave(AnimationItemEventArgs e)
method AnimationControl_MouseDown (line 162) | private void AnimationControl_MouseDown(object sender, MouseEventArgs e)
method AnimationControl_MouseUp (line 183) | private void AnimationControl_MouseUp(object sender, MouseEventArgs e)
method AnimationControl_MouseMove (line 191) | private void AnimationControl_MouseMove(object sender, MouseEventArgs e)
method AnimationControl_MouseWheel (line 217) | private void AnimationControl_MouseWheel(object sender, MouseEventArgs e)
method Timer_Tick (line 233) | private void Timer_Tick(object sender, EventArgs e)
type MouseDragContext (line 247) | private struct MouseDragContext
FILE: WzComparerR2.Common/Controls/AnimationItem.cs
class AnimationItem (line 9) | public abstract class AnimationItem : ICloneable
method Update (line 18) | public abstract void Update(TimeSpan elapsed);
method Measure (line 20) | public virtual Rectangle Measure()
method Reset (line 25) | public virtual void Reset()
method Clone (line 30) | public virtual object Clone()
FILE: WzComparerR2.Common/Controls/AnimationItemEventArgs.cs
class AnimationItemEventArgs (line 8) | public class AnimationItemEventArgs
method AnimationItemEventArgs (line 10) | public AnimationItemEventArgs(AnimationItem item)
FILE: WzComparerR2.Common/Controls/AnimationRecoder.cs
class AnimationRecoder (line 12) | public class AnimationRecoder
method AnimationRecoder (line 14) | public AnimationRecoder(GraphicsDevice graphicsDevice)
method Begin (line 50) | public void Begin(Rectangle viewport, Point? targetSize = null)
method Update (line 64) | public void Update(TimeSpan elapsed)
method Draw (line 72) | public void Draw()
method DrawAnimation (line 87) | private void DrawAnimation()
method GetPngTexture (line 124) | public Texture2D GetPngTexture()
method GetGifTexture (line 146) | public Texture2D GetGifTexture(Color mixColor, int minMixedAlpha)
method ResetAll (line 172) | public void ResetAll()
method GetMaxLength (line 180) | public int GetMaxLength()
method GetGifTimeLine (line 185) | public int[] GetGifTimeLine(int preferredFrameDelay, int? maxFrameDela...
method End (line 267) | public void End()
FILE: WzComparerR2.Common/Controls/FrmProgressDialog.Designer.cs
class FrmProgressDialog (line 4) | partial class FrmProgressDialog
method Dispose (line 15) | protected override void Dispose(bool disposing)
method InitializeComponent (line 30) | private void InitializeComponent()
FILE: WzComparerR2.Common/Controls/FrmProgressDialog.cs
class FrmProgressDialog (line 12) | public partial class FrmProgressDialog : DevComponents.DotNetBar.Office2...
method FrmProgressDialog (line 14) | public FrmProgressDialog()
method labelX1_MouseClick (line 45) | private void labelX1_MouseClick(object sender, MouseEventArgs e)
FILE: WzComparerR2.Common/Controls/GraphicsDeviceControl.cs
class GraphicsDeviceControl (line 31) | abstract public class GraphicsDeviceControl : Control
method OnCreateControl (line 76) | protected override void OnCreateControl()
method Dispose (line 100) | protected override void Dispose(bool disposing)
method SwapChainRT_Disposing (line 117) | private void SwapChainRT_Disposing(object sender, EventArgs e)
method OnPaint (line 138) | protected override void OnPaint(PaintEventArgs e)
method BeginDraw (line 175) | string BeginDraw()
method EndDraw (line 222) | void EndDraw()
method HandleDeviceReset (line 248) | string HandleDeviceReset()
method PaintUsingSystemDrawing (line 301) | protected virtual void PaintUsingSystemDrawing(Graphics graphics, stri...
method OnPaintBackground (line 324) | protected override void OnPaintBackground(PaintEventArgs pevent)
method Initialize (line 337) | protected abstract void Initialize();
method Draw (line 343) | protected abstract void Draw();
FILE: WzComparerR2.Common/Controls/GraphicsDeviceService.cs
class GraphicsDeviceService (line 32) | class GraphicsDeviceService : IGraphicsDeviceService
method GraphicsDeviceService (line 52) | GraphicsDeviceService(IntPtr windowHandle, int width, int height)
method AddRef (line 73) | public static GraphicsDeviceService AddRef(IntPtr windowHandle,
method Release (line 91) | public void Release(bool disposing)
method ResetDevice (line 116) | public void ResetDevice(int width, int height)
FILE: WzComparerR2.Common/Controls/ProgressDialog.cs
class ProgressDialog (line 11) | public static class ProgressDialog
method Show (line 13) | public static DialogResult Show(IWin32Window owner, string text, strin...
FILE: WzComparerR2.Common/Controls/ProgressDialogContext.cs
type IProgressDialogContext (line 11) | public interface IProgressDialogContext
class ProgressDialogContext (line 20) | internal class ProgressDialogContext : IProgressDialogContext
method ProgressDialogContext (line 22) | internal ProgressDialogContext(
method ShowDialog (line 82) | internal DialogResult ShowDialog(IWin32Window owner)
method Dialog_Load (line 91) | private async void Dialog_Load(object sender, EventArgs e)
method Dialog_FormClosing (line 116) | private void Dialog_FormClosing(object sender, FormClosingEventArgs e)
method OnCancel (line 121) | private void OnCancel()
FILE: WzComparerR2.Common/Controls/ServiceContainer.cs
class ServiceContainer (line 22) | public class ServiceContainer : IServiceProvider
method AddService (line 30) | public void AddService<T>(T service)
method GetService (line 39) | public object GetService(Type serviceType)
FILE: WzComparerR2.Common/Encoders/BuildInApngEncoder.cs
class BuildInApngEncoder (line 10) | public class BuildInApngEncoder : GifEncoder
method BuildInApngEncoder (line 12) | public BuildInApngEncoder()
method Init (line 31) | public override void Init(string fileName, int width, int height)
method AppendFrame (line 42) | public override void AppendFrame(IntPtr pBuffer, int delay)
method Dispose (line 51) | protected override void Dispose(bool disposing)
type ApngError (line 65) | enum ApngError : int
method apng_init (line 74) | [DllImport("libapng.dll")]
method apng_append_frame (line 76) | [DllImport("libapng.dll")]
method apng_write_end (line 78) | [DllImport("libapng.dll")]
method apng_destroy (line 80) | [DllImport("libapng.dll")]
FILE: WzComparerR2.Common/Encoders/BuildInGifEncoder.cs
class BuildInGifEncoder (line 12) | public class BuildInGifEncoder : GifEncoder
method BuildInGifEncoder (line 14) | public BuildInGifEncoder()
method Init (line 42) | public override void Init(string fileName, int width, int height)
method AppendFrame (line 50) | public override void AppendFrame(Bitmap image, int delay)
method AppendFrame (line 78) | public override void AppendFrame(IntPtr pBuffer, int delay)
method WriteHeader (line 86) | private void WriteHeader()
method Dispose (line 97) | protected override void Dispose(bool disposing)
FILE: WzComparerR2.Common/Encoders/FFmpegEncoder.cs
class FFmpegEncoder (line 15) | public class FFmpegEncoder : GifEncoder
method FFmpegEncoder (line 25) | public FFmpegEncoder()
method AppendFrame (line 51) | public unsafe override void AppendFrame(IntPtr pBuffer, int delay)
method StartFFmpeg (line 63) | private async Task StartFFmpeg(int delay)
method FFmpegProc_OutputDataReceived (line 101) | private void FFmpegProc_OutputDataReceived(object sender, DataReceived...
method FFmpegProc_ErrorDataReceived (line 106) | private void FFmpegProc_ErrorDataReceived(object sender, DataReceivedE...
method FFmpegProc_Exited (line 111) | private void FFmpegProc_Exited(object sender, EventArgs e)
method Dispose (line 116) | protected override void Dispose(bool disposing)
method SubstituteParams (line 152) | private string SubstituteParams(string format, string inputFileName, i...
FILE: WzComparerR2.Common/Encoders/GifEncoder.cs
class GifEncoder (line 10) | public abstract class GifEncoder : IDisposable
method GifEncoder (line 12) | protected GifEncoder()
method Init (line 29) | public virtual void Init(string fileName, int width, int height)
method AppendFrame (line 36) | public virtual void AppendFrame(Bitmap image, int delay)
method AppendFrame (line 43) | public abstract void AppendFrame(IntPtr pBuffer, int delay);
method Dispose (line 45) | public void Dispose()
method Dispose (line 51) | protected virtual void Dispose(bool disposing)
FILE: WzComparerR2.Common/Encoders/GifEncoderCompatibility.cs
class GifEncoderCompatibility (line 9) | public class GifEncoderCompatibility
method GifEncoderCompatibility (line 11) | public GifEncoderCompatibility()
type AlphaSupportMode (line 24) | public enum AlphaSupportMode
FILE: WzComparerR2.Common/Encoders/IndexGifEncoder.cs
class IndexGifEncoder (line 8) | public class IndexGifEncoder : GifEncoder
method IndexGifEncoder (line 10) | public IndexGifEncoder()
method Init (line 27) | public override void Init(string fileName, int width, int height)
method AppendFrame (line 34) | public override void AppendFrame(IntPtr pBuffer, int delay)
method Dispose (line 39) | protected override void Dispose(bool disposing)
method construct (line 59) | [DllImport("libgif.dll", EntryPoint = "#1", CharSet = CharSet.Unicode)]
type gif_encoder_structure (line 65) | [StructLayout(LayoutKind.Sequential)]
FILE: WzComparerR2.Common/Gif.cs
class Gif (line 11) | public class Gif
method Gif (line 13) | public Gif()
method EncodeGif (line 20) | public Bitmap EncodeGif(Color backgrnd)
method EncodeGif (line 25) | public Bitmap EncodeGif(Color backgrnd, int minAlpha)
method EncodeGif (line 30) | public Bitmap EncodeGif(Color backgrnd, int minAlpha, int startIndex, ...
method EncodeGif2 (line 40) | public Bitmap EncodeGif2(Color backgrnd, int minAlpha)
method EncodeGif2 (line 45) | public Bitmap EncodeGif2(Color backgrnd, int minAlpha, int startIndex,...
method EncodeGif (line 55) | private Bitmap EncodeGif<T>(Color backgrnd, int minAlpha, int startInd...
method GetRect (line 83) | public Rectangle GetRect()
method GetFrame (line 94) | public Bitmap GetFrame(int i)
method GetFrame (line 101) | private Bitmap GetFrame(int i, Rectangle canvasRect)
method PrepareFrame (line 111) | private static Bitmap PrepareFrame(IGifFrame frame, Rectangle canvasRe...
method PrepareFrame (line 121) | private static void PrepareFrame(Bitmap canvas, IGifFrame frame, Recta...
method CreateFromNode (line 169) | public static Gif CreateFromNode(Wz_Node node, GlobalFindNodeFunction ...
method CreateFrameFromNode (line 192) | public static GifFrame CreateFrameFromNode(Wz_Node frameNode, GlobalFi...
FILE: WzComparerR2.Common/GifCanvas.cs
class GifCanvas (line 8) | public class GifCanvas
method GifCanvas (line 10) | public GifCanvas()
method Combine (line 20) | public Gif Combine()
method SplitGifFrame (line 102) | private static void SplitGifFrame(GifFrame frame, int time, out GifFra...
class KeyFrame (line 110) | private class KeyFrame : IGifFrame
method KeyFrame (line 112) | public KeyFrame()
method Split (line 128) | public void Split(int time, out KeyFrame keyFrame1, out KeyFrame key...
method Draw (line 163) | void IGifFrame.Draw(Graphics g, Rectangle canvasRect)
FILE: WzComparerR2.Common/GifFrame.cs
class GifFrame (line 9) | public class GifFrame : IGifFrame
method GifFrame (line 11) | public GifFrame()
method GifFrame (line 17) | public GifFrame(Bitmap bitmap)
method GifFrame (line 22) | public GifFrame(Bitmap bitmap, int delay)
method GifFrame (line 27) | public GifFrame(Bitmap bitmap, Point origin, int delay)
method Draw (line 55) | void IGifFrame.Draw(Graphics g, Rectangle canvasRect)
FILE: WzComparerR2.Common/GifLayer.cs
class GifLayer (line 7) | public class GifLayer
method GifLayer (line 9) | public GifLayer()
method AddFrame (line 16) | public void AddFrame(GifFrame frame)
method AddBlank (line 21) | public void AddBlank(int delay)
FILE: WzComparerR2.Common/IGifFrame.cs
type IGifFrame (line 8) | public interface IGifFrame
method Draw (line 12) | void Draw(Graphics g, Rectangle canvasRect);
FILE: WzComparerR2.Common/ImageDataObject.cs
class ImageDataObject (line 10) | public class ImageDataObject : DataObject
method ImageDataObject (line 12) | public ImageDataObject(Image image, string fileName)
method GetData (line 29) | public override object GetData(string format, bool autoConvert)
method PrepareImageFile (line 60) | private void PrepareImageFile()
method GetQQRichFormatString (line 99) | private string GetQQRichFormatString()
FILE: WzComparerR2.Common/Rendering/AnimationGraphics.cs
class AnimationGraphics (line 12) | public class AnimationGraphics
method AnimationGraphics (line 14) | public AnimationGraphics(GraphicsDevice graphicsDevice)
method AnimationGraphics (line 19) | public AnimationGraphics(GraphicsDevice graphicsDevice, SpriteBatch sp...
method Draw (line 33) | public void Draw(FrameAnimator animator, Matrix world)
method Draw (line 57) | public void Draw(ISpineAnimator animator, Matrix world)
FILE: WzComparerR2.Common/Rendering/BlendEx.cs
class StateEx (line 6) | public static class StateEx
method NonPremultipled_Hidef (line 8) | public static BlendState NonPremultipled_Hidef() => new BlendState()
method SrcAlphaMask (line 18) | public static BlendState SrcAlphaMask() => new BlendState()
method MultiplyRGB (line 28) | public static BlendState MultiplyRGB() => new BlendState()
method Scissor (line 38) | public static RasterizerState Scissor() => new RasterizerState()
FILE: WzComparerR2.Common/Rendering/D2DContext.cs
class D2DContext (line 11) | public sealed class D2DContext : IDisposable
method GetBrush (line 20) | public Brush GetBrush(Microsoft.Xna.Framework.Color color)
method GetBrush (line 25) | public Brush GetBrush(SharpDX.Color4 color)
method Dispose (line 38) | public void Dispose()
FILE: WzComparerR2.Common/Rendering/D2DFactory.cs
class D2DFactory (line 13) | public class D2DFactory : IDisposable
method D2DFactory (line 29) | private D2DFactory()
method GetContext (line 48) | public D2DContext GetContext(GraphicsDevice graphicsDevice)
method ReleaseContext (line 91) | public void ReleaseContext(GraphicsDevice graphicsDevice)
method GetRenderTargetResource (line 101) | private SharpDX.ComObject GetRenderTargetResource(GraphicsDevice graph...
method GetOrCreateContext (line 118) | private D2DContext GetOrCreateContext(SharpDX.ComObject comObject)
method ComObject_Disposing (line 141) | private void ComObject_Disposing(object sender, EventArgs e)
method Dispose (line 157) | public void Dispose()
method Dispose (line 163) | protected virtual void Dispose(bool disposing)
FILE: WzComparerR2.Common/Rendering/D2DFont.cs
class D2DFont (line 13) | public class D2DFont : IDisposable
method D2DFont (line 15) | public D2DFont(string familyName, float size)
method D2DFont (line 21) | public D2DFont(string familyName, float size, bool bold, bool italic)
method D2DFont (line 35) | public D2DFont(System.Drawing.Font font) :
method GetMatchingFont (line 91) | private Font GetMatchingFont()
method CacheFontMetrics (line 108) | private bool CacheFontMetrics()
method DrawText (line 122) | internal void DrawText(D2DContext context, string text, Vector2 positi...
method DrawText (line 127) | internal void DrawText(D2DContext context, string text, Vector2 positi...
method MeasureString (line 140) | public Vector2 MeasureString(string text)
method MeasureString (line 145) | public Vector2 MeasureString(string text, Vector2 size)
method LayoutString (line 164) | private TextLayout LayoutString(string text, float maxWidth, float max...
method Dispose (line 182) | public void Dispose()
method Dispose (line 188) | protected virtual void Dispose(bool disposing)
FILE: WzComparerR2.Common/Rendering/D2DRenderer.cs
class D2DRenderer (line 10) | public class D2DRenderer
method D2DRenderer (line 12) | public D2DRenderer(GraphicsDevice graphicsDevice)
method Begin (line 23) | public void Begin()
method Begin (line 28) | public void Begin(Microsoft.Xna.Framework.Matrix transform)
method Begin (line 36) | private void Begin(SharpDX.Matrix3x2 transform)
method PushClip (line 48) | public void PushClip(Rectangle clipRect)
method PopClip (line 53) | public void PopClip()
method DrawString (line 58) | public void DrawString(D2DFont font, string text, Vector2 position, Co...
method DrawString (line 63) | public void DrawString(D2DFont font, string text, Vector2 position, Ve...
method DrawLine (line 68) | public void DrawLine(Vector2 point0, Vector2 point1, float width, Colo...
method DrawRectangle (line 77) | public void DrawRectangle(Rectangle rectangle, Color color)
method FillRectangle (line 83) | public void FillRectangle(Rectangle rectangle, Color color)
method FillRoundedRectangle (line 89) | public void FillRoundedRectangle(Rectangle rectangle, float cornerRadi...
method End (line 101) | public void End()
FILE: WzComparerR2.Common/Rendering/DxExtension.cs
class DxExtension (line 9) | public static class DxExtension
method DxToXnaColor (line 11) | public static Color DxToXnaColor(this SharpDX.Color color)
method XnaToDxColor (line 16) | public static SharpDX.Color XnaToDxColor(this Color color)
method XnaToDxRect (line 21) | public static SharpDX.RectangleF XnaToDxRect(this Rectangle rect)
FILE: WzComparerR2.Common/Rendering/EffectCompiler/ConstantBuffer.cs
class ConstantBuffer (line 10) | public class ConstantBuffer
class ShaderParameter (line 18) | public class ShaderParameter
method ShaderParameter (line 20) | public ShaderParameter()
method ShaderParameter (line 24) | public ShaderParameter(string name, string semantic, int bufferOffset,...
FILE: WzComparerR2.Common/Rendering/EffectCompiler/Internal/ConstantBufferData.cs
class ConstantBufferData (line 9) | public class ConstantBufferData
method Write (line 21) | public void Write(BinaryWriter writer)
FILE: WzComparerR2.Common/Rendering/EffectCompiler/Internal/D3DXObjects.cs
class d3dx_parameter (line 9) | public class d3dx_parameter
method ToString (line 30) | public override string ToString()
class d3dx_state (line 39) | public class d3dx_state
class d3dx_sampler (line 47) | public class d3dx_sampler
type STATE_TYPE (line 53) | public enum STATE_TYPE
type STATE_CLASS (line 61) | public enum STATE_CLASS
class d3dx_pass (line 80) | public class d3dx_pass
class d3dx_technique (line 94) | public class d3dx_technique
FILE: WzComparerR2.Common/Rendering/EffectCompiler/Internal/EffectObject.cs
class EffectObject (line 11) | public class EffectObject
method EffectObject (line 13) | static EffectObject()
method Write (line 38) | public void Write(BinaryWriter writer)
method WriteParameters (line 157) | private static void WriteParameters(BinaryWriter writer, d3dx_paramete...
method WriteParameter (line 165) | private static void WriteParameter(BinaryWriter writer, d3dx_parameter...
method WriteAnnotations (line 194) | private static void WriteAnnotations(BinaryWriter writer, d3dx_paramet...
method GetShaderIndex (line 204) | internal static int GetShaderIndex(STATE_CLASS type, d3dx_state[] states)
class EffectWriterExtensions (line 222) | internal static class EffectWriterExtensions
method MgfxWriteElementCount (line 224) | public static void MgfxWriteElementCount(this BinaryWriter writer, int...
method Write7BitEncodedInt (line 238) | public static void Write7BitEncodedInt(this BinaryWriter writer, int v...
FILE: WzComparerR2.Common/Rendering/EffectCompiler/Internal/ShaderData.cs
class ShaderData (line 10) | public class ShaderData
type Sampler (line 22) | public struct Sampler
type Attribute (line 33) | public struct Attribute
method Write (line 41) | public void Write(BinaryWriter writer)
FILE: WzComparerR2.Common/Rendering/EffectCompiler/SampleInfo.cs
class SamplerInfo (line 6) | public class SamplerInfo
type SamplerType (line 16) | public enum SamplerType
FILE: WzComparerR2.Common/Rendering/EffectCompiler/ShaderConverter.cs
class ShaderConverter (line 10) | public static class ShaderConverter
method D3DShaderByteCodeToMgfx (line 12) | public static byte[] D3DShaderByteCodeToMgfx(ReadOnlySpan<byte> shader...
method ConvertConstantBuffer (line 159) | private static ConstantBufferData ConvertConstantBuffer(ConstantBuffer...
method ConvertShaderParameter (line 180) | private static d3dx_parameter ConvertShaderParameter(ShaderParameter p...
method ConvertSampler (line 223) | private static ShaderData.Sampler ConvertSampler(SamplerInfo samplerInfo)
method CreateTextureParamater (line 238) | private static d3dx_parameter CreateTextureParamater(ShaderData.Sample...
FILE: WzComparerR2.Common/Rendering/EffectCompiler/ShaderStage.cs
type ShaderStage (line 3) | public enum ShaderStage
FILE: WzComparerR2.Common/Rendering/MonogameUtils.cs
class MonogameUtils (line 12) | public static class MonogameUtils
method ToXnaColor (line 14) | public static Color ToXnaColor(this GdipColor color)
method ToXnaColor (line 19) | public static Color ToXnaColor(int argbPackedValue)
method GetXnaColor (line 25) | public static Color GetXnaColor(this Wz_Node node)
method CreateMosaic (line 31) | public static Texture2D CreateMosaic(GraphicsDevice device, Color c0, ...
method ToTexture (line 52) | public static Texture2D ToTexture(this System.Drawing.Bitmap bitmap, G...
method ToTexture (line 59) | public static void ToTexture(this System.Drawing.Bitmap bitmap, Textur...
method _d3dDevice (line 71) | public static Device _d3dDevice(this GraphicsDevice device)
method _d3dContext (line 76) | public static DeviceContext _d3dContext(this GraphicsDevice device)
method _swapChain (line 82) | public static SharpDX.DXGI.SwapChain _swapChain(this GraphicsDevice de...
method GetTexture (line 88) | public static Resource GetTexture(this Texture texture)
method CopyBackBuffer (line 94) | public static void CopyBackBuffer(this GraphicsDevice graphicsDevice, ...
method IsSupportFormat (line 112) | public static bool IsSupportFormat(this GraphicsDevice device, SharpDX...
method IsSupportBgra4444 (line 119) | public static bool IsSupportBgra4444(this GraphicsDevice device)
method IsSupportBgr565 (line 124) | public static bool IsSupportBgr565(this GraphicsDevice device)
method IsSupportBgra5551 (line 129) | public static bool IsSupportBgra5551(this GraphicsDevice device)
FILE: WzComparerR2.Common/Rendering/PngEffect.cs
class PngEffect (line 11) | public class PngEffect : Effect
method PngEffect (line 13) | public PngEffect(GraphicsDevice graphicDevice)
method GetEffectCode (line 45) | private static byte[] GetEffectCode()
FILE: WzComparerR2.Common/Rendering/SpriteBatchEx.cs
class SpriteBatchEx (line 17) | public class SpriteBatchEx : SpriteBatch
method SpriteBatchEx (line 19) | public SpriteBatchEx(GraphicsDevice graphicsDevice)
method CreateSinglePixel (line 27) | private Texture2D CreateSinglePixel()
method DrawStringEx (line 34) | public void DrawStringEx(XnaFont xnaFont, string text, Vector2 locatio...
method DrawStringEx (line 39) | public void DrawStringEx(XnaFont xnaFont, string text, Vector2 locatio...
method DrawStringEx (line 44) | private void DrawStringEx(XnaFont xnaFont, string text, int startIndex...
method DrawStringEx (line 50) | public void DrawStringEx(XnaFont xnaFont, StringBuilder stringBuilder,...
method DrawStringEx (line 55) | public void DrawStringEx(XnaFont xnaFont, StringBuilder stringBuilder,...
method DrawStringEx (line 60) | public void DrawStringEx(XnaFont xnaFont, StringBuilder stringBuilder,...
method DrawStringEx (line 65) | public void DrawStringEx(XnaFont xnaFont, StringBuilder stringBuilder,...
method DrawStringEx (line 71) | private void DrawStringEx(XnaFont font, IEnumerable<char> text, Vector...
method DrawPath (line 108) | public void DrawPath(Point[] path, Color color)
method FillRectangle (line 155) | public void FillRectangle(Rectangle rectangle, Color color)
method FillRectangle (line 160) | public void FillRectangle(Rectangle rectangle, Color color, Vector2 or...
method FillRoundedRectangle (line 167) | public void FillRoundedRectangle(Rectangle rectangle, Color color)
method DrawRectangle (line 181) | public void DrawRectangle(Rectangle rectangle, Color color)
method DrawLine (line 195) | public void DrawLine(Point point1, Point point2, int width, Color color)
method Flush (line 207) | public void Flush()
method Dispose (line 214) | protected override void Dispose(bool disposing)
FILE: WzComparerR2.Common/Rendering/SurfaceFormatEx.cs
class SurfaceFormatEx (line 6) | public static class SurfaceFormatEx
FILE: WzComparerR2.Common/Rendering/TextUtils.cs
class TextUtils (line 8) | internal static class TextUtils
method CreateCharEnumerator (line 10) | public static IEnumerable<char> CreateCharEnumerator(string text, int ...
method CreateCharEnumerator (line 18) | public static IEnumerable<char> CreateCharEnumerator(StringBuilder str...
FILE: WzComparerR2.Common/Rendering/Texture2DEx.cs
class Texture2DEx (line 10) | public static class Texture2DEx
method CreateEx (line 12) | public static Texture2D CreateEx(GraphicsDevice graphicsDevice, int wi...
method SetDataEx (line 25) | public static unsafe void SetDataEx(this Texture2D texture, ReadOnlySp...
method TextureInitialize (line 40) | private static void TextureInitialize(Texture2D texture2D, SharpDX.DXG...
method TextureSetData (line 67) | private static unsafe void TextureSetData(Texture2D texture2D, Rectang...
FILE: WzComparerR2.Common/Rendering/WzLibExtension.cs
class WzLibExtension (line 10) | public static class WzLibExtension
method ToTexture (line 12) | public static Texture2D ToTexture(this Wz_Png png, GraphicsDevice grap...
method ToTexture (line 17) | public static Texture2D ToTexture(this Wz_Png png, int page, GraphicsD...
method ToTexture (line 55) | public static void ToTexture(this Wz_Png png, int page, Texture2D text...
method GetTextureFormatOfPng (line 129) | public static SurfaceFormat GetTextureFormatOfPng(Wz_TextureFormat tex...
method ToPoint (line 150) | public static Point ToPoint(this Wz_Vector vector)
FILE: WzComparerR2.Common/Rendering/XnaFont.cs
class XnaFont (line 16) | public class XnaFont : IDisposable
method XnaFont (line 18) | public XnaFont(GraphicsDevice graphicsDevice, FontFamily fontFamily, f...
method XnaFont (line 23) | public XnaFont(GraphicsDevice graphicsDevice, string familyName, float...
method XnaFont (line 28) | public XnaFont(GraphicsDevice graphicsDevice, Font baseFont)
method MeasureString (line 63) | public Vector2 MeasureString(string text)
method MeasureString (line 68) | public Vector2 MeasureString(StringBuilder stringBuilder)
method MeasureString (line 73) | public Vector2 MeasureString(string text, Vector2 size)
method MeasureString (line 79) | public Vector2 MeasureString(StringBuilder stringBuilder, Vector2 size)
method MeasureString (line 85) | public Vector2 MeasureString(string text, int startIndex, int length)
method MeasureString (line 90) | public Vector2 MeasureString(StringBuilder stringBuilder, int startInd...
method MeasureString (line 95) | public Vector2 MeasureString(IEnumerable<char> text, Vector2 layoutSize)
method TryGetRect (line 141) | public Rectangle TryGetRect(char c)
method CreateCharBuffer (line 152) | private Rectangle CreateCharBuffer(char c)
method RebuildGdiBuffer (line 212) | private void RebuildGdiBuffer(int height)
method ClearTextureBuffer (line 227) | private void ClearTextureBuffer()
method Dispose (line 239) | public void Dispose()
method Dispose (line 245) | protected virtual void Dispose(bool disposing)
method GdiLoadFontFile (line 256) | public static FontFamily GdiLoadFontFile(string fontFileName)
FILE: WzComparerR2.Common/Rendering/XnaFontRenderer.cs
class XnaFontRenderer (line 10) | public class XnaFontRenderer : TextRenderer<XnaFont>
method XnaFontRenderer (line 12) | public XnaFontRenderer(SpriteBatchEx spriteBatch)
method MeasureRuns (line 20) | protected override void MeasureRuns(List<Run> runs)
method MeasureChars (line 40) | protected override Rectangle[] MeasureChars(int startIndex, int length)
method Flush (line 53) | protected override void Flush(StringBuilder sb, int startIndex, int le...
method GetColor (line 60) | public virtual Microsoft.Xna.Framework.Color GetColor(string colorID)
FILE: WzComparerR2.Common/SpineLoader.cs
class SpineLoader (line 8) | public static class SpineLoader
method Detect (line 15) | public static SpineDetectionResult Detect(Wz_Node wzNode)
method ReadSpineVersionFromJson (line 141) | private static string ReadSpineVersionFromJson(string jsonText)
method ReadSpineVersionFromBinary (line 157) | private static string ReadSpineVersionFromBinary(Stream stream, uint o...
method LoadSkeletonV2 (line 191) | public static Spine.V2.SkeletonData LoadSkeletonV2(Wz_Node wzNode, Spi...
method LoadSkeletonV2 (line 201) | public static Spine.V2.SkeletonData LoadSkeletonV2(SpineDetectionResul...
method LoadSkeletonV4 (line 227) | public static Spine.SkeletonData LoadSkeletonV4(Wz_Node atlasOrSkelNod...
method LoadSkeletonV4 (line 237) | public static Spine.SkeletonData LoadSkeletonV4(SpineDetectionResult d...
type SkeletonLoadType (line 264) | public enum SkeletonLoadType
type SpineVersion (line 271) | public enum SpineVersion
class SpineDetectionResult (line 278) | public sealed class SpineDetectionResult
method SpineDetectionResult (line 280) | internal SpineDetectionResult()
method Failed (line 292) | public static SpineDetectionResult Failed(string error = null) => new ...
method Create (line 298) | public static SpineDetectionResult Create(Wz_Node sourceNode, Wz_Node ...
FILE: WzComparerR2.Common/StringLinker.cs
class StringLinker (line 8) | public class StringLinker
method StringLinker (line 10) | public StringLinker()
method Load (line 22) | public bool Load(Wz_File stringWz)
method Clear (line 229) | public void Clear()
method GetDefaultString (line 259) | private string GetDefaultString(Wz_Node node, string searchNodeText)
method AddAllValue (line 265) | private void AddAllValue(StringResult sr, Wz_Node node)
FILE: WzComparerR2.Common/StringResult.cs
class StringResult (line 7) | public class StringResult
method StringResult (line 9) | public StringResult()
class StringResultSkill (line 61) | public sealed class StringResultSkill : StringResult
method StringResultSkill (line 64) | public StringResultSkill()
FILE: WzComparerR2.Common/Text/DocumentElements.cs
class DocElement (line 9) | public abstract class DocElement
class Span (line 13) | public sealed class Span : DocElement
class LineBreak (line 19) | public sealed class LineBreak : DocElement
method LineBreak (line 21) | private LineBreak() { }
FILE: WzComparerR2.Common/Text/Parser.cs
class Parser (line 8) | public class Parser
method Parser (line 10) | private Parser()
method Parse (line 14) | public static IList<DocElement> Parse(string format)
FILE: WzComparerR2.Common/Text/TextAlignment.cs
type TextAlignment (line 9) | public enum TextAlignment
FILE: WzComparerR2.Common/Text/TextRenderer.cs
class TextRenderer (line 9) | public abstract class TextRenderer<TFont>
method TextRenderer (line 11) | public TextRenderer()
method DrawFormatString (line 20) | public void DrawFormatString(string s, TFont font, int width, ref int ...
method DrawPlainText (line 32) | public void DrawPlainText(string s, TFont font, int width, ref int y, ...
method DrawRunsInner (line 40) | private void DrawRunsInner(List<Run> runs, int width, ref int y, int h...
method PrepareRuns (line 48) | private List<Run> PrepareRuns(IList<DocElement> doc)
method PrepareRuns (line 68) | private List<Run> PrepareRuns(string text)
method SplitWords (line 88) | private List<Run> SplitWords(Run run)
method GetFontLineHeight (line 158) | private float GetFontLineHeight(Font font)
method MeasureRuns (line 164) | protected abstract void MeasureRuns(List<Run> runs);
method MeasureChars (line 166) | protected abstract Rectangle[] MeasureChars(int startIndex, int length);
method Flush (line 168) | protected abstract void Flush(StringBuilder sb, int startIndex, int le...
method LayoutRuns (line 170) | private List<PositionedText> LayoutRuns(List<Run> runs, int width, ref...
method FlushAll (line 326) | private void FlushAll(List<PositionedText> texts)
class PositionedText (line 334) | private class PositionedText
class Run (line 344) | public class Run
method Run (line 346) | public Run(int startIndex, int length)
FILE: WzComparerR2.Common/VpxVideoDecoder.cs
class VpxVideoDecoder (line 22) | public class VpxVideoDecoder : IDisposable
method VpxVideoDecoder (line 27) | public VpxVideoDecoder(ReadOnlySpan<byte> fourCC)
method VpxVideoDecoder (line 32) | public VpxVideoDecoder(ReadOnlySpan<byte> fourCC, int width, int heigh...
method VpxCodecInit (line 46) | private unsafe void VpxCodecInit(ReadOnlySpan<byte> fourCC, vpx_codec_...
method DecodeData (line 86) | public unsafe void DecodeData(ReadOnlySpan<byte> data)
method GetNextFrame (line 101) | public unsafe bool GetNextFrame(out VpxFrame frame)
method Dispose (line 124) | public void Dispose()
method Dispose (line 135) | protected virtual unsafe void Dispose(bool disposing)
method ThrowOnObjectDisposed (line 159) | private void ThrowOnObjectDisposed()
method ThrowOnNonSuccessfulError (line 167) | private void ThrowOnNonSuccessfulError(vpx_codec_err_t err, string met...
class Interop (line 177) | public static class Interop
method vpx_codec_dec_init_ver (line 181) | [DllImport(libVpx)]
method vpx_codec_vp8_dx (line 183) | [DllImport(libVpx)]
method vpx_codec_vp9_dx (line 185) | [DllImport(libVpx)]
method vpx_codec_decode (line 187) | [DllImport(libVpx)]
method vpx_codec_get_frame (line 189) | [DllImport(libVpx)]
method vpx_codec_destroy (line 191) | [DllImport(libVpx)]
type vpx_codec_err (line 198) | public enum vpx_codec_err
type vpx_codec_dec_cfg (line 212) | public struct vpx_codec_dec_cfg
type vpx_codec_ctx (line 219) | public unsafe struct vpx_codec_ctx
type vpx_img_fmt (line 230) | public enum vpx_img_fmt
type vpx_codec_flags (line 249) | public enum vpx_codec_flags
type vpx_color_space (line 257) | public enum vpx_color_space
type vpx_color_range (line 269) | public enum vpx_color_range
type vpx_image (line 281) | [StructLayout(LayoutKind.Sequential)]
type VpxFrame (line 327) | public unsafe struct VpxFrame
method VpxFrame (line 329) | internal VpxFrame(vpx_image_t* image)
FILE: WzComparerR2.Common/Wz_NodeExtension2.cs
class Wz_NodeExtension2 (line 9) | public static class Wz_NodeExtension2
method GetLinkedSourceNode (line 11) | public static Wz_Node GetLinkedSourceNode(this Wz_Node node, GlobalFin...
FILE: WzComparerR2.LuaConsole/AppSyntaxModeProvider.cs
class AppSyntaxModeProvider (line 10) | public class AppSyntaxModeProvider : ISyntaxModeFileProvider
method AppSyntaxModeProvider (line 12) | public AppSyntaxModeProvider()
method GetSyntaxModeFile (line 20) | public XmlTextReader GetSyntaxModeFile(SyntaxMode syntaxMode)
method UpdateSyntaxModeList (line 47) | public void UpdateSyntaxModeList()
FILE: WzComparerR2.LuaConsole/Config/LuaConsoleConfig.cs
class LuaConsoleConfig (line 11) | [SectionName("WcR2.LuaConsole")]
method LuaConsoleConfig (line 14) | public LuaConsoleConfig()
FILE: WzComparerR2.LuaConsole/Entry.cs
class Entry (line 10) | public class Entry : PluginEntry
method Entry (line 12) | public Entry(PluginContext context)
method OnLoad (line 20) | protected override void OnLoad()
method btnItem_Click (line 32) | void btnItem_Click(object sender, EventArgs e)
method OnUnload (line 44) | protected override void OnUnload()
FILE: WzComparerR2.LuaConsole/FrmConsole.Designer.cs
class FrmConsole (line 3) | partial class FrmConsole
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.LuaConsole/FrmConsole.cs
class FrmConsole (line 17) | public partial class FrmConsole : DevComponents.DotNetBar.Office2007Form
method FrmConsole (line 19) | public FrmConsole()
method FrmConsole_FormClosing (line 32) | private void FrmConsole_FormClosing(object sender, FormClosingEventArg...
method FrmConsole_FormClosed (line 44) | private void FrmConsole_FormClosed(object sender, FormClosedEventArgs e)
method FrmConsole_MdiChildActivate (line 68) | private void FrmConsole_MdiChildActivate(object sender, EventArgs e)
method menuReset_Click (line 72) | private void menuReset_Click(object sender, EventArgs e)
method menuNew_Click (line 96) | private void menuNew_Click(object sender, EventArgs e)
method menuRun_Click (line 101) | private async void menuRun_Click(object sender, EventArgs e)
method menuStopRun_Click (line 144) | private void menuStopRun_Click(object sender, EventArgs e)
method menuOpen_Click (line 153) | private void menuOpen_Click(object sender, EventArgs e)
method menuSave_Click (line 163) | private void menuSave_Click(object sender, EventArgs e)
method menuSaveAs_Click (line 171) | private void menuSaveAs_Click(object sender, EventArgs e)
method refreshRecentDocItems (line 179) | private void refreshRecentDocItems()
method RecentDocumentItem_Click (line 190) | private void RecentDocumentItem_Click(object sender, EventArgs e)
method menuExit_Click (line 198) | private void menuExit_Click(object sender, EventArgs e)
method SaveFile (line 203) | private bool SaveFile(FrmLuaEditor editor, bool saveAs = false)
method OpenFile (line 225) | private void OpenFile(string fileName)
method CreateNewTab (line 249) | private void CreateNewTab(string fileName = null)
method FrmLuaEditor_FileNameChanged (line 274) | private void FrmLuaEditor_FileNameChanged(object sender, EventArgs e)
method FrmLuaEditor_FormClosing (line 289) | private void FrmLuaEditor_FormClosing(object sender, FormClosingEventA...
method FrmLuaEditor_FormClosed (line 308) | private void FrmLuaEditor_FormClosed(object sender, FormClosedEventArg...
method GetOrCreateLuaVM (line 316) | private Lua GetOrCreateLuaVM(FrmLuaEditor frm)
class LuaEnvironment (line 325) | public class LuaEnvironment
method LuaEnvironment (line 327) | internal LuaEnvironment(FrmConsole form)
method Write (line 342) | public void Write(object value)
method Write (line 350) | public void Write(string format, params object[] args)
method WriteLine (line 359) | public void WriteLine()
method WriteLine (line 364) | public void WriteLine(object value)
method WriteLine (line 373) | public void WriteLine(string format, object arg0)
method WriteLine (line 378) | public void WriteLine(string format, object arg0, object arg1)
method WriteLine (line 383) | public void WriteLine(string format, object arg0, object arg1, objec...
method WriteLine (line 388) | public void WriteLine(string format, params object[] args)
method Help (line 406) | public void Help()
method AppendText (line 416) | private void AppendText(string text)
FILE: WzComparerR2.LuaConsole/FrmLuaEditor.Designer.cs
class FrmLuaEditor (line 3) | partial class FrmLuaEditor
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.LuaConsole/FrmLuaEditor.cs
class FrmLuaEditor (line 13) | public partial class FrmLuaEditor : DevComponents.DotNetBar.OfficeForm
method FrmLuaEditor (line 17) | public FrmLuaEditor()
method LoadFile (line 33) | public void LoadFile(string fileName)
method SaveFile (line 40) | public void SaveFile(string fileName)
method UpdateTitle (line 86) | private void UpdateTitle()
method textEditorControl1_TextChanged (line 91) | private void textEditorControl1_TextChanged(object sender, EventArgs e)
method textEditorControl1_FileNameChanged (line 96) | private void textEditorControl1_FileNameChanged(object sender, EventAr...
FILE: WzComparerR2.LuaConsole/LuaSandbox.cs
class LuaSandbox (line 14) | public class LuaSandbox : IDisposable
method LuaSandbox (line 16) | public LuaSandbox(object env)
method InitLuaEnv (line 25) | public void InitLuaEnv(string scriptBaseDir = null, bool forceReset = ...
method DoStringAsync (line 101) | public async Task<object[]> DoStringAsync(string chunk, CancellationTo...
method HookCancellationEvent (line 114) | private void HookCancellationEvent()
method RemoveCancellationEvent (line 124) | private void RemoveCancellationEvent()
method Lua_DebugHook (line 134) | private void Lua_DebugHook(object sender, NLua.Event.DebugHookEventArg...
method Dispose (line 139) | public void Dispose()
class LuaGlobalFindNodeFunctionHandler (line 148) | class LuaGlobalFindNodeFunctionHandler : NLua.Method.LuaDelegate
method CallFunction (line 150) | Wz_Node CallFunction(string wzPath)
FILE: WzComparerR2.LuaConsole/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: WzComparerR2.MapRender/Animation/IStateMachineAnimationData.cs
type IStateMachineAnimationData (line 9) | public interface IStateMachineAnimationData
method Update (line 14) | void Update(TimeSpan elapsedTime);
method GetMesh (line 16) | object GetMesh();
FILE: WzComparerR2.MapRender/Animation/RepeatableFrameAnimationData.cs
class RepeatableFrameAnimationData (line 8) | public class RepeatableFrameAnimationData : FrameAnimationData
method RepeatableFrameAnimationData (line 10) | public RepeatableFrameAnimationData()
method RepeatableFrameAnimationData (line 15) | public RepeatableFrameAnimationData(IEnumerable<Frame> frames)
FILE: WzComparerR2.MapRender/Animation/RepeatableFrameAnimator.cs
class RepeatableFrameAnimator (line 9) | public class RepeatableFrameAnimator : FrameAnimator
method RepeatableFrameAnimator (line 11) | public RepeatableFrameAnimator(RepeatableFrameAnimationData data)
method Update (line 23) | public override void Update(TimeSpan elapsedTime)
method Reset (line 58) | public override void Reset()
method Load (line 64) | protected override void Load()
method UpdateFrame (line 69) | protected override void UpdateFrame()
FILE: WzComparerR2.MapRender/Animation/StateMachineAnimator.cs
class StateMachineAnimator (line 10) | public class StateMachineAnimator
method StateMachineAnimator (line 12) | public StateMachineAnimator(IDictionary<string, RepeatableFrameAnimati...
method StateMachineAnimator (line 17) | public StateMachineAnimator(ISpineAnimationData data)
method StateMachineAnimator (line 22) | private StateMachineAnimator(IStateMachineAnimationData data)
method SetAnimation (line 33) | public void SetAnimation(string aniName)
method GetCurrent (line 39) | public string GetCurrent()
method Update (line 44) | public void Update(TimeSpan elapsedTime)
method OnAnimationEnd (line 49) | protected virtual void OnAnimationEnd(AnimationEndEventArgs e)
method Data_AnimationEnd (line 62) | private void Data_AnimationEnd(object sender, EventArgs e)
class AnimationEndEventArgs (line 70) | public class AnimationEndEventArgs : EventArgs
method AnimationEndEventArgs (line 72) | public AnimationEndEventArgs(string currentState)
class FrameStateMachineData (line 85) | private class FrameStateMachineData : IStateMachineAnimationData
method FrameStateMachineData (line 87) | public FrameStateMachineData(IDictionary<string, RepeatableFrameAnim...
method OnAnimationEnd (line 125) | protected virtual void OnAnimationEnd(EventArgs e)
method Update (line 130) | public void Update(TimeSpan elapsedTime)
method GetMesh (line 146) | public object GetMesh()
class SpineStateMachineData (line 155) | private class SpineStateMachineData : IStateMachineAnimationData
method GetMesh (line 188) | public object GetMesh()
method Update (line 193) | public void Update(TimeSpan deltaTime)
FILE: WzComparerR2.MapRender/Camera.cs
class Camera (line 8) | public class Camera
method Camera (line 10) | public Camera(GraphicsDeviceManager graphics)
method ChangeDisplayMode (line 103) | private void ChangeDisplayMode()
method AdjustToWorldRect (line 129) | public void AdjustToWorldRect()
method MeasureDrawingRect (line 160) | public Rectangle MeasureDrawingRect(int width, int height, Vector2 pos...
method CheckSpriteVisible (line 179) | public bool CheckSpriteVisible(RenderFrame frame, Vector2 position, bo...
method CheckSpriteVisible (line 185) | public bool CheckSpriteVisible(RenderFrame frame, Vector2 position, bo...
method CameraToWorld (line 202) | public Point CameraToWorld(Point cameraPoint)
FILE: WzComparerR2.MapRender/Config/MapRenderConfig.cs
class MapRenderConfig (line 11) | [SectionName("WcR2.MapRender")]
method MapRenderConfig (line 14) | public MapRenderConfig()
FILE: WzComparerR2.MapRender/Coroutine.cs
class CoroutineManager (line 12) | class CoroutineManager : GameComponent
method CoroutineManager (line 14) | public CoroutineManager(Game game) : base(game)
method Update (line 30) | public override void Update(GameTime gameTime)
method StartCoroutine (line 99) | public Coroutine StartCoroutine(IE ie)
method StartCoroutine (line 104) | public Coroutine StartCoroutine(Coroutine coroutine)
method Yield (line 121) | public Coroutine Yield(IE ie)
method Yield (line 126) | public Coroutine Yield(Coroutine coroutine)
method Post (line 131) | public Coroutine Post(Action action)
method Post (line 136) | public Coroutine Post<T>(Action<T> action, T arg0)
method StopCoroutine (line 141) | public void StopCoroutine(Coroutine coroutine)
class Coroutine (line 154) | class Coroutine
class YieldCoroutine (line 160) | sealed class YieldCoroutine : Coroutine
class WaitTaskCompletedCoroutine (line 164) | sealed class WaitTaskCompletedCoroutine : Coroutine
method WaitTaskCompletedCoroutine (line 166) | public WaitTaskCompletedCoroutine(Task task)
method GetEnumerator (line 173) | private IE GetEnumerator()
class InvokeActionCoroutine (line 193) | sealed class InvokeActionCoroutine : Coroutine
method InvokeActionCoroutine (line 195) | public InvokeActionCoroutine(Action action)
method GetEnumerator (line 203) | private IE GetEnumerator()
method InvokeActionCoroutine (line 212) | public InvokeActionCoroutine(Action<T> action, T arg0)
method GetEnumerator (line 222) | private IE GetEnumerator()
class InvokeActionCoroutine (line 210) | sealed class InvokeActionCoroutine<T> : Coroutine
method InvokeActionCoroutine (line 195) | public InvokeActionCoroutine(Action action)
method GetEnumerator (line 203) | private IE GetEnumerator()
method InvokeActionCoroutine (line 212) | public InvokeActionCoroutine(Action<T> action, T arg0)
method GetEnumerator (line 222) | private IE GetEnumerator()
FILE: WzComparerR2.MapRender/Effects/EffectResources.cs
class EffectResources (line 11) | public static class EffectResources
method EffectResources (line 13) | static EffectResources()
method GetNativeShaderEffectBytes (line 258) | public static ReadOnlySpan<byte> GetNativeShaderEffectBytes(string sha...
method CreateNativeShader (line 263) | public static Effect CreateNativeShader(GraphicsDevice graphicsDevice,...
method GetNativeShaderEffectBytesInternal (line 268) | private static byte[] GetNativeShaderEffectBytesInternal(string shader...
method CompileNativeShader (line 279) | private static byte[] CompileNativeShader(string shaderName)
FILE: WzComparerR2.MapRender/Effects/NativeShaderDesc.cs
class NativeShaderDesc (line 8) | public class NativeShaderDesc
FILE: WzComparerR2.MapRender/Effects/ShaderMaterials.cs
class ShaderMaterialFactory (line 9) | public static class ShaderMaterialFactory
method Create (line 11) | public static ShaderMaterial Create(MsCustomSpriteData msSprite)
method Create (line 18) | public static ShaderMaterial Create(string shaderID)
class ShaderMaterial (line 30) | public abstract class ShaderMaterial : IEquatable<ShaderMaterial>
method ShaderMaterial (line 32) | public ShaderMaterial(string shaderID)
method ApplyParameters (line 38) | public abstract void ApplyParameters(Effect effect);
method ApplySamplerStates (line 39) | public virtual void ApplySamplerStates(GraphicsDevice graphicsDevice) { }
method LoadFromMsSprite (line 40) | public virtual void LoadFromMsSprite(MsCustomSpriteData msSprite) { }
method Equals (line 41) | public virtual bool Equals(ShaderMaterial other)
method LoadBindingParameters (line 47) | protected void LoadBindingParameters(MsCustomSpriteData msCustomSprite)
method ApplyBindingParameters (line 96) | protected void ApplyBindingParameters(Effect effect)
method ApplyBindingSamplers (line 128) | protected void ApplyBindingSamplers(GraphicsDevice graphicsDevice)
class ShaderParameterBindingAttribute (line 146) | internal class ShaderParameterBindingAttribute : Attribute
method ShaderParameterBindingAttribute (line 148) | public ShaderParameterBindingAttribute(string parameterName, int textu...
type IMaplestoryEffectMatrices (line 158) | public interface IMaplestoryEffectMatrices
type IBackgroundCaptureEffect (line 165) | public interface IBackgroundCaptureEffect
class LightPixelShaderMaterial (line 170) | public class LightPixelShaderMaterial : ShaderMaterial
method LightPixelShaderMaterial (line 172) | public LightPixelShaderMaterial() : base("light")
method LoadFromMsSprite (line 200) | public override void LoadFromMsSprite(MsCustomSpriteData sprite)
method ApplyParameters (line 205) | public override void ApplyParameters(Effect effect)
method ApplySamplerStates (line 210) | public override void ApplySamplerStates(GraphicsDevice graphicsDevice)
class WaterBackPixelShaderMaterial (line 216) | public class WaterBackPixelShaderMaterial : ShaderMaterial
method WaterBackPixelShaderMaterial (line 218) | public WaterBackPixelShaderMaterial() : base("waterBack")
method LoadFromMsSprite (line 267) | public override void LoadFromMsSprite(MsCustomSpriteData sprite)
method ApplyParameters (line 272) | public override void ApplyParameters(Effect effect)
class WaterFrontPixelShaderMaterial (line 278) | public class WaterFrontPixelShaderMaterial : ShaderMaterial, IMaplestory...
method WaterFrontPixelShaderMaterial (line 280) | public WaterFrontPixelShaderMaterial() : base("waterFront")
method LoadFromMsSprite (line 351) | public override void LoadFromMsSprite(MsCustomSpriteData sprite)
method ApplyParameters (line 356) | public override void ApplyParameters(Effect effect)
method ApplySamplerStates (line 361) | public override void ApplySamplerStates(GraphicsDevice graphicsDevice)
FILE: WzComparerR2.MapRender/Entry.cs
class Entry (line 15) | public class Entry : PluginEntry
method Entry (line 17) | public Entry(PluginContext context)
method OnLoad (line 33) | protected override void OnLoad()
method btnItem_Click (line 48) | void btnItem_Click(object sender, EventArgs e)
FILE: WzComparerR2.MapRender/FpsCounter.cs
class FpsCounter (line 9) | public class FpsCounter : DrawableGameComponent
method FpsCounter (line 11) | public FpsCounter(Game game) : base(game)
method Update (line 31) | public override void Update(GameTime gameTime)
method Draw (line 63) | public override void Draw(GameTime gameTime)
FILE: WzComparerR2.MapRender/FrmMapRender.cs
class FrmMapRender (line 27) | public class FrmMapRender : Game
method FrmMapRender (line 29) | public FrmMapRender()
method chat_Connected (line 58) | void chat_Connected(object sender, EventArgs e)
method OnActivated (line 67) | protected override void OnActivated(object sender, EventArgs args)
method OnDeactivated (line 73) | protected override void OnDeactivated(object sender, EventArgs args)
method FrmMapRender (line 96) | public FrmMapRender(Wz_Image mapImg)
method Initialize (line 163) | protected override void Initialize()
method LoadContent (line 226) | protected override void LoadContent()
method windowForm_LostFocus (line 238) | void windowForm_LostFocus(object sender, EventArgs e)
method windowForm_GotFocus (line 247) | void windowForm_GotFocus(object sender, EventArgs e)
method ChangeDisplayMode (line 256) | private void ChangeDisplayMode(int i)
method OnExiting (line 277) | protected override void OnExiting(object sender, EventArgs args)
method Update (line 290) | protected override void Update(GameTime gameTime)
method UpdateInput (line 410) | private void UpdateInput(GameTime gameTime)
method OnGlobalHotKey (line 436) | private void OnGlobalHotKey(GameTime gameTime)
method UpdatePortalVisibility (line 572) | private void UpdatePortalVisibility()
method UpdateCamera (line 585) | private void UpdateCamera(GameTime gameTime)
method UpdateBgmVolume (line 638) | private void UpdateBgmVolume()
method UpdatePatch (line 653) | private void UpdatePatch(GameTime gameTime)
method PreLoadNextMap (line 701) | private bool PreLoadNextMap(int mapID)
method DisposePatch (line 712) | private void DisposePatch()
method Draw (line 721) | protected override void Draw(GameTime gameTime)
method SaveTexture (line 935) | private void SaveTexture(Color[,][] picBlocks, int mapWidth, int mapHe...
method SaveAllTexture (line 1017) | private void SaveAllTexture()
method LoadMap (line 1034) | private void LoadMap()
method RenderPatchComarison (line 1075) | private int RenderPatchComarison(RenderPatch a, RenderPatch b)
method LoadInfo (line 1086) | private void LoadInfo()
method FindMapByID (line 1170) | private Wz_Image FindMapByID(int mapID)
method LoadBgm (line 1184) | private void LoadBgm()
method LoadMinimap (line 1223) | private void LoadMinimap()
method LoadObjTile (line 1297) | private void LoadObjTile()
method LoadBack (line 1424) | private void LoadBack()
method LoadFoothold (line 1503) | private void LoadFoothold()
method LoadLadderRope (line 1551) | private void LoadLadderRope()
method LoadLife (line 1588) | private void LoadLife()
method LoadLifeInfo (line 1710) | private void LoadLifeInfo(Wz_Node infoNode, LifeInfo lifeInfo)
method LoadPortal (line 1755) | private void LoadPortal()
method LoadReactor (line 1900) | private void LoadReactor()
method LoadTooltip (line 1983) | private void LoadTooltip()
method CalcMapSize (line 1988) | private void CalcMapSize()
method LoadLifeActions (line 2047) | private Dictionary<string, RenderFrame[]> LoadLifeActions(Wz_Node life...
method LoadReactorStages (line 2066) | private List<RenderFrame[]> LoadReactorStages(Wz_Node reactorNode)
method LoadFrames (line 2081) | private RenderFrame[] LoadFrames(Wz_Node resNode, Dictionary<string, R...
method GetBackTileMode (line 2118) | private TileMode GetBackTileMode(int type)
type LoadState (line 2134) | private enum LoadState
FILE: WzComparerR2.MapRender/FrmMapRender2.SceneManager.cs
class FrmMapRender2 (line 16) | public partial class FrmMapRender2
type SceneManagerState (line 18) | enum SceneManagerState
method LoadMap (line 34) | public void LoadMap(Wz_Image mapImg)
method OnStart (line 57) | private IE OnStart()
method OnMapLoading (line 81) | private IE OnMapLoading()
method LoadMap (line 140) | private async Task<bool> LoadMap()
method FadeOut (line 191) | private async Task FadeOut(Music music, int ms)
method FadeIn (line 203) | private async Task FadeIn(Music music, int ms)
method LoadBgm (line 215) | private Music LoadBgm(MapData mapData, string multiBgmText = null)
method AfterLoadMap (line 246) | private void AfterLoadMap(MapData mapData)
method OnSceneEnter (line 446) | private IE OnSceneEnter()
method OnSceneExit (line 479) | private IE OnSceneExit()
method OnSceneRunning (line 496) | private IE OnSceneRunning()
method OnCameraMoving (line 511) | private IE OnCameraMoving(Point toPos, int ms)
method SceneUpdate (line 526) | private void SceneUpdate()
method MoveToPortal (line 556) | private void MoveToPortal(int? toMap, string pName, string fromPName =...
method MoveToLastMap (line 592) | private void MoveToLastMap()
class MapViewData (line 604) | class MapViewData
FILE: WzComparerR2.MapRender/FrmMapRender2.SceneRendering.cs
class FrmMapRender2 (line 17) | public partial class FrmMapRender2
method UpdateAllItems (line 19) | private void UpdateAllItems(SceneNode node, TimeSpan elapsed)
method ApplyMapEvents (line 132) | private void ApplyMapEvents(IEnumerable<ItemEvent> itemEvents, object ...
method InvokeMapEvent (line 165) | private void InvokeMapEvent(ISpineAnimator sender, List<MapEvent> mapE...
method UpdateTooltip (line 202) | private void UpdateTooltip()
method UpdateTopBar (line 224) | private void UpdateTopBar()
method OnSceneItemClick (line 270) | private void OnSceneItemClick(SceneItem item)
method DrawScene (line 298) | private void DrawScene(GameTime gameTime)
method DrawTooltipItems (line 364) | private void DrawTooltipItems(GameTime gameTime)
method DrawFootholds (line 378) | private void DrawFootholds(GameTime gameTime)
method DrawName (line 482) | private void DrawName(SceneItem item)
method PrepareLightMap (line 589) | private void PrepareLightMap()
method ApplyLightMap (line 616) | private void ApplyLightMap(Texture2D lightMapTexture)
method GetSceneContainers (line 623) | private IEnumerable<ContainerNode> GetSceneContainers(SceneNode node)
method GetDrawableItems (line 684) | private IEnumerable<KeyValuePair<SceneItem, MeshItem>> GetDrawableItem...
method GetMesh (line 720) | private MeshItem GetMesh(SceneItem item)
method GetMeshBack (line 798) | private MeshItem GetMeshBack(BackItem back)
method GetMeshObj (line 910) | private MeshItem GetMeshObj(ObjItem obj)
method GetMeshTile (line 932) | private MeshItem GetMeshTile(TileItem tile)
method GetMeshLife (line 947) | private MeshItem GetMeshLife(LifeItem life)
method GetMeshPortal (line 963) | private MeshItem GetMeshPortal(PortalItem portal)
method GetMeshesIlluminantCluster (line 978) | private MeshItem[] GetMeshesIlluminantCluster(IlluminantClusterItem il...
method GetMeshReactor (line 1003) | private MeshItem GetMeshReactor(ReactorItem reactor)
method GetMeshParticle (line 1019) | private MeshItem GetMeshParticle(ParticleItem particle)
method GetRenderObject (line 1038) | private object GetRenderObject(object animator, bool flip = false, int...
method GetMovingObjPos (line 1089) | private Vector2 GetMovingObjPos(ObjItem obj)
method UpdateShaderConstant (line 1140) | private void UpdateShaderConstant(ShaderMaterial shaderMaterial)
FILE: WzComparerR2.MapRender/FrmMapRender2.cs
class FrmMapRender2 (line 30) | public partial class FrmMapRender2 : Game
method FrmMapRender2 (line 32) | public FrmMapRender2()
method Form_Load (line 66) | private void Form_Load(object sender, EventArgs e)
method Form_GotFocus (line 73) | private void Form_GotFocus(object sender, EventArgs e)
method Form_LostFocus (line 84) | private void Form_LostFocus(object sender, EventArgs e)
method Form_FormClosing (line 94) | private void Form_FormClosing(object sender, System.Windows.Forms.Form...
method Form_FormClosed (line 99) | private void Form_FormClosed(object sender, System.Windows.Forms.FormC...
method Graphics_DeviceCreated (line 104) | private void Graphics_DeviceCreated(object sender, EventArgs e)
method Graphics_DeviceResetting (line 115) | private void Graphics_DeviceResetting(object sender, EventArgs e)
method Initialize (line 152) | protected override void Initialize()
method OnActivated (line 186) | protected override void OnActivated(object sender, EventArgs args)
method OnDeactivated (line 191) | protected override void OnDeactivated(object sender, EventArgs args)
method BindingUIInput (line 196) | private void BindingUIInput()
method UIOption_OK (line 484) | private void UIOption_OK(object sender, EventArgs e)
method UIOption_Cancel (line 494) | private void UIOption_Cancel(object sender, EventArgs e)
method UiWnd_Visible (line 500) | private void UiWnd_Visible(object sender, RoutedEventArgs e)
method WorldMap_MapSpotClick (line 507) | private void WorldMap_MapSpotClick(object sender, UIWorldMap.MapSpotEv...
method Teleport_SelectedMapGo (line 525) | private void Teleport_SelectedMapGo(object sender, UITeleport.Selected...
method ChatBox_TextSubmit (line 531) | private void ChatBox_TextSubmit(object sender, TextEventArgs e)
method ChatCommand (line 546) | private async void ChatCommand(string command)
method LoadContent (line 906) | protected override void LoadContent()
method Update (line 914) | protected override void Update(GameTime gameTime)
method Draw (line 919) | protected override void Draw(GameTime gameTime)
method CanCapture (line 956) | private bool CanCapture()
method Capture (line 961) | private void Capture(GameTime gameTime)
method SaveTexture (line 1057) | private void SaveTexture(byte[,][] picBlocks, int mapWidth, int mapHei...
method ApplySetting (line 1128) | private void ApplySetting()
method LoadOptionData (line 1147) | private void LoadOptionData(UIOptionsDataModel model)
method SaveOptionData (line 1163) | private void SaveOptionData(UIOptionsDataModel model)
method UnloadContent (line 1182) | protected override void UnloadContent()
method OnExiting (line 1199) | private void OnExiting()
method Dispose (line 1228) | protected override void Dispose(bool disposing)
method SwitchResolution (line 1238) | private void SwitchResolution()
method SwitchResolution (line 1244) | private void SwitchResolution(Resolution r)
method EventDisposable (line 1270) | private IDisposable EventDisposable<TDelegate>(TDelegate arg, Action<T...
type Resolution (line 1275) | enum Resolution
type ItemRect (line 1283) | struct ItemRect
class Disposable (line 1289) | class Disposable<TDelegate> : IDisposable
method Disposable (line 1291) | public Disposable(Action<TDelegate> action, TDelegate arg)
method Dispose (line 1300) | public void Dispose()
FILE: WzComparerR2.MapRender/GameExt.cs
class GameExt (line 16) | static class GameExt
method FixKeyboard (line 18) | public static void FixKeyboard(Game game)
method ReleaseKeyboard (line 32) | public static void ReleaseKeyboard(Game game)
method RemoveKeyboardEvent (line 49) | public static void RemoveKeyboardEvent(Game game)
method RemoveMouseStateCache (line 66) | public static void RemoveMouseStateCache()
method EnsureGameExit (line 87) | public static void EnsureGameExit(Game game)
method GetService (line 93) | public static T GetService<T>(this IServiceProvider services) where T ...
class RawInputMessageFilter (line 100) | class RawInputMessageFilter : IMessageFilter
method PreFilterMessage (line 102) | public virtual bool PreFilterMessage(ref Message m)
method GetCurrentThreadId (line 110) | [DllImport("kernel32")]
method PostThreadMessage (line 113) | [DllImport("user32")]
FILE: WzComparerR2.MapRender/IRandom.cs
type IRandom (line 10) | public interface IRandom
method NextVar (line 12) | float NextVar(float baseValue, float varRange, bool nonNegative = false);
method NextVar (line 13) | int NextVar(int baseValue, int varRange, bool nonNegative = false);
method NextVar (line 14) | Vector2 NextVar(Vector2 baseValue, Vector2 varRange);
method NextVar (line 15) | Color NextVar(Color baseValue, Color varRange);
method Next (line 16) | int Next(int maxValue);
method NextPercent (line 17) | bool NextPercent(float percent);
FILE: WzComparerR2.MapRender/ITooltip.cs
type ITooltip (line 9) | public interface ITooltip
FILE: WzComparerR2.MapRender/IWcR2Font.cs
type IWcR2Font (line 11) | public interface IWcR2Font
method MeasureString (line 16) | Vector2 MeasureString(string text);
method MeasureString (line 17) | Vector2 MeasureString(StringBuilder text);
class D2DFontAdapter (line 20) | public class D2DFontAdapter : IWcR2Font
method D2DFontAdapter (line 22) | public D2DFontAdapter(D2DFont baseFont)
method MeasureString (line 41) | public Vector2 MeasureString(string text)
method MeasureString (line 46) | public Vector2 MeasureString(StringBuilder text)
class XnaFontAdapter (line 52) | public class XnaFontAdapter : IWcR2Font, IDisposable
method XnaFontAdapter (line 54) | public XnaFontAdapter(XnaFont baseFont)
method MeasureString (line 73) | public Vector2 MeasureString(string text)
method MeasureString (line 78) | public Vector2 MeasureString(StringBuilder text)
method Dispose (line 83) | protected virtual void Dispose(bool disposing)
method Dispose (line 91) | public void Dispose()
FILE: WzComparerR2.MapRender/InputState.cs
class InputState (line 10) | public class InputState
method InputState (line 12) | public InputState()
method InputState (line 17) | public InputState(Game game)
method Update (line 33) | public void Update(GameTime gameTime)
method IsKeyDown (line 47) | public bool IsKeyDown(Keys key)
method IsKeyUp (line 57) | public bool IsKeyUp(Keys key)
method IsKeyPressing (line 67) | public bool IsKeyPressing(Keys key)
method IsMouseButtonDown (line 115) | public bool IsMouseButtonDown(MouseButton button)
method IsSingleMouseButtonDown (line 129) | private bool IsSingleMouseButtonDown(MouseButton button)
method IsMouseButtonUp (line 158) | public bool IsMouseButtonUp(MouseButton button)
method IsSingleMouseButtonUp (line 172) | private bool IsSingleMouseButtonUp(MouseButton button)
method IsMouseButtonPressing (line 196) | public bool IsMouseButtonPressing(MouseButton button)
method IsSingleMouseButtonPressing (line 210) | private bool IsSingleMouseButtonPressing(MouseButton button)
method GetMouseWheelScrolledValue (line 233) | public int GetMouseWheelScrolledValue()
FILE: WzComparerR2.MapRender/LifeInfo.cs
class LifeInfo (line 8) | public class LifeInfo
method LifeInfo (line 10) | public LifeInfo()
type ElemAttr (line 33) | public struct ElemAttr
type ElemResistance (line 44) | public enum ElemResistance : byte
method CreateFromNode (line 52) | public static LifeInfo CreateFromNode(Wz_Node mobNode)
FILE: WzComparerR2.MapRender/LightRenderer.cs
class LightRenderer (line 8) | public class LightRenderer : IDisposable
method LightRenderer (line 10) | public LightRenderer(GraphicsDevice graphicsDevice) : this(graphicsDev...
method LightRenderer (line 15) | public LightRenderer(GraphicsDevice graphicsDevice, int capacity)
method Begin (line 53) | public void Begin(Matrix world)
method DrawSpotLight (line 64) | public void DrawSpotLight(Light2D light)
method DrawTextureLight (line 156) | public void DrawTextureLight(Texture2D texture, Vector2 position, Rect...
method End (line 204) | public void End()
method Dispose (line 216) | public void Dispose()
method Dispose (line 222) | protected virtual void Dispose(bool disposing)
method ValidCheck (line 238) | private void ValidCheck()
method AcquireBuffer (line 250) | private void AcquireBuffer(int vertexCount, int primitiveCount, Textur...
method Flush (line 290) | private void Flush()
type VertexPosition2ColorTexture (line 328) | [StructLayout(LayoutKind.Sequential)]
method VertexPosition2ColorTexture (line 342) | public VertexPosition2ColorTexture(Vector2 position, Color color) : ...
method VertexPosition2ColorTexture (line 346) | public VertexPosition2ColorTexture(Vector2 position, Color color, Ve...
method ToString (line 353) | public override string ToString() => $"{{position: {this.Position}, ...
FILE: WzComparerR2.MapRender/LineListMesh.cs
class LineListMesh (line 10) | class LineListMesh
method LineListMesh (line 12) | public LineListMesh(Point from, Point to, Color color)
method LineListMesh (line 17) | public LineListMesh(Point from, Point to, Color color, int thickness)
method LineListMesh (line 22) | public LineListMesh(Point[] lines, Color color)
method LineListMesh (line 27) | public LineListMesh(Point[] lines, Color color, int thickness)
FILE: WzComparerR2.MapRender/MapData.cs
class MapData (line 18) | public class MapData
method MapData (line 20) | public MapData(IRandom random)
method Load (line 55) | public void Load(Wz_Node mapImgNode, ResourceLoader resLoader)
method LoadIDOrName (line 157) | private void LoadIDOrName(Wz_Node mapImgNode)
method LoadInfo (line 167) | private void LoadInfo(Wz_Node infoNode)
method LoadMinimap (line 186) | private void LoadMinimap(Wz_Node miniMapNode, ResourceLoader resLoader)
method LoadBack (line 227) | private void LoadBack(Wz_Node backNode)
method LoadLayer (line 239) | private void LoadLayer(Wz_Node layerNode, int level)
method LoadFoothold (line 274) | private void LoadFoothold(Wz_Node fhLayerNode, int level)
method LoadLife (line 292) | private void LoadLife(Wz_Node lifeNode)
method LoadPortal (line 325) | private void LoadPortal(Wz_Node portalNode)
method LoadReactor (line 388) | private void LoadReactor(Wz_Node reactorNode)
method LoadLadderRope (line 405) | private void LoadLadderRope(Wz_Node ladderRopeNode)
method LoadSkyWhale (line 417) | private void LoadSkyWhale(Wz_Node skyWhaleNode)
method LoadIlluminantCluster (line 427) | private void LoadIlluminantCluster(Wz_Node illuminantClusterNode)
method LoadTooltip (line 440) | private void LoadTooltip(Wz_Node tooltipNode)
method LoadParticle (line 485) | private void LoadParticle(Wz_Node node)
method LoadLight (line 495) | private void LoadLight(Wz_Node node)
method LoadMapEvents (line 531) | private void LoadMapEvents(Wz_Node effectNode)
method CalcMapSize (line 546) | private void CalcMapSize()
method FindFootholdByID (line 602) | private ContainerNode<FootholdItem> FindFootholdByID(int fhID)
method PreloadResource (line 613) | public void PreloadResource(ResourceLoader resLoader)
method PreloadResource (line 667) | private void PreloadResource(ResourceLoader resLoader, BackItem back)
method PreloadResource (line 686) | private void PreloadResource(ResourceLoader resLoader, ObjItem obj)
method PreloadResource (line 697) | private void PreloadResource(ResourceLoader resLoader, TileItem tile)
method PreloadResource (line 707) | private void PreloadResource(ResourceLoader resLoader, LifeItem life)
method PreloadResource (line 787) | private void PreloadResource(ResourceLoader resLoader, PortalItem portal)
method PreloadResource (line 849) | private void PreloadResource(ResourceLoader resLoader, IlluminantClust...
method PreloadResource (line 884) | private void PreloadResource(ResourceLoader resLoader, ReactorItem rea...
method PreloadResource (line 932) | private void PreloadResource(ResourceLoader resLoader, ParticleItem pa...
method CreateSMAnimator (line 968) | private StateMachineAnimator CreateSMAnimator(Wz_Node node, ResourceLo...
method CreateAnimator (line 993) | private object CreateAnimator(object animationData, string aniName = n...
method AddMobAI (line 1023) | private void AddMobAI(StateMachineAnimator ani)
method AddNpcAI (line 1056) | private void AddNpcAI(StateMachineAnimator ani)
method FindMapByID (line 1069) | public static bool FindMapByID(int mapID, out Wz_Node mapImgNode)
FILE: WzComparerR2.MapRender/MapEvent.cs
class MapEvent (line 9) | public class MapEvent
method MapEvent (line 11) | public MapEvent(string index, string type, string defaultAnimation, st...
type MapEventType (line 31) | public enum MapEventType
FILE: WzComparerR2.MapRender/MapLight.cs
class MapLight (line 7) | public class MapLight
class Light2D (line 17) | public class Light2D
FILE: WzComparerR2.MapRender/MapRenderFonts.cs
class MapRenderFonts (line 12) | public class MapRenderFonts : IDisposable
method GetFontResourceKey (line 19) | public static string GetFontResourceKey(string familyName, float size,...
method MapRenderFonts (line 25) | public MapRenderFonts()
method LoadContent (line 32) | public void LoadContent(ContentManager content)
method Dispose (line 97) | public void Dispose()
method Dispose (line 102) | protected virtual void Dispose(bool disposing)
FILE: WzComparerR2.MapRender/MapScene.cs
class MapScene (line 9) | public class MapScene : SceneNode
method MapScene (line 11) | public MapScene()
method FindPortal (line 48) | public PortalItem FindPortal(string pName)
class LayerNode (line 54) | public class LayerNode : SceneNode
method LayerNode (line 56) | public LayerNode()
class FlyLayerNode (line 73) | public class FlyLayerNode : SceneNode
method FlyLayerNode (line 75) | public FlyLayerNode()
class ContainerNode (line 98) | public class ContainerNode : SceneNode
method ContainerNode (line 100) | public ContainerNode()
class ContainerNode (line 108) | public class ContainerNode<T> : ContainerNode
method ContainerNode (line 100) | public ContainerNode()
FILE: WzComparerR2.MapRender/MathHelper2.cs
class MathHelper2 (line 8) | public static class MathHelper2
method Round (line 10) | public static Vector2 Round(Vector2 vector2)
method Transform (line 16) | public static Rectangle Transform(Rectangle rectangle, Matrix matrix)
method Max (line 25) | public static float Max(params float[] values)
method Min (line 42) | public static float Min(params float[] values)
method Lerp (line 59) | public static Color Lerp(Color[] colors, float amount)
method HSVtoColor (line 80) | public static Color HSVtoColor(float hue, float saturation, float value)
FILE: WzComparerR2.MapRender/MeshBatcher.cs
class MeshBatcher (line 10) | sealed class MeshBatcher : IDisposable
method MeshBatcher (line 12) | public MeshBatcher(GraphicsDevice graphicsDevice)
method Begin (line 47) | public void Begin(Vector2 camaraOriginWorldPosition, float gameTime)
method PrepareCullingParameters (line 57) | private void PrepareCullingParameters()
method Draw (line 84) | public void Draw(MeshItem mesh)
method DrawItem (line 116) | private void DrawItem(MeshItem mesh, Frame frame)
method DrawItem (line 181) | private void DrawItem(MeshItem mesh, Spine.V2.Skeleton skeleton)
method DrawItem (line 212) | private void DrawItem(MeshItem mesh, Spine.Skeleton skeleton)
method DrawItem (line 243) | private void DrawItem(MeshItem mesh, TextMesh text)
method DrawItem (line 307) | private void DrawItem(LineListMesh lineList)
method DrawItem (line 333) | private void DrawItem(MeshItem mesh, ParticleSystem particleSystem)
method DrawItem (line 367) | private void DrawItem(MeshItem mesh, MsCustomSprite msCustomSprite)
method Measure (line 373) | public Rectangle[] Measure(MeshItem mesh)
method Measure (line 381) | public void Measure(MeshItem mesh, ref Rectangle[] region, out int count)
method EnsureArraySize (line 457) | private void EnsureArraySize<T>(ref T[] array, int length)
method End (line 469) | public void End()
method Prepare (line 476) | private void Prepare(ItemType itemType)
method InnerBegin (line 499) | private void InnerBegin()
method InnerFlush (line 565) | private void InnerFlush()
method IntersectsVP (line 590) | private bool IntersectsVP(Rectangle rect)
method MeshPop (line 621) | public MeshItem MeshPop()
method MeshPush (line 641) | public void MeshPush(MeshItem mesh)
method Dispose (line 647) | public void Dispose()
type ItemType (line 656) | private enum ItemType
FILE: WzComparerR2.MapRender/MeshItem.cs
class MeshItem (line 9) | class MeshItem : IComparable<MeshItem>
method CompareTo (line 21) | public int CompareTo(MeshItem other)
FILE: WzComparerR2.MapRender/MiniMap.cs
class MiniMap (line 8) | public class MiniMap
method MiniMap (line 10) | public MiniMap()
FILE: WzComparerR2.MapRender/MouseButton.cs
type MouseButton (line 7) | [Flags]
FILE: WzComparerR2.MapRender/MsCustomSprite.cs
class MsCustomSpriteData (line 9) | public class MsCustomSpriteData
class MsShader (line 15) | public class MsShader
type MsCustomTexture (line 21) | public struct MsCustomTexture
type MsShaderConstant (line 29) | public struct MsShaderConstant
method MsShaderConstant (line 31) | public MsShaderConstant(float value)
method MsShaderConstant (line 39) | public MsShaderConstant(float x, float y)
method MsShaderConstant (line 47) | public MsShaderConstant(float x, float y, float z)
method ToScalar (line 60) | public float ToScalar() => this.X;
method ToVector2 (line 61) | public Vector2 ToVector2() => new Vector2(this.X, this.Y);
method ToVector3 (line 62) | public Vector3 ToVector3() => new Vector3(this.X, this.Y, this.Z);
class MsCustomSprite (line 65) | public class MsCustomSprite
FILE: WzComparerR2.MapRender/MsSpriteRenderer.cs
class MsSpriteRenderer (line 15) | public class MsSpriteRenderer : IDisposable
method MsSpriteRenderer (line 17) | public MsSpriteRenderer(GraphicsDevice graphicsDevice) : this(graphics...
method MsSpriteRenderer (line 21) | public MsSpriteRenderer(GraphicsDevice graphicsDevice, int capacity)
method Begin (line 49) | public void Begin(Vector2 cameraOrigin, float gameTime)
method Draw (line 66) | public void Draw(Vector2 worldPosition, Vector2 size, ShaderMaterial s...
method End (line 104) | public void End()
method Flush (line 116) | private void Flush()
method Dispose (line 181) | public void Dispose()
method Dispose (line 187) | protected void Dispose(bool disposing)
method TrySetCommonParameters (line 217) | private void TrySetCommonParameters(Effect effect)
type VertexPosition4ColorTexture (line 225) | public struct VertexPosition4ColorTexture : IVertexType
method VertexPosition4ColorTexture (line 235) | public VertexPosition4ColorTexture(Vector4 position, Color color, Ve...
method ToString (line 246) | public override string ToString() => $"{{position: {this.Position}, ...
FILE: WzComparerR2.MapRender/Music.cs
class Music (line 12) | class Music : IDisposable
method Music (line 14) | public Music(Wz_Sound sound)
method Play (line 65) | public void Play()
method Pause (line 70) | public void Pause()
method Stop (line 75) | public void Stop()
method Dispose (line 80) | public void Dispose()
type PlayState (line 88) | public enum PlayState
method OnGlobalVolumeChanged (line 97) | private void OnGlobalVolumeChanged(object sender, EventArgs e)
FILE: WzComparerR2.MapRender/Particle.cs
class Particle (line 10) | public class Particle
method Reset (line 36) | public void Reset()
FILE: WzComparerR2.MapRender/ParticleDesc.cs
class ParticleDesc (line 13) | public class ParticleDesc
class ParticleGravityDesc (line 51) | public class ParticleGravityDesc
class ParticleRadiusDesc (line 64) | public class ParticleRadiusDesc
type ParticleBlendFunc (line 75) | public enum ParticleBlendFunc
FILE: WzComparerR2.MapRender/ParticleDesc1.cs
class ParticleDesc1 (line 9) | public class ParticleDesc1
FILE: WzComparerR2.MapRender/ParticleDesc3.cs
class ParticleDesc3 (line 9) | public class ParticleDesc3
FILE: WzComparerR2.MapRender/ParticleEmitter.cs
class ParticleEmitter (line 9) | public class ParticleEmitter
method ParticleEmitter (line 11) | public ParticleEmitter(ParticleSystem particleSystem)
method Emit (line 64) | public Particle Emit()
method CreateParticle (line 71) | private Particle CreateParticle()
method InitParticle (line 86) | private void InitParticle(Particle particle)
FILE: WzComparerR2.MapRender/ParticleRandom.cs
class ParticleRandom (line 10) | class ParticleRandom : IRandom
method ParticleRandom (line 12) | public ParticleRandom() : this(new Random())
method ParticleRandom (line 17) | public ParticleRandom(Random random)
method NextMinOneToOne (line 24) | private double NextMinOneToOne()
method NextVar (line 29) | public float NextVar(float baseValue, float varRange, bool nonNegative...
method NextVar (line 44) | public int NextVar(int baseValue, int varRange, bool nonNegative = false)
method NextVar (line 58) | public Vector2 NextVar(Vector2 baseValue, Vector2 varRange)
method NextVar (line 65) | public Color NextVar(Color baseValue, Color varRange)
method Next (line 76) | public int Next(int maxValue)
method NextPercent (line 81) | public bool NextPercent(float percent)
FILE: WzComparerR2.MapRender/ParticleSystem.cs
class ParticleSystem (line 11) | public class ParticleSystem
method ParticleSystem (line 13) | public ParticleSystem(IRandom random)
method LoadDescription (line 35) | public void LoadDescription(ParticleDesc desc)
method CreateEmitter (line 60) | private void CreateEmitter(ParticleDesc desc)
method CreateGroup (line 116) | public ParticleGroup CreateGroup(string name = null)
method Update (line 124) | public void Update(TimeSpan elapsed)
method UpdateGroup (line 132) | public void UpdateGroup(ParticleGroup pGroup, TimeSpan elapsed)
method CollectParticle (line 217) | private void CollectParticle(Particle particle)
method Draw (line 222) | public void Draw(SpriteBatch sprite, Vector2 position)
method DrawGroup (line 230) | public void DrawGroup(SpriteBatch sprite, ParticleGroup pGroup, Vector...
method CalcAlphaFromPoints (line 274) | private int CalcAlphaFromPoints(Particle p)
method Lerp (line 303) | private Color Lerp(Color color1, Color color2, float amount)
method Lerp (line 313) | private int Lerp(int int1, int int2, float from, float to, float value)
type AlphaPoint (line 324) | private struct AlphaPoint
method AlphaPoint (line 326) | public AlphaPoint(float time, int alpha)
class ParticleGroup (line 337) | public class ParticleGroup
method ParticleGroup (line 339) | public ParticleGroup(ParticleSystem owner)
method Active (line 352) | public void Active()
FILE: WzComparerR2.MapRender/PatchVisibility.cs
class PatchVisibility (line 8) | public class PatchVisibility
method PatchVisibility (line 10) | public PatchVisibility()
method IsVisible (line 123) | public bool IsVisible(RenderObjectType type)
method IsTagVisible (line 130) | public bool IsTagVisible(string tag)
method SetTagVisible (line 135) | public void SetTagVisible(string tag, bool isVisible)
method ResetTagVisible (line 140) | public void ResetTagVisible()
method ResetTagVisible (line 145) | public void ResetTagVisible(string[] tags)
method SetVisible (line 153) | private void SetVisible(RenderObjectType type, bool visible)
method IsQuestVisible (line 158) | public bool IsQuestVisible(int questID, int questState)
method IsQuestVisibleExact (line 168) | public bool IsQuestVisibleExact(int questID, int questState)
method SetQuestVisible (line 178) | public void SetQuestVisible(int questID, int questState)
method IsQuestVisible (line 183) | public bool IsQuestVisible(int questID, string qkey, int questState)
method IsQuestVisibleExact (line 193) | public bool IsQuestVisibleExact(int questID, string qkey, int questState)
method SetQuestVisible (line 203) | public void SetQuestVisible(int questID, string qkey, int questState)
FILE: WzComparerR2.MapRender/Patches/BackPatch.cs
class BackPatch (line 10) | public class BackPatch : RenderPatch
method BackPatch (line 12) | public BackPatch()
method Update (line 63) | public override void Update(GameTime gameTime, RenderEnv env)
method Draw (line 144) | public override void Draw(GameTime gameTime, RenderEnv env)
FILE: WzComparerR2.MapRender/Patches/FootholdPatch.cs
class FootholdPatch (line 10) | public class FootholdPatch : RenderPatch
method FootholdPatch (line 12) | public FootholdPatch()
method Update (line 66) | public override void Update(GameTime gameTime, RenderEnv env)
method Draw (line 70) | public override void Draw(GameTime gameTime, RenderEnv env)
FILE: WzComparerR2.MapRender/Patches/LadderRopePatch.cs
class LadderRopePatch (line 10) | public class LadderRopePatch : RenderPatch
method LadderRopePatch (line 12) | public LadderRopePatch()
method Update (line 24) | public override void Update(GameTime gameTime, RenderEnv env)
method Draw (line 29) | public override void Draw(GameTime gameTime, RenderEnv env)
FILE: WzComparerR2.MapRender/Patches/LifePatch.cs
class LifePatch (line 10) | public class LifePatch : RenderPatch
method LifePatch (line 12) | public LifePatch()
method SwitchToDefaultAction (line 45) | public void SwitchToDefaultAction()
method Dispose (line 63) | protected override void Dispose(bool disposing)
FILE: WzComparerR2.MapRender/Patches/ObjTilePatch.cs
class ObjTilePatch (line 9) | public class ObjTilePatch : RenderPatch
method Update (line 11) | public override void Update(GameTime gameTime, RenderEnv env)
FILE: WzComparerR2.MapRender/Patches/PortalPatch.cs
class PortalPatch (line 10) | public class PortalPatch : RenderPatch
method PortalPatch (line 12) | public PortalPatch()
method Update (line 83) | public override void Update(GameTime gameTime, RenderEnv env)
method Dispose (line 105) | protected override void Dispose(bool disposing)
FILE: WzComparerR2.MapRender/Patches/ReactorPatch.cs
class ReactorPatch (line 8) | public class ReactorPatch : RenderPatch
method ReactorPatch (line 10) | public ReactorPatch()
method Dispose (line 43) | protected override void Dispose(bool disposing)
FILE: WzComparerR2.MapRender/Patches/RenderObjectType.cs
type RenderObjectType (line 7) | public enum RenderObjectType
FILE: WzComparerR2.MapRender/Patches/RenderPatch.cs
class RenderPatch (line 10) | public class RenderPatch : IDisposable
method RenderPatch (line 12) | public RenderPatch()
method UpdateCurrentFrameIndex (line 82) | public int UpdateCurrentFrameIndex(TimeSpan totalTime)
method UpdateCurrentFrameIndex (line 88) | public virtual int UpdateCurrentFrameIndex(TimeSpan totalTime, out flo...
method Update (line 135) | public virtual void Update(GameTime gameTime, RenderEnv env)
method Draw (line 157) | public virtual void Draw(GameTime gameTime, RenderEnv env)
method Dispose (line 181) | public void Dispose()
method Dispose (line 186) | protected virtual void Dispose(bool disposing)
method ToString (line 203) | public override string ToString()
FILE: WzComparerR2.MapRender/Patches/TooltipPatch.cs
class TooltipPatch (line 9) | public class TooltipPatch : RenderPatch
method TooltipPatch (line 11) | public TooltipPatch()
FILE: WzComparerR2.MapRender/Patches2/BackItem.cs
class BackItem (line 9) | public class BackItem : SceneItem
method LoadFromNode (line 31) | public static BackItem LoadFromNode(Wz_Node node)
method GetBackTileMode (line 67) | private static TileMode GetBackTileMode(int type)
class ItemView (line 83) | public class ItemView
FILE: WzComparerR2.MapRender/Patches2/FootholdItem.cs
class FootholdItem (line 9) | public class FootholdItem : SceneItem
method LoadFromNode (line 20) | public static FootholdItem LoadFromNode(Wz_Node node)
FILE: WzComparerR2.MapRender/Patches2/IlluminantClusterItem.cs
class IlluminantClusterItem (line 13) | public class IlluminantClusterItem : SceneItem
method LoadFromNode (line 26) | public static IlluminantClusterItem LoadFromNode(Wz_Node node)
class ItemView (line 41) | public class ItemView
FILE: WzComparerR2.MapRender/Patches2/ItemEvent.cs
class ItemEvent (line 9) | public class ItemEvent
method ItemEvent (line 11) | public ItemEvent(string index, string collision, string animation, str...
FILE: WzComparerR2.MapRender/Patches2/LadderRopeItem.cs
class LadderRopeItem (line 10) | public class LadderRopeItem : SceneItem
method LoadFromNode (line 19) | public static LadderRopeItem LoadFromNode(Wz_Node node)
FILE: WzComparerR2.MapRender/Patches2/LifeItem.cs
class LifeItem (line 12) | public class LifeItem : SceneItem
method LoadFromNode (line 34) | public static LifeItem LoadFromNode(Wz_Node node)
method LoadCustomFontFunc (line 86) | public static CustomFontFunc LoadCustomFontFunc(Wz_Node node)
method ParseLifeType (line 101) | private static LifeType ParseLifeType(string text)
class ItemView (line 111) | public class ItemView
type LifeType (line 124) | public enum LifeType
class CustomFontFunc (line 131) | public class CustomFontFunc
FILE: WzComparerR2.MapRender/Patches2/ObjItem.cs
class ObjItem (line 10) | public class ObjItem : SceneItem
method LoadFromNode (line 33) | public static ObjItem LoadFromNode(Wz_Node node)
class ItemView (line 133) | public class ItemView
FILE: WzComparerR2.MapRender/Patches2/ParticleItem.cs
class ParticleItem (line 10) | class ParticleItem : SceneItem
method LoadFromNode (line 20) | public static ParticleItem LoadFromNode(Wz_Node node)
class SubParticleItem (line 80) | public class SubParticleItem
class ItemView (line 87) | public class ItemView
FILE: WzComparerR2.MapRender/Patches2/PortalItem.cs
class PortalItem (line 10) | public class PortalItem : SceneItem
method LoadFromNode (line 28) | public static PortalItem LoadFromNode(Wz_Node node)
class ItemView (line 48) | public class ItemView
class ItemTooltip (line 59) | public class ItemTooltip
class Controller (line 64) | public class Controller : IDisposable
method Controller (line 66) | public Controller(ItemView view)
method Update (line 76) | public void Update(TimeSpan elapsed)
method AttachEvent (line 92) | private void AttachEvent()
method Animator_AnimationEnd (line 101) | private void Animator_AnimationEnd(object sender, StateMachineAnimat...
method OnStateUpdate (line 110) | private bool OnStateUpdate(string curState, out string nextState)
method Dispose (line 163) | public void Dispose()
FILE: WzComparerR2.MapRender/Patches2/QuestInfo.cs
type QuestInfo (line 9) | public struct QuestInfo
method QuestInfo (line 11) | public QuestInfo(int id, int state)
type QuestExInfo (line 21) | public struct QuestExInfo
method QuestExInfo (line 23) | public QuestExInfo(int id, string key, int state)
FILE: WzComparerR2.MapRender/Patches2/ReactorItem.cs
class ReactorItem (line 11) | public class ReactorItem : SceneItem
method LoadFromNode (line 22) | public static ReactorItem LoadFromNode(Wz_Node node)
class ItemView (line 36) | public class ItemView
class Controller (line 44) | public class Controller : IDisposable
method Controller (line 46) | public Controller(ItemView view)
method Update (line 56) | public void Update(TimeSpan elapsed)
method AttachEvent (line 72) | private void AttachEvent()
method Animator_AnimationEnd (line 81) | private void Animator_AnimationEnd(object sender, StateMachineAnimat...
method OnStateUpdate (line 90) | private bool OnStateUpdate(string curState, out string nextState)
method AfterStageChanged (line 155) | private void AfterStageChanged(int newStage)
method Dispose (line 161) | public void Dispose()
FILE: WzComparerR2.MapRender/Patches2/SceneItem.cs
class SceneItem (line 8) | public class SceneItem
method ToString (line 14) | public override string ToString()
FILE: WzComparerR2.MapRender/Patches2/SkyWhaleItem.cs
class SkyWhaleItem (line 12) | class SkyWhaleItem : SceneItem
method LoadFromNode (line 22) | public static SkyWhaleItem LoadFromNode(Wz_Node node)
FILE: WzComparerR2.MapRender/Patches2/TileItem.cs
class TileItem (line 9) | public class TileItem : SceneItem
method LoadFromNode (line 19) | public static TileItem LoadFromNode(Wz_Node node)
class ItemView (line 32) | public class ItemView
FILE: WzComparerR2.MapRender/Patches2/TooltipItem.cs
class TooltipItem (line 10) | public class TooltipItem : SceneItem
FILE: WzComparerR2.MapRender/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: WzComparerR2.MapRender/RenderAnimate.cs
class RenderAnimate (line 8) | public class RenderAnimate : IEnumerable<RenderFrame>
method RenderAnimate (line 10) | public RenderAnimate(RenderFrame[] frames)
method UpdateTimeLine (line 41) | private void UpdateTimeLine()
method GetEnumerator (line 58) | public IEnumerator<RenderFrame> GetEnumerator()
method GetEnumerator (line 63) | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnume...
FILE: WzComparerR2.MapRender/RenderArgs.cs
class RenderArgs (line 9) | public class RenderArgs
method RenderArgs (line 11) | public RenderArgs()
FILE: WzComparerR2.MapRender/RenderEnv.cs
class RenderEnv (line 10) | public class RenderEnv : IDisposable
method RenderEnv (line 12) | public RenderEnv(Game game, GraphicsDeviceManager graphics)
method Dispose (line 33) | public void Dispose()
method Dispose (line 38) | protected virtual void Dispose(bool disposing)
FILE: WzComparerR2.MapRender/RenderFrame.cs
class RenderFrame (line 10) | public class RenderFrame
method RenderFrame (line 12) | public RenderFrame()
FILE: WzComparerR2.MapRender/ResourceLoader.cs
class ResourceLoader (line 14) | public class ResourceLoader : IDisposable
method ResourceLoader (line 16) | public ResourceLoader(IServiceProvider serviceProvider)
method Load (line 38) | public virtual T Load<T>(string assetName)
method Load (line 43) | public virtual T Load<T>(Wz_Node node)
method Load (line 48) | private T Load<T>(Wz_Node node = null, string assetName = null)
method LoadAnimationData (line 79) | public object LoadAnimationData(Wz_Node node)
method LoadAnimationData (line 95) | public object LoadAnimationData(string assetName)
method LoadParticleDesc (line 101) | public object LoadParticleDesc(Wz_Node node)
method LoadParticleDesc0 (line 113) | public ParticleDesc LoadParticleDesc0(Wz_Node node)
method LoadParticleDesc1 (line 198) | public ParticleDesc1 LoadParticleDesc1(Wz_Node node)
method LoadParticleDesc3 (line 203) | public ParticleDesc3 LoadParticleDesc3(Wz_Node node)
method BeginCounting (line 208) | public void BeginCounting()
method EndCounting (line 217) | public void EndCounting()
method ClearAnimationCache (line 222) | public void ClearAnimationCache()
method Recycle (line 227) | public void Recycle()
method Unload (line 240) | public void Unload()
method Dispose (line 251) | public void Dispose()
method UnloadResource (line 257) | private void UnloadResource(object resource)
method InnerLoad (line 277) | private object InnerLoad(Wz_Node node, Type assetType)
method InnerLoadAnimationData (line 310) | private object InnerLoadAnimationData(Wz_Node node)
method LoadFrame (line 367) | private Frame LoadFrame(Wz_Node node)
method LoadSpineAnimationData (line 397) | private ISpineAnimationData LoadSpineAnimationData(SpineDetectionResul...
method CreateEmptyTexture (line 416) | private Texture2D CreateEmptyTexture(string path, int width, int height)
method LoadMsSpriteData (line 435) | private MsCustomSpriteData LoadMsSpriteData(Wz_Node node)
method LoadMsShader (line 487) | private MsShader LoadMsShader(Wz_Node node)
method Dispose (line 525) | protected virtual void Dispose(bool disposing)
class ResourceHolder (line 538) | protected class ResourceHolder
class SpineTextureLoader (line 544) | private class SpineTextureLoader : Spine.TextureLoader, Spine.V2.Textu...
method SpineTextureLoader (line 546) | public SpineTextureLoader(ResourceLoader resLoader, Wz_Node topNode)
method Load (line 556) | public void Load(Spine.AtlasPage page, string path)
method Load (line 570) | public void Load(Spine.V2.AtlasPage page, string path)
method Unload (line 584) | public void Unload(object texture)
method TryLoadTexture (line 589) | private bool TryLoadTexture(string path, out Texture2D texture)
method CreateEmptyTexture (line 606) | private Texture2D CreateEmptyTexture(string path, int width, int hei...
FILE: WzComparerR2.MapRender/SceneNode.cs
class SceneNode (line 9) | public class SceneNode
method SceneNode (line 11) | public SceneNode()
method Descendants (line 20) | public IEnumerable<SceneNode> Descendants()
class SceneNodeCollection (line 32) | public class SceneNodeCollection : Collection<SceneNode>
method SceneNodeCollection (line 34) | public SceneNodeCollection(SceneNode owner)
method AddRange (line 41) | public void AddRange(IEnumerable<SceneNode> nodes)
method InsertItem (line 49) | protected override void InsertItem(int index, SceneNode item)
method SetItem (line 57) | protected override void SetItem(int index, SceneNode item)
method RemoveItem (line 66) | protected override void RemoveItem(int index)
method ClearItems (line 72) | protected override void ClearItems()
FILE: WzComparerR2.MapRender/TextMesh.cs
class TextMesh (line 11) | class TextMesh
type Margins (line 21) | struct Margins
method Margins (line 23) | public Margins(int left, int right, int top, int bottom)
type Alignment (line 37) | enum Alignment
FILE: WzComparerR2.MapRender/TextureAtlas.cs
type TextureAtlas (line 10) | public struct TextureAtlas
method TextureAtlas (line 12) | public TextureAtlas(Texture2D texture)
method TextureAtlas (line 18) | public TextureAtlas(Texture2D texture, Rectangle rect)
FILE: WzComparerR2.MapRender/TextureLoader.cs
class TextureLoader (line 14) | public class TextureLoader
method TextureLoader (line 16) | public TextureLoader(GraphicsDevice graphicsDevice)
method CreateFrame (line 28) | public RenderFrame CreateFrame(Wz_Node frameNode)
method GetTexture (line 63) | private Texture2D GetTexture(Wz_Png png, string key)
method BeginCounting (line 82) | public void BeginCounting()
method EndCounting (line 94) | public void EndCounting()
method ClearUnusedTexture (line 102) | public void ClearUnusedTexture()
method PngToTexture (line 119) | public static Texture2D PngToTexture(GraphicsDevice device, Wz_Png png)
class TextureItem (line 124) | private class TextureItem
method TextureItem (line 126) | public TextureItem()
FILE: WzComparerR2.MapRender/TileMode.cs
type TileMode (line 7) | [Flags]
FILE: WzComparerR2.MapRender/UI/ColorWConverter.cs
class ColorWConverter (line 10) | public class ColorWConverter
method TryParse (line 12) | public static bool TryParse(string s, out ColorW colorW)
method ToString (line 38) | public static string ToString(ColorW colorW)
FILE: WzComparerR2.MapRender/UI/HitMap.cs
class HitMap (line 9) | class HitMap
method HitMap (line 11) | public HitMap(int width, int height)
method HitMap (line 18) | public HitMap(bool defaultHit)
method SetRow (line 65) | public void SetRow(int y, bool[] isHit)
FILE: WzComparerR2.MapRender/UI/ITooltipTarget.cs
type ITooltipTarget (line 10) | public interface ITooltipTarget
method GetTooltipTarget (line 12) | object GetTooltipTarget(PointF mouseLocation);
FILE: WzComparerR2.MapRender/UI/LCRBrush.cs
class LCRBrush (line 13) | class LCRBrush : Brush
method LCRBrush (line 15) | public LCRBrush()
method Draw (line 25) | public override void Draw(TextureBase texture, Renderer renderer, doub...
method DrawGeometry (line 41) | public override void DrawGeometry(GeometryBuffer buffer, TextureBase t...
FILE: WzComparerR2.MapRender/UI/MapRenderButtonStyle.cs
class MapRenderButtonStyle (line 15) | static class MapRenderButtonStyle
method CreateMapRenderButtonStyle (line 17) | public static Style CreateMapRenderButtonStyle()
method GetMapRenderButtonSetters (line 65) | public static Setter[] GetMapRenderButtonSetters(string name)
method CreateButtonSetters (line 103) | private static Setter[] CreateButtonSetters(float width, float height,
FILE: WzComparerR2.MapRender/UI/MapRenderResourceKey.cs
type MapRenderResourceKey (line 8) | public enum MapRenderResourceKey
FILE: WzComparerR2.MapRender/UI/MapRenderUIRoot.cs
class MapRenderUIRoot (line 18) | class MapRenderUIRoot : UIRoot
method MapRenderUIRoot (line 20) | public MapRenderUIRoot() : base()
method InitializeComponents (line 40) | private void InitializeComponents()
method Worldmap_Visible (line 109) | private void Worldmap_Visible(object sender, RoutedEventArgs e)
method Teleport_Visible (line 125) | private void Teleport_Visible(object sender, RoutedEventArgs e)
method LoadContent (line 132) | public void LoadContent(object contentManager)
method InitGlobalResource (line 149) | private void InitGlobalResource()
method LoadResource (line 171) | private void LoadResource()
method UnloadContents (line 208) | public void UnloadContents()
method OnKeyDown (line 217) | protected override void OnKeyDown(KeyEventArgs e)
method UpdateInput (line 235) | public new void UpdateInput(double elapsedGameTime)
method OnInputUpdated (line 247) | protected virtual void OnInputUpdated(EventArgs e)
FILE: WzComparerR2.MapRender/UI/MessageBoxBackgroundBrush.cs
class MessageBoxBackgroundBrush (line 15) | class MessageBoxBackgroundBrush : Brush
method MessageBoxBackgroundBrush (line 19) | public MessageBoxBackgroundBrush()
method Draw (line 30) | public override void Draw(TextureBase texture, Renderer renderer, doub...
method GetBoxOffset (line 61) | private float GetBoxOffset()
method Layout (line 83) | private IList<TextureBlock> Layout(MessageBoxBackgroundResource res, P...
method DrawGeometry (line 114) | public override void DrawGeometry(GeometryBuffer buffer, TextureBase t...
class MessageBoxBackgroundResource (line 120) | class MessageBoxBackgroundResource : INinePatchResource<TextureBase>
method GetSize (line 139) | public Point GetSize(TextureBase texture)
FILE: WzComparerR2.MapRender/UI/MessageBoxStyle.cs
class MessageBoxStyle (line 13) | static class MessageBoxStyle
method CreateMessageBoxStyle (line 15) | public static Style CreateMessageBoxStyle()
method CreateMessageBoxControlTemplate (line 22) | public static ControlTemplate CreateMessageBoxControlTemplate()
method CreateMessageBoxControlFunc (line 28) | private static UIElement CreateMessageBoxControlFunc(UIElement parent)
method MsgBox_Visible (line 77) | private static void MsgBox_Visible(object sender, RoutedEventArgs e)
method TextBlock_SizeChanged (line 113) | private static void TextBlock_SizeChanged(object sender, RoutedEventAr...
method MsgBox_SizeChanged (line 126) | private static void MsgBox_SizeChanged(object sender, RoutedEventArgs e)
method SetWindowAlignCenter (line 131) | private static void SetWindowAlignCenter(Window wnd)
FILE: WzComparerR2.MapRender/UI/NineFormResource.cs
class NineFormResource (line 10) | public class NineFormResource : INinePatchResource<Texture2D>
method GetSize (line 62) | public Point GetSize(Texture2D texture)
class EKNineFormResource (line 68) | public class EKNineFormResource : INinePatchResource<EKTexture>
method GetSize (line 120) | public Point GetSize(EKTexture texture)
FILE: WzComparerR2.MapRender/UI/NinePatchBrush.cs
class NinePatchBrush (line 13) | class NinePatchBrush : Brush
method NinePatchBrush (line 15) | public NinePatchBrush()
method Draw (line 25) | public override void Draw(TextureBase texture, Renderer renderer, doub...
method DrawGeometry (line 41) | public override void DrawGeometry(GeometryBuffer buffer, TextureBase t...
FILE: WzComparerR2.MapRender/UI/TCBBrush.cs
class TCBBrush (line 13) | class TCBBrush : Brush
method TCBBrush (line 15) | public TCBBrush()
method Draw (line 25) | public override void Draw(TextureBase texture, Renderer renderer, doub...
method DrawGeometry (line 41) | public override void DrawGeometry(GeometryBuffer buffer, TextureBase t...
FILE: WzComparerR2.MapRender/UI/TextBoxEx.cs
class TextBoxEx (line 18) | class TextBoxEx : TextBox
method TextBoxEx (line 21) | public TextBoxEx()
method OnKeyDown (line 56) | protected override void OnKeyDown(KeyEventArgs e)
method OnGotFocus (line 150) | protected override void OnGotFocus(object sender, RoutedEventArgs e)
method OnLostFocus (line 169) | protected override void OnLostFocus(object sender, RoutedEventArgs e)
method Submit (line 182) | private void Submit()
method ImeHandler_onResultReceived (line 196) | private void ImeHandler_onResultReceived(object sender, IMEResultEvent...
method ImeHandler_onCompositionReceived (line 204) | private void ImeHandler_onCompositionReceived(object sender, EventArgs e)
method InsertText (line 247) | private void InsertText(string text)
method GetIMEService (line 285) | private IMEHandler GetIMEService()
method OnTextSubmit (line 291) | protected virtual void OnTextSubmit(TextEventArgs e)
method CreateStyle (line 296) | public static Style CreateStyle()
class TextEditorProxy (line 303) | private class TextEditorProxy
method TextEditorProxy (line 305) | public TextEditorProxy(TextBox textBox)
method RaiseTextContainerChanged (line 361) | public void RaiseTextContainerChanged()
method StoreSelection (line 366) | public void StoreSelection(UndoManagerProxy undoManager)
method SetText (line 371) | public void SetText(string text)
method GetCaretVisualOffset (line 376) | public PointF GetCaretVisualOffset(float dpiX, float dpiY)
method RecordInsertText (line 381) | public void RecordInsertText(UndoManagerProxy undoManager, int posit...
method InitMethodCache (line 388) | private void InitMethodCache(object target)
class UndoManagerProxy (line 416) | private class UndoManagerProxy
method UndoManagerProxy (line 418) | public UndoManagerProxy(TextBox textBox)
method Store (line 439) | public void Store(object memento)
method Clear (line 444) | public void Clear()
method InitMethodCache (line 449) | private void InitMethodCache(object target)
class TextEventArgs (line 458) | class TextEventArgs : EventArgs
method TextEventArgs (line 460) | public TextEventArgs(string text)
FILE: WzComparerR2.MapRender/UI/Tooltip.cs
class Tooltip (line 15) | public class Tooltip
method Tooltip (line 17) | public Tooltip(GraphicsDevice graphicsDevice)
method DrawTooltip (line 41) | public void DrawTooltip(GameTime gameTime, RenderEnv env, StringLinker...
method DrawFrame (line 131) | private void DrawFrame(RenderEnv env, Vector2 position, Vector2 size)
method DrawNameTooltip (line 155) | public void DrawNameTooltip(GameTime gameTime, RenderEnv env, RenderPa...
method DrawNameTooltip (line 185) | private void DrawNameTooltip(RenderEnv env, string name, XnaFont font,...
FILE: WzComparerR2.MapRender/UI/Tooltip2.cs
class Tooltip2 (line 23) | class Tooltip2
method Tooltip2 (line 25) | public Tooltip2(ContentManager content)
method Draw (line 37) | public void Draw(GameTime gameTime, RenderEnv env)
method Draw (line 52) | public void Draw(GameTime gameTime, RenderEnv env, object item, Vector...
method LoadContent (line 67) | private void LoadContent(ContentManager content)
method Draw (line 82) | private TooltipContent Draw(GameTime gameTime, RenderEnv env, object t...
method DrawItem (line 123) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, Life...
method DrawItem (line 178) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, Port...
method DrawItem (line 232) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, Illu...
method DrawItem (line 252) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, Reac...
method DrawItem (line 277) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, Tool...
method DrawItem (line 302) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, UIWo...
method DrawItem (line 618) | private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, UIWo...
method DrawString (line 651) | private TooltipContent DrawString(GameTime gameTime, RenderEnv env, st...
method DrawContent (line 661) | private void DrawContent(RenderEnv env, TooltipContent content, Vector...
type TooltipContent (line 727) | private struct TooltipContent
FILE: WzComparerR2.MapRender/UI/TooltipHelper.cs
class TooltipHelper (line 10) | public static class TooltipHelper
method PrepareTextBlock (line 12) | public static TextBlock PrepareTextBlock(IWcR2Font font, string text, ...
method PrepareTextLine (line 26) | public static TextBlock PrepareTextLine(IWcR2Font font, string text, r...
method PrepareFormatText (line 48) | public static TextBlock[] PrepareFormatText(IWcR2Font font, string for...
method Prepare (line 64) | public static TextBlock[] Prepare(LifeInfo info, MapRenderFonts fonts,...
method GetLifeElemAttrString (line 86) | public static StringBuilder GetLifeElemAttrString(ref LifeInfo.ElemAtt...
method GetElemResistanceString (line 99) | public static string GetElemResistanceString(string elemName, LifeInfo...
method GetPortalTypeString (line 112) | public static string GetPortalTypeString(int pType)
type TextBlock (line 130) | public struct TextBlock
class TextLayouter (line 138) | public class TextLayouter : WzComparerR2.Text.TextRenderer<IWcR2Font>
method TextLayouter (line 140) | public TextLayouter() : base()
method LayoutFormatText (line 147) | public TextBlock[] LayoutFormatText(IWcR2Font font, string s, int wi...
method Flush (line 154) | protected override void Flush(StringBuilder sb, int startIndex, int ...
method MeasureRuns (line 165) | protected override void MeasureRuns(List<WzComparerR2.Text.Run> runs)
method MeasureChars (line 185) | protected override System.Drawing.Rectangle[] MeasureChars(int start...
method GetColor (line 199) | public virtual Color GetColor(string colorID)
FILE: WzComparerR2.MapRender/UI/UIChatBox.cs
class UIChatBox (line 20) | class UIChatBox : WindowEx
method UIChatBox (line 22) | public UIChatBox()
method InitializeComponents (line 35) | protected override void InitializeComponents()
method AppendTextNormal (line 91) | public void AppendTextNormal(string msgText)
method AppendTextSystem (line 96) | public void AppendTextSystem(string msgText)
method AppendTextInfo (line 101) | public void AppendTextInfo(string msgText)
method AppendTextHelp (line 106) | public void AppendTextHelp(string msgText)
method AppendMessage (line 111) | public void AppendMessage(string msgText, Color foreColor, Color backC...
method OnPreviewMouseDown (line 150) | protected override void OnPreviewMouseDown(object sender, MouseButtonE...
method OnPreviewMouseMove (line 172) | protected override void OnPreviewMouseMove(object sender, MouseEventAr...
method OnPreviewMouseUp (line 214) | protected override void OnPreviewMouseUp(object sender, MouseButtonEve...
method GetBackgroundResource (line 229) | private INinePatchResource<TextureBase> GetBackgroundResource()
method CreateScrollViewerStyle (line 241) | private Style CreateScrollViewerStyle()
FILE: WzComparerR2.MapRender/UI/UIDanmaku.cs
class UIDanmaku (line 17) | class UIDanmaku : WindowEx
method UIDanmaku (line 19) | public UIDanmaku()
method InitializeComponents (line 29) | protected override void InitializeComponents()
method OnDraw (line 48) | protected override void OnDraw(Renderer spriterenderer, double elapsed...
method Canvas_LayoutUpdated (line 54) | private void Canvas_LayoutUpdated(object sender, EventArgs e)
method Update (line 59) | private void Update(TimeSpan elapsed)
method AddBullet (line 92) | private void AddBullet(Bullet bullet)
method RemoveBullet (line 130) | private void RemoveBullet(Bullet bullet)
class Bullet (line 140) | public class Bullet
method Bullet (line 142) | public Bullet() : this(null)
method Bullet (line 146) | public Bullet(string text) : this(text, Color.White)
method Bullet (line 150) | public Bullet(string text, Color foreColor)
class BulletCollection (line 161) | public class BulletCollection : Collection<Bullet>
method BulletCollection (line 163) | public BulletCollection(UIDanmaku owner)
method InsertItem (line 170) | protected override void InsertItem(int index, Bullet item)
method SetItem (line 176) | protected override void SetItem(int index, Bullet item)
method RemoveItem (line 181) | protected override void RemoveItem(int index)
method ClearItems (line 188) | protected override void ClearItems()
FILE: WzComparerR2.MapRender/UI/UIGraphics.cs
class UIGraphics (line 10) | public class UIGraphics
method LayoutNinePatch (line 12) | public static IList<RenderBlock<T>> LayoutNinePatch<T>(INinePatchResou...
method LayoutLCR (line 90) | public static IList<RenderBlock<T>> LayoutLCR<T>(INinePatchResource<T>...
method LayoutTCB (line 110) | public static IList<RenderBlock<T>> LayoutTCB<T>(INinePatchResource<T>...
method DrawNineForm (line 130) | public static void DrawNineForm(RenderEnv env, NineFormResource res, V...
type RenderBlock (line 148) | public struct RenderBlock<T>
method RenderBlock (line 150) | public RenderBlock(T texture, Rectangle rectangle)
type INinePatchResource (line 160) | public interface INinePatchResource<T>
method GetSize (line 172) | Point GetSize(T texture);
FILE: WzComparerR2.MapRender/UI/UIHelper.cs
class UIHelper (line 20) | static class UIHelper
method RegisterClickEvent (line 22) | public static IDisposable RegisterClickEvent<T>(UIElement control, Fun...
method LoadTexture (line 33) | public static TextureBase LoadTexture(Wz_Node node)
method CreateHitMap (line 47) | public static HitMap CreateHitMap(Texture2D texture)
method CreateConverter (line 94) | public static IValueConverter CreateConverter(Func<object, object> con...
method CreateConverter (line 99) | public static IValueConverter CreateConverter<TIn, TOut>(Func<TIn, TOu...
class ClickEventHolder (line 108) | class ClickEventHolder<T> : IDisposable
method ClickEventHolder (line 110) | public ClickEventHolder(UIElement control)
method Register (line 121) | public void Register()
method Deregister (line 127) | public void Deregister()
method OnMouseDown (line 133) | private void OnMouseDown(object sender, MouseButtonEventArgs e)
method OnMouseUp (line 141) | private void OnMouseUp(object sender, MouseButtonEventArgs e)
method Dispose (line 154) | void IDisposable.Dispose()
class CustomConverter (line 160) | class CustomConverter : IValueConverter
method CustomConverter (line 162) | public CustomConverter(Func<object, object> convertFunc)
method Convert (line 169) | public object Convert(object value, Type target, object parameter, C...
method ConvertBack (line 174) | public object ConvertBack(object value, Type target, object paramete...
FILE: WzComparerR2.MapRender/UI/UIMiniMap.cs
class UIMiniMap (line 13) | public class UIMiniMap
method UIMiniMap (line 15) | public UIMiniMap(GraphicsDevice graphicsDevice)
method UpdateResource (line 90) | private void UpdateResource()
method Draw (line 111) | public void Draw(RenderEnv env, GameTime gameTime)
method UpdateSize (line 227) | public void UpdateSize()
method LoadResource (line 270) | public void LoadResource(GraphicsDevice graphicsDevice)
FILE: WzComparerR2.MapRender/UI/UIMinimap2.cs
class UIMinimap2 (line 23) | class UIMinimap2 : WindowEx
method UIMinimap2 (line 34) | public UIMinimap2()
method InitializeComponents (line 109) | protected override void InitializeComponents()
method OnPropertyChanged (line 197) | protected override void OnPropertyChanged(DependencyProperty property)
method CalcControlSize (line 209) | private void CalcControlSize()
class MapArea (line 243) | public class MapArea : Control, ITooltipTarget
method MapArea (line 245) | public MapArea()
method OnDraw (line 259) | protected override void OnDraw(Renderer spriterenderer, double elaps...
method GetTooltipTarget (line 487) | public object GetTooltipTarget(PointF mouseLocation)
method LoadWzResource (line 499) | public void LoadWzResource()
type IconRect (line 527) | private struct IconRect
class MapIcon (line 534) | public class MapIcon
type IconType (line 541) | public enum IconType
class UIMinimapResource (line 556) | private sealed class UIMinimapResource : INinePatchResource<TextureBase>
method UIMinimapResource (line 558) | public UIMinimapResource()
method GetSize (line 610) | public Microsoft.Xna.Framework.Point GetSize(TextureBase texture)
method LoadResource (line 615) | public void LoadResource(AssetManager assetManager, bool mirror = fa...
class ComboBoxBackgroundResource (line 646) | private sealed class ComboBoxBackgroundResource : INinePatchResource<T...
method ComboBoxBackgroundResource (line 648) | public ComboBoxBackgroundResource()
method GetSize (line 657) | public Microsoft.Xna.Framework.Point GetSize(TextureBase texture)
method LoadResource (line 662) | private void LoadResource(AssetManager assetManager)
class TextureImageConverter (line 717) | private class TextureImageConverter : IValueConverter
method Convert (line 719) | public object Convert(object value, Type target, object parameter, C...
method ConvertBack (line 729) | public object ConvertBack(object value, Type target, object paramete...
FILE: WzComparerR2.MapRender/UI/UIMirrorFrame.cs
class UIMirrorFrame (line 16) | class UIMirrorFrame : WindowEx
method InitializeComponents (line 22) | protected override void InitializeComponents()
FILE: WzComparerR2.MapRender/UI/UIOptions.cs
class UIOptions (line 18) | class UIOptions : WindowEx
method UIOptions (line 20) | public UIOptions()
method InitializeComponents (line 28) | protected override void InitializeComponents()
method BtnOK_Click (line 124) | private void BtnOK_Click(object sender, RoutedEventArgs e)
method BtnCancel_Click (line 129) | private void BtnCancel_Click(object sender, RoutedEventArgs e)
method GetTabContent1 (line 134) | private UIElement GetTabContent1()
method GetTabContent2 (line 315) | private UIElement GetTabContent2()
method GetTabContent3 (line 333) | private UIElement GetTabContent3()
method GetTabContent4 (line 351) | private UIElement GetTabContent4()
method GetTabContent5 (line 369) | private UIElement GetTabContent5()
method GetTabItemStyle (line 402) | private Style GetTabItemStyle()
class UIOptionsDataModel (line 433) | class UIOptionsDataModel : BindableBase
FILE: WzComparerR2.MapRender/UI/UITeleport.cs
class UITeleport (line 26) | class UITeleport : WindowEx // base code from UIWorldmap.cs
method UITeleport (line 30) | public UITeleport() : base()
method InitializeComponents (line 49) | protected override void InitializeComponents()
method OnPropertyChanged (line 148) | protected override void OnPropertyChanged(DependencyProperty property)
method GetStringResult (line 168) | private string GetStringResult(string str) // 주어진 칸 넘는 문자열 ..처리
class TextBlockTooltip (line 183) | public class TextBlockTooltip : Control, ITooltipTarget // 마우스오버시 툴팁 출...
method TextBlockTooltip (line 185) | public TextBlockTooltip()
method ResetTooltip (line 193) | public void ResetTooltip(string text1, string text2)
method GetTooltipTarget (line 200) | public object GetTooltipTarget(PointF mouseLocation)
type ItemRect (line 211) | private struct ItemRect
method BtnBack_Click (line 218) | private void BtnBack_Click(object sender, RoutedEventArgs e)
method BtnGo_Click (line 223) | private void BtnGo_Click(object sender, RoutedEventArgs e)
method BtnClose_Click (line 229) | private void BtnClose_Click(object sender, RoutedEventArgs e)
class SelectedMapGoEventArgs (line 234) | public class SelectedMapGoEventArgs : EventArgs
method SelectedMapGoEventArgs (line 236) | public SelectedMapGoEventArgs(int mapID)
FILE: WzComparerR2.MapRender/UI/UITopBar.cs
class UITopBar (line 15) | class UITopBar : WindowEx
method InitializeComponents (line 39) | protected override void InitializeComponents()
FILE: WzComparerR2.MapRender/UI/UIWorldMap.cs
class UIWorldMap (line 25) | class UIWorldMap : WindowEx
method UIWorldMap (line 33) | public UIWorldMap() : base()
method InitializeComponents (line 80) | protected override void InitializeComponents()
method OnPropertyChanged (line 158) | protected override void OnPropertyChanged(DependencyProperty property)
method LoadWzResource (line 209) | public void LoadWzResource()
method LoadQuestLimit (line 412) | private QuestLimitInfo LoadQuestLimit(Wz_Node node)
method LoadFog (line 463) | private FogInfo LoadFog(Wz_Node node)
method JumpToCurrentMap (line 485) | public void JumpToCurrentMap()
method LoadTextureItem (line 511) | private TextureItem LoadTextureItem(Wz_Node node, bool loadHitMap = fa...
method OnMapAreaClick (line 526) | private void OnMapAreaClick(object obj)
method BtnBack_Click (line 547) | private void BtnBack_Click(object sender, RoutedEventArgs e)
method MapArea_RightClick (line 552) | private void MapArea_RightClick(object obj)
method BtnClose_Click (line 557) | private void BtnClose_Click(object sender, RoutedEventArgs e)
method GoBack (line 562) | private void GoBack()
class WorldMapArea (line 574) | public class WorldMapArea : Control, ITooltipTarget
method WorldMapArea (line 576) | public WorldMapArea()
method GetTooltipTarget (line 588) | public object GetTooltipTarget(PointF mouseLocation)
method HitTest (line 608) | public object HitTest(PointF position)
method OnDraw (line 626) | protected override void OnDraw(Renderer spriterenderer, double elaps...
class DrawItem (line 829) | private class DrawItem
type SpotState (line 836) | private struct SpotState
class WorldMapInfo (line 845) | public class WorldMapInfo
method ToString (line 859) | public override string ToString()
class MapSpot (line 865) | public class MapSpot
method ToString (line 876) | public override string ToString()
class MapLink (line 882) | public class MapLink
class QuestLimitInfo (line 891) | public class QuestLimitInfo
method ToString (line 902) | public override string ToString()
class FogInfo (line 908) | public class FogInfo
method ToString (line 915) | public override string ToString()
class TextureItem (line 921) | public class TextureItem
class MapSpotTooltip (line 929) | public class MapSpotTooltip
class MapLinkTooltip (line 934) | public class MapLinkTooltip
class MapSpotEventArgs (line 939) | public class MapSpotEventArgs : EventArgs
method MapSpotEventArgs (line 941) | public MapSpotEventArgs(int mapID)
FILE: WzComparerR2.MapRender/UI/WcR2Engine.cs
class WcR2Engine (line 25) | class WcR2Engine : Engine
method WcR2Engine (line 27) | public WcR2Engine(GraphicsDevice graphicsDevice, int nativeScreenWidth...
method FixEKBugs (line 65) | public static void FixEKBugs()
method Unload (line 72) | public static void Unload()
method InitialInputManager (line 94) | public static void InitialInputManager()
method FixBorderTexture (line 122) | private static void FixBorderTexture()
method FixDefaultTheme (line 159) | private static void FixDefaultTheme()
class WcR2AudioDevice (line 185) | class WcR2AudioDevice : AudioDevice
method CreateSound (line 187) | public override SoundBase CreateSound(object nativeSound)
class WcR2AssetManager (line 193) | class WcR2AssetManager : MonoGameAssetManager
method LoadFont (line 197) | public override FontBase LoadFont(object contentManager, string file)
method LoadTexture (line 212) | public override TextureBase LoadTexture(object contentManager, string ...
class WcR2Font (line 230) | class WcR2Font : FontBase
method WcR2Font (line 232) | public WcR2Font(object nativeFont) : base(nativeFont)
method GetNativeFont (line 264) | public override object GetNativeFont()
method MeasureString (line 269) | public override Size MeasureString(StringBuilder text, float dpiScaleX...
method MeasureString (line 275) | public override Size MeasureString(string text, float dpiScaleX, float...
class WcR2Sound (line 282) | class WcR2Sound : SoundBase
method WcR2Sound (line 284) | public WcR2Sound(object nativeSound) : base(nativeSound)
method Pause (line 311) | public override void Pause()
method Play (line 316) | public override void Play()
method Stop (line 321) | public override void Stop()
class WcR2ContentManager (line 328) | class WcR2ContentManager : ContentManager
method WcR2ContentManager (line 330) | public WcR2ContentManager(IServiceProvider serviceProvider)
method Load (line 345) | public override T Load<T>(string assetName)
method LoadXnaFont (line 398) | private IWcR2Font LoadXnaFont(string assetName)
method Unload (line 428) | public override void Unload()
class ClipBoardService (line 442) | class ClipBoardService : IClipboardService
method GetText (line 444) | public string GetText()
method SetText (line 457) | public void SetText(string text)
class Extensions (line 469) | static class Extensions
method AddFont (line 471) | public static void AddFont(this FontManager fontManager, string family...
method ToRect (line 482) | public static Rect ToRect(this Microsoft.Xna.Framework.Rectangle rect)
method ToPointF (line 487) | public static PointF ToPointF(this WzComparerR2.WzLib.Wz_Vector vector)
method MeasureString (line 492) | public static Size MeasureString(this FontBase font, string text, Size...
FILE: WzComparerR2.MapRender/UI/WcR2Renderer.cs
class WcR2Renderer (line 15) | public class WcR2Renderer : Renderer, IDisposable
method WcR2Renderer (line 76) | public WcR2Renderer(GraphicsDevice graphicsDevice, int nativeScreenWid...
method Begin (line 100) | public override void Begin()
method UpdateCurrentEffect (line 105) | private void UpdateCurrentEffect(EffectBase effect)
method Draw (line 132) | public override void Draw(TextureBase texture, PointF position, Size r...
method Draw (line 160) | public override void Draw(TextureBase texture, PointF position, Size r...
method End (line 187) | public override void End(bool endEffect = false)
method BeginClipped (line 206) | public override void BeginClipped(Rect clipRect)
method BeginClipped (line 216) | public override void BeginClipped(Rect clipRect, EffectBase effect)
method EndClipped (line 232) | public override void EndClipped(bool endEffect = false)
method GetViewport (line 254) | public override Rect GetViewport()
method CreateTexture (line 268) | public override TextureBase CreateTexture(int width, int height, bool ...
method ResetNativeSize (line 283) | public override void ResetNativeSize()
method DrawGeometryColor (line 297) | public override void DrawGeometryColor(GeometryBuffer buffer, PointF p...
method DrawGeometryTexture (line 321) | public override void DrawGeometryTexture(GeometryBuffer buffer, PointF...
method IsClipped (line 343) | public override bool IsClipped(PointF position, Size renderSize)
method CreateEffect (line 367) | public override EffectBase CreateEffect(object nativeEffect)
method GetSDFFontEffect (line 377) | public override EffectBase GetSDFFontEffect()
method CreateFont (line 382) | public override FontBase CreateFont(object nativeFont)
method CreateTexture (line 387) | public override TextureBase CreateTexture(object nativeTexture)
method DrawText (line 399) | public override void DrawText(FontBase font, string text, PointF posit...
method Begin (line 433) | public override void Begin(EffectBase effect)
method BeginClipped (line 458) | private void BeginClipped(Rectangle clipRect)
method CreateGeometryBuffer (line 485) | public override GeometryBuffer CreateGeometryBuffer()
method DrawGeometry (line 490) | private void DrawGeometry(GeometryBuffer buffer, PointF position, floa...
method Prepare (line 546) | private void Prepare(DrawState nextState)
method Flush (line 576) | private void Flush()
method Dispose (line 596) | public void Dispose()
type DrawState (line 606) | enum DrawState
class WcR2GeometryBuffer (line 615) | public class WcR2GeometryBuffer : GeometryBuffer
method WcR2GeometryBuffer (line 630) | public WcR2GeometryBuffer(GraphicsDevice device)
method FillColor (line 641) | public override void FillColor(List<PointF> points, GeometryPrimitiveT...
method SetPrimitiveCount (line 655) | private void SetPrimitiveCount(GeometryPrimitiveType primitiveType, in...
method FillTexture (line 684) | public override void FillTexture(List<PointF> points, Size destination...
method Dispose (line 703) | public override void Dispose()
FILE: WzComparerR2.MapRender/UI/WindowEx.cs
class WindowEx (line 14) | class WindowEx : Window
method WindowEx (line 16) | public WindowEx()
method InitializeComponents (line 21) | protected virtual void InitializeComponents()
method CreateControls (line 26) | private UIElement CreateControls(UIElement parent)
method SetDragTarget (line 34) | protected void SetDragTarget(UIElement element)
method OnPropertyChanged (line 39) | protected override void OnPropertyChanged(DependencyProperty property)
method OnGotFocus (line 52) | protected override void OnGotFocus(object sender, RoutedEventArgs e)
method OnPreviewMouseDown (line 62) | protected override void OnPreviewMouseDown(object sender, MouseButtonE...
method Toggle (line 72) | public void Toggle()
method BringToFront (line 84) | public void BringToFront()
method Show (line 97) | public void Show()
method Hide (line 102) | public void Hide()
FILE: WzComparerR2.Network/Contracts/ByteArrayConverter.cs
class ByteArrayConverter (line 9) | class ByteArrayConverter : JsonConverter
method CanConvert (line 13) | public override bool CanConvert(Type objectType)
method ReadJson (line 18) | public override object ReadJson(JsonReader reader, Type objectType, ob...
method WriteJson (line 25) | public override void WriteJson(JsonWriter writer, object value, JsonSe...
FILE: WzComparerR2.Network/Contracts/PackCryptReq.cs
class PackCryptReq (line 8) | [JsonObject("1")]
FILE: WzComparerR2.Network/Contracts/PackCryptResp.cs
class PackCryptResp (line 8) | [JsonObject("2")]
FILE: WzComparerR2.Network/Contracts/PackCustomPackage.cs
class PackCustomPackage (line 8) | [JsonObject("12")]
type SendTarget (line 16) | public enum SendTarget
FILE: WzComparerR2.Network/Contracts/PackGetAllUsersReq.cs
class PackGetAllUsersReq (line 8) | [JsonObject("7")]
FILE: WzComparerR2.Network/Contracts/PackGetAllUsersResp.cs
class PackGetAllUsersResp (line 8) | [JsonObject("8")]
class UserInfo (line 14) | [JsonObject("8A")]
type ClientType (line 24) | public enum ClientType
FILE: WzComparerR2.Network/Contracts/PackGetServerInfoReq.cs
class PackGetServerInfoReq (line 8) | [JsonObject("5")]
FILE: WzComparerR2.Network/Contracts/PackGetServerInfoResp.cs
class PackGetServerInfoResp (line 8) | [JsonObject("6")]
FILE: WzComparerR2.Network/Contracts/PackHeartBeat.cs
class PackHeartBeat (line 8) | [JsonObject("0")]
FILE: WzComparerR2.Network/Contracts/PackLoginReq.cs
class PackLoginReq (line 8) | [JsonObject("3")]
FILE: WzComparerR2.Network/Contracts/PackLoginResp.cs
class PackLoginResp (line 8) | [JsonObject("4")]
FILE: WzComparerR2.Network/Contracts/PackOnChat.cs
class PackOnChat (line 8) | [JsonObject("10")]
FILE: WzComparerR2.Network/Contracts/PackOnCustomPackage.cs
class PackOnCustomPackage (line 8) | [JsonObject("13")]
FILE: WzComparerR2.Network/Contracts/PackOnServerMessage.cs
class PackOnServerMessage (line 8) | [JsonObject("11")]
type MessageType (line 15) | public enum MessageType
FILE: WzComparerR2.Network/Contracts/PackOnUserUpdate.cs
class PackOnUserUpdate (line 8) | [JsonObject("14")]
type UserUpdateReason (line 15) | public enum UserUpdateReason
FILE: WzComparerR2.Network/Contracts/PackSendChat.cs
class PackSendChat (line 8) | [JsonObject("9")]
type ChatGroup (line 15) | public enum ChatGroup
FILE: WzComparerR2.Network/Contracts/PackUserProfileUpdateReq.cs
class PackUserProfileUpdateReq (line 8) | [JsonObject("15")]
FILE: WzComparerR2.Network/Contracts/TypeNameBinder.cs
class TypeNameBinder (line 11) | class TypeNameBinder : DefaultSerializationBinder
method TypeNameBinder (line 20) | public TypeNameBinder()
method BindToName (line 33) | public override void BindToName(Type serializedType, out string assemb...
method BindToType (line 45) | public override Type BindToType(string assemblyName, string typeName)
FILE: WzComparerR2.Network/Entry.cs
class Entry (line 17) | public class Entry : PluginEntry
method Entry (line 19) | static Entry()
method Entry (line 26) | public Entry(PluginContext context)
method OnLoad (line 39) | protected override void OnLoad()
method CheckConfig (line 65) | private void CheckConfig()
method Client_Connected (line 102) | private void Client_Connected(object sender, EventArgs e)
method Client_Disconnected (line 109) | private void Client_Disconnected(object sender, EventArgs e)
method Client_OnPackReceived (line 114) | private void Client_OnPackReceived(object sender, PackEventArgs e)
method Form1_OnCommand (line 124) | private void Form1_OnCommand(object sender, CommandEventArgs e)
method RegisterAllHandlers (line 183) | private void RegisterAllHandlers()
method RegisterHandler (line 200) | private void RegisterHandler<T>(Action<T> handler)
method RegisterHandler (line 211) | private void RegisterHandler(Type packType, Action<object> handler)
method CryptoRequest (line 217) | private void CryptoRequest()
method ServerInfoRequest (line 231) | private void ServerInfoRequest()
method UserListRequest (line 237) | private void UserListRequest()
method LoginRequest (line 243) | private void LoginRequest()
method OnPackReceived (line 256) | private void OnPackReceived(PackHeartBeat pack)
method OnPackReceived (line 261) | private void OnPackReceived(PackCryptResp pack)
method OnPackReceived (line 277) | private void OnPackReceived(PackGetServerInfoResp pack)
method OnPackReceived (line 288) | private void OnPackReceived(PackLoginResp pack)
method OnPackReceived (line 297) | private void OnPackReceived(PackOnChat pack)
method OnPackReceived (line 312) | private void OnPackReceived(PackGetAllUsersResp pack)
method OnPackReceived (line 325) | private void OnPackReceived(PackOnServerMessage pack)
method OnPackReceived (line 343) | private void OnPackReceived(PackOnUserUpdate pack)
class Session (line 385) | class Session
FILE: WzComparerR2.Network/Log.cs
class Log (line 9) | public class Log
method Debug (line 13) | public static void Debug(string format, params object[] args)
method Info (line 18) | public static void Info(string format, params object[] args)
method Warn (line 23) | public static void Warn(string format, params object[] args)
method Error (line 28) | public static void Error(string format, params object[] args)
method Write (line 33) | public static void Write(LogLevel logLevel, string format, params obje...
type ILogger (line 51) | public interface ILogger
method Write (line 53) | void Write(LogLevel logLevel, string format, params object[] args);
type LogLevel (line 56) | public enum LogLevel
FILE: WzComparerR2.Network/LoggerForm.Designer.cs
class LoggerForm (line 3) | partial class LoggerForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: WzComparerR2.Network/LoggerForm.cs
class LoggerForm (line 14) | public partial class LoggerForm : Form
method LoggerForm (line 16) | public LoggerForm()
method AttachDockBar (line 23) | public void AttachDockBar(DockSite dockSite)
method GetLogger (line 33) | internal LogPrinter GetLogger()
class LogPrinter (line 38) | public class LogPrinter : ILogger
method LogPrinter (line 40) | public LogPrinter(RichTextBoxEx textbox)
method Write (line 48) | void ILogger.Write(LogLevel logLevel, string format, params object[]...
method AppendText (line 73) | private void AppendText(string text, Color color)
method GetLogColor (line 83) | private Color GetLogColor(LogLevel level)
method textBoxX1_KeyDown (line 96) | private void textBoxX1_KeyDown(object sender, KeyEventArgs e)
class CommandEventArgs (line 111) | public sealed class CommandEventArgs : EventArgs
method CommandEventArgs (line 113) | public CommandEventArgs(string command)
FILE: WzComparerR2.Network/NativeMethods.cs
class NativeMethods (line 11) | static class NativeMethods
method FlashWindowEx (line 13) | public static bool FlashWindowEx(Form form)
method FlashWindowEx (line 26) | [DllImport("user32.dll")]
type FLASHWINFO (line 30) | [StructLayout(LayoutKind.Sequential)]
type FlashType (line 40) | public enum FlashType : uint
FILE: WzComparerR2.Network/NetworkConfig.cs
class NetworkConfig (line 11) | [SectionName("WcR2.Network")]
method NetworkConfig (line 14) | public NetworkConfig()
FILE: WzComparerR2.Network/RC4CryptoServiceProvider.cs
class RC4 (line 7) | public abstract class RC4 : SymmetricAlgorithm
method RC4 (line 9) | protected RC4()
method Create (line 13) | public static new RC4 Create()
class RC4CryptoServiceProvider (line 19) | public sealed class RC4CryptoServiceProvider : RC4
method RC4CryptoServiceProvider (line 21) | public RC4CryptoServiceProvider()
method CreateEncryptor (line 29) | public override ICryptoTransform CreateEncryptor(Byte[] rgbKey, Byte[]...
method CreateDecryptor (line 35) | public override ICryptoTransform CreateDecryptor(Byte[] rgbKey, Byte[]...
method CreateEncryptor (line 40) | public override ICryptoTransform CreateEncryptor()
method CreateDecryptor (line 45) | public override ICryptoTransform CreateDecryptor()
method GenerateKey (line 50) | public override void GenerateKey()
method GenerateIV (line 57) | public override void GenerateIV()
class RC4CryptoTransform (line 63) | public sealed class RC4CryptoTransform : ICryptoTransform
method RC4CryptoTransform (line 79) | public RC4CryptoTransform(byte[] rgbKey)
method Initialize (line 88) | private void Initialize()
method GetNextPseudoRandomItem (line 109) | private Byte GetNextPseudoRandomItem()
method Dispose (line 121) | public void Dispose()
method TransformBlock (line 130) | public Int32 TransformBlock(Byte[] inputBuffer, Int32 inputOffset, Int...
method TransformFinalBlock (line 140) | public Byte[] TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffse...
class ByteArrayExtensions (line 159) | internal static class ByteArrayExtensions
method Swap (line 161) | public static void Swap(this Byte[] array, int index1, int index2)
FILE: WzComparerR2.Network/RingBufferStream.cs
class RingBufferStream (line 10) | sealed class RingBufferStream : Stream
method RingBufferStream (line 12) | public RingBufferStream()
method Flush (line 51) | public override void Flush()
method Read (line 56) | public override int Read(byte[] buffer, int offset, int count)
method Seek (line 93) | public override long Seek(long offset, SeekOrigin origin)
method SetLength (line 117) | public override void SetLength(long value)
method Write (line 127) | public override void Write(byte[] buffer, int offset, int count)
method Append (line 137) | public void Append(byte[] buffer, int offset, int count)
method ClearPrevious (line 164) | public void ClearPrevious()
method Dispose (line 190) | protected override void Dispose(bool disposing)
method GetBlockNode (line 195) | private void GetBlockNode(long pos, bool autoExpand, out LinkedListNod...
FILE: WzComparerR2.Network/WcClient.cs
class WcClient (line 16) | public class WcClient
method WcClient (line 18) | static WcClient()
method WcClient (line 28) | public WcClient()
method Connect (line 54) | public async Task Connect()
method Reconnect (line 60) | private void Reconnect(int delay = 0)
method BeginCrypto (line 70) | public void BeginCrypto(ICryptoTransform readCrypto, ICryptoTransform ...
method Send (line 76) | public void Send(object pack)
method BeginConnect (line 81) | private async Task BeginConnect()
method BeginRead (line 122) | private async Task BeginRead(Stream ns)
method BeginWrite (line 214) | private async Task BeginWrite(Stream ns)
method WaitForDisconnect (line 246) | private async Task WaitForDisconnect()
method DecodePack (line 257) | private object DecodePack(byte[] packData)
method EncodePack (line 279) | private byte[] EncodePack(object pack)
class PackEventArgs (line 296) | public sealed class PackEventArgs : EventArgs
method PackEventArgs (line 298) | public PackEventArgs(object pack)
class ErrorEventArgs (line 306) | public sealed class ErrorEventArgs : EventArgs
method ErrorEventArgs (line 308) | public ErrorEventArgs(Exception exception)
FILE: WzComparerR2.PluginBase/FindWzEventArgs.cs
class FindWzEventArgs (line 8) | public class FindWzEventArgs:EventArgs
method FindWzEventArgs (line 10) | public FindWzEventArgs()
method FindWzEventArgs (line 14) | public FindWzEventArgs(Wz_Type type)
FILE: WzComparerR2.PluginBase/PluginContext.cs
class PluginContext (line 12) | public class PluginContext
method PluginContext (line 14) | internal PluginContext(PluginContextProvider contextProvider)
method AddRibbonBar (line 101) | public void AddRibbonBar(string tabName, RibbonBar ribbonBar)
method AddRibbonBar (line 136) | public RibbonBar AddRibbonBar(string tabName, string barText)
method AddTab (line 144) | public void AddTab(string tabName, SuperTabControlPanel tabPanel)
method AddTab (line 166) | public SuperTabControlPanel AddTab(string tabName)
FILE: WzComparerR2.PluginBase/PluginContextProvider.cs
type PluginContextProvider (line 12) | internal interface PluginContextProvider
FILE: WzComparerR2.PluginBase/PluginEntry.cs
class PluginEntry (line 8) | public abstract class PluginEntry
method PluginEntry (line 10) | public PluginEntry(PluginContext context)
method GetAsmAttr (line 62) | private T GetAsmAttr<T>()
method OnLoad (line 72) | protected internal virtual void OnLoad()
method OnUnload (line 77) | protected internal virtual void OnUnload()
FILE: WzComparerR2.PluginBase/PluginInfo.cs
class PluginInfo (line 8) | internal class PluginInfo
FILE: WzComparerR2.PluginBase/PluginManager.cs
class PluginManager (line 15) | public class PluginManager
method FindWz (line 27) | public static Wz_Node FindWz(Wz_Type type)
method FindWz (line 32) | public static Wz_Node FindWz(Wz_Type type, Wz_File sourceWzFile)
method FindWz (line 55) | public static Wz_Node FindWz(string fullPath)
method FindWz (line 60) | public static Wz_Node FindWz(string fullPath, Wz_File sourceWzFile)
method LogError (line 78) | public static void LogError(string logger, string format, params objec...
method LogError (line 83) | public static void LogError(string logger, Exception ex, string format...
method GetPluginFiles (line 119) | internal static string[] GetPluginFiles()
method LoadPlugin (line 138) | internal static IReadOnlyCollection<PluginInfo> LoadPlugin(Assembly as...
method PluginOnLoad (line 164) | internal static void PluginOnLoad()
method PluginOnUnLoad (line 179) | internal static void PluginOnUnLoad()
FILE: WzComparerR2.PluginBase/WzNodeEventArgs.cs
class WzNodeEventArgs (line 8) | public class WzNodeEventArgs : EventArgs
method WzNodeEventArgs (line 10) | public WzNodeEventArgs(Wz_Node node)
FILE: WzComparerR2.PluginBase/WzStructureEventArgs.cs
class WzStructureEventArgs (line 8) | public class WzStructureEventArgs : EventArgs
method WzStructureEventArgs (line 10) | public WzStructureEventArgs(Wz_Structure wz)
FILE: WzComparerR2.Updater/Program.cs
class Program (line 7) | class Program
method Main (line 9) | [STAThread]
method KillProcess (line 85) | static void KillProcess(string processName)
method MoveDirectory (line 94) | static void MoveDirectory(string sourceDir, string targetDir)
FILE: WzComparerR2.Updater/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: WzComparerR2.WzLib/Compatibility/WzDirStringReader.cs
type IPkg2DirStringReader (line 8) | public interface IPkg2DirStringReader
method ReadName (line 10) | string ReadName(WzBinaryReader reader, bool isFirstEntry);
class Pkg2LegacyDirStringReader (line 16) | internal sealed class Pkg2LegacyDirStringReader : IPkg2DirStringReader
method Pkg2LegacyDirStringReader (line 18) | public Pkg2LegacyDirStringReader(IWzDecrypter keys)
method ReadName (line 25) | public string ReadName(WzBinaryReader reader, bool isFirstEntry)
class Pkg2KmstDirStringReader (line 34) | internal sealed class Pkg2KmstDirStringReader : IPkg2DirStringReader
method Pkg2KmstDirStringReader (line 36) | public Pkg2KmstDirStringReader(IWzDecrypter pkg2Keys, IWzDecrypter pkg...
method ReadName (line 45) | public string ReadName(WzBinaryReader reader, bool isFirstEntry)
FILE: WzComparerR2.WzLib/Compatibility/WzOffsetCalc.cs
type IWzImageOffsetCalc (line 10) | public interface IWzImageOffsetCalc
method CalcOffset (line 12) | uint CalcOffset(uint filePos, uint hashedOffset);
type IPkg2ImageOffsetCalc (line 23) | public interface IPkg2ImageOffsetCalc : IWzImageOffsetCalc
method DecryptEntryCount (line 25) | int DecryptEntryCount(int encryptedEntryCount);
type Pkg2OffsetVersion (line 31) | public enum Pkg2OffsetVersion
class Pkg1OffsetCalc (line 44) | public sealed class Pkg1OffsetCalc : IWzImageOffsetCalc
method Pkg1OffsetCalc (line 46) | public Pkg1OffsetCalc(uint headerLen, uint hashVersion)
method CalcOffset (line 55) | public uint CalcOffset(uint filePos, uint hashedOffset)
class Pkg2OffsetCalcV1 (line 72) | public sealed class Pkg2OffsetCalcV1 : IPkg2ImageOffsetCalc
method Pkg2OffsetCalcV1 (line 74) | public Pkg2OffsetCalcV1(uint headerLen, uint hashVersion, uint hash1)
method CalcOffset (line 85) | public uint CalcOffset(uint filePos, uint hashedOffset)
method DecryptEntryCount (line 99) | public int DecryptEntryCount(int encryptedEntryCount)
class Pkg2OffsetCalcV2 (line 108) | public sealed class Pkg2OffsetCalcV2 : IPkg2ImageOffsetCalc
method Pkg2OffsetCalcV2 (line 110) | public Pkg2OffsetCalcV2(uint headerLen, uint hashVersion, uint hash1)
method CalcOffset (line 121) | public uint CalcOffset(uint filePos, uint hashedOffset)
method DecryptEntryCount (line 135) | public int DecryptEntryCount(int encryptedEntryCount)
class Pkg2OffsetCalcV3 (line 144) | public sealed class Pkg2OffsetCalcV3 : IPkg2ImageOffsetCalc
method Pkg2OffsetCalcV3 (line 146) | public Pkg2OffsetCalcV3(uint headerLen, uint hashVersion, uint hash1)
method CalcOffset (line 163) | public uint CalcOffset(uint filePos, uint hashedOffset)
method DecryptEntryCount (line 178) | public int DecryptEntryCount(int encryptedEntryCount)
FILE: WzComparerR2.WzLib/Compatibility/WzPreReadProvider.cs
type IWzPreReader (line 11) | internal interface IWzPreReader
method TryPreRead (line 13) | bool TryPreRead(Wz_File wzFile, out WzPreReadResult result);
class WzPreReaders (line 19) | internal static class WzPreReaders
class Pkg1PreReader (line 33) | internal sealed class Pkg1PreReader : IWzPreReader
method TryPreRead (line 35) | public bool TryPreRead(Wz_File wzFile, out WzPreReadResult result)
method ReadTree (line 58) | private static void ReadTree(WzBinaryReader reader, WzPreReadResult re...
class Pkg2PreReader (line 112) | internal sealed class Pkg2PreReader : IWzPreReader
method Pkg2PreReader (line 114) | public Pkg2PreReader(WzFileFormat format, bool isPkg2DirString)
method TryPreRead (line 123) | public bool TryPreRead(Wz_File wzFile, out WzPreReadResult result)
method ReadTree (line 149) | private static void ReadTree(WzBinaryReader reader, WzPreReadResult re...
type Pkg2TempEntry (line 217) | private struct Pkg2TempEntry
class WzPreReadHelper (line 228) | internal static class WzPreReadHelper
method ReadStringRawBytes (line 230) | public static byte[] ReadStringRawBytes(this WzBinaryReader reader, bo...
method SkipString (line 257) | public static void SkipString(this WzBinaryReader reader)
method IsLegalNodeName (line 272) | public static bool IsLegalNodeName(ReadOnlySpan<char> utf16NodeName)
method IsLegalNodeName (line 283) | public static bool IsLegalNodeName(ReadOnlySpan<byte> asciiNodeName)
type WzFileFormat (line 299) | public enum WzFileFormat
type WzStringEncoding (line 306) | public enum WzStringEncoding
class WzPreReadResult (line 313) | public sealed class WzPreReadResult
method WzPreReadResult (line 315) | public WzPreReadResult(WzFileFormat format, List<WzPreReadNodeInfo> no...
type WzPreReadNodeInfo (line 338) | public struct WzPreReadNodeInfo
type Pkg2DirEntryCount (line 346) | public struct Pkg2DirEntryCount
FILE: WzComparerR2.WzLib/Compatibility/WzVersionProfile.cs
class WzVersionProfile (line 9) | public abstract class WzVersionProfile
method WzVersionProfile (line 11) | protected WzVersionProfile(WzFileFormat format, Wz_CryptoKeyType crypt...
method CreateIterator (line 20) | public abstract IWzVersionIterator CreateIterator(Wz_File wzFile);
method TryDetect (line 21) | public abstract bool TryDetect(Wz_File wzFile, WzPreReadResult preRead...
method CreateOffsetCalc (line 22) | public abstract IWzImageOffsetCalc CreateOffsetCalc(Wz_File wzFile, ui...
method CreateOffsetCalc (line 24) | public virtual IWzImageOffsetCalc CreateOffsetCalc(Wz_File wzFile)
method DetectCryptoKeyType (line 29) | public abstract void DetectCryptoKeyType(Wz_File wzFile, Wz_Crypto cry...
method DetectPkg1CryptoKeyType (line 39) | internal static Wz_CryptoKeyType DetectPkg1CryptoKeyType(ReadOnlySpan<...
method TryMatchKey (line 49) | protected static bool TryMatchKey(ReadOnlySpan<byte> sourceBytes, WzSt...
method TryMatchKeys (line 56) | private static Wz_CryptoKeyType TryMatchKeys(ReadOnlySpan<byte> source...
method IsDecryptedStringLegal (line 68) | private static bool IsDecryptedStringLegal(ReadOnlySpan<byte> bytes, W...
method ApplyWireMask (line 83) | private static void ApplyWireMask(ReadOnlySpan<byte> rawBytes, Span<by...
class WzVersionProfiles (line 102) | public static class WzVersionProfiles
method GetCandidates (line 114) | public static IEnumerable<WzVersionProfile> GetCandidates(WzFileFormat...
method GetByName (line 123) | public static WzVersionProfile GetByName(string name)
class Pkg1Profile (line 136) | public sealed class Pkg1Profile : WzVersionProfile
method Pkg1Profile (line 138) | public Pkg1Profile() : base(WzFileFormat.Pkg1, Wz_CryptoKeyType.Unknow...
method CreateIterator (line 142) | public override IWzVersionIterator CreateIterator(Wz_File wzFile)
method TryDetect (line 150) | public override bool TryDetect(Wz_File wzFile, WzPreReadResult preRead...
method CreateOffsetCalc (line 159) | public override IWzImageOffsetCalc CreateOffsetCalc(Wz_File wzFile, ui...
method DetectCryptoKeyType (line 164) | public override void DetectCryptoKeyType(Wz_File wzFile, Wz_Crypto cry...
class Pkg2Profile (line 183) | public sealed class Pkg2Profile : WzVersionProfile
method Pkg2Profile (line 185) | public Pkg2Profile(
method CreateIterator (line 204) | public override IWzVersionIterator CreateIterator(Wz_File wzFile)
method TryDetect (line 215) | public override bool TryDetect(Wz_File wzFile, WzPreReadResult preRead...
method CreateOffsetCalc (line 224) | public override IWzImageOffsetCalc CreateOffsetCalc(Wz_File wzFile, ui...
method DetectCryptoKeyType (line 237) | public override void DetectCryptoKeyType(Wz_File wzFile, Wz_Crypto cry...
method CreateDirStringReader (line 281) | public IPkg2DirStringReader CreateDirStringReader(Wz_File wzFile, Wz_C...
FILE: WzComparerR2.WzLib/Compatibility/WzVersionVerifier.cs
type IWzVersionIterator (line 16) | public interface IWzVersionIterator
method TryGetNextVersion (line 18) | bool TryGetNextVersion();
method Reset (line 19) | void Reset();
method IsMatch (line 22) | bool IsMatch(int wzVersion, uint hashVersion);
class Pkg1VersionIterator (line 29) | public class Pkg1VersionIterator : IWzVersionIterator
method Pkg1VersionIterator (line 41) | public Pkg1VersionIterator(int encryptedVersion)
method Pkg1VersionIterator (line 48) | private Pkg1VersionIterator(int fixedWzVersion, uint fixedHashVersion)
method CreateFixed (line 59) | public static Pkg1VersionIterator CreateFixed(int wzVersion)
method CalcEncryptedVersion (line 69) | private static uint CalcEncryptedVersion(uint hashVersion)
method TryGetNextVersion (line 78) | public bool TryGetNextVersion()
method IsMatch (line 107) | public bool IsMatch(int wzVersion, uint hashVersion)
method Reset (line 117) | public void Reset()
class Pkg2VersionIterator (line 130) | public class Pkg2VersionIterator : IWzVersionIterator
method Pkg2VersionIterator (line 132) | public Pkg2VersionIterator(int wzVersion, Func<IReadOnlyList<uint>> ca...
method TryGetNextVersion (line 149) | public bool TryGetNextVersion()
method IsMatch (line 160) | public bool IsMatch(int wzVersion, uint hashVersion)
method Reset (line 167) | public void Reset()
type IPkg2HashVersionCalc (line 177) | public interface IPkg2HashVersionCalc
method CalcCandidates (line 179) | IReadOnlyList<uint> CalcCandidates(uint hash1, uint hash2);
method Verify (line 180) | bool Verify(uint hash1, uint hash2, uint hashVersion);
class Pkg2HashVersionCalcV1 (line 186) | public sealed class Pkg2HashVersionCalcV1 : IPkg2HashVersionCalc
method CalcCandidates (line 188) | public IReadOnlyList<uint> CalcCandidates(uint hash1, uint hash2)
method Verify (line 193) | public bool Verify(uint hash1, uint hash2, uint hashVersion)
class Pkg2HashVersionCalcV2 (line 202) | public sealed class Pkg2HashVersionCalcV2 : IPkg2HashVersionCalc
method CalcCandidates (line 204) | public IReadOnlyList<uint> CalcCandidates(uint hash1, uint hash2)
method Verify (line 229) | public bool Verify(uint hash1, uint hash2, uint hashVersion)
class Pkg2HashVersionCalcV3 (line 239) | public sealed class Pkg2HashVersionCalcV3 : IPkg2HashVersionCalc
method CalcCandidates (line 241) | public IReadOnlyList<uint> CalcCandidates(uint hash1, uint hash2)
method Verify (line 266) | public bool Verify(ui
Condensed preview — 542 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,985K chars).
[
{
"path": ".gitattributes",
"chars": 378,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs diff=csharp\n\n# St"
},
{
"path": ".gitignore",
"chars": 2980,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": ".gitmodules",
"chars": 111,
"preview": "[submodule \"CharaSimResource\"]\n\tpath = CharaSimResource\n\turl = https://github.com/Kagamia/CharaSimResource.git\n"
},
{
"path": "Build/Common.props",
"chars": 2038,
"preview": "<Project>\n <!-- common c# language build config -->\n <PropertyGroup>\n <AllowUnsafeBlocks>True</AllowUnsafeBlocks>\n "
},
{
"path": "Build/WcR2Plugin.targets",
"chars": 1430,
"preview": "<Project>\n <PropertyGroup>\n <MainProgramOutputDir Condition=\"'$(MainProgramOutputDir)' == ''\">$(SolutionDir)WzCompar"
},
{
"path": "LICENSE",
"chars": 1080,
"preview": "The MIT License (MIT)\n \nCopyright © 2015 Kagamia Studio\n\nPermission is hereby granted, free of charge, to any person obt"
},
{
"path": "README.md",
"chars": 2355,
"preview": "*<s>使用前先大喊 niconiconi! poi! duang!以减少bug发生率</s>* \n\n[ wcR"
},
{
"path": "UpdateLogs/v2.0.9.md",
"chars": 2735,
"preview": "## 2017.7.6\n\n### MapRender\n- 更新至正式版本。\n\n\n## 2017.6.25\n\n### SoundPlayer\n- 重新支持Bass插件,把插件放置在Lib/x86和Lib/x64中生效。\n\n### MapRe"
},
{
"path": "UpdateLogs/v2.1.1.md",
"chars": 414,
"preview": "## 2018.3.15\n久违的积累更新\n\n### 共通\n- 支持了Apng格式动画导出\n\n### WzLib\n- 支持自动检测扩展wz(如map2, map001)的设置\n\n### CharaSim\n- 对于V5技能模拟,提高等级上限至"
},
{
"path": "UpdateLogs/v2.1.md",
"chars": 927,
"preview": "## 2017.10.10\n积累更新\n\n### Network\n- \n\n### Patcher\n- 追加了全世界冒险岛补丁下载地址。\n- 修复了ftp开头的地址无法探测文件更新时间的bug。\n\n### WzLib\n- 兼容2G以上的wz文"
},
{
"path": "WzComparerR2/AnimateEncoderFactory.cs",
"chars": 3737,
"preview": "using System;\nusing System.Collections.Generic;\nusing WzComparerR2.Config;\nusing WzComparerR2.Encoders;\n\nnamespace WzCo"
},
{
"path": "WzComparerR2/CharaSim/CharaEquip.cs",
"chars": 7676,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2/CharaSim/CharaProp.cs",
"chars": 3505,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2/CharaSim/CharaSimLoader.cs",
"chars": 3634,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.WzLib;\nusin"
},
{
"path": "WzComparerR2/CharaSim/Character.cs",
"chars": 27297,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2/CharaSim/CharacterStatus.cs",
"chars": 7555,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Reflection;\n\nnamespace WzComparerR2.Cha"
},
{
"path": "WzComparerR2/CharaSimControl/AControl.cs",
"chars": 1856,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nn"
},
{
"path": "WzComparerR2/CharaSimControl/ACtrlButton.cs",
"chars": 4236,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nn"
},
{
"path": "WzComparerR2/CharaSimControl/ACtrlVScroll.cs",
"chars": 9122,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nn"
},
{
"path": "WzComparerR2/CharaSimControl/AfrmEquip.cs",
"chars": 19673,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing System.Windows.Forms;\nusing"
},
{
"path": "WzComparerR2/CharaSimControl/AfrmItem.cs",
"chars": 28051,
"preview": "using System;\nusing System.Drawing;\nusing System.Collections.Generic;\nusing System.Windows.Forms;\nusing System.Text;\nus"
},
{
"path": "WzComparerR2/CharaSimControl/AfrmStat.cs",
"chars": 17234,
"preview": "using System;\nusing System.Drawing;\nusing System.Collections.Generic;\nusing System.Windows.Forms;\nusing System.Text;\nus"
},
{
"path": "WzComparerR2/CharaSimControl/AfrmTooltip.cs",
"chars": 8009,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Windows.Forms;\nus"
},
{
"path": "WzComparerR2/CharaSimControl/ButtonState.cs",
"chars": 225,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSimControl\n{\n public"
},
{
"path": "WzComparerR2/CharaSimControl/CharaSimControlGroup.cs",
"chars": 7846,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Windows.Forms;\nusing System.Drawing;\nusing System.Text;\nus"
},
{
"path": "WzComparerR2/CharaSimControl/DamageSkinTooltipRender.cs",
"chars": 27904,
"preview": "using System;\nusing System.Drawing;\nusing System.Linq;\nusing WzComparerR2.CharaSim;\nusing Resource = CharaSimResource.R"
},
{
"path": "WzComparerR2/CharaSimControl/FamiliarTooltipRender.cs",
"chars": 12204,
"preview": "using System.Collections.Generic;\nusing System.Drawing;\nusing WzComparerR2.CharaSim;\nusing WzComparerR2.Common;\nusing W"
},
{
"path": "WzComparerR2/CharaSimControl/GearGraphics.cs",
"chars": 31930,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Drawing;\nusing Syste"
},
{
"path": "WzComparerR2/CharaSimControl/GearTooltipRender.cs",
"chars": 31864,
"preview": "using System;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Collections.Generic;\nusing System.Text"
},
{
"path": "WzComparerR2/CharaSimControl/GearTooltipRender2.cs",
"chars": 62289,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Drawing;\nusing System.Drawing.Drawing2D"
},
{
"path": "WzComparerR2/CharaSimControl/ItemMouseEventArgs.cs",
"chars": 740,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Windows.Forms;\nusing WzComparerR2.Chara"
},
{
"path": "WzComparerR2/CharaSimControl/ItemMouseEventHandler.cs",
"chars": 197,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSimControl\n{\n public"
},
{
"path": "WzComparerR2/CharaSimControl/ItemTooltipRender.cs",
"chars": 5711,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Drawing.Drawing2D"
},
{
"path": "WzComparerR2/CharaSimControl/ItemTooltipRender2.cs",
"chars": 26270,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressi"
},
{
"path": "WzComparerR2/CharaSimControl/MobTooltipRenderer.cs",
"chars": 10264,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Drawing;\nusing Syste"
},
{
"path": "WzComparerR2/CharaSimControl/NpcTooltipRenderer.cs",
"chars": 5510,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Drawing;\nusing Syste"
},
{
"path": "WzComparerR2/CharaSimControl/RecipeTooltipRender.cs",
"chars": 4557,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Drawing.Drawing2D"
},
{
"path": "WzComparerR2/CharaSimControl/RenderHelper.cs",
"chars": 1564,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\n\nnamespace WzComparerR2.CharaS"
},
{
"path": "WzComparerR2/CharaSimControl/SetItemTooltipRender.cs",
"chars": 13609,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Drawing.Drawing2D"
},
{
"path": "WzComparerR2/CharaSimControl/SkillTooltipRender.cs",
"chars": 4623,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Drawing.Drawing2D"
},
{
"path": "WzComparerR2/CharaSimControl/SkillTooltipRender2.cs",
"chars": 11837,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing System.Linq;\nusing Resou"
},
{
"path": "WzComparerR2/CharaSimControl/TextBlock.cs",
"chars": 530,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\n\nnamespace WzComparerR2.CharaS"
},
{
"path": "WzComparerR2/CharaSimControl/TooltipRender.cs",
"chars": 711,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.Common;\n\nna"
},
{
"path": "WzComparerR2/Comparer/CompareDifference.cs",
"chars": 1447,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Co"
},
{
"path": "WzComparerR2/Comparer/DifferenceType.cs",
"chars": 221,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Comparer\n{\n public enum D"
},
{
"path": "WzComparerR2/Comparer/EasyComparer.cs",
"chars": 25242,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\nusing System.Net;\nusing System.Draw"
},
{
"path": "WzComparerR2/Comparer/WzFileComparer.cs",
"chars": 25799,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\nusing WzComparerR2.WzLib;\nusing W"
},
{
"path": "WzComparerR2/Comparer/WzPngComparison.cs",
"chars": 208,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Comparer\n{\n public enum W"
},
{
"path": "WzComparerR2/Comparer/WzVirtualNode.cs",
"chars": 3439,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\nusing WzComparerR2.WzLib;\n\nnamesp"
},
{
"path": "WzComparerR2/Config/CharaSimConfig.cs",
"chars": 1917,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimDamageSkinConfig.cs",
"chars": 1717,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimGearConfig.cs",
"chars": 1141,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimItemConfig.cs",
"chars": 1121,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimMobConfig.cs",
"chars": 423,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimNpcConfig.cs",
"chars": 423,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimRecipeConfig.cs",
"chars": 426,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CharaSimSkillConfig.cs",
"chars": 2383,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\n\nname"
},
{
"path": "WzComparerR2/Config/CustomCSSConfig.cs",
"chars": 3351,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Configuration;\nusing System.Drawing;\nusing System.Globaliz"
},
{
"path": "WzComparerR2/Config/ImageHandlerConfig.cs",
"chars": 4200,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\nusing"
},
{
"path": "WzComparerR2/Config/MosaicInfo.cs",
"chars": 798,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\nusing"
},
{
"path": "WzComparerR2/Config/WcR2Config.cs",
"chars": 4816,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Configuration;\nusing System.Drawing;\nusing System.Linq;\nus"
},
{
"path": "WzComparerR2/DBConnection.cs",
"chars": 18459,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\nusing System.Data;\nusing System.Tex"
},
{
"path": "WzComparerR2/Dotnet4Polyfill.cs",
"chars": 682,
"preview": "using System;\n\n#if NET462\nnamespace System.Runtime.InteropServices\n{\n internal static class RuntimeInformation\n {"
},
{
"path": "WzComparerR2/Dotnet6Patches.cs",
"chars": 17868,
"preview": "#if NET6_0_OR_GREATER\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Drawing;\n"
},
{
"path": "WzComparerR2/DownloadingItem.cs",
"chars": 4065,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusing System.Net;\nusing Syst"
},
{
"path": "WzComparerR2/FrmAbout.Designer.cs",
"chars": 10696,
"preview": "namespace WzComparerR2\n{\n partial class FrmAbout\n {\n /// <summary>\n /// Required designer variable."
},
{
"path": "WzComparerR2/FrmAbout.cs",
"chars": 2765,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "WzComparerR2/FrmAbout.resx",
"chars": 31146,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmCustomCSS.Designer.cs",
"chars": 25961,
"preview": "namespace WzComparerR2\n{\n partial class FrmCustomCSS\n {\n /// <summary>\n /// Required designer varia"
},
{
"path": "WzComparerR2/FrmCustomCSS.cs",
"chars": 7796,
"preview": "using System;\nusing System.Drawing;\nusing System.Globalization;\nusing System.Windows.Forms;\nusing WzComparerR2.Config;\n"
},
{
"path": "WzComparerR2/FrmCustomCSS.resx",
"chars": 5898,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmGifClipOptions.Designer.cs",
"chars": 56213,
"preview": "\nnamespace WzComparerR2\n{\n partial class FrmGifClipOptions\n {\n /// <summary>\n /// Required designer"
},
{
"path": "WzComparerR2/FrmGifClipOptions.cs",
"chars": 6867,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "WzComparerR2/FrmGifClipOptions.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmGifMaker.Designer.cs",
"chars": 1428,
"preview": "namespace WzComparerR2\n{\n partial class FrmGifMaker\n {\n /// <summary>\n /// Required designer variab"
},
{
"path": "WzComparerR2/FrmGifMaker.cs",
"chars": 593,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "WzComparerR2/FrmGifMaker.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmGifSetting.Designer.cs",
"chars": 49471,
"preview": "namespace WzComparerR2\n{\n partial class FrmGifSetting\n {\n /// <summary>\n /// Required designer vari"
},
{
"path": "WzComparerR2/FrmGifSetting.cs",
"chars": 9863,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "WzComparerR2/FrmGifSetting.resx",
"chars": 7278,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmOptions.Designer.cs",
"chars": 14659,
"preview": "namespace WzComparerR2\n{\n partial class FrmOptions\n {\n /// <summary>\n /// Required designer variabl"
},
{
"path": "WzComparerR2/FrmOptions.cs",
"chars": 3091,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "WzComparerR2/FrmOptions.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmPatcher.Designer.cs",
"chars": 59244,
"preview": "namespace WzComparerR2\n{\n partial class FrmPatcher\n {\n /// <summary>\n /// Required designer variabl"
},
{
"path": "WzComparerR2/FrmPatcher.cs",
"chars": 31505,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Diagnostics;\nusing System.Drawing;\nusin"
},
{
"path": "WzComparerR2/FrmPatcher.resx",
"chars": 7087,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmQuickViewSetting.Designer.cs",
"chars": 42513,
"preview": "namespace WzComparerR2\n{\n partial class FrmQuickViewSetting\n {\n /// <summary>\n /// Required designe"
},
{
"path": "WzComparerR2/FrmQuickViewSetting.cs",
"chars": 7937,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Data;\nusin"
},
{
"path": "WzComparerR2/FrmQuickViewSetting.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/FrmUpdater.Designer.cs",
"chars": 10252,
"preview": "namespace WzComparerR2\n{\n partial class FrmUpdater\n {\n /// <summary>\n /// Required designer variabl"
},
{
"path": "WzComparerR2/FrmUpdater.cs",
"chars": 9421,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.IO;\nusing System.Reflection;\nusing System.Th"
},
{
"path": "WzComparerR2/FrmUpdater.resx",
"chars": 33089,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/HistoryList.cs",
"chars": 2799,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2\n{\n"
},
{
"path": "WzComparerR2/ImageDragHandler.cs",
"chars": 1692,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Windows.Forms;\nusing System.Drawing;\nus"
},
{
"path": "WzComparerR2/MainForm.Designer.cs",
"chars": 177453,
"preview": "namespace WzComparerR2\n{\n partial class MainForm\n {\n /// <summary>\n /// 必需的设计器变量。\n /// </sum"
},
{
"path": "WzComparerR2/MainForm.cs",
"chars": 124538,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Diagnostic"
},
{
"path": "WzComparerR2/MainForm.resx",
"chars": 21208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/MemoryTributary.cs",
"chars": 6294,
"preview": "\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.InteropServices;\n\nnamespace Syst"
},
{
"path": "WzComparerR2/Patcher/Builder/BuildInstruction.cs",
"chars": 964,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\n\nnamespace WzComparerR2.Patcher.Bui"
},
{
"path": "WzComparerR2/Patcher/Builder/BuildType.cs",
"chars": 263,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher.Builder\n{\n public"
},
{
"path": "WzComparerR2/Patcher/Builder/CheckSum.cs",
"chars": 5822,
"preview": "using System;\nusing System.Buffers;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.InteropServ"
},
{
"path": "WzComparerR2/Patcher/Builder/InflateStream.cs",
"chars": 4370,
"preview": "using System;\nusing System.Buffers;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\n\nna"
},
{
"path": "WzComparerR2/Patcher/Builder/PatchPart.cs",
"chars": 464,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher.Builder\n{\n public"
},
{
"path": "WzComparerR2/Patcher/Builder/PatchType.cs",
"chars": 233,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher.Builder\n{\n public"
},
{
"path": "WzComparerR2/Patcher/Builder/StreamUtils.cs",
"chars": 1953,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\n\nnamespace WzComparerR2.Patcher.Bui"
},
{
"path": "WzComparerR2/Patcher/Builder/WzPatcherReader.cs",
"chars": 3396,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\n\nnamespace WzComparerR2.Patcher.Bui"
},
{
"path": "WzComparerR2/Patcher/Builder/WzPatcherWriter.cs",
"chars": 5362,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\nusing System.IO.Compression;\n\nnames"
},
{
"path": "WzComparerR2/Patcher/PatchPartContext.cs",
"chars": 1072,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher\n{\n public class P"
},
{
"path": "WzComparerR2/Patcher/PatcherSetting.cs",
"chars": 4262,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Configuration;\nusing System.Globalization;\nusing System.Linq;\n\n"
},
{
"path": "WzComparerR2/Patcher/PatcherSettingCollection.cs",
"chars": 495,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\nusing"
},
{
"path": "WzComparerR2/Patcher/PatchingEventArgs.cs",
"chars": 929,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher\n{\n public class P"
},
{
"path": "WzComparerR2/Patcher/PatchingState.cs",
"chars": 493,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Patcher\n{\n public enum Pa"
},
{
"path": "WzComparerR2/Patcher/ReversePatcherBuilder.cs",
"chars": 13203,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.Patcher.Builder;\nusing System.IO;"
},
{
"path": "WzComparerR2/Patcher/WzPatcher.cs",
"chars": 42698,
"preview": "using System;\nusing System.Buffers;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing System."
},
{
"path": "WzComparerR2/PictureBoxEx.cs",
"chars": 23597,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropService"
},
{
"path": "WzComparerR2/PluginLoadContext.cs",
"chars": 1421,
"preview": "#if NET6_0_OR_GREATER\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Syste"
},
{
"path": "WzComparerR2/Program.cs",
"chars": 5522,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing Syst"
},
{
"path": "WzComparerR2/Properties/AssemblyInfo.cs",
"chars": 990,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// 有关程序集的常规信息通过以"
},
{
"path": "WzComparerR2/Properties/Resources.Designer.cs",
"chars": 7805,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// 此代码由工具生成。\n/"
},
{
"path": "WzComparerR2/Properties/Resources.resx",
"chars": 9605,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2/QueryPerformance.cs",
"chars": 1684,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Runtime.InteropServices;\n\nnamespace WzC"
},
{
"path": "WzComparerR2/SoundPlayer/BassSoundPlayer.cs",
"chars": 7775,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Timers;\nusing ManagedBass;\nusing System"
},
{
"path": "WzComparerR2/SoundPlayer/CustomSoundFile.cs",
"chars": 889,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.IO;\nusing WzComparerR2.WzLib;\n\nnamespac"
},
{
"path": "WzComparerR2/SoundPlayer/ISoundFile.cs",
"chars": 236,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2\n{\n public interface ISoun"
},
{
"path": "WzComparerR2/SoundPlayer/ISoundPlayer.cs",
"chars": 537,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2\n{\n public interface ISoun"
},
{
"path": "WzComparerR2/SoundPlayer/PlayState.cs",
"chars": 187,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2\n{\n public enum PlayState\n"
},
{
"path": "WzComparerR2/Updater.cs",
"chars": 8380,
"preview": "using System;\nusing System.IO;\nusing System.Net.Http;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusi"
},
{
"path": "WzComparerR2/WzComparerR2.csproj",
"chars": 5413,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>WinExe</OutputType>\n <TargetFrameworks>net462;ne"
},
{
"path": "WzComparerR2/app.config",
"chars": 358,
"preview": "<?xml version=\"1.0\"?>\n<configuration>\n <startup>\n <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.6.2"
},
{
"path": "WzComparerR2/app.manifest",
"chars": 404,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\" xmlns:a"
},
{
"path": "WzComparerR2.Avatar/Action.cs",
"chars": 393,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.Avatar\n{\n public class Ac"
},
{
"path": "WzComparerR2.Avatar/ActionFrame.cs",
"chars": 1153,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\n\nnamespace WzComparerR2.Avatar"
},
{
"path": "WzComparerR2.Avatar/AvatarCanvas.cs",
"chars": 50908,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Collections.ObjectModel;\nusing System.D"
},
{
"path": "WzComparerR2.Avatar/AvatarPart.cs",
"chars": 1449,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.WzLib;\nusin"
},
{
"path": "WzComparerR2.Avatar/Bone.cs",
"chars": 1710,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\n\nnamespace WzComparerR2.Avatar"
},
{
"path": "WzComparerR2.Avatar/Entry.cs",
"chars": 17810,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing DevComponents.DotNetBar;"
},
{
"path": "WzComparerR2.Avatar/Properties/AssemblyInfo.cs",
"chars": 1000,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// 有关程序集的常规信息通过以"
},
{
"path": "WzComparerR2.Avatar/Properties/Resources.Designer.cs",
"chars": 4165,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// 此代码由工具生成。\n/"
},
{
"path": "WzComparerR2.Avatar/Properties/Resources.resx",
"chars": 7033,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2.Avatar/Skin.cs",
"chars": 394,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.WzLib;\n\nnam"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarCodeForm.Designer.cs",
"chars": 7522,
"preview": "namespace WzComparerR2.Avatar.UI\n{\n partial class AvatarCodeForm\n {\n /// <summary>\n /// Required de"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarCodeForm.cs",
"chars": 1145,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Text;\nu"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarCodeForm.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarContainer.Designer.cs",
"chars": 870,
"preview": "namespace WzComparerR2.Avatar.UI\n{\n partial class AvatarContainer\n {\n /// <summary>\n /// 必需的设计器变量。\n"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarContainer.cs",
"chars": 3816,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Drawing"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarForm.Designer.cs",
"chars": 44476,
"preview": "namespace WzComparerR2.Avatar.UI\n{\n partial class AvatarForm\n {\n /// <summary>\n /// Required design"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarForm.cs",
"chars": 48261,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Linq;\nu"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarForm.resx",
"chars": 6090,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarPartButtonItem.Designer.cs",
"chars": 1870,
"preview": "namespace WzComparerR2.Avatar.UI\n{\n partial class AvatarPartButtonItem\n {\n /// <summary>\n /// 必需的设计"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarPartButtonItem.cs",
"chars": 1271,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Text;\nu"
},
{
"path": "WzComparerR2.Avatar/UI/AvatarPartButtonItem.resx",
"chars": 5874,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "WzComparerR2.Avatar/WzComparerR2.Avatar.csproj",
"chars": 2412,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <TargetFrameworks>net462;net6.0-windows;net8.0-windows</TargetF"
},
{
"path": "WzComparerR2.Common/Animation/Frame.cs",
"chars": 3723,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\nus"
},
{
"path": "WzComparerR2.Common/Animation/FrameAnimationData.cs",
"chars": 2411,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing WzComparerR2.WzLib;\nusing M"
},
{
"path": "WzComparerR2.Common/Animation/FrameAnimator.cs",
"chars": 3620,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Collections.ObjectMo"
},
{
"path": "WzComparerR2.Common/Animation/ISpineAnimationData.cs",
"chars": 295,
"preview": "using System;\nusing WzComparerR2.Common;\n\nnamespace WzComparerR2.Animation\n{\n public interface ISpineAnimationData\n "
},
{
"path": "WzComparerR2.Common/Animation/ISpineAnimator.cs",
"chars": 706,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace WzComparerR2.Animation"
},
{
"path": "WzComparerR2.Common/Animation/KeyFrame.cs",
"chars": 247,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace WzComparerR2.Animation"
},
{
"path": "WzComparerR2.Common/Animation/MaplestoryCanvasVideoLoader.cs",
"chars": 8921,
"preview": "using System;\nusing System.Buffers;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.InteropSe"
},
{
"path": "WzComparerR2.Common/Animation/ModelBound.cs",
"chars": 2320,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.Xna.Framework;\n\nn"
},
{
"path": "WzComparerR2.Common/Animation/SpineAnimationDataV2.cs",
"chars": 1944,
"preview": "using System;\nusing WzComparerR2.Common;\nusing WzComparerR2.WzLib;\n\nusing Microsoft.Xna.Framework.Graphics;\nusing Spine"
},
{
"path": "WzComparerR2.Common/Animation/SpineAnimationDataV4.cs",
"chars": 1941,
"preview": "using System;\nusing WzComparerR2.Common;\nusing WzComparerR2.WzLib;\n\nusing Microsoft.Xna.Framework.Graphics;\nusing Spine"
},
{
"path": "WzComparerR2.Common/Animation/SpineAnimatorV2.cs",
"chars": 8471,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing WzCompar"
},
{
"path": "WzComparerR2.Common/Animation/SpineAnimatorV4.cs",
"chars": 8160,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing WzCompar"
},
{
"path": "WzComparerR2.Common/Animation/WzSpineTextureLoader.cs",
"chars": 2869,
"preview": "using System;\nusing WzComparerR2.Common;\nusing WzComparerR2.Rendering;\nusing WzComparerR2.WzLib;\n\nusing Microsoft.Xna.F"
},
{
"path": "WzComparerR2.Common/BitmapOrigin.cs",
"chars": 2412,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.WzLib;\nusin"
},
{
"path": "WzComparerR2.Common/Calculator.cs",
"chars": 13623,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Text.RegularExpressions;\n\nnamespace WzC"
},
{
"path": "WzComparerR2.Common/CharaSim/Addition.cs",
"chars": 12416,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Ch"
},
{
"path": "WzComparerR2.Common/CharaSim/AdditionType.cs",
"chars": 293,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum A"
},
{
"path": "WzComparerR2.Common/CharaSim/AlienStone.cs",
"chars": 196,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2.Common/CharaSim/AlienStoneGrade.cs",
"chars": 572,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum A"
},
{
"path": "WzComparerR2.Common/CharaSim/DamageSkin.cs",
"chars": 30202,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Drawing;\nusing WzComparerR2.WzLib;\nusin"
},
{
"path": "WzComparerR2.Common/CharaSim/ExclusiveEquip.cs",
"chars": 1472,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamesp"
},
{
"path": "WzComparerR2.Common/CharaSim/Familiar.cs",
"chars": 3423,
"preview": "using System;\nusing System.Text.RegularExpressions;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.CharaSim\n{\n pu"
},
{
"path": "WzComparerR2.Common/CharaSim/FormulaVersion.cs",
"chars": 187,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum F"
},
{
"path": "WzComparerR2.Common/CharaSim/Gear.cs",
"chars": 34049,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.D"
},
{
"path": "WzComparerR2.Common/CharaSim/GearGrade.cs",
"chars": 633,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum G"
},
{
"path": "WzComparerR2.Common/CharaSim/GearLevelInfo.cs",
"chars": 3168,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Ch"
},
{
"path": "WzComparerR2.Common/CharaSim/GearPropType.cs",
"chars": 3866,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Text;\r\n\r\nnamespace WzComparerR2.CharaSim\r\n{\r\n public "
},
{
"path": "WzComparerR2.Common/CharaSim/GearSealedInfo.cs",
"chars": 1865,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Ch"
},
{
"path": "WzComparerR2.Common/CharaSim/GearState.cs",
"chars": 205,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum G"
},
{
"path": "WzComparerR2.Common/CharaSim/GearType.cs",
"chars": 13022,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum G"
},
{
"path": "WzComparerR2.Common/CharaSim/HyperSkillType.cs",
"chars": 210,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum H"
},
{
"path": "WzComparerR2.Common/CharaSim/Item.cs",
"chars": 6657,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.C"
},
{
"path": "WzComparerR2.Common/CharaSim/ItemBase.cs",
"chars": 628,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public abstra"
},
{
"path": "WzComparerR2.Common/CharaSim/ItemBaseType.cs",
"chars": 262,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum I"
},
{
"path": "WzComparerR2.Common/CharaSim/ItemPropType.cs",
"chars": 525,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum I"
},
{
"path": "WzComparerR2.Common/CharaSim/ItemSpecType.cs",
"chars": 284,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum I"
},
{
"path": "WzComparerR2.Common/CharaSim/ItemStringHelper.cs",
"chars": 51033,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Text;\r\n\r\nnamespace WzComparerR2.CharaSim\r\n{\r\n public "
},
{
"path": "WzComparerR2.Common/CharaSim/Mob.cs",
"chars": 7884,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing WzCompar"
},
{
"path": "WzComparerR2.Common/CharaSim/MobElemAttr.cs",
"chars": 1531,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2.Common/CharaSim/Npc.cs",
"chars": 2648,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing WzCompar"
},
{
"path": "WzComparerR2.Common/CharaSim/Potential.cs",
"chars": 5868,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Ch"
},
{
"path": "WzComparerR2.Common/CharaSim/Recipe.cs",
"chars": 4401,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.Ch"
},
{
"path": "WzComparerR2.Common/CharaSim/RecipeItemInfo.cs",
"chars": 325,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
},
{
"path": "WzComparerR2.Common/CharaSim/RecipePropType.cs",
"chars": 302,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public enum R"
},
{
"path": "WzComparerR2.Common/CharaSim/SetItem.cs",
"chars": 16602,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nusing WzComparerR2.WzLib;\n\nnamespace WzComparerR2.C"
},
{
"path": "WzComparerR2.Common/CharaSim/SetItemActiveSkill.cs",
"chars": 290,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace WzComparerR2.CharaSim\n{\n public class "
}
]
// ... and 342 more files (download for full content)
About this extraction
This page contains the full source code of the Kagamia/WzComparerR2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 542 files (3.6 MB), approximately 971.7k tokens, and a symbol index with 3592 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.