Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        /// <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);
        }