Beispiel #1
0
        //串行化输入与输出===================================================================

        #region SerializeAble Members

        public void ReadObject(System.IO.Stream s)
        {
            short            actorFolderIndex = IOUtil.readShort(s);
            short            actorIndex       = IOUtil.readShort(s);
            AntetypesManager antetypesManager = (AntetypesManager)GetTopParent();

            if (actorFolderIndex >= 0 && actorIndex >= 0)
            {
                if (antetypesManager.actorsManager[actorFolderIndex] == null || antetypesManager.actorsManager[actorFolderIndex][actorIndex] == null)
                {
                    MessageBox.Show("角色原型中动画索引丢失,需重新指定。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    this.Actor = antetypesManager.actorsManager[actorFolderIndex][actorIndex];
                }
            }
            name = IOUtil.readString(s);
            int imgMappingLen = IOUtil.readInt(s);

            for (int i = 0; i < imgMappingLen; i++)
            {
                ImageMappingElement imgMapElement = new ImageMappingElement(antetypesManager.mapsManager.form_Main.form_MAnimation.form_MImgsList.mImgsManager);
                imgMapElement.ReadObject(s);
                imgMappingList.addElement(imgMapElement);
            }
        }
        private void init()
        {
            if (antetype == null)
            {
                return;
            }
            noEvent = true;
            //引用设定界面刷新
            textBox_Name.Text = antetype.name;
            comboBox_folder.Items.Clear();
            AntetypesManager antetypesManager = ((AntetypesManager)antetype.GetTopParent());

            for (int i = 0; i < antetypesManager.actorsManager.Count(); i++)
            {
                MActorFolder actorsFolder = antetypesManager.actorsManager[i];
                comboBox_folder.Items.Add(actorsFolder.name);
            }
            if (antetype.Actor != null)
            {
                comboBox_folder.SelectedIndex = ((MActorFolder)(antetype.Actor.GetParent())).GetID();
                refreshActorList();
                if (antetype.Actor != null)
                {
                    comboBox_Actor.SelectedIndex = antetype.Actor.GetID();
                }
            }
            //图片映射界面刷新
            refreshImgMapList();
            //刷新角色预览
            refreshActor();
            noEvent = false;
        }
Beispiel #3
0
        //合并
        public void combine(AntetypesManager src_Manager, ArrayList anteTypesID)
        {
            //开始合并
            for (int i = 0; i < anteTypesID.Count; i++)
            {
                int      id         = Convert.ToInt32(anteTypesID[i]);
                Antetype srcElement = src_Manager.getAntetypeBySumID(id);
                Antetype newElement = null;
                //检查是否已经含有同名和同文件夹的角色原型
                for (int j = 0; j < this.GetSonsCount(); j++)
                {
                    Antetype localAT = (Antetype)getAntetypeBySumID(j);
                    if (localAT.equalsNameAndFolder(srcElement))
                    {
                        newElement = localAT;
                    }
                }
                //没有找到的话,则将源角色原型加入当前列表,优先加入到相同文件夹,如果文件夹不存在则创建
                if (newElement == null)
                {
                    AntetypeFolder folderDest = this.getFolderByName(srcElement.getFolderName());
                    if (folderDest == null)
                    {
                        folderDest      = new AntetypeFolder(this);
                        folderDest.name = srcElement.getFolderName();
                        this.Add(folderDest);
                    }
                    newElement = srcElement.clone(folderDest);
                    folderDest.Add(newElement);
                }
                //转移源角色原型引用
                for (int k = 0; k < src_Manager.mapsManager.getElementCount(); k++)
                {
                    MapElement map = src_Manager.mapsManager.getElement(k);
                    for (int x = 0; x < map.getMapW(); x++)
                    {
                        for (int y = 0; y < map.getMapH(); y++)
                        {
                            MapTileElement mapTile = map.getTile(x, y);
                            for (int z = 0; z < mapTile.tile_objectList.Count; z++)
                            {
                                if (mapTile.tile_objectList[z] != null && mapTile.tile_objectList[z].antetype != null && mapTile.tile_objectList[z].antetype.Equals(srcElement))
                                {
                                    mapTile.tile_objectList[z].antetype = newElement;
                                }
                            }

                            if (mapTile.tile_object_mask != null && mapTile.tile_object_mask.antetype != null && mapTile.tile_object_mask.antetype.Equals(srcElement))
                            {
                                mapTile.tile_object_mask.antetype = newElement;
                            }
                            if (mapTile.tile_object_bg != null && mapTile.tile_object_bg.antetype != null && mapTile.tile_object_bg.antetype.Equals(srcElement))
                            {
                                mapTile.tile_object_bg.antetype = newElement;
                            }
                        }
                    }
                }
            }
        }
        //刷新可选角色列表
        private void refreshActorList()
        {
            AntetypesManager antetypesManager = (AntetypesManager)antetype.GetTopParent();
            MActorFolder     actorsFolder     = antetypesManager.actorsManager[comboBox_folder.SelectedIndex];

            comboBox_Actor.Items.Clear();
            if (actorsFolder != null)
            {
                for (int i = 0; i < actorsFolder.Count(); i++)
                {
                    MActor actor = actorsFolder[i];
                    comboBox_Actor.Items.Add(actor.name);
                }
            }
        }
        //为下拉列表框添加图片选项
        private void addItemsToComboBox(ComboBox comboBox)
        {
            if (antetype == null || comboBox == null)
            {
                return;
            }
            AntetypesManager antetypesManager = (AntetypesManager)antetype.GetTopParent();
            MImgsManager     imgsManager      = antetypesManager.mapsManager.form_Main.form_MAnimation.form_MImgsList.mImgsManager;

            for (int i = 0; i < imgsManager.Count(); i++)
            {
                MImgElement imgElement = imgsManager[i];
                comboBox.Items.Add(imgElement.getShowName());
            }
        }
        private void comboBox_Actor_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (noEvent || antetype == null)
            {
                return;
            }
            AntetypesManager antetypesManager = (AntetypesManager)antetype.GetTopParent();
            MActorFolder     actorsFolder     = antetypesManager.actorsManager[comboBox_folder.SelectedIndex];
            MActor           actor            = actorsFolder[comboBox_Actor.SelectedIndex];

            if (actor != null)
            {
                antetype.Actor    = actor;
                antetype.name     = antetype.Actor.name + "";
                textBox_Name.Text = antetype.name;
                this.refreshActor();
            }
        }
        private void button_AddMap_Click(object sender, EventArgs e)
        {
            if (noEvent || antetype == null)
            {
                return;
            }
            AntetypesManager antetypesManager = (AntetypesManager)antetype.GetTopParent();
            MImgsManager     imgsManager      = antetypesManager.mapsManager.form_Main.form_MAnimation.form_MImgsList.mImgsManager;

            if (imgsManager.Count() > 0)
            {
                ImageMappingElement element = new ImageMappingElement(imgsManager);
                element.ImgFrom = imgsManager[0];
                element.ImgTo   = imgsManager[0];
                //添加到数据
                antetype.imgMappingList.addElement(element);
                //添加到UI
                addImgMapElement(element);
                //刷新显示
                refreshActor();
            }
        }
 //下拉列表框事件
 private void ComboBox_SelectIndexChanged(object sender, EventArgs e)
 {
     if (noEvent || antetype == null)
     {
         return;
     }
     if (sender is ComboBox)
     {
         noEvent = true;
         ComboBox            comboBox         = (ComboBox)sender;
         int                 ctrID            = panel_ImgMap.Controls.IndexOf(comboBox);
         ImageMappingElement imgMapElement    = (ImageMappingElement)antetype.imgMappingList.getElement(ctrID / 3);
         AntetypesManager    antetypesManager = (AntetypesManager)antetype.GetTopParent();
         MImgsManager        imgsManager      = antetypesManager.mapsManager.form_Main.form_MAnimation.form_MImgsList.mImgsManager;
         if (ctrID % 3 == 1)
         {
             imgMapElement.ImgFrom = imgsManager[comboBox.SelectedIndex];
         }
         else if (ctrID % 3 == 2)
         {
             imgMapElement.ImgTo = imgsManager[comboBox.SelectedIndex];
         }
         CheckBox checkBox = (CheckBox)panel_ImgMap.Controls[(ctrID / 3) * 3];
         if (imgMapElement.ImgFrom.image != null && imgMapElement.ImgTo.image != null && (!imgMapElement.ImgFrom.image.Size.Equals(imgMapElement.ImgTo.image.Size)))
         {
             checkBox.Text = "!";
         }
         else
         {
             checkBox.Text = "";
         }
         checkBox.Refresh();
         //刷新显示
         refreshActor();
         noEvent = false;
     }
 }
Beispiel #9
0
        //返回角色原型的使用次数(搜索所有地图的所有单元)
        public int getUsedTime()
        {
            AntetypesManager antetypesManager = (AntetypesManager)this.GetTopParent();

            return(antetypesManager.mapsManager.getTileUsedTime(this));
        }
Beispiel #10
0
 public AntetypeFolder(AntetypesManager antetypesManager)
 {
     parent = antetypesManager;
     name   = "默认文件夹";
 }