using SVSim.Database.Enums; namespace SVSim.Database.Models.Config; /// /// Daily login bonus catalog. The Normal cycle is the always-on N-day streak. Total /// (continuous milestones) and Campaign (date-bounded specials) are placeholders — wire /// emits empty arrays for them until a campaign is captured and seeded here. /// [ConfigSection("LoginBonus")] public class LoginBonusConfig { public int CampaignId { get; set; } = 3; public string Name { get; set; } = "Daily Bonus"; /// BG image asset key — wire ships as string. Prod captured value is "0". public string Img { get; set; } = "0"; /// /// Normal-cycle reward entries, 1-based by Day. Defaults to a 15-day cycle copied /// verbatim from the prod tutorial capture (traffic_prod_tutorial.ndjson). /// public List Normal { get; set; } = new(); public static LoginBonusConfig ShippedDefaults() => new() { CampaignId = 3, Name = "Daily Bonus", Img = "0", Normal = new List { new() { Day = 1, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 20 }, new() { Day = 2, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 20 }, new() { Day = 3, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 20 }, new() { Day = 4, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 20 }, new() { Day = 5, EffectId = 2, RewardType = UserGoodsType.Item, RewardDetailId = 80001, RewardNumber = 1 }, new() { Day = 6, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 30 }, new() { Day = 7, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 30 }, new() { Day = 8, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 30 }, new() { Day = 9, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 30 }, new() { Day = 10, EffectId = 2, RewardType = UserGoodsType.Item, RewardDetailId = 80001, RewardNumber = 1 }, new() { Day = 11, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 40 }, new() { Day = 12, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 40 }, new() { Day = 13, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 40 }, new() { Day = 14, EffectId = 1, RewardType = UserGoodsType.Rupy, RewardDetailId = 0, RewardNumber = 40 }, new() { Day = 15, EffectId = 2, RewardType = UserGoodsType.Item, RewardDetailId = 1, RewardNumber = 1 }, }, }; } public class NormalBonusEntry { public int Day { get; set; } public int EffectId { get; set; } = 1; public UserGoodsType RewardType { get; set; } public long RewardDetailId { get; set; } public int RewardNumber { get; set; } }