Torna al Thread

[Serializable] public class Missions { #region Fields (2) private List<Mission> activeMissions; private DateTime lastRead; #endregion Fields #region Constructors (1) public Missions() { activeMissions = new List<Mission>(); } #endregion Constructors #region Properties (6) public List<Mission> ActiveMissions { get { return activeMissions; } set { lastRead = DateTime.Now; activeMissions = value; } } /// <summary> /// Returns the number of active missions after having cleaned the list. /// </summary> public int CountColonisationMissions { get { int count = 0; CleanList(); foreach (Mission item in activeMissions) { if (item.Type == MissionType.Colonize) count++; } return count; } } /// <summary> /// Coutns epionage missions /// </summary> public int CountEspioMissions { get { int count = 0; CleanList(); foreach (Mission item in activeMissions) { if (item.Type == MissionType.Spy) count++; } return count; } } public int CountFarmingMissions { get { int count = 0; CleanList(); foreach (Mission item in activeMissions) { if (item.Type == MissionType.Farm) count++; } return count; } } public DateTime LastRead { get { return lastRead; } } public int NumActiveMissions { get { //CleanList(); //Used to remove events already terminated return activeMissions.Count; } } #endregion Properties #region Methods (5) // Public Methods (4)  public Mission GetFirstMissionToTarget(Planet planet, out DateTime _when) { Mission answer = null; _when = DateTime.MaxValue; foreach (Mission mis in activeMissions) { if (CriptOClock.ActualTime < mis.ArrivalTime && mis.ToPLanet == planet.Position) { if (_when > mis.ArrivalTime) { _when = mis.ArrivalTime; answer = mis; } } if (CriptOClock.ActualTime < mis.ReturnTime && mis.FromPLanet == planet.Position) { if (_when > mis.ReturnTime) { _when = mis.ReturnTime; answer = mis; } } } return answer; } public Resources GetResourcesComingToPlanet(Planet pla, DateTime withinTime) { Resources answer = new Resources(); DateTime when; foreach (Mission mis in ActiveMissions) { answer += mis.GetResourcesComingToPlanet(pla, withinTime, out when); } return answer; } public List<DateTime> GetTimesOfIncomingResources(Planet pla) { List<DateTime> answer = new List<DateTime>(); foreach (Mission mis in ActiveMissions) { DateTime timeArriving; if (mis.GetResourcesComingToPlanet(pla, DateTime.MaxValue, out timeArriving).EquivalentMetal > 0) { answer.Add(timeArriving); } } answer.Sort(); return answer; } public bool ThereIsAMissionArrivingToPlanet(Planet planet) { foreach (Mission mis in activeMissions) { if (mis.ToPLanet == planet.Position && mis.ArrivalTime > CriptOClock.ActualTime) return true; if (mis.ArrivalTime < CriptOClock.ActualTime && mis.FromPLanet == planet.Position) return true; } return false; } private void CleanList() { bool exitCondition = true; Mission toRemove = new Mission(MissionType.Null); while (exitCondition) { exitCondition = false; foreach (Mission item in ActiveMissions) { if (item.ReturnTime > CriptOClock.ActualTime) { exitCondition = true; toRemove = item; } } if (exitCondition) ActiveMissions.Remove(toRemove); } } #endregion Methods } //ENd of class Missions
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5