Skip to content

Releases: BAKAOLC/STS2-RitsuLib

Development build (dev)

16 May 10:38
acfbea9

Choose a tag to compare

Pre-release

This is an automated development build from branch dev.

  • Development Version: 9999.0.0-dev.25959792788+acfbea9d (independent from stable release versions)

  • Current Stable Line in repo: 0.2.31

  • Purpose: quick testing and integration validation.

  • Stability: may change frequently and can include breaking changes.

  • Install target: developers/testers only.

  • Repository: BAKAOLC/STS2-RitsuLib

  • Commit: acfbea9d

  • Workflow Run: #25959792788

0.2.31

14 May 12:23
v0.2.31
8fbbab7

Choose a tag to compare

  • Removed the dependency on Steamworks.NET, which allows for non-Steam platforms (especially Android porting) to be supported.
    • Related functionality has been modified to use soft dependencies, and for unsupported platforms, the functionality will be automatically disabled.
    • Cloud save functionality will try to use the cloud save functionality provided by the host game.
  • Adjusted the logic and scheduling of some patches to provide specific handling support for mobile porting.
  • Synchronized the implementation of many TargetType and related helper methods to allow users to more conveniently select some target types.
  • Reimplemented the manifest build logic to avoid potential infinite recursion issues during compilation in some environments.
  • Fixed custom CardPile not updating count when content changes.
  • Extended Reward functionality to allow custom Reward definitions.
    • Note: If you need specific synchronization logic, you need to implement it yourself, the native only supports notifying the selected Reward.
  • Fixed some logical issues in AncientEvent and related toolchains.
  • Added Chinese language descriptions to most internal comments.

  • 摘除了对 Steamworks.NET 的依赖,以提供对非 Steam 平台(特别是 Android 移植)的支持
    • 相关功能已改为通过软依赖方式实现,对于不支持的平台,会自动禁用相关功能
    • 云存档功能会尝试使用宿主游戏提供的云存档功能
  • 调整了部分 patch 的工作逻辑和调度,以提供对移动版移植的特定处理适配
  • 同步实现了大量 TargetType 和相关辅助方法以允许用户更便捷的选择部分目标类型
  • 重新实现了 manifest 的构建逻辑,以避免编译时部分环境可能产生无限递归的问题
  • 修正了自定义 CardPile 不会在内容变化时主动更新计数的问题
  • 扩展了 Reward 的功能支持,现在允许自定义 Reward
    • 注意:如果你需要特定的同步逻辑,目前需要自己实现,原生仅支持通知选择了 Reward
  • 修正了 AncientEvent 及其相关工具链的部分工作逻辑问题
  • 内部大部分注释现在补充了中文版本的描述

Full Changelog: v0.2.30...v0.2.31

0.2.30

11 May 19:42
v0.2.30
59b7130

Choose a tag to compare

  • Fixed #36, now the dropdown list control in the settings menu has a maximum height limit, and the scrolling list and virtual list optimizations have been added to make it able to handle a large number of options.
  • Fixed the synchronization issue in certain cases by correcting the SavedProperty processing logic.
  • Added the SmartFormat extension registration toolchain, now it is easier to register SmartFormat extensions.
  • Optimized the interface and methods of some content registries, now the different types of registries seem to be more unified on the call chain.
  • The conversion methods between CardKeyword, CardTag, and CardPile types and Enums types have been supplemented, and some inconsistent processing logic has been corrected.

  • 修复 #36,现在设置菜单的下拉列表控件有最大高度限制,并且增加了滚动列表和虚拟列表优化,以使其能够处理大量的选项
  • 修正了 SavedProperty 的处理逻辑以解决特定情况下的不同步问题
  • 增加了 SmartFormat 扩展注册工具链,现在可以更方便地注册 SmartFormat 扩展
  • 补充优化了部分内容注册器的接口和方法,现在不同类型的注册器的在调用链上显得会更为统一
  • 现有的 CardKeywordCardTagCardPile 现在与 Enums 类型的互转换方法现在都得到了补充,并且修正了部分并不统一的处理逻辑

What's Changed

Full Changelog: v0.2.29...v0.2.30

0.2.29

09 May 18:38
v0.2.29
ddef6ef

Choose a tag to compare

  • Modify the target version of 0.105.0 to 0.105.1 and delete the support for 0.105.0
  • Fixed the display effect error of the card outline rule when it is生效时部分情况下的显示效果错误问题
  • Optimized and adjusted a portion of the node factory logic

  • 修改 0.105.0 目标为 0.105.1,并删除 0.105.0 目标支持
  • 修复了卡牌 Outline 规则生效时部分情况下的显示效果错误问题
  • 优化调整了一部分节点工厂逻辑

Full Changelog: v0.2.28...v0.2.29

0.2.28

08 May 19:15
v0.2.28
56ca51d

