Пример #1
0
        public BoosterPack GetFirstBooserPackage(int userID, NpgsqlTransaction transaction = null)
        {
            const string statement = @"SELECT ""BoosterPack_ID"", ""User_ID"", ""CardCount""
                FROM public.""BoosterPack""
                WHERE ""User_ID"" = @userID
                LIMIT 1;";

            BoosterPack ReadBoosterPackRow(NpgsqlDataReader reader)
            {
                return(new BoosterPack()
                {
                    BoosterPackID = reader.GetValue <int>("BoosterPack_ID"),
                    UserID = reader.GetValue <int>("User_ID"),
                    CardCount = reader.GetValue <int>("CardCount")
                });
            };

            BoosterPack result = database.Execute(statement, transaction, ReadBoosterPackRow, new NpgsqlParameter("userID", userID))
                                 .First();

            List <BoosterPackCard> assignedCards = GetAssignedCards(result.BoosterPackID, transaction)
                                                   .ToList();

            result.AssignedCards = assignedCards;
            return(result);
        }
Пример #2
0
        public void Collect()
        {
            do
            {
                if (totalVials > maxVials)
                {
                    throw new Exception("MAX VIAL LIMIT REACHED, HOW IS TEST NOT DONE");
                }

                cardSets.Values.ToList().ForEach(curCollection => {
                    setNeededVials();
                    if (curVials >= neededVials)
                    {
                        return;
                    }

                    BoosterPack newBooster = Shop.buyPack(curCollection.curSet, numPacks[curCollection.curSet.NAME]++);

                    curCollection.AddBooster(newBooster);

                    int newVials = 0;

                    newVials += compStrat.GetVials(curCollection);

                    curVials   += newVials;
                    totalVials += newVials;
                });

                //Collection curCollection = cardSets.Values.First(col => !col.IsFull());
            } while (!CollectionComplete());
        }
Пример #3
0
        public void Collect()
        {
            do
            {
                if (totalVials > maxVials)
                {
                    throw new Exception("MAX VIAL LIMIT REACHED, HOW IS TEST NOT DONE");
                }
                Collection curCollection = cardSets.Values.First(col => !col.IsFull());

                BoosterPack newBooster = Shop.buyPack(curCollection.curSet, numPacks[curCollection.curSet.NAME]++);

                curCollection.AddBooster(newBooster);

                int newVials = 0;

                newVials += compStrat.GetVials(curCollection);

                curVials   += newVials;
                totalVials += newVials;

                setNeededVials();
                if (curVials >= neededVials)
                {
                    break;
                    //craftStrat.CraftCards(curCollection, ref curVials);
                }
            } while (!CollectionComplete());
        }
Пример #4
0
        public void DeleteBooster(BoosterPack booster, NpgsqlTransaction transaction = null)
        {
            const string statement = @"DELETE FROM public.""BoosterPack_Cards"" WHERE ""BoosterPack_ID"" = @boosterPackID;
                DELETE FROM public.""BoosterPack"" WHERE ""BoosterPack_ID"" = @boosterPackID;";

            database.ExecuteNonQuery(statement, transaction, new NpgsqlParameter("boosterPackID", booster.BoosterPackID));
        }
Пример #5
0
        public void OpenFirstBoosterPackage(RequestContext requestContext)
        {
            Assert.NotNull(requestContext, nameof(requestContext));

            using (NpgsqlConnection connection = database.CreateAndOpenConnection())
                using (NpgsqlTransaction transaction = connection.BeginTransaction())
                {
                    UserSession session = CookieAuthenticationModule.GetUserSessionFromRequest(requestContext, transaction);
                    User        user    = userRepository.GetUser(session.UserID, transaction);
                    Assert.NotNull(user, nameof(user));

                    if (!boosterRepository.HasBoosterPackages(user.UserID, transaction))
                    {
                        throw new NoBoosterPackageAssignedException($"Cannot Open Booster- package. No Booster- Packages found for User: {user.UserName}.");
                    }

                    BoosterPack firstBoosterPack = boosterRepository.GetFirstBooserPackage(user.UserID, transaction);
                    Assert.NotNull(firstBoosterPack, nameof(firstBoosterPack));

                    foreach (BoosterPackCard assignedCard in firstBoosterPack.AssignedCards)
                    {
                        cardLibraryRepository.AddCardToLibrary(assignedCard.CardID, firstBoosterPack.UserID);
                    }

                    boosterRepository.DeleteBooster(firstBoosterPack, transaction);
                    transaction.Commit();
                }
        }
