Skip to content

Commit 9185158

Browse files
Act 3 talking card stuff
1 parent 63819ee commit 9185158

5 files changed

Lines changed: 54 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@
1212
- Added ModificationType.SetSharedRulebook - used for slot modifications that should share their rulebook entry with other slot modifications
1313
- Added support for multiple rulebook sprites for slot modifications (SetRulebookP03Sprite, SetRulebookGrimoraSprite, SetRulebookMagnificusSprite)
1414
- Added RuleBookController.Instance.OpenToCustomPage
15+
- Added CustomDiskTalkingCard abstract class
16+
- Added TalkingCardManager.NewDisk and TalkingCardManager.CreateDisk
1517
- Fixed RuleBook construction patches having lower patch priority than intended
1618
- Fixed slot modification interactable being enabled when no rulebook entry exists
1719
- Fixed slot modification rulebook pages not working in Act 3
1820
- Fixed rulebook sprites being smaller than normal after flipping to a slot modification rulebook page
21+
- Fixed DiskTalkingCards created through the API not correctly working under certain conditions
1922
- Moved ConsumableItemManager patches to a separate ConsumableItemPatches class
2023
- Modified implementation of rulebook fill page logic to let modders patch the API logic
2124
- Patch 'RuleBookManagerPatches.FillPage' to do this

InscryptionAPI/TalkingCards/Create/TalkingCardCreator.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ internal static void Remove(string cardName)
4949
TalkingAbilities.Remove(cardName);
5050
}
5151

52-
internal static void New(FaceData faceData, SpecialTriggeredAbility talkAbility)
52+
internal static void New(FaceData faceData, SpecialTriggeredAbility talkAbility, bool diskTalkingCard)
5353
{
5454
if (AnimatedPortraits.ContainsKey(faceData.CardName))
5555
{
@@ -77,7 +77,7 @@ internal static void New(FaceData faceData, SpecialTriggeredAbility talkAbility)
7777
card.AddSpecialAbilities(talkAbility);
7878

7979
// Special behaviour for the talking cards
80-
if (card.temple == CardTemple.Tech)
80+
if (diskTalkingCard)
8181
{
8282
card.AddAppearances(CardAppearanceBehaviour.Appearance.DynamicPortrait);
8383
foreach (var rend in card.AnimatedPortrait.GetComponentsInChildren<SpriteRenderer>())
@@ -97,6 +97,10 @@ internal static void New(FaceData faceData, SpecialTriggeredAbility talkAbility)
9797
card.AddAppearances(CardAppearanceBehaviour.Appearance.AnimatedPortrait);
9898
}
9999
}
100+
internal static void New(FaceData faceData, SpecialTriggeredAbility talkAbility)
101+
{
102+
New(faceData, talkAbility, CardHelpers.Get(faceData.CardName)?.temple == CardTemple.Tech);
103+
}
100104

101105
private static void RecursiveSetLayer(GameObject obj, string layerName)
102106
{

InscryptionAPI/TalkingCards/CustomPaperTalkingCard.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,20 @@ public override IEnumerator OnShownForCardSelect(bool forPositiveEffect)
2626
yield break;
2727
}
2828
}
29+
30+
public abstract class CustomDiskTalkingCard : DiskTalkingCard, ITalkingCard
31+
{
32+
public override DialogueEvent.Speaker SpeakerType => DialogueEvent.Speaker.Stoat;
33+
public abstract string CardName { get; }
34+
public abstract List<EmotionData> Emotions { get; }
35+
public abstract FaceInfo FaceInfo { get; }
36+
public abstract SpecialTriggeredAbility DialogueAbility { get; }
37+
38+
public override string OnDrawnFallbackDialogueId => OnDrawnDialogueId;
39+
public override IEnumerator OnShownForCardSelect(bool forPositiveEffect)
40+
{
41+
yield return new WaitForEndOfFrame();
42+
yield return base.OnShownForCardSelect(forPositiveEffect);
43+
yield break;
44+
}
45+
}

InscryptionAPI/TalkingCards/Helpers/CardHelpers.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using DiskCardGame;
2+
using InscryptionAPI.Card;
23

34
#nullable enable
45
namespace InscryptionAPI.TalkingCards.Helpers;
@@ -7,6 +8,7 @@ internal class CardHelpers
78
{
89
public static CardInfo? Get(string name)
910
{
11+
CardManager.SyncCardList();
1012
CardInfo? card;
1113
try
1214
{

InscryptionAPI/TalkingCards/TalkingCardManager.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ public static class TalkingCardManager
3030
TalkingCardCreator.New(faceData, x.DialogueAbility);
3131
}
3232

33+
/// <summary>
34+
/// Create a talking card for Act 3.
35+
/// </summary>
36+
public static void NewDisk<T>() where T : ITalkingCard, new()
37+
{
38+
ITalkingCard x = new T();
39+
40+
FaceData faceData = new(
41+
x.CardName,
42+
x.Emotions,
43+
x.FaceInfo
44+
);
45+
46+
TalkingCardCreator.New(faceData, x.DialogueAbility, true);
47+
}
48+
3349
/// <summary>
3450
/// Create a talking card from a FaceData instance through this API.
3551
/// </summary>
@@ -40,7 +56,16 @@ public static void Create(FaceData faceData, SpecialTriggeredAbility ability)
4056
if (faceData?.CardName == null) return;
4157
TalkingCardCreator.New(faceData, ability);
4258
}
43-
59+
60+
/// <summary>
61+
/// Create a talking card for Act 3 from a FaceData instance.
62+
/// </summary>
63+
public static void CreateDisk(FaceData faceData, SpecialTriggeredAbility ability, bool diskTalkingCard)
64+
{
65+
if (faceData?.CardName == null) return;
66+
TalkingCardCreator.New(faceData, ability, diskTalkingCard);
67+
}
68+
4469
/// <summary>
4570
/// Remove a talking card from a FaceData instance through this API.
4671
/// </summary>

0 commit comments

Comments
 (0)