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:
matt 2025-10-23 13:04:12 -05:00
parent 9a7fa52bc4
commit 544d9a7a79
41 changed files with 3075 additions and 0 deletions

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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; }
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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; }
}
}

View File

@ -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; }
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}