diff --git a/Entity/System/Region.cs b/Entity/System/Region.cs index 59ed028..bae4174 100644 --- a/Entity/System/Region.cs +++ b/Entity/System/Region.cs @@ -7,12 +7,34 @@ namespace Milimoe.FunGame.Core.Entity public class Region : BaseEntity { public string Description { get; set; } = ""; - public HashSet Organisms { get; } = []; + public string Category { get; set; } = ""; + public HashSet Characters { get; } = []; + public HashSet Units { get; } = []; public HashSet Crops { get; } = []; public string Weather { get; set; } = ""; public int Temperature { get; set; } = 15; + public Dictionary Weathers { get; } = []; public RarityType Difficulty { get; set; } = RarityType.OneStar; + public bool ChangeWeather(string weather) + { + if (Weathers.TryGetValue(weather, out int temperature)) + { + Weather = weather; + Temperature = temperature; + return true; + } + return false; + } + + public bool ChangeRandomWeather() + { + if (Weathers.Count == 0) return false; + Weather = Weathers.Keys.ElementAt(Random.Shared.Next(Weathers.Count)); + Temperature = Weathers[Weather]; + return true; + } + public override bool Equals(IBaseEntity? other) { return other is Region && other.GetIdName() == GetIdName(); @@ -28,13 +50,19 @@ namespace Milimoe.FunGame.Core.Entity builder.AppendLine($"温度:{Temperature} °C"); builder.AppendLine($"{Description}"); - if (Organisms.Count > 0) + if (Characters.Count > 0) { - builder.AppendLine($"== 生物 =="); - builder.AppendLine(string.Join(",", Organisms.Select(o => o.Name))); + builder.AppendLine($"== 头目 =="); + builder.AppendLine(string.Join(",", Characters.Select(o => o.Name))); } - if (Organisms.Count > 0) + if (Units.Count > 0) + { + builder.AppendLine($"== 生物 =="); + builder.AppendLine(string.Join(",", Units.Select(o => o.Name))); + } + + if (Crops.Count > 0) { builder.AppendLine($"== 作物 =="); builder.AppendLine(string.Join(",", Crops.Select(c => c.Name)));