Class AchievementsStudioCatalog
Every achievement the Studio knows about: read from the project, judged against the shared authoring rules, and narrowed to what the toolbar is currently asking for.
Inherited Members
Namespace: Serenity.Achievements.Infrastructure.Editor.Studio
Assembly: Serenity.UnityAchievements.Infrastructure.Editor.dll
Syntax
public sealed class AchievementsStudioCatalog
Remarks
A collaborator rather than a block of fields on the window, because this is the one part of the Studio
that talks to the project — and the one part that has to survive the project talking back. Reading
walks every achievement asset and every settings asset, judging walks an authored
[SerializeReference] graph per achievement, and any of it can throw on a corrupted or
half-imported asset.
Neither Read(string, AchievementsStudioFilterKind) nor Rejudge(string, AchievementsStudioFilterKind) lets that reach the window. An exception out of the
first read would leave a window that never finished opening; out of a projectChanged callback it
would be blamed on whatever asset operation happened to fire it. Both fail to an empty list plus
CouldNotBeRead, which the window turns into a message the author can act on.
Constructors
AchievementsStudioCatalog()
Declaration
public AchievementsStudioCatalog()
Properties
CouldNotBeRead
Declaration
public bool CouldNotBeRead { get; }
Property Value
| Type | Description |
|---|---|
| bool | Whether the last read or re-judge gave up, having said why in the Console. |
Definitions
Declaration
public IReadOnlyList<UnityAchievementDefinition> Definitions { get; }
Property Value
| Type | Description |
|---|---|
| IReadOnlyList<UnityAchievementDefinition> | Every achievement asset the last read found. |
EnabledPlatforms
Declaration
public IReadOnlyCollection<AchievementPlatformKind> EnabledPlatforms { get; }
Property Value
| Type | Description |
|---|---|
| IReadOnlyCollection<AchievementPlatformKind> | The storefronts the project ships on, resolved once per read. |
HasSettingsAsset
Declaration
public bool HasSettingsAsset { get; }
Property Value
| Type | Description |
|---|---|
| bool | Whether anything installs the achievements module at runtime. |
Rows
Declaration
public IReadOnlyList<AchievementsStudioRowModel> Rows { get; }
Property Value
| Type | Description |
|---|---|
| IReadOnlyList<AchievementsStudioRowModel> | One row per achievement, in project order. |
SettingsAssets
Declaration
public IReadOnlyList<UnityAchievementSettings> SettingsAssets { get; }
Property Value
| Type | Description |
|---|---|
| IReadOnlyList<UnityAchievementSettings> | Every achievement settings asset the last read found. |
UnjudgedCount
Declaration
public int UnjudgedCount { get; }
Property Value
| Type | Description |
|---|---|
| int | How many achievements defeated the authoring rules entirely. |
VisibleRows
Declaration
public IReadOnlyList<AchievementsStudioRowModel> VisibleRows { get; }
Property Value
| Type | Description |
|---|---|
| IReadOnlyList<AchievementsStudioRowModel> | The rows that survive the current search and category. |
Methods
CountWith(AuthoringSeverity)
How many achievements in the project carry a finding of exactly this severity.
Declaration
public int CountWith(AuthoringSeverity severity)
Parameters
| Type | Name | Description |
|---|---|---|
| AuthoringSeverity | severity | The severity to count. |
Returns
| Type | Description |
|---|---|
| int | The count. |
Narrow(string, AchievementsStudioFilterKind)
Narrows the visible rows to what the toolbar asks for.
Declaration
public void Narrow(string search, AchievementsStudioFilterKind filter)
Parameters
| Type | Name | Description |
|---|---|---|
| string | search | What the search field currently holds. |
| AchievementsStudioFilterKind | filter | The category currently picked. |
Read(string, AchievementsStudioFilterKind)
Re-reads the whole project and judges everything in it.
Declaration
public void Read(string search, AchievementsStudioFilterKind filter)
Parameters
| Type | Name | Description |
|---|---|---|
| string | search | What the search field currently holds. |
| AchievementsStudioFilterKind | filter | The category currently picked. |
Remarks
The storefront scan and the authoring rules both walk the project, so both are paid for here — once
per read — rather than per row or per repaint. That is what the creator's
Validate(input, enabledPlatforms) overload and AchievementAuthoringJudge's single
pass exist for.
Rejudge(string, AchievementsStudioFilterKind)
Judges the achievements already loaded, without re-reading the project.
Declaration
public void Rejudge(string search, AchievementsStudioFilterKind filter)
Parameters
| Type | Name | Description |
|---|---|---|
| string | search | What the search field currently holds. |
| AchievementsStudioFilterKind | filter | The category currently picked. |
Remarks
What an edit in the detail pane can change: an id, a badge, a finding. What it cannot: which assets exist. So the rows are rebuilt and the asset search is not.