/// <summary> /// loads an item based on the item file /// </summary> /// <param name="path">the filepath of the item</param> /// <returns>The item</returns> public Item.Item LoadItem(string path) { Item.Item newItem = null; using(Stream inStream = File.OpenRead(path)) { using(BinaryReader input = new BinaryReader(inStream)) { string type = input.ReadString(); if(type.ToUpper() == "WEAPON") { Item.Weapon newWeapon; int rof = input.ReadInt32(); int damage = input.ReadInt32(); double reload = input.ReadDouble(); int clip = input.ReadInt32(); double spread = input.ReadDouble(); int loadedAmmo = input.ReadInt32(); int ammo = input.ReadInt32(); string name = input.ReadString(); string sprite = input.ReadString(); newWeapon = new Item.Weapon(rof, damage, reload, name, clip, spread); Console.WriteLine("ROF:\t" + rof); Console.WriteLine("Damage:\t" + damage); Console.WriteLine("Reload:\t" + reload); Console.WriteLine("Clip:\t" + clip); Console.WriteLine("Spread:\t" + spread); Console.WriteLine("Loaded Ammo:\t" + loadedAmmo); Console.WriteLine("Ammo:\t" + ammo); Console.WriteLine("Name:\t" + name); Console.WriteLine("Sprite:\t" + sprite); newWeapon.Ammo = ammo; newWeapon.LoadedAmmo = loadedAmmo; if (Sprites.spritesDictionary.ContainsKey(sprite)) newWeapon.previewSprite = Sprites.spritesDictionary[sprite]; else newWeapon.previewSprite = Sprites.spritesDictionary["NULL"]; return newWeapon; } else { newItem = new Item.Item(); string name = input.ReadString(); string sprite = input.ReadString(); } } } return newItem; }
/// <summary> /// writes to a file the details behind an item /// </summary> /// <param name="item">the item to save</param> /// <returns>if the save was successful</returns> public bool SaveItem(Item.Item item) { // Create a stream, then a writer Stream outStream = null; BinaryWriter output = null; bool successful; try { //figure out the save path int startname = saveLoc.LastIndexOf('/') + 1; int endname = saveLoc.LastIndexOf('.'); string name = saveLoc.Substring(startname, endname - startname); string directory = saveLoc.Substring(0, startname) + "/" + name; if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } //initialize the binary writer outStream = File.OpenWrite(directory + item.name + ".item"); output = new BinaryWriter(outStream); //write data if (item is Item.Weapon) { output.Write("Weapon"); Item.Weapon weapon = (Item.Weapon)item; output.Write(weapon.rateOfFire); output.Write(weapon.Damage); output.Write(weapon.ReloadTime); output.Write(weapon.maxClip); output.Write(weapon.spread); output.Write(weapon.LoadedAmmo); output.Write(weapon.Ammo); } else { output.Write("Item"); } output.Write(item.name); //get the key of the texture Dictionary <String, Sprite> sDict = Sprites.spritesDictionary; string key = "NULL"; foreach (string spriteKey in sDict.Keys.ToList()) { if (sDict[spriteKey] == item.previewSprite) { key = spriteKey; } } output.Write(key); successful = true; } catch (Exception e) { Console.WriteLine("Error saving item: " + e.Message); successful = false; } finally { if (output != null) { output.Close(); } } return(successful); }