From 6b6af6e72ea897e34e75a96a58a893a528a109ec Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 3 Jun 2016 14:57:22 +0300 Subject: [PATCH] - head sprites can be given "tags", and body is chosen from sprites with the same tag - black character sprites --- Subsurface/Barotrauma.csproj | 15 ++++++++ .../Characters/Human/fhead7[black].png | Bin 0 -> 2162 bytes .../Characters/Human/ftorso[black].png | Bin 0 -> 6516 bytes .../Content/Characters/Human/head7[black].png | Bin 0 -> 2047 bytes .../Content/Characters/Human/head8[black].png | Bin 0 -> 1949 bytes Subsurface/Content/Characters/Human/human.xml | 2 +- .../Content/Characters/Human/torso[black].png | Bin 0 -> 6844 bytes Subsurface/Source/Characters/CharacterHUD.cs | 2 +- Subsurface/Source/Characters/CharacterInfo.cs | 36 +++++++++++++++++- Subsurface/Source/Characters/Limb.cs | 26 ++++++++++++- 10 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 Subsurface/Content/Characters/Human/fhead7[black].png create mode 100644 Subsurface/Content/Characters/Human/ftorso[black].png create mode 100644 Subsurface/Content/Characters/Human/head7[black].png create mode 100644 Subsurface/Content/Characters/Human/head8[black].png create mode 100644 Subsurface/Content/Characters/Human/torso[black].png diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index 4b40ce47b..0fb8587a2 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -374,6 +374,21 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/Subsurface/Content/Characters/Human/fhead7[black].png b/Subsurface/Content/Characters/Human/fhead7[black].png new file mode 100644 index 0000000000000000000000000000000000000000..39ca2461611a57528ccf8e85d350acb6fd42aa7f GIT binary patch literal 2162 zcmV-&2#xoNP)(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M&_(?=TRCwC#m|KWlR~g5D>#}cW&$-VfnNG~)(wR2BCABu#5G%CSO2L;Rfm)={ zhf*s(iMIzuq)+05B7#y-Ld1U?Q&uRkEm3#1TNJ$o%7HzKbm74GsOgg^*ER+w#_e!rHC5*KLAU^pU4GNLHJ z^E{#`!uS1mXWu*HigiMOkOJq>PKZKEakua3C(~TtoEw{a+FLY5@eSvAT}eR{1V|}~ zOEF4oit7ROPQj%RbVuojOV&M_6~z;2YFeFce{!N;!cB1lQu=HQ49=eN;lKXCmMKOPb}M#X41qqe-b0xv_-4j}#zr%uG$)TPs(7gH#VV z=crUF7zfuvwVs@+ds4m@YWcVjLLmg9rx5~@QOat!OJNMdG-KiPIhNZks+IEW($blq zUbt}aiAt@GyI)fUs$n0lb;uPieW zs)@~>{Z^#qgH9?eV&ggGE}sPAfY$OUU#l6MW0YBx1Y^ymHOv~aG$jZ_rl+PTMgwB4 zXnK+@Q%z=PHZeaxTW-+)jvIAuDFv#?RY+##`k_KkW1YLlSo^~$@GFI}C?P0?5`IiLeN@WB?x>ffk!&*(;E&MW*N#0h|5*V^(OVr+i6Tr zeqIFep3FeuHlUOe(rG1|QcBW1XOuduwOAYifzleS6uB{!0v}-ud=yeiN?H&pfs&9} zgAQV35Tb%oD3#jpoIC2=W&hWsl<%utE2V(pqZIU%ygGlA@%p3nB2eCeIDdUMkJT z7{>fdsvrcz-WsV=%uiI=F;S*b^6&#quixYBKih0eaxSDkr`iP{*?;G4S`5vGmIUhn zY^N~R6qhYB#*(BN+v{WOZj?B1*AC`4)ftaNnsJ1bg6<##;TUBZOXu4}o@U#Y89w>& z!!*4>5Sgs#RIENDAa6C4)fCFnR zB~KCinp0<6%2 z$*9{|z28@QPH8vw`qFZA;n#nX{r-?B^oavOHHwfpDkY!MAZ6HTldYa79g8@A=m@p3 z5=Wl@$LzlP)NVDt^>6EfditARBS}VddwtsNHpBkFoILf`uMR)|Lf7~7-O|}Rt+lhO z{ZT~eQEpa3})D+-|g}ESHHs9H&48{bn>kySC&pK&)l?5rA{7y zl`t+7lwxLPwh)&qO#KQ?yu2xVIk~Cw`8_;>}HQsvpO{Q;{Z-sGC2qoBg?>eEpAiU~2 z9SsmdfU#L#(!(du(QRE}dW7 z^d`$?nI{Qjal)1l?L2(=`4eBq7j5Co>jY&j))}My=uYK&5*U#J%1zyt@`5VJtkN#?#ey8<68sGQe oUl+-HFy4oHAL@Om|5yBL0Dz>n$?v#R-2eap07*qoM6N<$g4vK6YXATM literal 0 HcmV?d00001 diff --git a/Subsurface/Content/Characters/Human/ftorso[black].png b/Subsurface/Content/Characters/Human/ftorso[black].png new file mode 100644 index 0000000000000000000000000000000000000000..614a09857bc1fe2d25e827273d3214569c75744e GIT binary patch literal 6516 zcmV-)8H?tLP)(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M}`bk7VRCwC#dwZ;9S9#y>`_@`}pZC3Y?#!KspJT=|w#O!bZEPAFBNIqSz)HoV zDUb(FplZ{XLeon8Q6;ION@=4=L26pHF{o_<1SLX6A+)IiG=*Tsq#`pm_RL@dkKgb2twXAcALPqUejuW2zUf2_ z_~|#j{wMNr_Rm24Y5*MoJpf+-@NdcTDI$QZyY4@H_xpbVONS0!_kBkn{pstz=X0O? z9Ijls^0FTM10VRnb^w<4c#{HH0nkY35eEHk44DG}-UHxaBJ;P&@{`t@ z|A&7qFovhE8Yf=6^9_dqJi5Akp$1?Lz_WwF;92hjX7}jW9rwUF_x+22pMC6&yZ_3- zAAIJ2;oiIN{KrUK-PP*qq8RN)B?5>IB*eo6{Ia#?NuGJIYh5u$5MT3s?*i}}0PdV_ zg6gI!ejmWE0T|4_c{XZ)_h0-&y#3KP!Weo~frkLSMHI_Yz|IKh zF5Iv?0*LT)k3Hm^;bTe!0$^%&PNIh&4v^IAAU05mHv=#rir3wL1wgw2P}R4F5S}2S zwlQY%I}p))nx-F)F?Ilah-bi?{kc(3JGC_V_dbUAkcv?NObkxaUy0uTeHHmQpb(8< z(Ci*>h5ODW00!*?7J#v?2J2F=Az0@yDV?rf2Pdu$B125L-twW?_BzWlWLZ`(isCm_ zrOkUphjSLz+Q(J(ZL`0h00jUiZoc6|5dFJQ7|hglVy+qIepO?1F?b-#&LF?`#ZXuY z7QiuR1j-0rutd`x^m&fj!2!CLE}+|8-?*^W9W0!<2QIAxFTpJ~8w(h=7H2|q z)23 zMhDGyXZre)hacKM8ja=~jr!Ksh@fm1tPr6*FM=^vRm7^wT#}@_x&Skug-d)4(OCz$ zMgzt;5SQJ+5HIF2V!YW^n&|>l0MaV#%T^`Gv+VIh2M<1W`0x?bYH5k2L_GcUGiWp# zXf~PKXCtjskPP+ zF}(M%&Ou^SW>z91ln*Jx;ZUu0c4g&alBRnAU`*E~$=EPE07#M=hyj%df&eOu#+r(| z6uSX1Gc1nPy!!a@(kf$K_B}U_iL7AXf_)ViC|+ufT#i@(Zm?t=H@1t z8LO+SWADSRHfU>gR)|q3pbBP!O36FQLaIvuqt(lzvTOhVmqw%E9?3-%3$G@L zP>n#;X|1mk{y_8|U`E>M>;_ItXP!Z?*CSOmOoYwNO>_3_ zIlBG!WAea*51`ZOu&QEiZm#|JKJ>xgtJfQE_ufC_k_4ap#3%6Fv(HXH|JC=L#5>>h zt{Fgthr?l>_ zwpix@i4jrb-dbSNbJH~aJIstM8{?U0zKN$!eI5CP@DP=886(D7#?L)>j*}#j2jB1@ zk|cqMAWf5_AN-{c{5xaJ+nH$a!C(9ZeC|&_i>p_!0swBgRXp?bGsv=RTFiDzX73A}J$sHWT(}S?BqqiP6?r7fvXAuoeT+sU-2eIq zkrxHl*VnPWzJ^|}H(jba*J!j-mpHWAElpek6@{ow`AW$Q1;&_OtzKVQSXkIq0{{$} zXfp&~@(|s6Kq3N|_JPry5UyPSFf)uXKSID!B0{g<$L8i{*^`OD%+uZs03w1IBL;&Z zz3}|Ek>|NqyNFN{m=6=tdsG#TMgwnq+fTtdhb+&l2PzkVP7=Wk1_NBVa>cB!u2R3> z$8a!2uh&Dr->+DpB80e76n=TqVrKzRAQ16}gaF+}cS~vv;tmnF$uMX}wQehd#+V;r zW@2XKd5#d{wpKwsjYgDZnK4v)xi$39L0YPeOSwRi?8b%zTn{mO==UWtoN$h}j^|b69JanE9jL z`=0=i9X@;nuX*k3AhNYX3kwS`WLXAlEt;(+(lo7Fm?B0&;S0nV5ktWK{RfV0Y-}DG z4uIe#+v0x8!TJ2&fGg$6;1S7VyGx`l&rG^pxJEh>A379H`W^LUtC0<=Vonf z4MkCi_a5GtyGKNi0C>Fookycl$0tAehd6WQG{)mG&Y%C*i%}I>USKd7qCXfS%L-(L zhYw}3Q&D&yFgG{XSzcbA|BEkvVRsQU41m{E%ha49dr&HcoI(f!%wjNwa6B4=h{n!3 z7-KLu*Fn48#_Hl^5F+NF?DRX{091O-Cy{+Bj4H$SGTasr~l?OYPA}keCiv|{?o_b_hc;cdm~`Ij{q@LD?02PtW6|IQ?N_UN0GtO(!pJ7 zPznzidtnj{NVYUj)e%dZgRhYSAqM1m?i!5-I56fH7I5Q@H(+&jb=m@FyMe00T7#vf zC8!G8?G{?C7DR+33P30&sRF~{;PAy4FD;1bIL|ViKliQa4V-!UnZN$r@BZeGx9aIr zLVQdW2r4ja%Uxw#-aYfLUS98h=I(oc^gFMA-D`H$0A>Ry&X$}YZtrgq07xMSvuUvn zfJ$=qMFdeIG%AiCza1MJo49b{0z_o11E|6<(+uxe8+#%|;V0 zaq!-2jFGzC?zr3Q76d|36xiI@+#*ID!qVXzdbL`;S6WsICYlOXs(^&zi=D(g-#znH z?7Qa}0nphxr9_B|ZxQiEl&}D)5?rR?8WrlVX^M&{VvHB_s!hchVT{4?p@X>l?z@ntDaPY5j4`O!YpA6)Bx!;e1tCQ7MPa(#-g0-d+nYqv%IeDW z2L8dDAI3P(tu;nUAs=AtjZzT?Um6-9jv`Ce5V&6OpM2_5_9s8`Tg5gxY%M@^nZRce z;{&oI+C^g&(Ez&ETmXs~<8q$oVy$H&LYk&Hbm$P~=jSmT3~~ALGFDetapcGmFf+!Z zF$^2jYAMpR4r3V1jG`!z=Q&~w9AZQ^9-nj06+{dopw((4#xQlAk~9Ugi9`UK2Dsh? zVnoOXz&L`--rWpd5WLqxw?|+4(wA`GefP~2V^;~;__ZkUfwB`46bc4G!6WNz4?D=5 zoo#UteX+=kUaeM}pYUw}sMqVL)oMsaGZg?acxZ@YB3lsCwMZEPtO+7JMY}`^K4>atYHFGT${J< zhZ$@W5D3KFPymaE524X)?m2LYF+!t$hnc?}g9o4xiO`Zyj6jnvpx2CmEX4RN8{{Yvo&~&$?U~A4p^$yVpRRPM4D%db+$53XMA0Q%6 z#}H9?k0dE~xe`i9>ovG)0BV>))aE7^2=JxK6=KvHjTeXrDgua1>RwL7AbTAERORU? zCHKy<49>X$!|vkMi>wkcv$ zJv0FduPT_VT^m;pK%mjX7x|zVXV6#;MnV8om$K2QIUbBK9*p*q!#b%2%ObK|6n<{< zurUf)D@`FvMUkUctCa<&+O3IfB_g=QA#@|==jR|IanK*^y5VNC1ttTKOhRuBJM1bp zm9HNK3ar26&{eivqEO^x?>&+6$w=rF?a*~-;T))5r29%K?I z6mSVBtpS;Ut^+^}I@=KxMq!vBYD#%+ZQG{qF7fg7OQryog7JA(Aj>o4S%wfiVvM9x z9&QjR=XDcTNMZz=GSSks248s0&CP)=qbPjZY&FqrHg>K1@4tU*QYU%=DnJD!ZRy;~ z*rk=NH`5-yo6bUppgU!mDExsLCZ&DG?=>b9QDj)*?-7 zu*Ot&R9X0l86u@iYpuZ`1S~F=a{+72Ldn>6%js6DiH)TtY^<*VpmP;1oHaV38UUgK zicP-uDIUxc9GAG;>aEs{4p0~(NC*$*gTcfy-VVUTV)ov{7m_ImhE3V~wQO(BTGZ<` z5OW1sd2A&{0aVdyw=ftCP)k!d=b)lk+`r$YNkV#!(^$t&+=)|v^<{|4IR-`|vB48p zXF^a^EkGwz@`n1cpJ(V4Bd; zvg*?g)V=qpH|lWCA%uudr!y^vje0#LB0J#|v&$I9u{-XZgzC2>>K|$hK=gn{Kq558 zvOq#NwjbZvevLQRp`}bu0n8~XR;db&C0S#`&RDW+Xm3AYswdbSQBe>9#&G2q+G(v+ zDK)!P`IsaQ^?DtX5qG26z;HN(F&4zsDDuJq*rmnmwL11K9>9U6Ls(y3k>LGDLOyOn z7q6~P(-^(2LsPO+zwNI*d#!{uy%O@pmVnW)$Wz>HJNM05vn zNqr~ehpK|Y%%y3;1|)(~G?}RkZq(~ATn##{g{mGP;s$`xj$&I@dH}CFegf;OD*$B0 z7sY#xaVN=OAAnUNejd;qvrg|G*YBV2(@p35cGy$w`-~Ad+J@s|G z|L1=Z51)JkuFl;u`{$>>*W+#q=yw77&tHDF_~oCxzo!xb!yr>}zcO905Bt18j0#`m2vHDJ5Q29a!>t;1HxGzqPv>s0`*TE$BuUC) z1(hMMQ`H89;HTlc)10JPV4yI@P>k_-UgRizQTqH6aq;3MoPK(1qmLdv3IKTg@yF@$ z#~-Jci@*}_FQM_CC=o@LVLTim&&Kds1|NJLiu_9OkI*0eZ_h+Uz(r&kL;J|^G z9sBp4IEvTZeiSPD(IU&&LtX%)r7tLgd_020@Ovh0h^aSsM?iltq!{JLYPA%tRue^$ zV?5@mDdA#-VKd$FC{j5tQnA633VR=rrU@jLAXw|rY_?vNrZuLSnT!HBdDmUr9^%$p zZ^g>W%F6;^Fq$@*D=Pk<4<){%F}E;?A#^0s1J))lLD-D{cx{az0-Mrt;jsMTtkrb%g66GN)wr6B}_ z5RexhMNz=}E&nfyOs2wH=0^pP4}LHjXFkhv%&x&;h(@D<$KLT%$cv&-DgI|6-NDq$;W)D3>|T#u|#Dbblu%>4dWGC^rg$o7z~C=Ok#{7>nxmg-dLL_NfK&l zO`LNvNt|~s@x~bCN;Ax~MIs`2AFBDFd_GAWoU^+Ypm^1*j^f^XUyHmbP_Nfs(FoWg zLNOqUd>o2=dHIUZ^CCc13>&h>Bm~r$$g*Kh635OtP7-IVvt+F;nI92p`TUh-4tVdc zc<(-82(P_6*0B>GhUFF67iyhQzRK+zwgcv*|Mo85bCl)q=wjWGT{U6ra-?`pRIBPLK zH;*JqQ4|9-8g;z$o$uUf*CT|0q9{*{yqurC_tQeY3xHO2Ru|BIzu*7$#O>Pz(c8P5 z-J7K&?OLtwd>XI>~&{4g`y}542L6( zhQl>cePUr@{@2^>_HbgNIA^yVj@tRnkI9(rmA<9`4ElW}X^JFG%kYlsH#Rmudv#^? z3-x;a(RQo#?pCY$x0w0J^7571Xf%R|AkT}u@cwF+WvBDP|5;+~XAU1)dU4;r1sG%C zk_5wE7k~a|e}Vt{iBF^OemXmt^#;86=x%PJJevQ?T{H>1w>97M5f>3XsYTFU-$*6rV1*G7&cxTgR5P%;7@PmE* a-vI!Nqc)>2HdSZ<0000(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M&g-Jv~RCwC#*lnm~RUOCi?^ybgp+SW=0bge2B4z3>A@x z-Xy&ci69~fe35UYSAz6HN>K|c3ZjHUA`nR=q*AAuOmlRc86D^G&b@QbJ@?#w&VE{Z ztwB7^zA+ORi&KCJayn?Fl9=lHml8Q$zqR>oN%A1KV z-M@9q)bCCW2X`*bOdol#@2Qp5@liOzRD1fNdRg7t3>2M4NOz_~YobLMM@ZrDl%gz4 zbWz~6rWGhg{Y{1&L%Pb*o?ciye4%%Lr#tbL_u4LRzBPW(!%n!z42y5Zo+R)DQRE?& z1m%JBK!pU&Htm@?T2oU5L4a`(by~y|O@!~G`|Esq_wN1oKX_j!9cHA%jGsOAA}c6HBTQAIJOvKID5fzvP4ki&P#$SkLKvZ)B+V^HUU_}?;B$Zc zQj%mONyge6N5@AAWA@`5&VfTvRR*j(pw=LtfM?d7{^pqMKMZ|o&+V) zdCn_;I(WAy93GbCW5>qNRLu`sN(hX#WO+&GOGKp**5YhMk!(=q8PXY~vsmj80zzM4 zHAI0xwtVWIW7JPRDWwn~+|u5g$46C_MfeWuELvCSqM{5HIxk5318^4MEJa=*oTJ%} zskJ)DAf%pWD66q)!kfp3oH@NxFTywwxT3e#V|K@w+vl7^0HN<81QdlPOG}EhpctlD ztr4~&2z@4Ix^#CeGP7$hlk;2YOm~>*wy@fAVNmeq*|WCQkn#C*t9T!COal#t(e7wv3X3QVaYbL`q3xa+3P=4DrMiwR!_zXza#$PQHGemtH%?tEZQ_Zs(kL z$DR8-OP4hG+~;o@AC(n3skW>SGm>FW=u7HRfFCHz%|6|hPt8|EQGmkX%A9hu2iAho zI1E$WHgla0*X)|{<1D*(X?url+n2`Alotr+5TZ1W!dRq$I1ZS-beh!@Cs;YX%p8N@FkuZ91O#z|t+N%L9FZn%v^FGbr|z4YUwFRRs6R9IO3lu1IpBGcdgxR0 zJv>ihbOqK?3u|QB5;Y=(GnB(2d6JM1))`$`W;ht3wWX#UtR-t#agKAK&*$Gs{LV z#TY|bXf_8KSz4hBgVq)+BnB7_Q$~ZF;rfMMZ?$*%*r+YjQzx&ya`87tXj>RfrYoW_ zU}h*m({xmC3o}_!!WlPCs<1go;$Ykoyv*F#}4{T zccNNa+WE`XQzvd1_R`Cppq8Yi*l}r_FWh!L{ml$pR*cdLdQy&?u517Ldb5Zo!@OMQ4b?l&nKMd zjozIq0*@$AC?&u-tbS z&yDQ3_D1)&Cm$J{Io*4q-HP7!lsp*t>b7R1ev?ovSS#wYgF$FVIxbar4h|~ zi$)wH1xP6fq@r^6X+QL=K#Y&ty0jO7MjUg)l?!^1o3pvL>w)JTYc}hLl;`aemc3=J z=aaICGqiVMkdW(~eg;FW@sv-q79w!0omqZK2*Gf;PB=X~-s$sN4FGoBagTMrV0tp< z=5IZ?8P)w`VHo~8u0`MNv|A5%r#ioyoA3Pfik+o|4A* zkN@29-r9T}0$3!bWLZ<%m=(qXQ*B=Dn zs;@re-k)e7TYc*Bz*Jh9%1DH(5F%Al4waJfmVMWlU6)O=vbusXmh&4!mKJwX3j_Ys zZO@0wl=W->_T43SeXX3n(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M&BS}O-RCwC#m|KipRT;;B-&$+$efB=*%;n6jWqO&JmbTD>Eg%Xa*q{kKXh@nE zV~jo!LJTn?@c~1lPx_$5SB$S3-_&>s`appE<=5!q0A^BEzQqfc(=}B!T?)(f+*bT zY<0a>>QFt24^(C4M4LRzi_;<;x6b|v=mO+f%HF+uxaYoakfrG**U@2(Epv0DL0uf) zQxhfk;r&Ben@O#NBFhjFtgQ&N#ySsP-bDBX_#fhFE3M%_PP@GC^34l8RtxmQk(S9& z3pj_;8t*|6ymKh=c;|QEc@Wfd&igx!F(3+2mrkW*^zvn8`SunuQ;)+Z#%jR=qVNdb zd&<({oZ#?i5sVgUVaP-xI1iPR`SB$FeX}`nxVO>yb5RtR-2P--AtIwexymA-v{pY3 zgasvn4h)s`cn=fJgramC3ubP^l z{$8Us{jE#2*1DM(y?j9wQ5E)Q9*^^zy&41oh$4w&Jf1j;2wR5Xphqo?2(@R}?^7Ee zqaJCRNrTDhImYVs`$g<8(dLPFRRh7jC!G>=Gu|(G4|!QpRuzF(Xr-8)p2R3k90mkh zXe140C!0)-H*nT6NHe^N@X;9EK}Bjck>T#R7LmmNN(mw=^yoWP=EWC91VlDrL>O<> zNh?QpqsRPQi!95Dj6sEtR&$Ip>(lel>2@hjt&%Rc5tq|XQy#ec$l({>dbQP0^K}64 z9Ib7;iDwr8HyV_PniXdW^yYNLfuhV);vhnNMYq#IDFiNNentBwnWvq_EvCQTToyBFC$8S~haPZK8zE8UzkWyQ*Rm+ezc#ForYPqK5{7Q}m^ z;0!zVUP)3*ICktQ8doJxWWg19=h5{T>QgvpLBx2Fk)Wa=_(Sf>3c(1_YSid-I;?aC zY}Ja{M#S@P_35TLi4khr(d`GEZTHx>w8-{_C8nA&eta8gS)=p%%lGWP@s3Bwl61M> zYtzMnG6-Hu?^`2HUw_cYTK|X=p|ln4-jI#VvSYTz>CS*!piu&)b);oUVLj`;K4;IJ zXQQ)DYi=ukdJmWy>uV=jS$^$?H=cU@k4DllU$ja3%ODD%tk4@HK{;Phx$0NLyzoV7 zIlXocYaR2`<9z(e9dy$i1Vm)>9MgtgTGHzeSv%L}}mhi1Qv-Ir>>aX%lL34fN*8pB0u)KgFsVpF4ajtNoNSF8t}Q|N3Ir zdyful?7d|_W>Y)+BS9TJbR9}5R?n_JVh6oDOrWW(qge|;G!_2s2R4Qor`CIHnXEJ2 zY>+!>Z*&+PWl zzMB>0ZFw;uFp8pdRMsI%Ux_v2)N<;L#MawnEy_HxM>VQ zsL!-6m^^vE_r5RPcIfIf9p0N|<=0+WSs(8V3%pW}{q(38y|b_$Q4S*-V}i{= z(VE>m=lSZb2N~u?b!@r)qtyGOuxSju_h_xT`~IU8dG_B!UFf@o`LJ^S-a%G8)XDNW z5y1ooJQx$Qb#96;+;osnU3c|cr*gKfuARTgojdj)K7t4z9Mn5;&CYF&UY0*ND9Q({ zbFtEfAPA_}VkX9$9N4#eP{xhV0>|IwJe^~#HN)rcI`YBa`<^?w+<#+r?P#NxTw7Mv zZ=AIV9&0UWmht!3PE}f)G>#MgJ(GF^SLB>uJNv)8jJ|&6^eer=@Gc#MpTSGVc}G~Q zv9Pr32T2$`qrGr(`l@2k?|<;+yHs3z=*Fq7SIm8XacLpH^Nu^eX{`e;y{?Jk{}0sV j9~_sVE<=4(p#C`k3*lj0MB4>v00000NkvXXu0mjfBC)Z} literal 0 HcmV?d00001 diff --git a/Subsurface/Content/Characters/Human/human.xml b/Subsurface/Content/Characters/Human/human.xml index 28e4be637..1fdb2ec3a 100644 --- a/Subsurface/Content/Characters/Human/human.xml +++ b/Subsurface/Content/Characters/Human/human.xml @@ -1,5 +1,5 @@  - + diff --git a/Subsurface/Content/Characters/Human/torso[black].png b/Subsurface/Content/Characters/Human/torso[black].png new file mode 100644 index 0000000000000000000000000000000000000000..b06dc117066830c1f4edc14c789f11774c67322a GIT binary patch literal 6844 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%0AH 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 SpriteTags + { + get; + private set; + } + public int HeadSpriteId { get { return headSpriteId; } @@ -92,6 +100,8 @@ namespace Barotrauma pickedItems = new List(); + SpriteTags = new List(); + //ID = -1; XDocument doc = ToolBox.TryLoadXml(file); @@ -171,8 +181,30 @@ namespace Barotrauma spritePath = spritePath.Replace("[GENDER]", (this.gender == Gender.Female) ? "f" : ""); spritePath = spritePath.Replace("[HEADID]", HeadSpriteId.ToString()); - - headSprite = new Sprite(spriteElement, "", spritePath); + + string fileName = Path.GetFileNameWithoutExtension(spritePath); + + //go through the files in the directory to find a matching sprite + var files = Directory.GetFiles(Path.GetDirectoryName(spritePath)).ToList(); + foreach (string file in files) + { + string fileWithoutTags = Path.GetFileNameWithoutExtension(file); + fileWithoutTags = fileWithoutTags.Split('[', ']').First(); + + if (fileWithoutTags != fileName) continue; + + headSprite = new Sprite(spriteElement, "", file); + + //extract the tags out of the filename + SpriteTags = file.Split('[', ']').Skip(1).ToList(); + if (SpriteTags.Any()) + { + SpriteTags.RemoveAt(SpriteTags.Count-1); + } + + break; + } + break; } } diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs index a1e7d6a76..2a77e3192 100644 --- a/Subsurface/Source/Characters/Limb.cs +++ b/Subsurface/Source/Characters/Limb.cs @@ -8,6 +8,8 @@ using Microsoft.Xna.Framework.Graphics; using Barotrauma.Items.Components; using System.Collections.Generic; using Barotrauma.Lights; +using System.Linq; +using System.IO; namespace Barotrauma { @@ -273,14 +275,34 @@ namespace Barotrauma case "sprite": string spritePath = subElement.Attribute("texture").Value; - if (character.Info!=null) + string spritePathWithTags = spritePath; + + if (character.Info != null) { spritePath = spritePath.Replace("[GENDER]", (character.Info.Gender == Gender.Female) ? "f" : ""); spritePath = spritePath.Replace("[HEADID]", character.Info.HeadSpriteId.ToString()); + + if (character.Info.HeadSprite != null && character.Info.SpriteTags.Any()) + { + string tags = ""; + character.Info.SpriteTags.ForEach(tag => tags += "[" + tag + "]"); + + spritePathWithTags = Path.Combine( + Path.GetDirectoryName(spritePath), + Path.GetFileNameWithoutExtension(spritePath) + tags + Path.GetExtension(spritePath)); + } } + if (File.Exists(spritePathWithTags)) + { + sprite = new Sprite(subElement, "", spritePathWithTags); + } + else + { + + sprite = new Sprite(subElement, "", spritePath); + } - sprite = new Sprite(subElement, "", spritePath); break; case "damagedsprite": string damagedSpritePath = subElement.Attribute("texture").Value;