Пример #6
0
        public static void UpdateUsersBoosterPackCount(BoosterPack set, Guid id, int value)
        {
            SqlConnection connection      = MKUserDataDB.GetConnection();
            string        updateStatement =
                "UPDATE UserAccounts SET " +
                "RebellionBoosterPacks = @RebellionBoosterPacks " +
                "WHERE Id = @Id";

            SqlCommand insertCommand = new SqlCommand(updateStatement, connection);

            insertCommand.Parameters.AddWithValue(
                "@Id", id);
            insertCommand.Parameters.AddWithValue(
                "@RebellionBoosterPacks", value);

            try
            {
                connection.Open();
                int count = insertCommand.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.ToString());
                throw;
            }
            finally
            {
                connection.Close();
            }
        }
Пример #7
0
        public BoosterPack ToRealPack()
        {
            var pack = new BoosterPack
            {
                RarityExcludedFromPack = new List <RarityExcluded>(),
                Characters             = new List <BoosterPackCharacter>(),
                CardSourceFromPack     = CardSource.Api,
                IsCardFromPackTradable = Tradable,
                MinRarity = Rarity,
                CardCnt   = Count,
                Name      = Name
            };

            if (RarityExcluded != null)
            {
                if (RarityExcluded.Count > 0)
                {
                    foreach (var exc in RarityExcluded)
                    {
                        pack.RarityExcludedFromPack.Add(new RarityExcluded()
                        {
                            Rarity = exc
                        });
                    }
                }
            }

            switch (Pool.Type)
            {
            case CardsPoolType.Title:
                pack.Title = Pool.TitleId;
                break;

            case CardsPoolType.List:
                pack.Title = 0;
                foreach (var id in Pool.Character)
                {
                    pack.Characters.Add(new BoosterPackCharacter()
                    {
                        Character = id
                    });
                }
                break;

            default:
            case CardsPoolType.Random:
                pack.Title = 0;
                break;
            }

            return(pack);
        }
Пример #8
0
        public static BoosterPack ToModel(this BoosterPackEntity entity)
        {
            var boosterpack = new BoosterPack
            {
                Name      = entity.Name,
                Url       = entity.Url,
                OcgEcists = entity.OcgExists,
                TcgExists = entity.TcgExists,
                Dates     = entity.Dates.Select(dateEntity => dateEntity.ToModel()).ToList(),
                Cards     = entity.Cards.Select(cardEntity => cardEntity.ToModel()).ToList()
            };

            return(boosterpack);
        }
Пример #9
0
    public void DisplayBoosters(BoosterPack[] boostersToDisplay)
    {
        if (boosterPanel.childCount > 0)
        {
            foreach (RectTransform r in boosterPanel)
            {
                Destroy(r.gameObject);
            }
        }

        foreach (BoosterPack b in boostersToDisplay)
        {
            if (b == null) break;

            GameObject tempBooster = Instantiate(b.gameObject);
            tempBooster.GetComponent<BoosterPack>().SetCost(b.cost);
            tempBooster.transform.SetParent(boosterPanel.transform,false);
        }
    }
