From 1349dd3b3ec2bfbde0377187af1762b09600978d Mon Sep 17 00:00:00 2001 From: Ludeo Date: Sat, 6 Feb 2021 16:41:20 +0100 Subject: [PATCH] Updated for Ritual league --- delirium.csproj => DeliriumComparison.csproj | 5 + Program.cs | 113 +++++++++ amorphous.cs | 4 +- bin/Debug/netcoreapp3.0/delirium.dll | Bin 91648 -> 0 bytes bin/Debug/netcoreapp3.0/delirium.pdb | Bin 37272 -> 0 bytes blighted.cs | 6 +- currency/currency.cs | 43 ++-- delirium.sln | 2 +- delirium.sln.DotSettings | 2 + essence/essence.cs | 63 ++--- foreboding.cs | 6 +- fossil/fossil.cs | 63 ++--- fossilised.cs | 6 +- fragment/fragment.cs | 43 ++-- fragmented.cs | 4 +- incubator/incubator.cs | 65 +++--- main.cs | 101 -------- map/map.cs | 218 ++++++++++-------- obj/Debug/netcoreapp3.0/delirium.assets.cache | Bin 20033 -> 20310 bytes .../delirium.csprojAssemblyReference.cache | Bin 108750 -> 108750 bytes obj/delirium.csproj.nuget.cache | 5 - obj/delirium.csproj.nuget.dgspec.json | 38 ++- obj/delirium.csproj.nuget.g.props | 3 + obj/project.assets.json | 71 +++++- obscured.cs | 6 +- oil/oil.cs | 61 ++--- resonator/resonator.cs | 37 ++- scarab/scarab.cs | 63 ++--- skittering.cs | 4 +- timeless.cs | 6 +- uniquemap/uniquemap.cs | 121 +++++----- whispering.cs | 4 +- 32 files changed, 640 insertions(+), 523 deletions(-) rename delirium.csproj => DeliriumComparison.csproj (59%) create mode 100644 Program.cs delete mode 100644 bin/Debug/netcoreapp3.0/delirium.dll delete mode 100644 bin/Debug/netcoreapp3.0/delirium.pdb create mode 100644 delirium.sln.DotSettings delete mode 100644 main.cs delete mode 100644 obj/delirium.csproj.nuget.cache diff --git a/delirium.csproj b/DeliriumComparison.csproj similarity index 59% rename from delirium.csproj rename to DeliriumComparison.csproj index 6e4a9ae..21ef91e 100644 --- a/delirium.csproj +++ b/DeliriumComparison.csproj @@ -3,11 +3,16 @@ Exe netcoreapp3.0 + delirium + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..7a9a11a --- /dev/null +++ b/Program.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Net; +using Delirium.fossil; +using Delirium.fragment; + +namespace Delirium +{ + public static class Program + { + public static string League { get; private set; } + + public static void Main() + { + League = "Ritual"; + + string result1 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + League + "&type=Fossil&language=en"); + Fossil data1 = Fossil.FromJson(result1); + + string result2 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + League + "&type=Fragment&language=en"); + Fragment data2 = Fragment.FromJson(result2); + + double fracturefossil = 0.0; + double simulacrum = 0.0; + + data1.Lines.ForEach(x => + { + if (x.Name == "Fractured Fossil") + { + fracturefossil = x.ChaosValue; + } + }); + + data2.Lines.ForEach(x => + { + if (x.CurrencyTypeName == "Simulacrum") + { + simulacrum = x.ChaosEquivalent; + } + }); + + double timeless = Math.Round(timelesscalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double skittering = Math.Round(skitteringcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double obscured = Math.Round(obscuredcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double blighted = Math.Round(blightedcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double fragmented = Math.Round(fragmentedcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double fossilised = Math.Round(fossilisedcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double foreboding = Math.Round(forebodingcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double amorphous = Math.Round(amorphouscalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + double whispering = Math.Round(whisperingcalc.calc() + (simulacrum * 7.5 / 20) - fracturefossil, 2); + + SortedDictionary results = new SortedDictionary(Comparer.Create((x, y) => y.CompareTo(x))) + { + { timeless, "Timeless" }, + { skittering, "Skittering" }, + { obscured, "Obscured" }, + { blighted, "Blighted" }, + { fragmented, "Fragmented" }, + { fossilised, "Fossilised" }, + { foreboding, "Foreboding" }, + { amorphous, "Amorphous" }, + { whispering, "Whispering" }, + }; + + int i = 1; + + foreach ((double key, string value) in results) + { + switch (i) + { + case 1: + Console.WriteLine("------------------------------------------------"); + Console.ForegroundColor = ConsoleColor.Cyan; + Console.WriteLine("{1} Delirium Orb: {0}c", key, value); + Console.ResetColor(); + Console.WriteLine("------------------------------------------------"); + + break; + case 2: + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("{1} Delirium Orb: {0}c", key, value); + Console.ResetColor(); + Console.WriteLine("------------------------------------------------"); + + break; + default: + { + if (i == 3 || (i > 3 && key > 20)) + { + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine("{1} Delirium Orb: {0}c", key, value); + Console.ResetColor(); + Console.WriteLine("------------------------------------------------"); + } + else if (key < 20) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("{1} Delirium Orb: {0}c", key, value); + Console.ResetColor(); + Console.WriteLine("------------------------------------------------"); + } + + break; + } + } + + i++; + } + + Console.ReadLine(); + } + } +} diff --git a/amorphous.cs b/amorphous.cs index a523cba..c7a2031 100644 --- a/amorphous.cs +++ b/amorphous.cs @@ -6,14 +6,14 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class amorphouscalc { public static double calc() { - var result = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + main.league + "&type=Currency&language=en"); + var result = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + Program.League + "&type=Currency&language=en"); var data = currency.Currency.FromJson(result); double cat1 = 0.0, cat2 = 0.0, cat3 = 0.0, cat4 = 0.0, cat5 = 0.0, cat6 = 0.0, cat7 = 0.0; diff --git a/bin/Debug/netcoreapp3.0/delirium.dll b/bin/Debug/netcoreapp3.0/delirium.dll deleted file mode 100644 index dc203741c4db7175bea76b4f8129d2c00f4e3135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91648 zcmd?Sd0-Vq*8X3Wgqz%(a2Jx0gf#)d1Q2mSBB&&SLKIL$1QaAe5u+j!+#`^P3Q-hs z1r;SKj&VV8S7anIia{B5+#OVK&p7VmI*xvy=k%$2Z%6a0^Um*&cYe%pIM3&tuCDH` zI$hlzaO{znnp9&<8h-!ulQ9qBPyQ+s`#+mHgu^`_37h+ZTZ-M(Y^fH-tkTFxOF&Q4c{%rV#@aym=dq+RT>o+{|2WIV2)jee*euF($T51H->-nuO2D2*fgzQuawmJ;sEe62@q%Zlm)o7X~l^42Q9|+ z37LLK!!Y#H!~wvV^nf~=n!F9Jn3p0Bw!!J~fH(l@4u}JQ0p(?g0}ymT9DtAm;s9hi zAPxY|ve$+<0396=2O#W#H~59(kh>FA$_>k#UbKL=+& zWcqZTgOiRw=ipR_7VL)B=HML1!R~FqJe==PpPprNaGFELOReKX=yy%(a~OFk#W>xe zVw~d8E}c@J!&K>-ApLEg^d-gYkG^2$#7ycOocvJF%pYxL`hc{Ytp2-%(^BVPv;Lt# z4KhwC#;Ff=3=RmH&P&;TR{zWz9MmcEa0NnVXGnXgrVQ<2qnJs{k(RPdht!-oxF#XY z&a^e$Fcj$gqs__~5JgB@)^KJG3a2*5iCoBy`VE{n8AYm&=YvOvDb(i3FuU6vS@xh5 zGXY&jq|I@q=VX-*LnLu%*=ez~j=|!?P@1wk#5xpydgcv%2k#8$-31i|1LyZQaNp~j z-EH7FaTy-A8pl}L3WL~FA6$CU-~u>fmu{ar@N7vU8#umnvzKvDL%BODM1V59@$036_eH~5w2dNVrP$!XkxQmE`)QJwLlemk>n8OST_2WGR=SzP5Pxp{1Xe;?1 z@{6|&Hp{}A`?JD|>D{KVVvnq?xZeN9J%c-F|DMqysg|_4XK=&cd(T+M`OM?zd_K~h zQ*i)}azGr+=URYb9It;qqcnMAKpbp`D&YZjeqlZz?NY?SHq#vt2cXgcaR90u5C>p} z1L6Q22cX6QaRBByAP&H(4u}JAngikhobG@)0B1NL4#1fX zsFRqaXSs+tNIlyDbrO?Q29iwDm;Z;E`HK^gn{u?C;~EzSV7>$5V6@%

c!VAFT^q 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 diff --git a/bin/Debug/netcoreapp3.0/delirium.pdb b/bin/Debug/netcoreapp3.0/delirium.pdb deleted file mode 100644 index 8063ad2a632302915108768be7c7e34b1c69e7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37272 zcmc(|2Urwm*Z)6zv#h%mv5OrQyP_zHSP>9JK@@B3Dfc{C&@q<*=A1&-;Jh>-u|nX67^ByPi4sJ!N+mzaE|abdpY@ ze@?J&0e)_yJw2MpJ0ycN0UOb zJnPv>{`K^d(Zf!v=%JUMV{PA9FWqfoC%tTql6> z!TM-3JL#KddMVY*PRjDqOUcdcq|D}escj28DYS)N3TtU64Q{EIruo=OOMLXwZ>{Vk z(ONInXk#ZeZKIbWyC8iRy>uAs>safg0X1||1Z)Is6zn0n0sDW$_A8iFQzsRxN&D!Z zPAU#A3#$yP39AqDgtdgVhXukyVLf5}VMAdtuteAx*d$mMYzAx|>_b>SY$I$tY#;0} z>?G_o>^$r{*lpN-*kjlW*c+IgyH0X|m4vy%s=;c*8o|6^tzmw!U|2U;AJ`yRBrFz| z3>ybacUStBgY7)nLf8s*-+F9sgYAPIQTLs~_F33v*e!M6J#0UQy@dS@YgbDtb4D$l zG#|DM_Ez1OQ(M6A0)7|pyMW(?bg?$27x24)-w|^)1@pUr-v#_G;CBJP3;12Y?*e`o z@VkKD1^h1HcLBc(_+7y70)7|pyMW&X{4U^k0ly3QUBK@Gei!h&fZqlDE~Fc1+mEpG z*!~W78+IS|81@4824?3j;CBJP3;12Y?*e`o@VkKD1^h1HcLBc(_+7y70)7|pyMW&X z{4S)2sNdF(+>W$gFo%yPdoV24*s-*KQW?UJz@P}Lt!zn zMA#VEBv=+~25cVeLs&j+BWyctAM7yf24;dEVdt^^9qcEx^%3kbwqL;B!0g=Z;7>dF z(+>W$gFo%0=ScG!=7sInFh5u@tQ)KkY!ECG77I&;JwzRfKkXzPW*Z}H1@^ntB_G*I z<-yf30}a6J6agCn8wHD$b<7mleg%_i>Y1PP@RJ^X(!)=B_(=~xVHSh6gtdnS!a`v^ zVf|r4VKJ~o*cjL(SQcysY#!`GSUzkcY&&cp>@e&GX3HO8=dt}A>?h2ck6@3n{Q~v| zX6LSlpY-sP9)8lpPkO|i9&x9KpY-sP9)8lpPkQ)C4?pSQC-e~(3rmJQL>-Es^imxB zkpdeJ%T)c4i|u)^rLZ-y@6`QO>)FFU_R=t{N5Ya|>+6wk?WJwl-V6H#c0%5#?Eebf zvZlTCE!J0I-^1>~eue!G`wJ%O+e;=`30QepRaidq)WUi@)(x?425SZD0P6$`gY||D zgbjm@geAe!U>4X^*euur*fQ7}*k;&H*nZei*eTf8u#2$kupeMQ!=A$afc*`#Z(uJu z!SdYgrP5eegw<%E^ld%%ZG-KDDdW>#st>&>tQE`;Hdal07~7x0zJ}FmsN~Rm+2C20NX$Hin0shB%wx)r_rvdS4Kzteyp9aLI0r6=- zd>Y_)1LD(w_%t9s4Tw(z;?scmG$1|=h))CJ(}4IiAU+Lc`6-#o*&&@NqGzcH?4FBbXPgHO#Lu`MQ|Y8Qa}qePM%P z+v*iVd>503V>=F(0voTU&A|3F*lgG$d7n~-s9#K4fqm;>TVT6k2VuuyU%P>2 zuoze(Yz%A?EDJURHV?KGwg&bQY&YzXTGk0{pKfA=uZ-}O5%Fk5JQ~&Wv=Q-WL_8W1 zk46@cM#Q5L@n}Rm8WE31#G?`MXhb|35sya1qY?3FL_8W1k4D6!5%Fk5JQ@*?M#Q5L z@n}Rm8WE31#G?`MXhb|35sya1qY?3F#C&PQd}%~H8WE31#G?`MXhb|35sya1qY?3F zL_8YdHzVTFh6GkbwjtTxW!Jj7h(*%E- zq}8%!fG{K)H z_|pV`n&3|p{Aq$eP4K4){xrd#Civ3?f12P=6Z~m{KTYtb3H~&}pC>~PZRuU zfG{K)H_|pV`n&3|p{Aq$eP4K4){xqrn zG{K)H_|pV`npA(9;7=3$iFUyhf10Gtp70BNXM~l2?NWV~TgL(Zbbvn{FqR!KmK`vb z9Wa(1)UoV^m&I8(%lZUkN%aAbbhohDH;7rN}2w&T}pZ+uS-iVL8Ya!LA0-o z)H0ZEO11lM%$anbYGsT+T=Nw$>A1Elq}wBfmY?q5DUHUoO=W0I+lWCcla6C+WzwA) zlU|%L=`M^(FTt4fl8i|&#hCQcj7cxUnDnxYNvC^s-v088Nq1#T`71Ccy&_}MD={X$ zGGo%KFebe!W74ZJCf$uO>D3vNUV|~|H5rpmCwksLy1CStbh^3HnDW%0G$x%+v>KC6lbXh)(_qz@bQ-K0lTL$H zW728xYD_u}UX4ljW=uK_YOd4Z)|hm9o})44r$MhV=`{E?CY=Vq#-!7r*O>J7j7j%p zOgc>hT6)rHBG8!h0LG-_kys%;kTK~&j46LGW70b_CcO(|(nA=N-jy-wVT?)d#+dZ( zj7jfdGvD-N+y{Cu#uU4~8Iv#ifCYL?|9oK|fN2J!e~z$zj46MA#yya10GOV5(Z5e% zgTVGI|6uIXnA$&tF}2^!nDn8HNsnOV(R>=obV@&*F{O`UOnNk9(nm5TJ(e-)ag0fi zXH0qmW6~2DlRk1m8fAIF&V@r+5Iz?k%j zj7guwnDohvNw+X2J)JS>8H`EKWK8-L#-wL4COw-m=~Ee#p2L{*X^csq&Y1LE#-z_+ zO!`d5q|ahZdLCoaXEP>!4r9{iGA4Z0Og)!+@8I%4U zW74lNCjB~N(r+*({U&45Z!sqQd&Z>SW=#4W#-#tinDieRlYW;m=|3?h{T^e|?=vR- z0b|mCW=#4+#-#tknDj@CN&l5G>5mzc{)92TgKf1R#iexmurj_H(M&zQ=yXH2?* zG3h48q&qMs-H|crPK-%+W=wi<#-zJ2CcOk>(n~TXy%b~8OEV_D3}e#EGA6woW75kr zCf$`W=@l50UXd~Bl^By=nK9{A7?WO=G3nJ9lkUct^y-XBrw@zy@x}+VRwf-EidvcS z;{#DElU|!K>2(;BUY9ZH^%#?0pE2nT7?a+RG3kvMlkUNo^u~-yZ^D>#PsXG-WlVZA z#-w{OCcQah(pxYl-J3D#Eg6&U!o`t`dG%Kr!gjd9AnbQGbVikW6~!wCVdiP z(kC+}-NKmkbjGA-FeW{dG3iqnlb*$x^lZkYPi0Jc4r9`%F(!RFW72aOlRkqn=`$IV zp2wK<*^Eh_!T80?_V7rx*R!Hz1^e6*A?qS9*G+!E+PU(v=ru0U}q?;I%?!cIIN5-T(F(%!aG3mt_lkUQp^pcE8FU6Sj(u_$j z!zq*r82dL_oBS7uCl6~?4jWlVZC#-zJ3CcQdi(&G)!)l}WF~m~{HGDbJ5DoLZUmx{N7*ea56WU`%>L#-ul5OnPI+q&Hzqx+i1On=&Td zi!tfV8I#_EG3nlnNpH!RbRWi~w_;3sYsRFvVN7~k#-z7nOnQ69r28@^y#r&?{TP$( z&zST8#-w*-OnQ*bcibbV}ciF{SU$nDlVQ zr1xS>I$Z8XrKAI+HbF^owc%b4^u#-xv9O!|1nq)%W>`b5U0Phw2^WX7ah7?YmP znDh+Bq-QcFeF|gJvlx?}&6xD5j7iU7O!_p&q)%r|`V7XT&ty#cEXJhgF(!QuW76j` zCVd`b(&sZKeWA^Kv4}BU|14%q*FQ@b`++|MmtxmH%fO}C_0MwDr!m#Pf-%*J4 z7?YmQ%A@&g4bv(8TE>)q9b?khGbVi#W70P>CjBGEq;FwN`c}rI(>q&Q|484?nDiZt zN#Dts^j(Ze-_4lxJ&Z};%b4_ij7k5PG3ommlYW3P=?58;euy#YpD-rFed#d zW73Z?CjB^L(m!QP`U%FQpJYt>XN*Zd#hCQZ8I%46W75B5O!`-hNk7e)^fQb}|C%xB zXBm_J4P(;JF(&<6#-yKTO!@`Jq+euA`X$DsUuI1D6~?4rWlZ{aj7h)7nDpz6Nx#9E z^qY)Hzr~pJ+l)!S!q~B*u`UA$KKeU-Ieql`W*(1g@pZ&_% z5BwNhhRtVB!DZQe_6+rDO!fc9nCgGdnDpNnlm3D+=`R_R{s*g%=DSx+r}VEGQ~JLc zlm3P=>2Dd6{x@UN-!Uc~AGccjM>=k2txP(aXJyj$j7hg=OuB(F>BSh6?!cIIN5-T( zF(%!aG3mt_lkUQpbb2?IAFq;(NiW5i@|R{zdKt!~mt{)W6~=yCcPqK z(kn40y$WN}t1>3N8e`Jk7?WOuG3j{G&*~4-@p7J(Nw3A2biDjmNXH9&Rwf;<5?h(_ z*Jn(61IDB`WK4P^#-!s_WNUe(H)c#aUQsTj<5guVla5!EtxWmxsM-RHn}& z{J^zUzJj^}zztRY73l-9uZhYAlpn;H+Sdu`HGQRCVPB-DxTDYBIz#WE=05;E1l&bs z9~96P++F4B_PAdJ_f3f0)s7&9*=*^hE>(hsE4)_Dc+rj-9Hw6!1Oy|adjB7w2 z%y{(ma} z5z-jsZ|oM6zh{s4(y+%Qf2SMo4`JI;8iJ*hR16JumcNT!T>gfSi<`?wvS86$_gLJj&F>KFnb`0C=n@Q33Qm~g4jj`_Ki|wH1zS!>9+=6Yl78YzbY9Yno z{b6q@#vnCs>5J{|KEBva^s!+3bSn$CZ?!sx?dPqJVcXP38euQJ!_pu*wY6Y-X4_*} zI<>ovWpq2Yk@nKrcD`8t(awTpbKg~1=J?*ma$yIzSbOPq2VX4TcDRjYpuZGnFWvC> z#d3C_11*0YdLsuY(j)NHo1v3%$#EOl#(KoQ)5#+WooKY zQ<>%8iGw3joL$b<%h_MDwBOX+F~zeMZ7KKX(C+O|6}wP!b`R-T*cy?)F??|9XLF8p z+_T?p!Kk0Y4~Izp>wQH+@P^DLm&1b7Zb_EY5eadLF|mOPtLH`=7rk4Je$(*!D!j78rp%Z z!(-wjrJms({5v)b=;+rgsA1QRJ^jPNJ9g;Sjcqm?+(gQ+5*ibcl#rY-JjKJm2M%7M z$FSH~%nr+Pf8Q)waI5XKSE^NKW!HUP8#f(u2|Hhqymw4;syWuroE#J3;g7&kGlqM8 zfv=zIq`Uj>{5qw}#el7$x4WDeS0e2F8I{U*cMn=bm91X#<4Tch>OA+UrLW%&UCDwx zePZI9HTCG01P7(WjE+oJD@$tVbB{8fJrh6J`$S@=gI%hY_sFmMJT5sRAt^RysG4kP zy>t2WCA;(AUGwu=u{n6j@?GXNDHr?1N2VmFnB#|;lZL4&uWoHKpFVE>G401O2K}?Z z?8sR+24r^a)irWVNeYmpjb(U`!Q~kk}#Cjyy4yBUrDR*U@>}o zWvAah>$EuZgBm^mXxQvMd6gsJH~Y#t={BC^L?2IEc%;4m4(}N={Es%T`JN2HadD|B zW{g_3u9jh~pObU%R=HRssn_VRS(an|&78XE-jlU!LVQqUJf@NeHSdmHgXMNM-PU%6 z-P0a{3!XGB`|-1vCEk;_M`C0|j5#)DT%>laoZg59)XDOXUmaZ(KcMT}noqiYd+5Mh zYv#Dbgn0NQG+|g|tVf6V_=FUBY-tW|@m2U#%D?pM(~lnoo(?(KFMYz8iJv!mfBpbW zwMEM)oo)Y|4$@Dajia9LF$K;1^Xyi`rjpm+UxwoAl|4$FqCB-W+;r(S488_cM zZGTK%Uo@-ctE+iiL)Y28iGAqz&i(z_d!{8uBE&G;;WVHgxpPO{S4*q#V?bXudi&?y zv7zac44xkT2R^fw5I;O7Dm6)VxSGZOkELHxn|I&$9$Mb##}0e?Hv4ARs1Un?EXfJh zs2aTe@I7kbfic;~D;zL({m7!v?(%I!d23?pgwuMd-?x-<=U>gduH4@n{PFQ=?_!eX z|E#8@Qtypx|y?*sshj|9d)gv;cR#)T9V)D3|h1kSkst)9<5N9m0Y) z`X3*-u|(AYw022e)ri3Yb1=@ArAm$;;o9u}6wIVq{PFOKbJ(m*HiN#P(QeWG(`{?Krx8695@NNsk1-^irfkb^wyf;wSkZ6S&AOpPZqSap_jQzyIm%$bkLdE-rmJ>WgJs=}G1>1tm`GK1e=0eg5*ZXLlS@ zd^3AaI$LMQ-f)}5MJAJ5M=LLqj^QbEnT=oPwBFNsVVl4uGx8fnY5CIP&2gCV!Ug&s47Z! zAN%K}{GKBAm%o0x|0>Vy zzr{Dc!Tm)KKYwqQfFxYzv6*Fyq5e-)U+ra=7T$d2-F02R_SqAq*tPG?TqHzuOHEr! zx!=94Hz@D(#r`X^9KBmz7}e&zx%-$?BBHI6Ldc@he^A!vhh}w;@!u1=?aw8Rh7NS? zQIItlr!6yXqI%%I1())wBj4QcUP8T1`_rx2?=#ATec01-C^zo~%NH7n`sovVzSQ&-=4T2N!Rm_%#pnoAbHqtri*-!-nYv>u+zH*UD-dkbeE6rWwtg9ojgd* z9TF2iN=?~+#Pj{spJ`IG{q8ZkIGnlj@W;;M zUIi_G(RhhNiO;t4T-|UliEG(dwW3BxUjIhZ$(^*5PcJrg4_th3Q*)8Ejg?)jZ>{Wp1bdG+7xwi0(jW^Aq;6fbh?fqnRM6pMuS*}oXjOLp0 ze^0(msV6j8Qtq_zUdWDBd9`N#FzYT$-PIfy86JsJ~SoZpp?eoZwzxaxkXZ2ac|A8kB# zbjPH%H&~wV$Wf`0$<_;`gSojMQH}#q`%aZ!e#vil=G3UHwa$(#M~_I{5yhmWsUFbp zUps}4&PK;k?aixpgl`A?c&>zqk+_Rgt4VA7Xew3n>+Pd0I*vFKoHu7p{qT`HE3yoIB8U3N#uVJD zrF+y|MaQ&TRFAC_y3h0f@XzzV?=1ONyG|tkB1@-8^RURIf_px-z7Ai$olgz)cfOas z_2^!|sYCir_^hnwqr&y!QfsW{hy!E%)=`f7S>ryxaW1#ZzR^k5>kQWqES#f<+N(k> zHLVYqk8MEy(>+}lhXx&4G(CRBsWS`SpH(?ctP837hN|0e<-3Iyzc>4C9{BL3^YFpi z`0tt;M|Xpo`}U5y_lQytKU1;svKc>j+`Z`L#_O@4Icqg&se9wb7te@PCu}z_o=4G8 zaYX}j14m!~-FL@U{=3tW-D<9|p(Bu7xd~Jnb;GycG;(=ZO2d2Y^N)pEwr==z#Jdt& zqrxMHt9RBO0eA>TXM;i>{66ayHS%_|#E4dPM}({?^LyTm4+ghat7Ey9+MM@Hkk7`y z__?kbvj2AAf%PvZj*j?Ey8vM6JL2Jn+9&s)eKu1d`L8V5$t`YL*M;t3wS!8;`V_51 z&J-LX-&gZ-J9yHfC)7;;O?g>E?nZQ+F<^6p(z~~5qsq405PBv!CX$wF6Dof>@(L9& zZ$<4Ljg~(RTT*O6`%M{rBi_>l+qDIw#h7_<$bp*I(|lcH_|K(1m--OzC#!sW#=ZMi-eyD(Bb9rh_`JZP)p~y?)tw z;r@GnwXAr5c+ooPcDBeB-bWR7{!UH4F>7GgI+ynbt;n0uXuyjFq1Nol@{LlmN4Pu^ zH6P7sf0A-t=pO#V=T}|_ue(2SK)FE%EnsOPrrRsZrEG=DXJYFO$B@ylDSP13w2DFQ z`@?44&bQn;uzFXKN|k#SwbFYN=d7h%&%2k&7yGt_9L-ylAG>;;LCd9HXVVoat}2px zM9TA8vPZA@Wb<(C^29gcU@jHn_~q67Ny+`X94XOu_Tm=py8l}t%2PjowJ8Tq?Osi# z{NWro_5`yn>6U?|OfFkXlw}<9_$eXNm=_ zYj(e9bo&79sepDf5{$=lNePKoA1N(8AnZ=iOPc8ehCkR}(KC4NAHTPG({1!dn;LC1 ztA!Rlhd!xNMZS2w?D*Ia)VH$#_S1v=PwqN!%DyCe1?=(AD7}`0Xi7Q$b9^T{GtTs#LrVO}6FEYj__)hvHqjBh=ej7{ITl&ElHu*vl z=tQF)-n+Vci^+-k&$6$M?o&Q!Q>hm2t7AsDu*qXHi~m^O=NB4@iPc=}D)b2Ju;S#| z9W|uCPuS#w&*kTNeA24?*^<3f;l`V-H&m_e7rJk0r8z%cPQL#ivj)mnEI5u@SDSsa z`x|P&=KH6w-OJb#wlMr^gDoZUHvGp@*kj$Ed*0ooR_qU`_Oil>njKe6JG}e$? zyc(#5J5Xdo`eNLX8&pcYv)TKq?ETemp6|SSxzpZi_Z-?$EnG_9IPF?*(~))QbXMDY z%lGDoJ~KLgydm*;i+V49Q#)b3zVVMW$HZwpuayxFMkU}P^6~dhy3yFRWYD4IA2z&nE8^&X%-%6RLjK@Mjl6bFV^@*$?s)e*l0MzN z^T(}2PV9cLRttoJ-t&$WIRsa;yDz7f^pwW0jeY)E*8|n(|8Xk$jur^-FQsquCO-an z)EP582A?`v@3YE!*3KcPxYy`3^LYNtfPMK<>;8D=`-yF@lu^3xZq^cNf4K)IN3DGN zHfTc`zec9?3D;~>qsj3RF^OjFsE2qpIYasST<h|4q;^O* zJG6{D_@frpg|ieneKhS5`z_@jIkQq`48F}*X$f(p< zb5haUZC+N=!lh?4ZrSN$Sr7kcb9{WH_0i+Wj6nIL zge&o$E{oG0!*6RI;Fm~*z06N58`e%qwdv5>6}>vtwcS87lsXHRqT$Yc+Cd_FujVT_u4WA^y9 zRPPV_+PhCb^CnpjtmNG|1&8ro*@T(C)heD2(`G-tJ zj{CQ3bo;5v2Fs15BTef&t?@o_ZIs^8{~z+(JcYQMdqN(Fi!07Ku+0C*PIJ9?RA@Rd zRJ(pCI3miH+R=~PeNI!GE1rz0pS-bqry21(hcx-U{trd#l#fg|JVjP>j_!N*Pik$k zW5-t=8g(KpGyB?Ow_4@2Q!T3x9|ddY=kjmt?Q$7U zn{mmfenzM`^_yS5mWQss>-C9U4YNCJa&NTr;l*F8YYpT%Lg-5dYV*8iiyPFjq07E+ zu_0=(|N0+Nf6bY6;h>tYH+_AeXKG@>V?^IU^0SkS^j;ZLQ-XpQls^B>g55{7o1TJE z=H)ncJ@xxttx63x*G&!BbH2CFv={ZXi&;uY4_SJp;L8ivyZNv8_^hN%<(D)y_79%n zpZB`U?+5zkS5sR6 zC?R`%)?@ym3smgKzHamSTng>HXIGW{2N|wQ)FxAE<<6qerT%Kqu+{YTYs$*hRm(1o z4qTqrpu^gbYuc?XY~+_7u^Ns#ubBxUOxkPv~} zY3rkoPs*=bLqqiTgXTv(R{s*5vAkh;{_UwlSo@I8CR2lqHRq_FFc_UW5L&u&rkGVDCQj6EOgo3Z&xTKTxD`_%(ZAF8TV z7+>|1KOGqH`=iBe=lvC!e$D*RVX^Y1@NZ?`D;Zao_OYoE=469%6K9_knV67l#HY$J zNinH$rquWtJf6ZASe&d|9udhU2ju^n|1|$){+rcyt4*s*t*-1gqIPJpkPFlHmrp$O zY}$*oStHuqdSj~OKIvz-TbWCoFCQ^T_?8y^&zPV7*hUvQl$_Km2F1poYb*m@qR)45ly7k_btR(OBbdy(JN)r0Tess#ama?iZuUgTcAdvK}>d33M z)s+=~vmZNs74lWcUtKkjwLqnmK&6!6D)P=?rLYhsUx<<+OkFAY!hPkG;T`2wFQqHJ z=O7=LV zEs0926P4`AitCb<2pFx^p*@abzMtY=V)vEl0WIWD(9*^ zN98#x&sTZA%eDN-uh8;)18&3yIba=_0l9gRq*_unr|<;Q}a<3x{3ep zQWHZ7wegMh__C+m#Rk@`hSsfueFa;MtZH+$F^+P_-7S}d1%^d)~zCr*f4Lya<|(bY~FqFn_s(r5MC@`sQX{3l~11QRAyNFsDpc=FLj;S z<~EfWVwtK;d3}{Bp|3I}L@8r4N*RBXmGM4V9XJ{4fSEx9#;CWifB!mN@r_lT4LT9WA31&TW`5ZqmlB6ILH{{^onl?ku9();T5v`=^FcF#dQ z3*ys}vg%oDQ=0X}rQ4LHIB>Dzz&gq-Sw{)w`pVQn#zFtbc zzUoTJ*IyZq{gvT3NNM#TB__=ZnH3tQo`aMcqLebDl)^?RT^XSyiBqbLQyQ44bSzOh zG0|VjL6{{gG+N0%T4_s~(&{uN`vk>V6O`jLSq?{pXB{<68`9dxvYf)xQEyqThUYFd zJoo-j!xP2mEXV#Y!t)!sDV~;#UVY>f#+AZNu{~j=mwE3Aqso6cYglrO)Y@nN)LPpU zMcx1UL{V^3C^%6RY!#^5DT59|Sb90R$Boh}d5xqVr&s-#9`BXPI^Yypj=Jbdi-N84 zR;)lecF0Vu)oaokFGdmQ{4Fz`VUq z9T>aSfw8afvHAB?sRM=D@qcpi|KwD9&Sccy32@Xligb0`t!?++7IxUxtX88d?>_a2 z8|Hqj`%TNC!NVGLf4O$a*0iyo9eCy<&mpeL1%+!HnJOt0OQm|${mzz|KJwn`%KTeh znPc6RiPv43t?DcDOnqgVYNSkPjg%RwnKEHFQ|6!+%ADRpnGby%%SHPuN&J;0fl6V4 zN@2lDhF~Q_h;p6?QJNH{OnqVa(_WYe!DUDIx^yPc(dhxW8Tj8{(BTVok?|3c4(hr{Q+5v6Im~Tf zc>P}+El&5S?t9Q{q+wRNJ;nXn^=Usp-1GU?;f^L|hbe}_(N5+aDDHhoI!sy!d05sM6w)~ob(d@8iz=8s;1MG z(OGusrd%qgE2hK0^zp(`dp)RV`)<2=ZvFe`y33|pD!*J=sr5C_!5e2za=zQJ`4sy# zZ+2|0X6Tw!oV729+E<&}XUU=W^ss4^N>NiCrMk4JSY%OB935rblQIT<16OB5L%d;X z$*zjmZ|LWO;-oTk;z1|MDxKJ@v)tCDkJe>>t($5tr*oj*WQ-PBp2E4{t)?Pf+P%|l z^AF7*Huh|_Wa_8CZ~UnA*sljHnWJCaqT#Z-d9RnB>wc$qUl-P;In<>la+hXNmzw@- zmrBC%qg?fd+Gu{7lVn*VIqT^NinLNn!*}C;QkR~m%SzN*-A7EhL9Nza*ecTMJyCA2 z{U1d)Y_@4!&9|2aJUBWhB5iP)$1@%KcbUI-(8*z8gEB2EOR#3=QnMS{G#d_d!MU>` zEvo+8qBtcfF1cYLj(n?a%KV=etquAkFVOpOxZUsRBxO{QT#SW!zg1`XS(l!r%iW>& zKC_d^t%lxPUrj60`@NBF({uG>qkE5>uz$~o%XA0d9Qt~7RElr?UiE)*URPsP=;8b0 z=>^fE!{k55o=rSDQFuB@l?yGzk>iX#4f?jOI?Ki3Qu+?b*!3n_!_cx{=vT7{#v@T>U zSo9`AMk=-e{mh#SjanCFs{rMF^1|Jk!~uUqRw_n+1qgoy6W4wAQgz9jMkszv*g+UE z8AGEdLxI$8v>1ONQQ$9ml@&Nrfr5VTRnYJH(l5alS5xEN@87;T zP080~+3B)kbXni%vYYF&m*}Qe(oO4am=>#>7AvNm5V@npjI&}^fU`YKN3BK1Ju!8p z&QW_Svq(hj_jlXW!~Wsx%I~UtQGLK$2h+~UQPr1CZPj^B@Qwi&PI;a=df4(!X%^gU zLYhO7ARqqHboia5`YcqHNG>hx-Y=9Q;eE4mN#STaA1mjWlA`o`g$@RN=?WzbmTdeH zxM+9G{Pg2tSeoVKK(@ra3Vvfrq*dkf;9TA8M!MN+baN``=H%$+JlAH0m15>W;au=0 zY7x&J81MFNpH7Pp-|((Ae&%A=_?Iz%Tv&K|*FvXCH%dQw*eWjl-KlgJ1c7y0$fh~5 zKFx{pXelmv{8zJ@3r%+z5H!Ay9MU$4%Zg@H!vBY24i_%Q^Z%e2ONK%3>8eW)OgBpD z<8n8UN;o;4L6DkGSw|?}X{4mSevdqyl3(lF-t>?^tJo%ItN5{M1$48se z!u{VCB`HZs`9PGU%OAcV#daSh5l1fADkThhJJ&#iJEqCOmf6xIyJ14gh?gol6uQLN zuCqMRrBBt(ana40pa$lY#v=Q^a4vXTx`@9%DdScuVOY7@esMj&u%8p^FxzKE?bvHo zKlYj1?ZpSXM{YmXc%@}?Ip(i|ll8w}*0Jk7N4oN}Ifp4IyXU>id#=E&=|bdFx3GL= zStezyk(`W$PH$UvGySyFTbvl{iYx4L&N}?irV*!JJ9@Z}i*9?Vv0kV=S>{GITv!)U zL%qNmPLKSQUPvA`jPwP%PK+um(r1Ybdyz3gWIPj@(IWGPm=Ydc0nMq1=HO!mx%#qd zb84#9mz9gBhYU*d6c$n~8?L8T$8@=RnRWV6r9{Rwk?~Yy_7Rz%iYX1ml*OGYqV6WB zyOLUW8M$tOPa2fE%BWqdX2X>^qiaqgD?nte7TJ=>9@@7OO09rW@nMMEql#*e>Z-Xa zs-?n#s;)TDmT>^&9?0p@0~e7oLS$SQnIR(cxR}zywK6Jdh>ARgu{s?|*>z}+otW|@ zy=4{Ev2JQJ%B#(&s#aTGb*$UJa22%~T6*M{o24=G7h>D=a9$x@OYf@IUtQHT{x`jb zO?s_8TK>X1E?Wwv7gFK!g;c11xYTV^ z3k)0<2lh0O3UN~#ZmxDni6i`$#=o#_dRx}=S5gm%Eu((<0BX7xmkJ9Bam{ogX(REy zI=s}x?I_5)hniWLs|7x+RWfUHuU44G z&A9%*$_z)g5t+Nh6b~_Fm&o!KS$joxGm(8jO!XC0kBOX?B4@vt<|C%<7SrpA=^I3D zZIQb|%qSyf%oQ_B%Cq4Rc)m#?&)Z8{RBN8sPB)rAwAoPW5?J<^%xIO1nEADs6(nYz z5P3c#Z)?VCHyqA5NGl{(MBJZJ?-ABy+Ow92Vb5@DDE@JL@G52RNua}s2O3ZH|=C2kDN{R*P zV!>m1ELO${X|9ft%IYNn<{EkGtgK#{c-pY7uALF&^zvAo;wPqjDzZ9=tivL^P5M|| zkLWy5lkGJS!llr;4IVDUI6{S3I|ACdPCJ4c+v?iMT+?mSYpl#V@k+WA! zt0AV%7SrB}=}}_(C6OB-au16c4aJNlVy3;AIZDjDD`pK5v#yK0P9pDPF}tpqJuiK6 z4fR?@yOL3^jP2>7Up_v{l`(zbSD4ZNLb^7>wDh*DO(*}YuH9s4cLlbrm9OdA^rf*@ zpT^p?jK;RQE!&o--Q;NbZOhZ*L({c*RaoFVNJ>2X6Km6}tmF805g8Vd@mORI6q%>R z6mKzQtvs7d7Fmx(c0ZAQMoeudrf!k1Pjf}i8!>I9n08G}?<}St7P%fGcfQDdBW4T} zGtSs03>{%F|0s!bd}IoKgeel=B5&r=#KVJrf(nS=L~5x1Zb;kFBy_+>KKKo=v<@jL zNijoH>4l4k -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using currency; -// -// var currency = Currency.FromJson(jsonString); - -namespace currency -{ - using System; - using System.Collections.Generic; - - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +namespace Delirium.currency +{ public partial class Currency { [JsonProperty("lines")] @@ -27,7 +18,7 @@ public partial class Currency public Language Language { get; set; } } - public partial class CurrencyDetail + public class CurrencyDetail { [JsonProperty("id")] public long Id { get; set; } @@ -45,7 +36,7 @@ public partial class CurrencyDetail public string TradeId { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -54,11 +45,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("currencyTypeName")] public string CurrencyTypeName { get; set; } @@ -88,7 +79,7 @@ public partial class Line public string DetailsId { get; set; } } - public partial class PaySparkLine + public class PaySparkLine { [JsonProperty("data")] public List Data { get; set; } @@ -97,7 +88,7 @@ public partial class PaySparkLine public double TotalChange { get; set; } } - public partial class ReceiveSparkLine + public class ReceiveSparkLine { [JsonProperty("data")] public List Data { get; set; } @@ -106,7 +97,7 @@ public partial class ReceiveSparkLine public double TotalChange { get; set; } } - public partial class Receive + public class Receive { [JsonProperty("id")] public long Id { get; set; } @@ -138,12 +129,12 @@ public partial class Receive public partial class Currency { - public static Currency FromJson(string json) => JsonConvert.DeserializeObject(json, currency.Converter.Settings); + public static Currency FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Currency self) => JsonConvert.SerializeObject(self, currency.Converter.Settings); + public static string ToJson(this Currency self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -154,7 +145,7 @@ internal static class Converter DateParseHandling = DateParseHandling.None, Converters = { - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } diff --git a/delirium.sln b/delirium.sln index b4ad72f..f37a492 100644 --- a/delirium.sln +++ b/delirium.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29519.87 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "delirium", "delirium.csproj", "{2A02BDE5-B819-412D-87DF-52BF9528BF1E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeliriumComparison", "DeliriumComparison.csproj", "{2A02BDE5-B819-412D-87DF-52BF9528BF1E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/delirium.sln.DotSettings b/delirium.sln.DotSettings new file mode 100644 index 0000000..3e76a7b --- /dev/null +++ b/delirium.sln.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file diff --git a/essence/essence.cs b/essence/essence.cs index 1638d97..8e8ab0b 100644 --- a/essence/essence.cs +++ b/essence/essence.cs @@ -1,19 +1,15 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using delirium; -// -// var essence = Essence.FromJson(jsonString); - -namespace essence -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +namespace Delirium.essence +{ + public enum ItemType + { + Unknown, + } public partial class Essence { @@ -24,7 +20,7 @@ public partial class Essence public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +29,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +117,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class ExplicitModifier + public class ExplicitModifier { [JsonProperty("text")] public string Text { get; set; } @@ -130,7 +126,7 @@ public partial class ExplicitModifier public bool Optional { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,16 +135,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - public partial class Essence { - public static Essence FromJson(string json) => JsonConvert.DeserializeObject(json, essence.Converter.Settings); + public static Essence FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Essence self) => JsonConvert.SerializeObject(self, essence.Converter.Settings); + public static string ToJson(this Essence self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -160,23 +154,31 @@ internal static class Converter Converters = { ItemTypeConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -187,15 +189,16 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } } diff --git a/foreboding.cs b/foreboding.cs index 55d4c56..02a06d5 100644 --- a/foreboding.cs +++ b/foreboding.cs @@ -6,17 +6,17 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class forebodingcalc { public static double calc() { - var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + main.league + "&type=Currency&language=en"); + var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + Program.League + "&type=Currency&language=en"); var data1 = currency.Currency.FromJson(result1); - var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + main.league + "&type=UniqueMap&language=en"); + var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + Program.League + "&type=UniqueMap&language=en"); var data2 = uniquemap.UniqueMap.FromJson(result2); double harb1 = 0.0, harb2 = 0.0, harb3 = 0.0, harb4 = 0.0, harb5 = 0.0, harb6 = 0.0; diff --git a/fossil/fossil.cs b/fossil/fossil.cs index 735ca90..e91b6ca 100644 --- a/fossil/fossil.cs +++ b/fossil/fossil.cs @@ -1,19 +1,15 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using fossil; -// -// var fossil = Fossil.FromJson(jsonString); - -namespace fossil -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +namespace Delirium.fossil +{ + public enum ItemType + { + Unknown, + } public partial class Fossil { @@ -24,7 +20,7 @@ public partial class Fossil public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +29,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +117,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class ExplicitModifier + public class ExplicitModifier { [JsonProperty("text")] public string Text { get; set; } @@ -130,7 +126,7 @@ public partial class ExplicitModifier public bool Optional { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,16 +135,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - public partial class Fossil { - public static Fossil FromJson(string json) => JsonConvert.DeserializeObject(json, fossil.Converter.Settings); + public static Fossil FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Fossil self) => JsonConvert.SerializeObject(self, fossil.Converter.Settings); + public static string ToJson(this Fossil self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -160,23 +154,31 @@ internal static class Converter Converters = { ItemTypeConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -187,15 +189,16 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } } diff --git a/fossilised.cs b/fossilised.cs index dfbd5fd..97a3b1a 100644 --- a/fossilised.cs +++ b/fossilised.cs @@ -6,17 +6,17 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class fossilisedcalc { public static double calc() { - var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + main.league + "&type=Fossil&language=en"); + var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + Program.League + "&type=Fossil&language=en"); var data1 = fossil.Fossil.FromJson(result1); - var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + main.league + "&type=Resonator&language=en"); + var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + Program.League + "&type=Resonator&language=en"); var data2 = resonator.Resonator.FromJson(result2); double fossil1 = 0.0, fossil2 = 0.0, fossil3 = 0.0, fossil4 = 0.0, fossil5 = 0.0, fossil6 = 0.0, fossil7 = 0.0, fossil8 = 0.0, fossil9 = 0.0, fossil10 = 0.0, fossil11 = 0.0 diff --git a/fragment/fragment.cs b/fragment/fragment.cs index 8704e26..ccee5f8 100644 --- a/fragment/fragment.cs +++ b/fragment/fragment.cs @@ -1,20 +1,11 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using fragment; -// -// var fragment = Fragment.FromJson(jsonString); - -namespace fragment -{ - using System; - using System.Collections.Generic; - - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +namespace Delirium.fragment +{ public partial class Fragment { [JsonProperty("lines")] @@ -27,7 +18,7 @@ public partial class Fragment public Language Language { get; set; } } - public partial class CurrencyDetail + public class CurrencyDetail { [JsonProperty("id")] public long Id { get; set; } @@ -45,7 +36,7 @@ public partial class CurrencyDetail public string TradeId { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -54,11 +45,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("currencyTypeName")] public string CurrencyTypeName { get; set; } @@ -88,7 +79,7 @@ public partial class Line public string DetailsId { get; set; } } - public partial class PaySparkLine + public class PaySparkLine { [JsonProperty("data")] public List Data { get; set; } @@ -97,7 +88,7 @@ public partial class PaySparkLine public double TotalChange { get; set; } } - public partial class ReceiveSparkLine + public class ReceiveSparkLine { [JsonProperty("data")] public List Data { get; set; } @@ -106,7 +97,7 @@ public partial class ReceiveSparkLine public double TotalChange { get; set; } } - public partial class Receive + public class Receive { [JsonProperty("id")] public long Id { get; set; } @@ -138,12 +129,12 @@ public partial class Receive public partial class Fragment { - public static Fragment FromJson(string json) => JsonConvert.DeserializeObject(json, fragment.Converter.Settings); + public static Fragment FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Fragment self) => JsonConvert.SerializeObject(self, fragment.Converter.Settings); + public static string ToJson(this Fragment self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -154,7 +145,7 @@ internal static class Converter DateParseHandling = DateParseHandling.None, Converters = { - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } diff --git a/fragmented.cs b/fragmented.cs index 2f0e114..842bec1 100644 --- a/fragmented.cs +++ b/fragmented.cs @@ -6,14 +6,14 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class fragmentedcalc { public static double calc() { - var result = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + main.league + "&type=Fragment&language=en"); + var result = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + Program.League + "&type=Fragment&language=en"); var data = fragment.Fragment.FromJson(result); double frag1 = 0.0, frag2 = 0.0, frag3 = 0.0, frag4 = 0.0, frag5 = 0.0, frag6 = 0.0, frag7 = 0.0, frag8 = 0.0, frag9 = 0.0, frag10 = 0.0, frag11 = 0.0, frag12 = 0.0, frag13 = 0.0 diff --git a/incubator/incubator.cs b/incubator/incubator.cs index 450fa38..478c3ec 100644 --- a/incubator/incubator.cs +++ b/incubator/incubator.cs @@ -1,19 +1,15 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using incubator; -// -// var incubator = Incubator.FromJson(jsonString); - -namespace incubator -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +namespace Delirium.incubator +{ + public enum ItemType + { + Unknown, + } public partial class Incubator { @@ -24,7 +20,7 @@ public partial class Incubator public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +29,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +117,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class ExplicitModifier + public class ExplicitModifier { [JsonProperty("text")] public string Text { get; set; } @@ -130,7 +126,7 @@ public partial class ExplicitModifier public bool Optional { get; set; } } - public partial class LowConfidenceSparkline + public class LowConfidenceSparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,7 +135,7 @@ public partial class LowConfidenceSparkline public double TotalChange { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -148,16 +144,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - public partial class Incubator { - public static Incubator FromJson(string json) => JsonConvert.DeserializeObject(json, incubator.Converter.Settings); + public static Incubator FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Incubator self) => JsonConvert.SerializeObject(self, incubator.Converter.Settings); + public static string ToJson(this Incubator self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -169,23 +163,31 @@ internal static class Converter Converters = { ItemTypeConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -196,15 +198,16 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } } diff --git a/main.cs b/main.cs deleted file mode 100644 index b5095a8..0000000 --- a/main.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.Net; - -namespace delirium -{ - public class main - { - - public static String league { get; private set;} - - static public void Main(String [] args) - { - league = "Heist"; - - var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league="+league+"&type=Fossil&language=en"); - var data1 = fossil.Fossil.FromJson(result1); - - var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league="+league+"&type=Fragment&language=en"); - var data2 = fragment.Fragment.FromJson(result2); - - var fracfossil = 0.0; - var simu = 0.0; - - data1.Lines.ForEach(x => - { - if (x.Name == "Fractured Fossil") - fracfossil = x.ChaosValue; - }); - - data2.Lines.ForEach(x => - { - if (x.CurrencyTypeName == "Simulacrum") - simu = x.ChaosEquivalent; - }); - - double timeless = Math.Round(timelesscalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double skittering = Math.Round(skitteringcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double obscured = Math.Round(obscuredcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double blighted = Math.Round(blightedcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double fragmented = Math.Round(fragmentedcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double fossilised = Math.Round(fossilisedcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double foreboding = Math.Round(forebodingcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double amorphous = Math.Round(amorphouscalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - double whispering = Math.Round(whisperingcalc.calc() + simu * 7.5 / 20 - fracfossil, 2); - - SortedDictionary results =new SortedDictionary(Comparer.Create((x, y) => y.CompareTo(x))); - results.Add(timeless, "Timeless"); - results.Add(skittering, "Skittering"); - results.Add(obscured, "Obscured"); - results.Add(blighted, "Blighted"); - results.Add(fragmented, "Fragmented"); - results.Add(fossilised, "Fossilised"); - results.Add(foreboding, "Foreboding"); - results.Add(amorphous, "Amorphous"); - results.Add(whispering, "Whispering"); - - int i = 1; - - foreach (KeyValuePair pair in results) - { - if(i == 1) - { - Console.WriteLine("------------------------------------------------"); - Console.ForegroundColor = ConsoleColor.Cyan; - Console.WriteLine("{1} Delirium Orb: {0}c", pair.Key, pair.Value); - Console.ResetColor(); - Console.WriteLine("------------------------------------------------"); - } else if(i == 2) - { - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("{1} Delirium Orb: {0}c", pair.Key, pair.Value); - Console.ResetColor(); - Console.WriteLine("------------------------------------------------"); - } else if (i == 3 || (i > 3 && pair.Key > 20)) - { - Console.ForegroundColor = ConsoleColor.Yellow; - Console.WriteLine("{1} Delirium Orb: {0}c", pair.Key, pair.Value); - Console.ResetColor(); - Console.WriteLine("------------------------------------------------"); - } else if(pair.Key < 20) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("{1} Delirium Orb: {0}c", pair.Key, pair.Value); - Console.ResetColor(); - Console.WriteLine("------------------------------------------------"); - } - - i++; - } - - Console.ReadLine(); - } - - - } -} diff --git a/map/map.cs b/map/map.cs index 7d36486..4cffd88 100644 --- a/map/map.cs +++ b/map/map.cs @@ -1,28 +1,44 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using map; -// -// var map = Map.FromJson(jsonString); - -using System; +using System; using System.Collections.Generic; -using System.Text; using System.Globalization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; -using System.Net; - -namespace map +namespace Delirium.map { - using System; - using System.Collections.Generic; + public enum ItemType + { + Unknown, + } - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; + public enum MapRegion + { + GlennachCairns, + HaewarkHamlet, + LexEjoris, + LexProxima, + LiraArthain, + NewVastir, + TirnSEnd, + ValdoSRest, + } + + // add a new league here + public enum Variant { + Atlas, + Atlas2, + Atlas234, + Blight, + Delirium, + Harvest, + Legion, + Metamorph, + Pre20, + Pre24, + Synthesis, + Heist, + Ritual, + } public partial class Map { @@ -33,7 +49,7 @@ public partial class Map public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -42,11 +58,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -130,7 +146,7 @@ public partial class Line public MapRegion? MapRegion { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,22 +155,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - - public enum MapRegion { GlennachCairns, HaewarkHamlet, LexEjoris, LexProxima, LiraArthain, NewVastir, TirnSEnd, ValdoSRest }; - - - //add a new league here - public enum Variant { Atlas, Atlas2, Atlas234, Blight, Delerium, Harvest, Legion, Metamorph, Pre20, Pre24, Synthesis, Heist }; - public partial class Map { - public static Map FromJson(string json) => JsonConvert.DeserializeObject(json, map.Converter.Settings); + public static Map FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Map self) => JsonConvert.SerializeObject(self, map.Converter.Settings); + public static string ToJson(this Map self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -168,23 +176,31 @@ internal static class Converter ItemTypeConverter.Singleton, MapRegionConverter.Singleton, VariantConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -195,46 +211,46 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } internal class MapRegionConverter : JsonConverter { + public static readonly MapRegionConverter Singleton = new MapRegionConverter(); + public override bool CanConvert(Type t) => t == typeof(MapRegion) || t == typeof(MapRegion?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); - switch (value) + if (reader.TokenType == JsonToken.Null) { - case "Glennach Cairns": - return MapRegion.GlennachCairns; - case "Haewark Hamlet": - return MapRegion.HaewarkHamlet; - case "Lex Ejoris": - return MapRegion.LexEjoris; - case "Lex Proxima": - return MapRegion.LexProxima; - case "Lira Arthain": - return MapRegion.LiraArthain; - case "New Vastir": - return MapRegion.NewVastir; - case "Tirn's End": - return MapRegion.TirnSEnd; - case "Valdo's Rest": - return MapRegion.ValdoSRest; + return null; } - throw new Exception("Cannot unmarshal type MapRegion"); + + string value = serializer.Deserialize(reader); + + return value switch + { + "Glennach Cairns" => MapRegion.GlennachCairns, + "Haewark Hamlet" => MapRegion.HaewarkHamlet, + "Lex Ejoris" => MapRegion.LexEjoris, + "Lex Proxima" => MapRegion.LexProxima, + "Lira Arthain" => MapRegion.LiraArthain, + "New Vastir" => MapRegion.NewVastir, + "Tirn's End" => MapRegion.TirnSEnd, + "Valdo's Rest" => MapRegion.ValdoSRest, + var _ => throw new Exception("Cannot unmarshal type MapRegion"), + }; } public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) @@ -244,78 +260,81 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (MapRegion)untypedValue; + + MapRegion value = (MapRegion)untypedValue; + switch (value) { case MapRegion.GlennachCairns: serializer.Serialize(writer, "Glennach Cairns"); + return; case MapRegion.HaewarkHamlet: serializer.Serialize(writer, "Haewark Hamlet"); + return; case MapRegion.LexEjoris: serializer.Serialize(writer, "Lex Ejoris"); + return; case MapRegion.LexProxima: serializer.Serialize(writer, "Lex Proxima"); + return; case MapRegion.LiraArthain: serializer.Serialize(writer, "Lira Arthain"); + return; case MapRegion.NewVastir: serializer.Serialize(writer, "New Vastir"); + return; case MapRegion.TirnSEnd: serializer.Serialize(writer, "Tirn's End"); + return; case MapRegion.ValdoSRest: serializer.Serialize(writer, "Valdo's Rest"); + return; + default: throw new Exception("Cannot marshal type MapRegion"); } - throw new Exception("Cannot marshal type MapRegion"); } - - public static readonly MapRegionConverter Singleton = new MapRegionConverter(); } internal class VariantConverter : JsonConverter { + public static readonly VariantConverter Singleton = new VariantConverter(); + public override bool CanConvert(Type t) => t == typeof(Variant) || t == typeof(Variant?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); - switch (value) + if (reader.TokenType == JsonToken.Null) { - - //add a new league here - case "Atlas": - return Variant.Atlas; - case "Atlas2": - return Variant.Atlas2; - case "Atlas2-3.4": - return Variant.Atlas234; - case "Blight": - return Variant.Blight; - case "Delerium": - return Variant.Delerium; - case "Harvest": - return Variant.Harvest; - case "Legion": - return Variant.Legion; - case "Metamorph": - return Variant.Metamorph; - case "Pre 2.0": - return Variant.Pre20; - case "Pre 2.4": - return Variant.Pre24; - case "Synthesis": - return Variant.Synthesis; - case "Heist": - return Variant.Heist; + return null; } - throw new Exception("Cannot unmarshal type Variant"); + + string value = serializer.Deserialize(reader); + + return value switch + { + // add a new league here + "Atlas" => Variant.Atlas, + "Atlas2" => Variant.Atlas2, + "Atlas2-3.4" => Variant.Atlas234, + "Blight" => Variant.Blight, + "Delirium" => Variant.Delirium, + "Harvest" => Variant.Harvest, + "Legion" => Variant.Legion, + "Metamorph" => Variant.Metamorph, + "Pre 2.0" => Variant.Pre20, + "Pre 2.4" => Variant.Pre24, + "Synthesis" => Variant.Synthesis, + "Heist" => Variant.Heist, + "Ritual" => Variant.Ritual, + var _ => throw new Exception("Cannot unmarshal type Variant"), + }; } public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) @@ -325,7 +344,9 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (Variant)untypedValue; + + Variant value = (Variant)untypedValue; + switch (value) { //add a new league here @@ -341,8 +362,8 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria case Variant.Blight: serializer.Serialize(writer, "Blight"); return; - case Variant.Delerium: - serializer.Serialize(writer, "Delerium"); + case Variant.Delirium: + serializer.Serialize(writer, "Delirium"); return; case Variant.Harvest: serializer.Serialize(writer, "Harvest"); @@ -365,10 +386,11 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria case Variant.Heist: serializer.Serialize(writer, "Heist"); return; + case Variant.Ritual: + serializer.Serialize(writer, "Ritual"); + return; + default: throw new Exception("Cannot marshal type Variant"); } - throw new Exception("Cannot marshal type Variant"); } - - public static readonly VariantConverter Singleton = new VariantConverter(); } } diff --git a/obj/Debug/netcoreapp3.0/delirium.assets.cache b/obj/Debug/netcoreapp3.0/delirium.assets.cache index 1fab8dbaed25a1567fa64bcff4b4afa39874f674..6a16d415f72dc87bc805b41fd5d9f11afd9169bd 100644 GIT binary patch delta 3525 zcmbuCUrt4)0xQezx_cMI%0HM< znkk%6B=WzNHd8h{HO|yn(>VQ`nr7-Pr|Ge$o_y$~zGpqVUJmy@b(!zn`}>{q{hZ&q z=iI&A`%|gET~2kk>}aT&my(jQ|L@$ac`Xk=61>ZdQ{g%JKxVq_& zUt3z;DJd583(`>w@oGZ>)f)=Cl%NtAI-*9R?QR$T+#A}TWPBklsA}!rXnQN`UW@KE ziSDl2kWa1mA6BC-Um(D^>_~;!^&H5@#@X|~$1$RhN5P&vd`QC`QEl^sT_X=HYy?_hj7 zWw!lN1tPW=6H{7+Ya>@B@+T8Fo&I7|os!^mnK)O|1Gyv4Dxo(XGsAJ#(44$ZX|2$^ z+NAe7$ijJOMWOdQCc zlA96fDJ_VND7%qol;G0F?jW6GUPBtE+z z3Nq=#!g|kswCIU1A~qtvgghg*LyXu#JC;1~yo@X6PCPH2xHfVhK%Ti3h`GCH$I|aT zUR>$N_8~TMtH{rED@9+)-GaNv#NEr?ew^9Z2ci4%l|EN&rRSGT%6-V_>j)q=s-quy zR!0zGq!5%KU6;d%^pr!0jVKZ186^raiUuVp^XOGF;fW!mCk-GrA`K$XNQWUt8ls0v zE_jaMin$YO@(Qk*Tm0F46*=a94Px%2bj$MbS?*(KF>)VAp1Dsz%sq@B|ClVk4^N`S z$o)F<%zX-qkBxJ0{OP}!nnNFzZk$DW13ipLBgoIF1Mvh_H~G%Iv%)8f@60z%U~h5Q zX`ESEXP`?nVTJTcg@gWEFV$Jm$PN+yHgZOlo<&}qvruUvC9Z0Ez9HKb{*DR!9EYFB znN>av>3)-)yy{|lt}!DCA4MnqP8maNR5?Xnto-zo+Y*pP(7Ps}aSk%9lKx!YFJC|p zeMuKhNE4it+`NdBC4uC`owU=1PS-5rB@^N#Cnh&E;_)YwbkLCs#UuV7^_~fAio=rS z(UMiyWYPV;iTg5l>r0{fQrH`MTV<>4K}Y@Fx?%#n%7OaF?UoKW<|4@rvao3pJt|o} zMFRVp3H!Rpre8{*?H1iPOx!oQTfZZaihmS5va~4PKBY$`Woy>c`>v&hIFmsoN+N1h z3q@2PiADXvo_Mo+^(V(zvp*QsRK-U^-9+nENjMTZsCqS`DUlvkBi#|DUmXlZ`k2SH ztFEmUn3{07axcDS{Gp&cu+~+@nn+u(KT5)U{C;JK1Vb9>Qb~6#5EvrfP=8p_{9OT+ z4EnWRG8BqMNGBi6#g^n2^a1oC^bvF$%H9=gP&GcOMqlpiFQhzu4_;FS|HyLS7C5Fa IR^2K34~nM)N&o-= delta 3226 zcma)-T~JhI9LD)rU?E&xVEGVMjw=|uvMUNmCs+jm2?<@&Ff`QFJud4mySTeRVFpSR zYNqzbZ!|2d#+qt|shh4Er;nlOme}3x0&fh;ux_?_YoLBpoVd9seFU=op zeb`ljMPyA38WS-{f|4N}ltL$r2MbumeyI?fO@r91o>nLAGp5TfyAyLCqjO1KQ>N@L zlU)O@Ub>iMqsruF({gz>o>_sq3$tr!Cb`yVM8IZ`IboT6VAzgPZZCe=(Wxkh@RGm=Y}P9tr(R8f^d2U0Ul1srE3>MQei zN*ys4a*3O+5~@0-a#|% zv>WKUsnK4;rJvA9i}2->7CSY2?EDFNQX^RlzdP3LTv|H)ox90e2S@o%of^r_)Ri|Y zZjo2lX zjrvoZwKAGoby@Uq6iI_}M5cIgWj*vzsQ7!)hmo>}qo~z-@WW?41R$2~MY@XWGV|&4 z;yU_A*d_+yDoG*KYNS5+jC2fQq;QOMP9}ZTw3*fy>75bGC}~mDYP5d%j5Yu<+8}g# z;T!X@#qWFp4kN|)=tYbf$pR@)_z-GFIu0??OVGH2R7P{QRrJtOBJ#u&SgA&Q89pNp zLyS0rFLuAk|L;198MX8&_$)mN#rmNiN}^6a{fb6788F*?>cozO6Pl!6+V-4Q6>3`8* z*Px%1>2Kf~d;7R9eq*iHY`Oon&GEj^V}-i6+S42B*3EmG9wKJ0gUrB)BQ^m#eiN>6@>nGZMIHU9?-6S1NI diff --git a/obj/Debug/netcoreapp3.0/delirium.csprojAssemblyReference.cache b/obj/Debug/netcoreapp3.0/delirium.csprojAssemblyReference.cache index 2baeb5d61613912bd1555c014ed8f4178e64bf82..b667893952b22438c6924769e860c8e21abe80a7 100644 GIT binary patch delta 13277 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 delta 13359 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 $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + C:\Users\lucas\.nuget\packages\stylecop.analyzers\1.1.118 + \ No newline at end of file diff --git a/obj/project.assets.json b/obj/project.assets.json index f5264f0..67865d1 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -196,6 +196,9 @@ } } }, + "StyleCop.Analyzers/1.1.118": { + "type": "package" + }, "System.Collections/4.3.0": { "type": "package", "dependencies": { @@ -1063,6 +1066,31 @@ "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" ] }, + "StyleCop.Analyzers/1.1.118": { + "sha512": "Onx6ovGSqXSK07n/0eM3ZusiNdB6cIlJdabQhWGgJp3Vooy9AaLS/tigeybOJAobqbtggTamoWndz72JscZBvw==", + "type": "package", + "path": "stylecop.analyzers/1.1.118", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE", + "THIRD-PARTY-NOTICES.txt", + "analyzers/dotnet/cs/StyleCop.Analyzers.CodeFixes.dll", + "analyzers/dotnet/cs/StyleCop.Analyzers.dll", + "analyzers/dotnet/cs/de-DE/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/en-GB/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/es-MX/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr-FR/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl-PL/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/StyleCop.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru-RU/StyleCop.Analyzers.resources.dll", + "stylecop.analyzers.1.1.118.nupkg.sha512", + "stylecop.analyzers.nuspec", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, "System.Collections/4.3.0": { "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", "type": "package", @@ -2887,6 +2915,7 @@ ".NETCoreApp,Version=v3.0": [ "Microsoft.AspNet.Razor >= 3.2.7", "Newtonsoft.Json >= 12.0.3", + "StyleCop.Analyzers >= 1.1.118", "System.Net.Http >= 4.3.4" ] }, @@ -2896,25 +2925,24 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\lucas\\source\\repos\\delirium\\delirium.csproj", - "projectName": "delirium", - "projectPath": "C:\\Users\\lucas\\source\\repos\\delirium\\delirium.csproj", + "projectUniqueName": "C:\\Coding\\C#\\DeliriumOrbComparison\\delirium-orb-comparison\\DeliriumComparison.csproj", + "projectName": "DeliriumComparison", + "projectPath": "C:\\Coding\\C#\\DeliriumOrbComparison\\delirium-orb-comparison\\DeliriumComparison.csproj", "packagesPath": "C:\\Users\\lucas\\.nuget\\packages\\", - "outputPath": "C:\\Users\\lucas\\source\\repos\\delirium\\obj\\", + "outputPath": "C:\\Coding\\C#\\DeliriumOrbComparison\\delirium-orb-comparison\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\lucas\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\lucas\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "netcoreapp3.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { "netcoreapp3.0": { + "targetAlias": "netcoreapp3.0", "projectReferences": {} } }, @@ -2926,6 +2954,7 @@ }, "frameworks": { "netcoreapp3.0": { + "targetAlias": "netcoreapp3.0", "dependencies": { "Microsoft.AspNet.Razor": { "target": "Package", @@ -2935,6 +2964,12 @@ "target": "Package", "version": "[12.0.3, )" }, + "StyleCop.Analyzers": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[1.1.118, )" + }, "System.Net.Http": { "target": "Package", "version": "[4.3.4, )" @@ -2950,12 +2985,30 @@ ], "assetTargetFallback": true, "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[3.0.1, 3.0.1]" + }, + { + "name": "Microsoft.NETCore.App.Host.win-x64", + "version": "[3.0.3, 3.0.3]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[3.0.0, 3.0.0]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[3.0.0, 3.0.0]" + } + ], "frameworkReferences": { "Microsoft.NETCore.App": { "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.0.100\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.101\\RuntimeIdentifierGraph.json" } } }, @@ -2964,7 +3017,7 @@ "code": "NU1701", "level": "Warning", "warningLevel": 1, - "message": "Das Paket \"Microsoft.AspNet.Razor 3.2.7\" wurde nicht mit dem Projektzielframework \".NETCoreApp,Version=v3.0\", sondern mit \".NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8\" wiederhergestellt. Dieses Paket ist mit Ihrem Projekt möglicherweise nicht vollständig kompatibel.", + "message": "Package 'Microsoft.AspNet.Razor 3.2.7' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v3.0'. This package may not be fully compatible with your project.", "libraryId": "Microsoft.AspNet.Razor", "targetGraphs": [ ".NETCoreApp,Version=v3.0" diff --git a/obscured.cs b/obscured.cs index 089b4d0..defda43 100644 --- a/obscured.cs +++ b/obscured.cs @@ -7,16 +7,16 @@ using System.Net; -namespace delirium +namespace Delirium { public class obscuredcalc { public static double calc() { - var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + main.league + "&type=Currency&language=en"); + var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + Program.League + "&type=Currency&language=en"); var data1 = currency.Currency.FromJson(result1); - var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + main.league + "&type=Fragment&language=en"); + var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league=" + Program.League + "&type=Fragment&language=en"); var data2 = fragment.Fragment.FromJson(result2); double chayu1 = 0.0, chayu2 = 0.0, chayu3 = 0.0, chayu4 = 0.0, chayu5 = 0.0; diff --git a/oil/oil.cs b/oil/oil.cs index a4776f3..d552bcc 100644 --- a/oil/oil.cs +++ b/oil/oil.cs @@ -1,19 +1,15 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using oil; -// -// var oil = Oil.FromJson(jsonString); - -namespace oil -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +namespace Delirium.oil +{ + public enum ItemType + { + Unknown, + } public partial class Oil { @@ -24,7 +20,7 @@ public partial class Oil public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +29,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +117,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -130,16 +126,14 @@ public partial class Sparkline public long TotalChange { get; set; } } - public enum ItemType { Unknown }; - public partial class Oil { - public static Oil FromJson(string json) => JsonConvert.DeserializeObject(json, oil.Converter.Settings); + public static Oil FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Oil self) => JsonConvert.SerializeObject(self, oil.Converter.Settings); + public static string ToJson(this Oil self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -151,23 +145,31 @@ internal static class Converter Converters = { ItemTypeConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -178,15 +180,16 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } } diff --git a/resonator/resonator.cs b/resonator/resonator.cs index 4aa5783..587d044 100644 --- a/resonator/resonator.cs +++ b/resonator/resonator.cs @@ -1,20 +1,11 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using resonator; -// -// var resonator = Resonator.FromJson(jsonString); - -namespace resonator -{ - using System; - using System.Collections.Generic; - - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +namespace Delirium.resonator +{ public partial class Resonator { [JsonProperty("lines")] @@ -24,7 +15,7 @@ public partial class Resonator public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +24,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +112,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -132,12 +123,12 @@ public partial class Sparkline public partial class Resonator { - public static Resonator FromJson(string json) => JsonConvert.DeserializeObject(json, resonator.Converter.Settings); + public static Resonator FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Resonator self) => JsonConvert.SerializeObject(self, resonator.Converter.Settings); + public static string ToJson(this Resonator self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -148,7 +139,7 @@ internal static class Converter DateParseHandling = DateParseHandling.None, Converters = { - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } diff --git a/scarab/scarab.cs b/scarab/scarab.cs index f4a09c3..8f062a6 100644 --- a/scarab/scarab.cs +++ b/scarab/scarab.cs @@ -1,19 +1,15 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using scarab; -// -// var scarab = Scarab.FromJson(jsonString); - -namespace scarab -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; +namespace Delirium.scarab +{ + public enum ItemType + { + Unknown, + } public partial class Scarab { @@ -24,7 +20,7 @@ public partial class Scarab public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +29,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +117,7 @@ public partial class Line public object MapRegion { get; set; } } - public partial class ExplicitModifier + public class ExplicitModifier { [JsonProperty("text")] public string Text { get; set; } @@ -130,7 +126,7 @@ public partial class ExplicitModifier public bool Optional { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,16 +135,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - public partial class Scarab { - public static Scarab FromJson(string json) => JsonConvert.DeserializeObject(json, scarab.Converter.Settings); + public static Scarab FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this Scarab self) => JsonConvert.SerializeObject(self, scarab.Converter.Settings); + public static string ToJson(this Scarab self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -160,23 +154,31 @@ internal static class Converter Converters = { ItemTypeConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -187,15 +189,16 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } } diff --git a/skittering.cs b/skittering.cs index 70805ca..c08c3a8 100644 --- a/skittering.cs +++ b/skittering.cs @@ -6,14 +6,14 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class skitteringcalc { public static double calc() { - var result = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league="+main.league+"&type=Scarab&language=en"); + var result = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league="+Program.League+"&type=Scarab&language=en"); var data = scarab.Scarab.FromJson(result); double rscarab1 = 0.0, rscarab2 = 0.0, rscarab3 = 0.0, rscarab4 = 0.0, rscarab5 = 0.0, rscarab6 = 0.0, rscarab7 = 0.0, rscarab8 = 0.0, rscarab9 = 0.0, rscarab10 = 0.0, rscarab11 = 0.0 diff --git a/timeless.cs b/timeless.cs index 351de5f..674415b 100644 --- a/timeless.cs +++ b/timeless.cs @@ -6,17 +6,17 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class timelesscalc { public static double calc() { - var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league="+main.league+"&type=Fragment&language=en"); + var result1 = new WebClient().DownloadString("https://poe.ninja/api/data/CurrencyOverview?league="+Program.League+"&type=Fragment&language=en"); var data1 = fragment.Fragment.FromJson(result1); - var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league="+main.league+"&type=Incubator&language=en"); + var result2 = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league="+Program.League+"&type=Incubator&language=en"); var data2 = incubator.Incubator.FromJson(result2); double emblem1 = 0.0, emblem2 = 0.0, emblem3 = 0.0, emblem4 = 0.0, emblem5 = 0.0; diff --git a/uniquemap/uniquemap.cs b/uniquemap/uniquemap.cs index 5c747fa..7129ebd 100644 --- a/uniquemap/uniquemap.cs +++ b/uniquemap/uniquemap.cs @@ -1,19 +1,25 @@ -// -// -// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do: -// -// using uniquemap; -// -// var uniqueMap = UniqueMap.FromJson(jsonString); - -namespace uniquemap +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Delirium.uniquemap { - using System; - using System.Collections.Generic; + public enum ItemType + { + Unknown, + } - using System.Globalization; - using Newtonsoft.Json; - using Newtonsoft.Json.Converters; + public enum MapRegion { + GlennachCairns, + HaewarkHamlet, + LexEjoris, + LexProxima, + NewVastir, + TirnSEnd, + ValdoSRest, + } public partial class UniqueMap { @@ -24,7 +30,7 @@ public partial class UniqueMap public Language Language { get; set; } } - public partial class Language + public class Language { [JsonProperty("name")] public string Name { get; set; } @@ -33,11 +39,11 @@ public partial class Language public Translations Translations { get; set; } } - public partial class Translations + public class Translations { } - public partial class Line + public class Line { [JsonProperty("id")] public long Id { get; set; } @@ -121,7 +127,7 @@ public partial class Line public MapRegion? MapRegion { get; set; } } - public partial class ExplicitModifier + public class ExplicitModifier { [JsonProperty("text")] public string Text { get; set; } @@ -130,7 +136,7 @@ public partial class ExplicitModifier public bool Optional { get; set; } } - public partial class LowConfidenceSparkline + public class LowConfidenceSparkline { [JsonProperty("data")] public List Data { get; set; } @@ -139,7 +145,7 @@ public partial class LowConfidenceSparkline public double TotalChange { get; set; } } - public partial class Sparkline + public class Sparkline { [JsonProperty("data")] public List Data { get; set; } @@ -148,18 +154,14 @@ public partial class Sparkline public double TotalChange { get; set; } } - public enum ItemType { Unknown }; - - public enum MapRegion { GlennachCairns, HaewarkHamlet, LexEjoris, LexProxima, NewVastir, TirnSEnd, ValdoSRest }; - public partial class UniqueMap { - public static UniqueMap FromJson(string json) => JsonConvert.DeserializeObject(json, uniquemap.Converter.Settings); + public static UniqueMap FromJson(string json) => JsonConvert.DeserializeObject(json, Converter.Settings); } public static class Serialize { - public static string ToJson(this UniqueMap self) => JsonConvert.SerializeObject(self, uniquemap.Converter.Settings); + public static string ToJson(this UniqueMap self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -172,23 +174,31 @@ internal static class Converter { ItemTypeConverter.Singleton, MapRegionConverter.Singleton, - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } + new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }, }, }; } internal class ItemTypeConverter : JsonConverter { + public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); + public override bool CanConvert(Type t) => t == typeof(ItemType) || t == typeof(ItemType?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + string value = serializer.Deserialize(reader); + if (value == "Unknown") { return ItemType.Unknown; } + throw new Exception("Cannot unmarshal type ItemType"); } @@ -199,44 +209,45 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (ItemType)untypedValue; + + ItemType value = (ItemType)untypedValue; + if (value == ItemType.Unknown) { serializer.Serialize(writer, "Unknown"); return; } + throw new Exception("Cannot marshal type ItemType"); } - - public static readonly ItemTypeConverter Singleton = new ItemTypeConverter(); } internal class MapRegionConverter : JsonConverter { + public static readonly MapRegionConverter Singleton = new MapRegionConverter(); + public override bool CanConvert(Type t) => t == typeof(MapRegion) || t == typeof(MapRegion?); public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; - var value = serializer.Deserialize(reader); - switch (value) + if (reader.TokenType == JsonToken.Null) { - case "Glennach Cairns": - return MapRegion.GlennachCairns; - case "Haewark Hamlet": - return MapRegion.HaewarkHamlet; - case "Lex Ejoris": - return MapRegion.LexEjoris; - case "Lex Proxima": - return MapRegion.LexProxima; - case "New Vastir": - return MapRegion.NewVastir; - case "Tirn's End": - return MapRegion.TirnSEnd; - case "Valdo's Rest": - return MapRegion.ValdoSRest; + return null; } - throw new Exception("Cannot unmarshal type MapRegion"); + + string value = serializer.Deserialize(reader); + + return value switch + { + "Glennach Cairns" => MapRegion.GlennachCairns, + "Haewark Hamlet" => MapRegion.HaewarkHamlet, + "Lex Ejoris" => MapRegion.LexEjoris, + "Lex Proxima" => MapRegion.LexProxima, + "New Vastir" => MapRegion.NewVastir, + "Tirn's End" => MapRegion.TirnSEnd, + "Valdo's Rest" => MapRegion.ValdoSRest, + var _ => throw new Exception("Cannot unmarshal type MapRegion"), + }; } public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) @@ -246,7 +257,9 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria serializer.Serialize(writer, null); return; } - var value = (MapRegion)untypedValue; + + MapRegion value = (MapRegion)untypedValue; + switch (value) { case MapRegion.GlennachCairns: @@ -270,10 +283,8 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria case MapRegion.ValdoSRest: serializer.Serialize(writer, "Valdo's Rest"); return; + default: throw new Exception("Cannot marshal type MapRegion"); } - throw new Exception("Cannot marshal type MapRegion"); } - - public static readonly MapRegionConverter Singleton = new MapRegionConverter(); } -} +} \ No newline at end of file diff --git a/whispering.cs b/whispering.cs index 66e7632..cc7c557 100644 --- a/whispering.cs +++ b/whispering.cs @@ -6,14 +6,14 @@ using Newtonsoft.Json.Converters; using System.Net; -namespace delirium +namespace Delirium { public class whisperingcalc { public static double calc() { - var result = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + main.league + "&type=Essence&language=en"); + var result = new WebClient().DownloadString("https://poe.ninja/api/data/ItemOverview?league=" + Program.League + "&type=Essence&language=en"); var data = essence.Essence.FromJson(result); double ess1 = 0.0, ess2 = 0.0, ess3 = 0.0, ess4 = 0.0, ess5 = 0.0, ess6 = 0.0, ess7 = 0.0, ess8 = 0.0, ess9 = 0.0, ess10 = 0.0, ess11 = 0.0, ess12 = 0.0, ess13 = 0.0, ess14 = 0.0,