protected override void Establish() { _inputCapturingArenaParser = new InputCapturingArenaParser(); _propertiesChanged = new List <String>(); _arenaViewModel = new ArenaViewModel(_inputCapturingArenaParser); _arenaViewModel.PropertyChanged += ArenaViewModelPropertyChanged; }
protected override void Establish() { _arenaParser = new ExceptionThrowingArenaParser(); _propertiesChanged = new List <String>(); _arenaViewModel = new ArenaViewModel(_arenaParser); _arenaViewModel.PropertyChanged += ArenaViewModelPropertyChanged; }
public ActionResult battle(int id, int userID) { string player; GameSession session = db.GameSessions.Include("user1").Include("user2").Include("P1.Passives").Include("P2.Passives").Where(x => x.ID == id).FirstOrDefault(); User user = db.Users.Find(userID); List <Character> li1 = db.Characters.Include("Passives").Where(x => x.Name == session.P1.Name).ToList(); List <Character> li2 = db.Characters.Include("Passives").Where(x => x.Name == session.P2.Name).ToList(); if (user.ID == session.user1.ID) { player = "P1"; } else { player = "P2"; } ArenaViewModel vm = new ArenaViewModel() { P1 = li1, P2 = li2, MySession = session, MyUser = player, }; return(View(vm)); }
public void ViewArena() { if (ArenaSession == null) { return; } ArenaViewModel.Load(ArenaSession); }
public void ViewArena() { if (ArenaSession == null) { return; } IsOpen = false; // events.PublishOnUIThread(new SelectedArenaSessionChanged(this, ArenaSession.Id)); ArenaViewModel.Load(ArenaSession); }
public MainWindow() { var arenaParser = ContainerFactory.Create().Resolve <IArenaParser>(); _arenaViewModel = new ArenaViewModel(arenaParser) { Input = "5 5\r\n1 2 N\r\nLMLMLMLMM\r\n3 3 E\r\nMMRMMRMRRM" }; DataContext = _arenaViewModel; InitializeComponent(); }
public async Task <IActionResult> Arena(string id) { var user = await _userManager.FindByIdAsync(id); var model = new ArenaViewModel(); if (user != null) { model.UserName = user.UserName; } return(View(model)); }
private void OnPropertyChanged(object sender, PropertyChangedEventArgs args) { var not = IsNotifying; if (!PauseNotify.IsPaused(this)) { switch (args.PropertyName) { case "SelectedGame": if (SelectedGame != null) { EditGameViewModel.Load(SelectedGame); } break; case "SelectedArenaSession": if (SelectedArenaSession != null) { ArenaViewModel.Load(SelectedArenaSession); EditGameViewModel.IsOpen = false; } else { ArenaViewModel.IsOpen = false; } break; case "FilterServer": case "FilterHero": case "FilterFromDate": case "FilterToDate": RefreshData(); break; } } }
public void Initialize() { _inputMessenger = new MessengerFake(); _arenaViewModel = new ArenaViewModel(_inputMessenger); }
public void ShowLatest() { ArenaViewModel.LoadLatest(); }
public void ShowLatest() { GameViewModel.IsOpen = false; ArenaViewModel.LoadLatest(); }
public async Task <IActionResult> Arena(ArenaViewModel model) { if (ModelState.IsValid) { var user = await _userManager.GetUserAsync(User); if (user.Status != UserStatus.Stays) { ModelState.AddModelError(string.Empty, "Aktualnie nie możesz walczyć na arenie."); } else if (model.UserName == user.UserName) { ModelState.AddModelError(string.Empty, "Nie możesz walczyć ze sobą."); } else if (user.ActionPoints < 1) { ModelState.AddModelError(string.Empty, "Nie masz siły na walkę na arenie."); } else { var enemy = await _userManager.FindByNameAsync(model.UserName); if (enemy == null) { ModelState.AddModelError(string.Empty, "Podany gracz nie istnieje."); } else if (user.PositionX != enemy.PositionX || user.PositionY != enemy.PositionY) { ModelState.AddModelError(string.Empty, "Tego gracza nie ma w tym miejscu."); } else if (enemy.Status != UserStatus.Stays) { ModelState.AddModelError(string.Empty, "Podany gracz jest teraz czymś zajęty."); } else if (user.HealthPoints < user.MaxHealthPoints * 0.25) { ModelState.AddModelError(string.Empty, "Jesteś rany. Ulecz się zanim podejmiesz walkę."); } else if (enemy.HealthPoints < enemy.MaxHealthPoints * 0.25) { ModelState.AddModelError(string.Empty, "Przeciwnik jest ranny. Nie możesz go zaatakować."); } else { var arenaResultViewModel = new ArenaResultViewModel() { User = user, Enemy = enemy }; int userHealth = user.HealthPoints; int enemyHealth = enemy.HealthPoints; int i = 0; int userScore = 0; int enemyScore = 0; Random rand = new Random(); while (user.HealthPoints > 0 && enemy.HealthPoints > 0) { i++; var roundInfo = string.Empty; if (enemy.GetDodge() > rand.NextDouble() * 100) { roundInfo += "<div class=\"alert alert-success\" role=\"alert\">Spudłowałeś.</div>"; } else { ItemWeapon weapon = null; foreach (var used in _inventoryRepository.GetInventory(user.Id).Where(x => x.Used == true).ToList()) { var item = _itemRepository.GetItem(used.ItemId); if (item.Type == ItemType.Weapon) { weapon = (ItemWeapon)item.ItemType; break; } } var userAtt = rand.Next(user.GetDamage() - 1, user.GetDamage() + 2); if (weapon != null) { userAtt = rand.Next(user.GetDamage() + weapon.MinDamage, user.GetDamage() + weapon.MaxDamage); } if (user.GetCritical() >= rand.NextDouble() * 100) { roundInfo += "<div class=\"alert alert-success\" role=\"alert\">Uderzenie krytyczne.</div>"; userAtt *= 2; } ItemArmor armor = null; foreach (var used in _inventoryRepository.GetInventory(enemy.Id).Where(x => x.Used == true).ToList()) { var item = _itemRepository.GetItem(used.ItemId); if (item.Type == ItemType.Armor) { armor = (ItemArmor)item.ItemType; break; } } if (armor != null) { userAtt -= (int)(userAtt * (rand.Next(0, armor.Resist + 1) / 100f)); } enemy.HealthPoints -= userAtt; userScore += userAtt; roundInfo += $"<div class=\"alert alert-success\" role=\"alert\">Zadałeś {userAtt} obrażeń.</div>"; if (enemy.HealthPoints < 1) { goto RoundEnd; } } if (user.GetDodge() > rand.NextDouble() * 100) { roundInfo += "<div class=\"alert alert-danger\" role=\"alert\">Wróg spudłował.</div>"; } else { ItemWeapon weapon = null; foreach (var used in _inventoryRepository.GetInventory(enemy.Id).Where(x => x.Used == true).ToList()) { var item = _itemRepository.GetItem(used.ItemId); if (item.Type == ItemType.Weapon) { weapon = (ItemWeapon)item.ItemType; break; } } var enemyAtt = rand.Next(enemy.GetDamage() - 1, enemy.GetDamage() + 2); if (weapon != null) { enemyAtt = rand.Next(enemy.GetDamage() + weapon.MinDamage, enemy.GetDamage() + weapon.MaxDamage); } if (enemy.GetCritical() >= rand.NextDouble() * 100) { roundInfo += "<div class=\"alert alert-danger\" role=\"alert\">Uderzenie krytyczne.</div>"; enemyAtt *= 2; } ItemArmor armor = null; foreach (var used in _inventoryRepository.GetInventory(user.Id).Where(x => x.Used == true).ToList()) { var item = _itemRepository.GetItem(used.ItemId); if (item.Type == ItemType.Armor) { armor = (ItemArmor)item.ItemType; break; } } if (armor != null) { enemyAtt -= (int)(enemyAtt * (rand.Next(0, armor.Resist + 1) / 100f)); } user.HealthPoints -= enemyAtt; enemyScore += enemyAtt; roundInfo += $"<div class=\"alert alert-danger\" role=\"alert\">Wróg zadał Ci {enemyAtt} obrażeń.</div>"; } goto RoundEnd; RoundEnd: arenaResultViewModel.FightInfo += $"<div class=\"card mb-3\"><div class=\"card-header\">Runda: {i}</div><div class=\"card-body\">{roundInfo}</div></div>"; } var userReport = new ArenaReportViewModel() { Type = ReportType.Defend, User = enemy, Rounds = i, UserScore = userScore, EnemyScore = enemyScore, }; var enemyReport = new ArenaReportViewModel() { Type = ReportType.Attack, User = user, Rounds = i, UserScore = userScore, EnemyScore = enemyScore, }; var winExperience = userScore > enemyScore ? user.Level * 5 : enemy.Level * 5; var loseExperience = 5; if (userScore > enemyScore) { arenaResultViewModel.ExperiencePoints = winExperience; userReport.ExperiencePoints = winExperience; user.ExperiencePoints += winExperience; user.AllExperience += winExperience; enemyReport.ExperiencePoints = loseExperience; enemy.ExperiencePoints += loseExperience; enemy.AllExperience += loseExperience; enemy.HealthPoints = (int)Math.Floor(enemy.MaxHealthPoints * 0.1); } else { arenaResultViewModel.ExperiencePoints = loseExperience; userReport.ExperiencePoints = loseExperience; user.ExperiencePoints += loseExperience; user.AllExperience += loseExperience; user.HealthPoints = (int)Math.Floor(user.MaxHealthPoints * 0.1); enemyReport.ExperiencePoints = winExperience; enemy.ExperiencePoints += winExperience; enemy.AllExperience += winExperience; } userReport.HealthPoints = enemyHealth; enemyReport.HealthPoints = userHealth; var userReportHtml = await this.RenderViewAsync("ArenaReport", userReport); var enemyReportHtml = await this.RenderViewAsync("ArenaReport", enemyReport); var userMail = new Mail() { FromId = "system", ToId = user.Id, Type = MailType.Received, Title = (userScore > enemyScore ? "[WYGRANA]" : "[PRZEGRANA]") + " Raport z walki", Content = userReportHtml, Status = MailStatus.New }; var enemyMail = new Mail() { FromId = "system", ToId = enemy.Id, Type = MailType.Received, Title = (userScore < enemyScore ? "[WYGRANA]" : "[PRZEGRANA]") + " Raport z walki", Content = enemyReportHtml, Status = MailStatus.New }; var userInventory = _inventoryRepository.GetInventory(user.Id).Where(x => x.Used == true); var enemyInventory = _inventoryRepository.GetInventory(enemy.Id).Where(x => x.Used == true); foreach (var inventory in userInventory.ToList()) { inventory.Stamina--; if (inventory.Stamina < 1) { inventory.Used = false; } _inventoryRepository.Update(inventory); } foreach (var inventory in enemyInventory.ToList()) { inventory.Stamina--; if (inventory.Stamina < 1) { inventory.Used = false; } _inventoryRepository.Update(inventory); } _mailRepository.Add(userMail); _mailRepository.Add(enemyMail); await _userManager.UpdateAsync(user); await _userManager.UpdateAsync(enemy); arenaResultViewModel.UserScore = userScore; arenaResultViewModel.EnemyScore = enemyScore; return(View("ArenaResult", arenaResultViewModel)); } } } return(View()); }