From 8d5fd730a027d234a551ee6e1e004676ce79394a Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 10 Jun 2018 17:44:05 +0300 Subject: [PATCH] Added promotion jsons, icons and organized unit types (scout is now its own!) --- .../Accuracy_III_(Civ5).png | Bin 0 -> 1937 bytes .../UnitPromotionIcons/Accuracy_II_(Civ5).png | Bin 0 -> 1873 bytes .../UnitPromotionIcons/Accuracy_I_(Civ5).png | Bin 0 -> 1762 bytes .../UnitPromotionIcons/Barrage_III_(Civ5).png | Bin 0 -> 1915 bytes .../UnitPromotionIcons/Barrage_II_(Civ5).png | Bin 0 -> 1887 bytes .../UnitPromotionIcons/Barrage_I_(Civ5).png | Bin 0 -> 1844 bytes .../UnitPromotionIcons/Drill_III_(Civ5).png | Bin 0 -> 1969 bytes .../UnitPromotionIcons/Drill_II_(Civ5).png | Bin 0 -> 1970 bytes .../UnitPromotionIcons/Drill_I_(Civ5).png | Bin 0 -> 1928 bytes .../Scouting_III_(Civ5).png | Bin 0 -> 1901 bytes .../UnitPromotionIcons/Scouting_II_(Civ5).png | Bin 0 -> 1888 bytes .../UnitPromotionIcons/Scouting_I_(Civ5).png | Bin 0 -> 1859 bytes .../UnitPromotionIcons/Shock_III_(Civ5).png | Bin 0 -> 2003 bytes .../UnitPromotionIcons/Shock_II_(Civ5).png | Bin 0 -> 1930 bytes .../UnitPromotionIcons/Shock_I_(Civ5).png | Bin 0 -> 1806 bytes android/assets/jsons/UnitPromotions.json | 88 ++++++++++++++++++ android/assets/jsons/Units.json | 2 +- core/src/com/unciv/logic/battle/ICombatant.kt | 4 +- .../com/unciv/logic/city/PopulationManager.kt | 2 +- .../com/unciv/models/gamebasics/GameBasics.kt | 3 + .../models/gamebasics/tile/TileImprovement.kt | 11 ++- .../models/gamebasics/unit/UnitPromotion.kt | 15 +++ .../unciv/models/gamebasics/unit/UnitType.kt | 10 +- .../pickerscreens/ImprovementPickerScreen.kt | 3 +- .../ui/pickerscreens/PromotionPickerScreen.kt | 45 +++++++++ core/src/com/unciv/ui/utils/ImageGetter.kt | 4 + .../com/unciv/ui/worldscreen/TileMapHolder.kt | 11 ++- 27 files changed, 182 insertions(+), 16 deletions(-) create mode 100644 android/assets/UnitPromotionIcons/Accuracy_III_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Accuracy_II_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Accuracy_I_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Barrage_III_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Barrage_II_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Barrage_I_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Drill_III_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Drill_II_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Drill_I_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Scouting_III_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Scouting_II_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Scouting_I_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Shock_III_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Shock_II_(Civ5).png create mode 100644 android/assets/UnitPromotionIcons/Shock_I_(Civ5).png create mode 100644 android/assets/jsons/UnitPromotions.json create mode 100644 core/src/com/unciv/models/gamebasics/unit/UnitPromotion.kt create mode 100644 core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt diff --git a/android/assets/UnitPromotionIcons/Accuracy_III_(Civ5).png b/android/assets/UnitPromotionIcons/Accuracy_III_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..d9e41e053a6e9b936576d60136dcbc607da313dd GIT binary patch literal 1937 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 literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Accuracy_I_(Civ5).png b/android/assets/UnitPromotionIcons/Accuracy_I_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..9e364c975311644089e5341ff01d0be69b85d45a GIT binary patch literal 1762 zcmZ`(do@D_!&%rYs` zF5xA+F>GtJMM~v*&djT+6@{9X9oJRFuKn4wf3$nfd!F-sKIi#Je z0{{SwsT98u2)C@4{s!pI&$Ts%0LJm5`2fJJFAY~2aOiCpLkXb)K#C&(WMl!r@*0G{ z0Du?`0Fx&GfFuI|3qeuzgZ+?p1M}bkKVWVBRNkp6hB_OCl!ycXFx)hzlRz2IP_U ziz)ebGJZU7|EVZ#?a-v&si<8mKkZ2~TpD`wl(NZcVCzf}Eik>II{K~l*hS59Mu#Qt zBUt>i-6d`FVJ=^<(IlLW*{WVu z)Y3DXmdKlLiCQGJXuGnc*s9F3-Xws5@l4J_8&Q?go$%rjLoy;;if}ya;*?i8B87Ey zy}WoK5J&+wfEIV^mbt`xxYHSrL)yM6YZc0n(sd^YcLJZFlO21yqXdi((l?Ijtmvt zyWGr+yl$@_sY}8()nk;E_Z#O%E)9md%eI{LWG|hC9k+t9bvAX`(-km*$&mWDG-Iw$ zGJTfD!lWMNx2a#?+rF>i^r=``h}M0*);?LmHhZ~q9Y>39PoEw;v^^V69xymL z^7N}uZ#R1Xch9`x`IRBB)%oSSZp)NZ6A!<+QfB|FCHmY<=XZ_EKlMSJklaHr?Ax z3N*Hn&+dwrc&IV9wUn8i|!jTo^W(*ILBwR(jcGIXZ!%C z5?ztb+uevAD!PS<%)|eO-nJuDadNaq;=CAG&620SH$`MzGhKVqw(G-YuA-Y{5t|;} zj!>41%e<>-u6SoMMIJEQK&pn1H_%Bh=!z$Mo2q`8WiTiB=W-=l>z@|7H>lfRA8R|~ z%L47=@fWOdi}^TZ{yB7Bz{3pQW6Wstep>==clGBJEU+c*=93EV6^+%Jj;^dnyDR_l zAJG1B1pUK776W9HVnl2R04y3qM56IXEFlczPQu_w7_2KAO+urWf|#NIFz^H{Zfx@Z zH{_Z>pMea%>k|?Lv0x%Y#0F3TA&BDg7#ucK+?bO{f*aZmk4lJxNEAyDgQBi;w7)qN zipyuQlicD!-YJf8_&X@hay>3APRwJHNPdDCF^|m$Nu*%NlmK9A))c6JY5vM1ktl2~ zCk_NKM33XH+3UOA;-j3uHAlHDFm7Ga_gobWNvuAS(6~G{m@H%ifBhXL~mBEpdu~G6AZ8 KpkE{TMCPA(%JgFZ literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Barrage_III_(Civ5).png b/android/assets/UnitPromotionIcons/Barrage_III_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..3e99c8961d393d753e992af3a7f1a17a909d2f70 GIT binary patch literal 1915 zcmZ`)do+~kAAd<1Ce~$l5up@2Zga&nkvlV4LWV>%W?oDh`97cLc|M=-=leb9Ip=wJt}c#pvO8n} z0Fa}Q?c8Dfelrl;;F-_cDF=g8khQZl0F+-wex+@N_u6!_yE6d9>;-`HTmV?xfN>fC zqA&n3a~uFjR{=nUo$mk40oHB{aB{Q*Ha5rYhJpv9SHzP<;{=)uHR6F52YcB zv%U1&ZHVpqNW<@T<-$cjQ|zogh+R~HPs%Y+?LziOS-;;G!WYb$Wz0qS-m1IwkhW9; zp~SD9cpY&nNg`#Jf^9C3(zk<`7N(6jAfuD9 zut!7seDlgQCriqDxR2yl#ac>s5Y`6|lVa9uy*8vDZRDKcDe?qHjiW`?T727MM3dn+ z<81*}0e2;2Y>?ZrD(K9b#j4$i89p?$&YN7xPPdWjHWwz<&Anggk#T*NvNSrwZxt8X zVSRoQ3^taxs<2DLpc&HPiKzV6{z0=^mr^fqqQr+1w4y9et~$y;1PW!MqpNF4_{jG5 z2vpnnRL|L{g7qWgn1E&%lcHTPXsbJNUVEHIVZJ($3w`&8a zANvPKifDQjHMgjXkJi0K-^sp+P>Srk*~&y2a*9kAmZ_S=zoI?$um9>Lzfdd^wRBQD zUOY2w`nqJTdG0=W_{68Nzd~BVZys%M8p!+_B0M)#wREFy7N5QTxV|`3*{wQfWsjALiFn+hU_1ddHz3PZ*&3H_G|Ltl=-Z$i`(` ze0_Kc#%BcSvewQSM%CDVuskL!zQ2eWm=^RSREnb@#+Q6LTDeJGoUD zb9_8$c=nGIP?<-3UkJuRO-Nmuicu<&Iw+GMDQLcz^wGzrzyEf{k8UAQ65rV}K^x&% z8Ii6n0qPisBq{m z&fJt!Nu5*FshNN9X4Nr(qpsMOZ$nuY$o-VYlla1xTYH%m-+5FrkM*`^_pge3GC1~= z3${q1)#yU8Vk?|7>RCj$l zfTGq$-bjT)1m)(9!MUJ?+9K6c+3XJ|_pmiDPo0kU)z3|nN9EgInwCiX^ZXN6E9`*Y zEaJ7OtfubDL^s<wTvh6wdZ=*S}IR!kX%1s5qw7FjgO7gTIK?;PemmvS9jZWay*@$Uh7ge+v^}q z-S03W3{ciduqsXx^yQdWK3((}wpjn8H?ia6lNBAEZkgZ4rVCWoH|Sf;p=I@ye7P-m zklf~*@1yFXqlX&2MOp&B#BlolX#q7nowpUWl%CPUe_pa}vb$+fLM)mW8U_~nMmNI` z<6g-A2*jX4Ac-CU!T{hfSfUZe)CfcLz~V>*90`jxz+gxijJ%iP{{Ks0u^G(3)Bl|i zCtG+CPO#mq5XlaNqG=HzfM$n5XeNsm1j50jhZva|V~kDEk-;#DX0YjK$|mRh4~IrG zLmA*H<6ww&GDz;oGHj>1Y3C6f#R?#i?AY`u78nYVNUm^FB!Dg0s7L=x^S2*~L+hSPnUoB zID5b<0BeFH5=^mXcx;nZX%j4w|HkJqGX?}OHXUr$S(qVz!%*ERKp^uZNJ6905GxGL zVFrbQ5CozLffyVEPct#vhc#sw5%2`ih-PX6uNXKy2EHy31os)k4Q0i5Z#D!_>|N|0 I*c^}lAKGwA9RL6T literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Barrage_II_(Civ5).png b/android/assets/UnitPromotionIcons/Barrage_II_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..5dcb95d4d4d49a452d3e1bb03f82085cc7a9df00 GIT binary patch literal 1887 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 GO!+TUP-fu( literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Drill_II_(Civ5).png b/android/assets/UnitPromotionIcons/Drill_II_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..bbfa6a49ce497193e63893ad90dfa6acff9515fb GIT binary patch literal 1970 zcmZ`)X;hQP8vY;xAvQ>rMnG9a3s)d~2}v*n6~V9*j2K12o&^#^2*t323TPm00WF{i z0&aop0wN+Kq3IN3Y2mq&20N|4X!q)&0 zi2;DwKmZ`+0>Ea$Zvm~2kXDu9=0pY*YvXc#Nfy*m4|n!H4gl*nt(6jxcS##+stH{v z4r)`X@C`_!o3DEs0H|PH$aXYh*J0_&&}_L<`{MHQN`1 zslxATX$ihfOn`0ba85j=f3%?VaJR!nfjIMC- zju;MXqDCXj9W+>U`nk17xNL*RJwS)>!g*BGiq{BSn%RReHunj9OnAv{6k{_*3_S;W- zT?sTAes*7XfPbpd*(fTD7Ljq(2PI5mJZb$2IXse8NpG=0t+%=MBoKYU=c2BDFDJ*N zjT0BQ+>-FY;Re5}qUFIe-rUwNm-x);SF<-5j`To;ZsC+iRr)=}E7`SsI_73Bf4I_H z84In2g;JHL_;FmD{;FeLMct~aMgF*^xH7A<>|OVx_5}VMiqQV@+R|^b5=t@XdSq*6 zLz1pf+d}_9ZIh%6C6CKv+-2lHcH@<1nm$EjfM`_IWs3dRncXWBDsd#==P|pQd<=?n z1Ja&^=6!5XyXmN)7Md*Q#0cMPJTU(y_kzDVwaj%^F42245Se)k6*09if2Le&ynWd( zgkRLvY4-ED!9uY0xQL6;REA&9M{VvUf9feUzX5Zb(>BErV^SLRkQ?v1P7=PnR)1Of z{?+K*RuO*Zky+X=n5s@$Ngue>ZX4U}TLHkXE5St#Q{~HIQvPQ`3>A&)xbukPfS1?U z+{~jFAA4q6_H=5nB-tGd?d9nEdj+#jrhAQt$-q?RWtB|ZBdoqn4oB{M_&2)glUcH? zWJh2>hwEFN<0)dpluP%B;#EZI0!nko?$MJ)?Vvtb&f_7s;YS>GsY!j$e|T{^_#vvN ze#@kkrg?h9DMYnNgx$!3a27em&r5Be2w>;#HhJ*hy}t^ip$5Wp#@z+qCs>+^M`0sT zv6a>PjSy*u#SsTxr)gJlgt5EFo{1O@Ej9}2ZSQ$(gUh|>>S-w&soF~I#4r@SG+E52qVz_LL;+F)}vZ`?Be)9}9g z#^JhFMSj&6YfKl%Q2TfGz_t*0B)r?ex;y$mFSZz{5~CV2MH$J|9WAjUHKs}ENZimM zsjf|2*?#`|%x=s0#O4q1q)Km7N9)9)>DfA`Y-5~P%Ia!geVx_s=Y6f!A1i;q!w``W zNu93sYCUNrspE_)s>Z7H2(v+G3tCzivKp;*-=nJ3e>KMeK#?V1w0IFyQa|(3%?sY)S1yyvd6EvH|?;` znE*oK{Pxpi9sOIpT;Lq*-E5<$p9WFBwFZhfmbIwCvg3A82Rh3Y1ed>X#*p0$a(xha;_@DxmlD zN1?+}AuCA8CNU$}5CE1KED?>dLSu+DEP;f@kqB017z_!6x$Qf_`yT^ez~TnS{(r-m z($N9PuzzibMUx!-OOf6*3(MuqBFG@E@AL@<=3SHaCPL z1h7Oaf3wqTf7Rx1a{ktMaalsnnxtn~N`)jk-$*E2K3fS#8plH8cVSs*sKY{AGYJe9(UL%9<1iM`fh_-Za2Co0TpT>e JW%hx|e*zJhVt@bu literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Drill_I_(Civ5).png b/android/assets/UnitPromotionIcons/Drill_I_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..d6a4d5f813541f220b11740ec84ca31bdc23a3a7 GIT binary patch literal 1928 zcmZ`)c{tShAO8wNEFBb4Ldk8$(af0SK4z>dhLu7y<2z%D8OIn!q(O{pkQ}=qQKIB1 z$sM`Ms%4#%p{*V3jy!Jh``Ty!=(o?a&*yo6UeD+KIzFGjK5w>@gN=lkoEQKA5;&}- zGlbH+B?^P~WcD!$2!tqR_GSQ3$r0Zo2t#K@64u!s0K!xNASxOF)^{MB0)P+%08C#3 z08BOj$k5Zh+pQrjjQFFCC9t!*?ll(QhB|u#u;+sTKwN6K1c0CK%0f*M2F~6}pS^Aroo#>t<_ zI}%PddcT<+zN2L)xP|;nE5(=+Saf17fA;QZOH&E%?Z8B8CRt-@byby}W9Q;x(4qL? zk!VXp2JzvzBRR3XV52rTtCl%8an_sjAny*FA_aklJu)?QHUu_WTLVL>9vFB%<3 z$dU%*VogQO%7;jSi{3(Jjq{r;oNzP7MX>`8j`>#C*X131*-nMmHe;v1PIIc}Va515 zj#@(e=QV|u$f6AQ%vgWQBYY;+;BfTyvGqTA^^f6{XSDl?uMI!7&1yE+Ff8SU7LD?Q zYVDfyQ%}N3rf)+G?1jyvocDD1twm;fA!eVHxpI;?oGo6}6Mf90xJB-RRmt*!y4X+H zJU(BKApO};N$R+tUL}}JR0q`6e!955_}+*<-qq{t<6CX9H47wL7k)(d{&5lqr*^-w zE5lERKd5*#;I=o+lS%jFf4pgBype`PG?KHEY>!(irC{`M&U*Y=}jDdOg&q(4Xf z@?Dx~U;9z=*T0O!Ta4GX3|wJ#(;xn@amx#SH={D`1dkcV=hx4^ym9B^ScR;H&iF#f z6Ze>Nw$iF?RNHj!lhGp+t&Egd;g$t#+Y7cv(cyFB%0FzLa5mHty@``L{5B$U{?(s? zdz;sAxs;}=TUE*)xyEHomYb5di90{b6ye;tN$_X|EE;{lBi^qjFo9#S=*7ewV^th;lpnlsvjibuz3c zP)R9~SIY(q1}m687)f$*lkk%gIc0b!WI%~*b^XLvwjXtg(Rb{3Y zbpGZHcWL@nP2N!ThZ^G>GaIbrD&5wH9--Oww550V38@)9=c9S2@7~~j>S7;MjciVP z>!I*mq7NpeyLfLZiNohy?pz|*%#9*Lm-l5IFUKpVipAWQ*CcNnb=|peEN`2UsJNWH z{kz(oFv$#IkLZe5YGNa<#)!OpDf4%wHlZ}Js`b$XJC>>pEt4lik9hpttkxjjUpEdE3AVNz4q?)>sw;a7WFBPDOX5s6aSdseu>!|b`-Jj6JT6bg2sr7) zhxB)8S=ZguQ}lFFNNqW&Is3CHD-OA@xqoKa(fXWE|L6#6c&W0dgW1rWBE2;qMKSg& zNAbKSqmByY3iG2k91lrm$Fu6&^5$^g3VL3{aU~p0mCv_T9Sec&tJ})q3L`n#4~+&5 zN}CgF5joC-Qz_}pvi>4brCyDeXIyEK$9^A%XXm-|-Y;+XO>VN&RE1APE)V4F>5CT9Cp^Mf=Ahi)FysiP}G!lbAX(A991j5GVbL;;Z z{OLYa^0ogqAmuJZLI#W78-nR%MkpZ&1mN@l2At|opny-HpThhWHaP7)v@S#2=(FFc>Gu6b$GV@6^Np zrTIG#gTaDSiZ27uMI*g5V|FKy%y&8eXnvylFno6&@s@xp@m1B>GRDkYjJ+wYrUmuA&N!Sk!IY9Ee92aUB2q4Vg&}HW!2Kyc3>Wl-( zR6h^{hr=2E0dOXjLIW8L5Uytkl2IT5sZG>HlC=%c2D;ir6q2B=Z=k1(H1yF&5K&|u W=t0#VoS#FP0M5$6@~QbH*8c#x8B|&T literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Scouting_III_(Civ5).png b/android/assets/UnitPromotionIcons/Scouting_III_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..c5dd831a3274bb1c20c549d74babb7b6f6fa7d61 GIT binary patch literal 1901 zcmZ`)dpOi-8~#~`q{~@Ysdn;pppTisj4{Y*WCkO~A)^Lk&M`*j=eR3E`h;3kEE20o zPC0#P2PLPl&V8*@VQ5EA+0YO*-_KtAN8eu8cfIfP-q-uw_j5nbU+rhS9%%0dk2G2PwE~>~il~H``8kHnKw%Nodr}NM&?& zniQmpK1$a7e_wnKt9OhE?-$OKn;b>^cg_$8CR>ZfzD1W;CS=B-Q)b%;KeObdDZ{>c z_aDf&*4_*>x}J4~R5lnjn;yBf+U9JgEli#1vX0I{ygCh|9bDLM^`QQ!TVGM1-97h+ zs}+CAx^RRe+^#Gj#SGP^Y3cO!H!;fQs^iQ*A6*^lIz)|sWaYe5OAfLsPxCCY{I}M? z+MsW7!yB@u8ce2TYIeL~e?s9Kd}*a9*4h$wfBxx*9!sI4^=H^?6`Co}%IotFi$2Kg z@SeA7R1H-}Rq0CGI8LgD+K6dQaO%c}!YwD%3(+0_YTiq~7x!M{ZY77|Qcii2Uq_Wp z9l$6bHXrz{^f6v003apKB`1wu>~>py7Zi_O`vxE7{6*B6ZkB#%|0< zG@k`2H%3YqD=12XzVR}Q3oem>lZvv;-f#46^&fakyI43k4;f%xqf7~M&OPALSf$f! zp~|)I`$!k(mIl*BfdfrU4D!qtQ(-;No8Xlu~1|9MhQ6ES=bxYW2jNIdLv??we|hG`Pow%o!Cq-8v#FK3_qWlGEgqsXaTC3H zy=dwrlM$|dw!y={xeWA?ttlWssZ9_?VXpVC;}XLj_8pdln4o@It=n@XY~s;|K6`JR zANXXwrdwI*Jhko!hJVVwawaPR)iQP0J>zy;vun0@9kJ-gnQ`W?W8yk+J5&-WaG8{5 z%FpN|siv_M{d{$2@AjS&IL0n0YO}Kt$(O7T-AInj_eEUr)XB7 z<6j4?T;(eA49V;2-J416Jq}43Qo~Y3fLqxQH5UXc`01;-jOn^^)u*4L@ynUr9jNZ- zf`mTB^p(~tVhw`#>JC3>)IhlDJj)JNIaabze6ylQ_+s@#)sVZ*<@(Jzy=>7X*5!kL zw2SpxmM@$hN6fU^D<89rt#>W8m>%VcL&F<@P9;RPW@A-DMcCHTWP8iR_48lYN3YbM zn3HuM5Vq@IJ=?3gEpAWKGQEBB$#^aK%Rk$0{YO_D-9br+=}oqM#_nFiUPqPc4xG!$ zE%0qxt>%ll-0y=@!L8;c$RRbGoow5UODZX9CNp^#h%M9iTD#G2D**3 z!A3^lycy}CdNQmy>$v2y)at8uas27Lk(B!U`$d#@Yj3MZ^*E(wJ%vF^>i|rq2fz9& z`hM`0GONlrl*iw*I=d9k9QQ5In4f=}E&5_zBX!8)6Gl&;c+U&AAZ7}d`)4A`E!1V) z2|m=sUQPO3u8b4 z7$cAvLj)Syo=6ic0*N&?If+1E5r~@RX}|v|;PU7kX7v9rcsA`LgbM6;JMei-Fp?U^ z0N}h(5YFLJSqvyRv>-z>BZLtO&Syg;oX(@c3A-HeFAfgpgwPpLMr@E9%u@9E2-#`x z+Ih0Wxq(@p21&$C`<+bM{bsbj^7%`1 zmO}^GyOO@~mu`^c+pi=<4wnH&hcbXaXNQM|u&isnUH|4o^n_FZ5@n1rHb)>ZCg*I_ zKuDtWm5&D}h5;b#x_R2m5QG1U@gflbCMTGIg~Q<>HxwShVTCY2kO4O_#+U{os2D>U u8bdQQ#h9TC&CTd^Lj;{>PGgwSXed*Z5j0SKbfX942@o7yaaDE!3I7EED@jcN literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Scouting_II_(Civ5).png b/android/assets/UnitPromotionIcons/Scouting_II_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..ecc5be4016eb3cfc2c94bd888bba0e24af62b820 GIT binary patch literal 1888 zcmZ`)dpMNa8eiE%6w$71BvILIVdfj;GMN~WnHcOLlw5}SjFFka3>ufs#?hwe2)QP^ z<2r6J$tev&<|MY{7$)Ml##Sl0q{#W~XaCXJ&vTx&-uHdh`u*PD`#$TB^(H$x*edK$ z+W`PjAQ7!8NZh++vNDKIO+KK21QeY>CIC=(ZRa{w8aZqF5h-K=Oj8SNwvN%O@KM znhXUWR%1SF2=PRFec|{FZ4(wHam*$l ze_2cDm9IG~pZQ$(25jCRxOzj+t|WGIcz#p*R%Oy={(X<`ur23pxpU=9 z%e^)oA<+j`vWhcvN|RxUk(ygTqe+`@-`YmW)8XDJ4vWvvk_zD~4h&-OIt}xe3LS-B zM@iQ=6JieVGuu`k zF_oeULi9+6$(d5^(CkXm$NT1Q!kb>3_N5#3xMs}_?es_$6LjqJdYEm{5t3nN%C@na zlJR@F=&U)dy{LSJd_#IlRZUvGWXZ|jO63$=Q!c(bVJt7#-AQioT~_LYg=5)2q!Igb zzKO~oIXMf$d%6;W>AX>Wf-zAdredxzMg6%DOEN=s^V)laIR1)lfa z=X-ky%*8o@A6nc;?|L>W%j^!(`#2HZ&5qq&7bBkPwt2D`75@oN)o8uEp!wiH-DHd*Nz`kIU!yU*+Cud=Wvg| z43{=cUn&!I-6xE`N)tQuDjZV0`fZN1)8WAjAorVe%F6!NWBCoN!kTr$nXnOv7Cq5n z0fEuT4dzNL8=ZASa9*`12I3`nJ~c}Ssc+7mlh;CZ5#M*C2hwE(O(znDTiyt<$A64G zG_aUxDeARo`Ph=G@NPC;RKAwyUP&=m*IQ~5w!d_UJt;rQ7yIPak4MeqO}@B7;lm== zYP)QY0`s-5u+CU;Vn`ixWd1!K`TexHHtt*+l?&tiLSZBT0|;xX4;drd1v14!5Dsgg zi+BiV+hn+N!`|`*S0xp)kO(gSi+6lS+pXWB6UvH$g+_ z;}}i=0%B-vKMZLLBmaqEFbozAzJw0oGK1&}?kk9#%9flKmGx`RN<^Q)&9X21dsEh6aXI dKV!&@YGMYXk%s<(T2ewZ0m;U}y2i>U{=cNfJgfi! literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Scouting_I_(Civ5).png b/android/assets/UnitPromotionIcons/Scouting_I_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..160d414b8935e6788100f0ebef789261a6a7e340 GIT binary patch literal 1859 zcmZ`)c~Fzr7XMlaSXs5~2n1z^@MR%nLBX&{0s->^(kKXo@Fhf+00}!hsGveL;DEJ2 zSp`8Xi!7pmP=Nwvdlr;cghzSLR@qgy5u5kX=^wT;Z|vObz;II702;F8_t*&djpR_7?f{Tr1OTaN0I(~C^J@Tz zMgzc`001E80f2@e$G`V9%#{svb8!Ns`=_*{Di^MN5kWmC1OWLj_v165pimPo%86+1 z&T_xVexa(RBRJpX12^raIZ?cbL(p@#;KH-2Pd20-^B?DM1N4G?>)hrCeJw5Kqru4x zH6yQDmT5-z<%7rCA`B*6MkS?cqOxNzTfZzrcB(Wo?jH81+{P#G+?r^vq}k#Ih7I$F zw@0?~mX6Js>pd#$S$MlR+fKZc(!2f>w0u;z%=f~eMYYQ_!|9^RgoVoR;HqY3f96n=TbV87kBL1L1>v%Kxc*%p9mbCQ&Q+h1RyKjiw-Vmmd8e>~A z9jYSZhPv}U9nz|w)ERNSb!SX@PP+X0&Xb<)G0If2k)D4I>SR?#3HZ&#V!U1H==pj- z_0J7tC@N^%L@~N%GI>6Mbg=vYGh?fLP0wL=`{$E2PMRM{O9O9OFKggdwX5m{sDG#) z?%#-CF1f)BEHJ(Wc~%#ekLD=~Nx$y4Hp$oXaN+mF9WQ^Zo;z2ZpXhyYa^plvR4YBl zP}=jm#Qe_sM+M5%lBJb*iSAL;y?}yOCgz)oZ!LtlM2(Qz;y?qJR$t>R&REvz5Ol@q zY9%1jl4g6v3~_~he>QZH*J!OR(d*CLs^s&S`B^8){?%(Yx+}bWkP41D&5i~d5i75p z>t-L**BCl&h;i}A#v;ksWRg)EZ;CUxUN)U0)3uj{`p&J~oU&?1@Y%ZX-y^+;`P#xB z2p_IfccbBWsE?hmI*(~qre>TZy&6!dRCD0nA=dNt%?fARZxobhHLH21 zHmAr)RbcSxrdQbHihNoIQN56;*0k1;aXHtx|0%UkS$>d*Z$tEFnT}a?4S|JS-kAEw zn2bJIcHli5*MWP>uPx}cuh-;MHPwIkeYsJZdRfFNo>CJwRh@g0?v^ywWCG25;?GmA ze(QJPX*G_7_U>A}{v^8AY`kbmTc>SrtX;aZ+njy>loq`tVtTuPyBILMe&wbjLbBpo zsiE8Xq4t_*N=)uWIR!*_x(797)Hm{I2%S_+=!}kA`mv#2Y2Lfq38}!4HIp^rs+w^B zGcPSa#R|wnjw9$g?}OA?gd5+fIArNeDhm{Ft*i0*S7JR%EZfcWs3Du0>eR%|bAz8j z{=d=W($kFI_;$EYxPIK_Rot}Ko}5cK?pJ1AbT-mFI_}x*Y@_SIrG+{V!xj0|W=dN? zT&l$ERqI7J&2a5EFZE>xx=h8*n8@GcTl`5CsQwR~KQBIPEbgrI^N&hvInXHYC99x+ z{fDNAQ!eix2}9>^O%N0}SHETIq7}6CPwZf1pG=k{_iQa)@#MGWc7$MEc+5fZ=Jc%B>13i=2eOvYtX*vVmzaC@!_2IhqXT0xVW|Q_qzqG?~`W3 zC3TjBSP-nep3e4tu5Ib*o%FOY$~TejieH_&XBXS@FWa@GsJR{acDhRJ(%aiR@CRok za%PEw*dmC`iGtt+V9^*N3T=Zzlf1BKG8Rw95-iYYG8*k;{cid%f-pf4pBw-G1?GG= z2o^Z*cMuA=qF8nm1b~7F5y%f?^B_3*oDdYj3T=f4g~2cg1_?MIZ69<069Ykhcn}n4 z6)Xx1T4?i-Q3h{ZtA^=0Q z@v}(ZUmhBt`25NFiXS8j-lvSrJZHcZtxqWK{4huq9{~Y>%nn9`^XwbFJ^tq7?gg^| z3?56w6YwM~;lxfNyoUg#PkcQ22@rsG7!YW#zzFpdNe z5d?CuBmx(Y!Jvp-5(#CE3A9E9Vz3w#j%&jqvDqBF4H2?}2U@s`%Z5DxnzM&fokPH- F{{ihB7Tf>; literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Shock_III_(Civ5).png b/android/assets/UnitPromotionIcons/Shock_III_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..22a79ee61b3bee5cd9568ab4b4d224d9c89804cb GIT binary patch literal 2003 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 literal 0 HcmV?d00001 diff --git a/android/assets/UnitPromotionIcons/Shock_I_(Civ5).png b/android/assets/UnitPromotionIcons/Shock_I_(Civ5).png new file mode 100644 index 0000000000000000000000000000000000000000..951fcfb21091d115b9d8c741670abaf09e29bbb1 GIT binary patch literal 1806 zcmZ`)c~Fzr7XMHnKm<#TvX%9*C|eS?EQT!&LRz30LRds3`vM_o6824qQc$4}K`biB z>I)hSyMQ9tB2P9KpdboTs6o(bt%{L~^o!F!Y-c+6o_prr-*V2(ow>IlB-me9$5;md z09|4LfdpolDzr4g^+bWGE|}EWzCpeK&|D0CPt^eT7W4p85CEjv06g_Gckc49!J5CEXtRG|h`oHYawAtGXs zA7nvOW1FjK!?0R9So8#u;7dji^C$LkqWui}UT%zhFZ8x64@z2Wh;nM?#nl_j3MV1j z+b`~b-PPG%O@`I&40Bks;+SWUl}1m-u|){rHku>z?$n zN>BD+egZtkOR3akDNsL*Aaak<)_-e{H#TY@$E<{riW%H)o8i}qJu+xiTpg?xkFcya z3>uHW6!Jut@n%xL$aHts+-FP1#keGIV&jRqJ2Ml<7uYA!4>*yB4UW!EcR+nwjY2Pm z71Y!pC8a%VIgYZQoberYX)WG*d_Q15`x3#I{2IBiJaDAGy!3TC1QNcG>UI8ZRF$ct zI$o=0C+*Ph)(4}d%HB6oFq`yx*l4jA_S@<1b;}j)Jij+E{?2<7P#VWa%3 zYmNQ-WmcUdfu}OUyWCDnnk=k-b7$LzEm=JQ&i!Z+XQG}p(wD<(c&PaC*5^%K&n|b@ z$o&SSW?te2Smk1MVE&oQXCHT+(>FJJrs%t1IoWsvVI8nprrS5)-7c<7YmqFO;ChAb z!m@Agj1%?>Bih?WP(1Oe#$k1;LFl-4VEgoX-xr-*r&3Ki39Mq&O|a!r>$`Wg`Fa{lmA8J$?H6Qg-v|^w2pP&uMkNZ3sM8B& z21D`bvEM5kudcHU(pPuv4B!8q#}LQ0?cPO)>vrKC`;#q-K5yw@NNttx_vIHn3hnq% zBF_}wbWL`uc>$Ttx$P}a$;>ui^cU96Xnv_?+rXX}Y2Atu97Ax)=K4(Poo79X5XtmMslLx~y-&(1#gneYBdvhsY{*fc76G%x!@(vW|I z#h4lHp2fDp|71&^rP*0-3AA16xpQOFvQx^{}bT^@uO?*i$`eYv3YXe zn9_zpT5FZ-t4z*vE;UbtUDu2KFLWik!|DqIe34OS(}C>}&sm|%u@{(wSASupSjeEe zu#?Iu{5`dwV+(XpO=Zx$fw@`IQ0>jpUJ zo%;Bi<6CZD+WW-5mGzjkc(naP_1BQ}s@rW3?e56l&Y7$)73<3BQ`@#ED^5|a$yoHd z-slG{SIOo@ixl5Dc_8L#xD}BQaQaB-RDvfIwgoh-BUVqkj|d1q?1L_1^`WA*onU z@TIDPP{0x;Qx7o#xFAsk=klp+CKz0LoD<3!;p`3~zc}GshKQr0jLuAifE1%oC_!94Q1U~i-PfTEYw@`xr;S)p#Spd@A z1?>V(G)714u?AA~KJf|VrZE8o{+7V-R}cyK1PLP%0Twr&iG{=AB7Pz~iOWu4ibPB} z%7gBKadSsHp;cGo#&khBq1{k)Cn^R_Mbh0|m() val Helps = LinkedHashMap() val Units = LinkedHashMap() + val UnitPromotions = LinkedHashMap() val Civilizations = LinkedHashMap() val PolicyBranches = LinkedHashMap() val Tutorials = LinkedHashMap>() @@ -41,6 +43,7 @@ object GameBasics { TileImprovements += createHashmap(getFromJson(Array::class.java, "TileImprovements")) Helps += createHashmap(getFromJson(Array::class.java, "BasicHelp")) Units += createHashmap(getFromJson(Array::class.java, "Units")) + UnitPromotions += createHashmap(getFromJson(Array::class.java, "UnitPromotions")) PolicyBranches += createHashmap(getFromJson(Array::class.java, "Policies")) Civilizations += createHashmap(getFromJson(Array::class.java, "Civilizations")) diff --git a/core/src/com/unciv/models/gamebasics/tile/TileImprovement.kt b/core/src/com/unciv/models/gamebasics/tile/TileImprovement.kt index 6e4c9341fa..26dc2f4d32 100644 --- a/core/src/com/unciv/models/gamebasics/tile/TileImprovement.kt +++ b/core/src/com/unciv/models/gamebasics/tile/TileImprovement.kt @@ -9,11 +9,11 @@ import java.util.* class TileImprovement : NamedStats(), ICivilopedia { - @JvmField var terrainsCanBeBuiltOn: Collection = ArrayList() - @JvmField var techRequired: String? = null + var terrainsCanBeBuiltOn: Collection = ArrayList() + var techRequired: String? = null - @JvmField var improvingTech: String? = null - @JvmField var improvingTechStats: Stats? = null + var improvingTech: String? = null + var improvingTechStats: Stats? = null private val turnsToBuild: Int = 0 // This is the base cost. fun getTurnsToBuild(civInfo: CivilizationInfo): Int { @@ -46,4 +46,5 @@ class TileImprovement : NamedStats(), ICivilopedia { return stringBuilder.toString() } -} \ No newline at end of file +} + diff --git a/core/src/com/unciv/models/gamebasics/unit/UnitPromotion.kt b/core/src/com/unciv/models/gamebasics/unit/UnitPromotion.kt new file mode 100644 index 0000000000..35dccc8e82 --- /dev/null +++ b/core/src/com/unciv/models/gamebasics/unit/UnitPromotion.kt @@ -0,0 +1,15 @@ +package com.unciv.models.gamebasics.unit + +import com.unciv.models.gamebasics.ICivilopedia +import com.unciv.models.stats.INamed + +class UnitPromotion : ICivilopedia, INamed{ + override lateinit var name: String + override val description: String + get(){ + return effect + } + var prerequisites = listOf() + lateinit var effect:String; + var unitTypes = listOf() +} \ No newline at end of file diff --git a/core/src/com/unciv/models/gamebasics/unit/UnitType.kt b/core/src/com/unciv/models/gamebasics/unit/UnitType.kt index 11f64ee996..024d20aa9d 100644 --- a/core/src/com/unciv/models/gamebasics/unit/UnitType.kt +++ b/core/src/com/unciv/models/gamebasics/unit/UnitType.kt @@ -5,6 +5,14 @@ enum class UnitType{ Civilian, Melee, Ranged, + Scout, Mounted, - Siege + Siege; + + fun isMelee(): Boolean { + return this in listOf(Melee, Mounted, Scout) + } + fun isRanged(): Boolean { + return this in listOf(Ranged, Siege) + } } \ No newline at end of file diff --git a/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt index e593578130..b2d4f7b0c1 100644 --- a/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt @@ -47,4 +47,5 @@ class ImprovementPickerScreen(tileInfo: TileInfo) : PickerScreen() { } topTable.add(regularImprovements) } -} \ No newline at end of file +} + diff --git a/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt new file mode 100644 index 0000000000..157f4ef891 --- /dev/null +++ b/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt @@ -0,0 +1,45 @@ +package com.unciv.ui.pickerscreens + +import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.scenes.scene2d.ui.Button +import com.badlogic.gdx.scenes.scene2d.ui.Label +import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup +import com.unciv.logic.map.MapUnit +import com.unciv.models.gamebasics.GameBasics +import com.unciv.models.gamebasics.unit.UnitPromotion +import com.unciv.ui.utils.ImageGetter +import com.unciv.ui.utils.addClickListener +import com.unciv.ui.utils.setFontColor + +class PromotionPickerScreen(mapUnit: MapUnit) : PickerScreen() { + private var selectedPromotion: UnitPromotion? = null + + init { + rightSideButton.setText("Pick promotion") + rightSideButton.addClickListener { + // todo add promotion to unit and decrease XP + game.setWorldScreen() + dispose() + } + + val availablePromotions = VerticalGroup() + availablePromotions.space(10f) + for (promotion in GameBasics.UnitPromotions.values) { + if (!promotion.unitTypes.contains(mapUnit.getBaseUnit().unitType)) continue + val promotionButton = Button(skin) + + promotionButton.add(ImageGetter.getPromotionIcon(promotion.name)).size(30f).pad(10f) + + promotionButton.add(Label(promotion.name, skin) + .setFontColor(Color.WHITE)).pad(10f) + + promotionButton.addClickListener { + selectedPromotion = promotion + pick(promotion.name) + descriptionLabel.setText(promotion.effect) + } + availablePromotions.addActor(promotionButton) + } + topTable.add(availablePromotions) + } +} \ No newline at end of file diff --git a/core/src/com/unciv/ui/utils/ImageGetter.kt b/core/src/com/unciv/ui/utils/ImageGetter.kt index 676d8c4f01..ed7a42b9c3 100644 --- a/core/src/com/unciv/ui/utils/ImageGetter.kt +++ b/core/src/com/unciv/ui/utils/ImageGetter.kt @@ -50,5 +50,9 @@ object ImageGetter { return getImage("ImprovementIcons/" + improvementName.replace(' ', '_') + "_(Civ5).png") } + fun getPromotionIcon(promotionName:String):Image{ + return getImage("UnitPromotionIcons/" + promotionName.replace(' ', '_') + "_(Civ5).png") + } + fun getBlue() = Color(0x004085bf) } diff --git a/core/src/com/unciv/ui/worldscreen/TileMapHolder.kt b/core/src/com/unciv/ui/worldscreen/TileMapHolder.kt index e0b50d27a4..068a373dde 100644 --- a/core/src/com/unciv/ui/worldscreen/TileMapHolder.kt +++ b/core/src/com/unciv/ui/worldscreen/TileMapHolder.kt @@ -99,11 +99,12 @@ class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap: for(tile: TileInfo in unit.getDistanceToTiles().keys) tileGroups[tile]!!.showCircle(colorFromRGB(0, 120, 215)) - val attackableTiles: List = when(unit.getBaseUnit().unitType){ - UnitType.Civilian -> unit.getDistanceToTiles().keys.toList() - UnitType.Melee, UnitType.Mounted -> unit.getDistanceToTiles().keys.toList() - UnitType.Ranged, UnitType.Siege -> unit.getTile().getTilesInDistance(2) - UnitType.City -> throw Exception("A unit shouldn't have a City unittype!") + val unitType = unit.getBaseUnit().unitType + val attackableTiles: List = when{ + unitType==UnitType.Civilian -> unit.getDistanceToTiles().keys.toList() + unit.getBaseUnit().unitType.isMelee() -> unit.getDistanceToTiles().keys.toList() + unitType.isRanged() -> unit.getTile().getTilesInDistance(2) + else -> throw Exception("UnitType isn't Civilian, Melee or Ranged???") }