From 16e0fe4042030fc10d20d8647cbcd927c0466d4b Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Tue, 28 Nov 2023 19:45:10 -0600 Subject: [PATCH] Added character portrait displays and discussion-context coloring. --- Crawler/Version.h | 2 +- Crawler/VisualNovel.cpp | 25 ++++++++++++++++++++-- Crawler/VisualNovel.h | 1 + Crawler/assets/characters/greg.png | Bin 813 -> 4590 bytes Crawler/assets/characters/player_f.png | Bin 813 -> 4594 bytes Crawler/assets/characters/player_m.png | Bin 814 -> 4591 bytes Crawler/assets/characters/sherman.png | Bin 812 -> 4588 bytes Crawler/assets/config/story/Chapter 1.txt | 4 ++-- 8 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Crawler/Version.h b/Crawler/Version.h index 8a914ced..ae31bbe5 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -35,7 +35,7 @@ SUCH DAMAGE. #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 1 -#define VERSION_BUILD 3226 +#define VERSION_BUILD 3232 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/VisualNovel.cpp b/Crawler/VisualNovel.cpp index 29927f72..c8e5d190 100644 --- a/Crawler/VisualNovel.cpp +++ b/Crawler/VisualNovel.cpp @@ -201,12 +201,27 @@ void VisualNovel::Draw(){ alpha=util::lerp(0,1,1-(transitionTime/maxTransitionTime)); } if(prevBackgroundFilename!=""){ - game->DrawDecal({0,0},GFX["backgrounds/"+prevBackgroundFilename].Decal()); + game->DrawDecal({0,0},GFX["story_background_image_location"_S+prevBackgroundFilename].Decal()); } - game->DrawDecal({0,0},GFX["backgrounds/"+backgroundFilename].Decal(),{1,1},{255,255,255,uint8_t(255*alpha)}); + game->DrawDecal({0,0},GFX["story_background_image_location"_S+backgroundFilename].Decal(),{1,1},{255,255,255,uint8_t(255*alpha)}); }else{ game->FillRectDecal({0,0},game->GetScreenSize()); } + for(int i=leftCharacters.size()-1;i>=0;i--){ + //Start 72 from the bottom. + std::string character=leftCharacters[i]; + Pixel fadeColor=WHITE; + if(character!=actualSpeakerName)fadeColor={128,128,128,255}; + game->DrawDecal(vi2d{0,game->GetScreenSize().y}-vi2d{-i*64,72+168},GFX[GetCharacterImage(character)].Decal(),{1,1},fadeColor); + } + for(int i=rightCharacters.size()-1;i>=0;i--){ + //Start 72 from the bottom. + std::string character=rightCharacters[i]; + Pixel fadeColor=WHITE; + if(character!=actualSpeakerName)fadeColor={128,128,128,255}; + float spriteWidth=GFX[GetCharacterImage(character)].Sprite()->width; + game->DrawRotatedDecal(game->GetScreenSize()-vi2d{i*64+int(spriteWidth)/2,72+168},GFX[GetCharacterImage(character)].Decal(),0,vf2d{spriteWidth/2,0.f},{-1,1},fadeColor); + } if(locationDisplayTime>0){ vi2d textSize=game->GetTextSizeProp(locationDisplayText)*2; game->FillRectDecal(game->GetScreenSize()/2-textSize/2-vi2d{4,4},textSize+vi2d{8,8},BLACK); @@ -226,6 +241,12 @@ void VisualNovel::Draw(){ game->DrawShadowStringPropDecal(dialogDisplayPos-vf2d{10,10},activeText); } } +std::string VisualNovel::GetCharacterImage(std::string name){ + if(name=="You"){ //Assume we are using female player avatar for now! + return "character_image_location"_S+"Player_F.png"; + } + return "character_image_location"_S+name+".png"; +} VisualNovel::VisualNovel(){} diff --git a/Crawler/VisualNovel.h b/Crawler/VisualNovel.h index 9cf33898..a5870317 100644 --- a/Crawler/VisualNovel.h +++ b/Crawler/VisualNovel.h @@ -157,4 +157,5 @@ public: void ExecuteNextCommand(); void Update(); void Draw(); + std::string GetCharacterImage(std::string name); }; \ No newline at end of file diff --git a/Crawler/assets/characters/greg.png b/Crawler/assets/characters/greg.png index 75f8081128fec9cad6cea28f6545a7ca723c6eab..705b794d67b681eca7613137bb93969370286974 100644 GIT binary patch literal 4590 zcmeHKdsGzX6`w_rhe9xk@+j0{u@P!#cXsx@VR^UvM+ZAcEO@x zN{?0zhKC@B7($x3DkaBPY^xr%N{x+5HGvo@38;DQZ*)32OW-Ye_r zN)rzJ#{5Ugx;Yi6zAP5iKlvmsDz2uEs#)0f+A`VUv&ZfAr*`*t|9j^@-5+B}ZR4fR zP@TK}tM?D?ntzE-+LXe@Z ztzVch5RY@NC_~l{MSebF?ue*3ySby`JLvU@(yx2&79>Lur?yiHWUijt!Z&y;HKgx2a)ngR5EA?vDJ&oZQCwS6*uA zb~K0|Tr3E`RQv(e@nK|I)OHOVI1f8;Jvm|l_h|9&nlx9-E}cud{kZOS?Zso9v{%dY ztxFwG`!^46e9wfhzorZNOXZcY-tWR^`J708%hdbXh4=booTpu98hRdO-#hcw;=9Lo zFG%!xa=dE$m%Cqhz-fH(On)6OqBiy$DzMsTa8uf6^|NMMtM;ySS})TriBLpy_qAZV zJzz&z{Km_-`ugtEBggm2PcPh5=QwC=Ny!FHT1tUt%+ak-5H<@BH`)v&&tQqF(Ef{lM;gxTna#7 zAsHNYSP93i$%LT+T-^K87IxfzV}E26rJ=I+mpvQN5i8rAijG*;k zP4hEJ+E(Hq$kbBO%EV5lFcRbO_7aELQ;w0~lV;Kapfng&FlESetuA9cf|a0-PP&Go!T4n!)99L7Lv9#-8htcVp2Y;io@JrHiO~{hyp%M0 z@&sI?E}{sx7Ls89@HXt2o%(@hAVg9FLCEEZT#Skl5h*u-8I(#96qTU_CNU5qOgNRD zwwV|w?jTbNfsQ~c(4Zcz;5hG8#ZSdMi%51JfMlSz+{%>*xO?*s|R`3So1fNRx!>_8qXVz@P@^m$H94dff?8pK)umsvQxikdvV%dY^ zdON8U82uToF4h0eoM;Xl_@DNRkAW$INzGwYHVgYs4tZV_Nh9o}m?D^cQOvFi2?Jl; z=~{J)-gV=C-=PprN@(Rk@6OwQ{a4Yl8uw7qKK<(Wynt=OBOeSmE|NYX3scGPMcUf$ z|A*RYzvaBM;bcPjw@hN=X}@)C=HU}3hVPs^6wzK=eMDW>6TD>3eq&3sbHh(xcNe*@ z-P}*z6*c7B5ARxke%CR3&!#NJ-;TUH*z-p8VMFn|Sv?23^Rt!|ci(GuwYo=Q3|aTf z{J5r^Lq)CcfBoC0+>Od7tB>9&YdZ{MkCrF-UM-l74Y1r%@$;u9uEEX>4Tx04R}tkv&MmKp2MKrb zocD=CtRgAI=fsl+U6A;Z>$1yloXZXiJTqkEGV{bCVzJ!Aau2hLp%Tv!M-^40e|#bD zvch?bvs!Dg&OP}HgGFs6%XOL&B(a1P(hwn|fhuaS5Tjiq#YBeA6CVCC$DbybOs*;z zITlcd3d!+<|H1Fxnx*L}Hz}9^`d@7OV;l(V0_~=4e;?a+`vmYm16NwtUvB|(pQJat zTJ#7Q*#<7IyPCWQT3lEd;kCd24YJ`L;&9a-vHlYU+%vE000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>eM10*B+Lv|qm000?uMObu0Z*6U5lXnmsCk07F zK~#9!?bWdnKtK?NQL7PU3DqW4mP%-V5#8?HcwZv$wD$QKpjpjYhD>M zb3uSQn^^X|TF=Y{0Rq(a8&vhpa6yxq5jY0{0t5(<00EO@5i%Djw;ST^DzxV2^vM7K N002ovPDHLkV1l&|5Sjo0 diff --git a/Crawler/assets/characters/player_f.png b/Crawler/assets/characters/player_f.png index 8fb037b757da5395c0e799d63668c022d19fe2fb..71b20d09feb823d2df706c6c10a08b24c38a10ba 100644 GIT binary patch literal 4594 zcmeHKeNYo;8sAWrFL8>ed?=iopcc+ z*Yo_I-}^kj_j%vh-K*ccAtY#75ClOXT1~P6Ts7cm4p;!r>J!av;4)ld%wY_;8+JJD zX4*o*OtFK4DGzOiAW!!j89i@Y5iT72W=V9?>8?BS8^>C$j{X(IN4m_W*3dIN!)w=L zA3c3m{PwlL6V;YD$@Uxb>fTCI8|YUD_qUfkK9k#jsiFJDfR$~T{)K_h%Bt%3Y#({@ zxN(p9a>!lh(wBovTfQtCKJuvwywlIM`C#^UmP%-i*`4%PR$k zE4fGXad-D;bJuhY>{wQ6yI=Y-7B;$gb>q8!>CV_S+>_mo69XC6k0UeAtrnkER_tyl zza5_bwB`&n@XK&X3G$>=_G#5$`Vt#!zK4Flyy$DDw0AEAams16TCY{BCu;{4*O%^B zX|Cv(l&5E&Kf2U^ZAGlPd2>-l=ruzdFDKSoo)x`m>u8La))=-#&Hr@wp2W(R{KNBJ ziQY0lY1sd2XPfp`%Ek`_apx+&y4+t{@4k7jWeobmR`bcbq4SL$nBl9sx{h}%c4d#4 z<|Vv-G|lvOgGNC1Z|Cs#3ugQ`w{<~(E4vZi^L@l~ewWrAGxvOc?Lx1d^WDwXnmhl={-X8q3y;p% zh9&roUffmrW$o%A&Y`ufeFylF)iK}Ff#rU~J5oPC_}l{9u7;P~whmW)0u*_q^LB{C z5%79=-1d(C-rhmi*u{4gAFkMO!1*V#J}DbCX%P*YF-NyaN!YD?oV1%LzQ^hST?#?* zi5>?|6i^IoqVi~)iZ^uWLmo_%DqglkC)7FAR6eaKaZ;Hjn~g+C0ihsyi3vgR9wi{K zQVb4ztQMO~=~3~#yh?D-ngu-A3t(LL|jQ7h$}FAUNJhnw5s+ z)Cmgkq~hf>j6*39xZQ5PTg10J^8~0up%4f$0fr#}fw+oo4DLZ}t{9eLoFkcX5l-5{ z&~_Wla^fa?A*15)fFGXB&+5?Wrs!?12^D}I0uSyGpnRdgY8CiKxR{h8Kr)fgk4CtR zU`-1Ql*?Y|B&d`k%ErX_Qjo+{yra-*@s>jp0?I;J0n`OXMQ04TL95eGMX(a&(N>2y z3Wz-e$s1#xaX*Mg&2#U)Uh!~Zb5rqsF zA`-DsMoK9WCBo%iDw0s9+MQM$Oebx{^C*GCmgjY_f-95sS``oD3#To53(lB909XUG zjkLR6(=H=zr7{_u)f1HoQ4B*RA~`CSq7ub4D2sBsKrgbasE{ubdp+#LC_ycx+NI8#(3Hfdxh444#ZL6d)C1A|;9{F}V>{C`FhOl_5f@ zQs{%XleD?`r_k*3f#b&~T|>LT_{Cn+_?pV3emnj&{%E1SiwTCk%R-40<0ZK8B8v3p z3An~xL_TiIqrm<#(Xf+t`bU~UZc@mlBuOEZl#(H0g;0zrKz|_wDnrd;R7y(7agnCj zU3N3$#+_7B9?%hJ1sc?=6&yP;RdF-3apzO)JOIfM6h)>blk)@<#R}LRW3t+K!4LF^ z_X2#j7!WsZ16vo^2?bMI;e=iw*Prt@F%LiI5HLJ9$gK38lWR_{St&3p@LYGz$u%nl zW(A(>uK$}{LDL^olnuNAxxuH>lkyG%d}b{$rEN%tE<)QNt^)~c29`jFCf5Z){22D& zc#bC)0i!>o)us3k1V?k=#f9zA5@3pCQgRrz-O9d`L*5rfiiF)XlMk~mirKpsg@Z5d zG;MN{(bGNH`+mq};q&Wmb*To_<%Pj@nsWKzW8a9#q1~&r%dfFuM&!0%1@4Dl&k-vr@5u$<$#GMO!Q!jFlsH=WL(bDEFa#yI7P(dQ$INgMARF5=(ZwNU81fV*hu z;`$oJ_nQt?c5jZ#-f+(LCwH@JuIlO1S%NAXTSP7iC@yZ)%Gw~XI9B{<9-^nr@Z+a2;X@at=Din zdeX_r&_UKuCp%8kxY)5l*lKpfw>?qk&#*EwUHK**^7U+iI- d8i{Lcmp&z;ZMs;d-XG`z22WQ%mvv4FO#t^;7EJ&E diff --git a/Crawler/assets/characters/player_m.png b/Crawler/assets/characters/player_m.png index a2253042a10a42c56a8a3e8e78d7503cfe680a66..c25812be51550247fe96b301b12b1d8dca802e90 100644 GIT binary patch literal 4591 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 diff --git a/Crawler/assets/characters/sherman.png b/Crawler/assets/characters/sherman.png index 979f53f76dfa52e468c022d70034ef4fdb7bc3fb..3b8a5e817a09df4dd634b0e72be1550dd4a578bc 100644 GIT binary patch literal 4588 zcmeHKc~BHr8gCHg5VDeu5LnnWgKMC)r@QB#k>PLvXVg(HITSHH-96C49L_Y%06_)T zS|UkQ1Vut&f=2O-IHGO^W z_x;}Y{oeOpz4u1KniW1?fnE><`DoO!N#LmlSChv)a915`>Hv?CqLg$tiLk+Di%HMq z(J)(RreWI7=po2{_pQX%9P`2L&t*M_+6?A_SIAGa$?vxLp5Z0!>oqg?OmQF&NU*sgb&UH-b=D`jUdwwSA1_w^nf{zG5l2ju!i=z+?R zx`gmMd(uLd+#cK-SYo_i@~OaY^u@&oPr0tOge?g71I!L&_WRFsP zDdD9ZYm=KB7rHO22-7#MDM<9alGMRV4>RmY4PKo!8Y*JcNtr=&Z-ib`7xrwZziFuv zk92N&xhwY*=JfTz_@GKP?CC2wemgqAk9RKjaIN}UVb`UoufE&+RaIxROZ?k~Deo?~ z{LsJcaq)+GV)JKOuglwe{Cj_Td5-J(=tKJ6FRy&qCv*AXYFo|cPtyL`HuUPl=6!yV zuA?obm5=r<9&y>ftgU}9KcFh~d&YBz>*KBQUslhVXDn@4XESzN>m#9nx|^T*n9Uw< z`iB>H5A^j7Tc5Wam0x&e>t4$Vsy-$S)Mx<%YB62AT0xo&e1bCRXujQG21N=%5m9zC zLFUpdtfR9Tqmnmr{sIqXC?zjVti`lu6`jMVi!5|<(V7&pD3_E|yr@X82)hCh7-*J& z?S?#~Rbf~19J~tf&Y4jj?0~SjN?y7)0alqTG%Vta_!tsrX9@(oNG~|TLg^JrvGHRR z;7iHNVOg^RMQt`4-zManEZHb7m&;L1fC>Z%Kp@saBTLv3qcxPHaB{@bR?@s~f+b=JmIkDlK&ZfRg+P{q%N0Tact^n z(*~9H}PH|zmW&vr5+eP`vGm1{-{%m_SNU9)n{NP!uFXRGV~ zCYRUbVTv|_9gqzimA38lz6_38^K`3L#6m65CMd*=_%#8Gr&*n0g&=+?ce&W#k17C0 zcUGf~b03@^>;il5x~#MTQve&6&Z zceoGtYL8wJeQk($xN99^{d0BJO+ihn-@LesvcH}f+3yulICL^y?p?J=^UHrxV&_lL zby?OQTeoK2deRcTq5AuC|7g7sG^jtb(yzzw>kR41rH8AwZ2qF7kZo*yZ)N4tBkx~N zDZ1FX{J5{`+x9!pGag1?{agEnZ3TbdIo!HF<3wt4#;KF*PL$s-ZT#0?Dl(b}7gp2~ z9gU^DTT68M;r~2X(S268J@V1+E!j`m-_EX>4Tx04R}tkv&MmKp2MKrb zocD=CtRgAI=fsl+U6A;Z>$1yloXZXiJTqkEGV{bCVzJ!Aau2hLp%Tv!M-^40e|#bD zvch?bvs!Dg&OP}HgGFs6%XOL&B(a1P(hwn|fhuaS5Tjiq#YBeA6CVCC$DbybOs*;z zITlcd3d!+<|H1Fxnx*L}Hz}9^`d@7OV;l(V0_~=4e;?a+`vmYm16NwtUvB|(pQJat zTJ#7Q*#<7IyPCWQT3lEd;kCd24YJ`L;&9a-vHlYU+%w?K@cDa90Lyn zwq2`$lW7nrCIm@DK~#9!?bR_7KtK>hLF2YUp%Vy&j>`oo(a!9aexXQp&1agE!4MQ% zlJrqjzrcPT*VFTDS>v}rZzyk7Vny#b)kx7hOf^)Dgj0bOqv2#D&3@#C7u4!{GOs8` z#mPc4F+d$oENfmFGjl