From efab5bb12b3dd1cc0477431f4295faf23963737b Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Mon, 12 Dec 2022 10:55:02 -0800 Subject: [PATCH] Progress --- .gitignore | 3 +- assets/.~lock.Poker Gamedoc.docx# | 1 - assets/Poker Gamedoc.docx | Bin 7189 -> 7142 bytes .../scene/components/display/TiledSprite.cpp | 2 - .../scene/components/display/TiledSprite.hpp | 1 - src/dawn/ui/UISprite.cpp | 2 +- src/dawn/ui/UISprite.hpp | 3 +- src/dawn/visualnovel/VisualNovelManager.cpp | 5 +- src/dawn/visualnovel/VisualNovelManager.hpp | 7 +-- .../events/VisualNovelAnimationEvent.hpp | 34 +++++++++++++ .../events/VisualNovelFadeEvent.hpp | 46 ++++++++++++++++++ .../VisualNovelSimpleAnimationEvent.hpp | 26 ++++++++++ src/dawn/visualnovel/ui/VisualNovelFader.hpp | 29 +++++++++++ src/dawnpokergame/CMakeLists.txt | 13 ++++- src/dawnpokergame/scenes/TestScene.hpp | 7 ++- 15 files changed, 165 insertions(+), 14 deletions(-) delete mode 100644 assets/.~lock.Poker Gamedoc.docx# create mode 100644 src/dawn/visualnovel/events/VisualNovelAnimationEvent.hpp create mode 100644 src/dawn/visualnovel/events/VisualNovelFadeEvent.hpp create mode 100644 src/dawn/visualnovel/events/VisualNovelSimpleAnimationEvent.hpp create mode 100644 src/dawn/visualnovel/ui/VisualNovelFader.hpp diff --git a/.gitignore b/.gitignore index ce912088..80f9c5d0 100644 --- a/.gitignore +++ b/.gitignore @@ -74,4 +74,5 @@ oldsrc node_modules yarn.lock -*.log \ No newline at end of file +*.log +assets/borrowed \ No newline at end of file diff --git a/assets/.~lock.Poker Gamedoc.docx# b/assets/.~lock.Poker Gamedoc.docx# deleted file mode 100644 index 5b1dfa4c..00000000 --- a/assets/.~lock.Poker Gamedoc.docx# +++ /dev/null @@ -1 +0,0 @@ -,DESKTOP-6I6NIQ7/domfi,DESKTOP-6I6NIQ7,08.12.2022 23:00,file:///C:/Users/domfi/AppData/Roaming/LibreOffice/4; \ No newline at end of file diff --git a/assets/Poker Gamedoc.docx b/assets/Poker Gamedoc.docx index 4aa15c3695e736593c0117ac45d20e51dbf2cc97..c9a2611c2af7266e3fbc81c65540125002e2d564 100644 GIT binary patch delta 4188 zcmaKvcTiJ%)5k-ANEM_*5KvmE(u)L?CLq$Kh7JMg5K5?tfS~jedM^SB1nF?4OAA${ z$<+|0Mnq5uf(7IOo@d_i-apLeAiK zuYieJ>4b;7d!DsbGxTCq5Mb-EMG}Xw2Y2*}jc%L6(3dIF<5YfPK2!Z08n#_(+wR9m zS9lxQmS87D3DWUM<;xWJl~EOrJbfS*IP0k*#ap(-zto;Nh}l3pkVDd%<*Mz-sG~Ae zXrJXW${8dI7&ZS&xvPQh+Sal2sk_Rh*S^eI+OPV;!=&YU={lVZ;6sZ|t4}IYa5QXs zf-R|)FyE3@7T~j}92R8<8ir@a2VOclz$I=EyiP9jQdf9OqZ4S$6eKa`GAh2RW?R+? zsi8>W;z#gD9lCKa2!$3{xcvQyCM;)LLbkYac)ut-mJF|O3k@*Vzd(gO9zHQ90|0b@ zfK&UA7GNAH=FeN8M0xqYEwBO!pdHNKDKVn^jLOHD6*cvMSu=N{J@l9JMAA8D82Bc< zVA?s*%p$p{6&3u%(&SR^DhA)+E&S?W2O#UA`zv!Or~B>u-|tf#E=P{Df@6bcKK2-* zE8jSk#U)f39$x3YrSmdGWiqV6r6D=KXPU*9=y;NAiBb2~%8xyu6S=1-g^nnm`4r8} zxrSGrsA?R^AG*OT#G5CO0sQpL@c6;fmMeih*0%$7Z;+)dKtfu9$aBr-EtW^Q{^cj% zgK!l)+Qf*pH}GbE`nFwk@r`No7C%I;nefO+oIJ2dQ+=)Wx+2l^C2l_g3AhvFX2gP2 zR&I|(tm57!b6X?@Chmx3qGc5n(o<~0qiJTg4tvXx8N0xZxtWl;RIEr+yp7~ei~{kX zSzOnd(o-(;_D>IhntN^EQfl2b_<>Zo;^&%^BNT;#I|V{oNw2L5YWh(RN6jBfClYe- zy8J4$(PkGFuO_%x^5`yEA>D}WcJQqkv5!H6Zk!VvAAsHj zsXsoUsbobW*H;uju&n%K4YS*r7kWDKi8jQ4TflcG?sy5z097~<7^fxUvMRN6IG#3a z?GTcrj8kb3@vOhqfJWPiW-yBpU+diD8U0|>6ymPxEvd!u!P;8N@2?OUNI%#uGCm}Y z2fM-=^EQuD%FHHyV3ss@Z}W)8De~~CabCZ*n-E<#E|GD-G}$qg`bc2=)^^3;2r?cU zNGE-#@4H4?GB*tNvfkDay?QIH_(UAaccw_tA|`b{OVAc?i5{FN6;aTveiEc?G|}Qc zFm0^=Io$|dor2Ydz$t89+pbFC{e|fAD@^Z4e%++G62*YO+Kg$ua@NDm& z9F->KJP z$zxuHP-ze?l-dsp9#o~g-gbUvdLfs%?V1x<^}NQk^0`i#-ux23RTgjS>ai9rEuJhQ zZKr9PrjfITQKz=XRMZ48&?d54!ah8B=SSDg2us$aH;N)d)eW9RD*?c!t+)`Lg_7dK^EK*|Zo7+wK zD%1+1*x<=hnOCbQf;s58t)jK8deQp&okynivOJ^NtF{iu+Vr?@^Y7*D^cV_drr6~0 z9>N)#n_8Q;{zVUH9pqs|gXI4B7%hfk)g!! zIpJxyS|voX6Op!GI%N9mdy)kr0_=7n2in*S#83>o_m7&5tj8dbDvVbKD0kwdJ=y9? zfLk?3OnGA4*ao%L)aZ-XsgKPc)n3_nAmZs-)b*uoLuBnUdxr{Y{BNDm2NR**LQbHs z{OGI?UD(f?u#^aIQKEmFYbh{wuzDCrAqARYB#kOS!&U$MT#_^)CGQ~cSdTY*P@Ej19CKzMQKi=&CH^QLq9)psE8^0Sry)od$2xi zcK#vwfQH*l zzVe(Sq}O~a4Au_c<+K#S*_{aXBq(vZevfcRdUgEmKQ2M2qL%b|`?gv&2kMT>&r#!} zyVtak=FU!FA^9XolYBCE32Wb+qvovh(?l&W++(ABuG8jixBW~nVt46NDZtHK4|H@N z&S-pFv64l!S3a>xO;Kvk+`on3(`cr?mMttK#s0!LTsr6bI% zNd?Utdcu3Q*TULw&J}e&l3yLph^2;rpqx(ie zV|$XkaK-TO%%KIp=fn8v=?i&XE7}EjkFhDw4@keQGDn~>L@sU4pS~2wF6CdIIvHhbOR5`y)NM5r)MIc#t8?mwXu0dqjIy*$#J%yAnA7a7_QN%3=l?1<^*nZ*Q`U z9I8_8sWnMEQqgE-*XnLoVCVJ$Ba4pnvMymG>E02K4nTJMz#gM(uf&49C;J$y4f|*A z_s!>pk$QH2#S5Q=1V)i=R*XyA^;vXOzRUuLtCkF*-Ra4hJoLn670s1{z)V88?t}GOw>B-`;*ssg{_8P)A{gpn4dvxblj?ET6D%C!YoW#eIBeY{G8&yL! z&P_fmIt}T;Bo7V}yglFZgfk&$>yf1!Y(>anR%vzwQD?#tw<7&MG9T?m@cy!9y&WbJ zJX}be)`QQEmo^{r*`N4oSg)jB4U>||kj@%iN$u3NHHy^LbJ=>cWL4tVD^Q>X0?bew#m6?g zTO$B|5ZUK!TXiSlN-5f9q$L-VH1(}HJrxd_$Q)iOC}AVi zdo739(fZA|eLX$C%(eN~G{hmdY(k%@#TCM=NDdoK4pY!dxx~obdJ%Nrv0BVEJJ|Xi zwx#{*bto~F+n19SDpnNXq$H(wBlA)cViPvrAq4GZz4#Q5cKdw6mn-4ww@Z)ooZgl4 z-bizV&3<|sIWhQ5dZ%*j@G_}gSeCq0JR&~ZxSCfC-hI1 zRLM!xZq2=b>oxANwHKz2cS7s8`kslKTM%A^==?aw4L&ch$}tx6bLy%&%3E_Pw&@gK zKJ`h!evpl!2cQ4`H9mt_mk>8FDfrmEM{b&ua82L~8xFjNHFz1@txn+cOIO6fFl?Z( zGb=kC30|Y$Tc{@f&vVM@(VlZ(ZsWSh_dsD@v!wHwbMA56IfoQn+rEDq{&pXFnwkET zitU#7a7srjo|<;lVaPMeC!FVhE_FgdtJFEz@Sr>5G+T#)D#Llu8E0U_an4z45G?;6 zpFtg4ZXWloi5iDZWqUIO2eJfJMGU<(<|K#wnO(AK&i_z)2EAz+o|>ERxrV;L47AjJ z#fMh8U0jNkts)cAH)(;h`30AV^CnhzwAEwNgAXRI)8w}}Y(QL>j++}a7T#Uk5^=Ts z1-GQJCd0fe?PwE`Q}l&$|0X{hd+&=r)UQs*UNPWbV{Z=lsmXn&N*S0oV%N0Wt1rxPVW3MDkk z+^(j49(^*cl55Vt5hoBzoibJ{BP-nH=Ata*s=_md_c>~2#2`OLne5#$TjzLnH$P?&Eaxt5j_FAyEmC$Y1{$(`*7u~ zzb?KP2+Y0nGDVZk%zOAD@}^yE!xgEWh;~QXe7I?F;D_X;;@WbrFZV~Z>`Fhus6aVv zhw0ZJMKKp|<7eL4V_!RXsaEBno)X$R=vEl2kx2`i!Le|d`uw9_yuG7 z-_K%;;!w*^lXS&#k5_N)Ds*K$C3W8auH$|JsdOq8S=2&fYgS_?uALS6kP!irKUHHW zihmWk1;(cRUqxKWUiV))X2Pj(rq3{moKWi1)BIe?VP0~|^PO4C3xNB%r;XV?y_x@L z(CJ2`!1z(HVwAb)&cUI`=<0=2An#NFa{mJqr^M(`@`xGhlL1)(|0m7O|J5b1{8cELfz*;WXPYR>)BqwxF+J^|Dm=6_@?@ zL+bq6+;mJ{-f1oyX3cY>fW(aFjYY4N<_hJtDdn=$TR|SVJaAU&k1r7ICNrSxLgTPsEeccqjE%XfZ(ZAr#aT0V%Bx( zyhgLaiK;TA(7wlxkJb+ku3yu`h_z{Vc_dU!v$KAnY$10jsC**UZ~NO-gI(4UbofWe z@+%sALGSZ(LwWLRWikQKhrXYM(mKt_AY=sOM#-kHU*`HRe6&h5dd(H z7y$TJ1~9gy6PFo~CS&_61Lovh=nsZ-8uT4IMmmIE6Nbkm9KB5WDfDJ##La_4BysA3 zuH8=R;-Yn)_uG1`k>yC61fH4gWCxWXq^_#;bQX0VxU{76H^IN9()8X`rk#DweQ@CL zS9c!^nufcz;{{=pQJ)9uPno@Qzh&?je9jjqo05?^S(_+iffzXC%d1e$q7UA~%4=HI zRj+`2KZ@{GctUqSh7b5dH4B5k7Qp3g=`2bQQPm4o?6V@$PFC7+ADa8Ck>hu6NLT%I z@$i*-=0+X!Y<#Ln#P?0ZZYN%G$T)DxA^8DMUmsSSI9o-&ylt*O<1nv}m);liRy-$iomz)T0Xv6&Ii~J9eRs7N1F=hj9`3bu+EPm^;t7^zV}??;S6$- zjFwRu`pMBHKQf~f10f3JL1n?Z{`OV07Al)e4YQveLGO;eO4?Sv?x5-Utm6Ukah8vF z>}2%(<#vMyCKsyQPk6ubFmZLXIXZX#JgJ{u3aXXZB=pd!OiG#}X81k^n*?C36$m%3 zf12%t6)uI3Xtb)mIRZ)3l1S~%Oy zK5rgMK}Ye)JXzEOixlx2fH(%kfWoZum&HRZ`fuGeGK*~ZM!-33o`7uwd~^5(P6foT zM&5Toed=KF%CjdvOYtpmlsjqw915<^lUp6yPm?jvIzo6xWzgt;`VY_7od3v+5_=S# znr|=ukZNz2M7YW+euh@O`04kyLB)!p8tNZHvR}sX$R7EEIAlrhj1F3A7-v(dz$&ig zvj?=OYb=p8QQj4ac*Jtr^li2G3OKf~8emvUML~X&_)G$(u56O#kC6^O8mjAFQRson zTcv;@KkL%%ptk5ykILlaNXqYp!~QvT$Jb_F%bD>i{7Hi(CrF5b*{^u1@ekd9EfqGt zDm{@v#vdQIl6SC{e-Hp-IJPJ~-m;A3%^~yVrMhPUbz**1@Qw5&?t4v~-fr;6 zD^Z29Yw+NMaXLz8wd9ef#=&!it+(uKkw`*Frbv9C76Tsb0A*^@>%U`@5VH-8LEd;5 z;DHE7dVP||tM6h!S4HPjEdER`V#pa$e7?p$IZ9DH3)Jy(j6yha1pFULGjU_)C!)r&NUDQ=d%u^+_dE1Pe8NuV^x-f+4;JX#3c5*LtolS zeye$*RXgCvn$G9@Y@bD3zDW{o>cuVpIL4r*&;V^L8q2E9b7ft5klX60uB)|ThAc~o zU9=a=rR+@Zh?{_~MSOx(e4~VtxqfL&@m^0fDH+~L9ZzCBqpqr%R~!`L)syKzgv{XG zGEB_|--=w(VPwrCzM%(7*DgE$pcFoOy@93gHORCw^y~V`l??u^c1`6$HWIb~Mw$Az zWg%$qZa+zpA^E3L4RsU0)igFE1__U^!S01#H6ALGllTGdI$N1Ot25vVaxPYoy(w-q@STAvhhrkSD9=yb8RIwgT7_UFrcMfg07=-bas+2E7&;RX9V zp_3u)6gMChj(st{+c%=367&#jhc@{w)Q>=WixS0}+zcB&)O(xC7t~0;_Qt)${7D)s ztokN%6_{tJd<@#t0k(&GMT88P$Mh9S!PQcNAB@sL62tWEstkC;H8X5EdC^Ori@dMN zOES>QE~$4@Nk~Kc%*lmi_}X}t+G&0QY6~Rdj{z=YWzoD>)7JSzc7ctE0^&KN(raiU zjznEuhU{_r;X%fgcM)_3HtEVQj^UQls})}doE7RZ>ivg=*Z%9mH-HMC2T47BY(`~Y zVXR}$cJMn}Q(z?@If>D;wjYGtUT3|U5}LcUvF5C5cYW=N>41%QzreT0h5UN~3gz!GwjK`HsX?zD zPBYpB2W%_PyDnRSL$KL4zF)-L;$?K@qo}oS;lg)Y)V)Hca4wmQOZZZW2mPX5TKl#v z^Fc|i%@A7dReYMWw@!i0;0obps~j;-)42yJwL?IUu!*6Brv$?!6CclMFKIRvNV+#GKnXKhz$?*F1H6ooe=}T6ht$vkdlnl$py_dywTW+*H3$^rgx# z*%58zT2OV`rkGYJocIZ=ZV=f4ft{IcJaf4|?vEQjlm|9Rsu9oUfTOaFN`OrvV`+0r zyM;n$#210p8b6_zBmn?Uf&U3Cri7jwt?fQ{_nO-JgNQ#+uM#_j?I_4%0Gs)O!%vCo z1m=|03~%zuW+EBzv@#pyEqU(wmb~0(yMBi9>&!|TzN(pthXy-_bTaIl$6rEvD<9(2 zdN*)hLTu$sqrtkIGB?a^wmpQ%O|&)g?w@9iJaLeZ>}~;dVy%JBT2KztZx*-7&`doO zI17zT8aGSQ*rcQ76mAZ9Eoh}T{VPx29DiR4)gu^hxM9llPu7x0R~27PLV*x-zLFl@ z1ZqaIY$^#13lXP^M3x$?8Ps^i+HvL0DjT&Sqak)NEvi-szF^0|ZI|U%I)~O=#>+6i zm`OW2aee79tLi2my{w_|CCg(BT`@mokh_qZuGNIypO-Frnsaiym5z~S=gSLEG-G*~ zL3Bl}3^V!`*C7dkgS#@!#@EQFgOK6}D%UTJOkP_R{Thxn_SRM$VxCz!AS|XVaKTGD zb6GYY{}khA`N}#)l)9r3FwKX=?1bTsS%+5rWeC0Xu(Drsajh@-YR7%h-Kt1$m)g?? zfmcRMgLMwVKG^S@a%jUQ{{1#&2Yz2`q0jiMc=0IG{x)8$c+~w|oTDK7+ic^_hQES& zep5rNIT7~atB^#$`so7W&pxWjh7nWAI$BKD_w@PTer(vHb7gPFh0^6hiR0rvNqs-2 zkcomivqqu!)Qo-y{R$+vInEu*6lmGeZ9Pnpb!mQR98>XxL3IRoe4+sr7%K88mCB&( zg-N|~$#Rz3A2V||%nQj7Ydj_F?$b14hm_VW*%kh5PSn&$d@q~*o+hAi%LkfPB$N}q zgwE;dy?@Wuj#*-&w~oscMbb)giAp2hr6AVOf?HVm98c8rcuBPY++?xa+Vt0NTu<>! zvow8v4_lA?z|2)!j777+=X0Bz-Y?>To??Z-htAkNW|Lwk-L0G>;?lle(-dEdRp6dP z@j7hrrbm(_4zlW|K^@k1j&`(gt<-zuD9G6U-eq1Nzeb(J{<7ZgXz4+iZ<$UAr_`@Kjc^57B7!7WH#k{k!wK>S46xYY6)?u zb9iNW*5L`KZ;ddFX=rj-eE-aYeZcQ{yJFf7u~M4U1A~&K{4Dyzha)|4`=Ou#$HKEq{>NHk*QI_<$Q2^M)sd**9$PK z{WUv3Whwt_a=QhRxESRymLNH*a|yp3`Y`z*@tYUu^CTcR{X9dv=kL|OQ}vfHBE>u* zWx`wm(_AhGfg!~FWEc%Hc7A TiledSprite::getDependencies() { - this->renderer = this->item->getComponent(); this->host = this->item->getComponent(); return std::vector{ - this->renderer, this->host }; } diff --git a/src/dawn/scene/components/display/TiledSprite.hpp b/src/dawn/scene/components/display/TiledSprite.hpp index 127fdc24..92edd8a7 100644 --- a/src/dawn/scene/components/display/TiledSprite.hpp +++ b/src/dawn/scene/components/display/TiledSprite.hpp @@ -16,7 +16,6 @@ namespace Dawn { class TiledSprite : public SceneItemComponent { protected: - MeshRenderer *renderer = nullptr; MeshHost *host = nullptr; Tileset *tileset = nullptr; flag_t flipState = TILED_SPRITE_FLIP_Y; diff --git a/src/dawn/ui/UISprite.cpp b/src/dawn/ui/UISprite.cpp index a01b876b..707fa392 100644 --- a/src/dawn/ui/UISprite.cpp +++ b/src/dawn/ui/UISprite.cpp @@ -26,7 +26,7 @@ void UISprite::drawSelf(UIShader *uiShader, glm::mat4 selfTransform) { uiShader->setUITexture(nullptr); uiShader->setUIModel(selfTransform); uiShader->setUIModel(glm::mat4(1.0f)); - uiShader->setUIColor(COLOR_WHITE); + uiShader->setUIColor(this->color); uiShader->setUITexture(this->texture); this->mesh.draw(MESH_DRAW_MODE_TRIANGLES, 0, -1); diff --git a/src/dawn/ui/UISprite.hpp b/src/dawn/ui/UISprite.hpp index e9df79b6..93168e3e 100644 --- a/src/dawn/ui/UISprite.hpp +++ b/src/dawn/ui/UISprite.hpp @@ -16,7 +16,8 @@ namespace Dawn { public: Mesh mesh; - Texture *texture; + struct Color color = COLOR_WHITE; + Texture *texture = nullptr; /** * UI Sprite Constructor, use the UIElement / UIComponent create instead. diff --git a/src/dawn/visualnovel/VisualNovelManager.cpp b/src/dawn/visualnovel/VisualNovelManager.cpp index 29b55065..78e06cbb 100644 --- a/src/dawn/visualnovel/VisualNovelManager.cpp +++ b/src/dawn/visualnovel/VisualNovelManager.cpp @@ -10,8 +10,6 @@ using namespace Dawn; VisualNovelManager::VisualNovelManager(SceneItem *item) : SceneItemComponent(item) { - this->uiCanvas = nullptr; - this->textBox = nullptr; } void VisualNovelManager::onStart() { @@ -21,7 +19,10 @@ void VisualNovelManager::onStart() { assertNotNull(this->uiCanvas); this->textBox = this->uiCanvas->findElement(); + this->fader = this->uiCanvas->findElement(); + assertNotNull(this->textBox); + assertNotNull(this->fader); this->getScene()->eventSceneUnpausedUpdate.addListener(this, &VisualNovelManager::onUnpausedUpdate); } diff --git a/src/dawn/visualnovel/VisualNovelManager.hpp b/src/dawn/visualnovel/VisualNovelManager.hpp index 829df1a3..b6cf0fa7 100644 --- a/src/dawn/visualnovel/VisualNovelManager.hpp +++ b/src/dawn/visualnovel/VisualNovelManager.hpp @@ -6,22 +6,23 @@ #pragma once #include "scene/SceneItemComponent.hpp" #include "visualnovel/ui/VisualNovelTextbox.hpp" +#include "visualnovel/ui/VisualNovelFader.hpp" namespace Dawn { class IVisualNovelEvent; class VisualNovelManager : public SceneItemComponent { private: - UICanvas *uiCanvas; IVisualNovelEvent* currentEvent = nullptr; public: + UICanvas *uiCanvas = nullptr; + VisualNovelTextbox *textBox = nullptr; + VisualNovelFader *fader = nullptr; /** Event listener for unpaused scene updates. */ void onUnpausedUpdate(); - - VisualNovelTextbox *textBox; /** * Constructs a visual novel manager, scene item component. * diff --git a/src/dawn/visualnovel/events/VisualNovelAnimationEvent.hpp b/src/dawn/visualnovel/events/VisualNovelAnimationEvent.hpp new file mode 100644 index 00000000..948fd744 --- /dev/null +++ b/src/dawn/visualnovel/events/VisualNovelAnimationEvent.hpp @@ -0,0 +1,34 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "visualnovel/VisualNovelManager.hpp" +#include "display/animation/Animation.hpp" + +namespace Dawn { + class VisualNovelAnimationEvent : public IVisualNovelEvent { + protected: + void onStart(IVisualNovelEvent *previous) override { + + } + + bool_t onUpdate() override { + this->animation->tick(this->manager->getGame()->timeManager.delta); + return this->animation->finished; + } + + void onEnd() override { + + } + + public: + struct Animation *animation; + + VisualNovelAnimationEvent(VisualNovelManager *manager) : + IVisualNovelEvent(manager) + { + } + }; +} \ No newline at end of file diff --git a/src/dawn/visualnovel/events/VisualNovelFadeEvent.hpp b/src/dawn/visualnovel/events/VisualNovelFadeEvent.hpp new file mode 100644 index 00000000..d0b14588 --- /dev/null +++ b/src/dawn/visualnovel/events/VisualNovelFadeEvent.hpp @@ -0,0 +1,46 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VisualNovelSimpleAnimationEvent.hpp" + +namespace Dawn { + class VisualNovelFadeEvent : + public VisualNovelSimpleAnimationEvent + { + protected: + struct Color color; + bool_t fadeIn; + float_t duration; + + void onStart(IVisualNovelEvent *previous) override { + VisualNovelSimpleAnimationEvent::onStart(previous); + + this->simpleAnimation = SimpleAnimation(&this->manager->fader->color.a); + this->manager->fader->color = this->color; + this->manager->fader->color.a = this->fadeIn ? 0.0f : 1.0f; + this->simpleAnimation.addKeyframe( + 0.0f, this->fadeIn ? 0.0f : 1.0f + ); + this->simpleAnimation.addKeyframe( + this->duration, this->fadeIn ? 1.0f : 0.0f + ); + } + + public: + VisualNovelFadeEvent( + VisualNovelManager *man, + struct Color color, + bool_t fadeIn, + easefunction_t *ease, + float_t duration + ) : VisualNovelSimpleAnimationEvent(man, &duration) { + this->color = color; + this->fadeIn = fadeIn; + this->duration = duration; + this->simpleAnimation.easing = ease; + } + }; +} \ No newline at end of file diff --git a/src/dawn/visualnovel/events/VisualNovelSimpleAnimationEvent.hpp b/src/dawn/visualnovel/events/VisualNovelSimpleAnimationEvent.hpp new file mode 100644 index 00000000..066d8b89 --- /dev/null +++ b/src/dawn/visualnovel/events/VisualNovelSimpleAnimationEvent.hpp @@ -0,0 +1,26 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VisualNovelAnimationEvent.hpp" +#include "display/animation/SimpleAnimation.hpp" + +namespace Dawn { + template + class VisualNovelSimpleAnimationEvent : public VisualNovelAnimationEvent { + public: + struct SimpleAnimation simpleAnimation; + + VisualNovelSimpleAnimationEvent( + VisualNovelManager *man, + T *modifies + ) : + VisualNovelAnimationEvent(man), + simpleAnimation(modifies) + { + this->animation = &this->simpleAnimation; + } + }; +} \ No newline at end of file diff --git a/src/dawn/visualnovel/ui/VisualNovelFader.hpp b/src/dawn/visualnovel/ui/VisualNovelFader.hpp new file mode 100644 index 00000000..32b203f8 --- /dev/null +++ b/src/dawn/visualnovel/ui/VisualNovelFader.hpp @@ -0,0 +1,29 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "ui/UISprite.hpp" +#include "ui/UIEmpty.hpp" + +namespace Dawn { + class VisualNovelFader : public UISprite { + private: + + public: + static VisualNovelFader * create(UICanvas *canvas) { + assertNotNull(canvas); + auto item = canvas->addElement(); + item->setTransform( + UI_COMPONENT_ALIGN_STRETCH, UI_COMPONENT_ALIGN_STRETCH, + glm::vec4(0, 0, 0, 0), + 0.0f + ); + return item; + } + + VisualNovelFader(UICanvas *canvas) : UISprite(canvas) { + } + }; +} \ No newline at end of file diff --git a/src/dawnpokergame/CMakeLists.txt b/src/dawnpokergame/CMakeLists.txt index 96d4758b..1716b66e 100644 --- a/src/dawnpokergame/CMakeLists.txt +++ b/src/dawnpokergame/CMakeLists.txt @@ -23,7 +23,12 @@ add_subdirectory(visualnovel) # Assets tool_texture(texture_test texture_test.png) -# tool_texture(texture_penny characters/penny/penny-blink.png) +tool_texture(texture_city_day borrowed/city_day.png) +tool_texture(texture_city_night borrowed/city_night.png) +tool_texture(texture_tavern_day borrowed/tavern_day.png) +tool_texture(texture_tavern_morning borrowed/tavern_morning.png) +tool_texture(texture_tavern_night borrowed/tavern_night.png) +tool_texture(texture_village_day borrowed/village_day.png) tool_tileset(tileset_penny texture_penny characters/penny/penny-blink.png 1 22) tool_truetype(truetype_ark ark-pixel.ttf @@ -37,4 +42,10 @@ add_dependencies(${DAWN_TARGET_NAME} texture_test tileset_penny truetype_ark + texture_city_day + texture_city_night + texture_tavern_day + texture_tavern_morning + texture_tavern_night + texture_village_day ) \ No newline at end of file diff --git a/src/dawnpokergame/scenes/TestScene.hpp b/src/dawnpokergame/scenes/TestScene.hpp index dfcbcce4..b16d8f10 100644 --- a/src/dawnpokergame/scenes/TestScene.hpp +++ b/src/dawnpokergame/scenes/TestScene.hpp @@ -11,6 +11,7 @@ #include "ui/PokerGameTextbox.hpp" #include "visualnovel/VisualNovelManager.hpp" #include "visualnovel/events/VisualNovelTextboxEvent.hpp" +#include "visualnovel/events/VisualNovelFadeEvent.hpp" #include "poker/PokerGame.hpp" #include "visualnovel/events/PokerBetLoopEvent.hpp" #include "visualnovel/events/PokerInitialEvent.hpp" @@ -44,6 +45,7 @@ namespace Dawn { // UI auto canvas = UICanvas::createCanvas(this); auto textbox = PokerGameTextbox::create(canvas); + auto vnFader = VisualNovelFader::create(canvas); // VN Manager auto vnManagerItem = this->createSceneItem(); @@ -62,7 +64,10 @@ namespace Dawn { } auto betting = vnManager - ->setEvent(new VisualNovelTextboxEvent(vnManager, "Starting Game")) + ->setEvent(new VisualNovelFadeEvent( + vnManager, COLOR_BLACK, true, &easeOutCubic, 5.0f + )) + ->then(new VisualNovelTextboxEvent(vnManager, "Starting Game")) ->then(new PokerNewGameEvent(vnManager)) ->then(new VisualNovelTextboxEvent(vnManager, "Game Started")) ->then(new PokerInitialEvent(vnManager))