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); }
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()); }
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()); }
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)); }
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(); } }
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(); } }
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); }
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); }
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); } }
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); }
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); }
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); }
public void OpenBooserPack(BoosterPack rebellion) { throw new NotImplementedException(); }