Beispiel #1
0
        public void Missions(JournalMissions m)
        {
            List <string> toresurrect = new List <string>();

            foreach (var mi in m.ActiveMissions)
            {
                string kn = MissionList.Key(mi.MissionID, mi.Name);

                if (missionlist.Missions.ContainsKey(kn))
                {
                    MissionState ms = missionlist.Missions[kn];

                    if (ms.State == MissionState.StateTypes.Died)   // if marked died...
                    {
                        System.Diagnostics.Debug.WriteLine("Missions in active list but marked died" + kn);
                        toresurrect.Add(kn);
                    }
                }
            }

            if (toresurrect.Count > 0)                      // if any..
            {
                missionlist = new MissionList(missionlist); // shallow copy
                missionlist.Resurrect(toresurrect);
            }
        }
Beispiel #2
0
        public void Missions(JournalMissions m)
        {
            List <string>    toresurrect = new List <string>();
            HashSet <string> active      = new HashSet <string>();
            List <string>    failed      = new List <string>();
            List <string>    completed   = new List <string>();
            List <string>    disappeared = new List <string>();

            foreach (var mi in m.ActiveMissions)
            {
                string kn = Key(mi.MissionID, mi.Name);
                active.Add(kn);
                //System.Diagnostics.Debug.WriteLine(m.EventTimeUTC.ToStringZulu() + " Mission " + kn + " is active");

                if (history.ContainsKey(kn))
                {
                    MissionState ms = history.GetLast(kn);

                    if (ms.State == MissionState.StateTypes.Died)  // if marked died...
                    {
                        System.Diagnostics.Debug.WriteLine("Missions in active list but marked died" + kn);
                        toresurrect.Add(kn);
                    }
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Active mission '" + kn + "' But no Mission accepted");
                }
            }

            foreach (var mi in m.FailedMissions)
            {
                string kn = Key(mi.MissionID, mi.Name);
                failed.Add(kn);
            }

            foreach (var mi in m.CompletedMissions)
            {
                string kn = Key(mi.MissionID, mi.Name);
                completed.Add(kn);
            }

            foreach (var kvp in history.GetLast())
            {
                if (!active.Contains(kvp.Key) && !failed.Contains(kvp.Key) && !completed.Contains(kvp.Key) && kvp.Value.State == MissionState.StateTypes.InProgress)
                {
                    System.Diagnostics.Debug.WriteLine(m.EventTimeUTC.ToStringZulu() + " Mission " + kvp.Value.Mission.EventTimeUTC.ToStringZulu() + " " + kvp.Key + " disappeared ****");
                    disappeared.Add(kvp.Key);
                }
            }

            if (toresurrect.Count > 0)       // if any..
            {
                Resurrect(toresurrect);
            }

            if (disappeared.Count > 0)
            {
                Disappeared(disappeared, m.EventTimeUTC);
            }

            if (failed.Count > 0)
            {
                ChangeStateIfInProgress(failed, MissionState.StateTypes.Failed, m.EventTimeUTC);
            }

            if (completed.Count > 0)
            {
                ChangeStateIfInProgress(failed, MissionState.StateTypes.Completed, m.EventTimeUTC);
            }
        }