feat: Add comprehensive Player and Combat DTOs
- Created 17 Player DTOs for PlayerController compilation resolution - Created 24 Combat DTOs for CombatController compilation resolution - Full support for field interception system and anti-pay-to-win mechanics - Comprehensive dragon integration with skills and equipment DTOs - Proper validation attributes and extensible Dictionary properties - Complete XML documentation and established file header format Player DTOs: UpdatePlayerProfileRequestDto, PlayerRankingsResponseDto, CastleInfoResponseDto, VipAdvancementRequestDto/ResponseDto, ResourceCollectionResponseDto, ResourceSpendingRequestDto/ResponseDto, CombatResultsRequestDto/ResponseDto, AllianceJoinResponseDto, AllianceLeaveRequestDto/ResponseDto, ExperienceProcessingResponseDto, AchievementsResponseDto, ActionValidationRequestDto/ResponseDto Combat DTOs: FieldInterceptionResponseDto, InterceptionValidationRequestDto/ResponseDto, OptimalRoutesResponseDto, RouteOptimizationRequestDto, MarchInitiationResponseDto, MarchSpeedRequestDto, MarchCancellationResponseDto, MarchArrivalRequestDto/ResponseDto, BattleExecutionRequestDto, BattlePredictionRequestDto/ResponseDto, CasualtyProcessingRequestDto/ResponseDto, RewardDistributionRequestDto/ResponseDto, DragonValidationResponseDto, DragonSkillRequestDto/ResponseDto, DragonEquipmentRequestDto/ResponseDto, CombatEffectivenessResponseDto, KingdomTrendsResponseDto Resolves PlayerController and CombatController compilation errors.
This commit is contained in:
parent
9a7fa52bc4
commit
544d9a7a79
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\BattleExecutionRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for battle execution operations
|
||||
* Last Edit Notes: Individual file implementation for battle execution input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for battle execution operations
|
||||
/// </summary>
|
||||
public class BattleExecutionRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for the battle to execute
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Attacking forces composition
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> AttackingForces { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Defending forces composition
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> DefendingForces { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation for attacker
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? AttackerDragon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation for defender
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? DefenderDragon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Battle type (Field, Castle, Siege, Interception)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string BattleType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Tactical formations and strategies
|
||||
/// </summary>
|
||||
public Dictionary<string, object> TacticalFormations { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Terrain bonuses and modifiers
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> TerrainModifiers { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Weather and environmental effects
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EnvironmentalEffects { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alliance bonuses for both sides
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment and gear bonuses
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EquipmentBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional battle execution parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ExecutionParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\BattlePredictionRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for battle outcome predictions
|
||||
* Last Edit Notes: Individual file implementation for battle prediction input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for battle outcome predictions
|
||||
/// </summary>
|
||||
public class BattlePredictionRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Attacking player ID
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int AttackerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Defending player ID
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int DefenderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Proposed attacking army composition
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> AttackingArmy { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Known or estimated defending army composition
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> DefendingArmy { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Battle type for prediction (Field, Castle, Siege, Interception)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string BattleType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether attacker will include dragon
|
||||
/// </summary>
|
||||
public bool AttackerIncludesDragon { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether defender will include dragon
|
||||
/// </summary>
|
||||
public bool DefenderIncludesDragon { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Terrain type where battle will occur
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string TerrainType { get; set; } = "Normal";
|
||||
|
||||
/// <summary>
|
||||
/// Weather conditions affecting battle
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string WeatherConditions { get; set; } = "Clear";
|
||||
|
||||
/// <summary>
|
||||
/// Whether this is a field interception scenario
|
||||
/// </summary>
|
||||
public bool IsFieldInterception { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Prediction detail level (Basic, Detailed, Comprehensive)
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string DetailLevel { get; set; } = "Detailed";
|
||||
|
||||
/// <summary>
|
||||
/// Additional prediction parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PredictionParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\BattlePredictionResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for battle outcome predictions
|
||||
* Last Edit Notes: Individual file implementation for battle prediction results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for battle outcome predictions
|
||||
/// </summary>
|
||||
public class BattlePredictionResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat scenario ID for the prediction
|
||||
/// </summary>
|
||||
public int ScenarioId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Attacker player ID
|
||||
/// </summary>
|
||||
public int AttackerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Defender player ID
|
||||
/// </summary>
|
||||
public int DefenderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Predicted battle outcome probabilities
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> OutcomeProbabilities { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Estimated casualty ranges for attacker
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, long>> AttackerCasualtyEstimates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Estimated casualty ranges for defender
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, long>> DefenderCasualtyEstimates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Power score comparison analysis
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PowerAnalysis { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon impact predictions
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonImpactPredictions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Tactical advantage assessments
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> TacticalAdvantages { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource gain/loss predictions
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, long>> ResourcePredictions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Battle duration estimates
|
||||
/// </summary>
|
||||
public Dictionary<string, TimeSpan> DurationEstimates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Confidence levels for predictions
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> PredictionConfidence { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When predictions were calculated
|
||||
/// </summary>
|
||||
public DateTime PredictionTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional prediction analytics and metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PredictionAnalytics { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\CasualtyProcessingRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for casualty processing operations
|
||||
* Last Edit Notes: Individual file implementation for casualty processing input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for casualty processing operations
|
||||
/// </summary>
|
||||
public class CasualtyProcessingRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for casualty processing
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID whose casualties to process
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Battle casualties by troop type
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> BattleCasualties { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply VIP casualty reduction bonuses
|
||||
/// </summary>
|
||||
public bool ApplyVipReductions { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply alliance hospital bonuses
|
||||
/// </summary>
|
||||
public bool ApplyAllianceBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Dragon healing abilities to apply
|
||||
/// </summary>
|
||||
public List<string> DragonHealingSkills { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment protection bonuses active
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ProtectionBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Hospital capacity overrides if applicable
|
||||
/// </summary>
|
||||
public Dictionary<string, long>? HospitalCapacityOverrides { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether to use premium healing acceleration
|
||||
/// </summary>
|
||||
public bool UsePremiumHealing { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Resources to spend on casualty recovery
|
||||
/// </summary>
|
||||
public Dictionary<string, long> RecoveryResourceBudget { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional casualty processing parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ProcessingParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\CasualtyProcessingResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for casualty processing after battles
|
||||
* Last Edit Notes: Individual file implementation for casualty processing results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for casualty processing after battles
|
||||
/// </summary>
|
||||
public class CasualtyProcessingResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for the processed battle
|
||||
/// </summary>
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID whose casualties were processed
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Total casualties by troop type
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TotalCasualties { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops killed permanently
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsKilled { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops wounded and sent to hospital
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsWounded { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops that survived the battle
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsSurvived { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Hospital capacity and healing information
|
||||
/// </summary>
|
||||
public Dictionary<string, object> HospitalStatus { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon casualties and status
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? DragonCasualties { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Equipment lost or damaged in battle
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EquipmentDamage { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Casualty reduction bonuses applied
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> CasualtyReductions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alliance hospital assistance provided
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceAssistance { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When casualty processing was completed
|
||||
/// </summary>
|
||||
public DateTime ProcessingTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional casualty processing data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ProcessingMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\CombatEffectivenessResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for combat effectiveness analysis and anti-pay-to-win monitoring
|
||||
* Last Edit Notes: Individual file implementation for combat effectiveness results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for combat effectiveness analysis and anti-pay-to-win monitoring
|
||||
/// </summary>
|
||||
public class CombatEffectivenessResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID being analyzed
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player's current overall combat effectiveness rating
|
||||
/// </summary>
|
||||
public decimal OverallEffectiveness { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Combat effectiveness breakdown by category
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> EffectivenessBreakdown { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Comparison to free-to-play baseline (target: 70% competitive)
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> F2PComparison { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Spending-derived advantages vs skill-based advantages
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> AdvantageAnalysis { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Available skill-based alternatives to premium advantages
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> SkillAlternatives { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Player's skill progression and mastery levels
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SkillProgression { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Anti-pay-to-win balance validation results
|
||||
/// </summary>
|
||||
public Dictionary<string, object> BalanceValidation { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Recommended paths for improvement without spending
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> ImprovementPaths { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Combat performance trends over time
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PerformanceTrends { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Effectiveness compared to kingdom and alliance averages
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> RelativeEffectiveness { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon contribution to overall effectiveness
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> DragonContribution { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment vs skill contribution ratios
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ContributionRatios { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When effectiveness analysis was performed
|
||||
/// </summary>
|
||||
public DateTime AnalysisTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional effectiveness analytics and monitoring data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AnalyticsMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonEquipmentRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for dragon equipment operations
|
||||
* Last Edit Notes: Individual file implementation for dragon equipment input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for dragon equipment operations
|
||||
/// </summary>
|
||||
public class DragonEquipmentRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Dragon unique identifier
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int DragonId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Equipment operation type (Equip, Unequip, Upgrade, Craft, Repair)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string OperationType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Equipment item ID for the operation
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int? ItemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Equipment slot for equip/unequip operations
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string? EquipmentSlot { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resources to spend on upgrade or crafting
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourceInvestment { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to use premium enhancement materials
|
||||
/// </summary>
|
||||
public bool UsePremiumMaterials { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Target upgrade level for equipment enhancement
|
||||
/// </summary>
|
||||
[Range(1, 20)]
|
||||
public int? TargetUpgradeLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Equipment set preferences for optimization
|
||||
/// </summary>
|
||||
public List<string> PreferredSets { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Crafting recipe ID for new equipment
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int? CraftingRecipeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Auto-equip preferences after crafting/upgrading
|
||||
/// </summary>
|
||||
public bool AutoEquipAfterOperation { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum resources willing to spend
|
||||
/// </summary>
|
||||
public Dictionary<string, long> SpendingLimits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional equipment operation parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> OperationParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonEquipmentResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for dragon equipment operations
|
||||
* Last Edit Notes: Individual file implementation for dragon equipment results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for dragon equipment operations
|
||||
/// </summary>
|
||||
public class DragonEquipmentResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who owns the dragon
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dragon unique identifier
|
||||
/// </summary>
|
||||
public int DragonId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Currently equipped items by slot
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, object>> EquippedItems { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Available equipment in inventory
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> AvailableEquipment { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment bonuses currently active
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> EquipmentBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Set bonuses from equipped gear combinations
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> SetBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon's total combat effectiveness with equipment
|
||||
/// </summary>
|
||||
public Dictionary<string, long> CombatEffectiveness { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment durability and maintenance status
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EquipmentCondition { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Upgrade possibilities for current equipment
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> UpgradeOptions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Crafting materials available for new equipment
|
||||
/// </summary>
|
||||
public Dictionary<string, long> CraftingMaterials { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Skill-based equipment alternatives to premium gear
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> SkillBasedAlternatives { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment operation results (equip, unequip, upgrade)
|
||||
/// </summary>
|
||||
public Dictionary<string, object> OperationResults { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When equipment status was last updated
|
||||
/// </summary>
|
||||
public DateTime LastUpdated { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional equipment system data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EquipmentMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonSkillRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for dragon skill operations
|
||||
* Last Edit Notes: Individual file implementation for dragon skill input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for dragon skill operations
|
||||
/// </summary>
|
||||
public class DragonSkillRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Dragon unique identifier
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int DragonId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Skill name to activate or modify
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string SkillName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Operation type (Activate, Upgrade, Query, Reset)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string OperationType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Target for skill activation (player, coordinates, etc.)
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? SkillTarget { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Skill intensity or power level to use
|
||||
/// </summary>
|
||||
[Range(0.1, 2.0)]
|
||||
public decimal SkillIntensity { get; set; } = 1.0m;
|
||||
|
||||
/// <summary>
|
||||
/// Resources to spend on skill upgrade
|
||||
/// </summary>
|
||||
public Dictionary<string, long> UpgradeResources { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to use premium skill enhancement
|
||||
/// </summary>
|
||||
public bool UsePremiumEnhancement { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum resources willing to spend
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourceLimits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Skill combination with other dragon abilities
|
||||
/// </summary>
|
||||
public List<string> ComboSkills { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Timing preferences for skill activation
|
||||
/// </summary>
|
||||
public Dictionary<string, object> TimingPreferences { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional skill operation parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SkillParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonSkillResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for dragon skill operations and effects
|
||||
* Last Edit Notes: Individual file implementation for dragon skill results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for dragon skill operations and effects
|
||||
/// </summary>
|
||||
public class DragonSkillResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who owns the dragon
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dragon unique identifier
|
||||
/// </summary>
|
||||
public int DragonId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Skill that was activated or queried
|
||||
/// </summary>
|
||||
public string SkillName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Current skill level and progression
|
||||
/// </summary>
|
||||
public Dictionary<string, int> SkillProgression { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Skill effects and bonuses applied
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> SkillEffects { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Duration of skill effects
|
||||
/// </summary>
|
||||
public Dictionary<string, TimeSpan> EffectDurations { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource costs for skill activation
|
||||
/// </summary>
|
||||
public Dictionary<string, long> SkillCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Cooldown period before skill can be used again
|
||||
/// </summary>
|
||||
public TimeSpan SkillCooldown { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Next available use time
|
||||
/// </summary>
|
||||
public DateTime? NextAvailableTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Combat bonuses provided by the skill
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> CombatBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Skill-based alternatives to premium features
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> SkillAlternatives { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Experience gained from skill usage
|
||||
/// </summary>
|
||||
public long SkillExperience { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether skill activation was successful
|
||||
/// </summary>
|
||||
public bool ActivationSuccess { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When skill was activated or queried
|
||||
/// </summary>
|
||||
public DateTime SkillTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional skill-related data and analytics
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SkillMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonValidationResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for dragon validation in combat operations
|
||||
* Last Edit Notes: Individual file implementation for dragon validation results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for dragon validation in combat operations
|
||||
/// </summary>
|
||||
public class DragonValidationResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who owns the dragon
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dragon unique identifier
|
||||
/// </summary>
|
||||
public int DragonId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether dragon can participate in the requested combat
|
||||
/// </summary>
|
||||
public bool CanParticipate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Validation errors preventing dragon participation
|
||||
/// </summary>
|
||||
public List<string> ValidationErrors { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon's current health and status
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonStatus { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon's current level and experience
|
||||
/// </summary>
|
||||
public Dictionary<string, long> DragonProgression { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Available skills and abilities
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> AvailableSkills { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Currently equipped dragon gear
|
||||
/// </summary>
|
||||
public Dictionary<string, object> EquippedGear { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Combat bonuses the dragon provides
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> CombatBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon's energy and participation costs
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ParticipationCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Cooldown information for dragon abilities
|
||||
/// </summary>
|
||||
public Dictionary<string, DateTime> AbilityCooldowns { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon compatibility with army composition
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ArmyCompatibility { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When validation was performed
|
||||
/// </summary>
|
||||
public DateTime ValidationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional dragon validation metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ValidationMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\FieldInterceptionResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for field interception opportunities and results
|
||||
* Last Edit Notes: Individual file implementation for field interception system data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for field interception opportunities and results
|
||||
/// </summary>
|
||||
public class FieldInterceptionResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for the interception
|
||||
/// </summary>
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Attacking player ID
|
||||
/// </summary>
|
||||
public int AttackerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Defending player ID
|
||||
/// </summary>
|
||||
public int DefenderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether field interception is available
|
||||
/// </summary>
|
||||
public bool InterceptionAvailable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Available interception positions on the field
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> InterceptionPositions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Timing windows for successful interception
|
||||
/// </summary>
|
||||
public Dictionary<string, DateTime> InterceptionWindows { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Tactical advantages of field interception
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> TacticalAdvantages { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Speed and movement calculations
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MovementData { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Grace periods and minimum march times
|
||||
/// </summary>
|
||||
public Dictionary<string, TimeSpan> TimingConstraints { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether interception was successful if attempted
|
||||
/// </summary>
|
||||
public bool? InterceptionSuccess { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When interception opportunity was calculated
|
||||
/// </summary>
|
||||
public DateTime CalculationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional field interception analytics
|
||||
/// </summary>
|
||||
public Dictionary<string, object> InterceptionAnalytics { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\InterceptionValidationRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for interception validation
|
||||
* Last Edit Notes: Individual file implementation for interception validation input
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for interception validation
|
||||
/// </summary>
|
||||
public class InterceptionValidationRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Target march or attack to intercept
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int TargetMarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Proposed interception coordinates
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, decimal> InterceptionCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops to send for interception by type
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> TroopsToSend { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to include dragon in interception
|
||||
/// </summary>
|
||||
public bool IncludeDragon { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Dragon skills to apply if dragon is included
|
||||
/// </summary>
|
||||
public List<string> DragonSkills { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Preferred march speed (affects timing and costs)
|
||||
/// </summary>
|
||||
[Range(0.1, 2.0)]
|
||||
public decimal PreferredSpeed { get; set; } = 1.0m;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to use stealth/concealment if available
|
||||
/// </summary>
|
||||
public bool UseStealthMechanics { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Additional interception parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> InterceptionParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\InterceptionValidationResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for interception validation results
|
||||
* Last Edit Notes: Individual file implementation for interception validation data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for interception validation results
|
||||
/// </summary>
|
||||
public class InterceptionValidationResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID attempting the interception
|
||||
/// </summary>
|
||||
public int InterceptorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Target march or attack being intercepted
|
||||
/// </summary>
|
||||
public int TargetMarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the interception attempt is valid
|
||||
/// </summary>
|
||||
public bool IsValid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Validation errors if interception is not allowed
|
||||
/// </summary>
|
||||
public List<string> ValidationErrors { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Distance calculations and feasibility
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> DistanceCalculations { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Speed requirements and march time estimates
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpeedRequirements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource costs for the interception march
|
||||
/// </summary>
|
||||
public Dictionary<string, long> InterceptionCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Optimal interception coordinates
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> OptimalPosition { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Success probability estimates
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> SuccessProbabilities { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation requirements and bonuses
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonRequirements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When validation was performed
|
||||
/// </summary>
|
||||
public DateTime ValidationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional validation metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ValidationMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\KingdomTrendsResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for kingdom-wide combat trends and analytics
|
||||
* Last Edit Notes: Individual file implementation for kingdom combat trends data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for kingdom-wide combat trends and analytics
|
||||
/// </summary>
|
||||
public class KingdomTrendsResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Kingdom ID for the trends analysis
|
||||
/// </summary>
|
||||
public int KingdomId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Analysis time period covered
|
||||
/// </summary>
|
||||
public Dictionary<string, DateTime> AnalysisPeriod { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Overall kingdom combat activity statistics
|
||||
/// </summary>
|
||||
public Dictionary<string, long> CombatActivity { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Field interception usage and success rates
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> InterceptionTrends { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alliance vs alliance combat patterns
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceCombatPatterns { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation rates and effectiveness
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonUsageTrends { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Combat type distribution (raids, sieges, field battles)
|
||||
/// </summary>
|
||||
public Dictionary<string, long> CombatTypeDistribution { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Victory/defeat ratios by player power ranges
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> PowerRangeAnalysis { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Free-to-play vs spender combat effectiveness tracking
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpendingEffectivenessAnalysis { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Skill-based vs premium advantage usage patterns
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AdvantageUsagePatterns { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Kingdom leaderboard and ranking changes
|
||||
/// </summary>
|
||||
public Dictionary<string, object> RankingTrends { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Coalition formation and warfare patterns
|
||||
/// </summary>
|
||||
public Dictionary<string, object> CoalitionWarfarePatterns { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource flow and economic impact of combat
|
||||
/// </summary>
|
||||
public Dictionary<string, long> EconomicImpact { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// KvK participation and performance metrics
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? KvKMetrics { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Emerging combat strategies and meta shifts
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> StrategyTrends { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When trends analysis was completed
|
||||
/// </summary>
|
||||
public DateTime AnalysisCompletionTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional kingdom-wide combat analytics
|
||||
/// </summary>
|
||||
public Dictionary<string, object> KingdomAnalytics { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchArrivalRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for processing march arrivals
|
||||
* Last Edit Notes: Individual file implementation for march arrival processing input
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for processing march arrivals
|
||||
/// </summary>
|
||||
public class MarchArrivalRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// March ID that is arriving
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int MarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Expected arrival coordinates
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, decimal> ExpectedCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Actions to perform upon arrival
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string ArrivalAction { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to engage in immediate combat if defenders present
|
||||
/// </summary>
|
||||
public bool EngageDefenders { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Combat stance for battle (Aggressive, Defensive, Balanced)
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string CombatStance { get; set; } = "Balanced";
|
||||
|
||||
/// <summary>
|
||||
/// Dragon tactics to apply in combat
|
||||
/// </summary>
|
||||
public List<string> DragonTactics { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource collection preferences if applicable
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ResourcePreferences { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to attempt stealth approach
|
||||
/// </summary>
|
||||
public bool UseStealthApproach { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Additional arrival processing parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ArrivalParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchArrivalResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for march arrival events and outcomes
|
||||
* Last Edit Notes: Individual file implementation for march arrival results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for march arrival events and outcomes
|
||||
/// </summary>
|
||||
public class MarchArrivalResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// March ID that arrived
|
||||
/// </summary>
|
||||
public int MarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID who owned the march
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// March type that arrived
|
||||
/// </summary>
|
||||
public string MarchType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Actual arrival coordinates
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ArrivalCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops that arrived at destination
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ArrivingTroops { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon status upon arrival
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? DragonArrival { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether arrival triggered immediate combat
|
||||
/// </summary>
|
||||
public bool TriggeredCombat { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Combat log ID if battle occurred
|
||||
/// </summary>
|
||||
public int? CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Field interception that occurred during march
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? InterceptionResults { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resources gained or lost upon arrival
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourceChanges { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// March duration and timing analysis
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MarchTiming { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Experience gained from the march/arrival
|
||||
/// </summary>
|
||||
public long ExperienceGained { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the march arrived
|
||||
/// </summary>
|
||||
public DateTime ArrivalTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional arrival event data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ArrivalEventData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchCancellationResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for march cancellation operations
|
||||
* Last Edit Notes: Individual file implementation for march cancellation results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for march cancellation operations
|
||||
/// </summary>
|
||||
public class MarchCancellationResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// March ID that was cancelled
|
||||
/// </summary>
|
||||
public int MarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID who cancelled the march
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether cancellation was successful
|
||||
/// </summary>
|
||||
public bool CancellationSuccess { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reason for cancellation if unsuccessful
|
||||
/// </summary>
|
||||
public string? CancellationError { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Troops returned to player after cancellation
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsReturned { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resources refunded from cancellation
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesRefunded { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resources lost due to cancellation penalties
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesLost { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon status after march cancellation
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? DragonStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Percentage of march completed before cancellation
|
||||
/// </summary>
|
||||
public decimal MarchCompletionPercentage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Time remaining until march would have completed
|
||||
/// </summary>
|
||||
public TimeSpan? TimeRemaining { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Grace period considerations for cancellation
|
||||
/// </summary>
|
||||
public Dictionary<string, object> GracePeriodInfo { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When the march was cancelled
|
||||
/// </summary>
|
||||
public DateTime CancellationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional cancellation metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> CancellationMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchInitiationResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for march initiation operations
|
||||
* Last Edit Notes: Individual file implementation for march initiation results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for march initiation operations
|
||||
/// </summary>
|
||||
public class MarchInitiationResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Unique march identifier
|
||||
/// </summary>
|
||||
public int MarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID who initiated the march
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// March type (Attack, Raid, Reconnaissance, Reinforcement)
|
||||
/// </summary>
|
||||
public string MarchType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Target coordinates or player ID
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MarchTarget { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops participating in the march
|
||||
/// </summary>
|
||||
public Dictionary<string, long> MarchingTroops { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation details
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? DragonParticipation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// March route and waypoints
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MarchRoute { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Estimated arrival time at destination
|
||||
/// </summary>
|
||||
public DateTime EstimatedArrival { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resource costs consumed for the march
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourceCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Speed limitations and grace periods applied
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpeedConstraints { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether march initiation was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the march was initiated
|
||||
/// </summary>
|
||||
public DateTime InitiationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional march metadata and tracking info
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MarchMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchSpeedRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for march speed calculations and modifications
|
||||
* Last Edit Notes: Individual file implementation for march speed input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for march speed calculations and modifications
|
||||
/// </summary>
|
||||
public class MarchSpeedRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// March ID to modify speed for
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int MarchId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Desired speed multiplier (0.1 to 2.0)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0.1, 2.0)]
|
||||
public decimal SpeedMultiplier { get; set; } = 1.0m;
|
||||
|
||||
/// <summary>
|
||||
/// Army composition affecting base speed
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> ArmyComposition { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply VIP speed bonuses
|
||||
/// </summary>
|
||||
public bool ApplyVipBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply alliance speed bonuses
|
||||
/// </summary>
|
||||
public bool ApplyAllianceBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Dragon speed skills to apply
|
||||
/// </summary>
|
||||
public List<string> DragonSpeedSkills { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Terrain type for speed calculations
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string TerrainType { get; set; } = "Normal";
|
||||
|
||||
/// <summary>
|
||||
/// Whether march is passing through forest barriers
|
||||
/// </summary>
|
||||
public bool PassingThroughForest { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Resources willing to spend for speed increases
|
||||
/// </summary>
|
||||
public Dictionary<string, long> SpeedResourceBudget { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional speed modification parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpeedParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\OptimalRoutesResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for optimal route calculations and pathfinding
|
||||
* Last Edit Notes: Individual file implementation for route optimization data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for optimal route calculations and pathfinding
|
||||
/// </summary>
|
||||
public class OptimalRoutesResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID requesting route optimization
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Starting coordinates for the route
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> StartCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Destination coordinates for the route
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> DestinationCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Primary optimal route with waypoints
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PrimaryRoute { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alternative routes with different trade-offs
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> AlternativeRoutes { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Route analysis including distance, time, and safety
|
||||
/// </summary>
|
||||
public Dictionary<string, object> RouteAnalysis { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Terrain effects and movement modifiers
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> TerrainEffects { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Forest barrier impacts and speed reductions
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ForestBarrierEffects { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Stealth route options vs premium convenience routes
|
||||
/// </summary>
|
||||
public Dictionary<string, object> StealthRouteOptions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource costs for different route choices
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, long>> RouteCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When route calculations were performed
|
||||
/// </summary>
|
||||
public DateTime CalculationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional pathfinding and optimization data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> OptimizationData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\RewardDistributionRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for combat reward distribution
|
||||
* Last Edit Notes: Individual file implementation for reward distribution input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for combat reward distribution
|
||||
/// </summary>
|
||||
public class RewardDistributionRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for reward calculation
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID to calculate rewards for
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Battle outcome achieved
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string BattleOutcome { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Player's performance metrics in battle
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, object> PerformanceMetrics { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply VIP reward bonuses
|
||||
/// </summary>
|
||||
public bool ApplyVipBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply alliance reward bonuses
|
||||
/// </summary>
|
||||
public bool ApplyAllianceBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation bonuses to include
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Equipment reward bonuses active
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> EquipmentBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Event or seasonal multipliers to apply
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> EventMultipliers { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Maximum reward caps if applicable
|
||||
/// </summary>
|
||||
public Dictionary<string, long>? RewardCaps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether this is part of a KvK event
|
||||
/// </summary>
|
||||
public bool IsKvKEvent { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Additional reward calculation parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> RewardParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\RewardDistributionResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for combat reward distribution
|
||||
* Last Edit Notes: Individual file implementation for reward distribution results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for combat reward distribution
|
||||
/// </summary>
|
||||
public class RewardDistributionResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Combat log ID for the reward distribution
|
||||
/// </summary>
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player ID receiving rewards
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Battle outcome that determined rewards
|
||||
/// </summary>
|
||||
public string BattleOutcome { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Resources gained from victory
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourceRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Experience points earned
|
||||
/// </summary>
|
||||
public long ExperienceReward { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items and equipment obtained
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> ItemRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Dragon experience and skill progression
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alliance contribution bonuses
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Achievement progress and unlocks
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> AchievementProgress { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Ranking and reputation changes
|
||||
/// </summary>
|
||||
public Dictionary<string, long> RankingChanges { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// VIP points earned from combat
|
||||
/// </summary>
|
||||
public long VipPointsEarned { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Bonus multipliers applied to rewards
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> RewardMultipliers { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When rewards were distributed
|
||||
/// </summary>
|
||||
public DateTime DistributionTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional reward distribution data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> RewardMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\RouteOptimizationRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for route optimization and pathfinding
|
||||
* Last Edit Notes: Individual file implementation for route optimization input
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for route optimization and pathfinding
|
||||
/// </summary>
|
||||
public class RouteOptimizationRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Starting coordinates for route calculation
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, decimal> StartCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Destination coordinates for route calculation
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, decimal> DestinationCoordinates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Army composition affecting movement speed
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> ArmyComposition { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Route optimization priority (Speed, Stealth, Safety, Cost)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string OptimizationPriority { get; set; } = "Speed";
|
||||
|
||||
/// <summary>
|
||||
/// Whether to include stealth route options
|
||||
/// </summary>
|
||||
public bool IncludeStealthRoutes { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum acceptable route distance multiplier
|
||||
/// </summary>
|
||||
[Range(1.0, 3.0)]
|
||||
public decimal MaxDistanceMultiplier { get; set; } = 1.5m;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to avoid forest barriers if possible
|
||||
/// </summary>
|
||||
public bool AvoidForestBarriers { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Number of alternative routes to calculate
|
||||
/// </summary>
|
||||
[Range(1, 5)]
|
||||
public int AlternativeRoutesCount { get; set; } = 2;
|
||||
|
||||
/// <summary>
|
||||
/// Whether player has premium route planning features
|
||||
/// </summary>
|
||||
public bool HasPremiumRouting { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Additional optimization preferences
|
||||
/// </summary>
|
||||
public Dictionary<string, object> OptimizationPreferences { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AchievementsResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for player achievements and milestones
|
||||
* Last Edit Notes: Individual file implementation for achievements data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for player achievements and milestones
|
||||
/// </summary>
|
||||
public class AchievementsResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID for the achievements
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Recently unlocked achievements
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> RecentAchievements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// All completed achievements
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> CompletedAchievements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Achievements currently in progress
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> InProgressAchievements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Achievement categories and completion status
|
||||
/// </summary>
|
||||
public Dictionary<string, object> CategoryProgress { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Total achievement points earned
|
||||
/// </summary>
|
||||
public long TotalAchievementPoints { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rewards available for collection
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> PendingRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Achievement-based titles available
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> AvailableTitles { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Player's current selected title
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? CurrentTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Achievement leaderboard position
|
||||
/// </summary>
|
||||
public int? LeaderboardRank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When achievements were last updated
|
||||
/// </summary>
|
||||
public DateTime LastUpdated { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional achievement system data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AchievementSystemData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ActionValidationRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for player action validation
|
||||
* Last Edit Notes: Individual file implementation for action validation input
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for player action validation
|
||||
/// </summary>
|
||||
public class ActionValidationRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Type of action to validate
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string ActionType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Target of the action (player ID, building ID, etc.)
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int? TargetId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Parameters specific to the action being validated
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ActionParameters { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether to include detailed validation information
|
||||
/// </summary>
|
||||
public bool IncludeDetailedInfo { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to validate anti-pay-to-win balance
|
||||
/// </summary>
|
||||
public bool ValidateBalance { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to check for skill-based alternatives
|
||||
/// </summary>
|
||||
public bool CheckSkillAlternatives { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Additional validation preferences
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ValidationPreferences { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ActionValidationResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for player action validation results
|
||||
* Last Edit Notes: Individual file implementation for action validation data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for player action validation results
|
||||
/// </summary>
|
||||
public class ActionValidationResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who requested the action
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Action that was validated
|
||||
/// </summary>
|
||||
public string ActionType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the action is valid and can be performed
|
||||
/// </summary>
|
||||
public bool IsValid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Validation errors if action is not valid
|
||||
/// </summary>
|
||||
public List<string> ValidationErrors { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Requirements that must be met for the action
|
||||
/// </summary>
|
||||
public Dictionary<string, object> Requirements { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Player's current status against requirements
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PlayerStatus { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Costs associated with performing the action
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ActionCosts { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Expected benefits from performing the action
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ExpectedBenefits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Cooldown information if applicable
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? CooldownInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Anti-pay-to-win validation results
|
||||
/// </summary>
|
||||
public Dictionary<string, object> BalanceValidation { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When validation was performed
|
||||
/// </summary>
|
||||
public DateTime ValidationTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional validation metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ValidationMetadata { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceJoinResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for alliance join operations
|
||||
* Last Edit Notes: Individual file implementation for alliance join results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for alliance join operations
|
||||
/// </summary>
|
||||
public class AllianceJoinResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who attempted to join
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Alliance ID that was joined or applied to
|
||||
/// </summary>
|
||||
public int AllianceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Alliance name for reference
|
||||
/// </summary>
|
||||
public string AllianceName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the join operation was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Current status of membership (Accepted, Pending, Rejected)
|
||||
/// </summary>
|
||||
public string MembershipStatus { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Role assigned within the alliance
|
||||
/// </summary>
|
||||
public string? AssignedRole { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Alliance benefits immediately available to player
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceBenefits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Research bonuses now accessible
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ResearchBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Message from alliance leadership if applicable
|
||||
/// </summary>
|
||||
public string? WelcomeMessage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the join operation was processed
|
||||
/// </summary>
|
||||
public DateTime JoinTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional alliance integration data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> IntegrationData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceLeaveRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for alliance leave operations
|
||||
* Last Edit Notes: Individual file implementation for alliance leave input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for alliance leave operations
|
||||
/// </summary>
|
||||
public class AllianceLeaveRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Reason for leaving the alliance
|
||||
/// </summary>
|
||||
[StringLength(500)]
|
||||
public string? LeaveReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether this is an immediate leave or scheduled
|
||||
/// </summary>
|
||||
public bool ImmediateLeave { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Scheduled leave time if not immediate
|
||||
/// </summary>
|
||||
public DateTime? ScheduledLeaveTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether to forfeit leadership roles immediately
|
||||
/// </summary>
|
||||
public bool ForfeitLeadership { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Transfer leadership to specific player ID (for leaders)
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int? TransferLeadershipTo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Message to leave for alliance members
|
||||
/// </summary>
|
||||
[StringLength(500)]
|
||||
public string? FarewellMessage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional leave preferences
|
||||
/// </summary>
|
||||
public Dictionary<string, object> LeavePreferences { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceLeaveResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for alliance leave operations
|
||||
* Last Edit Notes: Individual file implementation for alliance leave results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for alliance leave operations
|
||||
/// </summary>
|
||||
public class AllianceLeaveResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who left the alliance
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Former alliance ID
|
||||
/// </summary>
|
||||
public int FormerAllianceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Former alliance name for reference
|
||||
/// </summary>
|
||||
public string FormerAllianceName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the leave operation was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reason for leaving (Voluntary, Kicked, AllianceDisbanded)
|
||||
/// </summary>
|
||||
public string LeaveReason { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Alliance benefits that were lost
|
||||
/// </summary>
|
||||
public Dictionary<string, object> BenefitsLost { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Research bonuses no longer available
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ResearchBonusesLost { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Coalition memberships that were affected
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> CoalitionChanges { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Cooldown period before joining another alliance
|
||||
/// </summary>
|
||||
public TimeSpan? JoinCooldown { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the leave operation was processed
|
||||
/// </summary>
|
||||
public DateTime LeaveTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional separation data and consequences
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SeparationData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CastleInfoResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for castle information and status
|
||||
* Last Edit Notes: Individual file implementation for castle information data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for castle information and status
|
||||
/// </summary>
|
||||
public class CastleInfoResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who owns the castle
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Current castle level
|
||||
/// </summary>
|
||||
public int CastleLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Castle coordinates and location
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> Location { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Current castle defenses and walls
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DefenseStatus { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resource production buildings and rates
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ProductionBuildings { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Military buildings and capacity
|
||||
/// </summary>
|
||||
public Dictionary<string, object> MilitaryBuildings { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Current troop counts stationed at castle
|
||||
/// </summary>
|
||||
public Dictionary<string, long> StationedTroops { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Available upgrade options
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> UpgradeOptions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When castle information was last updated
|
||||
/// </summary>
|
||||
public DateTime LastUpdated { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CombatResultsRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for querying combat results
|
||||
* Last Edit Notes: Individual file implementation for combat results query parameters
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for querying combat results
|
||||
/// </summary>
|
||||
public class CombatResultsRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Specific combat log ID to retrieve (optional)
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int? CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Filter by battle outcome
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string? OutcomeFilter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Filter by player role in battles
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string? RoleFilter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Start date for battle history query
|
||||
/// </summary>
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// End date for battle history query
|
||||
/// </summary>
|
||||
public DateTime? EndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Maximum number of results to return
|
||||
/// </summary>
|
||||
[Range(1, 100)]
|
||||
public int MaxResults { get; set; } = 20;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to include detailed battle statistics
|
||||
/// </summary>
|
||||
public bool IncludeDetailedStats { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to include dragon participation data
|
||||
/// </summary>
|
||||
public bool IncludeDragonData { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Additional query parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> QueryParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CombatResultsResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for combat results and battle outcomes
|
||||
* Last Edit Notes: Individual file implementation for combat results data
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for combat results and battle outcomes
|
||||
/// </summary>
|
||||
public class CombatResultsResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who participated in combat
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Combat log ID for reference
|
||||
/// </summary>
|
||||
public int CombatLogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Battle outcome (Victory, Defeat, Draw)
|
||||
/// </summary>
|
||||
public string BattleOutcome { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Player's role in the battle (Attacker, Defender, Reinforcement)
|
||||
/// </summary>
|
||||
public string PlayerRole { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Troops lost in the battle by type
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsLost { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Troops surviving after battle by type
|
||||
/// </summary>
|
||||
public Dictionary<string, long> TroopsSurvived { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resources gained from victory
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesGained { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Resources lost from defeat
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesLost { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Experience points earned from combat
|
||||
/// </summary>
|
||||
public long ExperienceGained { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dragon participation and bonuses
|
||||
/// </summary>
|
||||
public Dictionary<string, object> DragonResults { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Field interception details if applicable
|
||||
/// </summary>
|
||||
public Dictionary<string, object>? InterceptionDetails { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the battle concluded
|
||||
/// </summary>
|
||||
public DateTime BattleTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional battle statistics and analytics
|
||||
/// </summary>
|
||||
public Dictionary<string, object> BattleStatistics { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ExperienceProcessingResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for experience processing operations
|
||||
* Last Edit Notes: Individual file implementation for experience processing results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for experience processing operations
|
||||
/// </summary>
|
||||
public class ExperienceProcessingResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who gained experience
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Experience points gained in this processing
|
||||
/// </summary>
|
||||
public long ExperienceGained { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Previous player level
|
||||
/// </summary>
|
||||
public int PreviousLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// New player level after processing
|
||||
/// </summary>
|
||||
public int NewLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the player leveled up
|
||||
/// </summary>
|
||||
public bool LeveledUp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Current experience points total
|
||||
/// </summary>
|
||||
public long TotalExperience { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Experience needed for next level
|
||||
/// </summary>
|
||||
public long ExperienceToNextLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Bonuses and rewards received from leveling up
|
||||
/// </summary>
|
||||
public Dictionary<string, object> LevelUpRewards { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// New abilities or features unlocked
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> UnlockedFeatures { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Experience multipliers that were applied
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ExperienceMultipliers { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Source of the experience gain
|
||||
/// </summary>
|
||||
public string ExperienceSource { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// When experience was processed
|
||||
/// </summary>
|
||||
public DateTime ProcessingTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional progression data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ProgressionData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\PlayerRankingsResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for player rankings and leaderboard data
|
||||
* Last Edit Notes: Individual file implementation for player rankings results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for player rankings and leaderboard data
|
||||
/// </summary>
|
||||
public class PlayerRankingsResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID for the rankings
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player's current overall rank
|
||||
/// </summary>
|
||||
public int OverallRank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player's rank within their kingdom
|
||||
/// </summary>
|
||||
public int KingdomRank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player's rank within their alliance
|
||||
/// </summary>
|
||||
public int? AllianceRank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rankings across different categories
|
||||
/// </summary>
|
||||
public Dictionary<string, int> CategoryRankings { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Player's power score
|
||||
/// </summary>
|
||||
public long PowerScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Leaderboard context and metadata
|
||||
/// </summary>
|
||||
public Dictionary<string, object> LeaderboardContext { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// When rankings were last calculated
|
||||
/// </summary>
|
||||
public DateTime CalculationTime { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ResourceCollectionResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for resource collection operations
|
||||
* Last Edit Notes: Individual file implementation for resource collection results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for resource collection operations
|
||||
/// </summary>
|
||||
public class ResourceCollectionResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who collected resources
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resources collected by type
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesCollected { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Current resource balances after collection
|
||||
/// </summary>
|
||||
public Dictionary<string, long> CurrentBalances { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Production rates and efficiency bonuses applied
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> ProductionRates { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// VIP bonuses that were applied to collection
|
||||
/// </summary>
|
||||
public Dictionary<string, object> VipBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Alliance bonuses that were applied
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AllianceBonuses { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether collection was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When resources were collected
|
||||
/// </summary>
|
||||
public DateTime CollectionTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Next available collection time
|
||||
/// </summary>
|
||||
public DateTime? NextCollectionTime { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ResourceSpendingRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for resource spending operations
|
||||
* Last Edit Notes: Individual file implementation for resource spending input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for resource spending operations
|
||||
/// </summary>
|
||||
public class ResourceSpendingRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Resources to spend by type
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, long> ResourcesToSpend { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Purpose or category of the spending
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string SpendingCategory { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Specific item or upgrade being purchased
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string TargetItem { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply VIP cost reduction bonuses
|
||||
/// </summary>
|
||||
public bool ApplyVipBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to apply alliance cost reduction bonuses
|
||||
/// </summary>
|
||||
public bool ApplyAllianceBonuses { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Priority level for the spending operation
|
||||
/// </summary>
|
||||
[Range(1, 5)]
|
||||
public int Priority { get; set; } = 3;
|
||||
|
||||
/// <summary>
|
||||
/// Additional spending parameters
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpendingParameters { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ResourceSpendingResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for resource spending operations
|
||||
* Last Edit Notes: Individual file implementation for resource spending results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for resource spending operations
|
||||
/// </summary>
|
||||
public class ResourceSpendingResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who spent resources
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resources spent by type
|
||||
/// </summary>
|
||||
public Dictionary<string, long> ResourcesSpent { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Current resource balances after spending
|
||||
/// </summary>
|
||||
public Dictionary<string, long> RemainingBalances { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Purpose or category of the spending
|
||||
/// </summary>
|
||||
public string SpendingCategory { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Benefits or items received from spending
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ItemsReceived { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Cost reduction bonuses that were applied
|
||||
/// </summary>
|
||||
public Dictionary<string, decimal> CostReductions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether spending was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Transaction ID for tracking
|
||||
/// </summary>
|
||||
public string TransactionId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// When resources were spent
|
||||
/// </summary>
|
||||
public DateTime SpendingTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional spending analytics data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> SpendingAnalytics { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\UpdatePlayerProfileRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for player profile update operations
|
||||
* Last Edit Notes: Individual file implementation for player profile update input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for player profile update operations
|
||||
/// </summary>
|
||||
public class UpdatePlayerProfileRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// New display name for the player
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string? DisplayName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Avatar image identifier
|
||||
/// </summary>
|
||||
[StringLength(100)]
|
||||
public string? AvatarId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player description or bio
|
||||
/// </summary>
|
||||
[StringLength(500)]
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Language preference for the player
|
||||
/// </summary>
|
||||
[StringLength(10)]
|
||||
public string? LanguagePreference { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Notification preferences
|
||||
/// </summary>
|
||||
public Dictionary<string, bool> NotificationSettings { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Privacy settings for profile visibility
|
||||
/// </summary>
|
||||
public Dictionary<string, object> PrivacySettings { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\VipAdvancementRequestDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Request DTO for VIP advancement operations
|
||||
* Last Edit Notes: Individual file implementation for VIP advancement input validation
|
||||
*/
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Request DTO for VIP advancement operations
|
||||
/// </summary>
|
||||
public class VipAdvancementRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Target VIP level to advance to
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, 20)]
|
||||
public int TargetVipLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether to use accumulated VIP points
|
||||
/// </summary>
|
||||
public bool UseVipPoints { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to purchase additional points if needed
|
||||
/// </summary>
|
||||
public bool AllowPurchase { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum amount willing to spend on advancement
|
||||
/// </summary>
|
||||
[Range(0, 10000)]
|
||||
public decimal MaxSpendAmount { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Preferred payment method if purchase is needed
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string? PreferredPaymentMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional advancement preferences
|
||||
/// </summary>
|
||||
public Dictionary<string, object> AdvancementPreferences { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\VipAdvancementResponseDto.cs
|
||||
* Created: 2025-10-23
|
||||
* Last Modified: 2025-10-23
|
||||
* Description: Response DTO for VIP advancement operations
|
||||
* Last Edit Notes: Individual file implementation for VIP advancement results
|
||||
*/
|
||||
|
||||
namespace ShadowedRealms.Shared.DTOs.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// Response DTO for VIP advancement operations
|
||||
/// </summary>
|
||||
public class VipAdvancementResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Player ID who advanced VIP status
|
||||
/// </summary>
|
||||
public int PlayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Previous VIP level
|
||||
/// </summary>
|
||||
public int PreviousVipLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// New VIP level after advancement
|
||||
/// </summary>
|
||||
public int NewVipLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// VIP benefits unlocked with this advancement
|
||||
/// </summary>
|
||||
public List<Dictionary<string, object>> NewBenefits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// VIP points earned or consumed
|
||||
/// </summary>
|
||||
public long VipPointsChanged { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Current VIP point balance
|
||||
/// </summary>
|
||||
public long CurrentVipPoints { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Points needed for next VIP level
|
||||
/// </summary>
|
||||
public long? PointsToNextLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether advancement was successful
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When VIP advancement occurred
|
||||
/// </summary>
|
||||
public DateTime AdvancementTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional VIP progression data
|
||||
/// </summary>
|
||||
public Dictionary<string, object> VipProgressionData { get; set; } = new();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user