예제 #1
0
        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));
        }
예제 #3
0
        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"));
        }
예제 #4
0
 /// <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;
 }
예제 #5
0
        public IActionResult SavePokemon([FromBody] SavePokemonDto dto)
        {
            UserPokemon userPokemon = _gameService.SavePokemon(dto);

            if (userPokemon == null)
            {
                return(BadRequest());
            }
            return(Ok(userPokemon));
        }
예제 #6
0
        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));
        }
예제 #8
0
        /// <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());
        }
예제 #11
0
        /// <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;
        }
예제 #12
0
        //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;
        }
예제 #13
0
        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?
        }
예제 #14
0
        /// <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);
        }