Пример #1
0
        //internal void SaveItem(IItem itemToUse)
        //{
        //    dataContext.SaveItemCount(itemToUse.Data);
        //}

        internal ServerCharacter LoadCharacter(int characterID)
        {
            CharacterModel characterData = dataContext.GetCharacter(characterID);

            if (characterData != null)
            {
                ServerCharacter serverCharacter = new ServerCharacter(characterData);
                ItemModel       inventory       = dataContext.GetItem(characterData.InventoryId);
                if (inventory != null)
                {
                    var inventoryBagItem = (ContainerItem)this.CreateItem(inventory);
                    this.AddItem(inventoryBagItem);
                    serverCharacter.Inventory = inventoryBagItem; //characterData.Inventory;
                }
                else
                {
                    return(null);
                }

                if (characterData.RightHandId.HasValue)
                {
                    ItemModel rightHand = dataContext.GetItem(characterData.RightHandId.Value);
                    if (rightHand != null)
                    {
                        var item = (WeaponItem)this.CreateItem(rightHand);
                        this.AddItem(item);
                        if (serverCharacter.IsItemInInventory(item))
                        {
                            serverCharacter.RightHand = item;
                        }
                        else
                        {
                            characterData.RightHandId = null;
                        }
                    }
                    else
                    {
                        characterData.RightHandId = null;
                    }
                }
                if (characterData.LeftHandId.HasValue)
                {
                    ItemModel leftHand = dataContext.GetItem(characterData.LeftHandId.Value);
                    if (leftHand != null)
                    {
                        var item = (WeaponItem)this.CreateItem(leftHand);
                        this.AddItem(item);
                        if (serverCharacter.IsItemInInventory(item))
                        {
                            serverCharacter.LeftHand = item;
                        }
                        else
                        {
                            characterData.LeftHandId = null;
                        }
                    }
                    else
                    {
                        characterData.LeftHandId = null;
                    }
                }
                if (characterData.ArmorId.HasValue)
                {
                    ItemModel armor = dataContext.GetItem(characterData.ArmorId.Value);
                    if (armor != null)
                    {
                        var item = (ArmorItem)this.CreateItem(armor);
                        this.AddItem(item);
                        if (serverCharacter.IsItemInInventory(item))
                        {
                            serverCharacter.Armor = item;
                        }
                        else
                        {
                            characterData.ArmorId = null;
                        }
                    }
                    else
                    {
                        characterData.ArmorId = null;
                    }
                }

                return(serverCharacter);
            }
            else
            {
                return(null);
            }
        }