/// <summary>
 /// Monster picture loading
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
 private void BLoadMonsterPict_Click(object sender, EventArgs e)
 {
     ODForFileSelect.Filter   = "Monster picture|*.bmp";
     ODForFileSelect.FileName = "*.bmp";
     if (ODForFileSelect.ShowDialog() == DialogResult.OK)
     {
         try
         {
             var tmp = _levelsConfig[_currentLevel - 1];
             tmp.SetMonsterPict = ODForFileSelect.FileName;
             _levelsConfig[_currentLevel - 1] = tmp;
             DrawMonsterPhases(MonsterDirection.Left);
         }
         catch
         {
             MessageBox.Show("Bitmap loading error");
             return;
         }
         MessageBox.Show("Bitmap loaded Successful");
         if (_realChange)
         {
             BNewGameConfig.Tag = 1;
         }
     }
 }
        /// <summary>
        /// Map file selection
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void BSelectMap_Click(object sender, EventArgs e)
        {
            ODForFileSelect.Filter = "File with map configuration|*.efm";
            if (ODForFileSelect.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            ShowMapByFileName(ODForFileSelect.FileName);
            //if (!ShowMapByFileName(ODForFileSelect.FileName)) return;

            /*
             * Used full name path
             * This is done for convenience.
             * When you start the game, map name will be parsed form this string
             * When you start the game editor, you don't need copy the map into folder with the game configurator
             */
        }
 /// <summary>
 /// User clicked to button Load game configuration
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
 private void BLoad_Click(object sender, EventArgs e)
 {
     ODForFileSelect.Filter   = "File with game configuration|*.tdgc";
     ODForFileSelect.FileName = "*.tdgc";
     if (ODForFileSelect.ShowDialog() == DialogResult.OK)
     {
         if (ODForFileSelect.FileName.LastIndexOf(".tdgc", StringComparison.Ordinal) == -1)
         {
             MessageBox.Show("Wrong file selected");
             return;
         }
         int levelsCount;
         try//Loading main configuration
         {
             BinaryReader loadMainConf = new BinaryReader(new FileStream(ODForFileSelect.FileName, FileMode.Open, FileAccess.Read));
             object[]     tmp;
             SaveNLoad.LoadMainGameConf(loadMainConf, out _numberOfMonstersAtLevel, out _goldForSuccessfulLevelFinish, out _goldForKillMonster, out tmp);
             string mapName = (string)tmp[0]; //0-Map name
             if (!ShowMapByFileName(mapName)) //If map file doesn't exists at path from configuration file, try to get it from folder with configuration
             {
                 ShowMapByFileName(ODForFileSelect.FileName.Substring(0, ODForFileSelect.FileName.LastIndexOf("\\", StringComparison.Ordinal) + 1) + mapName.Substring(mapName.LastIndexOf("\\", StringComparison.Ordinal)));
             }
             TBTowerFolder.Text    = (string)tmp[1];                                                 //1-Nam of the folder with towers configurations
             levelsCount           = (int)tmp[2];                                                    //2-Number of levels
             mTBGoldAtStart.Text   = Convert.ToInt32(tmp[4]).ToString(CultureInfo.InvariantCulture); //4-Money
             mTBNumberOfLives.Text = Convert.ToInt32(tmp[5]).ToString(CultureInfo.InvariantCulture); //5-Lives
             loadMainConf.Close();
         }
         catch (Exception exc)
         {
             MessageBox.Show(Resources.Load_error + exc.Message);
             return;
         }
         try//Loading configurations of levels
         {
             string     levelFileName   = ODForFileSelect.FileName.Substring(0, ODForFileSelect.FileName.LastIndexOf('.')) + ".tdlc";
             FileStream levelLoadStream = new FileStream(levelFileName, FileMode.Open, FileAccess.Read);
             IFormatter formatter       = new BinaryFormatter();
             _levelsConfig.Clear();
             for (int i = 0; i < levelsCount; i++)
             {
                 _levelsConfig.Add((MonsterParam)(formatter.Deserialize(levelLoadStream)));
             }
             levelLoadStream.Close();//All loaded, stream closing
             _currentLevel = 1;
             ShowLevelSettings(1);
             BRemoveLevel.Enabled = true;
             if (_levelsConfig.Count() > 1)
             {
                 BLoadMonsterPict.Enabled     = true;
                 GBNumberOfDirections.Enabled = true;
             }
         }
         catch (Exception exc)
         {
             MessageBox.Show(Resources.Load_error + exc.Message);
             return;
         }
     }
     BNewGameConfig.Tag    = 2;
     GBLevelConfig.Enabled = true;
     GBMapManage.Enabled   = true;
     if (_levelsConfig.Count != 0)
     {
         CBLevelInvisible.Enabled = true;
     }
     if (_levelsConfig.Count > 1)
     {
         BPrevLevel.Enabled = true;
         BNextLevel.Enabled = true;
     }
     BSave.Enabled = true;
 }