partial void DeleteInventoryItem(InventoryItem instance);
 partial void UpdateInventoryItem(InventoryItem instance);
 partial void InsertInventoryItem(InventoryItem instance);
		private void detach_InventoryItems(InventoryItem entity)
		{
			this.SendPropertyChanging();
			entity.InventoryItemStatus = null;
		}
		private void detach_InventoryItems(InventoryItem entity)
		{
			this.SendPropertyChanging();
			entity.PlayerCharacter = null;
		}
예제 #6
0
        //public override void ReceiveAttack(int potentialdamage, string attackerName)
        //{
        //    //base(potentialdamage, attackerName);
        //}
        private void Save()
        {
            if (this.connected)
            {
                //saving player
                var playerQuery =
                    (from playercharacter in db.PlayerCharacters
                     where playercharacter.PlayerName.ToString().ToLower() == this.name.ToLower()
                     select playercharacter).First();

                playerQuery.X = this.x;
                playerQuery.Y = this.y;
                playerQuery.Z = this.z;

                playerQuery.TotalExperience = this.totalExperience;
                playerQuery.ExpThisLevel = this.currentLevelExp;

                playerQuery.Level = this.level;

                //now to save items in db

                //first let's get a list of all items currently saved for this player in the db
                //we're going to save the new items to the db, then delete all of these items, instead of trying to figure out
                //what the exact changes are.
                var dbItems = from item in db.InventoryItems
                              where item.PlayerName.ToLower() == this.name.ToLower()
                              select item;

                //let's start saving items to the db
                List<Item> items = this.inventory.ListInventory();
                foreach (Item item in items)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = item.Name;
                    invItem.ItemDescription = item.Description;
                    invItem.ItemWeight = item.Weight;
                    invItem.ItemRefNames = String.Join(",", item.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 10;
                    invItem.ItemType = item.GetType().ToString();

                    switch (item.GetType().ToString())
                    {
                        case "MUDAdventure.Items.Dagger":
                            invItem.ItemDamage = item.ToDagger().Damage;
                            invItem.ItemSpeed = item.ToDagger().Speed;
                            break;
                        case "MUDAdventure.Items.Sword":
                            invItem.ItemDamage = item.ToSword().Damage;
                            invItem.ItemSpeed = item.ToSword().Speed;
                            break;
                        case "MUDAdventure.Items.Axe":
                            invItem.ItemDamage = item.ToAxe().Damage;
                            invItem.ItemSpeed = item.ToAxe().Speed;
                            break;
                        case "MUDAdventure.Items.Light":
                            invItem.ItemCurrentFuel = item.ToLight().CurrentFuel;
                            invItem.ItemTotalFuel = item.ToLight().TotalFuel;
                            break;
                        case "MUDAdventure.Items.Headwear":
                            invItem.ItemDamage = item.ToHeadwear().ArmorValue;
                            break;
                        case "MUDAdventure.Items.Shirt":
                            invItem.ItemDamage = item.ToShirt().ArmorValue;
                            break;
                        case "MUDAdventure.Items.Gloves":
                            invItem.ItemDamage = item.ToGloves().ArmorValue;
                            break;
                        case "MUDAdventure.Items.Pants":
                            invItem.ItemDamage = item.ToPants().ArmorValue;
                            break;
                        case "MUDAdventure.Items.Boots":
                            invItem.ItemDamage = item.ToBoots().ArmorValue;
                            break;
                    }

                    playerQuery.InventoryItems.Add(invItem);
                }

                //TODO: save items that are wielded/worn/held etc.
                if (this.inventory.Wielded != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Wielded.Name;
                    invItem.ItemDescription = this.inventory.Wielded.Description;
                    invItem.ItemWeight = this.inventory.Wielded.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Wielded.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 1;
                    invItem.ItemType = this.inventory.Wielded.GetType().ToString();

                    switch (this.inventory.Wielded.GetType().ToString())
                    {
                        case "MUDAdventure.Items.Dagger":
                            invItem.ItemDamage = this.inventory.Wielded.ToDagger().Damage;
                            invItem.ItemSpeed = this.inventory.Wielded.ToDagger().Speed;
                            break;
                        case "MUDAdventure.Items.Sword":
                            invItem.ItemDamage = this.inventory.Wielded.ToSword().Damage;
                            invItem.ItemSpeed = this.inventory.Wielded.ToSword().Speed;
                            break;
                        case "MUDAdventure.Items.Axe":
                            invItem.ItemDamage = this.inventory.Wielded.ToAxe().Damage;
                            invItem.ItemSpeed = this.inventory.Wielded.ToAxe().Speed;
                            break;
                        //case: MUDAdventure.Sword, spear, etc, etc
                    }

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Light != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Light.Name;
                    invItem.ItemDescription = this.inventory.Light.Description;
                    invItem.ItemWeight = this.inventory.Light.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Light.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 2;
                    invItem.ItemType = this.inventory.Light.GetType().ToString();

                    invItem.ItemCurrentFuel = this.inventory.Light.ToLight().CurrentFuel;
                    invItem.ItemTotalFuel = this.inventory.Light.ToLight().TotalFuel;

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Head != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Head.Name;
                    invItem.ItemDescription = this.inventory.Head.Description;
                    invItem.ItemWeight = this.inventory.Head.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Head.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 3;
                    invItem.ItemType = this.inventory.Head.GetType().ToString();

                    invItem.ItemArmorValue = this.inventory.Head.ArmorValue;

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Shirt != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Shirt.Name;
                    invItem.ItemDescription = this.inventory.Shirt.Description;
                    invItem.ItemWeight = this.inventory.Shirt.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Shirt.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 4;
                    invItem.ItemType = this.inventory.Shirt.GetType().ToString();

                    invItem.ItemArmorValue = this.inventory.Shirt.ArmorValue;

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Gloves != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Gloves.Name;
                    invItem.ItemDescription = this.inventory.Gloves.Description;
                    invItem.ItemWeight = this.inventory.Gloves.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Gloves.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 6;
                    invItem.ItemType = this.inventory.Gloves.GetType().ToString();

                    invItem.ItemArmorValue = this.inventory.Gloves.ArmorValue;

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Pants != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Pants.Name;
                    invItem.ItemDescription = this.inventory.Pants.Description;
                    invItem.ItemWeight = this.inventory.Pants.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Pants.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 7;
                    invItem.ItemType = this.inventory.Pants.GetType().ToString();

                    invItem.ItemArmorValue = this.inventory.Pants.ArmorValue;

                    playerQuery.InventoryItems.Add(invItem);
                }

                if (this.inventory.Boots != null)
                {
                    InventoryItem invItem = new InventoryItem();
                    invItem.PlayerName = this.name;
                    invItem.ItemName = this.inventory.Boots.Name;
                    invItem.ItemDescription = this.inventory.Boots.Description;
                    invItem.ItemWeight = this.inventory.Boots.Weight;
                    invItem.ItemRefNames = String.Join(",", this.inventory.Boots.RefNames.ToArray());
                    invItem.ItemInventoryStatusCode = 9;
                    invItem.ItemType = this.inventory.Boots.GetType().ToString();

                    invItem.ItemArmorValue = this.inventory.Boots.ArmorValue;

                    playerQuery.InventoryItems.Add(invItem);
                }

                //now that the new items are saved, let's delete all the old items.
                foreach (var item in dbItems)
                {
                    db.InventoryItems.DeleteOnSubmit(item);
                }

                //playerQuery.level = this.level;
                //playerQuery.ExpUntilNext = this.expUntilNext;
                this.writeToClient("Saving " + this.name + "...\r\n");

                try
                {
                    db.SubmitChanges();
                    //this.writeToClient(this.name + " saved.");
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.Message);
                    Debug.Print(ex.StackTrace);
                }
            }
        }