Пример #10
0
        public async Task <List <Card> > OpenBoosterPackAsync(IUser user, BoosterPack pack)
        {
            var cardsFromPack = new List <Card>();

            for (int i = 0; i < pack.CardCnt; i++)
            {
                ICharacterInfo chara = null;
                if (pack.Characters.Count > 0)
                {
                    var id = pack.Characters.First();
                    if (pack.Characters.Count > 1)
                    {
                        id = Fun.GetOneRandomFrom(pack.Characters);
                    }

                    var res = await _shClient.GetCharacterInfoAsync(id.Character);

                    if (res.IsSuccessStatusCode())
                    {
                        chara = res.Body;
                    }
                }
                else if (pack.Title != 0)
                {
                    var res = await _shClient.Title.GetCharactersAsync(pack.Title);

                    if (res.IsSuccessStatusCode())
                    {
                        if (res.Body.Count > 0)
                        {
                            var id = Fun.GetOneRandomFrom(res.Body).CharacterId;
                            if (id.HasValue)
                            {
                                var response = await _shClient.GetCharacterInfoAsync(id.Value);

                                if (response.IsSuccessStatusCode())
                                {
                                    chara = response.Body;
                                }
                            }
                        }
                    }
                }
                else
                {
                    chara = await GetRandomCharacterAsync();
                }

                if (chara != null)
                {
                    var newCard = GenerateNewCard(user, chara, pack.RarityExcludedFromPack.Select(x => x.Rarity).ToList());
                    if (pack.MinRarity != Rarity.E && i == pack.CardCnt - 1)
                    {
                        newCard = GenerateNewCard(user, chara, pack.MinRarity);
                    }

                    newCard.IsTradable = pack.IsCardFromPackTradable;
                    newCard.Source     = pack.CardSourceFromPack;

                    cardsFromPack.Add(newCard);
                }
            }

            return(cardsFromPack);
        }
Пример #11
0
        public static MageKnightData GetRandomMage(BoosterPack set)
        {
            int rarityFilter = RandomNumber(1, 1000);
            int rarity       = 1;

            if (rarityFilter < 250) //  %25 chance of pulling rarity 1
            {
                rarity = 1;
            }
            else if (rarityFilter >= 250 && rarityFilter < 450) //  %20 chance of pulling rarity 2
            {
                rarity = 2;
            }
            else if (rarityFilter >= 450 && rarityFilter < 620) // %17
            {
                rarity = 3;
            }
            else if (rarityFilter >= 620 && rarityFilter < 760)// %14
            {
                rarity = 4;
            }
            else if (rarityFilter >= 760 && rarityFilter < 890)//  %13
            {
                rarity = 5;
            }
            else if (rarityFilter >= 500 && rarityFilter < 980)//  %9
            {
                rarity = 6;
            }
            else if (rarityFilter >= 980 && rarityFilter <= 1000)//  %2
            {
                rarity = 7;
            }

            SqlConnection connection = MageKnightDataDB.GetConnection();
            string        selectStatement
                = "SELECT Id, [Index], [Set], Name, PointValue, Faction, FrontArc, Targets, Range, Rank, Rarity, ModelImage "
                  + "FROM AllMageKnights "
                  + "WHERE Rarity = @Rarity";

            SqlCommand selectCommand = new SqlCommand(selectStatement, connection);

            selectCommand.Parameters.AddWithValue(
                "@Rarity", rarity);

            try
            {
                connection.Open();

                SqlDataReader reader = selectCommand.ExecuteReader();

                List <MageData> mages = new List <MageData>();
                while (reader.Read())
                {
                    MageData data = new MageData();
                    data.Id         = Guid.Parse(reader["Id"].ToString());
                    data.Index      = Int32.Parse(reader["Index"].ToString());
                    data.Name       = reader["Name"].ToString();
                    data.Faction    = reader["Faction"].ToString();
                    data.Set        = reader["Set"].ToString();
                    data.PointValue = Int32.Parse(reader["PointValue"].ToString());
                    data.Range      = Int32.Parse(reader["Range"].ToString());
                    data.FrontArc   = Int32.Parse(reader["FrontArc"].ToString());
                    data.Targets    = Int32.Parse(reader["Targets"].ToString());
                    data.Rank       = reader["Rank"].ToString();
                    data.Faction    = reader["Faction"].ToString();
                    data.ModelImage = reader["ModelImage"] as byte[];
                    data.Dial       = GetDialStats(data);
                    mages.Add(data);
                }

                int randomlySelectedIndex = RandomNumber(0, mages.Count - 1);

                connection.Close();

                MageKnightData mage = new MageKnightData(mages.ElementAt(randomlySelectedIndex));
                return(mage);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"something is wrong GetMageKnight:{ex.ToString()}");
            }

            return(null);
        }
