Exemplo n.º 1
0
        public void UpdateUnitPortrait()
        {
            SelectedUnitName = "<empty>";

            if (Gl.main.units_Tree.SelectedItem is TreeViewItem)
            {
                TreeViewItem tvi     = Gl.main.units_Tree.SelectedItem as TreeViewItem;
                string       tvi_tag = tvi.Tag.ToString();
                int          i_sep   = tvi_tag.IndexOf("_");
                if (tvi_tag.Contains("folder") == false &&
                    tvi_tag.Contains("empty") == false)
                {
                    selected_unit_folder = Convert.ToInt32(tvi_tag.Substring(0, i_sep));
                    selected_unit_index  = Convert.ToInt32(tvi_tag.Substring(i_sep + 1, tvi_tag.Length - i_sep - 1));

                    SelectedUnitCfg = H2_configs.cfgs[selected_unit_folder][selected_unit_index];

                    int s_id = SelectedUnitCfg.default_sprite;
                    if (SelectedUnitCfg.HasFlag(UnitFlags.Building)) // проверка на здание.
                    {
                        s_id += SelectedUnitCfg.moving_frames;
                    }

                    if (selected_unit_folder == 4)
                    {
                        selected_unit_folder = 5;
                    }

                    // Спрайт юнита
                    BitmapImage unit_Portrait = new BitmapImage();

                    // Загружаем картинку
                    unit_Portrait.BeginInit();
                    unit_Portrait.UriSource = new Uri(@"resources\army__0" + selected_unit_folder + @".spr\" + s_id + ".bmp", UriKind.Relative);
                    unit_Portrait.EndInit();
                    unit_Portrait.Freeze();

                    // Меняем
                    Gl.main.image_UnitPortrait.Source = unit_Portrait; // это КОСТЫЛЬ? - каждый раз менять картинку. Затирается ли предыдущая.


                    SelectedUnitName = tvi.Header.ToString();
                }
                else
                {
                    ClearUnitPortrait();
                }
            }
            else
            {
                ClearUnitPortrait();
            }
        }