private void addImage(int step = -1) { try { string name = imageNameText.Text; string imgPath = imageFileText.Text; if (!File.Exists(imgPath)) { MessageBox.Show("File does not exist"); return; } if (name == "") { MessageBox.Show("Invalid name"); return; } Bitmap image = new Bitmap(imgPath); objTemplate.AddImage(name, image, step); if (step < 0) { UpdateImageListView(); ClearImageUI(); } } catch (Exception ie) { MessageBox.Show(ie.ToString()); } }
public void Load() { try { Clear(); Byte[] mainBuffer = File.ReadAllBytes(this.path); int counter = 0; //Number of objects int numObjs = traverseToInt(mainBuffer, ref counter); for (int i = 0; i < numObjs; i++) { //Object name string objName = traverseToString(mainBuffer, ref counter, 20); ObjectTemplate curTemplate = new ObjectTemplate(objName); //Visible curTemplate.visibility = traverseToBool(mainBuffer, ref counter); //Soft curTemplate.isSoft = traverseToBool(mainBuffer, ref counter); //Number of properties int numProps = traverseToInt(mainBuffer, ref counter); for (int j = 0; j < numProps; j++) { //Property name string propertyName = traverseToString(mainBuffer, ref counter, 20); //Property type string propertyType = traverseToString(mainBuffer, ref counter, 20); //Property size int size = traverseToInt(mainBuffer, ref counter); //Property value byte[] value = traverseToByte(mainBuffer, ref counter, size); curTemplate.AddProperty(propertyName, propertyType, value); } //Number of images int numImages = traverseToInt(mainBuffer, ref counter); for (int k = 0; k < numImages; k++) { int numSteps = traverseToInt(mainBuffer, ref counter); for (int p = 0; p < numSteps; p++) { //Image name string imageName = traverseToString(mainBuffer, ref counter, 20); //Image size int imageSize = traverseToInt(mainBuffer, ref counter); //Image value Bitmap image = traverseToBitmap(mainBuffer, ref counter, imageSize); //# of Collision Vectors int nVect = traverseToInt(mainBuffer, ref counter); List <Line> vectors = new List <Line>(); for (int m = 0; m < nVect; m++) { int x1 = traverseToInt(mainBuffer, ref counter); int y1 = traverseToInt(mainBuffer, ref counter); int x2 = traverseToInt(mainBuffer, ref counter); int y2 = traverseToInt(mainBuffer, ref counter); Line line = new Line(x1, y1, x2, y2); vectors.Add(line); } curTemplate.AddImage(imageName, image, vectors); } } objectTemplates.Add(objName, curTemplate); } //Instance count int numInst = traverseToInt(mainBuffer, ref counter); for (int i = 0; i < numInst; i++) { //Instance name string instName = traverseToString(mainBuffer, ref counter, 20); ObjectInstance instance = new ObjectInstance(objectTemplates[instName]); //X instance.x = traverseToFloat(mainBuffer, ref counter); //Y instance.y = traverseToFloat(mainBuffer, ref counter); foreach (Property curProperty in instance.instance.properties.Values) { //Size int propSize = traverseToInt(mainBuffer, ref counter); //Value curProperty.value = traverseToByte(mainBuffer, ref counter, propSize); instance.instance.AddProperty(curProperty.name, curProperty.type, curProperty.value); } objectInstances.Add(instance); } //Wall Instance count int numWallInst = traverseToInt(mainBuffer, ref counter); for (int i = 0; i < numWallInst; i++) { //Instance name string instName = traverseToString(mainBuffer, ref counter, 20); ObjectWall instance = new ObjectWall(objectTemplates[instName]); //X instance.x = traverseToFloat(mainBuffer, ref counter); //Y instance.y = traverseToFloat(mainBuffer, ref counter); //W instance.w = traverseToFloat(mainBuffer, ref counter); //H instance.w = traverseToFloat(mainBuffer, ref counter); foreach (Property curProperty in instance.instance.properties.Values) { //Size int propSize = traverseToInt(mainBuffer, ref counter); //Value curProperty.value = traverseToByte(mainBuffer, ref counter, propSize); instance.instance.AddProperty(curProperty.name, curProperty.type, curProperty.value); } objectInstances.Add(instance); } } catch (Exception ex) { Console.WriteLine("Warrning: Not all error file loaded"); } }