Пример #12
0
        public void OpenBooster(IUpdatableUser model, BoosterPack set)
        {
            var user = userCollection.Users.FirstOrDefault(x => x.Id == model.Id);

            try
            {
                for (int i = 0; i < 5; i++)
                {
                    MageKnightData magedata = MageDB.GetRandomMage(set);
                    UserDataDB.AddMageToInventory(magedata.Id, user.Id);

                    var mage = this.modelFactoryResolver.GetFactory <IUpdatableMageKnight>().Create();
                    mage.Faction    = magedata.Faction;
                    mage.FrontArc   = magedata.FrontArc;
                    mage.Id         = magedata.Id;
                    mage.Index      = magedata.Index;
                    mage.ModelImage = magedata.ModelImage;
                    mage.Name       = magedata.Name;
                    mage.PointValue = magedata.PointValue;
                    mage.Range      = magedata.Range;
                    mage.Rank       = magedata.Rank;
                    mage.Set        = magedata.Set;
                    var dial = this.modelFactoryResolver.GetFactory <IUpdatableDial>().Create();
                    foreach (var click in magedata.Dial.Clicks)
                    {
                        var query = this.modelFactoryResolver.GetFactory <IUpdatableClick>().Create();
                        query.Attack  = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Speed   = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Defense = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Damage  = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();

                        query.Attack.Value     = click.Attack.Value;
                        query.Attack.Ability   = click.Attack.Ability;
                        query.Attack.StatType  = click.Attack.StatType;
                        query.Speed.Value      = click.Speed.Value;
                        query.Speed.Ability    = click.Speed.Ability;
                        query.Speed.StatType   = click.Speed.StatType;
                        query.Defense.Value    = click.Defense.Value;
                        query.Defense.Ability  = click.Defense.Ability;
                        query.Defense.StatType = click.Defense.StatType;
                        query.Damage.Value     = click.Damage.Value;
                        query.Damage.Ability   = click.Damage.Ability;
                        query.Damage.StatType  = click.Damage.StatType;
                        query.Index            = click.Index;

                        foreach (var stat in click.Stats)
                        {
                            var statQuery = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                            statQuery.Ability  = stat.Ability;
                            statQuery.Value    = stat.Value;
                            statQuery.StatType = stat.StatType;
                            query.Stats.Add(statQuery);
                        }

                        dial.Clicks.Add(query);
                    }

                    dial.ClickIndex = magedata.Dial.ClickIndex;
                    dial.Click      = dial.Clicks.First();
                    dial.Name       = magedata.Dial.Name;
                    mage.Dial       = dial;
                    ServiceTypeProvider.Instance.UserCollection.Users.FirstOrDefault(x => x.Id == user.Id).AddMageToInventory(mage.Id);
                    user.Inventory.Add(mage);
                }
            }
            catch (Exception e)
            {
                ;
            }


            UserDataDB.UpdateUsersBoosterPackCount(set, user.Id, user.RebellionBoosterPacks);
        }
Пример #13
0
 public void OpenBooserPack(BoosterPack rebellion)
 {
     throw new NotImplementedException();
 }