feat(missions): add 3 catalog entities (mission, achievement, BP monthly)
This commit is contained in:
23
SVSim.Database/Models/AchievementCatalogEntry.cs
Normal file
23
SVSim.Database/Models/AchievementCatalogEntry.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One tier of an achievement. PK is composite (AchievementType, Level). Rows are seeded from
|
||||
/// <c>seeds/achievement-catalog.json</c>. The captured tier IS the max tier in our world —
|
||||
/// max_level on the wire is computed as MAX(Level) per AchievementType at /mission/info time.
|
||||
/// Inherits Id from BaseEntity but the Id is unused; PK is configured in DbContext.
|
||||
/// </summary>
|
||||
public class AchievementCatalogEntry
|
||||
{
|
||||
public int AchievementType { get; set; }
|
||||
public int Level { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
public int RequireNumber { get; set; }
|
||||
public int RewardType { get; set; }
|
||||
public long RewardDetailId { get; set; }
|
||||
public int RewardNumber { get; set; }
|
||||
public int OrderNum { get; set; }
|
||||
public string? EventType { get; set; }
|
||||
public int? EventArg { get; set; }
|
||||
}
|
||||
28
SVSim.Database/Models/BattlePassMonthlyMissionEntry.cs
Normal file
28
SVSim.Database/Models/BattlePassMonthlyMissionEntry.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One row of the BP monthly mission list, keyed to a specific (Year, Month).
|
||||
/// `RewardType` is nullable because some monthly missions only award BP points (capture shows
|
||||
/// the "Play 5 Challenge matches" entry has no reward_info block on wire).
|
||||
/// Id is auto-generated — override BaseEntity's [DatabaseGenerated(None)] default.
|
||||
/// </summary>
|
||||
public class BattlePassMonthlyMissionEntry : BaseEntity<int>
|
||||
{
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public override int Id { get; set; }
|
||||
|
||||
public int Year { get; set; }
|
||||
public int Month { get; set; }
|
||||
public int OrderNum { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
public int RequireNumber { get; set; }
|
||||
public int BattlePassPoint { get; set; }
|
||||
public int? RewardType { get; set; }
|
||||
public long? RewardDetailId { get; set; }
|
||||
public int? RewardNumber { get; set; }
|
||||
public string? EventType { get; set; }
|
||||
public int? EventArg { get; set; }
|
||||
}
|
||||
26
SVSim.Database/Models/MissionCatalogEntry.cs
Normal file
26
SVSim.Database/Models/MissionCatalogEntry.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One mission template. Id = wire mission_id. Rows are seeded from
|
||||
/// <c>seeds/mission-catalog.json</c> (extracted from /mission/info captures).
|
||||
/// LotType 2 = weekly rotation slot; LotType 6 = daily slot (per UserMission.GEM_MISSION_TYPE).
|
||||
/// EventType is the catalog-side key the progress service matches against; NULL means the row
|
||||
/// was captured but no event mapping has been added yet (importer logs a warning).
|
||||
/// </summary>
|
||||
public class MissionCatalogEntry : BaseEntity<int>
|
||||
{
|
||||
public string Name { get; set; } = "";
|
||||
public int LotType { get; set; }
|
||||
public int RequireNumber { get; set; }
|
||||
public int RewardType { get; set; }
|
||||
public long RewardDetailId { get; set; }
|
||||
public int RewardNumber { get; set; }
|
||||
public int BattlePassPoint { get; set; }
|
||||
public bool DefaultFlag { get; set; }
|
||||
public string? EventType { get; set; }
|
||||
public int? EventArg { get; set; }
|
||||
public long StartTime { get; set; }
|
||||
public long? EndTime { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user