150 - API文档汉化 - 扬升(凯茜模组)
Updated 6 days ago扬升(凯茜模组)
扬升(Ascension)是凯茜模组在源码中的称呼。
添加新挑战
该API支持通过ChallengeManager类为凯茜模组添加新挑战。您可通过两种方式调用ChallengeManager.Add添加挑战:传入新的AscensionChallengeInfo对象,或直接传入挑战的各个属性(系统将自动构建信息对象)。添加成功后,挑战将自动出现在挑战选择界面。
若采用传入AscensionChallengeInfo对象的重载方法,请注意类型为AscensionChallenge的“challengeType”字段完全无效。该枚举值将由ChallengeManager自动设置,以确保与其他模组创建的挑战不发生冲突。因此,您必须保存ChallengeManager.Add方法返回的ID,以便后续引用。
若需实现可叠加挑战,请在添加时将stackable标志设为“true”。这将使该挑战在选择界面出现两次。需注意,当前可叠加挑战最多仅允许叠加两层。
您需要为挑战功能编写所有必要的补丁。编写补丁时,必须在执行任何操作前确认挑战已激活。该检测完全由您负责——API不提供自动检测功能。
当挑战触发游戏规则变更时,应当及时通知玩家。可调用DiskCardGame中的ChallengeActivationUI辅助类实现提示功能。
private static AscensionChallenge ID = ChallengeManager.Add
(
Plugin.PluginGuid,
"虚拟挑战",
"该挑战不产生实际效果",
15,
Resources.Load<Texture2D>("纹理路径")
);
[HarmonyPatch(...)]
public static void DoSomething()
{
if (AscensionSaveData.Data.ChallengeIsActive(ID))
{
ChallengeActivationUI.Instance.ShowActivation(ID);
// 实际功能实现
}
}
添加初始牌组
初始牌组的配置较为简单,仅需包含标题、图标及三张卡牌。可选添加“解锁等级”参数,用于控制牌组在玩家达到特定挑战等级前不可用。该参数默认为0,表示牌组始终可用。
如需使用其他模组的卡牌构建初始牌组,或无法确保卡牌在牌组加载时已加载完成?您可通过创建依赖项强制BepInEx优先加载其他模组。但若目标模组使用JSON Loader,则需改为依赖JSON Loader——在某些极端情况下可能导致循环依赖问题。为避免处理复杂场景,您可直接传入三张卡牌的名称(字符串)而非CardInfo对象来创建牌组。这将实现“延迟加载”机制,实际牌组信息会延迟至牌组选择界面加载前才构建。
以下展示两种实现方式:
StarterDeckInfo myDeck = ScriptableObject.CreateInstance<StarterDeckInfo>();
myDeck.title = "Pelts";
myDeck.iconSprite = TextureHelper.GetImageAsSprite("art/pelts_deck_icon.png", TextureHelper.SpriteType.StarterDeckIcon);
myDeck.cards = new () { CardLoader.GetCardByName("PeltWolf"), CardLoader.GetCardByName("PeltHare"), CardLoader.GetCardByName("PeltHare") };
StarterDeckManager.Add(MyPlugin.Guid, myDeck);
StarterDeckManager.New(MyPlugin.Guid, "Pelts", "art/pelts_deck_icon.png", new string[] { "PeltWolf", "PeltHare", "PeltHare"});
为凯茜模组添加自定义界面
本API支持在游戏运行开始前添加新界面。通过AscensionScreenSort属性可控制界面排序。自定义界面将按以下顺序执行:
- 初始牌组选择
- 挑战选择
- 自定义界面
- 要求前置
- 倾向前置
- 无偏好(默认)
- 倾向后置
- 要求后置
- 开始运行
创建自定义界面需编写继承自AscensionRunSetupScreenBase(其本身继承自MonoBehavior)的特殊界面行为类。必须重写以下内容:
- headerText:界面显示的标题文本
- showCardDisplayer:若需显示卡牌信息面板则返回true
- showCardPanel:若需显示可滚动卡牌选择面板则返回true
另可重写InitializeScreen虚方法构建界面内容。
虽然界面核心功能需自行实现,但系统已提供以下标准化组件:继续/返回按钮、显示当前挑战等级的标题栏、随挑战等级变化的页脚栏、以及界面标题。根据上述属性设置,还可自动获得可滚动卡牌选择面板和卡牌信息展示面板。
完成自定义界面类后,需通过以下方式在AscensionScreenManager注册:
AscensionScreenManager.RegisterScreen<MyCustomScreen>();
Pages
- 0 - 邪恶冥刻模组简体中文语言包Wiki
- 100 - API文档汉化 - 首页
- 110 - API文档汉化 - 入门指南
- 120 - API文档汉化 - 卡牌
- 121 - API文档汉化 - 自定义卡牌费用系统
- 122 - API文档汉化 - 会说话的卡牌
- 123 - API文档汉化 - 自定义毛皮
- 130 - API文档汉化 - 能力
- 131 - API文档汉化 - 自定义触发器
- 132 - API文档汉化 - 自定义狙击逻辑
- 133 - API文档汉化 - 伤害护盾行为
- 134 - API文档汉化 - 卡槽修改功能
- 135 - API文档汉化 - 触发器与执行顺序
- 140 - API文档汉化 - 自定义/扩展属性
- 150 - API文档汉化 - 扬升(凯茜模组)
- 160 - API文档汉化 - 地图与遭遇战
- 170 - API文档汉化 - 对手
- 180 - API文档汉化 - 图腾
- 190 - API文档汉化 - 道具
- 1A0 - API文档汉化 - 规则书
- 1A1 - API文档汉化 - 添加自定义页面
- 1A2 - API文档汉化 - 添加文本重定向功能
- 1B0 - API文档汉化 - 本地化
- 1B0 - API文档汉化 - 声音
- 1B0 - API文档汉化 - 资产包
- 1C0 - API文档汉化 - 其他特性
- 200 - JSONLoader文档汉化 - Wiki
- 201 - JSONLoader文档汉化 - 枚举值