Skip to content

Commit 2c5a9c5

Browse files
authored
Merge pull request #32 from divisionbyz0rro/ability-guids
More fully fleshed out API 2.0
2 parents 4d4e495 + f2f7353 commit 2c5a9c5

20 files changed

Lines changed: 1289 additions & 191 deletions

InscryptionAPI/Abilities/AbilityManager.cs

Lines changed: 0 additions & 143 deletions
This file was deleted.

InscryptionAPI/Challenges/AscensionChallengePaginator.cs renamed to InscryptionAPI/Ascension/AscensionChallengePaginator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using DiskCardGame;
22
using UnityEngine;
33

4-
namespace InscryptionAPI.Challenges;
4+
namespace InscryptionAPI.Ascension;
55

66
public class AscensionChallengePaginator : MonoBehaviour
77
{

InscryptionAPI/Challenges/AscensionChallengeScreen.cs renamed to InscryptionAPI/Ascension/AscensionChallengeScreen.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
using DiskCardGame;
22
using HarmonyLib;
3+
using InscryptionAPI.Helpers;
34
using UnityEngine;
45

5-
namespace InscryptionAPI.Challenges;
6+
namespace InscryptionAPI.Ascension;
67

78
[HarmonyPatch]
8-
public static class AscensionChallengeScreen
9+
public static class AscensionChallengeScreenPatches
910
{
10-
private static readonly Sprite DEFAULT_ACTIVATED_SPRITE = Sprite.Create(
11+
private static readonly Sprite DEFAULT_ACTIVATED_SPRITE = TextureHelper.ConvertTexture(
1112
Resources.Load<Texture2D>("art/ui/ascension/ascensionicon_activated_default"),
12-
ChallengeManager.SPRITE_RECT,
13-
ChallengeManager.SPRITE_PIVOT
14-
);
13+
TextureHelper.SpriteType.ChallengeIcon);
1514

1615
[HarmonyPatch(typeof(AscensionIconInteractable), "AssignInfo")]
1716
[HarmonyPostfix]

InscryptionAPI/AscensionScreens/AscensionRunSetupScreenBase.cs renamed to InscryptionAPI/Ascension/AscensionRunSetupScreenBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using UnityEngine;
44
using GBC;
55

6-
namespace InscryptionAPI.AscensionScreens;
6+
namespace InscryptionAPI.Ascension;
77

88
public abstract class AscensionRunSetupScreenBase : ManagedBehaviour
99
{

InscryptionAPI/AscensionScreens/AscensionScreenManager.cs renamed to InscryptionAPI/Ascension/AscensionScreenManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using UnityEngine;
44
using System.Collections;
55

6-
namespace InscryptionAPI.AscensionScreens;
6+
namespace InscryptionAPI.Ascension;
77

88
[HarmonyPatch]
99
public static class AscensionScreenManager

InscryptionAPI/AscensionScreens/AscensionScreenSort.cs renamed to InscryptionAPI/Ascension/AscensionScreenSort.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace InscryptionAPI.AscensionScreens;
1+
namespace InscryptionAPI.Ascension;
22

33
// Decorates a custom screen and marks how it should be sorted
44
public class AscensionScreenSort : System.Attribute

InscryptionAPI/Challenges/ChallengeManager.cs renamed to InscryptionAPI/Ascension/ChallengeManager.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
using Mono.Collections.Generic;
44
using UnityEngine;
55
using InscryptionAPI.Guid;
6+
using InscryptionAPI.Helpers;
67

7-
namespace InscryptionAPI.Challenges;
8+
namespace InscryptionAPI.Ascension;
89

910
[HarmonyPatch]
1011
public static class ChallengeManager
@@ -15,10 +16,6 @@ public static class ChallengeManager
1516

1617
private static Dictionary<AscensionChallenge, int> unlockLevelMap = new();
1718

18-
public static readonly Rect SPRITE_RECT = new Rect(0f, 0f, 49f, 49f);
19-
20-
public static readonly Vector2 SPRITE_PIVOT = new Vector2(0.5f, 0.5f);
21-
2219
internal static readonly List<AscensionChallengeInfo> newInfos = new();
2320

2421
public static event Action<List<AscensionChallengeInfo>> ModifyAscensionChallengeList;
@@ -38,9 +35,9 @@ public static bool IsStackable(AscensionChallenge id)
3835
return stackableMap.ContainsKey(id) ? stackableMap[id] : false;
3936
}
4037

41-
public static AscensionChallenge Add(string pluginGuid, AscensionChallengeInfo info, int unlockLevel=0, bool stackable=false)
38+
public static AscensionChallengeInfo Add(string pluginGuid, AscensionChallengeInfo info, int unlockLevel=0, bool stackable=false)
4239
{
43-
info.challengeType = (AscensionChallenge)GuidManager.GetEnumValue<AscensionChallenge>(pluginGuid, info.title);
40+
info.challengeType = GuidManager.GetEnumValue<AscensionChallenge>(pluginGuid, info.title);
4441

4542
newInfos.Add(info);
4643

@@ -51,10 +48,10 @@ public static AscensionChallenge Add(string pluginGuid, AscensionChallengeInfo i
5148

5249
_hasLoaded = false; // Force a reload in case something happened out of the expected order
5350

54-
return info.challengeType;
51+
return info;
5552
}
5653

57-
public static AscensionChallenge Add(
54+
public static AscensionChallengeInfo Add(
5855
string pluginGuid,
5956
string title,
6057
string description,
@@ -70,12 +67,12 @@ public static AscensionChallenge Add(
7067
info.challengeType = AscensionChallenge.None;
7168
info.description = description;
7269
info.pointValue = pointValue;
73-
info.iconSprite = Sprite.Create(iconTexture, SPRITE_RECT, SPRITE_PIVOT);
70+
info.iconSprite = TextureHelper.ConvertTexture(iconTexture, TextureHelper.SpriteType.ChallengeIcon);
7471

7572
Texture2D infoActivationTexture = activatedTexture ??
7673
((pointValue > 0 ) ? Resources.Load<Texture2D>("art/ui/ascension/ascensionicon_activated_default")
7774
: Resources.Load<Texture2D>("art/ui/ascension/ascensionicon_activated_difficulty"));
78-
info.activatedSprite = Sprite.Create(infoActivationTexture, SPRITE_RECT, SPRITE_PIVOT);
75+
info.activatedSprite = TextureHelper.ConvertTexture(infoActivationTexture, TextureHelper.SpriteType.ChallengeIcon);
7976

8077
return Add(pluginGuid, info, unlockLevel, stackable);
8178
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
using DiskCardGame;
2+
using InscryptionAPI.Helpers;
3+
using UnityEngine;
4+
5+
namespace InscryptionAPI.Card;
6+
7+
public static class AbilityExtensions
8+
{
9+
public static AbilityInfo AbilityByID(this List<AbilityInfo> abilities, Ability id) => abilities.FirstOrDefault(x => x.ability == id);
10+
11+
public static AbilityInfo SetCustomFlippedTexture(this AbilityInfo info, Texture2D icon)
12+
{
13+
AbilityManager.FullAbility ability = AbilityManager.AllAbilities.FirstOrDefault(fab => fab.Id == info.ability);
14+
if (ability == default(AbilityManager.FullAbility))
15+
throw new InvalidOperationException("Cannot set custom texture directly on AbilityInfo unless it has been added via AbilityManager.Add");
16+
17+
ability.SetCustomFlippedTexture(icon);
18+
return info;
19+
}
20+
21+
public static void SetCustomFlippedTexture(this AbilityManager.FullAbility info, Texture2D icon)
22+
{
23+
info.CustomFlippedTexture = icon;
24+
info.Info.customFlippedIcon = true;
25+
}
26+
27+
public static StatIconInfo SetIcon(this StatIconInfo info, Texture2D icon, FilterMode? filterMode = null)
28+
{
29+
info.iconGraphic = icon;
30+
if (filterMode.HasValue)
31+
info.iconGraphic.filterMode = filterMode.Value;
32+
return info;
33+
}
34+
35+
public static StatIconInfo SetIcon(this StatIconInfo info, string pathToArt, FilterMode? filterMode = null)
36+
{
37+
info.iconGraphic = TextureHelper.GetImageAsTexture(pathToArt);
38+
if (filterMode.HasValue)
39+
info.iconGraphic.filterMode = filterMode.Value;
40+
return info;
41+
}
42+
43+
public static StatIconInfo SetPixelIcon(this StatIconInfo info, Texture2D icon, FilterMode? filterMode = null)
44+
{
45+
if (!filterMode.HasValue)
46+
info.pixelIconGraphic = TextureHelper.ConvertTexture(icon, TextureHelper.SpriteType.PixelStatIcon);
47+
else
48+
info.pixelIconGraphic = TextureHelper.ConvertTexture(icon, TextureHelper.SpriteType.PixelStatIcon, filterMode.Value);
49+
return info;
50+
}
51+
52+
public static AbilityInfo SetPixelAbilityIcon(this AbilityInfo info, Texture2D icon, FilterMode? filterMode = null)
53+
{
54+
if (!filterMode.HasValue)
55+
info.pixelIcon = TextureHelper.ConvertTexture(icon, TextureHelper.SpriteType.PixelAbilityIcon);
56+
else
57+
info.pixelIcon = TextureHelper.ConvertTexture(icon, TextureHelper.SpriteType.PixelAbilityIcon, filterMode.Value);
58+
return info;
59+
}
60+
61+
public static AbilityInfo AddMetaCategories(this AbilityInfo info, params AbilityMetaCategory[] categories)
62+
{
63+
info.metaCategories = info.metaCategories ?? new();
64+
foreach (var app in categories)
65+
if (!info.metaCategories.Contains(app))
66+
info.metaCategories.Add(app);
67+
return info;
68+
}
69+
70+
public static StatIconInfo AddMetaCategories(this StatIconInfo info, params AbilityMetaCategory[] categories)
71+
{
72+
info.metaCategories = info.metaCategories ?? new();
73+
foreach (var app in categories)
74+
if (!info.metaCategories.Contains(app))
75+
info.metaCategories.Add(app);
76+
return info;
77+
}
78+
79+
public static AbilityInfo SetDefaultPart1Ability(this AbilityInfo info)
80+
{
81+
info.AddMetaCategories(AbilityMetaCategory.Part1Modular, AbilityMetaCategory.Part1Rulebook);
82+
return info;
83+
}
84+
85+
public static StatIconInfo SetDefaultPart1Ability(this StatIconInfo info)
86+
{
87+
info.AddMetaCategories(AbilityMetaCategory.Part1Rulebook);
88+
return info;
89+
}
90+
91+
public static AbilityInfo SetDefaultPart3Ability(this AbilityInfo info)
92+
{
93+
info.AddMetaCategories(AbilityMetaCategory.Part3Modular, AbilityMetaCategory.Part3Rulebook, AbilityMetaCategory.Part3BuildACard);
94+
return info;
95+
}
96+
97+
public static StatIconInfo SetDefaultPart3Ability(this StatIconInfo info)
98+
{
99+
info.AddMetaCategories(AbilityMetaCategory.Part1Rulebook);
100+
return info;
101+
}
102+
}

0 commit comments

Comments
 (0)