Example #1
0
        public async Task <JsonResult> AttackDragon(int dragonId = -1)
        {
            if (dragonId > 0)
            {
                var id   = GetHeroIdFromToken((Request.Cookies[_tokenName]));
                var hero = _context.Heroes.ToList().FirstOrDefault(h => h.Id == id);
                if (hero != null)
                {
                    var dragon = await _context.Dragons.FirstOrDefaultAsync(d => d.Id == dragonId);

                    if (dragon != null)//если дракон найден в базе
                    {
                        var allDamageToDragon = await _context.Hits.Where(h => h.DragonId == dragon.Id).SumAsync(h => h.Damage);

                        if (dragon.Health > allDamageToDragon)                                  //если дракон жив
                        {
                            var hit = new Hit(hero, dragon, dragon.Health - allDamageToDragon); //создаем удар
                            await _context.Hits.AddAsync(hit);

                            await _context.SaveChangesAsync();

                            //var heroDamage = await _context.Hits.Where(h => h.DragonId == dragon.Id
                            //&& h.HeroId == hero.Id).SumAsync(h => h.Damage);// полный урон героя дракону
                            var dragoInfo = new DragonInfoModel(dragon, allDamageToDragon + hit.Damage, -1);
                            var view      = dragoInfo.CurrentHealth == 0 ? await this.RenderViewAsync("PartialWin", dragoInfo.Name, true) : null;//если дракон убит передать представление для отображения победы

                            return(Json(new { status = "ok", dragon = dragoInfo, damage = hit.Damage, view }));
                            //hit.Damage - текущий урон дракону
                        }
                    }
                }
            }
            return(Json(new { status = "error", message = "Ошибка!" }));
        }
Example #2
0
        public async Task <IActionResult> Attack(int?dragonId)
        {
            if (dragonId != null && dragonId > 0)
            {
                var id   = GetHeroIdFromToken((Request.Cookies[_tokenName]));
                var hero = _context.Heroes.ToList().FirstOrDefault(h => h.Id == id);
                if (hero != null)
                {
                    var dragon = await _context.Dragons.FirstOrDefaultAsync(d => d.Id == dragonId);

                    if (dragon != null)//если дракон найден в базе
                    {
                        var allDamageToDragon = await _context.Hits.Where(h => h.DragonId == dragon.Id).SumAsync(h => h.Damage);

                        if (dragon.Health > allDamageToDragon)//если дракон жив
                        {
                            var dragoInfo = new DragonInfoModel(dragon, allDamageToDragon, -1);
                            return(View(dragoInfo));
                        }
                    }
                }
            }
            return(RedirectToAction("Index"));
        }