コード例 #1
0
 internal void SwitchFibers(GameFiber stopFiber, Fibers startFiber, CaseData data = null)
 {
     $"Switching fiber {stopFiber} to {startFiber}".AddLog();
     if (stopFiber.IsAlive)
     {
         stopFiber.Abort();
     }
     StartFiber(startFiber, data);
 }
コード例 #2
0
ファイル: Types.cs プロジェクト: pezipink/drey-debug
        public void Announce(GameState newState)
        {
            lock (SyncLock)
            {
                var res = MatchResults <Fiber> .MatchData(Fibers, newState.Fibers);

                var keys = res.ToRemove.ToDictionary(x => x.ID);
                for (int i = Fibers.Count - 1; i >= 0; i--)
                {
                    if (keys.ContainsKey(Fibers[i].ID))
                    {
                        Fibers.RemoveAt(i);
                    }
                }

                foreach (var f in res.ToUpdate)
                {
                    UpdateFiber(f.Old, f.New);
                }

                foreach (var f in res.ToAdd)
                {
                    Fibers.Add(f);
                }

                this.ExecDetails = newState.ExecDetails;


                var newLookup = newState.GameObjects.ToDictionary(x => x.ID);
                foreach (var kvp in newLookup)
                {
                    if (!GameObjectLookup.ContainsKey(kvp.Key))
                    {
                        GameObjectLookup.Add(kvp.Key, kvp.Value);
                    }
                    else
                    {
                        UpdateGo(GameObjectLookup[kvp.Key], kvp.Value);
                    }
                }
                List <int> toRemove = new List <int>();
                foreach (var kvp in GameObjectLookup)
                {
                    if (!newLookup.ContainsKey(kvp.Key))
                    {
                        toRemove.Add(kvp.Key);
                    }
                }
                foreach (var key in toRemove)
                {
                    GameObjectLookup.Remove(key);
                }
            }
        }
コード例 #3
0
        internal void StartFiber(Fibers fiber, CaseData data = null)
        {
            if (data != null)
            {
                CData = data;
            }
            $"Starting {fiber}".AddLog(true);
            switch (fiber)
            {
            case Fibers.EvidenceFiber:
                EvidenceFiber = new GameFiber(EvidenceVoid);
                EvidenceFiber.Start();
                break;

            case Fibers.LabFiber:
                LabFiber = new GameFiber(LabVoid);
                LabFiber.Start();
                break;

            case Fibers.MainFiber:
                MainFiber = new GameFiber(MainVoid);
                MainFiber.Start();
                break;

            case Fibers.MessageBoxFiber:
                MessageBoxFiber = new GameFiber(MessageVoid);
                MessageBoxFiber.Start();
                break;

            case Fibers.ReportFiber:
                ReportFiber = new GameFiber(ReportVoid);
                ReportFiber.Start();
                break;

            case Fibers.VictimFiber:
                VictimFiber = new GameFiber(VictimVoid);
                VictimFiber.Start();
                break;

            case Fibers.WarrantFiber:
                WarrantFiber = new GameFiber(WarrantVoid);
                WarrantFiber.Start();
                break;

            case Fibers.WarrantRequestFiber:
                WarrantRequestFiber = new GameFiber(WarrantReqVoid);
                WarrantRequestFiber.Start();
                break;

            case Fibers.WitnessFiber:
                WitnessFiber = new GameFiber(WitnessVoid);
                WitnessFiber.Start();
                break;

            case Fibers.SecurityCamFiber:
                SecurityCamFiber = new GameFiber(SecurityVoid);
                SecurityCamFiber.Start();
                break;
            }
            IsRunning = true;
        }