Beispiel #1
0
 public bool equalsAnteType(Antetype antetype)
 {
     if (!equalsNameAndFolder(antetype))
     {
         return(false);
     }
     if (imgMappingList.getElementCount() != antetype.imgMappingList.getElementCount())
     {
         return(false);
     }
     for (int i = 0; i < imgMappingList.getElementCount(); i++)
     {
         ImageMappingElement imgMapElementLocal   = (ImageMappingElement)imgMappingList.getElement(i);
         ImageMappingElement imgMapElementCompare = (ImageMappingElement)antetype.imgMappingList.getElement(i);
         if (!imgMapElementLocal.ImgFrom.Equals(imgMapElementCompare.ImgFrom))
         {
             return(false);
         }
         if (!imgMapElementLocal.ImgTo.Equals(imgMapElementCompare.ImgTo))
         {
             return(false);
         }
     }
     return(true);
 }
        private void listBox_Replace_DrawItem(object sender, DrawItemEventArgs e)
        {
            ListBox listBox = (ListBox)sender;

            // Draw the background of the ListBox control for each item.
            e.DrawBackground();
            // Define the default color of the brush as black.
            Brush myBrush = Brushes.Black;

            //设定焦点
            Object folderObj = mapElement.mapsManager.antetypesManager[comboBox_folder.SelectedIndex];

            if (folderObj != null)
            {
                AntetypeFolder folder = (AntetypeFolder)folderObj;
                int            index  = listBox_Actors.SelectedIndex;
                if (index >= 0 && index < anteTypes_current.Count)
                {
                    if (anteTypes_replace[index] != null)
                    {
                        Antetype replaceAT = (Antetype)anteTypes_replace[index];
                        int      itemID    = replaceAT.GetID();
                        if (itemID >= 0 && e.Index == itemID)
                        {
                            myBrush = Brushes.Red;
                        }
                    }
                }
            }

            // Draw the current item text based on the current Font and the custom brush settings.
            e.Graphics.DrawString(listBox.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
            // If the ListBox has focus, draw a focus rectangle around the selected item.
            e.DrawFocusRectangle();
        }
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 listBox_Actors_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (noEvent)
            {
                return;
            }
            int index = listBox_Actors.SelectedIndex;

            if (index < 0 || index >= anteTypes_current.Count || anteTypes_current[index] == null)
            {
                return;
            }
            if (anteTypes_replace[index] == null)
            {
                return;
            }
            Antetype       replaceAT = (Antetype)anteTypes_replace[index];
            AntetypeFolder folder    = replaceAT.getFolder();

            if (folder == null)
            {
                return;
            }
            noEvent = true;
            comboBox_folder.SelectedIndex = folder.GetID();
            refreshActorList();
            noEvent = false;
        }
        public static bool configAntetype(Antetype antetypeT)
        {
            antetype = antetypeT;
            Form_ConfigAnteType dialog = new Form_ConfigAnteType();

            dialog.ShowDialog();
            antetype = null;
            return(true);
        }
Beispiel #6
0
        public Antetype clone(AntetypeFolder folder)
        {
            Antetype newInstance = new Antetype(folder, Actor);

            newInstance.name = name;
            for (int i = 0; i < imgMappingList.getElementCount(); i++)
            {
                ImageMappingElement imgMapElement    = (ImageMappingElement)imgMappingList.getElement(i);
                ImageMappingElement newImgMapElement = imgMapElement.clone();
                newInstance.imgMappingList.addElement(newImgMapElement);
            }
            return(newInstance);
        }
 private void button_OK_Click(object sender, EventArgs e)
 {
     if (mapElement != null)
     {
         for (int i = 0; i < anteTypes_current.Count; i++)
         {
             if (anteTypes_current[i] != null && anteTypes_replace[i] != null)
             {
                 Antetype local   = (Antetype)anteTypes_current[i];
                 Antetype replace = (Antetype)anteTypes_replace[i];
                 mapElement.replaceAnteType(local, replace);
             }
         }
         needUpdate = true;
     }
     Close();
 }
