refactor(inventory): move GrantedReward + EffectiveCosmetics into Inventory namespace folder
Both types stay in namespace SVSim.Database.Services so existing using directives in controllers, services, and tests resolve without change. Their definitions are extracted to SVSim.Database/Services/Inventory/InventoryGrantTypes.cs; the empty husks in RewardGrantService.cs and IViewerEntitlements.cs will be deleted in the next commit. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -40,15 +40,3 @@ public interface IViewerEntitlements
|
|||||||
Task<EffectiveCosmetics> EffectiveCosmeticsAsync(Viewer viewer, CancellationToken ct = default);
|
Task<EffectiveCosmetics> EffectiveCosmeticsAsync(Viewer viewer, CancellationToken ct = default);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Cosmetic projection bundle for /load/index. The four id-lists are "what the viewer owns"
|
|
||||||
/// (all of them in freeplay). Leader skins are always the full catalog with a per-skin owned flag;
|
|
||||||
/// <see cref="OwnedLeaderSkinIds"/> is every skin id in freeplay.
|
|
||||||
/// </summary>
|
|
||||||
public sealed record EffectiveCosmetics(
|
|
||||||
IReadOnlyList<int> SleeveIds,
|
|
||||||
IReadOnlyList<int> EmblemIds,
|
|
||||||
IReadOnlyList<int> DegreeIds,
|
|
||||||
IReadOnlyList<int> MyPageBackgroundIds,
|
|
||||||
IReadOnlyList<LeaderSkinEntry> AllLeaderSkins,
|
|
||||||
IReadOnlySet<int> OwnedLeaderSkinIds);
|
|
||||||
|
|||||||
27
SVSim.Database/Services/Inventory/InventoryGrantTypes.cs
Normal file
27
SVSim.Database/Services/Inventory/InventoryGrantTypes.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using SVSim.Database.Enums;
|
||||||
|
using SVSim.Database.Models;
|
||||||
|
|
||||||
|
namespace SVSim.Database.Services;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Wire-shape entry returned by <see cref="Inventory.IInventoryTransaction.GrantAsync"/> and
|
||||||
|
/// collected in <see cref="Inventory.InventoryCommitResult.RewardList"/> /
|
||||||
|
/// <see cref="Inventory.InventoryCommitResult.Deltas"/>. Field names match the
|
||||||
|
/// <c>reward_list</c> entries used by <c>/pack/open</c>, <c>/basic_puzzle/finish</c>, and
|
||||||
|
/// <c>/story/*/finish</c>. reward_num is a POST-STATE TOTAL for currencies and a count for
|
||||||
|
/// collection grants — see <see cref="Models.RewardListEntry"/>.
|
||||||
|
/// </summary>
|
||||||
|
public sealed record GrantedReward(int RewardType, long RewardId, int RewardNum);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Cosmetic projection bundle for /load/index. The four id-lists are "what the viewer owns"
|
||||||
|
/// (all of them in freeplay). Leader skins are always the full catalog with a per-skin owned flag;
|
||||||
|
/// <see cref="OwnedLeaderSkinIds"/> is every skin id in freeplay.
|
||||||
|
/// </summary>
|
||||||
|
public sealed record EffectiveCosmetics(
|
||||||
|
IReadOnlyList<int> SleeveIds,
|
||||||
|
IReadOnlyList<int> EmblemIds,
|
||||||
|
IReadOnlyList<int> DegreeIds,
|
||||||
|
IReadOnlyList<int> MyPageBackgroundIds,
|
||||||
|
IReadOnlyList<LeaderSkinEntry> AllLeaderSkins,
|
||||||
|
IReadOnlySet<int> OwnedLeaderSkinIds);
|
||||||
@@ -5,14 +5,6 @@ using SVSim.Database.Models;
|
|||||||
|
|
||||||
namespace SVSim.Database.Services;
|
namespace SVSim.Database.Services;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Wire-shape entry returned by <see cref="RewardGrantService.ApplyAsync"/>. Field names match
|
|
||||||
/// the <c>reward_list</c> entries used by <c>/pack/open</c>, <c>/basic_puzzle/finish</c>, and
|
|
||||||
/// <c>/story/*/finish</c>. reward_num is a POST-STATE TOTAL for currencies and a count for
|
|
||||||
/// collection grants — see <see cref="Models.RewardListEntry"/>.
|
|
||||||
/// </summary>
|
|
||||||
public sealed record GrantedReward(int RewardType, long RewardId, int RewardNum);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Single canonical grant primitive for every <see cref="UserGoodsType"/> the server hands to a
|
/// Single canonical grant primitive for every <see cref="UserGoodsType"/> the server hands to a
|
||||||
/// viewer. Switch on the type, mutate the appropriate viewer collection / <see cref="ViewerCurrency"/>
|
/// viewer. Switch on the type, mutate the appropriate viewer collection / <see cref="ViewerCurrency"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user