コード例 #1
0
        void UpdateMessageIndex(ExtendedSituation extendedSituation)
        {
            if (DateTime.Now - lastDraw < minimumInterval && messageIndices[extendedSituation] > -1)
            {
                // Historian.Print("No index update");
            }
            else
            {
                messageIndices[extendedSituation]++;

                if (isRandom)
                {
                    messageIndices[extendedSituation] = rnd.Next(0, situationTokenizedTexts[extendedSituation].Count - 1);
                }
                else
                {
                    if (resetOnLaunch && lastVessel != FlightGlobals.ActiveVessel)
                    {
                        // Historian.Print("Vessel changed - reseting messages");
                        messageIndices[extendedSituation] = 0;
                    }
                }

                if (messageIndices[extendedSituation] >= situationTokenizedTexts[extendedSituation].Count)
                {
                    messageIndices[extendedSituation] = 0; // wrap around after end of list
                }
            }
        }
コード例 #2
0
        protected override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);

            situationTokenizedTexts = new Dictionary <ExtendedSituation, List <List <Token> > >();

            isRandom      = node.GetBoolean("Random", false);
            resetOnLaunch = node.GetBoolean("ResetOnLaunch", false);

            evaOnly = node.GetEnum("EvaOnly", TriState.UseDefault);

            foreach (ConfigNode section in node.GetNodes())
            {
                string name = section.name;
                try
                {
                    ExtendedSituation situation = (ExtendedSituation)(object)ConfigNode.ParseEnum(typeof(ExtendedSituation), name);

                    if (!situationTokenizedTexts.ContainsKey(situation))
                    {
                        situationTokenizedTexts.Add(situation, new List <List <Token> >());
                        messageIndices.Add(situation, -1);
                    }
                    situationTokenizedTexts[situation].AddTokenizedRange(section.GetValues("Text"));
                }
                catch
                {
                    Historian.Print($"Unrecognised situation block {name} in TEXT_LIST");
                }
            }
        }
コード例 #3
0
        protected override void OnDraw(Rect bounds)
        {
            TriState isEva = (FlightGlobals.ActiveVessel?.isEVA).ToTriState();

            if (evaOnly != TriState.UseDefault && evaOnly != isEva)
            {
                return;
            }

            ExtendedSituation situation = SituationExtensions.Extend(FlightGlobals.ActiveVessel?.situation, isEva, false);
            ExtendedSituation fallback  = SituationExtensions.Extend(FlightGlobals.ActiveVessel?.situation, isEva, true);

            TokenizedText = (situations.ContainsKey(situation)) ? situations[situation] : situations[fallback];
            base.OnDraw(bounds);
        }
コード例 #4
0
        protected override void OnDraw(Rect bounds)
        {
            TriState isEva = (FlightGlobals.ActiveVessel?.isEVA).ToTriState();

            if (evaOnly != TriState.UseDefault && evaOnly != isEva)
            {
                return;
            }

            ExtendedSituation situation = SituationExtensions.Extend(FlightGlobals.ActiveVessel?.situation, isEva, false);
            ExtendedSituation fallback  = SituationExtensions.Extend(FlightGlobals.ActiveVessel?.situation, isEva, true);

            ExtendedSituation    extendedSituation = situationTokenizedTexts.ContainsKey(situation) ? situation : fallback;
            List <List <Token> > texts             = situationTokenizedTexts[extendedSituation];

            // debug
            // Historian.Print($"Random text: {isRandom}, Reset: {resetOnLaunch}, Index: {messageIndices[extendedSituation]}, isEva: {isEva}, situation: {extendedSituation}, #Messages: {texts.Count}");

            if (texts != null && texts.Count < 1)
            {
                return;
            }

            UpdateMessageIndex(extendedSituation);

            try
            {
                TokenizedText = texts[messageIndices[extendedSituation]];
            }
            catch (Exception e)
            {
                TokenizedText = TokenizedError;
                Historian.Print($"TextList error: {e.Message}, situation: {extendedSituation}, index: {messageIndices[extendedSituation]}");
            }
            base.OnDraw(bounds);

            lastVessel = FlightGlobals.ActiveVessel;
            lastDraw   = DateTime.Now;
        }