Esempio n. 1
0
        /// <summary>
        /// Gestion de la création et de la destruction de l'AI
        /// </summary>
        /// <param name="Flag"></param>
        private void Spawn_AI(bool Flag)
        {
            if (Flag && (m_ObjectID == 0) && (m_Spawned == 0))
            {
                m_TrySimpleAI = false;
#if DEBUG
                Log.LogMessage("Peer [" + m_CallSign + "] Requete locale de résolution Title = " + m_Data.Title + " , Model = " + m_Data.Model, Color.DarkBlue, 1);
#endif
                m_AIResolution = m_AIMapping.SolveTitle(m_Data.Title, m_Data.Model, m_Data.Type);
                if (m_AIResolution.Titre != "Mooney Bravo")
                {
#if DEBUG
                    Log.LogMessage("Peer [" + m_CallSign + "] Requete locale a trouvé une résolution", Color.DarkBlue, 1);
#endif
                }
                m_Spawned = 2;
                CreateAI();
            }
            if ((!Flag) && (m_Spawned > 0))
            {
                m_Spawned = 0;
                m_TimerCreateAI.Stop();
                if (m_ObjectID != 0)
                {
                    if (m_SC.Remove_AI(ref m_ObjectID))
                    {
#if DEBUG
                        Log.LogMessage("Peer [" + m_CallSign + "] Suppression de l'avion", Color.DarkBlue, 1);
#endif
                    }
                    else
                    {
                        Log.LogMessage("Peer [" + m_CallSign + "] Erreur lors de la suppression de l'avion", Color.DarkViolet);
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Résolution d'un AI avec la base de donnée
        /// </summary>
        /// <param name="Title"></param>
        /// <param name="Model"></param>
        /// <param name="Type"></param>
        /// <returns></returns>
        public AIResol SolveTitle(string Title, string Model, string Type)
        {
            //Avion de substitution
            AIResol Resol = new AIResol();

            Resol.Titre     = "Mooney Bravo";
            Resol.CG_Height = 3.7;
            Resol.Pitch     = 2.9;
            if (!m_Initialized)
            {
                return(Resol);
            }
            // On vérifie les règles locales
            string Rule = GetRule(Title);

            if (Rule != "")
            {
#if DEBUG
                Log.LogMessage("AIMapping : Règle locale trouvée dans la DB : " + Title + " Remplacé par " + Rule, Color.DarkOliveGreen, 2);
#endif
                Title = Rule;
            }
            // On commence par vérifier si le Title existe dans la DB
            SQLiteCommand cmd = m_DB.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT Titre,CGHeight,Pitch FROM " + m_Table + " WHERE Titre = @titre COLLATE NOCASE";
            cmd.Parameters.Add(new SQLiteParameter("@titre", Title));
            SQLiteDataReader r = cmd.ExecuteReader();
            if (r.StepCount > 0)
            {
                while (r.Read())
                {
                    Resol.Titre     = r.GetString(0);
                    Resol.CG_Height = r.GetDouble(1);
                    Resol.Pitch     = r.GetDouble(2);
#if DEBUG
                    Log.LogMessage("AIMapping : Occurance directe trouvée dans la DB : " + Resol.Titre, Color.DarkOliveGreen, 2);
#endif
                }
            }
            else
            {
                cmd             = m_DB.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "SELECT Titre,CGHeight,Pitch FROM " + m_Table + " WHERE Model  like @model";
                cmd.Parameters.Add(new SQLiteParameter("@model", Model));
                r = cmd.ExecuteReader();
                if (r.StepCount > 0)
                {
                    while (r.Read())
                    {
                        Resol.Titre     = r.GetString(0);
                        Resol.CG_Height = r.GetDouble(1);
                        Resol.Pitch     = r.GetDouble(2);
#if DEBUG
                        Log.LogMessage("AIMapping : Occurance ATC Model trouvée dans la DB : " + Resol.Titre, Color.DarkOliveGreen, 2);
#endif
                    }
                }
            }
            return(Resol);
        }