From bd7c982fec2fb245fbdbab596edeff9770f9f83e Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 24 Feb 2025 05:32:04 +0000 Subject: [PATCH] Story event props and such --- content_skaterift/maps/dev_heaven/main.mdl | Bin 897528 -> 972904 bytes skaterift_blender/sr_main.py | 18 ++++--- skaterift_blender/sr_mdl.py | 3 ++ src/control_overlay.c | 4 +- src/ent_challenge.c | 58 ++++++++++++++++----- src/ent_challenge.h | 1 + src/entity.h | 41 ++++++++++++--- src/player_replay.c | 2 +- src/skaterift_script.c | 12 ++++- src/world_entity.c | 11 ++++ src/world_render.c | 21 +++++--- 11 files changed, 131 insertions(+), 40 deletions(-) diff --git a/content_skaterift/maps/dev_heaven/main.mdl b/content_skaterift/maps/dev_heaven/main.mdl index 99ee2f8c4f984dcde6336927ff331d1d6b2ec0ed..9e76a375240cf1f563d821c8c5ae82168683a2af 100644 GIT binary patch delta 87420 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 delta 18795 zcmZXc2bfb;+jcVp1C!9}(1$7@A|Q%L??sweK}AJCL`4y?m)OBB20eDgiU^{jqOS#e z#exmH*Z~DZu@}CzGEd&0@Bg^2#l80P?7h#)NhXUFm7XCCUPNjxaNu`P?oG@qhjAN&tP-vwND@~N_oYc zv#C!zcFv*4%$R=U94GPTl=c;8(i68gYxZ%o@(upF-(Id&QCabb4!K@MO|sW^sF++i zCQq3%b82Dot4a3uDl-V<8&1pH~*g3P0OD$ghRQk_4HQixQQ~yq-##hhP zEN_ul}ovFQ3Dzz_5m(|bpV>p#-a3xEdmgSCO zxRv2l9x3~k<*s2kVHfU>8mZI^jdIU2EFF+aJ;daFTIV(~e1hR3hR?OmHEG3G15>Hl z44bye4P*E|!w=bNe4E^ChRcSeQbRfJ@$GUqGu%2nmHL?BS?zPLGJJDXD)lvM_un!1 zE5qfZQ>o^h^NTy?TDNYUd20-hYwnFVJLSeQ{Ca#UwTj7oI_FMfc>mrNH{tTmxw{w+ z*e8{0OLtS}+}jMNGQ5MeRd&wp*rr8pRhtEMwwBP|?$2epi`urYV)g8F?!~sdG=CIb z%%A7Uw_q*sr~f*#WO;*j)k?W1s`kEoO=|F~^YlF>& z{NUu=l$|fDHmuA3E5AInXz=2?-E*C~Hm{cA=a4JIpE|kY+tusC73PmetWL-5{^Q7} zZ+o_A@aZdS4P5)@wtkIvc)720F4?qZp#5QZOXl{hk~_ES8_BJYRj#)Do$d=C%e~vZ zZSLBQ)${rC#y)2C0S6uZG!Kxc8(pw|V7@VLQ@)XFv^hU<`H0Q8?%!zpSx+wP(%-|4 z7|^SKZf*BQ&aB?=$@=-?w1f7_7n6CTivDjkzt769>+(n2exKyWOi_7~-Bw((V(ZYN z1;w6b_1A|D&+mE0@|G2Qc5u)CRlRa^+ZFqcEV`p;#iOH&`cx|Qytt=U=054(Ea^GC zsQUk^)c0l-4!^^?4c-4c_2nT%GOl<@ z_q%&8DXvxK?$=yalD~0pUD0}_r}Fo+Lz8ij7q_eS{}q}iH$GlmT7A3f%H+ol#f{6@ z$kEj?@EibYG) zEn8+Ozf({2XrDv$hp}2{-Ni3ctbc;pQJv`;+`DoXqAYS^OLR z0o`P)0IHgJO3Ol|YtR}6$K<>l!+YibZKgZZwW87`5xz4$bll5$wwq?02sq;>{ zJgYVZCZ(E@{t8tK+)3;=2i44ydO>eJdFHB2S@P~xnfi75G9CnjVThh=q}O*CIs!(*o-hhV2V=;w z;imm@uosNilWw_8*~op+{a}AM04Bi1aPvSoD8>ah4~9u_2pp;>$LBI#veVG%u#BsE zBzXi_)6E%h6nN&IwQk`5}vLs{PPnUOeUvawSQ{i;5Rv7DNB&`-?$|jwGo(X5cIdCpmI}gqWYiGj+ zV9lO$tvR-DtuWRvgt;&;Nv}z_8R?ed)XT$7r(Fz}M$I|a<^}ewT>)3Z{N%(n=`Is5 zL&as+g_};h8j`5xVqBPSe|})kx^u6G8zlK>O}f*5*P>#}vToi4x4=TMRv7EI!yRyE zxOo@c4U6EO1*?$tAf|bG3T zg8VX^%;qQ9{0hE~hUr9W-@v!wraf!l!MbqM-g?*oj&;*{pYsfK2rn>)2H#U#OYP89 za{b5YO!f!H8(|aZ=4SX2w!lx}=FhM-#sxQjfnTFnaPv19$8qiH@;mHBO((PY34b`? zrEnbR=AYzW@HhMuZvG3~U?OuSfNrLEyH^CoP$}H33?)zns)84%luYN{--(b6c=c=+ z+^hypc4IfvP1ks!>QE!x^nmW;x|-o;Ett+#KLSny-K?FZF(nGM!_7KS7wSR%aI*oN z$oz(6S-9zDQ^CDltDB9WF&C#Xc{DXo*sI}{XaYq|lj}ZBx1VUe9qa(@p#yY;9mCB| zuoHBKw&0EQBJCV*c7d+Y4R+C!R@d^I_pWFU*d1*3ggwGdr#6LN&^z4h1AU<%^ba=& zz(5!TgTu`s&SDC#p{CL9aL!7)&%&5E&o zv44EHX@54H0CV6(I0;S$>xG)*Q=;aa=x0->GB^!Rhf#0_jD|DeEbs@%d!z+;ubd5w zIsc__4t_4U<~(ry7&sp;fD6OTx!^o|1)p2O)55$cIO(Er^J2Ip#sxRM2TbQ&8g5<& zg%CdHC-v1?epIXRJW>OELu1zUc_qegQIji}d?o0necz=n0v|5A>AO|m zTy9|A_n@1;$(+x+s~`uunO(qNZeEoQtAK8LkgMSuNW#r);X1e;ZU{GTgqz@IxFy`Y z6?`1~cwPwJW!?>5bxw9{{z2^}@$9`{op>AE4tIc;)Jy2)GyTEQ{bBI#vG0bXSUWoT z@cK;CUW*tmhI?TNEQR~R&1G;uJOB@do6Ad*9yerKWFN!-1CK^NPTm7gz?0#o$8hhb zU}d=JF`kBJ;Ms8VIdJdi;e~M1V_EZ@mY47mhXW)(=|%D(SONNq8~PJa5m_bJWcrU?XgT&B2f4mT=R)7sZS7Q}A<1DmnR^bd9WyU*K2x zE%=@MBiyv_qv}uiE8O(a^*8(j|APH(kmAE--E>|NSqzmxH!DL)6@Id+AXO^{`7FiL z;8}b2x|t!XfuC~M2x^kG!p&;Qq;Jz@#r3KruilhtQlk;2#?S;BB@4ez*UPp*n}Jyl zEuj^(4maDtP8@L|1Zknto(oXonw2?i^&ubOqV`uWL3cgPXcR z6X*p^!MZi)xRL4jcDN08pyo4`PoX{;?FD1uTx#a%aMLH7GpOt4xg`hj>l7PwfU_x> zZs6j=Sno)EN9Y6((07e}U(J?*ZranG+c7!kWWH-j$VOP-2-JmO2x7Gu8 zhn}zp^n%{uePY}Eey~62 z<~VTK0pK9)=9 zWPCR)f_owz>vt#jEXDT-*{Bd{!o`eVBq40;2R<~u^ zw0fA~qwrkh^W+QgBD|z0Uwogg*Zei~6);!9>+lA=sV8-Q;ECZKRNjU6!p+t2KCFQc z!p#riBls9T2{%85&){=d8+<{28E)GD3ciMKDm=O6hjdBDZy9_CrVZU(2kT)2e6J^~ zIp-eg#wgj^3_rq_aPuel8MeYNc~8!|J=3uHZ}=bZC;SDjb*}zXvhemyn?Wx76^i)h zV6&L41eKvA+^hmsp%l{LW~ORV_m0dCee2+Lp&saFEvOF-pkcUK292OGG|`ipckugv z3$z?sf^Ig0k9hKFMYaw%+XQ;saI;;Y?+|Xb5A+V3O73k`p)5I zmq70tZgvawUBb=ofxc_r2Uo~$48&rOaC7%S?-_3H5$L^=R(EFVwd#xZgFcb{$pJ7B z2IoQKlQ{a}Ca z(1XLx1He=C*dA9mJ!MbP^B5IQX7lGfl!6EMV7lpvd%_;jgXyL>U<`P052l;mhzT$e z4h#+=4-O`g_U&2I52;$tive<2Fqu3&+&m;H+QLVnN1)T;NSG0B9tB6kF)%aSJQj|F zS#W$Xn>-=hv_A((2j`IX?OD^$h4bKixB$F( zUPQSN=7yX0=fOpAac~KFX;pp+z7)9(oM6-Oyky|rneuE7T>w|ZHIM|?lGlZs_OFK< z;Ktx4^5$^U{w;7TEDUZVZx1)^-vM{RT~$-bYd@va6YplQ2=0N!!M)^?U@2+eo;CeG zSO)ipn-9Q)upA!JlWsrrqcUPqrgrvm#!tYLpqr1uQ?L@A4mY2HXW=<`KHPi(ockiY z6mGi4x$fm!-E_^%@QROuS7Ttl2D}BxAH+>{b1S)ud>vSnchgPYfH%ROZaViZSPk}c z)BfA=4%mCUDj#7ePVnHK#Jl0o&Cil8Tlq=-7Inw3px~xEyX&Xmndqix^Bt^%_2K4*aP#|c^M^p+ z7;bK=Ae%34j)M7Ppl=B`e}Zq|Yxp_XO8ydV+W!@PgWrQc$UnnP`+vdT@K4p@yp2QL z+=IwANbw~Z-Lzjs7K2}>k;+gKZWbkDe&tSmf8Pqw4K z1L$P6{OeVF3azRpn-*spX5H8WbcUT_H3ty4 z2R}C0mGpCt-N+uWJM@eiy=;Eqq&=V)IMGSE*&F&mU+5QZ_6Og7zsE`Vk3qVb;+7Af zHxLGapKrKVVIS8G20!yy<7bUF-eBO_`f1E3Foc>Pe7J!d4TWJa9ITrklllmJB;>Z^_YN;?;6i(jU3?_teaL;o%_E|=AHF}>H|<%Q zME@|*O?wBx1lVt449o)q{h)C3;6QK529C{gn1uUpB6HviVZn}1HQR?vg7Xn6djtuf&5SUKW zFBLe}Wd{9epqu$G9ax8>;K<0M$z#B@t{;_Lv?SAh#w>I;n8(2!I1x??H&2FB;8Zv* z+&mr5fHUE&aMQ=d+2CHT)lW`}mS);aa~qdk7&(`m2N%J`;pQc9DO?7ZhnrWxl`tQ! z3O94G0Ir5>k~5cP%8C{w8~;j|^}UhGO>i^Z5^mlK3*k1nJ-CCsGu&L54E#G?Hu4^H zF_??O&3j=9EQR~R&1G;uJOGY$b7|7(=z|;Ro0lZf=6jrK#kWWtq;|-x>S?e}ZoQ3V*@h@K3n;FKmNUn%5{`lhhU{ z#w&s8ST`$^&MSc`f$ObRh0-)n*6A3S8K@TNSU0Of4X6pV!p+)H2kL@j-E>|(s1FUo z&4y40ji7Pflf$>A>rQKqHwCi=l!NP?ubVBQ6|{yn;U-^KPqhR0Z4z$o0PUdzbkvhA z_h;&rbVfTRTehX^m2^Y9B&{CE)N8yODm`HLaI^c>-FVjPjrD=P&@bHV4+CHz3w1^$VkV!xhIT*(J-dMhvj7~gK@A|G;}98aXjn|`-GeO!hWzn9H1w4 ziuf1VgV2d!9t@Mf<3RG0=w!1QqQNSFaf!O<0-++LKa z)9pA0Gr^n%$HQzmA(%s+7;YY)d{N{Fat~%YWY1=N4x9_Rc@~@p=fefz=7mw4OU?^7 z?OD4BE)F;CS-S)-4L9vsyUZV$%VS{LyaKL-`QheOkb?zqb+~yABycUbMmOEVHLkrb z+`JxK<675TljgS@#f3M(jc`-Ac{AJsw}L(0bnZg94Q>zaAnyz}?cW7=!=iBW9&lgx zzdIWPCpmdB+zU&>&81Phk6adR+Ou{)JP>Z$v-Th?4>#>S1fGB=BH4%e>ya3kPFMkt z!ehaI$j8G?`%l1=@D#YY2U{6DO+FKD+J6?FgXe=6$QRS8UGfDaKj9_vWq1X2^Hq2a zR>A9fvbr)qc&pJj!F(Iufp_7(;C*sUxM}|b_z*sVkKq&eH294CJlwRu7CeUge*s^@ zR~3FpUcP4V4SX97-3d(e}Ij!2{!A=GbNdN&3{I>fVmZZfnVV_ zJ=wyPtSkNi(;fbTzu}*7^IzBosSNMs!cDg>qE-x*KsPHx2~>fq;btkMAp_MaJUOpQ zrcSmN1E~#l!p#~`7wSR%aI*n4gfeIpZZ?J{&=i^l&B+$wrhUKE?w8p8sl<2B%PkDv z<=58p$P2^G_o(^JdcV)&PnT{kO(*|W;q6^(Hk4M-CfsZr=dTVN_`pk2D2aZhXF7!+#Cdh!M)r^H-~`7ao=9yrpFr!!(e#0IRg5C>s^ay z^Wwor!k#b+M#C5w8;m3O3ODVKhrMB+U|({-aMS+&Z~#mQHz&e@a1b1v;XhV$a4<}Q zL*P(2ESO9l9&R3z+?39gbvy!{4oAX_aPufQ8jgXPdh$h@YkWL98%}^Z!HMKa;imnQ z;S@MEIE_3#ID@or&zgQFoCVq7Z1S9N)Bd?$#=3Rq zt$;`2v2gQ0@VNJZ%^2kK3C2&tQ?N34ntUeQwErwT2hWF_FMtQKS8&qhEuPxv_>qHhQ9kne_@PIwRA zhc&?md_yj%$H}@d&8GIgY+FuJ_z?ab1zrKR6qhLDW8~7H!3pdxnde{Kp z>&faG{1|UWH-h;iY=NKP=U^-OOSozOSNIKnhdU&9bI2LbhC)M9~3#y zIl9@1+}3L*z>zPb;){AADq_!?3oS2 zeG(|c-OF^I?mj+o;Mu%5(S}#th7-h^n>K>RFo6R%A)7+87<)4IP46w&neL_YAN!_S zKzX>?5?bYxd&PnSvo*AVw$Luz+yUA{2XL&L&g%#}LZ@(ZC+G}2Lzi%~D|CZhpu3(8 z*_GT4+|0$g*#mZmp0G!_*$aAu2XRx~>;rzK%CA%T^{T#%`#~nsdtW#EL)M3a;^R^u z00UuAxH%YxfOY%2ITU<{IE)+~Zu*XK1UVA+1l=43qhSn;t?-6<8OLBR7!P~vNvpb< zdfoO%_XYC+m;e*uz~CVA;Ba$7GPy3VRfnOI;c%D|Zcc@1a0E;bjwEM95^u=x)Ypu5}XXDgqx?rX>dB6p(g|D@uYb+dKQ@H zz`5XZr|af0e1#>k#~oi_7}lDusGbj7nVdi*3G4G zA1s6WD|}d99$@ewERTln1SdWO55ptj<_dTe9)thr$(H)Ot9%N50?d{0G&}>(>Pf2x znR;VhM4t!qC3qR!>G5#$6?he1gH_??>+lA=32*7iIc(YOUG!}*--GvI4SW!MNPZM< zzMnkPfD8W_`Z=tHFT%|);VbwWz6ri1zY90*uY>ilA>8~Peu#0w&5f`LHp7ngFHtC;SC}hnxSvzcDVjxvd({>HK3|if2Eb z11sDtf@1KbJPF;bM0#tz)s@4|60qj2t`ctAs|x-vDAJIDYG5rt&c>iRSp#ZfCDAaEZl4kS5vcB zaI*!J!xhx80^Mv$wu08sCfsZb?O=!Myr#F0f!U#=nCeLG7;f6@1TJ!pZtetb-Whfd zH$6xf@ZcUyH@iYN*af=ho%>(e6?TIjuzR@K6WrWI&e2T|;wEnFrn>1~p1gaxRyVy7 z?(KfT#^52ZfvV27_yyqnks(y@$fEaMNQ9hpY$p zU=GX?FcS8JQQ_uj7z1NrT)4RxxVdYbqnjSYJ>1tlb<@2(dG}&%oBY5{ycKTlnS0i{ zIj(y0)U3?d6>VE)7S&9yJR{R+#gHzUd8=1EQB>{xx^w3>uLjkj#)^5(YhIpS(c__- KE!!3^Ui?3deq*Zu diff --git a/skaterift_blender/sr_main.py b/skaterift_blender/sr_main.py index df9fb17..211a8dc 100644 --- a/skaterift_blender/sr_main.py +++ b/skaterift_blender/sr_main.py @@ -1654,9 +1654,9 @@ class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup):#{ target_event_leave: bpy.props.IntProperty( name="Leave Ev", default=-1 ) @staticmethod - def inspect_target( layout, data, propname, evs = ['_event'] ):#{ + def inspect_target( layout, data, propname, evs = ['_event'], text='' ):#{ box = layout.box() - box.prop( data[0], propname ) + box.prop( data[0], propname, text=text ) for evname in evs:#{ row = box.row() @@ -1880,6 +1880,7 @@ class SR_OBJECT_ENT_WORLD_INFO(bpy.types.PropertyGroup): water_safe: bpy.props.BoolProperty(name="Water is Safe") no_skating: bpy.props.BoolProperty(name="No Skating") + no_rewind: bpy.props.BoolProperty(name="No Rewinding") @staticmethod def sr_inspector( layout, data ): @@ -1896,6 +1897,7 @@ class SR_OBJECT_ENT_WORLD_INFO(bpy.types.PropertyGroup): layout.prop( data[0], 'water_safe' ) layout.prop( data[0], 'no_skating' ) + layout.prop( data[0], 'no_rewind' ) layout.prop( data[0], 'wind_scale' ) layout.prop( data[0], 'skybox' ) #} @@ -1957,22 +1959,22 @@ class SR_OBJECT_ENT_CHALLENGE(bpy.types.PropertyGroup):#{ first: bpy.props.PointerProperty( \ type=bpy.types.Object, name="First Objective", \ - poll=lambda self,obj: sr_filter_ent_type(obj,['ent_objective'])) + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_objective','ent_prop'])) camera: bpy.props.PointerProperty( \ type=bpy.types.Object, name="Camera", \ - poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera','ent_objective'])) @staticmethod def sr_inspector( layout, data ):#{ layout.prop( data[0], 'alias' ) - layout.prop( data[0], 'camera' ) - layout.prop( data[0], 'first' ) + layout.prop( data[0], 'camera', text=("Camera" if not data[0].is_story else "Related Objective") ) + layout.prop( data[0], 'first', text=("First Objective" if not data[0].is_story else "Indicator Prop") ) layout.prop( data[0], 'time_limit' ) layout.prop( data[0], 'is_story' ) - SR_OBJECT_ENT_VOLUME.inspect_target( layout, data, 'target' ) - SR_OBJECT_ENT_VOLUME.inspect_target( layout, data, 'reset' ) + SR_OBJECT_ENT_VOLUME.inspect_target( layout, data, 'target', text=("On Activate" if data[0].is_story else "On Complete") ) + SR_OBJECT_ENT_VOLUME.inspect_target( layout, data, 'reset', text=("On Finish" if data[0].is_story else "On Reset") ) #} #} diff --git a/skaterift_blender/sr_mdl.py b/skaterift_blender/sr_mdl.py index fafbd7f..37a7ca1 100644 --- a/skaterift_blender/sr_mdl.py +++ b/skaterift_blender/sr_mdl.py @@ -813,6 +813,9 @@ def _mdl_compiler_compile_entities(): if obj_data.no_skating: flags |= 0x4 + if obj_data.no_rewind: + flags |= 0x8 + worldinfo.flags = flags worldinfo.pstr_skybox = _af_pack_string( obj_data.skybox ) worldinfo.wind_scale = obj_data.wind_scale diff --git a/src/control_overlay.c b/src/control_overlay.c index 3d9d6ac..dcc5b39 100644 --- a/src/control_overlay.c +++ b/src/control_overlay.c @@ -432,7 +432,7 @@ void control_overlay_render(void) if( press_dpad_e ) render_overlay_mesh( ov_dpad_e ); - colorize( press_dpad_w, !(_world.main.info.flags & k_world_flag_no_skating) ); + colorize( press_dpad_w, !(_world.main.info.flags & k_world_flag_no_rewind) ); render_overlay_mesh( ov_text_dw_rewind ); if( press_dpad_w ) render_overlay_mesh( ov_dpad_w ); @@ -707,7 +707,7 @@ void control_overlay_render(void) shader_model_menu_uColour( cnorm ); shader_model_menu_uMdl( mmdl ); - colorize( press_r, !(_world.main.info.flags & k_world_flag_no_skating) ); + colorize( press_r, !(_world.main.info.flags & k_world_flag_no_rewind) ); draw_key( press_r, 0 ); render_overlay_mesh( ov_text_rewind ); diff --git a/src/ent_challenge.c b/src/ent_challenge.c index f4681ed..0d68dfb 100644 --- a/src/ent_challenge.c +++ b/src/ent_challenge.c @@ -16,8 +16,8 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) vg_info( "challenge( '%s' )\n", af_str( &world->meta.af, challenge->pstr_alias) ); ent_call call; call.data = NULL; - call.function = challenge->target_event; - call.id = challenge->target; + call.function = challenge->on_complete_event; + call.id = challenge->on_complete_id; entity_call( world, &call ); } challenge->status = 1; @@ -34,7 +34,7 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) gui_helper_reset( 1 ); vg_str text; if( gui_new_helper( input_button_list[k_srbind_maccept], &text )) - vg_strcat( &text, "View Challenge" ); + vg_strcat( &text, (challenge->flags & k_ent_challenge_is_story)? "Play video": "View Challenge" ); } } @@ -57,22 +57,54 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) return k_entity_call_result_unhandled; } +void ent_challenge_visibility( ent_challenge *challenge, bool visible ) +{ + world_instance *world = &_world.main; + if( challenge->indicator_prop_id ) + { + ent_prop *prop = af_arritm( &world->ent_prop, mdl_entity_id_id( challenge->indicator_prop_id ) ); + + if( visible ) prop->flags &= ~((u32)k_prop_flag_hidden); + else prop->flags |= k_prop_flag_hidden; + } + + if( challenge->objective_id ) + { + ent_objective *objective = af_arritm( &world->ent_objective, mdl_entity_id_id( challenge->objective_id ) ); + + if( visible ) objective->flags &= ~((u32)k_ent_objective_hidden); + else objective->flags |= k_ent_objective_hidden; + } +} + void ent_challenge_update(void) { + world_instance *world = &_world.main; + for( u32 i=0; ient_challenge); i ++ ) + { + ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); + if( challenge->flags & k_ent_challenge_is_story ) + { + if( challenge->indicator_prop_id ) + { + ent_prop *prop = af_arritm( &world->ent_prop, mdl_entity_id_id( challenge->indicator_prop_id ) ); + q_axis_angle( prop->transform.q, (v3f){0,1,0}, vg.time ); + } + } + } + if( _world.event != k_world_event_challenge ) return; - world_instance *world = &_world.main; - u32 index = mdl_entity_id_id( _world.active_challenge_id ); ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); if( _world.challenge_state == k_challenge_state_viewing ) { - if( challenge->camera ) + if( challenge->camera_id ) { vg_camera temp; - ent_camera_unpack( af_arritm( &world->ent_camera, mdl_entity_id_id(challenge->camera) ), &temp ); + ent_camera_unpack( af_arritm( &world->ent_camera, mdl_entity_id_id(challenge->camera_id) ), &temp ); world_set_entity_driven_camera( &temp ); } @@ -84,11 +116,11 @@ void ent_challenge_update(void) menu.disable_open = 0; srinput.state = k_input_state_resume; - u32 first_objective_index = mdl_entity_id_id( challenge->first ); + u32 first_objective_index = mdl_entity_id_id( challenge->first_objective_id ); _world.challenge_target = af_arritm( &world->ent_objective, first_objective_index ); _world.challenge_timer = 0.0f; - u32 next = challenge->first; + u32 next = challenge->first_objective_id; while( mdl_entity_id_type(next) == k_ent_objective ) { u32 index = mdl_entity_id_id( next ); @@ -114,9 +146,9 @@ void ent_challenge_update(void) { f32 min_dist2 = 999999.9f; - if( mdl_entity_id_type( challenge->first ) == k_ent_objective ) + if( mdl_entity_id_type( challenge->first_objective_id ) == k_ent_objective ) { - u32 next = challenge->first; + u32 next = challenge->first_objective_id; while( mdl_entity_id_type(next) == k_ent_objective ) { u32 index = mdl_entity_id_id( next ); @@ -153,8 +185,8 @@ void ent_challenge_update(void) gui_helper_reset( k_gui_helper_mode_clear ); ent_call call; call.data = NULL; - call.function = challenge->target_event; - call.id = challenge->target; + call.function = challenge->on_activate_event; + call.id = challenge->on_activate_id; entity_call( &_world.main, &call ); } } diff --git a/src/ent_challenge.h b/src/ent_challenge.h index 73641bd..0014670 100644 --- a/src/ent_challenge.h +++ b/src/ent_challenge.h @@ -2,3 +2,4 @@ #include "entity.h" entity_call_result ent_challenge_call( world_instance *world, ent_call *call ); +void ent_challenge_visibility( ent_challenge *challenge, bool visible ); diff --git a/src/entity.h b/src/entity.h index 83bb050..4d011c7 100644 --- a/src/entity.h +++ b/src/entity.h @@ -488,7 +488,8 @@ enum world_flag { k_world_flag_fixed_time = 0x1, k_world_flag_water_is_safe = 0x2, - k_world_flag_no_skating = 0x4 + k_world_flag_no_skating = 0x4, + k_world_flag_no_rewind = 0x8 }; struct ent_worldinfo @@ -589,14 +590,35 @@ enum ent_challenge_flag struct ent_challenge{ mdl_transform transform; u32 pstr_alias, - flags, - target; - i32 target_event; + flags; + + union + { + u32 on_complete_id, + on_activate_id; + }; + union + { + i32 on_complete_event, + on_activate_event; + }; + u32 reset; i32 reset_event; - u32 first, - camera, - status; + + union + { + u32 first_objective_id, + indicator_prop_id; + }; + + union + { + u32 camera_id, + objective_id; + }; + + u32 status; }; struct ent_relay { @@ -617,6 +639,11 @@ struct ent_miniworld { u32 proxy; }; +enum prop_flag +{ + k_prop_flag_hidden = 0x1 +}; + struct ent_prop { mdl_transform transform; u32 submesh_start, submesh_count, flags, pstr_alias; diff --git a/src/player_replay.c b/src/player_replay.c index 3c7060f..f0ad6d4 100644 --- a/src/player_replay.c +++ b/src/player_replay.c @@ -762,7 +762,7 @@ void skaterift_replay_post_render(void) /* capture the current resume frame at the very last point */ if( button_down( k_srbind_reset ) ) { - if( _world.main.info.flags & k_world_flag_no_skating ) + if( _world.main.info.flags & k_world_flag_no_rewind ) { gui_location_print_ccmd( 1, (const char *[]){ KRED "Rewind is not allowed here.." } ); } diff --git a/src/skaterift_script.c b/src/skaterift_script.c index 23a0347..682e423 100644 --- a/src/skaterift_script.c +++ b/src/skaterift_script.c @@ -1871,8 +1871,7 @@ enum script_action k_script_action_play }; -static void _skaterift_script_hook_apply_action( u32 script_id, - enum script_action action ) +static void _skaterift_script_hook_apply_action( u32 script_id, enum script_action action ) { struct script_info *info = &_script_infos[ script_id ]; @@ -1881,7 +1880,10 @@ static void _skaterift_script_hook_apply_action( u32 script_id, info->availible = 1; if( info->linked_challenge ) + { info->linked_challenge->flags &= ~((u32)k_ent_challenge_locked); + ent_challenge_visibility( info->linked_challenge, 1 ); + } } if( action == k_script_action_reset ) @@ -1890,7 +1892,10 @@ static void _skaterift_script_hook_apply_action( u32 script_id, info->viewed_time = 0; if( info->linked_challenge ) + { info->linked_challenge->flags |= (u32)k_ent_challenge_locked; + ent_challenge_visibility( info->linked_challenge, 0 ); + } } if( action == k_script_action_play ) @@ -1900,6 +1905,9 @@ static void _skaterift_script_hook_apply_action( u32 script_id, _script.script_id = k_escript_script_id_max; info->viewed_time = 9999; /* TODO */ + + if( info->linked_challenge ) + ent_challenge_visibility( info->linked_challenge, 0 ); } if( action == k_script_action_info ) diff --git a/src/world_entity.c b/src/world_entity.c index e550518..e992ae3 100644 --- a/src/world_entity.c +++ b/src/world_entity.c @@ -830,14 +830,25 @@ void world_entity_start( world_instance *world, vg_msg *sav ) { script->linked_challenge = challenge; + bool hide_linked = 0; + if( !script->availible ) { + hide_linked = 1; challenge->flags |= k_ent_challenge_locked; } + + if( script->viewed_time ) + hide_linked = 1; + + if( hide_linked ) + ent_challenge_visibility( challenge, 0 ); } } else { + world->events[i].story_script = NULL; + u32 result; vg_msg_getkvintg( sav, alias, k_vg_msg_u32, &result, NULL ); diff --git a/src/world_render.c b/src/world_render.c index 6db6095..98b27e9 100644 --- a/src/world_render.c +++ b/src/world_render.c @@ -200,7 +200,7 @@ static void world_render_props( world_instance *world, u32 material_id, struct w for( u32 j=0; jent_prop ); j++ ) { ent_prop *prop = af_arritm( &world->ent_prop, j ); - if( prop->flags & k_world_flag_fixed_time ) + if( prop->flags & k_prop_flag_hidden ) continue; world_render_submeshes( world, pass, &prop->transform, prop->submesh_start, prop->submesh_count, material_id ); @@ -514,7 +514,7 @@ static void world_render_challenges( world_instance *world, struct world_pass *p shader_scene_fxglow_uUvOffset( (v2f){ 8.0f/256.0f, 0.0f } ); challenge_list[ challenge_count ++ ] = challenge_index; - u32 next = challenge->first; + u32 next = challenge->first_objective_id; while( mdl_entity_id_type(next) == k_ent_objective ) { u32 index = mdl_entity_id_id( next ); @@ -607,12 +607,16 @@ static void world_render_challenges( world_instance *world, struct world_pass *p /* render texts */ font3d_bind( &gui.font, k_font_shader_world, 0, world, &g_render.cam ); - u32 count = 0; + u32 count = 0, total = 0; for( u32 i=0; ient_challenge); i++ ) { ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); - if( challenge->status ) - count ++; + if( !(challenge->flags & k_ent_challenge_is_story) ) + { + if( challenge->status ) + count ++; + total ++; + } } char buf[32]; @@ -620,7 +624,7 @@ static void world_render_challenges( world_instance *world, struct world_pass *p vg_strnull( &str, buf, sizeof(buf) ); vg_strcati32( &str, count ); vg_strcatch( &str, '/' ); - vg_strcati32( &str, af_arrcount(&world->ent_challenge) ); + vg_strcati32( &str, total ); f32 w = font3d_string_width( 1, buf ); m4x3f mlocal; @@ -632,8 +636,11 @@ static void world_render_challenges( world_instance *world, struct world_pass *p for( u32 i=0; ient_challenge, index ); + + if( challenge->flags & k_ent_challenge_is_story ) + continue; + m4x3f mmdl; mdl_transform_m4x3( &challenge->transform, mmdl ); m4x3_mul( mmdl, mlocal, mmdl ); -- 2.25.1