private void DoQuoteTurret()
        {
            if (!Simulator.DemoMode)
                return;

            if (Turrets.Count <= 0)
                return;

            if (TimeLastQuote > 5000)
            {
                TimeLastQuote = 0;

                if (Main.Random.Next(0, 5) == 0)
                {

                    Turret tourelle = Turrets[Main.Random.Next(0, Turrets.Count)];

                    if (!tourelle.Visible || !tourelle.Watcher || TalkingTurrets.ContainsKey(tourelle))
                        return;

                    Text texte = new Text(@"Pixelite");
                    texte.SizeX = 1;
                    texte.Color = tourelle.Color;

                    if (Main.Random.Next(0, 10) == 1)
                    {
                        texte.Data = QuotesHistoire[Main.Random.Next(0, QuotesHistoire.Count)];
                    }

                    else
                    {
                        switch (tourelle.Type)
                        {
                            case TurretType.Basic: texte.Data = QuotesBase[Main.Random.Next(0, QuotesBase.Count)]; break;
                            case TurretType.Gravitational: texte.Data = QuotesGravitationnelle[Main.Random.Next(0, QuotesGravitationnelle.Count)]; break;
                            case TurretType.MultipleLasers: texte.Data = QuotesLaserMultiple[Main.Random.Next(0, QuotesLaserMultiple.Count)]; break;
                            case TurretType.Laser: texte.Data = QuotesLaserSimple[Main.Random.Next(0, QuotesLaserSimple.Count)]; break;
                            case TurretType.Missile: texte.Data = QuotesMissile[Main.Random.Next(0, QuotesMissile.Count)]; break;
                            case TurretType.SlowMotion: texte.Data = QuotesSlowMotion[Main.Random.Next(0, QuotesSlowMotion.Count)]; break;
                        }
                    }

                    TextBubble bulle = new TextBubble(Simulator.Scene, texte, tourelle.Position, 0, VisualPriorities.Default.TurretMessage);
                    bulle.ShowTime = texte.Data.Length * 100;

                    foreach (var kvp in TalkingTurrets)
                        if (kvp.Value.Dimension.Intersects(bulle.Dimension))
                            return;

                    AddTalkingTurret(tourelle, bulle);
                }
            }
        }
        private void AddTalkingTurret(ICollidable obj, TextBubble bulle)
        {
            TalkingTurrets.Add(obj, bulle);

            bulle.FadeIn(250);
            bulle.FadeTime = 250;
            //bulle.Show();
        }
        public void ShowMessage(ICollidable obj, string message, double time, double visualPriority)
        {
            if (obj == null || TalkingTurrets.ContainsKey(obj))
                return;

            Text texteInfos = new Text(message, @"Pixelite", Color.White, Vector3.Zero);
            texteInfos.SizeX = 2;

            visualPriority = (visualPriority == -1) ? VisualPriorities.Default.TurretMessage : visualPriority;

            TextBubble bulle = new TextBubble(Simulator.Scene, texteInfos, obj.Position, 0, visualPriority);

            bulle.Text.Data = message;
            bulle.ShowTime = time;

            foreach (var kvp in TalkingTurrets)
                if (kvp.Value.Dimension.Intersects(bulle.Dimension))
                    ToDelete.Add(kvp);

            DeleteTalkingTurrets();

            AddTalkingTurret(obj, bulle);
        }