Choose a tag to compare

  • Fixed an issue where logs could generate large amounts of unbounded noise under some weak-network conditions.
  • Fixed an issue where, during handshake negotiation, attempts to initiate the handshake could retry without limit in some cases.
  • Fixed an issue where, after a player disconnects, attempts to send messages to that player could retry without limit.
  • setting system of runtime interop now supports I18N protocol, allowing mod authors to localize the settings interface using I18N system.
  • setting system of runtime interop now supports default value protocol, allowing mod authors to set default value target in the settings interface.
  • refactored some persistence related code, unified the structure and allowed using a unified interface to handle persistence operations.
    • now SaveScope enum has two new enum values: RunSidecar and InMemory, representing session-level persistence and in-memory persistence respectively.
  • adjusted the log output level and timing of the patcher system, greatly reducing the log noise during normal operation.
    • most debug information is now downgraded to DEBUG level, if needed, please pass the --log-level parameter at runtime to adjust the log level.

  • 修正了部分弱网环境下会在日志无限制产生大量噪音的问题
  • 修正了握手协商过程中,部分情况下会无限制的尝试发起握手协商的问题
  • 修正了在玩家断连后,会重复尝试再次发送消息至该玩家的问题
  • 设置系统的弱依赖引用协议现在增加了 I18N 协议支持,以允许 mod 作者使用 I18N 系统来本地化设置界面
  • 设置系统的弱依赖引用协议现在支持了默认值协议支持,以允许 mod 作者在设置界面中设置默认值目标
  • 重构了部分持久化系统的相关代码,将结构改为更统一的形式,并允许使用统一接口来处理持久化操作
    • 现在 SaveScope 枚举增加了 RunSidecarInMemory 两个新的枚举值,分别表示对局级持久化和内存持久化
  • 调整了 Patcher 系统的日志输出 Level 和时机,现在在正常运行过程中的日志噪音被大幅降低
    • 大部分调试信息降低至了 DEBUG 级别,如果有需要,请在运行时传递 --log-level 参数来调整日志级别

Full Changelog: v0.2.27...v0.2.28

0.2.27

08 May 03:00
v0.2.27
881d32d

Choose a tag to compare

  • Improve the implementation details of AnyPlayer and Anyone targeting logic
  • Add support for extra icon amount labels on the bottom right corner, and handle conflicts with vanilla UI
  • Follow STS2 0.105.0: replace removed Hook.AfterCardRetained with Hook.AfterFlush, add BeforeFlush patch, expose new BeforeFlushEvent and CardsFlushedEvent; the legacy CardRetainedEvent is replayed per retained card and marked [Obsolete]
  • Follow STS2 0.105.0 Badge constructor change: RuntimeTemplateBadge and BadgePool.CreateAll postfix now thread the new won flag through the matching base ctor signature, eliminating MissingMethodException on the death screen for mods that register ModBadgeTemplate
  • Switch version-conditional compilation to cumulative interval macros (STS2_AT_LEAST_<ver>) under build/RitsuLib.CompatDefines.targets; legacy single-target STS2_V_<ver> macros are gone
  • Maintained version is now 0.105.0, and the 0.104.0 branch will be treated as a Compat branch and will be maintained at the same level as 0.103.2
    • Therefore, code still targeting 0.104.0 needs to use the new nuget package

  • 优化 AnyPlayer 和 Anyone 的部分逻辑的实现细节
  • 补充了右下角的额外数值角标槽位,并且增加了对不同原版角标的默认占位处理,在冲突时会报告错误
  • 跟随 STS2 0.105.0 的钩子改动:用 Hook.AfterFlush 取代被移除的 Hook.AfterCardRetained,并补打 BeforeFlush,新增 BeforeFlushEventCardsFlushedEvent;原 CardRetainedEvent 在 0.105+ 上按张从 AfterFlush.retainedCards 回放,并标记 [Obsolete] 引导订阅方迁移到 CardsFlushedEvent
  • 跟随 STS2 0.105.0 Badge 构造器签名变更:RuntimeTemplateBadgeBadgePool.CreateAll 后缀现按新 won 参数透传到匹配的基类构造函数,修复 mod 登记 ModBadgeTemplate 后在死亡结算页因 MissingMethodException 闪退的隐患
  • 把版本条件编译统一改为累积区间宏(STS2_AT_LEAST_<ver>),归口到 build/RitsuLib.CompatDefines.targets;旧的单点版本宏 STS2_V_<ver> 已全部移除
  • 主要面向版本已修改为 0.105.0,现行的 0.104.0 分支将转变为 Compat 分支并与 0.103.2 视为同等维护等级处理。
    • 因此仍然面向 0.104.0 的代码需要使用新的 nuget 包

Full Changelog: v0.2.26...v0.2.27

0.2.26

07 May 11:54
v0.2.26
cad702f

Choose a tag to compare

  • Fix some issues with max hand size calculation and modifier registration
  • Fix some issues with version migration and modifier registration
  • Extra icon amount labels now support custom color and outline color

  • 修复了在某些情况下,手牌数量修改会重复生效的问题
  • 修复了在设置版本迁移过程中会错误的触发重复注册的问题
  • 额外数值角标功能现在支持自定义颜色和描边颜色了

