Class AchievementSyncWizardSteps
Pure step-availability model for AchievementSyncWizardSession: which steps this run
shows, and whether the wizard may advance out of the current one. No IMGUI, no window state — mirrors
the shape of AchievementWizardSummary's pure describe/judge split for the Achievement Settings
wizard.
Inherited Members
Namespace: Serenity.Achievements.Infrastructure.Editor.Sync
Assembly: Serenity.UnityAchievements.Infrastructure.Editor.dll
Syntax
public static class AchievementSyncWizardSteps
Fields
NoSnapshotPushOverwritesNotice
The notice a Push shows instead of NoSnapshotToDiffAgainstNotice when nothing was pulled: with no snapshot to keep the storefront's own texts from, the push writes what the project holds over whatever the storefront holds.
Declaration
public const string NoSnapshotPushOverwritesNotice = "No snapshot was pulled from the storefront, so every achievement is shown as new and a push will overwrite whatever the storefront holds for it: names and descriptions in every language, and the hidden flag. Pull a snapshot first unless overwriting is what you want."
Field Value
| Type | Description |
|---|---|
| string |
NoSnapshotToDiffAgainstNotice
The notice the Review, Apply, and Copilot steps all render when HasNoSnapshotToDiffAgainst is set — shared here so the three call sites can never drift into three different wordings for the same warning.
Declaration
public const string NoSnapshotToDiffAgainstNotice = "No snapshot was pulled from the storefront — every achievement is shown as new because there is nothing to diff against."
Field Value
| Type | Description |
|---|---|
| string |
PushSendsEveryLanguageNotice
What a push sends per achievement, stated where the author confirms it.
Declaration
public const string PushSendsEveryLanguageNotice = "A save sends the achievement's full set of languages: the text you accepted for the locales in scope, and the text the storefront already holds for every other language, so nothing outside this push is lost. A locale you leave untouched keeps the storefront's text."
Field Value
| Type | Description |
|---|---|
| string |
Methods
CanAdvanceFrom(AchievementSyncWizardStep, AchievementSyncWizardSession)
Whether the wizard may leave step and move forward.
Declaration
public static string CanAdvanceFrom(AchievementSyncWizardStep step, AchievementSyncWizardSession session)
Parameters
| Type | Name | Description |
|---|---|---|
| AchievementSyncWizardStep | step | The step the wizard is currently showing. |
| AchievementSyncWizardSession | session | The session to judge readiness from. |
Returns
| Type | Description |
|---|---|
| string | Empty when the wizard may advance; otherwise the message to show the author. |
CanJumpTo(int, int, AchievementSyncWizardSession)
Whether the wizard's breadcrumb may jump from fromIndex to toIndex.
Declaration
public static string CanJumpTo(int fromIndex, int toIndex, AchievementSyncWizardSession session)
Parameters
| Type | Name | Description |
|---|---|---|
| int | fromIndex | The step index the wizard is currently on. |
| int | toIndex | The step index the breadcrumb was clicked for. |
| AchievementSyncWizardSession | session | The session to judge readiness from. |
Returns
| Type | Description |
|---|---|
| string | Empty when the jump is allowed; otherwise the first blocking step's message. |
Remarks
A backward jump (or staying put) is always free — looking at an earlier step never risks showing stale or invalid data. A forward jump has to walk every step index it would skip past and refuse the moment one of them still blocks, exactly as if the wizard had pressed Next through each of them in turn: jumping straight from Storefront to Review must not bypass Review's own conflict gate, and jumping to Apply must not bypass Review's either.
IsDirectionLockedToPush(AchievementSyncWizardSession)
Whether this session's Push direction is locked to Push and cannot be changed to Pull — true whenever TransportMode is Copilot: a Copilot walkthrough pastes changes by hand, one at a time, so pulling by hand makes no sense — the file connector already covers import.
Declaration
public static bool IsDirectionLockedToPush(AchievementSyncWizardSession session)
Parameters
| Type | Name | Description |
|---|---|---|
| AchievementSyncWizardSession | session | The session to judge. Null is treated as "not locked". |
Returns
| Type | Description |
|---|---|
| bool |
IsSkipped(AchievementSyncWizardStep, AchievementSyncWizardSession)
Whether step should be treated as skipped for this session: shown in the
breadcrumb as a muted, already-resolved slot instead of a step the author has to act on.
Declaration
public static bool IsSkipped(AchievementSyncWizardStep step, AchievementSyncWizardSession session)
Parameters
| Type | Name | Description |
|---|---|---|
| AchievementSyncWizardStep | step | The step to judge. |
| AchievementSyncWizardSession | session | The session to judge it against. Null is treated as "skip". |
Returns
| Type | Description |
|---|---|
| bool |
Remarks
Only Connect is ever skippable, and only when no connector is chosen yet or the chosen one's capabilities do not require an interactive sign-in.
StepsFor(AchievementSyncWizardSession)
The steps this session's run shows, in order — the same fixed set for every run. Connect stays in the set even when IsSkipped(AchievementSyncWizardStep, AchievementSyncWizardSession) answers true for it; the window is the one that walks over it during navigation instead of rendering it.
Declaration
public static AchievementSyncWizardStep[] StepsFor(AchievementSyncWizardSession session)
Parameters
| Type | Name | Description |
|---|---|---|
| AchievementSyncWizardSession | session | The session, reserved for a future run whose step set genuinely varies. |
Returns
| Type | Description |
|---|---|
| AchievementSyncWizardStep[] | The steps, in display order. |