Esempio n. 1
0
        public async Task <ActionResult> BuyItem(Guid?id, Guid?charId, Guid?shopId)
        {
            if (id == null || charId == null || shopId == null)
            {
                return(RedirectToAction("Index"));
            }
            var item = await EquipmentFacade.GetItemAsync(id.GetValueOrDefault());

            var character = await CharacterFacade.GetAsync(charId.GetValueOrDefault());

            if (await EquipmentFacade.AddToInventoryAsync(character.Inventory, item))
            {
                var updatedUser = new CharacterUpdateDto()
                {
                    Name        = character.Name,
                    CurrentHp   = character.CurrentHp,
                    Experience  = character.Experience,
                    Gold        = character.Gold - (int)(item.Price * 1.5),
                    Id          = character.Id,
                    SkillPoints = character.SkillPoints,
                    Sickness    = character.Sickness
                };
                await CharacterFacade.EditAsync(updatedUser);
            }

            return(RedirectToAction("Detail", new { id = shopId }));
        }
Esempio n. 2
0
        public async Task <ActionResult> EquipItem(Guid itemId, Guid charId)
        {
            var item = await EquipmentFacade.GetItemAsync(itemId);

            var model = await CharacterFacade.GetAsync(charId);

            var charUpdate = new CharacterUpdateDto()
            {
                Id          = model.Id,
                Name        = model.Name,
                Experience  = model.Experience,
                Gold        = model.Gold,
                CurrentHp   = model.CurrentHp + (item.Attributes.Hp * 10),
                Sickness    = model.Sickness,
                SkillPoints = model.SkillPoints
            };

            ItemDto equipped = null;

            foreach (var itemDto in model.Equipment.ListItems())
            {
                if (itemDto != null && itemDto.ArmorClass == item.ArmorClass)
                {
                    equipped = itemDto;
                }
            }

            await EquipmentFacade.DeleteFromInventoryAsync(model.Inventory, item);

            if (equipped != null)
            {
                charUpdate.CurrentHp -= equipped.Attributes.Hp * 10;
                await EquipmentFacade.AddToInventoryAsync(model.Inventory, equipped);
            }
            await EquipmentFacade.EquipItemAsync(model.Equipment, item);

            await CharacterFacade.EditAsync(charUpdate);

            return(RedirectToAction("Detail"));
        }