public UserPokemon SavePokemon(SavePokemonDto dto) { if (dto.PokemonId == 0 || dto.UserId == 0) { return(null); } var user = _unitOfWork.UserRepository.Entities.FirstOrDefault(x => x.Id == dto.UserId); if (user is null) { return(null); } var userPokemon = new UserPokemon() { PokemonId = dto.PokemonId, User = user, }; try { _unitOfWork.UserPokemonRepository.Add(userPokemon); _unitOfWork.Commit(); } catch (Exception) { return(null); } return(userPokemon); }
public async Task <IActionResult> Edit(int id, [Bind("Id,UserId,PokemonId,TimeStamp")] UserPokemon userPokemon) { if (id != userPokemon.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(userPokemon); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserPokemonExists(userPokemon.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["PokemonId"] = new SelectList(_context.Pokemon, "Id", "Id", userPokemon.PokemonId); ViewData["UserId"] = new SelectList(_context.User, "Id", "Id", userPokemon.UserId); return(View(userPokemon)); }
public IActionResult Free(UserPokemon userPokemon) { var relation = cnx.UsuarioPokemons.Where(o => o.PokemonId == userPokemon.PokemonId && o.UserId == userPokemon.UserId).FirstOrDefault(); cnx.UsuarioPokemons.Remove(relation); cnx.SaveChanges(); return(RedirectToAction("Captured")); }
/// <summary> /// Fonction de transition qui fait le tour de l'adversaire et renvoie à l'état IN_BATTLE pour compléter le tour. /// </summary> void GérerTransitionTOUR_OPPONENT() { GamePad.SetVibration(PlayerIndex.One, 0, 1); NomUserPokemon.Visible = true; VieUserPokemon.Visible = true; EffectuerTourOpponent(); VieUserPokemon.RemplacerMessage(UserPokemon.VieToString()); TourOpponentComplété = true; CombatState = CombatState.IN_BATTLE; }
public IActionResult SavePokemon([FromBody] SavePokemonDto dto) { UserPokemon userPokemon = _gameService.SavePokemon(dto); if (userPokemon == null) { return(BadRequest()); } return(Ok(userPokemon)); }
public IActionResult Capture(UserPokemon userPokemon) { var relation = cnx.UsuarioPokemons.Where(o => o.UserId == userPokemon.UserId && o.PokemonId == userPokemon.PokemonId).FirstOrDefault(); if (relation == null) { userPokemon.Date = DateTime.Now; cnx.UsuarioPokemons.Add(userPokemon); cnx.SaveChanges(); } return(RedirectToAction("Index")); }
public async Task <IActionResult> Create([Bind("Id,UserId,PokemonId,TimeStamp,DateCreated")] UserPokemon userPokemon) { if (ModelState.IsValid) { _context.Add(userPokemon); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["PokemonId"] = new SelectList(_context.Pokemon, "Id", "Id", userPokemon.PokemonId); ViewData["UserId"] = new SelectList(_context.User, "Id", "Id", userPokemon.UserId); ViewData["DateCreated"] = new SelectList(_context.Pokemon, "Id", "Id", userPokemon.TimeStamp); return(View(userPokemon)); }
/// <summary> /// Fonction qui change le pokémon du joueur. /// </summary> /// <param name="pokémonSélectionné">Le numéro en inventaire du pokémon choisi</param> void ChangerUserPokémon(int pokémonSélectionné) { UserPokemon = UserTrainer[pokémonSélectionné]; PositionInfoUserPokemon = new Vector2(Game.Window.ClientBounds.Width - (UserPokemon.ToString().Count() + 3) * Cadre.TAILLE_TILE, Game.Window.ClientBounds.Height - Cadre.TAILLE_TILE * 9); NomUserPokemon.Visible = false; VieUserPokemon.Visible = false; NomUserPokemon.RemplacerPosition(PositionInfoUserPokemon); NomUserPokemon.RemplacerMessage(UserPokemon.ToString()); VieUserPokemon.RemplacerPosition(new Vector2(PositionInfoUserPokemon.X, PositionInfoUserPokemon.Y + Cadre.TAILLE_TILE)); VieUserPokemon.RemplacerMessage(UserPokemon.VieToString()); string messageTour = UserTrainer.Nom + " send out " + UserPokemon.Nom + "!"; AfficheurTexte message = new AfficheurTexte(Game, PositionBox, Jeu.LargeurBoxMessage, Jeu.HauteurBoxMessage, messageTour, IntervalMAJ); Game.Components.Add(message); }
public JsonResult BuyPokemon(int pokemonid) { Models.Pokemon pokemon = context.POKEMON.Find(pokemonid); var user = context.USER.Where(u => u.Email == User.Identity.Name).FirstOrDefault(); try { var userPokemons = context.USER_POKEMON.Where(up => up.Id == user.Id && up.POKEMON_ID == pokemon.POKEMON_ID).ToList(); if (userPokemons.Count() != 0) { return(Json("Bu Pokemona Zaten Sahipsiniz !")); } else { if (user.USER_BALANCE >= pokemon.POKEMON_PRICE) { UserPokemon userPokemon = new UserPokemon { Id = user.Id, POKEMON_ID = pokemon.POKEMON_ID, CREATION_DATE = System.DateTime.Now }; context.USER_POKEMON.Add(userPokemon); user.USER_BALANCE = user.USER_BALANCE - pokemon.POKEMON_PRICE; context.SaveChanges(); context.SaveChanges(); return(Json("success")); } else { return(Json("Bu Pokemonu Almak İçin Yeterli Bakiyeniz Yok !")); } } } catch (Exception e) { return(Json(e.Message)); } }
////GET: UserPokemons/Create public async Task <IActionResult> CreateAsync(int id) { var currentUser = await GetCurrentUserAsync(); UserPokemon up = new UserPokemon() { UserId = currentUser.Id, PokemonId = id }; if (ModelState.IsValid) { up.TimeStamp = DateTime.Now; _context.Add(up); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["UserId"] = new SelectList(_context.User, "Id", "Id", up.UserId); return(View()); }
/// <summary> /// Fonction qui ajoute les textes de vie et de nom des pokémons en combat. /// </summary> private void AjouterLesTextesFixes() { PositionInfoUserPokemon = new Vector2(Game.Window.ClientBounds.Width - (UserPokemon.ToString().Count() + 3) * Cadre.TAILLE_TILE, Game.Window.ClientBounds.Height - Cadre.TAILLE_TILE * 9); PositionInfoOpponentPokemon = new Vector2(Cadre.TAILLE_TILE, Game.Window.ClientBounds.Height / 10); NomOpponentPokemon = new TexteFixe(Game, PositionInfoOpponentPokemon, OpponentPokemon.ToString()); Game.Components.Add(NomOpponentPokemon); NomUserPokemon = new TexteFixe(Game, PositionInfoUserPokemon, UserPokemon.ToString()); Game.Components.Add(NomUserPokemon); VieOpponentPokemon = new TexteFixe(Game, new Vector2(PositionInfoOpponentPokemon.X, PositionInfoOpponentPokemon.Y + Cadre.TAILLE_TILE), OpponentPokemon.VieToString()); Game.Components.Add(VieOpponentPokemon); VieUserPokemon = new TexteFixe(Game, new Vector2(PositionInfoUserPokemon.X, PositionInfoUserPokemon.Y + Cadre.TAILLE_TILE), UserPokemon.VieToString()); Game.Components.Add(VieUserPokemon); NomOpponentPokemon.Visible = false; NomUserPokemon.Visible = false; VieOpponentPokemon.Visible = false; VieUserPokemon.Visible = false; }
//There is an EV calculation formula, just leave that out public RBYPokemon(UserPokemon poke, int lvl) { int specialstat = poke.Spatk > poke.Spdef ? poke.Spatk : poke.Spdef; _level = lvl; _name = poke.Name; _HealthPoints = poke.HP; _outBattleAtk = poke.Atk; _inBattleAtk = _outBattleAtk; _outBattleDef = poke.Def; _inBattleDef = _outBattleDef; _outBattleSpecialAtk = specialstat; _inBattleSpecialAtk = _outBattleSpecialAtk; _outBattleSpecialDef = specialstat; _inBattleSpecialDef = _outBattleSpecialDef; _outBattleSpeed = poke.Speed; _inBattleSpeed = _outBattleSpeed; _outBattleAccuracy = 1; _outBattleEvasion = 1; _inBattleAccuracy = 1; _inBattleEvasion = 1; _critChance = (poke.Speed * 100) >> 9; _type1 = poke.Type1; _type2 = poke.Type2; _moveset = new List <Attacks>(); _moveset = poke.Moves; _subHPRemaining = _HealthPoints; }
public override void Update(GameTime gameTime)//mise à jour des tours tant que en vie (both trainer et son pokémon) { bool UserPkmPrioritaire; while (UserTrainer.EstEnVie() && OpponentTrainer.EstEnVie()) { //UserPkmPrioritaire = true; while (UserPokemon.EstEnVie && OpponentPokemon.EstEnVie) { //Système de tours entre pkmns ici AfficherMenuAttaques(); //On va commencer par savoir comment choisir une attaque, après on fera un menu pour fight/bag/pokemons/run if (UserPokemon.Speed < OpponentPokemon.Speed) //le tour du joueur sauf si prouvé du contraire { UserPkmPrioritaire = false; } else { UserPkmPrioritaire = true; } //Important de garder dans la boucle, si la vitesse est changée par une attaque effect, et que l'adversaire ou le user devient plus rapide, il a droit de frapper deux fois if (UserPkmPrioritaire) //Si le pokémon User est plus rapide { OpponentPokemon.Défendre(CalculPointsDamage(UserPokemon, OpponentPokemon, numéroAttaqueChoisie)); //fonctions temporaires, à modifier pour calculer les points de dommages avec la formule UserPokemon.Défendre(CalculPointsDamage(OpponentPokemon, UserPokemon, OpponentPokemon.AttaqueAléatoire())); UserPkmPrioritaire = false; //fin de son tour } else //Si le pokémon adverse est le plus rapide { UserPokemon.Défendre(CalculPointsDamage(OpponentPokemon, UserPokemon, OpponentPokemon.AttaqueAléatoire())); // c'est le tour du pokémon adverse OpponentPokemon.Défendre(CalculPointsDamage(UserPokemon, OpponentPokemon, numéroAttaqueChoisie)); UserPkmPrioritaire = true; } } if (!OpponentPokemon.EstEnVie)//sorti de la boucle de combat: l'un des deux est mort { //Message/animation/whatever, opponent has been defeated! UserPokemon.GainExp(OpponentPokemon.Level * 10); OpponentPokemon = LancerPokémon(0, OpponentTrainer); //Throw next pokemon } else { //trainer pokemon fainted! Tu dois choisir un autre pokémon dans ton inventaire //Ouvrir inventaire, sélectionner un index int prochainPokemon = SélectionnerUnPokémonEnInventaire(); UserPokemon = LancerPokémon(prochainPokemon, UserTrainer); } } //Trainer has been defeated! ou Opponent has been defeated! if (UserTrainer.EstEnVie()) {//le User a gagné //Changement de la toune? //Gagne du cash, ptit message genre "wow le ptit con m'a battu holyshit man" } else {//Le User a perdu //Donne du cash, ptit message genre "wow t'es ben faible ptit con" //User wrap au pokémon center (une méthode de téléportation dans le trainer pour le déplacer perhaps?) } //Le combat est fini EnCombat = false; //Ou on pourrait changer le gamestate? base.Update(gameTime); //Utile? }
/// <summary> /// Fonction pour attribuer les points d'expérience au Pokémon du joueur. /// </summary> private void DonnerExp() { float exp = OpponentPokemon.GiveExp(); UserPokemon.GainExp(exp); }