mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 14:38:18 +00:00
changed format of the countryflags index file to json
This commit is contained in:
parent
61b515f9be
commit
f50b5d6059
1024
data/countryflags/index.json
Normal file
1024
data/countryflags/index.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,769 +0,0 @@
|
|||
|
||||
##### country codes #####
|
||||
|
||||
##### custom #####
|
||||
|
||||
default
|
||||
== -1
|
||||
|
||||
XEN
|
||||
== 901
|
||||
|
||||
XNI
|
||||
== 902
|
||||
|
||||
XSC
|
||||
== 903
|
||||
|
||||
XWA
|
||||
== 904
|
||||
|
||||
#south sudan, non official code#
|
||||
SS
|
||||
== 737
|
||||
|
||||
##### ISO 3166-1 based #####
|
||||
|
||||
AF
|
||||
== 4
|
||||
|
||||
AX
|
||||
== 248
|
||||
|
||||
AL
|
||||
== 8
|
||||
|
||||
DZ
|
||||
== 12
|
||||
|
||||
AS
|
||||
== 16
|
||||
|
||||
AD
|
||||
== 20
|
||||
|
||||
AO
|
||||
== 24
|
||||
|
||||
AI
|
||||
== 660
|
||||
|
||||
#AQ
|
||||
#== 10
|
||||
|
||||
AG
|
||||
== 28
|
||||
|
||||
AR
|
||||
== 32
|
||||
|
||||
AM
|
||||
== 51
|
||||
|
||||
AW
|
||||
== 533
|
||||
|
||||
AU
|
||||
== 36
|
||||
|
||||
AT
|
||||
== 40
|
||||
|
||||
AZ
|
||||
== 31
|
||||
|
||||
BS
|
||||
== 44
|
||||
|
||||
BH
|
||||
== 48
|
||||
|
||||
BD
|
||||
== 50
|
||||
|
||||
BB
|
||||
== 52
|
||||
|
||||
BY
|
||||
== 112
|
||||
|
||||
BE
|
||||
== 56
|
||||
|
||||
BZ
|
||||
== 84
|
||||
|
||||
BJ
|
||||
== 204
|
||||
|
||||
BM
|
||||
== 60
|
||||
|
||||
BT
|
||||
== 64
|
||||
|
||||
BO
|
||||
== 68
|
||||
|
||||
#BQ
|
||||
#== 535
|
||||
|
||||
BA
|
||||
== 70
|
||||
|
||||
BW
|
||||
== 72
|
||||
|
||||
#BV
|
||||
#== 74
|
||||
|
||||
BR
|
||||
== 76
|
||||
|
||||
IO
|
||||
== 86
|
||||
|
||||
BN
|
||||
== 96
|
||||
|
||||
BG
|
||||
== 100
|
||||
|
||||
BF
|
||||
== 854
|
||||
|
||||
BI
|
||||
== 108
|
||||
|
||||
KH
|
||||
== 116
|
||||
|
||||
CM
|
||||
== 120
|
||||
|
||||
CA
|
||||
== 124
|
||||
|
||||
CV
|
||||
== 132
|
||||
|
||||
KY
|
||||
== 136
|
||||
|
||||
CF
|
||||
== 140
|
||||
|
||||
TD
|
||||
== 148
|
||||
|
||||
CL
|
||||
== 152
|
||||
|
||||
CN
|
||||
== 156
|
||||
|
||||
CX
|
||||
== 162
|
||||
|
||||
CC
|
||||
== 166
|
||||
|
||||
CO
|
||||
== 170
|
||||
|
||||
KM
|
||||
== 174
|
||||
|
||||
CG
|
||||
== 178
|
||||
|
||||
CD
|
||||
== 180
|
||||
|
||||
CK
|
||||
== 184
|
||||
|
||||
CR
|
||||
== 188
|
||||
|
||||
CI
|
||||
== 384
|
||||
|
||||
HR
|
||||
== 191
|
||||
|
||||
CU
|
||||
== 192
|
||||
|
||||
CW
|
||||
== 531
|
||||
|
||||
CY
|
||||
== 196
|
||||
|
||||
CZ
|
||||
== 203
|
||||
|
||||
DK
|
||||
== 208
|
||||
|
||||
DJ
|
||||
== 262
|
||||
|
||||
DM
|
||||
== 212
|
||||
|
||||
DO
|
||||
== 214
|
||||
|
||||
EC
|
||||
== 218
|
||||
|
||||
EG
|
||||
== 818
|
||||
|
||||
SV
|
||||
== 222
|
||||
|
||||
GQ
|
||||
== 226
|
||||
|
||||
ER
|
||||
== 232
|
||||
|
||||
EE
|
||||
== 233
|
||||
|
||||
ET
|
||||
== 231
|
||||
|
||||
FK
|
||||
== 238
|
||||
|
||||
FO
|
||||
== 234
|
||||
|
||||
FJ
|
||||
== 242
|
||||
|
||||
FI
|
||||
== 246
|
||||
|
||||
FR
|
||||
== 250
|
||||
|
||||
GF
|
||||
== 254
|
||||
|
||||
PF
|
||||
== 258
|
||||
|
||||
TF
|
||||
== 260
|
||||
|
||||
GA
|
||||
== 266
|
||||
|
||||
GM
|
||||
== 270
|
||||
|
||||
GE
|
||||
== 268
|
||||
|
||||
DE
|
||||
== 276
|
||||
|
||||
GH
|
||||
== 288
|
||||
|
||||
GI
|
||||
== 292
|
||||
|
||||
GR
|
||||
== 300
|
||||
|
||||
GL
|
||||
== 304
|
||||
|
||||
GD
|
||||
== 308
|
||||
|
||||
GP
|
||||
== 312
|
||||
|
||||
GU
|
||||
== 316
|
||||
|
||||
GT
|
||||
== 320
|
||||
|
||||
GG
|
||||
== 831
|
||||
|
||||
GN
|
||||
== 324
|
||||
|
||||
GW
|
||||
== 624
|
||||
|
||||
GY
|
||||
== 328
|
||||
|
||||
HT
|
||||
== 332
|
||||
|
||||
#HM
|
||||
#== 334
|
||||
|
||||
VA
|
||||
== 336
|
||||
|
||||
HN
|
||||
== 340
|
||||
|
||||
HK
|
||||
== 344
|
||||
|
||||
HU
|
||||
== 348
|
||||
|
||||
IS
|
||||
== 352
|
||||
|
||||
IN
|
||||
== 356
|
||||
|
||||
ID
|
||||
== 360
|
||||
|
||||
IR
|
||||
== 364
|
||||
|
||||
IQ
|
||||
== 368
|
||||
|
||||
IE
|
||||
== 372
|
||||
|
||||
IM
|
||||
== 833
|
||||
|
||||
IL
|
||||
== 376
|
||||
|
||||
IT
|
||||
== 380
|
||||
|
||||
JM
|
||||
== 388
|
||||
|
||||
JP
|
||||
== 392
|
||||
|
||||
JE
|
||||
== 832
|
||||
|
||||
JO
|
||||
== 400
|
||||
|
||||
KZ
|
||||
== 398
|
||||
|
||||
KE
|
||||
== 404
|
||||
|
||||
KI
|
||||
== 296
|
||||
|
||||
KP
|
||||
== 408
|
||||
|
||||
KR
|
||||
== 410
|
||||
|
||||
KW
|
||||
== 414
|
||||
|
||||
KG
|
||||
== 417
|
||||
|
||||
LA
|
||||
== 418
|
||||
|
||||
LV
|
||||
== 428
|
||||
|
||||
LB
|
||||
== 422
|
||||
|
||||
LS
|
||||
== 426
|
||||
|
||||
LR
|
||||
== 430
|
||||
|
||||
LY
|
||||
== 434
|
||||
|
||||
LI
|
||||
== 438
|
||||
|
||||
LT
|
||||
== 440
|
||||
|
||||
LU
|
||||
== 442
|
||||
|
||||
MO
|
||||
== 446
|
||||
|
||||
MK
|
||||
== 807
|
||||
|
||||
MG
|
||||
== 450
|
||||
|
||||
MW
|
||||
== 454
|
||||
|
||||
MY
|
||||
== 458
|
||||
|
||||
MV
|
||||
== 462
|
||||
|
||||
ML
|
||||
== 466
|
||||
|
||||
MT
|
||||
== 470
|
||||
|
||||
MH
|
||||
== 584
|
||||
|
||||
MQ
|
||||
== 474
|
||||
|
||||
MR
|
||||
== 478
|
||||
|
||||
MU
|
||||
== 480
|
||||
|
||||
#YT
|
||||
#== 175
|
||||
|
||||
MX
|
||||
== 484
|
||||
|
||||
FM
|
||||
== 583
|
||||
|
||||
MD
|
||||
== 498
|
||||
|
||||
MC
|
||||
== 492
|
||||
|
||||
MN
|
||||
== 496
|
||||
|
||||
ME
|
||||
== 499
|
||||
|
||||
MS
|
||||
== 500
|
||||
|
||||
MA
|
||||
== 504
|
||||
|
||||
MZ
|
||||
== 508
|
||||
|
||||
MM
|
||||
== 104
|
||||
|
||||
NA
|
||||
== 516
|
||||
|
||||
NR
|
||||
== 520
|
||||
|
||||
NP
|
||||
== 524
|
||||
|
||||
NL
|
||||
== 528
|
||||
|
||||
NC
|
||||
== 540
|
||||
|
||||
NZ
|
||||
== 554
|
||||
|
||||
NI
|
||||
== 558
|
||||
|
||||
NE
|
||||
== 562
|
||||
|
||||
NG
|
||||
== 566
|
||||
|
||||
NU
|
||||
== 570
|
||||
|
||||
NF
|
||||
== 574
|
||||
|
||||
MP
|
||||
== 580
|
||||
|
||||
NO
|
||||
== 578
|
||||
|
||||
OM
|
||||
== 512
|
||||
|
||||
PK
|
||||
== 586
|
||||
|
||||
PW
|
||||
== 585
|
||||
|
||||
#PS
|
||||
#== 275
|
||||
|
||||
PA
|
||||
== 591
|
||||
|
||||
PG
|
||||
== 598
|
||||
|
||||
PY
|
||||
== 600
|
||||
|
||||
PE
|
||||
== 604
|
||||
|
||||
PH
|
||||
== 608
|
||||
|
||||
PN
|
||||
== 612
|
||||
|
||||
PL
|
||||
== 616
|
||||
|
||||
PT
|
||||
== 620
|
||||
|
||||
PR
|
||||
== 630
|
||||
|
||||
QA
|
||||
== 634
|
||||
|
||||
RE
|
||||
== 638
|
||||
|
||||
RO
|
||||
== 642
|
||||
|
||||
RU
|
||||
== 643
|
||||
|
||||
RW
|
||||
== 646
|
||||
|
||||
BL
|
||||
== 652
|
||||
|
||||
SH
|
||||
== 654
|
||||
|
||||
KN
|
||||
== 659
|
||||
|
||||
LC
|
||||
== 662
|
||||
|
||||
MF
|
||||
== 663
|
||||
|
||||
PM
|
||||
== 666
|
||||
|
||||
VC
|
||||
== 670
|
||||
|
||||
WS
|
||||
== 882
|
||||
|
||||
SM
|
||||
== 674
|
||||
|
||||
ST
|
||||
== 678
|
||||
|
||||
SA
|
||||
== 682
|
||||
|
||||
SN
|
||||
== 686
|
||||
|
||||
RS
|
||||
== 688
|
||||
|
||||
SC
|
||||
== 690
|
||||
|
||||
SL
|
||||
== 694
|
||||
|
||||
SG
|
||||
== 702
|
||||
|
||||
SX
|
||||
== 534
|
||||
|
||||
SK
|
||||
== 703
|
||||
|
||||
SI
|
||||
== 705
|
||||
|
||||
SB
|
||||
== 90
|
||||
|
||||
SO
|
||||
== 706
|
||||
|
||||
ZA
|
||||
== 710
|
||||
|
||||
GS
|
||||
== 239
|
||||
|
||||
ES
|
||||
== 724
|
||||
|
||||
LK
|
||||
== 144
|
||||
|
||||
SD
|
||||
== 736
|
||||
|
||||
SR
|
||||
== 740
|
||||
|
||||
#SJ
|
||||
#== 744
|
||||
|
||||
SZ
|
||||
== 748
|
||||
|
||||
SE
|
||||
== 752
|
||||
|
||||
CH
|
||||
== 756
|
||||
|
||||
SY
|
||||
== 760
|
||||
|
||||
TW
|
||||
== 158
|
||||
|
||||
TJ
|
||||
== 762
|
||||
|
||||
TZ
|
||||
== 834
|
||||
|
||||
TH
|
||||
== 764
|
||||
|
||||
TL
|
||||
== 626
|
||||
|
||||
TG
|
||||
== 768
|
||||
|
||||
TK
|
||||
== 772
|
||||
|
||||
TO
|
||||
== 776
|
||||
|
||||
TT
|
||||
== 780
|
||||
|
||||
TN
|
||||
== 788
|
||||
|
||||
TR
|
||||
== 792
|
||||
|
||||
TM
|
||||
== 795
|
||||
|
||||
TC
|
||||
== 796
|
||||
|
||||
TV
|
||||
== 798
|
||||
|
||||
UG
|
||||
== 800
|
||||
|
||||
UA
|
||||
== 804
|
||||
|
||||
AE
|
||||
== 784
|
||||
|
||||
GB
|
||||
== 826
|
||||
|
||||
US
|
||||
== 840
|
||||
|
||||
#UM
|
||||
#== 581
|
||||
|
||||
UY
|
||||
== 858
|
||||
|
||||
UZ
|
||||
== 860
|
||||
|
||||
VU
|
||||
== 548
|
||||
|
||||
VE
|
||||
== 862
|
||||
|
||||
VN
|
||||
== 704
|
||||
|
||||
VG
|
||||
== 92
|
||||
|
||||
VI
|
||||
== 850
|
||||
|
||||
WF
|
||||
== 876
|
||||
|
||||
EH
|
||||
== 732
|
||||
|
||||
YE
|
||||
== 887
|
||||
|
||||
ZM
|
||||
== 894
|
||||
|
||||
ZW
|
||||
== 716
|
|
@ -7,88 +7,100 @@
|
|||
#include <engine/graphics.h>
|
||||
#include <engine/storage.h>
|
||||
#include <engine/textrender.h>
|
||||
#include <engine/external/json-parser/json.h>
|
||||
#include <engine/shared/config.h>
|
||||
#include <engine/shared/linereader.h>
|
||||
|
||||
#include "countryflags.h"
|
||||
|
||||
|
||||
void CCountryFlags::LoadCountryflagsIndexfile()
|
||||
{
|
||||
IOHANDLE File = Storage()->OpenFile("countryflags/index.txt", IOFLAG_READ, IStorage::TYPE_ALL);
|
||||
// read file data into buffer
|
||||
IOHANDLE File = Storage()->OpenFile("countryflags/index.json", IOFLAG_READ, IStorage::TYPE_ALL);
|
||||
if(!File)
|
||||
{
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", "couldn't open index file");
|
||||
return;
|
||||
}
|
||||
int FileSize = (int)io_length(File);
|
||||
char *pFileData = (char *)mem_alloc(FileSize+1, 1);
|
||||
io_read(File, pFileData, FileSize);
|
||||
pFileData[FileSize] = 0;
|
||||
io_close(File);
|
||||
|
||||
char aOrigin[128];
|
||||
CLineReader LineReader;
|
||||
LineReader.Init(File);
|
||||
char *pLine;
|
||||
while((pLine = LineReader.Get()))
|
||||
// parse json data
|
||||
json_settings JsonSettings;
|
||||
mem_zero(&JsonSettings, sizeof(JsonSettings));
|
||||
char aError[256];
|
||||
json_value *pJsonData = json_parse_ex(&JsonSettings, pFileData, aError);
|
||||
if(pJsonData == 0)
|
||||
{
|
||||
if(!str_length(pLine) || pLine[0] == '#') // skip empty lines and comments
|
||||
continue;
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aError);
|
||||
return;
|
||||
}
|
||||
|
||||
str_copy(aOrigin, pLine, sizeof(aOrigin));
|
||||
char *pReplacement = LineReader.Get();
|
||||
if(!pReplacement)
|
||||
// extract data
|
||||
const json_value &rInit = (*pJsonData)["country codes"];
|
||||
if(rInit.type == json_object)
|
||||
{
|
||||
enum
|
||||
{
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", "unexpected end of index file");
|
||||
break;
|
||||
}
|
||||
|
||||
if(pReplacement[0] != '=' || pReplacement[1] != '=' || pReplacement[2] != ' ')
|
||||
NUM_INDICES = 2,
|
||||
};
|
||||
char *paIndices[NUM_INDICES] = {"custom", "ISO 3166-1"};
|
||||
for(int Index = 0; Index < NUM_INDICES; ++Index)
|
||||
{
|
||||
char aBuf[128];
|
||||
str_format(aBuf, sizeof(aBuf), "malform replacement for index '%s'", aOrigin);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aBuf);
|
||||
continue;
|
||||
}
|
||||
|
||||
int CountryCode = str_toint(pReplacement+3);
|
||||
if(CountryCode < CODE_LB || CountryCode > CODE_UB)
|
||||
{
|
||||
char aBuf[128];
|
||||
str_format(aBuf, sizeof(aBuf), "country code '%i' not within valid code range [%i..%i]", CountryCode, CODE_LB, CODE_UB);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aBuf);
|
||||
continue;
|
||||
}
|
||||
|
||||
// load the graphic file
|
||||
char aBuf[128];
|
||||
CImageInfo Info;
|
||||
if(g_Config.m_ClLoadCountryFlags)
|
||||
{
|
||||
str_format(aBuf, sizeof(aBuf), "countryflags/%s.png", aOrigin);
|
||||
if(!Graphics()->LoadPNG(&Info, aBuf, IStorage::TYPE_ALL))
|
||||
const json_value &rStart = rInit[paIndices[Index]];
|
||||
if(rStart.type == json_array)
|
||||
{
|
||||
char aMsg[128];
|
||||
str_format(aMsg, sizeof(aMsg), "failed to load '%s'", aBuf);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aMsg);
|
||||
continue;
|
||||
for(int i = 0; i < rStart.u.array.length; ++i)
|
||||
{
|
||||
char aBuf[64];
|
||||
|
||||
// validate country code
|
||||
int CountryCode = (long)rStart[i]["code"];
|
||||
if(CountryCode < CODE_LB || CountryCode > CODE_UB)
|
||||
{
|
||||
str_format(aBuf, sizeof(aBuf), "country code '%i' not within valid code range [%i..%i]", CountryCode, CODE_LB, CODE_UB);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aBuf);
|
||||
continue;
|
||||
}
|
||||
|
||||
// add entry
|
||||
const char *pCountryName = rStart[i]["id"];
|
||||
CCountryFlag CountryFlag;
|
||||
CountryFlag.m_CountryCode = CountryCode;
|
||||
str_copy(CountryFlag.m_aCountryCodeString, pCountryName, sizeof(CountryFlag.m_aCountryCodeString));
|
||||
if(g_Config.m_ClLoadCountryFlags)
|
||||
{
|
||||
// load the graphic file
|
||||
CImageInfo Info;
|
||||
str_format(aBuf, sizeof(aBuf), "countryflags/%s.png", pCountryName);
|
||||
if(!Graphics()->LoadPNG(&Info, aBuf, IStorage::TYPE_ALL))
|
||||
{
|
||||
char aMsg[64];
|
||||
str_format(aMsg, sizeof(aMsg), "failed to load '%s'", aBuf);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aMsg);
|
||||
continue;
|
||||
}
|
||||
CountryFlag.m_Texture = Graphics()->LoadTextureRaw(Info.m_Width, Info.m_Height, Info.m_Format, Info.m_pData, Info.m_Format, 0);
|
||||
mem_free(Info.m_pData);
|
||||
}
|
||||
m_aCountryFlags.add_unsorted(CountryFlag);
|
||||
|
||||
// print message
|
||||
if(g_Config.m_Debug)
|
||||
{
|
||||
str_format(aBuf, sizeof(aBuf), "loaded country flag '%s'", pCountryName);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aBuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add entry
|
||||
CCountryFlag CountryFlag;
|
||||
CountryFlag.m_CountryCode = CountryCode;
|
||||
str_copy(CountryFlag.m_aCountryCodeString, aOrigin, sizeof(CountryFlag.m_aCountryCodeString));
|
||||
if(g_Config.m_ClLoadCountryFlags)
|
||||
{
|
||||
CountryFlag.m_Texture = Graphics()->LoadTextureRaw(Info.m_Width, Info.m_Height, Info.m_Format, Info.m_pData, Info.m_Format, 0);
|
||||
mem_free(Info.m_pData);
|
||||
}
|
||||
|
||||
if(g_Config.m_Debug)
|
||||
{
|
||||
str_format(aBuf, sizeof(aBuf), "loaded country flag '%s'", aOrigin);
|
||||
Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "countryflags", aBuf);
|
||||
}
|
||||
m_aCountryFlags.add_unsorted(CountryFlag);
|
||||
}
|
||||
io_close(File);
|
||||
|
||||
// clean up
|
||||
json_value_free(pJsonData);
|
||||
m_aCountryFlags.sort_range();
|
||||
|
||||
// find index of default item
|
||||
|
|
Loading…
Reference in a new issue