public void AddCharacter(AI character)
 {
     ai_Characters.Add(character);
 }
        /// <summary>
        /// Loads the character by name passed through as an argument
        /// </summary>
        /// <returns>
        /// The character.
        /// </returns>
        /// <param name='CharacterName'>
        /// Character name.
        /// </param>
        public AI LoadCharacter(String CharacterName)
        {
            int NumberOfLines = 0;
            string line;
            AI ReturnedCharacter;
            System.IO.StreamReader file;
            // Read the file and display it line by line.
            try {
                file = new System.IO.StreamReader (CharacterDirectory + CharacterName + ".save");
            } catch (Exception e) {
                file = new System.IO.StreamReader (CharacterDirectory + CharacterName + ".txt");
            }
            // temporary data that will be used to add objects to the level
            string tempFileName;
            Vector2 tempPosition;
            int tempDisposision;
            bool tempIsGuard = false;
            bool tempIsHooker = false;

            // reads in data for object position etc
            tempFileName = file.ReadLine ();
            NumberOfLines++;
            ReturnedCharacter = new AI (tempFileName);

            // reads in the characters name
            ReturnedCharacter.Name =  ((FileStream) file.BaseStream).Name;
            ReturnedCharacter.Name = Path.GetFileName(ReturnedCharacter.Name);
            ReturnedCharacter.Name = ReturnedCharacter.Name.Remove(ReturnedCharacter.Name.Length-4,4);

            // now load in the stats
            line = file.ReadLine ();

            tempDisposision = Convert.ToInt32 (line);
            ReturnedCharacter.PlayerDisposition = tempDisposision;
            NumberOfLines++;

            //their hook
            line = file.ReadLine ();
            NumberOfLines++;

            //if guard
            line = file.ReadLine ();
            tempIsGuard = Convert.ToBoolean (line);
            ReturnedCharacter.IsGuard = tempIsGuard;
            NumberOfLines++;

            //if hooker
            line = file.ReadLine ();
            tempIsHooker = Convert.ToBoolean (line);
            if (tempIsHooker) {
                ReturnedCharacter = new AI (tempFileName, 11, 2, 128f, true);
                ReturnedCharacter.PlayerDisposition = tempDisposision;
                ReturnedCharacter.IsGuard = tempIsGuard;
            } else {
                ReturnedCharacter = new AI (tempFileName, 65, 2, 128f, false);
                ReturnedCharacter.PlayerDisposition = tempDisposision;
                ReturnedCharacter.IsGuard = tempIsGuard;
            }

            ReturnedCharacter.IsHooker = tempIsHooker;
            NumberOfLines++;

            //hit points,speed,damage,dodge,block
            line = file.ReadLine();
            ReturnedCharacter.HitPoints = Convert.ToInt32(line);
            NumberOfLines++;

            line = file.ReadLine();
            ReturnedCharacter.HitSpeed =Convert.ToInt32(line);
            NumberOfLines++;

            line = file.ReadLine();
            ReturnedCharacter.HitDamage = Convert.ToInt32(line);
            NumberOfLines++;

            line = file.ReadLine();
            ReturnedCharacter.DodgeSpeed = Convert.ToInt32(line);
            NumberOfLines++;

            line = file.ReadLine();
            ReturnedCharacter.BlockSpeed = Convert.ToInt32(line);
            NumberOfLines++;

            // now all the dialogue
            line = file.ReadLine();
            ReturnedCharacter.NoDialogueLine = line;
            NumberOfLines++;

            line = file.ReadLine();
            int numDialogue = Convert.ToInt32(line );
            NumberOfLines++;

            for (int d = 0; d < numDialogue; d++)
            {
                // the temp dialogue thing
                AI.Dialogue tempDialogue = new AI.Dialogue();
                //ret.Dialogues.Add

                // this gets all the data out of the file
                line=  file.ReadLine();
                string[] DialogueData = line.Split(';');
                NumberOfLines++;

                // ending modifier
                if ( StoryProgress.enum_EndingProgress.NONE.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.NONE;

                }

                if ( StoryProgress.enum_EndingProgress.FOODTRUCK.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.FOODTRUCK;
                    tempDialogue.EndProgressPreReq.Tunnel = Convert.ToInt32(DialogueData[1]);
                }
                if ( StoryProgress.enum_EndingProgress.INSANE.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.INSANE;
                    tempDialogue.EndProgressPreReq.Insane = Convert.ToInt32(DialogueData[1]);
                }
                if ( StoryProgress.enum_EndingProgress.CRIPPLE.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.CRIPPLE;
                    tempDialogue.EndProgressPreReq.Cripple = Convert.ToInt32(DialogueData[1]);
                }
                if ( StoryProgress.enum_EndingProgress.SLAYER.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.SLAYER;
                    tempDialogue.EndProgressPreReq.Slayer = Convert.ToInt32(DialogueData[1]);
                }
                if ( StoryProgress.enum_EndingProgress.SUICIDE.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.SUICIDE;
                    tempDialogue.EndProgressPreReq.Suicide = Convert.ToInt32(DialogueData[1]);
                }
                if ( StoryProgress.enum_EndingProgress.TUNNEL.ToString() == DialogueData[0])
                {
                    tempDialogue.EndProgressPreReq.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.TUNNEL;
                    tempDialogue.EndProgressPreReq.Tunnel = Convert.ToInt32(DialogueData[1]);
                }

                // pre req point
                tempDialogue.i_PlayerPreReq = Convert.ToInt32(DialogueData[2]);

                // the actual line
                tempDialogue.Statement = DialogueData[3];

                // now the responses
                int numResponses = Convert.ToInt32(DialogueData[4]);
                line=  file.ReadLine();
                NumberOfLines++;

                string[] ResponseData = line.Split(',');
                for (int r = 0; r < numResponses; r++)
                {
                    // get the individual response's data
                    string[] responses  = ResponseData[r].Split(':');

                    // the string of response
                    tempDialogue.TheResponses.Add(responses[0]);

                    //story prog data
                    if ( StoryProgress.enum_EndingProgress.NONE.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis = StoryProgress.enum_EndingProgress.NONE;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.FOODTRUCK.ToString() ==responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.FOODTRUCK;
                        tempStorydiag.Foodtruck = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.INSANE.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.INSANE;
                        tempStorydiag.Insane = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.CRIPPLE.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.CRIPPLE;
                        tempStorydiag.Cripple = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.SLAYER.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.SLAYER;
                        tempStorydiag.Slayer = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.SUICIDE.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.SUICIDE;
                        tempStorydiag.Suicide = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }
                    if ( StoryProgress.enum_EndingProgress.TUNNEL.ToString() == responses[1])
                    {
                        StoryProgress tempStorydiag = new StoryProgress();
                        tempStorydiag.enum_EndingProgressThis =  StoryProgress.enum_EndingProgress.TUNNEL;
                        tempStorydiag.Tunnel = 1;
                        tempDialogue.ResponseEndingProg.Add(tempStorydiag);
                    }

                    //player stat
                    tempDialogue.ResponseEndingPlayerStat.Add(Convert.ToInt32(responses[2]));

                }
                ReturnedCharacter.Dialogues.Add(tempDialogue);
            }

            //string[] Positions = line.Split(','); // get postition from file
            // close your file!
            file.Close();
            Console.WriteLine("Total number of lines : " + NumberOfLines);
            return ReturnedCharacter;
        }