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