Beispiel #8
0
 public Antetype getActorByName(String folderName, String actorName)
 {
     for (int i = 0; i < this.Count(); i++)
     {
         AntetypeFolder folder = this[i];
         if (folder.name.Equals(folderName))
         {
             for (int j = 0; j < folder.Count(); j++)
             {
                 Antetype actor = folder[j];
                 if (actor.name.Equals(actorName))
                 {
                     return(actor);
                 }
             }
         }
     }
     return(null);
 }
        private void refreshActorList()
        {
            if (mapElement == null)
            {
                return;
            }
            if (comboBox_folder.Items.Count <= 0)
            {
                return;
            }
            Object folderObj = mapElement.mapsManager.antetypesManager[comboBox_folder.SelectedIndex];

            if (folderObj == null)
            {
                return;
            }
            AntetypeFolder folder = (AntetypeFolder)folderObj;

            listBox_Replace.Items.Clear();
            for (int i = 0; i < folder.Count(); i++)
            {
                Antetype anteType = folder[i];
                listBox_Replace.Items.Add(anteType.name);
            }
            //设定焦点
            int index = listBox_Actors.SelectedIndex;

            if (index < 0 || index >= anteTypes_current.Count)
            {
                return;
            }
            if (anteTypes_replace[index] != null)
            {
                Antetype replaceAT = (Antetype)anteTypes_replace[index];
                int      itemID    = replaceAT.GetID();
                if (itemID >= 0)
                {
                    noEvent = true;
                    listBox_Replace.SelectedIndex = itemID;
                    noEvent = false;
                }
            }
        }
Beispiel #10
0
        public bool equalsNameAndFolder(Antetype antetype)
        {
            if (antetype == null)
            {
                return(false);
            }
            String nameLocal = name;
            String nameSrc   = antetype.name;

            if (nameLocal == null || nameSrc == null || !nameLocal.Equals(nameSrc))
            {
                return(false);
            }
            nameLocal = getFolderName();
            nameSrc   = antetype.getFolderName();
            if (!nameLocal.Equals(nameSrc))
            {
                return(false);
            }
            return(true);
        }
        private void init()
        {
            needUpdate = false;
            if (mapElement == null)
            {
                return;
            }
            noEvent = true;
            //初始化角色原型文件夹
            comboBox_folder.Items.Clear();
            for (int i = 0; i < mapElement.mapsManager.antetypesManager.Count(); i++)
            {
                AntetypeFolder folder = mapElement.mapsManager.antetypesManager[i];
                comboBox_folder.Items.Add(folder.name);
            }
            //初始化当前角色原型列表
            anteTypes_current = mapElement.getAnteTypesUsed();
            MiscUtil.copyArrayList(anteTypes_current, anteTypes_replace);
            listBox_Actors.Items.Clear();
            Graphics g        = listBox_Actors.CreateGraphics();
            float    spaceLen = GraphicsUtil.getStringSizeF(g, "__________", listBox_Actors.Font).Width / 10.0F;

            for (int i = 0; i < anteTypes_current.Count; i++)
            {
                Antetype anteType = (Antetype)anteTypes_current[i];
                String   name     = anteType.name + "";
                String   usedTime = "[" + mapElement.getTileUsedTime(anteType) + "]";
                float    space    = 40 - GraphicsUtil.getStringSizeF(g, usedTime, listBox_Actors.Font).Width;
                for (int j = 0; j < space / spaceLen; j++)
                {
                    usedTime += " ";
                }
                listBox_Actors.Items.Add(usedTime + name);
            }
            g.Dispose();
            noEvent = false;
        }
Beispiel #12
0
 public void clearSpilth(bool clearNotUsed)
 {
     //清除未使用的单元
     if (clearNotUsed)
     {
         for (int i = 0; i < this.Count(); i++)
         {
             AntetypeFolder folder = this[i];
             for (int j = 0; j < folder.Count(); j++)
             {
                 if (folder[i].getUsedTime() <= 0)
                 {
                     folder.RemoveAt(j);
                     j--;
                 }
             }
         }
     }
     //清除重复的单元
     for (int i = 0; i < GetSonsCount(); i++)
     {
         Antetype srcElement = (Antetype)getAntetypeBySumID(i);
         for (int j = i + 1; j < GetSonsCount(); j++)
         {
             Antetype compElement = (Antetype)getAntetypeBySumID(j);
             if (compElement.equalsAnteType(srcElement))//重复的单元
             {
                 //转移引用
                 for (int k = 0; k < mapsManager.getElementCount(); k++)
                 {
                     MapElement map = 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(compElement))
                                 {
                                     mapTile.tile_objectList[z].antetype = srcElement;
                                 }
                             }
                             if (mapTile.tile_object_mask != null && mapTile.tile_object_mask.antetype != null && mapTile.tile_object_mask.antetype.Equals(compElement))
                             {
                                 mapTile.tile_object_mask.antetype = srcElement;
                             }
                             if (mapTile.tile_object_bg != null && mapTile.tile_object_bg.antetype != null && mapTile.tile_object_bg.antetype.Equals(compElement))
                             {
                                 mapTile.tile_object_bg.antetype = srcElement;
                             }
                         }
                     }
                 }
                 //删除重复的单元
                 compElement.getFolder().Remove(compElement);
                 j--;
             }
         }
     }
 }