Full Changelog: v0.2.25...v0.2.26

0.2.25

06 May 12:59
v0.2.25
464cca6

Choose a tag to compare

  • Fixed some issues with HookedSingletonModel that were causing it to not work correctly

  • 修正了 HookedSingletonModel 的部分错误实现,现在应当能正常工作了

Full Changelog: v0.2.24...v0.2.25

0.2.24

06 May 10:31
0a09945

Choose a tag to compare

  • Redesigned build workflow, now the Compat target product's manifest will have a (STS2 <version> compat) suffix in the name field to clearly indicate that it is a compatibility package for a specific STS2 version.
  • Added a Loader project, which is used to load the corresponding STS2-RitsuLib.dll based on the game version.
    • It will first look for the STS2-RitsuLib.dll corresponding to the current game version.
    • If not found, it will select the one with the version closest to but lower than the current version.
    • If none is found, it will load the latest version.
  • The CI build artifact now contains a STS2-RitsuLib.<version>.variant-pack.zip file
    • Applicable to users, to reduce the need for users to manually download the corresponding package and switch files according to the version.
    • Not applicable to development environment, because the base dll will be replaced with Loader, which will cause compilation failure.
    • Only experimental support, it may be removed after the Steam Workshop is online.
  • Added a website deployment workflow, which will deploy the documentation as a static website to GitHub Pages.
  • Added an I18N table bridge, which is used to bridge the I18N object to the game's LocTable as a virtual LocTable.

  • 重新修改了编译工作流,现在产出的 Compat 包的 manifest 中 name 字段会添加 (STS2 <version> compat) 后缀以明确指出是针对特定 STS2 版本的兼容包
  • 增加了 Loader 项目,用于根据游戏版本选择加载对应的 STS2-RitsuLib.dll
    • 会优先查找当前游戏版本对应的 STS2-RitsuLib.dll
    • 如果没有找到,则从低于该版本且最接近的版本中选择一个
    • 如果都没有找到,则加载最新版本
  • CI 构建产物现在会包含一个 STS2-RitsuLib.<version>.variant-pack.zip 文件
    • 适用于用户,以减少用户必须根据版本手动下载对应包和来回切换文件的操作
    • 无法用于开发环境使用,因为基础 dll 会被替换为 Loader,这会导致编译失败
    • 仅为实验性支持,Steam 创意工坊上线后可能会被移除
  • 修改了文档,添加了网站部署工作流,现在会把相关文档作为静态网站部署到 GitHub Pages
  • 增加了一个 I18N 表桥接器,用于将 I18N 对象桥接到游戏内 LocTable 中作为虚拟 LocTable 使用

Full Changelog: v0.2.23...v0.2.24

0.2.23

05 May 10:47
v0.2.23
7a199ca

Choose a tag to compare

  • Added an extra corner amount labels system, allowing models to display extra amounts on the three corners other than the bottom right.
  • Added HookedSingletonModel for simplifying singleton model hook subscription registration
  • Added a set of JSON utilities (STS2RitsuLib.Utils.Json)
    • JSON Pointer: JsonPointer (RFC 6901, https://www.rfc-editor.org/rfc/rfc6901)
    • JSON Merge Patch: JsonMergePatch (RFC 7386, https://www.rfc-editor.org/rfc/rfc7386)
    • JSON Patch: JsonPatch (RFC 6902, https://www.rfc-editor.org/rfc/rfc6902)
    • JSON Canonicalization (JCS): JsonCanonicalizer (RFC 8785, https://www.rfc-editor.org/rfc/rfc8785)
    • I-JSON Validation: JsonIJsonValidator (RFC 7493, https://www.rfc-editor.org/rfc/rfc7493)
  • Extended the Mod Settings registration capability without dependencies, and added ModData persistence support in non-dependency environments
    • No related documentation yet, as I really don't know how to write documentation

  • 添加了一个额外角标数值系统,使得支持的模型允许在除了右下角以外的三个角上显示额外的数值。
  • 添加了 HookedSingletonModel 用于简化单例模型的钩子订阅注册
  • 添加了一组 JSON 工具类(STS2RitsuLib.Utils.Json
    • JSON Pointer:JsonPointer(RFC 6901,https://www.rfc-editor.org/rfc/rfc6901
    • JSON Merge Patch:JsonMergePatch(RFC 7386,https://www.rfc-editor.org/rfc/rfc7386
    • JSON Patch:JsonPatch(RFC 6902,https://www.rfc-editor.org/rfc/rfc6902
    • JSON 规范化(JCS):JsonCanonicalizer(RFC 8785,https://www.rfc-editor.org/rfc/rfc8785
    • I-JSON 校验:JsonIJsonValidator(RFC 7493,https://www.rfc-editor.org/rfc/rfc7493
  • 继续扩展了无依赖时的 Mod 设置注册能力,并增加了无依赖环境时的 ModData 持久化能力支持
    • 暂时没有相关文档,因为我真不会写文档

Full Changelog: v0.2.21...v0.2.23