2021-05-15 17:36:35 +02:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2021-05-15 19:47:48 +02:00
|
|
|
using System.Globalization;
|
2021-05-15 17:36:35 +02:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Bogus;
|
|
|
|
|
using Bogus.Extensions;
|
|
|
|
|
using WotBlitzStatisticsPro.Blazor.GraphQl;
|
|
|
|
|
|
2021-06-02 10:34:19 +02:00
|
|
|
namespace WotBlitzStatisticsPro.Blazor.Services.Mock
|
2021-05-15 17:36:35 +02:00
|
|
|
{
|
|
|
|
|
public class GraphQlBackendMockService: IGraphQlBackendService
|
|
|
|
|
{
|
2021-05-21 13:41:46 +02:00
|
|
|
private readonly bool _needToWait;
|
|
|
|
|
|
|
|
|
|
public GraphQlBackendMockService()
|
|
|
|
|
{
|
|
|
|
|
_needToWait = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public GraphQlBackendMockService(bool needToWait)
|
|
|
|
|
{
|
|
|
|
|
_needToWait = needToWait;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-04 15:35:53 +02:00
|
|
|
public async Task<IReadOnlyList<IPlayerShortInfo>?> FindPlayers(string accountNick, RealmType realmType)
|
2021-05-15 17:36:35 +02:00
|
|
|
{
|
|
|
|
|
var result = new List<IFindPlayers_Players>();
|
|
|
|
|
|
2021-05-15 19:47:48 +02:00
|
|
|
var faker = new Faker(FakerLanguage(GetLanguage()));
|
2021-05-15 17:36:35 +02:00
|
|
|
var random = faker.Random.Number(10, 80);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < random; i++)
|
|
|
|
|
{
|
|
|
|
|
result.Add(new FindPlayers_Players_AccountsSearchResponseItem(
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
2021-05-15 22:23:49 +02:00
|
|
|
faker.Internet.UserName(),
|
|
|
|
|
faker.Hacker.Abbreviation().OrNull(faker, 0.6f),
|
2021-05-15 17:36:35 +02:00
|
|
|
faker.Date.Past(),
|
|
|
|
|
faker.Random.Number(10, 20000),
|
|
|
|
|
faker.Random.Number(30, 90)));
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-21 13:41:46 +02:00
|
|
|
if (_needToWait)
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000);
|
|
|
|
|
}
|
2021-05-15 17:36:35 +02:00
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-04 15:35:53 +02:00
|
|
|
public async Task<IReadOnlyList<IClanShortInfo>?> FindClans(string clanNameOrTag, RealmType realmType)
|
2021-05-15 17:36:35 +02:00
|
|
|
{
|
|
|
|
|
var result = new List<IFindClans_Clans>();
|
|
|
|
|
|
2021-05-15 19:47:48 +02:00
|
|
|
var faker = new Faker(FakerLanguage(GetLanguage()));
|
2021-05-15 17:36:35 +02:00
|
|
|
var random = faker.Random.Number(10, 80);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < random; i++)
|
|
|
|
|
{
|
|
|
|
|
result.Add(new FindClans_Clans_ClanSearchResponseItem(
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
2021-05-16 22:43:49 +02:00
|
|
|
Convert.ToInt32((faker.Date.Past() - new DateTime(1970, 1, 1)).TotalSeconds),
|
2021-05-15 17:36:35 +02:00
|
|
|
faker.Random.Number(1, 50),
|
|
|
|
|
faker.Lorem.Word(),
|
2021-05-17 13:37:32 +02:00
|
|
|
faker.Hacker.Abbreviation()));
|
2021-05-15 17:36:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2021-05-21 13:41:46 +02:00
|
|
|
if (_needToWait)
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000);
|
|
|
|
|
}
|
2021-05-15 17:36:35 +02:00
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-04 15:35:53 +02:00
|
|
|
public async Task<(IAccount accountInfo, IReadOnlyList<ISection> achievementsBySection)> GetPlayerInfo(long accountId, RealmType realmType)
|
2021-05-28 15:27:36 +02:00
|
|
|
{
|
2021-05-31 16:09:16 +02:00
|
|
|
var faker = new Faker(FakerLanguage(GetLanguage()));
|
|
|
|
|
var tanksCount = faker.Random.Number(10, 280);
|
|
|
|
|
var isClanInfo = faker.Random.Bool();
|
|
|
|
|
|
|
|
|
|
IPlayer_AccountInfo_ClanInfo clanInfo = null;
|
|
|
|
|
|
|
|
|
|
if (isClanInfo)
|
|
|
|
|
{
|
|
|
|
|
var role = GetRandomClanRole(faker, GetLanguage());
|
|
|
|
|
clanInfo = new Player_AccountInfo_ClanInfo_ClanInfoResponse(
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
|
|
|
|
faker.Date.Past(),
|
|
|
|
|
role.role,
|
|
|
|
|
role.roleName,
|
|
|
|
|
faker.Lorem.Word(),
|
|
|
|
|
faker.Date.Past(),
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
|
|
|
|
faker.Internet.UserName(),
|
|
|
|
|
faker.Lorem.Sentence(),
|
|
|
|
|
faker.Lorem.Sentence(),
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
|
|
|
|
faker.Internet.UserName(),
|
|
|
|
|
faker.Random.Number(1, 50),
|
|
|
|
|
faker.Lorem.Sentence(),
|
|
|
|
|
faker.Hacker.Abbreviation(),
|
|
|
|
|
faker.Date.Past()
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var tanks = new List<IPlayer_AccountInfo_Tanks>();
|
|
|
|
|
for (int i = 0; i < tanksCount; i++)
|
|
|
|
|
{
|
|
|
|
|
var nation = GetRandomNation(faker, GetLanguage());
|
|
|
|
|
var vehicleType = GetRandomVehicleType(faker, GetLanguage());
|
|
|
|
|
tanks.Add(new Player_AccountInfo_Tanks_TankInfoResponse(
|
|
|
|
|
faker.Random.Long(100000, 999999),
|
|
|
|
|
faker.Random.Number(500),
|
|
|
|
|
faker.PickRandom<MarkOfMastery>(),
|
2021-06-04 15:35:53 +02:00
|
|
|
faker.Random.Decimal(0M, 7M),
|
|
|
|
|
faker.Name.LastName(),
|
|
|
|
|
nation.nation,
|
|
|
|
|
nation.nationName,
|
|
|
|
|
faker.Random.Number(10),
|
|
|
|
|
vehicleType.vehicleType,
|
|
|
|
|
vehicleType.vehicleTypeName,
|
|
|
|
|
faker.Random.Bool(),
|
|
|
|
|
GetRandomPreviewImage(faker),
|
|
|
|
|
GetRandomLargeImage(faker),
|
|
|
|
|
faker.Date.Past(),
|
2021-05-31 16:09:16 +02:00
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Double(500D, 2000D),
|
|
|
|
|
faker.Random.Decimal(20M, 95M),
|
|
|
|
|
faker.Random.Decimal(300M, 4000M),
|
|
|
|
|
faker.Random.Decimal(100M, 2000M),
|
|
|
|
|
faker.Random.Decimal(0M, 3M),
|
2021-06-04 15:35:53 +02:00
|
|
|
faker.Random.Decimal(5M, 95M)
|
2021-05-31 16:09:16 +02:00
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_needToWait)
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000);
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-02 14:34:00 +02:00
|
|
|
var player = new Player_AccountInfo_AccountInfoResponse(
|
2021-05-31 16:09:16 +02:00
|
|
|
accountId,
|
|
|
|
|
faker.Date.Past(),
|
|
|
|
|
faker.Internet.UserName(),
|
2021-06-04 15:35:53 +02:00
|
|
|
tanks[faker.Random.Number(1, tanks.Count - 1)].TankId,
|
|
|
|
|
tanks[faker.Random.Number(1, tanks.Count - 1)].TankId,
|
|
|
|
|
faker.Random.Double(2D, 9D),
|
|
|
|
|
faker.Date.Past(),
|
2021-05-31 16:09:16 +02:00
|
|
|
faker.Random.Long(1, 100000),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Long(1, 9999),
|
|
|
|
|
faker.Random.Double(500D, 2000D),
|
|
|
|
|
faker.Random.Decimal(20M, 95M),
|
|
|
|
|
faker.Random.Decimal(300M, 4000M),
|
|
|
|
|
faker.Random.Decimal(100M, 2000M),
|
|
|
|
|
faker.Random.Decimal(0M, 3M),
|
|
|
|
|
faker.Random.Decimal(5M, 95M),
|
|
|
|
|
clanInfo,
|
|
|
|
|
tanks
|
|
|
|
|
);
|
2021-06-02 14:34:00 +02:00
|
|
|
|
|
|
|
|
var achievements = AchievementsMockData.GetStaticAchievements();
|
|
|
|
|
|
|
|
|
|
return (player, achievements?.Sections);
|
2021-05-28 15:27:36 +02:00
|
|
|
}
|
|
|
|
|
|
2021-05-15 17:36:35 +02:00
|
|
|
private string FakerLanguage(RequestLanguage language)
|
|
|
|
|
{
|
|
|
|
|
switch (language)
|
|
|
|
|
{
|
|
|
|
|
case RequestLanguage.Ru:
|
|
|
|
|
return "ru";
|
|
|
|
|
case RequestLanguage.De:
|
|
|
|
|
return "de";
|
|
|
|
|
default:
|
|
|
|
|
return "en";
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-15 19:47:48 +02:00
|
|
|
|
|
|
|
|
private RequestLanguage GetLanguage()
|
|
|
|
|
{
|
|
|
|
|
var culture = CultureInfo.CurrentCulture;
|
|
|
|
|
|
|
|
|
|
switch (culture.Name)
|
|
|
|
|
{
|
|
|
|
|
case "ru-RU":
|
|
|
|
|
return RequestLanguage.Ru;
|
|
|
|
|
case "de-DE":
|
|
|
|
|
return RequestLanguage.De;
|
|
|
|
|
default:
|
|
|
|
|
return RequestLanguage.En;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-31 16:09:16 +02:00
|
|
|
|
|
|
|
|
private (string role, string roleName) GetRandomClanRole(Faker faker, RequestLanguage language)
|
|
|
|
|
{
|
|
|
|
|
var roles = new string[] {"executive_officer", "private", "commander"};
|
|
|
|
|
var roleIndex = faker.Random.Number(0, 2);
|
|
|
|
|
var result = (roleIndex, language) switch
|
|
|
|
|
{
|
|
|
|
|
(0, RequestLanguage.Ru) => "Заместитель командующего",
|
|
|
|
|
(0, RequestLanguage.En) => "Executive Officer",
|
|
|
|
|
(0, RequestLanguage.De) => "Ausführender Offizier",
|
|
|
|
|
(1, RequestLanguage.Ru) => "Боец",
|
|
|
|
|
(1, RequestLanguage.En) => "Private",
|
|
|
|
|
(1, RequestLanguage.De) => "Gefreiter",
|
|
|
|
|
(2, RequestLanguage.Ru) => "Командующий",
|
|
|
|
|
(2, RequestLanguage.En) => "Commander",
|
|
|
|
|
(2, RequestLanguage.De) => "Kommandant",
|
|
|
|
|
_ => "Unknown"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (roles[roleIndex], result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private (string vehicleType, string vehicleTypeName) GetRandomVehicleType(Faker faker, RequestLanguage language)
|
|
|
|
|
{
|
|
|
|
|
var types = new string[] { "heavyTank", "AT-SPG", "mediumTank", "lightTank" };
|
|
|
|
|
var typeIndex = faker.Random.Number(0, 3);
|
|
|
|
|
var result = (roleIndex: typeIndex, language) switch
|
|
|
|
|
{
|
|
|
|
|
(0, RequestLanguage.Ru) => "Тяжёлый танк",
|
|
|
|
|
(0, RequestLanguage.En) => "Heavy Tank",
|
|
|
|
|
(0, RequestLanguage.De) => "Schwere Panzer",
|
|
|
|
|
(1, RequestLanguage.Ru) => "ПТ-САУ",
|
|
|
|
|
(1, RequestLanguage.En) => "Tank Destroyer",
|
|
|
|
|
(1, RequestLanguage.De) => "Jagdpanzer",
|
|
|
|
|
(2, RequestLanguage.Ru) => "Средний танк",
|
|
|
|
|
(2, RequestLanguage.En) => "Medium Tank",
|
|
|
|
|
(2, RequestLanguage.De) => "Mittlerer Panzer",
|
|
|
|
|
(3, RequestLanguage.Ru) => "Легкий танк",
|
|
|
|
|
(3, RequestLanguage.En) => "Light Tank",
|
|
|
|
|
(3, RequestLanguage.De) => "Leichter Panzer",
|
|
|
|
|
_ => "Unknown"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (types[typeIndex], result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private (string nation, string nationName) GetRandomNation(Faker faker, RequestLanguage language)
|
|
|
|
|
{
|
|
|
|
|
var nations = new string[] { "usa", "france", "ussr", "china", "uk", "japan", "germany", "other", "european" };
|
|
|
|
|
var nationIndex = faker.Random.Number(0, 8);
|
|
|
|
|
var result = (roleIndex: nationIndex, language) switch
|
|
|
|
|
{
|
|
|
|
|
(0, RequestLanguage.Ru) => "США",
|
|
|
|
|
(0, RequestLanguage.En) => "U.S.A.",
|
|
|
|
|
(0, RequestLanguage.De) => "USA",
|
|
|
|
|
(1, RequestLanguage.Ru) => "Франция",
|
|
|
|
|
(1, RequestLanguage.En) => "France",
|
|
|
|
|
(1, RequestLanguage.De) => "Frankreich",
|
|
|
|
|
(2, RequestLanguage.Ru) => "СССР",
|
|
|
|
|
(2, RequestLanguage.En) => "U.S.S.R.",
|
|
|
|
|
(2, RequestLanguage.De) => "UdSSR",
|
|
|
|
|
(3, RequestLanguage.Ru) => "Китай",
|
|
|
|
|
(3, RequestLanguage.En) => "China",
|
|
|
|
|
(3, RequestLanguage.De) => "China",
|
|
|
|
|
(4, RequestLanguage.Ru) => "Великобритания",
|
|
|
|
|
(4, RequestLanguage.En) => "U.K.",
|
|
|
|
|
(4, RequestLanguage.De) => "Großbritannien",
|
|
|
|
|
(5, RequestLanguage.Ru) => "Япония",
|
|
|
|
|
(5, RequestLanguage.En) => "Japan",
|
|
|
|
|
(5, RequestLanguage.De) => "Japan",
|
|
|
|
|
(6, RequestLanguage.Ru) => "Германия",
|
|
|
|
|
(6, RequestLanguage.En) => "Germany",
|
|
|
|
|
(6, RequestLanguage.De) => "Deutschland",
|
|
|
|
|
(7, RequestLanguage.Ru) => "Сборная нация",
|
|
|
|
|
(7, RequestLanguage.En) => "Hybrid nation",
|
|
|
|
|
(7, RequestLanguage.De) => "Hybridnation",
|
|
|
|
|
(8, RequestLanguage.Ru) => "Сборная Европы",
|
|
|
|
|
(8, RequestLanguage.En) => "European Nation",
|
|
|
|
|
(8, RequestLanguage.De) => "Europäische Nation",
|
|
|
|
|
_ => "Unknown"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (nations[nationIndex], result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string GetRandomPreviewImage(Faker faker)
|
|
|
|
|
{
|
|
|
|
|
var images = new string[]
|
|
|
|
|
{
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-34.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch12_111_1_2_3.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3601H.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX_50B.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB72_AT15.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/IS-4.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T2_lt.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/D2.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX40.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-34-85_Victory.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/IS.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T32.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/F19_Lorraine40t.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVIB_Tiger_II.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX50_Foch.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GAZ-74b.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/S17_EMIL_1952E2.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz38_NA.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M103.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E50_Ausf_M.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Oth17_BDT-5A.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB_Vickers_Light_105.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB23_Centurion.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Bat_Chatillon25t.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M4_Sherman.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch23_112.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPz_E100.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T62A.png",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return images[faker.Random.Number(images.Length - 1)];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string GetRandomLargeImage(Faker faker)
|
|
|
|
|
{
|
|
|
|
|
var images = new string[]
|
|
|
|
|
{
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-34.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch12_111_1_2_3.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3601H.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX_50B.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB72_AT15.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/IS-4.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T2_lt.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/D2.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX40.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-34-85_Victory.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/IS.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T32.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/F19_Lorraine40t.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVIB_Tiger_II.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX50_Foch.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GAZ-74b.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/S17_EMIL_1952E2.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz38_NA.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M103.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E50_Ausf_M.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Oth17_BDT-5A.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB_Vickers_Light_105.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB23_Centurion.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Bat_Chatillon25t.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M4_Sherman.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch23_112.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPz_E100.png",
|
|
|
|
|
"http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T62A.png",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return images[faker.Random.Number(images.Length - 1)];
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-15 17:36:35 +02:00
|
|
|
}
|
|
|
|
|
}
|