Commit 80eade80 authored by fallenstardust's avatar fallenstardust
parents af4262ba 8b05da86
...@@ -162,15 +162,16 @@ public interface Constants { ...@@ -162,15 +162,16 @@ public interface Constants {
String ID1 = "[versionname]"; String ID1 = "[versionname]";
String ID2 = "[download_link]"; String ID2 = "[download_link]";
String ID3 = "#pre_release_code"; String ID3 = "#pre_release_code";
String URL_YGO233_DOWNLOAD_LINK = "https://ygo233.com/download/ygomobile"; //String URL_YGO233_DOWNLOAD_LINK = "https://ygo233.com/download/ygomobile";
String URL_YGO233_ADVANCE = "https://ygo233.com/pre#pre_release_cards"; String URL_YGO233_ADVANCE = "";//"https://ygo233.com/pre#pre_release_cards";//关闭233先行卡服务器,但不要删除该字段,许多未调用的遗留代码使用该contant
String URL_YGO233_DATAVER = "https://ygo233.com/pre/dataver"; String URL_YGO233_DATAVER = "https://cdn02.moecube.com:444/ygopro-super-pre/data/version.txt";
String URL_YGO233_FILE = "https://ygo233.com/pre/download-ygomobile"; String URL_PRE_CARD = "https://cdn02.moecube.com:444/ygopro-super-pre/data/test-release.json";
String URL_YGO233_FILE_ALT = "https://ygo233.com/pre/download-ygomobile/alt"; String URL_YGO233_FILE = "https://cdn02.moecube.com:444/ygopro-super-pre/archive/ygopro-super-pre.ypk";
String URL_YGO233_FILE_ALT = "https://cdn02.moecube.com:444/ygopro-super-pre/archive/ygopro-super-pre.ypk";
String URL_YGO233_BUG_REPORT = "https://ygo233.com/pre#faq"; String URL_YGO233_BUG_REPORT = "https://ygo233.com/pre#faq";
int PORT_YGO233 = 23333; int PORT_Mycard_Super_Pre_Server = 888;
String URL_YGO233_1 = "s1.ygo233.com"; String URL_Mycard_Super_Pre_Server = "mygo.superpre.pro";
String URL_YGO233_2 = "s2.ygo233.com"; //String URL_YGO233_2 = "s2.ygo233.com";
String SERVER_FILE = "server_list.xml"; String SERVER_FILE = "server_list.xml";
String SHARE_FILE = ".share_deck.png"; String SHARE_FILE = ".share_deck.png";
...@@ -258,5 +259,5 @@ public interface Constants { ...@@ -258,5 +259,5 @@ public interface Constants {
23923758, 69133798, 64583600, 13302026, 57511992, 90583279, 76352503, 77672444, 75311421, 12527118, 27657173, 50699850, 96084564, 86605515, 15464375, 15198996, 78077209, 64475743, 9627468, 62967433, 98462037, 5182107, 67853262, 8085950, 31464658, 8910240, 76823930, 97534104, 36629635, 33099732, 3121655, 39520293, 89974735, 65892310, 99742859, 47132793, 93347961, 30342076, 35026117, 62411811, 8505920, 34904525, 61398234, 97783338, 34771947, 60176682, 96661780, 33055499, 23446369, 50834074, 86239173, 22723778, 59712426, 85106525, 12501230, 58996839, 84384943, 11489642, 47873397, 84262395, 10666000, 47051709, 73046708, 19544412, 46939151, 72323266, 19322865, 45716579, 71101678, 8690387, 44094981, 71089030, 7473735, 33872334, 70366448, 6351147, 33750856, 25577965, 15635751, 42620460, 88124568, 86893702, 49858495, 5916510, 3103067, 38105306, 85758066, 33331231, 9726840, 36114945, 62219643, 9603252, 35098357, 89839552, 77590412, 88617904, 42228966, 86469231, 47077697, 84900597, 1683982, 64104037, 99370594, 61103515, 35705817, 20994205, 57499304, 83888009, 19272658, 56677752, 82661461, 19050066, 55554175, 70551291, 6556909, 43940008, 79339613, 5833312, 32828466, 78217065, 5611760, 31006879, 68490573, 4599182, 30983281, 67378935, 93777634, 30761649, 66156348, 92644052, 39049051, 65433790, 92428405, 28827503, 64211118, 91706817, 27104921, 54878729, 91262474, 26988374, 11020863, 58415502, 76076738, 84813516, 11808215, 47292920, 84797028, 10186633, 46570372, 83575471, 19963185, 46358784, 72843899, 18847598, 45236142, 71620241, 39396763, 75780818, 8025950, 44413654, 70508653, 7903368, 33391067, 70786111, 6180710, 32175429, 79663524, 5068132, 32453837, 68441986, 4836680, 31230289, 67725394, 94113093, 30118701, 62503746, 99991455, 25396150, 62480168, 98875863, 25273572, 61668670, 97053215, 24151924, 50546029, 37930737, 23099524, 59494222, 85888377, 59094601, 85182315, 11587414, 47961342, 73355951, 844056, 36848764, 72233469, 5829717, 31817415, 77202120, 4606229, 30095833, 77189532, 91479482, 34456146, 63013339, 32549749, 31600513, 53754104, 3574681, 39973386, 61322713, 66367984, 54594017, 2752099, 35756798, 61245403, 97639441, 34034150, 60023855, 97417863, 23812568, 60306277, 96795312, 22790910, 26050548, 52445243, 39943352, 65938950, 1259814, 91434602, 38529357, 64927055, 90312154, 37706769, 63101468, 90290572, 26684111, 41406613, 77895328, 3289027, 30284022, 76672730, 3167439, 39552584, 65956182, 66431519, 2526224, 38910263, 65305978, 91703676, 38798785, 64182380, 90681088, 19096726, 45484331, 82489470, 18973184, 44362883, 81767888, 17751597, 44146295, 70534340, 12877076, 58371671, 85766789, 11155484, 47149093, 84544192, 10938846, 49027020, 75416738, 12801833, 48805472, 75294187, 1688285, 48183890, 74577599, 98396890, 51779204, 98173209, 24662957, 50056656, 87451661, 62991792, 25784595, 13179234, 2347656, 48745395, 75730490, 1225009, 37629703, 74018812, 2511, 33407125, 69895264, 5380979, 32785578, 68779682, 5168381, 92107604, 29595202, 31562086, 68957034, 94445733, 66712905, 30430448, 67835547, 20618850, 93229151, 55990317, 92385016, 28373620, 49131917, 15130912, 41525660, 88919365, 14418464, 41802073, 87897777, 13291886, 40680521, 76075139, 49568943, 75952542, 38339996, 65734501, 91222209, 37617348, 64612053, 90000652, 37495766, 63899465, 99984170, 26372118, 62777823, 99162522, 25550531, 52645235, 98049934, 24434049, 51822687, 83827392, 20212491, 56700100, 82105704, 29599813, 55584558, 82983267, 18377261, 54862960, 81260679, 17255673, 44649322, 80044027, 16433136, 43527730, 79912449, 16310544, 42705243, 78199891, 5852388, 31241087, 67745632, 94130731, 30128445, 67523044, 93918159, 29302858, 66401502, 92895501, 29280200, 55688914, 91073013, 28168628, 54562327, 91951471, 27345070, 53330789, 80738884, 26223582, 53618197, 89016236, 15001940, 52495649, 88890658, 15388353, 41773061, 87778106, 14166715, 40551410, 87955518, 23288411, 55272555, 81677154, 18165869, 54550967, 81945676, 17943271, 43338320, 80722024, 16227633, 43215738, 79600447, 15005145, 42493140, 78888899, 15982593, 41371602, 77765207, 4160316, 40155014, 77543769, 3048768, 30432463, 76821171, 2815176, 39210885, 5605529, 42193638, 78598237, 4582942, 31971040, 61496006, 98881700, 34876719, 61374414, 97769122, 23153227, 60158866, 96546575, 23931679, 69436288, 95824983, 22819092, 58203736, 95602345, 21057444, 57541158, 84546257, 20934852, 57329501, 83723605, 19712214, 38082437, 1876841, 64487132, 37260946, 63265554, 90659259, 36148308, 63542003, 99937011, 25926710, 62320425, 98715423, 25209168, 51208877, 97692972, 24087580, 50486289, 97870394, 23965033, 59353647, 86758746, 11962031, 57357130, 84755744, 10140443, 57134592, 83533296, 19027895, 46412900, 22411609, 59805313, 85250352, 11654067, 58143766, 84138874, 11522479, 47921178, 83315222, 10300821, 46804536, 83293635, 19688343, 48784854, 67127799, 20001443, 56495147, 93490856, 29884951, 55273560, 82777208, 28762303, 55151012, 81555617, 53212882, 18940725, 54334420, 80433039, 17827173, 80611581, 16605586, 42090294, 89594399, 15983048, 42377643, 78362751, 14761450, 41255165, 73640163, 44818, 46033517, 72427512, 9822220, 35311929, 72305034, 8700633, 34198387, 71583486, 34072799, 6855503, 60461804, 33250142, 69248256, 96633955, 32138660, 69522668, 95911373, 21915012, 68300121, 94798725, 21293424, 67288539, 93672138, 56465981, 93850690, 29948294, 55343303, 82738008, 28126717, 55521751, 81615450, 17000165, 54408264, 80893872, 17888577, 53286626, 89771220, 16165939, 42560034, 89558743, 15943341, 41348446, 78836195, 14821890, 41215808, 77610503, 4008212, 40493210, 16598965, 43986064, 79371769, 20295753, 56790702, 82184400, 25573115, 51578214, 88962829, 14357527, 50855622, 87240371, 13234975, 40633084, 93612434, 7987191, 20071842, 46123974, 31699677, 77683371, 3078380, 30576089, 66961194, 3355732, 39354437, 66749546, 92133240, 38628859, 65626958, 91011603, 28406301, 64804316, 90299015, 27383719, 53782828, 90176467, 26561172, 52566270, 99054885, 25449584, 52843699, 88232397, 24226942, 51611041, 87116749, 14504454, 50599453, 86993168, 13382806, 49776811, 86271510, 12266229, 48654323, 85059922, 11443677, 48832775, 74936480, 11321089, 47710198, 73104892, 109401, 46593546, 73082255, 9486959, 35871958, 72860663, 8264361, 35659410, 71143015, 7142724, 34536828, 60921537, 7320132, 33814281, 69809989, 96203584, 32692693, 69087397, 95471006, 21570001, 64964750, 90359458, 27753563, 53742162, 99137266, 26631975, 52020510, 99414629, 25419323, 52807032, 28292031, 64797746, 91781484, 27170599, 54564198, 90969892, 26357901, 53442500, 84462118, 10851853, 57946551, 83340560, 19739265, 82128978, 19516687, 45001322, 71406430, 18890039, 44889144, 16312943, 21949879, 58938528, 84332527, 21727231, 57111330, 83610035, 10604644, 56099748, 83488497, 19882096, 46877100, 82361809, 18760514, 45154513, 71549257, 18548966, 44932065, 70427670, 17825378, 43210483, 70204022, 6609736, 42198835, 79582540, 5577149, 52253888, 32975247, 78360952, 4754691, 31259606, 67248304, 4632019, 30037118, 66425726, 3410461, 39915560, 66309175, 92798873, 38192988, 65187687, 91575236, 24070330, 60465049, 97453744, 23848752, 59242457, 96637156, 22125101, 59120809, 95515518, 21903613, 58308221, 84792926, 21887075, 57285770, 83670388, 10065487, 56063182, 83558891, 19942835, 45337544, 82735249, 18720257, 45115956, 81613061, 17008760, 44092304, 70491413, 17885118, 43270827, 79775821, 6763530, 42158279, 79552283, 5941982, 32335697, 78420796, 4825390, 31213049, 7608148, 54656181, 80040886, 26435595, 53923690, 89328238, 52707042, 88106656, 15590355, 41085464, 88083109, 14478717, 72309040, 13256226, 40740224, 76145933, 13533678, 49928686, 75922381, 2311090, 48806195, 75290703, 1295442, 37683547, 74078255, 37961969, 572850, 73956664, 9350312, 36745317, 62133026, 9238125, 35622739, 61011438, 98416533, 34800281, 1855886, 37343995, 63748694, 132308, 36521307, 63526052, 99910751, 35405755, 62803464, 98898163, 35283277, 61681816, 94076521, 20560620, 66569334, 93953933, 29348048, 56733747, 92731385, 28226490, 55610199, 81019803, 28403802, 54498517, 80993256, 27381364, 53776969, 80170678, 16169772, 89058026, 52553471, 15443125, 42431833, 88836438, 14220547, 41619242, 77103950, 14108995, 40597694, 76981308, 13386407, 49370016, 76869711, 2263869, 49658464, 75047173, 1041278, 38436986, 74920585, 1329620, 37313338, 63708033, 197042, 36591747, 63086455, 9070454, 35479109, 84366728, 11765832, 47759571, 73244186, 10632284, 46037983, 73421698, 9416697, 46815301, 8794055, 45792753, 3259760, 71187462, 8571567, 34976176, 70465810, 7459919, 33854624, 60242223, 6637331, 32731036, 69120785, 95515789, 32909498, 68304193, 94392192, 31887806, 67282505, 94670654, 20065259, 66069967, 93454062, 29942771, 56347375, 92332424, 28720123, 55125728, 81519836, 28004531, 54092240, 12061457, 81497285, 27882993, 53270092, 80275707, 16769305, 53154400, 89552119, 15947754, 42932862, 84330567, 11825276, 47219274, 73218989, 10602628, 46057733, 73542331, 9940036, 45935145, 72329844, 8728498, 45112597, 71607202, 7602800, 34090915, 70485614, 7889323, 33878367, 60362066, 6767771, 32152870, 69540484, 95545183, 32939238, 8428836, 34813545, 71817640, 7206349, 34690953, 60095092, 6589707, 33578406, 69973414, 96367119, 32756828, 68250822, 95245571, 21639276, 68038375, 94423983, 20417688, 67906797, 4472318, 40460013, 77855162, 30748475, 76133574, 3137279, 39522887, 65910922, 2405631, 38409239, 65898344, 73478096, 863795, 46261704, 72656408, 5141117, 31149212, 78534861, 4928565, 30327674, 77312273, 3806388, 30291086, 66699781, 3084730, 39078434, 65477143, 92962242, 38356857, 65351555, 91749600, 27134209, 64538914, 90027012, 27012717, 53416326, 99801464, 26259179, 52254878, 99748883, 25137581, 51522296, 88926295, 24915933, 51409648, 87804747, 13298352, 50687050, 86682165, 13076804, 49565413, 85969517, 12954226, 48348921, 85747929, 11132674, 48626373, 74615388, 10019086, 47404795, 73898890, 897409, 46382143, 72776252, 9175957, 35569555, 72554664, 8953369, 34447918, 71832012, 7236721, 34225426, 60619435, 6004133, 33503878, 9597987, 36982581, 72386290, 8775395, 35269904, 61264008, 8653757, 34047456, 60442460, 7436169, 33925864, 60329973, 92714517, 39103226, 65107325, 91592030, 61845881, 97240499, 24634594, 60623203, 96127902, 59900655, 96305350, 22390469, 58884063, 95283172, 21677871, 23512906, 20455229, 57940938, 83334932, 10333641, 56727340, 82112494, 19510093, 45005708, 82090807, 18494511, 45883110, 71277255, 17272964, 44760562, 70155677, 17550376, 43944080, 79933029, 6327734, 42822433, 79210531, 5205146, 31600845, 78098950, 4483598, 31987203, 67972302, 3361010, 30765615, 66150724, 3248469, 39643167, 65037172, 92422871, 38811586, 65815684, 91300233, 28798938, 64193046, 90587641, 27572350, 53971455, 90465153, 22850702, 58858807, 95243515, 21637210, 58036229, 84521924, 20515672, 57900671, 83308376, 10793085, 56787189, 82286798, 19671433, 45065541, 82460246, 18458255, 44843954, 21347668, 57736667, 84121302, 10125011, 56510115, 83008724, 19403423, 46497537, 82886276, 19271881, 45675980, 71164684, 18158393, 44553392, 71948047, 7336745, 43331750, 70825459, 6214163, 43618262, 66736715, 93125329, 29510428, 65914127, 91323605, 92003832, 28497830, 65892585, 91286284, 27275398, 54670997, 90164606, 15845914, 60283232, 97682931, 23076639, 55461744, 92565383, 28954097, 55349196, 81743801, 27132400, 54126514, 80621253, 27015862, 53404966, 89809665, 16893370, 52382379, 89776023, 15171722, 41165831, 88554436, 14959144, 41443249, 77832858, 13836592, 40221691, 76615300, 13014905, 49109013, 76593718, 2992467, 48386462, 75771170, 1769875, 38264974, 74659582, 43227, 821049, 36320744, 62714453, 9709452, 35103106, 62592805, 98986900, 34481518, 61470213, 97864322, 24269961, 63136489, 99531088, 36920182, 62314831, 98319530, 25807544, 61292243, 98696958, 24081957, 61070601, 97474300, 23969415, 50357013, 96352712, 23746827, 59131526, 22024279, 58019984, 85407683, 11802691, 57296396, 84281045, 10780049, 53174748, 89569453, 15967552, 42952160, 88346805, 24454387, 51849482, 87837090, 24232799, 50727844, 86111442, 13510157, 59504256, 86999951, 12397569, 58882608, 85277313, 37442336, 63436931, 653675, 36742774, 85520170, 14513273, 41908872, 77392987, 14391625, 40785230, 72270339, 9674034, 45663742, 12058741, 48452496, 84941194, 11335209, 47330808, 74725513, 10113611, 46518210, 73602965, 9091064, 46485778, 72880377, 9275482, 35263180, 71768839, 8152834, 34541543, 71545247, 7930346, 33325951, 60823690, 6218704, 33202303, 69601012, 95095116, 32480825, 68989420, 95973569, 21368273, 67752972, 94151981, 20145685, 67630394, 93039339, 29423048, 56818742, 92812851, 29301450, 55795155, 82190203, 28189908, 54573517, 81978611, 17462320, 54851325, 80845034, 16240772, 53639887, 89023486, 16528181, 42516299, 88901994, 15306543, 41790641, 78789356, 14283055, 40678060, 77066768, 3461403, 40456412, 76840111, 2339825, 39733924, 75728539, 2116237, 38511382, 74906081, 1490690, 33499794, 60883493, 6278008, 33676146 23923758, 69133798, 64583600, 13302026, 57511992, 90583279, 76352503, 77672444, 75311421, 12527118, 27657173, 50699850, 96084564, 86605515, 15464375, 15198996, 78077209, 64475743, 9627468, 62967433, 98462037, 5182107, 67853262, 8085950, 31464658, 8910240, 76823930, 97534104, 36629635, 33099732, 3121655, 39520293, 89974735, 65892310, 99742859, 47132793, 93347961, 30342076, 35026117, 62411811, 8505920, 34904525, 61398234, 97783338, 34771947, 60176682, 96661780, 33055499, 23446369, 50834074, 86239173, 22723778, 59712426, 85106525, 12501230, 58996839, 84384943, 11489642, 47873397, 84262395, 10666000, 47051709, 73046708, 19544412, 46939151, 72323266, 19322865, 45716579, 71101678, 8690387, 44094981, 71089030, 7473735, 33872334, 70366448, 6351147, 33750856, 25577965, 15635751, 42620460, 88124568, 86893702, 49858495, 5916510, 3103067, 38105306, 85758066, 33331231, 9726840, 36114945, 62219643, 9603252, 35098357, 89839552, 77590412, 88617904, 42228966, 86469231, 47077697, 84900597, 1683982, 64104037, 99370594, 61103515, 35705817, 20994205, 57499304, 83888009, 19272658, 56677752, 82661461, 19050066, 55554175, 70551291, 6556909, 43940008, 79339613, 5833312, 32828466, 78217065, 5611760, 31006879, 68490573, 4599182, 30983281, 67378935, 93777634, 30761649, 66156348, 92644052, 39049051, 65433790, 92428405, 28827503, 64211118, 91706817, 27104921, 54878729, 91262474, 26988374, 11020863, 58415502, 76076738, 84813516, 11808215, 47292920, 84797028, 10186633, 46570372, 83575471, 19963185, 46358784, 72843899, 18847598, 45236142, 71620241, 39396763, 75780818, 8025950, 44413654, 70508653, 7903368, 33391067, 70786111, 6180710, 32175429, 79663524, 5068132, 32453837, 68441986, 4836680, 31230289, 67725394, 94113093, 30118701, 62503746, 99991455, 25396150, 62480168, 98875863, 25273572, 61668670, 97053215, 24151924, 50546029, 37930737, 23099524, 59494222, 85888377, 59094601, 85182315, 11587414, 47961342, 73355951, 844056, 36848764, 72233469, 5829717, 31817415, 77202120, 4606229, 30095833, 77189532, 91479482, 34456146, 63013339, 32549749, 31600513, 53754104, 3574681, 39973386, 61322713, 66367984, 54594017, 2752099, 35756798, 61245403, 97639441, 34034150, 60023855, 97417863, 23812568, 60306277, 96795312, 22790910, 26050548, 52445243, 39943352, 65938950, 1259814, 91434602, 38529357, 64927055, 90312154, 37706769, 63101468, 90290572, 26684111, 41406613, 77895328, 3289027, 30284022, 76672730, 3167439, 39552584, 65956182, 66431519, 2526224, 38910263, 65305978, 91703676, 38798785, 64182380, 90681088, 19096726, 45484331, 82489470, 18973184, 44362883, 81767888, 17751597, 44146295, 70534340, 12877076, 58371671, 85766789, 11155484, 47149093, 84544192, 10938846, 49027020, 75416738, 12801833, 48805472, 75294187, 1688285, 48183890, 74577599, 98396890, 51779204, 98173209, 24662957, 50056656, 87451661, 62991792, 25784595, 13179234, 2347656, 48745395, 75730490, 1225009, 37629703, 74018812, 2511, 33407125, 69895264, 5380979, 32785578, 68779682, 5168381, 92107604, 29595202, 31562086, 68957034, 94445733, 66712905, 30430448, 67835547, 20618850, 93229151, 55990317, 92385016, 28373620, 49131917, 15130912, 41525660, 88919365, 14418464, 41802073, 87897777, 13291886, 40680521, 76075139, 49568943, 75952542, 38339996, 65734501, 91222209, 37617348, 64612053, 90000652, 37495766, 63899465, 99984170, 26372118, 62777823, 99162522, 25550531, 52645235, 98049934, 24434049, 51822687, 83827392, 20212491, 56700100, 82105704, 29599813, 55584558, 82983267, 18377261, 54862960, 81260679, 17255673, 44649322, 80044027, 16433136, 43527730, 79912449, 16310544, 42705243, 78199891, 5852388, 31241087, 67745632, 94130731, 30128445, 67523044, 93918159, 29302858, 66401502, 92895501, 29280200, 55688914, 91073013, 28168628, 54562327, 91951471, 27345070, 53330789, 80738884, 26223582, 53618197, 89016236, 15001940, 52495649, 88890658, 15388353, 41773061, 87778106, 14166715, 40551410, 87955518, 23288411, 55272555, 81677154, 18165869, 54550967, 81945676, 17943271, 43338320, 80722024, 16227633, 43215738, 79600447, 15005145, 42493140, 78888899, 15982593, 41371602, 77765207, 4160316, 40155014, 77543769, 3048768, 30432463, 76821171, 2815176, 39210885, 5605529, 42193638, 78598237, 4582942, 31971040, 61496006, 98881700, 34876719, 61374414, 97769122, 23153227, 60158866, 96546575, 23931679, 69436288, 95824983, 22819092, 58203736, 95602345, 21057444, 57541158, 84546257, 20934852, 57329501, 83723605, 19712214, 38082437, 1876841, 64487132, 37260946, 63265554, 90659259, 36148308, 63542003, 99937011, 25926710, 62320425, 98715423, 25209168, 51208877, 97692972, 24087580, 50486289, 97870394, 23965033, 59353647, 86758746, 11962031, 57357130, 84755744, 10140443, 57134592, 83533296, 19027895, 46412900, 22411609, 59805313, 85250352, 11654067, 58143766, 84138874, 11522479, 47921178, 83315222, 10300821, 46804536, 83293635, 19688343, 48784854, 67127799, 20001443, 56495147, 93490856, 29884951, 55273560, 82777208, 28762303, 55151012, 81555617, 53212882, 18940725, 54334420, 80433039, 17827173, 80611581, 16605586, 42090294, 89594399, 15983048, 42377643, 78362751, 14761450, 41255165, 73640163, 44818, 46033517, 72427512, 9822220, 35311929, 72305034, 8700633, 34198387, 71583486, 34072799, 6855503, 60461804, 33250142, 69248256, 96633955, 32138660, 69522668, 95911373, 21915012, 68300121, 94798725, 21293424, 67288539, 93672138, 56465981, 93850690, 29948294, 55343303, 82738008, 28126717, 55521751, 81615450, 17000165, 54408264, 80893872, 17888577, 53286626, 89771220, 16165939, 42560034, 89558743, 15943341, 41348446, 78836195, 14821890, 41215808, 77610503, 4008212, 40493210, 16598965, 43986064, 79371769, 20295753, 56790702, 82184400, 25573115, 51578214, 88962829, 14357527, 50855622, 87240371, 13234975, 40633084, 93612434, 7987191, 20071842, 46123974, 31699677, 77683371, 3078380, 30576089, 66961194, 3355732, 39354437, 66749546, 92133240, 38628859, 65626958, 91011603, 28406301, 64804316, 90299015, 27383719, 53782828, 90176467, 26561172, 52566270, 99054885, 25449584, 52843699, 88232397, 24226942, 51611041, 87116749, 14504454, 50599453, 86993168, 13382806, 49776811, 86271510, 12266229, 48654323, 85059922, 11443677, 48832775, 74936480, 11321089, 47710198, 73104892, 109401, 46593546, 73082255, 9486959, 35871958, 72860663, 8264361, 35659410, 71143015, 7142724, 34536828, 60921537, 7320132, 33814281, 69809989, 96203584, 32692693, 69087397, 95471006, 21570001, 64964750, 90359458, 27753563, 53742162, 99137266, 26631975, 52020510, 99414629, 25419323, 52807032, 28292031, 64797746, 91781484, 27170599, 54564198, 90969892, 26357901, 53442500, 84462118, 10851853, 57946551, 83340560, 19739265, 82128978, 19516687, 45001322, 71406430, 18890039, 44889144, 16312943, 21949879, 58938528, 84332527, 21727231, 57111330, 83610035, 10604644, 56099748, 83488497, 19882096, 46877100, 82361809, 18760514, 45154513, 71549257, 18548966, 44932065, 70427670, 17825378, 43210483, 70204022, 6609736, 42198835, 79582540, 5577149, 52253888, 32975247, 78360952, 4754691, 31259606, 67248304, 4632019, 30037118, 66425726, 3410461, 39915560, 66309175, 92798873, 38192988, 65187687, 91575236, 24070330, 60465049, 97453744, 23848752, 59242457, 96637156, 22125101, 59120809, 95515518, 21903613, 58308221, 84792926, 21887075, 57285770, 83670388, 10065487, 56063182, 83558891, 19942835, 45337544, 82735249, 18720257, 45115956, 81613061, 17008760, 44092304, 70491413, 17885118, 43270827, 79775821, 6763530, 42158279, 79552283, 5941982, 32335697, 78420796, 4825390, 31213049, 7608148, 54656181, 80040886, 26435595, 53923690, 89328238, 52707042, 88106656, 15590355, 41085464, 88083109, 14478717, 72309040, 13256226, 40740224, 76145933, 13533678, 49928686, 75922381, 2311090, 48806195, 75290703, 1295442, 37683547, 74078255, 37961969, 572850, 73956664, 9350312, 36745317, 62133026, 9238125, 35622739, 61011438, 98416533, 34800281, 1855886, 37343995, 63748694, 132308, 36521307, 63526052, 99910751, 35405755, 62803464, 98898163, 35283277, 61681816, 94076521, 20560620, 66569334, 93953933, 29348048, 56733747, 92731385, 28226490, 55610199, 81019803, 28403802, 54498517, 80993256, 27381364, 53776969, 80170678, 16169772, 89058026, 52553471, 15443125, 42431833, 88836438, 14220547, 41619242, 77103950, 14108995, 40597694, 76981308, 13386407, 49370016, 76869711, 2263869, 49658464, 75047173, 1041278, 38436986, 74920585, 1329620, 37313338, 63708033, 197042, 36591747, 63086455, 9070454, 35479109, 84366728, 11765832, 47759571, 73244186, 10632284, 46037983, 73421698, 9416697, 46815301, 8794055, 45792753, 3259760, 71187462, 8571567, 34976176, 70465810, 7459919, 33854624, 60242223, 6637331, 32731036, 69120785, 95515789, 32909498, 68304193, 94392192, 31887806, 67282505, 94670654, 20065259, 66069967, 93454062, 29942771, 56347375, 92332424, 28720123, 55125728, 81519836, 28004531, 54092240, 12061457, 81497285, 27882993, 53270092, 80275707, 16769305, 53154400, 89552119, 15947754, 42932862, 84330567, 11825276, 47219274, 73218989, 10602628, 46057733, 73542331, 9940036, 45935145, 72329844, 8728498, 45112597, 71607202, 7602800, 34090915, 70485614, 7889323, 33878367, 60362066, 6767771, 32152870, 69540484, 95545183, 32939238, 8428836, 34813545, 71817640, 7206349, 34690953, 60095092, 6589707, 33578406, 69973414, 96367119, 32756828, 68250822, 95245571, 21639276, 68038375, 94423983, 20417688, 67906797, 4472318, 40460013, 77855162, 30748475, 76133574, 3137279, 39522887, 65910922, 2405631, 38409239, 65898344, 73478096, 863795, 46261704, 72656408, 5141117, 31149212, 78534861, 4928565, 30327674, 77312273, 3806388, 30291086, 66699781, 3084730, 39078434, 65477143, 92962242, 38356857, 65351555, 91749600, 27134209, 64538914, 90027012, 27012717, 53416326, 99801464, 26259179, 52254878, 99748883, 25137581, 51522296, 88926295, 24915933, 51409648, 87804747, 13298352, 50687050, 86682165, 13076804, 49565413, 85969517, 12954226, 48348921, 85747929, 11132674, 48626373, 74615388, 10019086, 47404795, 73898890, 897409, 46382143, 72776252, 9175957, 35569555, 72554664, 8953369, 34447918, 71832012, 7236721, 34225426, 60619435, 6004133, 33503878, 9597987, 36982581, 72386290, 8775395, 35269904, 61264008, 8653757, 34047456, 60442460, 7436169, 33925864, 60329973, 92714517, 39103226, 65107325, 91592030, 61845881, 97240499, 24634594, 60623203, 96127902, 59900655, 96305350, 22390469, 58884063, 95283172, 21677871, 23512906, 20455229, 57940938, 83334932, 10333641, 56727340, 82112494, 19510093, 45005708, 82090807, 18494511, 45883110, 71277255, 17272964, 44760562, 70155677, 17550376, 43944080, 79933029, 6327734, 42822433, 79210531, 5205146, 31600845, 78098950, 4483598, 31987203, 67972302, 3361010, 30765615, 66150724, 3248469, 39643167, 65037172, 92422871, 38811586, 65815684, 91300233, 28798938, 64193046, 90587641, 27572350, 53971455, 90465153, 22850702, 58858807, 95243515, 21637210, 58036229, 84521924, 20515672, 57900671, 83308376, 10793085, 56787189, 82286798, 19671433, 45065541, 82460246, 18458255, 44843954, 21347668, 57736667, 84121302, 10125011, 56510115, 83008724, 19403423, 46497537, 82886276, 19271881, 45675980, 71164684, 18158393, 44553392, 71948047, 7336745, 43331750, 70825459, 6214163, 43618262, 66736715, 93125329, 29510428, 65914127, 91323605, 92003832, 28497830, 65892585, 91286284, 27275398, 54670997, 90164606, 15845914, 60283232, 97682931, 23076639, 55461744, 92565383, 28954097, 55349196, 81743801, 27132400, 54126514, 80621253, 27015862, 53404966, 89809665, 16893370, 52382379, 89776023, 15171722, 41165831, 88554436, 14959144, 41443249, 77832858, 13836592, 40221691, 76615300, 13014905, 49109013, 76593718, 2992467, 48386462, 75771170, 1769875, 38264974, 74659582, 43227, 821049, 36320744, 62714453, 9709452, 35103106, 62592805, 98986900, 34481518, 61470213, 97864322, 24269961, 63136489, 99531088, 36920182, 62314831, 98319530, 25807544, 61292243, 98696958, 24081957, 61070601, 97474300, 23969415, 50357013, 96352712, 23746827, 59131526, 22024279, 58019984, 85407683, 11802691, 57296396, 84281045, 10780049, 53174748, 89569453, 15967552, 42952160, 88346805, 24454387, 51849482, 87837090, 24232799, 50727844, 86111442, 13510157, 59504256, 86999951, 12397569, 58882608, 85277313, 37442336, 63436931, 653675, 36742774, 85520170, 14513273, 41908872, 77392987, 14391625, 40785230, 72270339, 9674034, 45663742, 12058741, 48452496, 84941194, 11335209, 47330808, 74725513, 10113611, 46518210, 73602965, 9091064, 46485778, 72880377, 9275482, 35263180, 71768839, 8152834, 34541543, 71545247, 7930346, 33325951, 60823690, 6218704, 33202303, 69601012, 95095116, 32480825, 68989420, 95973569, 21368273, 67752972, 94151981, 20145685, 67630394, 93039339, 29423048, 56818742, 92812851, 29301450, 55795155, 82190203, 28189908, 54573517, 81978611, 17462320, 54851325, 80845034, 16240772, 53639887, 89023486, 16528181, 42516299, 88901994, 15306543, 41790641, 78789356, 14283055, 40678060, 77066768, 3461403, 40456412, 76840111, 2339825, 39733924, 75728539, 2116237, 38511382, 74906081, 1490690, 33499794, 60883493, 6278008, 33676146
}; };
public final String officialExCardPackageName = "ygo233.com-pre-release.ypk";//官方扩展卡包ypk文件的名称 public final String officialExCardPackageName = "ygopro-super-pre.ypk";//官方扩展卡包ypk文件的名称
} }
...@@ -4,6 +4,9 @@ import net.kk.xml.annotations.XmlElement; ...@@ -4,6 +4,9 @@ import net.kk.xml.annotations.XmlElement;
import java.util.List; import java.util.List;
/**
* 将服务器列表写入xml文件时利用的PO类
*/
@XmlElement("servers") @XmlElement("servers")
public class ServerList { public class ServerList {
@XmlElement("version") @XmlElement("version")
...@@ -20,7 +23,7 @@ public class ServerList { ...@@ -20,7 +23,7 @@ public class ServerList {
} }
public ServerList(int version, List<ServerInfo> serverInfoList) { public ServerList(int version, List<ServerInfo> serverInfoList) {
mServerInfoList = serverInfoList; this.mServerInfoList = serverInfoList;
this.vercode = version; this.vercode = version;
} }
......
package cn.garymb.ygomobile.bean.events; package cn.garymb.ygomobile.bean.events;
/**
* 用于EventBus的事件类型。
*/
public class CardInfoEvent { public class CardInfoEvent {
public int position; public int position;
public boolean toMain; public boolean toMain;
......
package cn.garymb.ygomobile.bean.events; package cn.garymb.ygomobile.bean.events;
/** /**
* 用于EventBus发布的时间类型。 * 用于EventBus的事件类型。
*/ */
public class ExCardEvent { public class ExCardEvent {
public enum EventType { public enum EventType {
......
package cn.garymb.ygomobile.bean.events; package cn.garymb.ygomobile.bean.events;
import cn.garymb.ygomobile.bean.ServerInfo; import cn.garymb.ygomobile.bean.ServerInfo;
/**
* 用于EventBus的事件类型。
*/
public class ServerInfoEvent { public class ServerInfoEvent {
public int position; public int position;
public ServerInfo serverInfo;//为了让接受event的HomeFragment能获取到当前server的端口号等信息,加入该属性 public ServerInfo serverInfo;//为了让接受event的HomeFragment能获取到当前server的端口号等信息,加入该属性
......
...@@ -6,7 +6,7 @@ import android.os.Parcelable; ...@@ -6,7 +6,7 @@ import android.os.Parcelable;
/* /*
This class contains two types of card information:ex-card information and updating log, which is marked This class contains two types of card information:ex-card information and updating log, which is marked
by "type 0" and "type 1", respectively. by "type 0" and "type 1", respectively.
本类包括两种卡牌信息,先行卡信息和更新日志(分别由·type 0和type 1表示)。 本类包括两种卡牌信息,先行卡信息和更新日志(分别由·type 0和type 1表示)。
*/ */
public class ExCard implements Parcelable { public class ExCard implements Parcelable {
private String name; private String name;
......
...@@ -9,6 +9,7 @@ import com.google.android.material.tabs.TabLayout; ...@@ -9,6 +9,7 @@ import com.google.android.material.tabs.TabLayout;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.utils.LogUtil; import cn.garymb.ygomobile.utils.LogUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
public class ExCardActivity extends BaseActivity { public class ExCardActivity extends BaseActivity {
private static final String TAG = String.valueOf(ExCardActivity.class); private static final String TAG = String.valueOf(ExCardActivity.class);
...@@ -21,7 +22,7 @@ public class ExCardActivity extends BaseActivity { ...@@ -21,7 +22,7 @@ public class ExCardActivity extends BaseActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ex_card); setContentView(R.layout.activity_ex_card);
viewPager = findViewById(R.id.viewPager); viewPager = findViewById(R.id.viewPager);
viewPager.setOffscreenPageLimit(2); viewPager.setOffscreenPageLimit(1);
tabLayout = findViewById(R.id.packagetablayout); tabLayout = findViewById(R.id.packagetablayout);
createTabFragment(); createTabFragment();
...@@ -47,4 +48,20 @@ public class ExCardActivity extends BaseActivity { ...@@ -47,4 +48,20 @@ public class ExCardActivity extends BaseActivity {
return true; return true;
} }
private int backCounter = 0;
//todo 当未下载完先行卡就退出页面时,会导致软件错误退出。未来通过监听返回事件,判断下载状态,若正在下载则阻拦返回键。
//若发生错误或已完成,则不阻拦返回。
@Override
public void onBackPressed() {
if (ExCardListFragment.downloadState == ExCardListFragment.DownloadState.DOWNLOAD_ING) {
if (backCounter < 1) {
backCounter++;
YGOUtil.showTextToast("下载中,建议不要退出页面,再次按返回键可以退出页面");
return;
}
}
super.onBackPressed();
}
} }
package cn.garymb.ygomobile.ex_card;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class ExCardData {
@SerializedName("id")
@Expose
private Long id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("desc")
@Expose
private String desc;
@SerializedName("overallString")
@Expose
private String overallString;
@SerializedName("picUrl")
@Expose
private String picUrl;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getOverallString() {
return overallString;
}
public void setOverallString(String overallString) {
this.overallString = overallString;
}
public String getPicUrl() {
return picUrl;
}
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
}
\ No newline at end of file
package cn.garymb.ygomobile.ex_card; package cn.garymb.ygomobile.ex_card;
import static cn.garymb.ygomobile.Constants.URL_PRE_CARD;
import static cn.garymb.ygomobile.utils.StringUtils.mergeListDelimeter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.RequestBuilder;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.jsoup.Jsoup; import java.io.IOException;
import org.jsoup.nodes.Document; import java.lang.reflect.Type;
import org.jsoup.nodes.Element; import java.util.List;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.ImageLoader; import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.LogUtil; import cn.garymb.ygomobile.utils.LogUtil;
import cn.garymb.ygomobile.utils.OkhttpUtil;
import cn.garymb.ygomobile.utils.glide.GlideCompat; import cn.garymb.ygomobile.utils.glide.GlideCompat;
import okhttp3.Response;
public class ExCardListAdapter extends BaseQuickAdapter<ExCard, BaseViewHolder> { public class ExCardListAdapter extends BaseQuickAdapter<ExCardData, BaseViewHolder> {
private static final String TAG = ExCardListAdapter.class.getSimpleName(); private static final String TAG = ExCardListAdapter.class.getSimpleName();
private ImageLoader imageLoader; private ImageLoader imageLoader;
...@@ -34,78 +38,84 @@ public class ExCardListAdapter extends BaseQuickAdapter<ExCard, BaseViewHolder> ...@@ -34,78 +38,84 @@ public class ExCardListAdapter extends BaseQuickAdapter<ExCard, BaseViewHolder>
public void loadData() { public void loadData() {
final DialogPlus dialog_read_ex = DialogPlus.show(getContext(), null, getContext().getString(R.string.fetch_ex_card)); final DialogPlus dialog_read_ex = DialogPlus.show(getContext(), null, getContext().getString(R.string.fetch_ex_card));
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
//Connect to the website LogUtil.d(TAG, "start fetch");
Document document = Jsoup.connect(Constants.URL_YGO233_ADVANCE).get(); List<ExCardData> exCardDataList = null;
Element pre_card_content = document.getElementById("pre_release_cards"); try {
Element tbody = pre_card_content.getElementsByTag("tbody").get(0); Response response = OkhttpUtil.synchronousGet(URL_PRE_CARD, null, null);
Elements cards = tbody.getElementsByTag("tr"); String responseBodyString = response.body().string();
if (cards.size() > 5000) {//Considering the efficiency of html parse, if the size of Type listType = new TypeToken<List<ExCardData>>() {
// pre cards list is to large, return null directly. }.getType();
return null; Gson gson = new Gson();
}
ArrayList<ExCard> exCardList = new ArrayList<>(); // Convert JSON to Java object using Gson
for (Element card : cards) { exCardDataList = gson.fromJson(responseBodyString, listType);
Elements card_attributes = card.getElementsByTag("td");
String imageUrl = card_attributes.get(0).getElementsByTag("a").attr("href") + "!half";
String name = card_attributes.get(1).text(); } catch (IOException e) {
String description = card_attributes.get(2).text(); Log.e(TAG, "Error occured when fetching data from pre-card server");
ExCard exCard = new ExCard(name, imageUrl, description, 0); return null;
exCardList.add(exCard); }
} if (exCardDataList.isEmpty()) {
return null;
} else {
if (exCardList.isEmpty()) { return exCardDataList;
return null; }
} else {
return exCardList; })
} .fail((e) -> {
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
LogUtil.i(TAG, "webCrawler fail");
})
.done((exCardDataList) -> {
if (exCardDataList != null) {
LogUtil.i(TAG, "webCrawler done");
getData().clear();
addData(exCardDataList);
notifyDataSetChanged();
}
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
});
}).fail((e) -> { }
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
LogUtil.i(TAG, "webCrawler fail");
}).done(exCardList -> {
if (exCardList != null) {
LogUtil.i(TAG, "webCrawler done");
getData().clear(); private static Boolean isMonster(List<String> list) {
addData(exCardList); for (String data : list) {
notifyDataSetChanged(); if (data.equals("怪兽")) {
return true;
} }
if (dialog_read_ex.isShowing()) { }
try { return false;
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
});
} }
@Override @Override
protected void convert(BaseViewHolder helper, ExCard item) { protected void convert(BaseViewHolder helper, ExCardData item) {
helper.setText(R.id.ex_card_name, item.getName()); helper.setText(R.id.ex_card_name, item.getName());
helper.setText(R.id.ex_card_description, item.getDescription()); helper.setText(R.id.ex_card_description, item.getDesc());
helper.setText(R.id.ex_card_overall,item.getOverallString());
if (item.isUpdatingLog()) {
helper.setGone(R.id.ex_card_image, true); ImageView imageview = helper.getView(R.id.ex_card_image);
} else { //the function cn.garymb.ygomobile.loader.ImageLoader.bindT(...)
helper.setGone(R.id.ex_card_image, false); //cn.garymb.ygomobile.loader.ImageLoader.setDefaults(...)
ImageView imageview = helper.getView(R.id.ex_card_image); //is a private function,so I copied the content of it to here
//the function cn.garymb.ygomobile.loader.ImageLoader.bindT(...) RequestBuilder<Drawable> resource = GlideCompat.with(imageview.getContext()).load(item.getPicUrl());
//cn.garymb.ygomobile.loader.ImageLoader.setDefaults(...) resource.placeholder(R.drawable.unknown);
//is a private function,so I copied the content of it to here resource.error(R.drawable.unknown);
RequestBuilder<Drawable> resource = GlideCompat.with(imageview.getContext()).load(item.getImageUrl()); resource.into(imageview);
resource.placeholder(R.drawable.unknown);
resource.error(R.drawable.unknown);
resource.into(imageview);
}
} }
} }
package cn.garymb.ygomobile.ex_card; package cn.garymb.ygomobile.ex_card;
import static cn.garymb.ygomobile.Constants.URL_YGO233_ADVANCE;
import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE; import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE;
import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE_ALT; import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE_ALT;
import static cn.garymb.ygomobile.utils.DownloadUtil.TYPE_DOWNLOAD_EXCEPTION; import static cn.garymb.ygomobile.utils.DownloadUtil.TYPE_DOWNLOAD_EXCEPTION;
...@@ -17,7 +16,6 @@ import android.view.View; ...@@ -17,7 +16,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
...@@ -31,27 +29,25 @@ import org.greenrobot.eventbus.ThreadMode; ...@@ -31,27 +29,25 @@ import org.greenrobot.eventbus.ThreadMode;
import java.io.File; import java.io.File;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.events.ExCardEvent; import cn.garymb.ygomobile.bean.events.ExCardEvent;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.home.MainActivity; import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.utils.DownloadUtil; import cn.garymb.ygomobile.utils.DownloadUtil;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.LogUtil; import cn.garymb.ygomobile.utils.LogUtil;
import cn.garymb.ygomobile.utils.ServerUtil; import cn.garymb.ygomobile.utils.ServerUtil;
import cn.garymb.ygomobile.utils.SharedPreferenceUtil; import cn.garymb.ygomobile.utils.SharedPreferenceUtil;
import cn.garymb.ygomobile.utils.UnzipUtils;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
import ocgcore.DataManager; import ocgcore.DataManager;
public class ExCardListFragment extends Fragment implements View.OnClickListener { public class ExCardListFragment extends Fragment {
private static final String TAG = String.valueOf(ExCardListFragment.class); private static final String TAG = String.valueOf(ExCardListFragment.class);
private Context context; private Context context;
private View layoutView; private View layoutView;
private ExCardListAdapter mExCardListAdapter; private ExCardListAdapter mExCardListAdapter;
private RecyclerView mExCardListView; private RecyclerView mExCardListView;
private LinearLayout ll_Download;
private TextView textDownload; private TextView textDownload;
private int FailedCount; private int FailedCount;
...@@ -65,7 +61,7 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -65,7 +61,7 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
NO_DOWNLOAD NO_DOWNLOAD
} }
private DownloadState downloadState; public static DownloadState downloadState;
@Override @Override
...@@ -99,26 +95,24 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -99,26 +95,24 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
mExCardListView.setLayoutManager(linearLayoutManager); mExCardListView.setLayoutManager(linearLayoutManager);
mExCardListView.setAdapter(mExCardListAdapter); mExCardListView.setAdapter(mExCardListAdapter);
mExCardListAdapter.loadData(); mExCardListAdapter.loadData();
textDownload = layoutView.findViewById(R.id.text_download_prerelease); textDownload = layoutView.findViewById(R.id.text_download_precard);
ll_Download = layoutView.findViewById(R.id.btn_download_prerelease);
ll_Download.setOnClickListener(this);
changeDownloadText();
}
@Override LinearLayout clickLayout = layoutView.findViewById(R.id.layout_download_precard);
public void onClick(View v) { clickLayout.setOnClickListener(new View.OnClickListener() {
switch (v.getId()) { @Override
case R.id.btn_download_prerelease: public void onClick(View v) {
LogUtil.i(TAG, "start download"); LogUtil.i(TAG, "start download");
if (downloadState != DownloadState.DOWNLOAD_ING) { if (downloadState != DownloadState.DOWNLOAD_ING) {
downloadState = DownloadState.DOWNLOAD_ING; downloadState = DownloadState.DOWNLOAD_ING;
downloadfromWeb(URL_YGO233_FILE); downloadfromWeb(URL_YGO233_FILE);
} }
break; }
} });
changeDownloadText();
} }
/** /**
* 根据先行卡包状态改变按钮样式 * 根据先行卡包状态改变按钮样式
*/ */
...@@ -129,15 +123,16 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -129,15 +123,16 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
} else if (ServerUtil.exCardState == ServerUtil.ExCardState.NEED_UPDATE) { } else if (ServerUtil.exCardState == ServerUtil.ExCardState.NEED_UPDATE) {
textDownload.setText(R.string.Download); textDownload.setText(R.string.Download);
} else if (ServerUtil.exCardState == ServerUtil.ExCardState.ERROR) { } else if (ServerUtil.exCardState == ServerUtil.ExCardState.ERROR) {
Toast.makeText(getActivity(), R.string.ex_card_check_toast_message_iii, Toast.LENGTH_LONG).show(); /* 查询不到版本号时,提示toast */
WebActivity.open(getActivity(), getString(R.string.ex_card_list_title), URL_YGO233_ADVANCE); textDownload.setText(R.string.Download);
YGOUtil.showTextToast("error" + getString(R.string.ex_card_check_toast_message_iii));
//WebActivity.open(getActivity(), getString(R.string.ex_card_list_title), URL_YGO233_ADVANCE);
} else if (ServerUtil.exCardState == ServerUtil.ExCardState.UNCHECKED) { } else if (ServerUtil.exCardState == ServerUtil.ExCardState.UNCHECKED) {
//do nothing //do nothing
//状态UNCHECKED仅在app启动后调用哦你Create()之前短暂存在,所以该情况进行处理 //状态UNCHECKED仅在app启动后调用哦你Create()之前短暂存在,所以该情况进行处理
//the UNCHECKED state only exists temporarily before the check action, so we need not handle it. //the UNCHECKED state only exists temporarily before the check action, so we need not handle it.
} }
} }
//TODO eventbus receive event
@SuppressLint("HandlerLeak") @SuppressLint("HandlerLeak")
Handler handler = new Handler() { Handler handler = new Handler() {
...@@ -150,29 +145,31 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -150,29 +145,31 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
textDownload.setText(msg.arg1 + "%"); textDownload.setText(msg.arg1 + "%");
break; break;
case DownloadUtil.TYPE_DOWNLOAD_EXCEPTION: case DownloadUtil.TYPE_DOWNLOAD_EXCEPTION:
downloadState = DownloadState.NO_DOWNLOAD;
++FailedCount; ++FailedCount;
if (FailedCount <= 2) { if (FailedCount <= 2) {
Toast.makeText(getActivity(), R.string.Ask_to_Change_Other_Way, Toast.LENGTH_SHORT).show(); YGOUtil.showTextToast(getString(R.string.Ask_to_Change_Other_Way));
downloadfromWeb(URL_YGO233_FILE_ALT); downloadfromWeb(URL_YGO233_FILE_ALT);
} }
YGOUtil.showTextToast("error" + msg.obj); YGOUtil.showTextToast("error:" + getString(R.string.Download_Precard_Failed));
break; break;
case UnzipUtils.ZIP_READY: // case UnzipUtils.ZIP_READY:
textDownload.setText(R.string.title_use_ex); // textDownload.setText(R.string.title_use_ex);
break; // break;
case UnzipUtils.ZIP_UNZIP_OK: case DownloadUtil.TYPE_DOWNLOAD_OK:
downloadState = DownloadState.NO_DOWNLOAD;
/* 将先行服务器信息添加到服务器列表中 */ /* 将先行服务器信息添加到服务器列表中 */
String servername = ""; String servername = "";
//todo 改成用安卓的localization机制strings.xml
if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Chinese.code) if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Chinese.code)
servername = "23333先行服务器"; servername = "萌卡超先行服";
if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Korean.code) if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Korean.code)
servername = "YGOPRO ?? ?? ????"; servername = "Mycard Super-pre Server";
if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.English.code) if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.English.code)
servername = "Mercury23333 OCG/TCG Pre-release"; servername = "Mycard Super-pre Server";
if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Spanish.code) if (AppsSettings.get().getDataLanguage() == AppsSettings.languageEnum.Spanish.code)
servername = "Mercury23333 OCG/TCG Pre-release"; servername = "Mycard Super-pre Server";
AddServer(getActivity(), servername, "s1.ygo233.com", 23333, "Knight of Hanoi"); AddServer(getActivity(), servername, Constants.URL_Mycard_Super_Pre_Server, Constants.PORT_Mycard_Super_Pre_Server, "Knight of Hanoi");
//changeDownloadButton();在下载完成后,通过EventBus通知下载完成(加入用户点击下载后临时切出本fragment,又在下载完成后切回,通过eventbus能保证按钮样式正确更新 //changeDownloadButton();在下载完成后,通过EventBus通知下载完成(加入用户点击下载后临时切出本fragment,又在下载完成后切回,通过eventbus能保证按钮样式正确更新
/* 注意,要先更新版本号 */ /* 注意,要先更新版本号 */
...@@ -182,8 +179,7 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -182,8 +179,7 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
DataManager.get().load(true); DataManager.get().load(true);
Toast.makeText(context, R.string.ypk_installed, Toast.LENGTH_LONG).show(); YGOUtil.showTextToast(getString(R.string.ypk_installed));
LogUtil.i("webCrawler", "Ex-card package is installed"); LogUtil.i("webCrawler", "Ex-card package is installed");
/* 如果未开启先行卡设置,则跳转到设置页面 */ /* 如果未开启先行卡设置,则跳转到设置页面 */
...@@ -192,26 +188,11 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -192,26 +188,11 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
Intent startSetting = new Intent(context, MainActivity.class); Intent startSetting = new Intent(context, MainActivity.class);
startSetting.putExtra("flag", 4); startSetting.putExtra("flag", 4);
startActivity(startSetting); startActivity(startSetting);
Toast.makeText(context, R.string.ypk_go_setting, Toast.LENGTH_LONG).show(); YGOUtil.showTextToast(getString(R.string.ypk_go_setting));
} }
break; break;
case UnzipUtils.ZIP_UNZIP_EXCEPTION:
Toast.makeText(context, getString(R.string.install_failed_bcos) + msg.obj,
Toast.LENGTH_SHORT).show();
break;
// case HomeFragment.TYPE_GET_DATA_VER_OK:
// WebActivity.exCardVer = msg.obj.toString();
// String oldVer = SharedPreferenceUtil.getExpansionDataVer();
// if (!TextUtils.isEmpty(WebActivity.exCardVer)) {
// if (!WebActivity.exCardVer.equals(oldVer)) {
// //btn_download展示默认视图
// } else {
// btnDownload.setText(R.string.tip_redownload);
// }
// } else {
// showExNew();
// }
} }
} }
}; };
...@@ -228,29 +209,22 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -228,29 +209,22 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
private void downloadfromWeb(String fileUrl) { private void downloadfromWeb(String fileUrl) {
textDownload.setText("0%");//点击下载后,距离onDownloading触发要等几秒,这一延迟会造成软件响应慢的错觉,因此在下载函数开始就设置文本 textDownload.setText("0%");//点击下载后,距离onDownloading触发要等几秒,这一延迟会造成软件响应慢的错觉,因此在下载函数开始就设置文本
File file = new File(AppsSettings.get().getResourcePath() + "-preRlease.zip"); String path = AppsSettings.get().getExpansionsPath().getAbsolutePath();
String fileName = Constants.officialExCardPackageName;
File file = new File(path + "/" + fileName);
if (file.exists()) { if (file.exists()) {
/* 删除旧的先行卡包 */
FileUtils.deleteFile(file); FileUtils.deleteFile(file);
SharedPreferenceUtil.setExpansionDataVer(null);//删除先行卡后,更新版本状态
ServerUtil.exCardState = ServerUtil.ExCardState.NEED_UPDATE;
EventBus.getDefault().postSticky(new ExCardEvent(ExCardEvent.EventType.exCardPackageChange));//删除后,通知UI做更新
} }
DownloadUtil.get().download(fileUrl, file.getParent(), file.getName(), new DownloadUtil.OnDownloadListener() { DownloadUtil.get().download(fileUrl, path, fileName, new DownloadUtil.OnDownloadListener() {
@Override @Override
public void onDownloadSuccess(File file) { public void onDownloadSuccess(File file) {
downloadState = DownloadState.NO_DOWNLOAD;
Message message = new Message(); Message message = new Message();
message.what = UnzipUtils.ZIP_READY; message.what = DownloadUtil.TYPE_DOWNLOAD_OK;
try {
File ydks = new File(AppsSettings.get().getDeckDir());
File[] subYdks = ydks.listFiles();
for (File files : subYdks) {
if (files.getName().contains("-") && files.getName().contains(" new cards"))
files.delete();
}
UnzipUtils.upZipSelectFile(file, AppsSettings.get().getResourcePath(), ".ypk");
} catch (Exception e) {
message.what = UnzipUtils.ZIP_UNZIP_EXCEPTION;
} finally {
message.what = UnzipUtils.ZIP_UNZIP_OK;//TODO 不对吧,finally是一定执行,这样即使有exception也会发unzip_ok啊
}
handler.sendMessage(message); handler.sendMessage(message);
} }
...@@ -265,11 +239,11 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener ...@@ -265,11 +239,11 @@ public class ExCardListFragment extends Fragment implements View.OnClickListener
@Override @Override
public void onDownloadFailed(Exception e) { public void onDownloadFailed(Exception e) {
//下载失败后删除下载的文件 //下载失败后删除下载的文件
FileUtils.deleteFile(file); FileUtils.deleteFile(file);
Message message = new Message(); Message message = new Message();
message.what = TYPE_DOWNLOAD_EXCEPTION; message.what = TYPE_DOWNLOAD_EXCEPTION;
message.obj = e.toString();
handler.sendMessage(message); handler.sendMessage(message);
} }
}); });
......
...@@ -12,6 +12,9 @@ import java.util.List; ...@@ -12,6 +12,9 @@ import java.util.List;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
/**
* 旧版本用于展示先行卡更新日志的页面,暂不使用。
*/
public class ExCardLogAdapter extends BaseExpandableListAdapter { public class ExCardLogAdapter extends BaseExpandableListAdapter {
public ExCardLogAdapter(Context context) { public ExCardLogAdapter(Context context) {
......
...@@ -26,6 +26,9 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus; ...@@ -26,6 +26,9 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.LogUtil; import cn.garymb.ygomobile.utils.LogUtil;
/**
* 配合cn.garymb.ygomobile.ex_card.ExCardLogAdapter,实现展示先行卡更新日志的页面,暂不使用。
*/
public class ExCardLogFragment extends Fragment implements View.OnClickListener { public class ExCardLogFragment extends Fragment implements View.OnClickListener {
private static final String TAG = String.valueOf(ExCardLogFragment.class); private static final String TAG = String.valueOf(ExCardLogFragment.class);
private Context mContext; private Context mContext;
...@@ -92,7 +95,7 @@ public class ExCardLogFragment extends Fragment implements View.OnClickListener ...@@ -92,7 +95,7 @@ public class ExCardLogFragment extends Fragment implements View.OnClickListener
} }
}).fail((e) -> { }).fail((e) -> {
//ر쳣 //关闭异常
if (dialog_read_ex.isShowing()) { if (dialog_read_ex.isShowing()) {
try { try {
dialog_read_ex.dismiss(); dialog_read_ex.dismiss();
...@@ -111,7 +114,7 @@ public class ExCardLogFragment extends Fragment implements View.OnClickListener ...@@ -111,7 +114,7 @@ public class ExCardLogFragment extends Fragment implements View.OnClickListener
if (exCardLogList != null) { if (exCardLogList != null) {
LogUtil.i(TAG, "webCrawler parse html complete"); LogUtil.i(TAG, "webCrawler parse html complete");
} }
//ر쳣 //关闭异常
if (dialog_read_ex.isShowing()) { if (dialog_read_ex.isShowing()) {
try { try {
dialog_read_ex.dismiss(); dialog_read_ex.dismiss();
......
...@@ -29,15 +29,17 @@ public class ExPackageTabAdapter extends FragmentStatePagerAdapter { ...@@ -29,15 +29,17 @@ public class ExPackageTabAdapter extends FragmentStatePagerAdapter {
Fragment fragment = null; Fragment fragment = null;
if (position == 0) { if (position == 0) {
fragment = new ExCardListFragment(); fragment = new ExCardListFragment();
} else if (position == 1) {
fragment = new ExCardLogFragment();
} }
/* 目前只显示一个tab,未来可能添加其他tab */
// else if (position == 1) {
// fragment = new ExCardLogFragment();
// }
return fragment; return fragment;
} }
@Override @Override
public int getCount() { public int getCount() {
return 2; return 1;
} }
@Override @Override
...@@ -46,9 +48,10 @@ public class ExPackageTabAdapter extends FragmentStatePagerAdapter { ...@@ -46,9 +48,10 @@ public class ExPackageTabAdapter extends FragmentStatePagerAdapter {
if (position == 0) { if (position == 0) {
title = context.getString(R.string.ex_card_list_title); title = context.getString(R.string.ex_card_list_title);
} else if (position == 1) {
title = context.getString(R.string.ex_card_log_title);
} }
// else if (position == 1) {
// title = context.getString(R.string.ex_card_log_title);
// }
return title; return title;
} }
} }
...@@ -29,6 +29,7 @@ import ocgcore.enums.LimitType; ...@@ -29,6 +29,7 @@ import ocgcore.enums.LimitType;
* 包括LimitManager、CardManager、LimitList * 包括LimitManager、CardManager、LimitList
* LimitList负责判断禁止卡等 * LimitList负责判断禁止卡等
* field包括LimitManager、CardManager * field包括LimitManager、CardManager
* 未封装成单例,使用时要构造实例
*/ */
public class CardLoader implements ICardSearcher { public class CardLoader implements ICardSearcher {
private final LimitManager mLimitManager; private final LimitManager mLimitManager;
......
...@@ -307,7 +307,7 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene ...@@ -307,7 +307,7 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
} }
/** /**
* 根据同服务器状态设置展示列表中每项的颜色(服务器不可用就设置为灰色) * 根据同服务器状态设置展示列表中每项的颜色(服务器不可用就设置为灰色)
*/ */
private void changeColor() { private void changeColor() {
/* 同步设置服务器列表的状态,在syncLoadData()里更新recyclerview的数据,在更新数据时convert()方法自动更改item的颜色 */ /* 同步设置服务器列表的状态,在syncLoadData()里更新recyclerview的数据,在更新数据时convert()方法自动更改item的颜色 */
...@@ -794,15 +794,10 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene ...@@ -794,15 +794,10 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
// break; // break;
// } // }
if (ServerUtil.exCardState == ServerUtil.ExCardState.ERROR) { /* 查不到版本号也打开excard安卓原生activity */
WebActivity.open(getContext(), getString(R.string.action_download_expansions), Constants.URL_YGO233_ADVANCE); Intent exCardIntent = new Intent(getActivity(), ExCardActivity.class);
LogUtil.i(TAG, "cannot connect to ex card server, open webactivity"); startActivity(exCardIntent);
} else {
/* using Web crawler to extract the information of pre card */
LogUtil.i(TAG, "connect to ex card http server, open webactivity");
Intent exCardIntent = new Intent(getActivity(), ExCardActivity.class);
startActivity(exCardIntent);
}
break; break;
case R.id.action_help: { case R.id.action_help: {
final DialogPlus dialog = new DialogPlus(getContext()); final DialogPlus dialog = new DialogPlus(getContext());
......
...@@ -22,6 +22,7 @@ public class DownloadUtil { ...@@ -22,6 +22,7 @@ public class DownloadUtil {
private final OkHttpClient okHttpClient; private final OkHttpClient okHttpClient;
public static final int TYPE_DOWNLOAD_EXCEPTION = 1; public static final int TYPE_DOWNLOAD_EXCEPTION = 1;
public static final int TYPE_DOWNLOAD_ING = 2; public static final int TYPE_DOWNLOAD_ING = 2;
public static final int TYPE_DOWNLOAD_OK = 3;
//暂时关闭 //暂时关闭
private static final boolean ENABLE_CACHE = false; private static final boolean ENABLE_CACHE = false;
private static final Map<String, Call> cache = new HashMap<>(); private static final Map<String, Call> cache = new HashMap<>();
...@@ -83,8 +84,8 @@ public class DownloadUtil { ...@@ -83,8 +84,8 @@ public class DownloadUtil {
@Override @Override
public void onResponse(Call call, Response response) throws IOException { public void onResponse(Call call, Response response) throws IOException {
if(!response.isSuccessful()){ if (!response.isSuccessful()) {
listener.onDownloadFailed(new Exception("error:"+response.code())); listener.onDownloadFailed(new Exception("error:" + response.code()));
return; return;
} }
String contentLen = response.header("Content-Length"); String contentLen = response.header("Content-Length");
...@@ -104,10 +105,11 @@ public class DownloadUtil { ...@@ -104,10 +105,11 @@ public class DownloadUtil {
try { try {
is = response.body().byteStream(); is = response.body().byteStream();
long total = response.body().contentLength(); long total = response.body().contentLength();
if(contentLength > 0 && total != contentLength){ if (contentLength > 0 && total != contentLength) {
listener.onDownloadFailed(new Exception("file length[" + total + "] < " + contentLen)); listener.onDownloadFailed(new Exception("file length[" + total + "] < " + contentLen));
} else { } else {
out = new FileOutputStream(file); /* 入参为false时,向file覆盖写入 */
out = new FileOutputStream(file, false);
long sum = 0; long sum = 0;
while ((len = is.read(buf)) != -1) { while ((len = is.read(buf)) != -1) {
out.write(buf, 0, len); out.write(buf, 0, len);
...@@ -126,11 +128,11 @@ public class DownloadUtil { ...@@ -126,11 +128,11 @@ public class DownloadUtil {
IOUtils.close(is); IOUtils.close(is);
} }
if (saved) { if (saved) {
if (contentLength > 0 && file.length() < contentLength) { if (contentLength > 0 && file.length() < contentLength) {
listener.onDownloadFailed(new Exception("file length[" + file.length() + "] < " + contentLen)); listener.onDownloadFailed(new Exception("file length[" + file.length() + "] < " + contentLen));
} else { } else {
listener.onDownloadSuccess(file); listener.onDownloadSuccess(file);
} }
} }
if (ENABLE_CACHE) { if (ENABLE_CACHE) {
synchronized (cache) { synchronized (cache) {
......
...@@ -4,6 +4,7 @@ import android.text.TextUtils; ...@@ -4,6 +4,7 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -197,6 +198,25 @@ public class OkhttpUtil { ...@@ -197,6 +198,25 @@ public class OkhttpUtil {
client.newCall(request.build()).enqueue(callback); client.newCall(request.build()).enqueue(callback);
} }
public static Response synchronousGet(String address, Map<String, Object> map, String cookie) throws IOException {
OkHttpClient client = new OkHttpClient();
HttpUrl.Builder httpBuilder = HttpUrl.parse(address).newBuilder();
if (map != null) {
for (Map.Entry<String, Object> param : map.entrySet()) {
httpBuilder.addQueryParameter(param.getKey(), param.getValue().toString());
}
}
Request.Builder request = new Request.Builder()
.url(httpBuilder.build());
Log.e("OkhttpUtil", "为" + httpBuilder.build());
if (!TextUtils.isEmpty(cookie)) {
request.addHeader("cookie", cookie);
}
return client.newCall(request.build()).execute();
}
public static void del(String address, Map<String, Object> map, String cookie, Callback callback) { public static void del(String address, Map<String, Object> map, String cookie, Callback callback) {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
...@@ -292,10 +312,18 @@ public class OkhttpUtil { ...@@ -292,10 +312,18 @@ public class OkhttpUtil {
if (!TextUtils.isEmpty(cookie)) { if (!TextUtils.isEmpty(cookie)) {
request.addHeader("cookie", cookie); request.addHeader("cookie", cookie);
} }
Log.e("OkhttpUtil",json+" 状态 "+ request.build()); Log.e("OkhttpUtil", json + " 状态 " + request.build());
okHttpClient.newCall(request.build()).enqueue(callback); okHttpClient.newCall(request.build()).enqueue(callback);
} }
/**
* 将byte[]类型的十六进制数据(不进行解码)转为字符串格式。如,byte[]中存储的值为0xab78,则转换后的字符串的内容为“ab78”,
* byte[]中存储的值为0xb78,则转换后的字符串的内容为“0b78”
* 可用于将byte中的数据不做改变地打印到log中。
*
* @param buf
* @return
*/
public static String parseByte2HexStr(byte[] buf) { public static String parseByte2HexStr(byte[] buf) {
if (null == buf) { if (null == buf) {
return null; return null;
......
...@@ -4,7 +4,7 @@ import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST; ...@@ -4,7 +4,7 @@ import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
import static cn.garymb.ygomobile.Constants.URL_YGO233_DATAVER; import static cn.garymb.ygomobile.Constants.URL_YGO233_DATAVER;
import static cn.garymb.ygomobile.utils.StringUtils.isHost; import static cn.garymb.ygomobile.utils.StringUtils.isHost;
import static cn.garymb.ygomobile.utils.StringUtils.isNumeric; import static cn.garymb.ygomobile.utils.StringUtils.isNumeric;
import static cn.garymb.ygomobile.utils.StringUtils.isValidIP; import static cn.garymb.ygomobile.utils.WebParseUtil.isValidIP;
import android.content.Context; import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -76,8 +76,13 @@ public class ServerUtil { ...@@ -76,8 +76,13 @@ public class ServerUtil {
public void onResponse(Call call, Response response) throws IOException { public void onResponse(Call call, Response response) throws IOException {
failCounter = 0;//充值计数器 failCounter = 0;//充值计数器
String newVer = response.body().string(); String newVer = response.body().string();
/* 服务器有点怪,返回的版本号带个\n,要去掉 */
if (newVer.endsWith("\n")) {
newVer = newVer.substring(0, newVer.length() - 2);
}
serverExCardVersion = newVer; serverExCardVersion = newVer;
LogUtil.i(TAG, "ServerUtil fetch pre-card version:" + newVer); LogUtil.i(TAG, "ServerUtil fetch pre-card version:" + newVer);
if (!TextUtils.isEmpty(newVer)) { if (!TextUtils.isEmpty(newVer)) {
...@@ -164,6 +169,32 @@ public class ServerUtil { ...@@ -164,6 +169,32 @@ public class ServerUtil {
} }
} }
/**
* 读取xmlFile指定的本地文件server_list.xml和apk资源文件(assets)下的serverlist.xml,返回其中版本最新的
*
* @param context
* @param xmlFile 指定的本地文件server_list.xml
* @return
* @throws IOException
*/
private static ServerList mergeServerList(Context context, File xmlFile) throws IOException {
/* 读取apk中assets文件夹下的serverlist.xml文件 */
ServerList assetList = ServerListManager.readList(context.getAssets().open(ASSET_SERVER_LIST));
ServerList fileList = xmlFile.exists() ? ServerListManager.readList(new FileInputStream(xmlFile)) : null;
if (fileList == null) {
return assetList;
}
/* 如果apk下assets中的版本号更大,则返回assets下的server列表 */
if (fileList.getVercode() < assetList.getVercode()) {
xmlFile.delete();
return assetList;
}
return fileList;
}
/** /**
* 从资源文件serverlist.xml(或本地文件server_list.xml)解析服务器列表,并将新添加的服务器信息(name,addr,port)合并到服务器列表中。 * 从资源文件serverlist.xml(或本地文件server_list.xml)解析服务器列表,并将新添加的服务器信息(name,addr,port)合并到服务器列表中。
* *
...@@ -173,26 +204,21 @@ public class ServerUtil { ...@@ -173,26 +204,21 @@ public class ServerUtil {
* @param playerName * @param playerName
*/ */
public static void AddServer(Context context, String name, String Addr, int port, String playerName) { public static void AddServer(Context context, String name, String Addr, int port, String playerName) {
/* 读取本地文件server_list.xml */
File xmlFile = new File(context.getFilesDir(), Constants.SERVER_FILE);//读取文件路径下的server_list.xml File xmlFile = new File(context.getFilesDir(), Constants.SERVER_FILE);//读取文件路径下的server_list.xml
List<ServerInfo> serverInfos = new ArrayList<>();
ServerInfo mServerInfo = new ServerInfo();
mServerInfo.setName(name);
mServerInfo.setServerAddr(Addr);
mServerInfo.setPort(port);
mServerInfo.setPlayerName(playerName);
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
/* 读取本地文件server_list.xml和资源文件(assets)下的serverlist.xml,返回其中版本最新的 */ return mergeServerList(context, xmlFile);
ServerList assetList = ServerListManager.readList(context.getAssets().open(ASSET_SERVER_LIST));//读取serverlist.xml文件
ServerList fileList = xmlFile.exists() ? ServerListManager.readList(new FileInputStream(xmlFile)) : null;
if (fileList == null) {
return assetList;
}
if (fileList.getVercode() < assetList.getVercode()) {
xmlFile.delete();
return assetList;
}
return fileList;
}).done((list) -> { }).done((list) -> {
List<ServerInfo> serverInfos = new ArrayList<>();
ServerInfo mServerInfo = new ServerInfo();
mServerInfo.setName(name);
mServerInfo.setServerAddr(Addr);
mServerInfo.setPort(port);
mServerInfo.setPlayerName(playerName);
boolean hasServer = false; boolean hasServer = false;
if (list != null) { if (list != null) {
serverInfos.clear(); serverInfos.clear();
...@@ -205,7 +231,7 @@ public class ServerUtil { ...@@ -205,7 +231,7 @@ public class ServerUtil {
hasServer = false; hasServer = false;
} }
} }
if (!hasServer && !serverInfos.contains(mServerInfo)) { if (!hasServer && !serverInfos.contains(mServerInfo)) {//todo serverInfos.contains(mServerInfo)好像没必要
serverInfos.add(mServerInfo); serverInfos.add(mServerInfo);
} }
} }
...@@ -229,9 +255,7 @@ public class ServerUtil { ...@@ -229,9 +255,7 @@ public class ServerUtil {
} }
public static boolean isPreServer(int port, String addr) { public static boolean isPreServer(int port, String addr) {
return (port == Constants.PORT_YGO233 && addr.equals(Constants.URL_YGO233_1)) || return (port == Constants.PORT_Mycard_Super_Pre_Server && addr.equals(Constants.URL_Mycard_Super_Pre_Server));
(port == Constants.PORT_YGO233 && addr.equals(Constants.URL_YGO233_2));
} }
} }
...@@ -51,8 +51,8 @@ public class SharedPreferenceUtil { ...@@ -51,8 +51,8 @@ public class SharedPreferenceUtil {
return getShareRecord().getInt("StartTimes", 0); return getShareRecord().getInt("StartTimes", 0);
} }
public static void setExpansionDataVer(String json) { public static void setExpansionDataVer(String dataVer) {
getShareRecord().edit().putString("ExpansionsDataVer", json).commit(); getShareRecord().edit().putString("ExpansionsDataVer", dataVer).commit();
} }
public static String getExpansionDataVer() { public static String getExpansionDataVer() {
......
...@@ -3,6 +3,7 @@ package cn.garymb.ygomobile.utils; ...@@ -3,6 +3,7 @@ package cn.garymb.ygomobile.utils;
import android.text.TextUtils; import android.text.TextUtils;
import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -82,28 +83,24 @@ public class StringUtils { ...@@ -82,28 +83,24 @@ public class StringUtils {
return isurl; return isurl;
} }
/** /**
* 检查字符串是否是IPv4 * 使用分隔符,将List<String>合为一个String
*/ */
public static boolean isValidIP(String s) { public static String mergeListDelimeter(List<String> list) {
if (TextUtils.isEmpty(s)) { if (list == null || list.isEmpty()) {
return false; return "";
} }
String[] arr = s.split("\\.");
if (arr.length != 4) { StringBuilder stringBuilder = new StringBuilder();
return false;
} for (int i = 0; i < list.size() - 1; i++) {
for (String value : arr) { stringBuilder.append(list.get(i));
try { stringBuilder.append("|");
int n = Integer.parseInt(value);
if (!(n >= 0 && n <= 255)) {
return false;
}
} catch (NumberFormatException e) {
return false;
}
} }
return true; stringBuilder.append(list.get(list.size() - 1));
return stringBuilder.toString();
} }
} }
...@@ -16,6 +16,7 @@ public class UnzipUtils { ...@@ -16,6 +16,7 @@ public class UnzipUtils {
public static final int ZIP_READY = 600; public static final int ZIP_READY = 600;
public static final int ZIP_UNZIP_OK = 601; public static final int ZIP_UNZIP_OK = 601;
public static final int ZIP_UNZIP_EXCEPTION = 602; public static final int ZIP_UNZIP_EXCEPTION = 602;
/** /**
* 解压缩一个文件 * 解压缩一个文件
* *
...@@ -82,7 +83,7 @@ public class UnzipUtils { ...@@ -82,7 +83,7 @@ public class UnzipUtils {
if (entry.isDirectory()) { if (entry.isDirectory()) {
continue; continue;
} }
if (entry.getName().contains(nameContains)) { if (entry.getName().contains(nameContains)) {//如果zip中包含.ypk格式的文件,则将其放到/storage/emulated/0/Android/data/cn.garymb.ygomobile.CN/files/ygocore目录下
InputStream is = zf.getInputStream(entry); InputStream is = zf.getInputStream(entry);
String str = folderPath + File.separator + entry.getName(); String str = folderPath + File.separator + entry.getName();
str = new String(str.getBytes("8859_1"), StandardCharsets.UTF_8); str = new String(str.getBytes("8859_1"), StandardCharsets.UTF_8);
......
package cn.garymb.ygomobile.utils;
import android.text.TextUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.ex_card.ExCard;
/**
* 用于解析html网页内容的工具类
*/
public class WebParseUtil {
/**
* 检查字符串是否是IPv4
*/
public static boolean isValidIP(String s) {
if (TextUtils.isEmpty(s)) {
return false;
}
String[] arr = s.split("\\.");
if (arr.length != 4) {
return false;
}
for (String value : arr) {
try {
int n = Integer.parseInt(value);
if (!(n >= 0 && n <= 255)) {
return false;
}
} catch (NumberFormatException e) {
return false;
}
}
return true;
}
public static List<ExCard> loadData() throws IOException {
//Connect to the website
Document document = Jsoup.connect(Constants.URL_YGO233_ADVANCE).get();
Element pre_card_content = document.getElementById("pre_release_cards");
Element tbody = pre_card_content.getElementsByTag("tbody").get(0);
Elements cards = tbody.getElementsByTag("tr");
if (cards.size() > 5000) {//Considering the efficiency of html parse, if the size of
// pre cards list is to large, return null directly.
return null;
}
ArrayList<ExCard> exCardList = new ArrayList<>();
for (Element card : cards) {
Elements card_attributes = card.getElementsByTag("td");
String imageUrl = card_attributes.get(0).getElementsByTag("a").attr("href") + "!half";
String name = card_attributes.get(1).text();
String description = card_attributes.get(2).text();
ExCard exCard = new ExCard(name, imageUrl, description, 0);
exCardList.add(exCard);
}
if (exCardList.isEmpty()) {
return null;
} else {
return exCardList;
}
}
}
...@@ -14,18 +14,29 @@ ...@@ -14,18 +14,29 @@
android:padding="5dp" android:padding="5dp"
android:scrollbars="vertical" /> android:scrollbars="vertical" />
<!-- 不知道为啥,android:focusableInTouchMode="true"就导致必须按两次linearylayout才触发点击事件
有帖子说:
一个View的点击事件在第一次点击时无效,第二次点击之后才会响应。
最后发现是因为焦点问题,第一次点击实际上是获取焦点,第二次点击才会响应点击事件。
只要在相关控件属性里面加了两个焦点相关的属性:
android:focusable="true"
android:focusableInTouchMode="false"
版权声明:本文为CSDN博主「qiqiname1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qiqiname1989/article/details/82177869-->
<LinearLayout <LinearLayout
android:id="@+id/btn_download_prerelease" android:id="@+id/layout_download_precard"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|right" android:layout_gravity="bottom|right"
android:layout_marginRight="20dp" android:layout_marginRight="30dp"
android:layout_marginBottom="70dp" android:layout_marginBottom="100dp"
android:clickable="true" android:clickable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="false"
android:orientation="vertical" android:orientation="vertical"
android:padding="10dp"> android:padding="10dp">
<Button <Button
android:id="@+id/btn_download_precard"
android:layout_width="60dp" android:layout_width="60dp"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_gravity="center" android:layout_gravity="center"
...@@ -34,7 +45,7 @@ ...@@ -34,7 +45,7 @@
android:clickable="false" /> android:clickable="false" />
<TextView <TextView
android:id="@+id/text_download_prerelease" android:id="@+id/text_download_precard"
android:layout_width="60dp" android:layout_width="60dp"
android:layout_height="30dp" android:layout_height="30dp"
android:background="@drawable/ic_radius_bg" android:background="@drawable/ic_radius_bg"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sml="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:background="@drawable/list_item_bg" android:background="@drawable/list_item_bg"
android:orientation="horizontal"> android:orientation="horizontal"
android:paddingBottom="10dp">
<!-- set the layout_height in the linear layout to “wrap_content” <!-- set the layout_height in the linear layout to “wrap_content”
so it doesn’t only show one TextView per page.--> so it doesn’t only show one TextView per page.-->
...@@ -14,16 +13,16 @@ ...@@ -14,16 +13,16 @@
android:id="@+id/ex_card_image" android:id="@+id/ex_card_image"
android:layout_width="@dimen/card_width_middle" android:layout_width="@dimen/card_width_middle"
android:layout_height="@dimen/card_height_middle" android:layout_height="@dimen/card_height_middle"
android:padding="10dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:paddingRight="2dp"
android:scaleType="fitXY" android:scaleType="fitXY"
tools:src="@drawable/unknown" /> tools:src="@drawable/unknown" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="10dp" android:orientation="vertical"
android:orientation="vertical"> android:padding="10dp">
<cn.garymb.ygomobile.ui.widget.AlwaysMarqueeTextView <cn.garymb.ygomobile.ui.widget.AlwaysMarqueeTextView
android:id="@+id/ex_card_name" android:id="@+id/ex_card_name"
...@@ -40,12 +39,19 @@ ...@@ -40,12 +39,19 @@
android:textSize="15sp" android:textSize="15sp"
tools:text="Card Name" /> tools:text="Card Name" />
<TextView
android:id="@+id/ex_card_overall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView <TextView
android:id="@+id/ex_card_description" android:id="@+id/ex_card_description"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="StringFormatInvalid"> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="StringFormatInvalid">
<!--string name="app_name">YGOMobile</string--> <!--string name="app_name">YGOMobile</string-->
<string name="action_settings">Configuraciones</string> <string name="action_settings">Configuración</string>
<string name="action_game">Partida Individual</string> <string name="action_game">Partida individual</string>
<string name="action_about">Acerca de</string> <string name="action_about">Acerca de</string>
<string name="action_add_server">Añadir Servidor</string> <string name="action_add_server">Añadir servidor</string>
<string name="dont_start_game">no se puede iniciar el juego</string> <string name="dont_start_game">No se puede iniciar el juego</string>
<!-- check --> <!-- check -->
<string name="check_res">Consultar recursos</string> <string name="check_res">Consultar recursos</string>
<string name="check_things">Consultar %s ...</string> <string name="check_things">Consultar %s ...</string>
<string name="core_config">Configuración Principal</string> <string name="core_config">Configuración principal</string>
<string name="tip_new_deck">Nuevos Decks</string> <string name="tip_new_deck">Nuevo deck</string>
<string name="cards_cdb">cards.cdb</string> <string name="cards_cdb">base de datos</string>
<string name="scripts">scripts</string> <string name="scripts">scripts</string>
<string name="images">imágenes</string> <string name="images">imágenes</string>
<string name="single_lua">archivos individuales</string> <string name="single_lua">archivos individuales</string>
<string name="font_files">archivos de fuentes</string> <string name="font_files">archivos de fuentes</string>
<string name="game_sound">archivos de audio</string> <string name="game_sound">archivos de audio</string>
<string name="game_skins">archivos de personalización</string> <string name="game_skins">archivos de personalización</string>
<string name="coping_pendulum_image">Imagen del péndulo de afrontamiento</string> <string name="coping_pendulum_image">Copiar imagen digital de péndulo</string>
<string name="dialog_select_file">Elegir archivo</string> <string name="dialog_select_file">Elegir archivo</string>
<string name="dialog_select_image">Elegir imágen</string> <string name="dialog_select_image">Elegir imágen</string>
<string name="dialog_select_database">Elegir archivo de base de datos</string> <string name="dialog_select_database">Elegir archivo de base de datos</string>
<string name="copy_databse">copiando base de datos</string> <string name="copy_databse">Copiar la base de datos</string>
<string name="card_cover">Cubierta de Carta</string> <string name="card_cover">Cubierta de Carta</string>
<string name="game_bg">Fondo del Juego</string> <string name="game_bg">Fondo del Juego</string>
<string name="bg">Fondo del Duelo</string> <string name="bg">Fondo del Duelo</string>
<string name="bg_menu">Fondo del Menú</string> <string name="bg_menu">Fondo del Menú</string>
<string name="bg_deck">Fondo del Deck</string> <string name="bg_deck">Fondo del Deck</string>
<string name="no_find_image_selector">no se encontró el selector de imagen</string> <string name="no_find_image_selector">Selector de imágenes no encontrado</string>
<string name="no_find_file_selectotr">no se encontró el selector de archivo</string> <string name="no_find_file_selectotr">Selector de archivos no encontrado</string>
<string name="no_find_image_cutor">no se encontró el cortador de imagen</string> <string name="no_find_image_cutor">Herramienta de recorte no encontrada</string>
<string name="help">Ayuda</string> <string name="help">Ayuda</string>
<string name="settings">Configuraciones</string> <string name="settings">Configuración</string>
<string name="quit">Salir</string> <string name="quit">Salir</string>
<string name="quit_tip">¿Salir de la aplicación?</string> <string name="quit_tip">¿Salir de la aplicación?</string>
<string name="last_path">Última Carpeta</string> <string name="last_path">Última carpeta</string>
<string name="create_folder">Nueva Carpeta</string> <string name="create_folder">Nueva carpeta</string>
<string name="intpu_name">Nombre de entrada</string> <string name="intpu_name">Nombre de entrada</string>
<string name="tab_search">Buscar</string> <string name="tab_search">Buscar</string>
<string name="tab_result">Resultado</string> <string name="tab_result">Resultado</string>
<string name="tab_manager">Deck</string> <string name="tab_manager">Deck</string>
<string name="the_name_is_folder">el nombre de la carpeta</string> <string name="the_name_is_folder">El nombre de la carpeta</string>
<string name="back_tip">Presione la tecla "Atrás" nuevamente para salir.</string> <string name="back_tip">Presione la tecla "Atrás" nuevamente para salir.</string>
<string name="string_help_text">La aplicación actual carece de los permisos necesarios. \n <string name="string_help_text">La aplicación actual carece de los permisos necesarios. \n
Haga clic en Configuración - Permisos - Abra los permisos requeridos.</string> Haga clic en Configuración - Permisos - Abra los permisos requeridos.</string>
<string name="fetch_ex_card">Obtención de cartas pre-lanzamiento a través de la web</string> <string name="fetch_ex_card">Obtener cartas pre-lanzamiento a través de Internet</string>
<string name="ex_card_list_title">Lista de cartas</string> <string name="ex_card_list_title">Lista de cartas</string>
<string name="ex_card_log_title">registro de actualización</string> <string name="ex_card_log_title">Registro de actualización</string>
<string name="ex_card_report_title">Reporte</string> <string name="ex_card_report_title">Reporte</string>
<string name="ex_card_check_toast_message">Antes de unirse a este servidor, primero chequee "usar Expansiones" en la configuración</string> <string name="ex_card_check_toast_message">Antes de unirse a este servidor, primero chequee "Usar Expansiones" en la configuración</string>
<string name="ex_card_check_toast_message_ii">Antes de unirse a este servidor, descargue las expansiones</string> <string name="ex_card_check_toast_message_ii">Antes de unirse a este servidor, descargue las expansiones</string>
<string name="ex_card_check_toast_message_iii">Error al obtener la expansión de las cartas, abriendo el sitio web 233 para descargarlas ahora.</string> <string name="ex_card_check_toast_message_iii">Error al obtener la expansión de las cartas, abriendo el sitio web 233 para descargarlas ahora.</string>
<!-- settings --> <!-- settings -->
...@@ -65,21 +65,21 @@ ...@@ -65,21 +65,21 @@
<string name="donation">Donación</string> <string name="donation">Donación</string>
<string name="settings_about_check_update">Comprobar actualizaciones</string> <string name="settings_about_check_update">Comprobar actualizaciones</string>
<string name="settings_about_change_log">Historial de cambios</string> <string name="settings_about_change_log">Historial de cambios</string>
<string name="settings_game_card_quality">Calidad de la textura de la carta</string> <string name="settings_game_card_quality">Calidad de imagen de las cartas</string>
<string name="settings_game_font_name">Fuente del Juego</string> <string name="settings_game_font_name">Fuente del juego</string>
<string name="settings_game">Opciones del Juego</string> <string name="settings_game">Opciones del juego</string>
<string name="settings_game_res_path">Ruta del Juego</string> <string name="settings_game_res_path">Ruta del juego</string>
<string name="settings_game_core_version">Versión principal del juego</string> <string name="settings_game_core_version">Versión del núcleo del juego</string>
<string name="settings_category_diy">DIY</string> <string name="settings_category_diy">Personalizar</string>
<string name="settings_game_diy_cover">Fondo del Juego</string> <string name="settings_game_diy_cover">Fondo del juego</string>
<string name="settings_game_diy_card_back">Cubierta de Carta</string> <string name="settings_game_diy_card_back">Cubierta de carta</string>
<string name="settings_game_diy_card_db">Utilice su propia base de datos de cartas</string> <string name="settings_game_diy_card_db">Usar base de datos personalizada</string>
<string name="settings_test_options">Laboratorio</string> <string name="settings_test_options">Opciones Experimentales</string>
<string name="settings_test_replace_kernel">Cambiar el núcleo del juego (necesita root)</string> <string name="settings_test_replace_kernel">Reemplazar kernel (necesita root)</string>
<string name="settings_game_immersive_mode">Optimizar si su resolución no es 16:9</string> <string name="settings_game_immersive_mode">Optimizar si su resolución no es 16:9</string>
<string name="settings_game_opengl">OpenGL</string> <string name="settings_game_opengl">OpenGL</string>
<string name="settings_game_avatar">Avatar del Juego</string> <string name="settings_game_avatar">Ávatar del juego</string>
<string name="settings_author" translatable="false">菜菜、暗星</string> <string name="settings_author" translatable="false">菜菜、暗星\n浙ICP备2023031884号-2A</string>
<string name="restart_app">"¡Reinicie la aplicación!"</string> <string name="restart_app">"¡Reinicie la aplicación!"</string>
<string-array name="opengl_version"> <string-array name="opengl_version">
<item>OpenGL ES 1.X</item> <item>OpenGL ES 1.X</item>
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
</string-array> </string-array>
<string-array name="data_language" translatable="false"> <string-array name="data_language" translatable="false">
<item>Chino</item> <item>Chino</item>
<item>Japonés</item> <item>Koreano</item>
<item>Inglés</item> <item>Inglés</item>
<item>Español</item> <item>Español</item>
</string-array> </string-array>
...@@ -109,18 +109,18 @@ ...@@ -109,18 +109,18 @@
<string name="server_name">Nombre:</string> <string name="server_name">Nombre:</string>
<string name="server_ip">Anfitrión:</string> <string name="server_ip">Anfitrión:</string>
<string name="server_user">Usuario:</string> <string name="server_user">Usuario:</string>
<string name="server_room_name">Nombre de la Sala:</string> <string name="server_room_name">Nombre de la sala:</string>
<string name="server_port">Puerto:</string> <string name="server_port">Puerto:</string>
<string name="server_room_pwd">Contraseña:</string> <string name="server_room_pwd">Contraseña:</string>
<string name="server_user_pwd">Contraseña:</string> <string name="server_user_pwd">Contraseña:</string>
<string name="server_info_edit">Editar información del servidor</string> <string name="server_info_edit">Editar información del servidor</string>
<string name="save">Guardar</string> <string name="save">Guardar</string>
<string name="must_info">debe información</string> <string name="must_info">Información requerida</string>
<string name="server_is_exist">el servidor existe</string> <string name="server_is_exist">¡La información del servidor ya existe!</string>
<string name="server_info_error">La información del servidor es incorrecta.</string> <string name="server_info_error">La información del servidor se completó incorrectamente</string>
<string name="card_search">Búsqueda de cartas</string> <string name="card_search">Búsqueda de cartas</string>
<string name="deck_manager">Deck</string> <string name="deck_manager">Deck</string>
<string name="category_manager"> Selección de Deck categorizado</string> <string name="category_manager">Selección de deck categorizado</string>
<string name="search">Buscar</string> <string name="search">Buscar</string>
<string name="search_open">Seleccionar</string> <string name="search_open">Seleccionar</string>
<string name="search_close">Cerrar</string> <string name="search_close">Cerrar</string>
...@@ -140,16 +140,16 @@ ...@@ -140,16 +140,16 @@
<string name="label_category">Categoría</string> <string name="label_category">Categoría</string>
<string name="searching">Buscar Cartas</string> <string name="searching">Buscar Cartas</string>
<string name="card_faq">FAQ</string> <string name="card_faq">FAQ</string>
<string name="no_webbrowser">Sin navegador web</string> <string name="no_webbrowser">Ningún navegador web instalado</string>
<string name="load_game">cargando juego</string> <string name="load_game">Cargando juego</string>
<string name="new_deck">Nuevo</string> <string name="new_deck">Nuevo</string>
<string name="move_deck">mover Deck</string> <string name="move_deck">Mover deck</string>
<string name="copy_deck">copiar Deck</string> <string name="copy_deck">Copiar deck</string>
<string name="rename_deck">Renombrar</string> <string name="rename_deck">Renombrar deck</string>
<string name="delete_deck">Eliminar</string> <string name="delete_deck">Eliminar deck</string>
<string name="save_deck">Salvar Deck</string> <string name="save_deck">Salvar deck</string>
<string name="save_as_deck">Salvar Deck como</string> <string name="save_as_deck">Salvar deck como</string>
<string name="deck_list">Lista de Decks</string> <string name="deck_list">Lista de decks</string>
<string name="card_add_main">+Deck Principal</string> <string name="card_add_main">+Deck Principal</string>
<string name="card_add_side">+Side Deck</string> <string name="card_add_side">+Side Deck</string>
<string name="deck_main" formatted="false">Principal:%d Monstruo:%d Mágica:%d Trampa:%d</string> <string name="deck_main" formatted="false">Principal:%d Monstruo:%d Mágica:%d Trampa:%d</string>
...@@ -158,187 +158,188 @@ ...@@ -158,187 +158,188 @@
<string name="card_result">Lista de Cartas</string> <string name="card_result">Lista de Cartas</string>
<string name="unsort">Desordenar</string> <string name="unsort">Desordenar</string>
<string name="sort">Ordenar</string> <string name="sort">Ordenar</string>
<string name="loading">cargando..."</string> <string name="loading">Cargando...</string>
<string name="loading_failed">carga fallida"</string> <string name="loading_failed">Carga fallida</string>
<string name="question">Pregunta</string> <string name="question">Pregunta</string>
<string name="question_delete_deck">¿eliminar este deck?</string> <string name="question_delete_deck">¿Eliminar este deck?</string>
<string name="noname">sin nombre</string> <string name="noname">Sin nombre</string>
<string name="menu">Opciones</string> <string name="menu">Opciones</string>
<string name="save_tip_ok">guardar deck ok</string> <string name="save_tip_ok">Deck guardado con éxito</string>
<string name="save_tip_fail">fallo al guardar deck</string> <string name="save_tip_fail">Fallo al guardar deck</string>
<string name="add_card_tip_ok">agregar carta ok</string> <string name="add_card_tip_ok">Carta agregada con éxito</string>
<string name="add_card_tip_fail">fallo al agregar carta</string> <string name="add_card_tip_fail">Fallo al agregar carta</string>
<string name="tip_card_max" formatted="false">recuento máximo de tarjetas:%d</string> <string name="tip_card_max" formatted="false">Número máximo de cartas:%d</string>
<string name="file_exist">el archivo existe</string> <string name="file_exist">El archivo ya existe</string>
<string name="share_deck">Compartir Deck</string> <string name="share_deck">Compartir deck</string>
<string name="no_share_app">no se encontro app para compartir</string> <string name="no_share_app">No se encontró ninguna app para compartir</string>
<string name="intput_room_name">Nombre de la sala de entrada</string> <string name="intput_room_name">Nombre de la sala de entrada</string>
<string name="join">unirse</string> <string name="join">Unirse</string>
<string name="quick_join">únete al juego</string> <string name="quick_join">Únete al juego</string>
<string name="join_game">Únete al juego</string> <string name="join_game">Únete al juego</string>
<string name="settings_game_sensor_refresh">Sensor de Actualización del Juego</string> <string name="settings_game_sensor_refresh">Sensor de Actualización del Juego</string>
<string name="label_pendulum">Escala de Péndulo</string> <string name="label_pendulum">Escala de Péndulo</string>
<string name="all">Todo</string> <string name="all">Todo</string>
<string name="refresh">Actualizar</string> <string name="refresh">Actualizar</string>
<string name="select_deck">Haga clic aquí para seleccionar Deck</string> <string name="select_deck">Tocar aquí para seleccionar Deck</string>
<string name="quit_deck_tip">El deck aún no se ha guardado, ¿desea salir de la aplicación?</string> <string name="quit_deck_tip">El deck aún no se ha guardado, ¿desea salir de la aplicación?</string>
<string name="deck_delete_text">Arrastra aquí para eliminar</string> <string name="deck_delete_text">Arrastra aquí para eliminar</string>
<string name="question_keep_cur_deck">¿mantener las cartas actuales?</string> <string name="question_keep_cur_deck">¿Mantener las cartas actuales?</string>
<string name="check_choose_file" formatted="false">Determinar la elección %s \?</string> <string name="check_choose_file" formatted="false">¿Estás seguro de que deseas seleccionar este %s?</string>
<string name="settings_deck_delete_dialog">Eliminar cuadro de diálogo de uso de carta</string> <string name="settings_deck_delete_dialog">Eliminar cuadro de diálogo de cartas</string>
<string name="settings_deck_delete_dialog_desc">mostrar el cuadro de diálogo de eliminación de cartas en el editor de decks</string> <string name="settings_deck_delete_dialog_desc">Mostrar el cuadro de diálogo de eliminación de cartas en el editor de decks</string>
<string name="delete_card" formatted="false">Eliminar %s ?</string> <string name="delete_card" formatted="false">¿Eliminar carta %s?</string>
<string name="clear_deck">Vaciar</string> <string name="clear_deck">Vaciar</string>
<string name="question_clear_deck">¿vaciar este deck?</string> <string name="question_clear_deck">¿Vaciar este deck?</string>
<string name="delete_server_info">¿eliminar la información de este servidor?</string> <string name="delete_server_info">¿Eliminar la información de este servidor?</string>
<string name="exit_edit_mode">Salir del Modo de Edición</string> <string name="exit_edit_mode">Salir del Modo de Edición</string>
<string name="logo_text">Gracias por todo tu apoyo.</string> <string name="logo_text">¡Gracias por apoyarnos!</string>
<string name="start_game_error">No se pudo unir al juego</string> <string name="start_game_error">No se pudo unir al juego</string>
<string name="set_font_size">Tamaño de la fuente en el juego</string> <string name="set_font_size">Tamaño de fuente en el juego</string>
<string name="copy_to_clipbroad">Copiar al portapapeles</string> <string name="copy_to_clipbroad">Copiar al portapapeles</string>
<string name="deck_share_head">compartir deck por ygomobile.</string> <string name="deck_share_head">Compartir deck por YGOMobile</string>
<string name="deck_share_fail">falla al compartir deck</string> <string name="deck_share_fail">Fallo al compartir deck</string>
<string name="choose_game_path">elige la carpeta del juego</string> <string name="choose_game_path">Seleccionar directorio del juego</string>
<string name="download_home">Página de NetDisk</string> <string name="download_home">Página de NetDisk</string>
<string name="reset_game_res">Restablecer recursos</string> <string name="reset_game_res">Restablecer recursos</string>
<string name="downloading_images">Descargando imágenes</string> <string name="downloading_images">Descargando imágenes</string>
<string name="download_image_progress" formatted="false">Descargando imagen de carta %d/%d</string> <string name="download_image_progress" formatted="false">Descargando imagen de carta %d/%d</string>
<string name="download_image_error" formatted="false">Descarga fallida. Mantenga presionado para volver a intentarlo.</string> <string name="download_image_error" formatted="false">Descarga fallida. Mantenga presionado para volver a intentarlo</string>
<string name="downloading_images_ok">Imagen descargada corectamente</string> <string name="downloading_images_ok">Imagen descargada con éxito</string>
<string name="tip_istunning">YGOPro se está ejecutando</string> <string name="tip_istunning">YGOMobile se está ejecutando</string>
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="delete">Eliminar</string> <string name="delete">Eliminar</string>
<string name="mycard">MyCard</string> <string name="mycard">MyCard</string>
<string name="arena">Base de datos de duelista</string> <string name="arena">Base de datos de duelo</string>
<string name="mc_home">Inicio</string> <string name="mc_home">Inicio</string>
<string name="mc_chat">Sala de chat</string> <string name="mc_chat">Sala de chat</string>
<string name="noting_to_send">tomando nota para enviar</string> <string name="noting_to_send">El contenido de envío no puede estar vacío.</string>
<string name="sending_failed">envío fallido</string> <string name="sending_failed">Fallo al enviar</string>
<string name="logining_in">Iniciando sesión</string> <string name="logining_in">Iniciando sesión...</string>
<string name="logining_failed">Error al iniciar sesión, inténtelo de nuevo</string> <string name="logining_failed">Error al iniciar sesión, inténtelo de nuevo</string>
<string name="failed_reason">El inicio de sesión falló debido a</string> <string name="failed_reason">El inicio de sesión falló debido a</string>
<string name="notice_verify_email">Sólo la cuenta de correo electrónico verificada puede iniciar sesión en la sala de chat.</string> <string name="notice_verify_email">Sólo la cuenta de correo electrónico verificada puede iniciar sesión en la sala de chat.</string>
<string name="send">Enviar</string> <string name="send">Enviar</string>
<string name="bbs">Comunidad</string> <string name="bbs">Comunidad</string>
<string name="McNews">Noticias</string> <string name="McNews">Noticias</string>
<string name="settings_pref_settings_only_game">Solo empieza el juego</string> <string name="settings_pref_settings_only_game">Inicia el juego directamente</string>
<string name="only_game_tip">restablecer esta configuración, necesita datos limpios de la aplicación</string> <string name="only_game_tip">Verifique cuidadosamente y borre los datos de la aplicación o reinstálela para restaurarla</string>
<string name="title_use_ex">Usar Expansiones</string> <string name="title_use_ex">Usar Expansiones</string>
<string name="tip_network_image">El servidor de imágenes está cerrado.</string> <string name="tip_network_image">El servidor de imágenes está cerrado.</string>
<string name="game_version">Versión del Juego</string> <string name="game_version">Versión del Juego</string>
<string name="tip">Información</string> <string name="tip">Información</string>
<string name="error_game_ver">Incorrecto! error de versión del juego "0x1342" (1.034.2)</string> <string name="error_game_ver">¡Formato erróneo! Debe comenzar con 0x, como por ejemplo: 0x1342 (muestra 1.034.2)</string>
<string name="tip_no_netwrok">por favor confirmar redes</string> <string name="tip_no_netwrok">Por favor confirme que está conectado a Internet.</string>
<string name="message">Copiando datos...</string> <string name="message">"Copiando paquete de datos..."</string>
<string name="ex_pack">Extender cartas</string> <string name="ex_pack">Paquete de cartas de expansión</string>
<string name="deck_manager_v2">Editor de Decks V2</string> <string name="deck_manager_v2">Editor de Decks V2</string>
<string name="reset_game_ver_fail">fallo al intentar restablecer la versión del juego</string> <string name="reset_game_ver_fail">Fallo al intentar restablecer la versión del juego</string>
<string name="deck_name">Deck</string> <string name="deck_name">Deck</string>
<string name="category_name">Categoría del Deck</string> <string name="category_name">Categoría del deck</string>
<string name="save_quit">Guardar y salir</string> <string name="save_quit">Guardar y salir</string>
<string name="tip_reset_game_res">Restablecer recursos del juego completado</string> <string name="tip_reset_game_res">Verificación de datos del juego completada</string>
<string name="join_helper_tip1">puedes mover tu servidor favorito hacia arriba <string name="join_helper_tip1">Puedes mover tu servidor favorito hacia arriba,
\n luego unirse al ayudante comenzará con aquiescencia en él</string> \n luego el asistente de ayuda confirmará que inicies en él</string>
<string name="join_helper_tip2">\n Por favor, haga clic en el permiso de la APLICACIÓN para encontrarme y abra las "Ventanas emergentes". <string name="join_helper_tip2">\nPara utilizar esta función, debe abrir la ventana flotante del software
\n y mantener la ejecución en segundo plano</string> \ny asegurarse de que el software se esté ejecutando en segundo plano.</string>
<string name="EXPAND_STATUS_BAR">Aplicar expandir barra de estado \n entonces Asistente de Duelos funcionará normalmente</string> <string name="EXPAND_STATUS_BAR">Debes activar el permiso de notificación\nActiva el permiso para usar la función Asistente de Duelo normalmente</string>
<string name="SYSTEM_ALERT_WINDOW">Aplicar Display sobre otras aplicaciones \n entonces Asistente de Duelos funcionará normalmente</string> <string name="SYSTEM_ALERT_WINDOW">Debes habilitar el permiso de ventana flotante\nHabilitar el permiso para usar la función Asistente de duelo normalmente</string>
<string name="OpenTIP">Acerca del ingreso rápido al juego</string> <string name="OpenTIP">Cómo utilizar la adición rápida de salas</string>
<string name="Open_Alert_Window">Para abrir ventanas emergentes</string> <string name="Open_Alert_Window">Ir a abrir la ventana flotante</string>
<string name="Function_Menu">MENÚ</string> <string name="Function_Menu">MENÚ</string>
<string name="Join_QQ">Grupo QQ</string> <string name="Join_QQ">Grupo QQ</string>
<string name="about_Join_QQ">Únase al grupo QQ para informar problemas</string> <string name="about_Join_QQ">Únete al grupo QQ para informar problemas</string>
<string name="donatefor">Su donación se utilizará para mantener actualizados los servidores, comprar tarjetas para obtener obras de arte y comprar un nuevo teléfono para adaptarse.</string> <string name="donatefor">Su donación se utilizará para mantener las tarifas de actualización automática, recopilar datos de actualización, retocar imágenes posteriores y comprar modelos adaptados, etc.</string>
<string name="coverSelect">haga clic en la cubierta para cambiar la imagen</string> <string name="coverSelect">Tocar en la cubierta para cambiar la imagen</string>
<string name="bgSelect">haga clic en el fondo para cambiar la imagen</string> <string name="bgSelect">Tocar en el fondo para cambiar la imagen</string>
<string name="avatarSelect">haga clic en el ávatar para cambiar la imagen</string> <string name="avatarSelect">Tocar en el ávatar para cambiar la imagen</string>
<string name="ClickLinkArrows">haga clic en las flechas del enlace</string> <string name="ClickLinkArrows">Tocar en las flechas del enlace</string>
<string name="Already_Lastest">¡Ya cuentas con la última versión del juego!</string> <string name="Already_Lastest">¡Ya posees la última versión del juego!</string>
<string name="tip_no_permission" formatted="false">el permiso %s es denegado.</string> <string name="tip_no_permission" formatted="false">Se ha denegado el permiso %s.</string>
<string name="about_immersive_mode">ocultará la teclado virtual</string> <string name="about_immersive_mode">Se ocultará el teclado virtual</string>
<string name="Download">Descargar</string> <string name="Download">Descargar</string>
<string name="Downloading">Descargando ahora</string> <string name="Downloading">Descargando, por favor espera</string>
<string name="Update_Found">Nueva versión encontrada</string> <string name="Update_Found">Nueva versión encontrada</string>
<string name="OK">OK</string> <string name="OK">OK</string>
<string name="Cancel">Cancelar</string> <string name="Cancel">Cancelar</string>
<string name="Checking_Update">Revizando actualización ahora</string> <string name="Checking_Update">Buscando actualizaciones, por favor espere</string>
<string name="Found_Update">Se ha encontrado una nueva actualización, ¿desea descargarla?</string> <string name="Found_Update">Se ha encontrado una nueva actualización, ¿desea descargarla?</string>
<string name="Checking_Update_Failed">Error al comprobar la actualización</string> <string name="Checking_Update_Failed">Error al comprobar la actualización</string>
<string name="Ask_to_Change_Other_Way">intentando de otra manera...</string> <string name="Download_precard_failed">Falló la descarga de las cartas pre-lanzamiento</string>
<string name="DuelAssistant">El Asistente de Duelo está encendido</string> <string name="Ask_to_Change_Other_Way">No se pudo obtener la línea principal, probando la línea alternativa...</string>
<string name="DuelAssistant">El Asistente de Duelo está activado</string>
<string name="masterrule">Regla Maestra</string> <string name="masterrule">Regla Maestra</string>
<string name="tutorial">Tutorial</string> <string name="tutorial">Ver Tutoriales</string>
<string name="about_help">Haga clic en el botón que desea saber</string> <string name="about_help">Puedes tocar en lo que quieras saber</string>
<string name="to_open">Abrir</string> <string name="to_open">Abrir</string>
<string name="crashed">¡YGOMobile se ha detenido inesperadamente!</string> <string name="crashed">¡YGOMobile se ha detenido inesperadamente!</string>
<string name="invalid_shortcut">Acceso directo no válido</string> <string name="invalid_shortcut">Acceso directo no válido</string>
<string name="return_to_duel">Regresar al duelo☞</string> <string name="return_to_duel">Tocar aquí para volver al duelo☞</string>
<string name="Start_ServiceDuelAssistant">Asistente de Duelo</string> <string name="Start_ServiceDuelAssistant">Activar Asistente de Duelo</string>
<string name="about_DuelAssistant">Copia el PWS para entrar al juego de forma rápida <string name="about_DuelAssistant">Copia el PWS para entrar al juego de forma rápida
\n copie el texto del Deck para guardarlo como YDK y abrirlo en el editor de Decks</string> \ncopie el texto del deck para guardarlo como YDK y abrirlo en el editor de decks</string>
<string name="find_deck_text">Encuentre el texto de su deck copiado, ¿desea guardarlo o no?</string> <string name="find_deck_text">Texto del deck detectado, ¿quieres guardarlo?</string>
<string name="save_failed_bcos">guardar bcos fallido</string> <string name="save_failed_bcos">Error al guardar debido a</string>
<string name="deck_text_copyed">Texto del Deck copiado</string> <string name="deck_text_copyed">Texto del Deck copiado al portapapeles</string>
<string name="save_n_open">Guardar y Abrir</string> <string name="save_n_open">Guardar y Abrir</string>
<string name="searchresult">Resultados</string> <string name="searchresult">Resultados de la búsqueda</string>
<string name="Pre_share">Prepárese para compartir</string> <string name="Pre_share">Listo para compartir, por favor espera...</string>
<string name="category_pack">Paquete</string> <string name="category_pack">Exhibición del paquete de cartas</string>
<string name="category_windbot_deck">Decks I.A.</string> <string name="category_windbot_deck">Decks I.A.</string>
<string name="category_Uncategorized">Sin Categoría</string> <string name="category_Uncategorized">Sin categoría</string>
<string name="please_input_category_name">por favor ingrese el nombre de la Categoría</string> <string name="please_input_category_name">Por favor ingrese el nombre de la categoría</string>
<string name="invalid_category_name">nombre de Categoría no válido</string> <string name="invalid_category_name">Nombre inválido</string>
<string name="please_select_target_category">por favor seleccione la Categoría objetivo</string> <string name="please_select_target_category">¿En qué categoría debería ponerlo?</string>
<string name="delete_confirm">se eliminarán todos los decks de esta Categoría</string> <string name="delete_confirm">¿Estás seguro de que deseas eliminar esta categoría? También se eliminarán todos los decks de la categoría.</string>
<string name="no_deck_is_selected">no se ha seleccionado ningún deck</string> <string name="no_deck_is_selected">No se ha seleccionado ningún deck</string>
<string name="done">¡hecho\!</string> <string name="done">¡Hecho\!</string>
<string name="donot_edit_Deck">No cambies los decks de esta Categoría.</string> <string name="donot_edit_Deck">Por favor no cambies los decks en esta categoría.</string>
<string name="code_share">Compartir Código</string> <string name="code_share">Compartir código</string>
<string name="screenshoot">Compartir Arte</string> <string name="screenshoot">Compartir captura de pantalla</string>
<string name="ydk_share">Compartir Archivo</string> <string name="ydk_share">Compartir archivo ydk</string>
<string name="unable_to_edit_empty_deck">no se puede editar el Deck vacío</string> <string name="unable_to_edit_empty_deck">No se pueden editar el decks vacíos</string>
<string name="create_new_failed">Crear fallido</string> <string name="create_new_failed">La creación falló</string>
<string name="about_pref_settings_keep_scale">Visualización de escala de resolución original</string> <string name="about_pref_settings_keep_scale">Visualización de escala de resolución original</string>
<string name="already_top">Primera carta ya está lista</string> <string name="already_top">Primera carta lista</string>
<string name="already_end">Última carta ya está lista</string> <string name="already_end">Última carta lista</string>
<string name="tip_redownload">Volver a descargar</string> <string name="tip_redownload">Volver a descargar</string>
<string name="tip_expansions_image">no hay imagen para cartas de pre-lanzamiento</string> <string name="tip_expansions_image">No hay imagen para cartas pre-lanzamiento</string>
<string name="tip_return_to_duel">El juego actual ha sido devuelto.</string> <string name="tip_return_to_duel">Regresado al juego actual.</string>
<string name="my_favorites">myFav★</string> <string name="my_favorites">myFav★</string>
<string name="ypk_installed">archivo de expansión instalado</string> <string name="ypk_installed">Archivo de expansión instalado</string>
<string name="ypk_go_setting">Para usarlo, le recomendamos que consulte \"Usar Expansiones\" a menos que haya instalado los pre-lanzamientos de otra manera</string> <string name="ypk_go_setting">Para usarlo, le recomendamos que consulte \"Usar Expansiones\" a menos que haya instalado los pre-lanzamientos de otra manera</string>
<string name="ypk_delete">Mantenga presionado el nombre para eliminar</string> <string name="ypk_delete">Mantenga presionado el nombre para eliminar</string>
<string name="install_failed_bcos">La instalación del archivo falló, porque\:</string> <string name="install_failed_bcos">La instalación falló debido a:</string>
<string name="deck_back_up">Respaldo</string> <string name="deck_back_up">Respaldar</string>
<string name="deck_restore">Restaurar</string> <string name="deck_restore">Restaurar</string>
<string name="deck_backup_n_restore">Respaldo/Restaurar</string> <string name="deck_backup_n_restore">Respaldar/Restaurar</string>
<string name="deck_explain">Respaldo\: hacer una copia de seguridad de todos los decks en Sdcard/ygocore <string name="deck_explain">Respaldar: hacer una copia de seguridad de todos los decks en Sdcard/ygocore
\n Restaurar\: restaurar decks respaldados</string> \nRestaurar: restaurar decks respaldados</string>
<string name="restore_deck">se encontraron decks respaldados en su dispositivo\, ¿desea restaurarlos\?</string> <string name="restore_deck">Se encontraron decks respaldados en su dispositivo, ¿desea restaurarlos?</string>
<string name="explain_permission"> <string name="explain_permission">
Se aplicarán permisos muy necesarios.\: El uso de dichas funciones de este software requerirá los siguientes permisos necesarios:
\n Acceso al almacenamiento\:respaldo\/restaurar deck\,establecer fondo personalizado\/avatares\/dorso de carta</string> \nPermisos de almacenamiento: realizar copias de seguridad y restaurar decks, necesarios para personalizar fondos, avatares y cubiertas de cartas.</string>
<string name="guide_menu">Menú\:\n incluyendo la mayoría de las funciones, por Ejemplo</string> <string name="guide_menu">Menú:\nFunciones principales como</string>
<string name="guide_mycard">Mycard\: clasificar récord de duelo, observar juegos, sala de chat, etc. </string> <string name="guide_mycard">Mycard: Clasificar récord de duelo, observar juegos, sala de chat, etc.</string>
<string name="guide_serverlist">Lista de Servidores\: haga clic en un servidor para unirse al juego en línea</string> <string name="guide_serverlist">Lista de Servidores: Toque un servidor para unirse al juego en línea</string>
<string name="guide_server_edit">Editar servidor\: editar la información del servidor. Por ejemplo\: cambiar apodo</string> <string name="guide_server_edit">Editar servidor: Editar la información del servidor. Por ejemplo: cambiar apodo</string>
<string name="guide_help">Ayuda\: guía específica Cómo usar YGOMobile y aprender las Reglas Maestras</string> <string name="guide_help">Ayuda: Guía específica Cómo usar YGOMobile y aprender las Reglas Maestras</string>
<string name="guide_settings">Configuraciones\: activar Expansiones y Asistente de Duelos. Establecer avatares del juego, fondo, dorso de carta.</string> <string name="guide_settings">Configuraciones: Activar Expansiones y Asistente de Duelos. Establecer avatares del juego, fondo, cubierta de carta.</string>
<string name="guide_reset">haga clic para restablecer cuando las imágenes o cualquier archivo se eliminen por error</string> <string name="guide_reset">Tocar para restablecer cuando las imágenes o cualquier archivo se eliminen por error</string>
<string name="guide_abt_room_list">La contraseña ingresada será registrada. Presione solo para eliminar registros)</string> <string name="guide_abt_room_list">La contraseña ingresada será registrada. Presione solo para eliminar registros</string>
<string name="guide_join_room">puedes unirte al juego sin contraseña para iniciar un duelo aleatorio con el modo predeterminado <string name="guide_join_room">Puedes unirte al juego sin contraseña para iniciar un duelo aleatorio con el modo predeterminado
\n use la contraseña especificada y comparta con otros jugadores para unirse al mismo juego \nuse la contraseña especificada y comparta con otros jugadores para unirse al mismo juego
\n para más Modelos de Contraseñas de duelo puedes ver el tortuial.</string> \npara más Modelos de Contraseñas de duelo puedes ver el tortuial.</string>
<string name="guide_button_search">haga clic en el botón de búsqueda para editar los criterios de búsqueda</string> <string name="guide_button_search">Toca el botón de búsqueda para editar los criterios de búsqueda</string>
<string name="guide_search_result_count">aquí se muestra el recuento de resultados de búsqueda</string> <string name="guide_search_result_count">Aquí se muestra el recuento de resultados de búsqueda</string>
<string name="guide_button_search_result">haga clic para ver el resultado de la búsqueda \n también aquí se mostrarán las tarjetas favoritas.</string> <string name="guide_button_search_result">Tocar para ver el resultado de la búsqueda \ntambién aquí se mostrarán las cartas favoritas.</string>
<string name="guide_view_deck_manager">haz clic para cambiar los Decks \n Puedes gestionar las categorías de los decks aquí.</string> <string name="guide_view_deck_manager">Tocar para cambiar los decks \nPuedes gestionar las categorías de los decks aquí.</string>
<string name="guide_view_move_card">presione una carta para moverla a otro lugar \n mantenga presionada esta carta para eliminarla.</string> <string name="guide_view_move_card">Presione una carta para moverla a otro lugar \nmantenga presionada esta carta para eliminarla.</string>
<string name="guide_view_banner">Noticias de Mycard, puedes hacer clic para ver \n Sólo en chino por ahora, lo siento.</string> <string name="guide_view_banner">Noticias de Mycard, puedes tocar para ver \nSólo en chino por ahora, lo siento.</string>
<string name="title_delete_ex">eliminar expansiones</string> <string name="title_delete_ex">eEliminar expansiones</string>
<string name="about_delete_ex">si necesita eliminar todas las cartas de expansión</string> <string name="about_delete_ex">Si necesita eliminar todas las cartas de expansión</string>
<string name="file_installed">archivo cargado</string> <string name="file_installed">Archivo cargado</string>
<string name="ask_delete_ex">Haga clic en OK para confirmar la eliminación.</string> <string name="ask_delete_ex">Tocar OK para confirmar la eliminación.</string>
<string name="label_ot_TCG">TCG</string> <string name="label_ot_TCG">TCG</string>
<string name="label_ot_OCG">OCG</string> <string name="label_ot_OCG">OCG</string>
<string name="label_ot_All">Todo</string> <string name="label_ot_All">Todo</string>
...@@ -347,19 +348,21 @@ ...@@ -347,19 +348,21 @@
<string name="label_ot_SC_OCG">OCG ChinoS.</string> <string name="label_ot_SC_OCG">OCG ChinoS.</string>
<string name="settings_screen_padding">Altura reservada de la pantalla curva.</string> <string name="settings_screen_padding">Altura reservada de la pantalla curva.</string>
<string name="tip_load_cdb_error">Error al cargar la base de datos</string> <string name="tip_load_cdb_error">Error al cargar la base de datos</string>
<string name="action_download_expansions">descargar \n expansiones</string> <string name="action_download_expansions">Descargar \nexpansiones</string>
<string name="replay">Ver repetición</string> <string name="replay">Ver repetición</string>
<string name="bot_mode">vs Bot</string> <string name="bot_mode">vs Bot</string>
<string name="personal">My</string> <string name="personal">My</string>
<string name="login_mycard">iniciar sesión</string> <string name="login_mycard">Iniciar sesión</string>
<string name="logout_mycard">¿cerrar sesión en mycard\?</string> <string name="logout_mycard">¿Cerrar sesión en mycard?</string>
<string name="back_to_mycard_home">Volver a la página de inicio</string> <string name="back_to_mycard_home">Volver a la página de inicio</string>
<string name="edit_your_message">Introduce tu mensaje</string> <string name="edit_your_message">Introduce tu mensaje</string>
<string name="login_succeed">Sala de chat iniciada</string> <string name="login_succeed">Sala de chat iniciada</string>
<string name="reChatJoining">volver a iniciar sesión\.\.\.</string> <string name="reChatJoining">Volver a iniciar sesión...</string>
<string name="settings_data_language">Lenguaje</string> <string name="settings_data_language">Lenguaje</string>
<string name="settings_data_language_about">cambiar el idioma de la interfaz de usuario de YGOPro y la base de datos de las cartas</string> <string name="settings_data_language_about">Cambiar el idioma de la interfaz de usuario de YGOMobile y la base de datos de las cartas</string>
<string name="find_in_page">encontrar:</string> <string name="find_in_page">Encontrar:</string>
<string name="tip_card_info_diff">Las cartas publicadas y las de prelanzamiento son diferentes; tenga en cuenta después de parchearlas.</string> <string name="tip_card_info_diff">Esta carta no está incluida en el software. Intente actualizar el software o verifique si la carta está disponible en el paquete de cartas de expansión.</string>
<string name="tip_deckInfo_isNot_completeDeck">Información de cartas ¡Excepción! intento convertir la información de una carta existente</string> <string name="tip_deckInfo_isNot_completeDeck">El mazo de cartas actual se analiza de manera anormal y haremos todo lo posible para convertirlo en cartas existentes.</string>
</resources> <string name="tip_ygopro_is_running">Actualmente hay un juego en ejecución y no se puede iniciar un nuevo duelo. La contraseña de la sala se ha guardado en el historial. Finaliza el juego actual y luego selecciona el historial para unirte a la sala.</string>
\ No newline at end of file </resources>
...@@ -269,6 +269,8 @@ ...@@ -269,6 +269,8 @@
<string name="Checking_Update">检查更新中,请稍候</string> <string name="Checking_Update">检查更新中,请稍候</string>
<string name="Found_Update">发现新版本,前往下载?</string> <string name="Found_Update">发现新版本,前往下载?</string>
<string name="Checking_Update_Failed">检查更新失败</string> <string name="Checking_Update_Failed">检查更新失败</string>
<string name="Download_Precard_Failed">先行卡下载失败</string>
<string name="Pre_Server_Name">萌卡超先行服</string>
<string name="Ask_to_Change_Other_Way">主线获取失败,尝试备选线路中...</string> <string name="Ask_to_Change_Other_Way">主线获取失败,尝试备选线路中...</string>
<string name="DuelAssistant">决斗助手启用中</string> <string name="DuelAssistant">决斗助手启用中</string>
<string name="masterrule">学习大师规则</string> <string name="masterrule">学习大师规则</string>
......
...@@ -266,6 +266,8 @@ ...@@ -266,6 +266,8 @@
<string name="Checking_Update">Now Checking Update</string> <string name="Checking_Update">Now Checking Update</string>
<string name="Found_Update">New upGrade is Founded, Download?</string> <string name="Found_Update">New upGrade is Founded, Download?</string>
<string name="Checking_Update_Failed">Checking Update Failed</string> <string name="Checking_Update_Failed">Checking Update Failed</string>
<string name="Download_Precard_Failed">Download pre-cards failed</string>
<string name="Pre_Server_Name">Mycard Super-pre Server</string>
<string name="Ask_to_Change_Other_Way">trying other way...</string> <string name="Ask_to_Change_Other_Way">trying other way...</string>
<string name="DuelAssistant">DuelAssiatant is On</string> <string name="DuelAssistant">DuelAssiatant is On</string>
<string name="masterrule">Master Rule</string> <string name="masterrule">Master Rule</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment