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(); }
//合并 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); }
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(); }
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; } } }
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; }
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--; } } } }