using System.ComponentModel.DataAnnotations; using System.Globalization; namespace StarsAssistant.Model; public class Planet { #region Persistant and derived propeties [Key] public required string Name { get; set; } public string? OwnerId { get; set; } public string StarbaseType { get; set; } = String.Empty; public int ReportAge { get; set; } = 0; public int? Population { get; set; } public int? Value { get; set; } public int? Mines { get; set; } public int? Factories { get; set; } public decimal? DefPercent { get; set; } public int? SurfaceIronium { get; set; } public int? SurfaceBoranium { get; set; } public int? SurfaceGermanium { get; set; } public int? MRIronium { get; set; } public int? MRBoranium { get; set; } public int? MRGermanium { get; set; } public int? MCIronium { get; set; } public int? MCBoranium { get; set; } public int? MCGermanium { get; set; } public int? Resources { get; set; } public decimal? Gravity { get; set; } public decimal? Temperature { get; set; } public decimal? Radiation { get; set; } public decimal? GravityOrig { get; set; } public decimal? TemperatureOrig { get; set; } public decimal? RadiationOrig { get; set; } public int? MaxTerraforming { get; set; } public int? CapacityPercent { get; set; } public int? ScanRange { get; set; } public int? PenScanRange { get; set; } public int? Driver { get; set; } public int? DriverWarp { get; set; } public string? RouteTarget { get; set; } public int? GateRange { get; set; } public int? GateMass { get; set; } public int? PctDamage { get; set; } #endregion #region Relationships public Race? Owner { get; set; } #endregion #region Derived Properties // public int EffectiveValue() => EffectiveValue(Value); // public int MaxPopOnPlanet() => MaxPopOnPlanet(Value); // public int PopGrowth() => PopGrowth(Population ?? 0, MaxPopOnPlanet(), Value ?? 0); // public int MaxFact() => MaxFact(Population ?? 0); // public int MaxMines() => MaxMines(Population ?? 0); // public int ResourcesFromPop() => ResourcesFromPop(Population ?? 0, Value ?? 0); // public int ResourcesFromFact() => ResourcesFromFact(Population ?? 0, Factories ?? 0, Value ?? 0); #endregion }