From f0a35a31b9bff30f6a616c791e2f7531b4ba9ae6 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sat, 9 Mar 2019 19:59:52 -0500 Subject: [PATCH] Make car drivable; refactor jorth module bootstrapping sequence --- boot.jim | Bin 1237 -> 1243 bytes boot.jor | 2 +- defs.jim | Bin 1462 -> 1502 bytes defs.jor | 2 ++ entity.jim | Bin 786 -> 849 bytes entity.jor | 2 ++ footer.jim | Bin 1073 -> 1073 bytes game.exe | Bin 117433 -> 117571 bytes game.jim | Bin 5243 -> 1652 bytes game.jor | 35 ++++++++++------------------------- game.prj | Bin 5201 -> 5316 bytes gameboot.jor | 22 ++++++++++++++++++++++ input.jim | Bin 372 -> 372 bytes jorth.c | 8 ++++++++ map.jim | Bin 664 -> 664 bytes pete.jim | Bin 239 -> 259 bytes pete.jor | 28 ++++++++++++++-------------- testbed.c | 2 +- timer.jim | Bin 438 -> 438 bytes 19 files changed, 60 insertions(+), 41 deletions(-) create mode 100755 gameboot.jor diff --git a/boot.jim b/boot.jim index ce571b72e2a99de03677435d736acb620e2ea96a..27ecbc023f31d6e9ebe4b1854c9bd8fbdd9f1fc2 100755 GIT binary patch delta 217 zcmcc0d7G2{J6k{ZI)=*|*{hg^_Orxtd2sD#VFKbKjFWqrl{9y8&1b#G)W#~t z0)qQl7#L2ooZ@0&;bMBm%Efe#NsP&m$&2X^OUvXN%=V0DCQGm=D%)`XVzp(R#1+YU zn#GA5qKkp$DvKZY2gdy@j0}HRcqYfNsDuV^voqx6C#GcO7cs2juVz(bN#xGs%4Ge+ xQp(K%mPyOZNrg%=u&8khGGApm!VR(J6k9BI)<|w*{hg&V!8ISFadEamp<3z$;?WcTe#-4-eYQG6=MOx{VWU& zr&*40F|cqkJ!9o!y2m8OWXR;j^oONx@;zpI#$%J^SQM4bxPP(Qvi5LAvYuwK;fCm9 zV7bcT!To`8KMNzn9~QRBNh~VTUfk>qIr)hxS@}f_tN5!~6i{K$p1urrZzc;fRt1Rr!eD8aI-+OPB z+!d-ix3!J@g?yUojdIXz&}A#+iyZKl8u13;MZYmOdkXN1Hq5?uFSVi-xQM5Sf6g-% zYk~L-@eoH$I@95DQ`mXV18@KwNq}MQ(^Q7k#bC3MNKF56uksI@I{glkR-naPA@DjRae zkRXy-s#`I#bf6I|y0vm0)I1+iH~A|g

cyE#8QqepMp=$T&;0K@FUchv9rXgG%rl zVk+`Ipblzxfr%~RZ;V&SkGW!v_%GueRlTKTdy4nDT}3r1R8@$v6EQhwYP9To3uOeD zMx`U>Ir7}n9A3Lw?`9&N09*-bB2LKT=D%^IuNTb>`k#S%^RSPbA{)9j*QtwzEZIVS z6`m2lg`5k1bzVdmH`^+)10lXJBmUG>sp40G_vs?ecV<7TjreQ9-K7{m2K@I9{-fDL zWv>)eI*W5FbqT9;95tq>PnRi3beX^aye2H-S%t8aBUUdCr^RDdfmu5ZDU%U6c$ZJa zf1<|4AQ{wt<#SWK>hNzWz2J|VEuIE9;z=um%KU|yK&lH_iDw`2BJhS=pFil!0bWl_ zEfHVnqV)t#@+P*At!&~^+cPTIi^O=t$|c5n!!3!**V7@Zd**E`-}UX-cdYk2IsZn^ zL()pDYqytY>_p)STRJL0BccU^lc%Pm0Q$HkAJK9m?s!jZ` z{RgkvqYqNAMtsd`t9jn(jPDZ6ZIv}Slor2X&tybgNpU(3I&J5$IBu!opGgic&ljyN zOl$|oaV>r_>^y&qC#m5x`!%|c{NGdi((ayG#J|{(vbKD%?p0;4&th(E%>PkG(o3f; z9&xr*Q9okc>7hl}Z~UMAyi-ZH_&9j@19X@=!S*3Y#8Xa&YF^3n&&WxPtQnHssk6J; zga)NeEB>JuOA*w9h=K(1&%uKir-$HW4@$PtLm)j^^pJx^1VKjP_hxoum4%((eD8bj zd;fl;4 zLOcy(5wxoSJ~h(huAcXnU4Zk-4sRP{T95oO7)ozK#-mfvxLY7$(HXm||_LMGf#iw7Ch;QUKsOAUYggg!BTNz}6 zXNalD|50^Jy8}#Y5r3DzNM6hpYs7!#FH^%^O}3|ekJ~1)Ng=C|7&{x2+0sNTs$dD7s06uI;b9!bG*+v`+?ySc6Eb#q4{*yUG zRkz~T`-`)k`WUP81aeH#upv{B=rVz$@H%4=*A&81PFhEBak@NhjWBDkpq0r8biB(i z;@?nH-SL(ed{GTqiDw$|Q&xsrPIGC(lZ$mTEgBI!1GJf-Nxa0?v9gIraA;I8@5Fe` z$|c5T%c)5BZl*(456xd%`oOnu53Tq5n%_h7c*hT_alb~DFHEWIK|AT(eRf-s8f6w| z(f5+s<-bv#a3*ZV)jDBIo%{XFo5y7ur}|MY*~EWZzw>kU%tLfUBi^ujs?K45EGsbg zRMzAIbonKFAtOx_iP<>lq@BY;IF**Sl3XaA>(;JJ0!zOUpKjyyAx@IR>-HOT5Ba}W z=(;_)LJ@y$qm{whMAL1^zCMq6_ApnqAo5aamxl_ws&qf%J$r~cj@SA>`&gl#?(zfR q;geWk>Id78Ge1$tP~cWvZ$(!9t#l$G>$woSJzEe-ks6P`WB&jr_lP|J diff --git a/defs.jor b/defs.jor index 3df7f50..cd1bca0 100755 --- a/defs.jor +++ b/defs.jor @@ -65,6 +65,8 @@ 1 + ( cp i+1 ) repeat drop drop then drop ; +: words latest links each dup wordname type bl more ; + ( tasks ) : mailbox 2 cells + ; : task-ip task-user-size cells + ; diff --git a/entity.jim b/entity.jim index f69a6b0455fcea24b8e73411d0ea1786e75bb1c8..d6f167e7a57c8cb573e276d16235fbc0adf3a89d 100755 GIT binary patch literal 849 zcmYLHOKTHR6h3qBnM|5w4A^GwEp;<0f{(bUbYnCkrNk=KMXZA2A|{hM)I3PW7ey$7 zx|6Q_30+7RMZ|@hWYLuYH_>hi*|;u<6hRmo&z+g13^Q}?_nqf=E=$Zzo|-Q3gUpXi z3>NO*S)9KG=cWJ-GKMjjZ#G;)Lk)pLkW+*fn~%C_1Qt5PSSz%Ek@?Y4kAO!5rzcZumGO-oj7Od&8m1=~J6u0yHiaszHc$1MGxUC*|A2(~+%F z%y*$fwN|#X#e_F_DbL6R9gQ4r+h(iWA-mMwg}_2W-IhX_{pj zTrj1yTc(UR%~`rw8?t8lxX&L+A3aHPIMq_!twlVb@&TBm{tI}Lruru52+PxH+w9>d znx;te>;_qYywq%}o=rKg9k=l>v+W*h3d z_1Mb6+||n$>J2zL4X|$MGQD)Aex7m#-dlNay^hxn{qP=aOqR_EIUdpEi4ftHy8n&w zvt>Y9dVGnBWx<3#Vln>NC!|V*YDP@(!d{2#4-$%H)C@N>suuJIe&`Vkq_(C0Qer&A z^Lwn@BgVlLzriOnyi9WkVT<~jwAd0aX1Locdv~Z~jc=*n@C|oxQy=0-9-#tjd|Ulp zaxg-mC9fM1R%yZedW=u_LpT-oZntkz>nH0akMS#iK#<>FAmnX={NRtE`roTfJ@x7x zBe_J{!EKey;0jzz+&(B2m`i*!pv%=+!@n5gV~FZSzGWe~5J2ZUd z7c(AE)&Nv!{&RSUwmNNB2&+-HVGeP|=Gdey8;J@~m3$m|pF^4lrX2js9Q;SVGD0OT t?sprite cell + @ execute ; : entity>do ( entity event ) swap @ execute ; +: entity>pos dup entity.x @ swap entity.y @ ; +: entity.pos! ( x y entity ) 6g|$n^W&&VYAxRT-a~~FtpP2>V4xUv7_~`jv_!DQV|?k5Iyy5lN`(Cq zwTN1@YY{D4Sc?{ITGY@cq-i%;kRSw=i?Cl8EgsbU-b~uAfq^;aeD~h-ojae)uhrT{ z6RoSyR3FYHlNl=&SioQ%u&!2MEM;Z`MHWldn`%KhSYy*K)s4<*sOufCo-EGu5ryuX_mo6*uRP!OaJ+cZfxpX8P zjSdX6z5{Q$bhxK?NM55FpEN%*)_f)qPfjLN97i=a*>XB#X6Dih97T@2XrTS1h=S6` zk$A;lwbfDms1-Kt*<#xqw$5RLTkHXcH5~SYa62RCo$$v?sJMzbQSNBz8Os`DgDzYa z9!yV4izPF&VpYkJAB*CHV$&VrLt;8E^?5!p%Pw5i~KDnbE@VA zcm7#&pGizvGD{$&7w+NLfhZ#Mt%F_dGGDuUNJl%5Io!8xnPg-V*uO(OaO;b38 zALKRa|MP)Np-n`@X(3DG{*PyK}T`OjX%zzo1C#@UFQE%J-c%Eg6IvD`VkO-Ll~V@Q#ToGqvCl TZj|A(!Ff&0#m_p72QK^phe!_V literal 1073 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 QtOWe`iMyS@W2>9}FStJ&b^rhX delta 22042 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 literal 5243 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 Q#onC7nJ^C|b3a-A7m5=Z4gdfE diff --git a/game.jor b/game.jor index 349b643..ba5c97d 100755 --- a/game.jor +++ b/game.jor @@ -1,23 +1,3 @@ -: blah ' seremit task-emit ! ; -blah - -: start-repl activate blah - s" .:: J O R T H ( jean forth) ::." type cr - begin receive loadstring s" ok" type cr again ; -task const REPL -REPL start-repl - -defer tick -defer draw - -:noname -s" input.jor" loadfile -s" entity.jor" loadfile -s" timer.jor" loadfile -s" footer.jor" loadfile -s" map.jor" loadfile -; execute - ( J O B ) var MODE-MOVE var MODE-WAIT @@ -57,8 +37,9 @@ defer player else player.state MOVING f@ if {pete-walk} else {pete-stand} then then ; +: player.driving? player.state DRIVING f@ ; : player.canmove? ( x y -- ) - player.state DRIVING f@ if DRIVABLE else WALKABLE then mapflag? ; + player.driving? if DRIVABLE else WALKABLE then mapflag? ; 12 9 N ' {player} defentity player @@ -82,6 +63,12 @@ defer player rot ( b b x w ) >= or or ; +: leaving? ( x y dir -- b ) + dup N = if drop swap drop 0 < else + dup W = if drop drop 0 < else + S = if swap drop mapsize swap drop >= else + drop mapsize drop >= then then then ; + : no-touch drop drop 0 ; defer player-touch ( x y -- b ) ' no-touch ' player-touch redefine @@ -141,9 +128,7 @@ player :tick draw-screen draw-footer ; +:noname MODE-MOVE @ ' tick redefine ' full-draw ' draw redefine - -:noname - s" pete.jor" loadfile -; ' onload redefine +; ' onload redefine \ No newline at end of file diff --git a/game.prj b/game.prj index 62bd7622c9d55e820b00ede1f5a93553be5f0180..ac99acb2463a5b251e670d5ef907952f71c206a4 100755 GIT binary patch delta 261 zcmcbpaYS>2IvdljxtlfFPO|ZCoSW%)Ql5cfnll4~_vZgRPnlR$7|~ zAcIA9fS)9T%n}PfCLf0B3;g}~89e7j`f)KVUh3+n$S`|}ho2ZjZdIzED8rFCk$(UG zGjLjNnV&F~oq^fQKPbdQ;Xlay5ZB-kCs!9epr;r(7{nRo%-t*^_=u4SNdFLuWCQ?g CPfd#e delta 145 zcmX@2c~N77IvdlTX`40KPO|YDhiCdNmuFz;b7o+0-u$2EDH96=!>(zQU+`avaAQ_u zU|_hy^#8vWvn+EH!+)j+K=ynfUd(WUX)Ti$(*_0xMsCL4OlKHmnBthsncA7e7$-Ar vVa#SyW;9^*VGLw)VS2&X!1({aAA=vzEDi>729fa1?ShXOnSgY*a3muDlDaFs diff --git a/gameboot.jor b/gameboot.jor new file mode 100755 index 0000000..2080b7a --- /dev/null +++ b/gameboot.jor @@ -0,0 +1,22 @@ +: blah ' seremit task-emit ! ; +blah + +: start-repl activate blah + s" .:: J O R T H ( jean forth) ::." type cr + begin receive loadstring s" ok" type cr again ; +task const REPL +REPL start-repl + +defer tick +defer draw + +:noname +s" input.jor" loadfile +s" entity.jor" loadfile +s" timer.jor" loadfile +s" footer.jor" loadfile +s" map.jor" loadfile +s" game.jor" loadfile + +s" pete.jor" loadfile +; ' onload redefine diff --git a/input.jim b/input.jim index 0295e064caf6968d929c1c574674930e676aabc8..6c9b75f17185435a1f961e64cdd52e4507784bd7 100755 GIT binary patch literal 372 zcmXw#yHCPE9LK+HPgK+p^v*$LU^O!7pb0S&tYYL93UR9e+5vggM=LRLU~nQ~cGSti z#l_LcE^cZZOc?nCoJsI^ByQi&eIL0y)xW&(DNd9&pWzIqZp5+56|}jJAf4B9ge$n^ z6ENfXT#_h+2d=`5l3d5Ll-ndX(3SmIGEcCHH`zC`vA9mSg>SCGEM!S1FpyhGeNP4t z@hgM5gZ+fW6d=gl%^anPvIvMNG>a8CQnjz}7yx?-2DL916?I>at%*f8WFg^$XW2Ek zNP(rU+po6P6z6c?Fc_k&+W^S=ekY<1_#c>9NbE|8nNt> z<2A}QP2J76#E&*)H?*J16bxNHUBUf7%70PuB&Jb!ybIfMnvHR*L!DPKiE@nwZEJk% QcM;UWtR+6Qj&@D{A8uq?ga7~l literal 372 zcmXw#O-lkn9LAsBovfq?ZKhKZ5?umMc`yh;Y|HQ!T?smD=(baV%wwWCU$a{dn3Sh~irIi}`p$C)~mv*I<_Nq?34%TWNh) z22*&H!NUGtQep4;WOxzPuy_LzQof4*nJ?Ny|W+Q@b%djUt%NnN`0?t z*WEG&_}mfMt0KgDY&;IJp*m1|Ou<0yvo$&$sw4Kx{Wxpc7ZuNSohFJLSQqnfPpn$F zYF8YuY1uS&9*l?&ZN#F&hfJ2$MTI41(Qv%BU3EImNvlhpmY9ZBr$M_q Sx%G_*XdxC6Z(3KoBL5G_omq?k diff --git a/jorth.c b/jorth.c index 5119d46..e402a0e 100755 --- a/jorth.c +++ b/jorth.c @@ -844,6 +844,14 @@ void f_loadfile(char *filename) { f_cexecute(); } +void f_loadjor(char *filename) { + PUSHS(filename); + PUSHS("loadjor"); + f_lookup(); + DROP(1); + f_cexecute(); +} + // does not use the jorth interpreter defined in boot.jor void f_loadfile_cterp(char *filename) { cell *start = HERE; diff --git a/map.jim b/map.jim index 4572e795eb1965641968fdeb6c7eafaa2613ae3e..c61b8e52f43221c5235ca58a221f72e809f61513 100755 GIT binary patch literal 664 zcmX|7J#5oJ6n;5BLmb=yCNWZxI9~+}P$pW5fd&Fap(0%UyBeJgM6mkC}Vc?y@>*@(#(|sAmAezve(VPU5F@gCIcGq_l=lKZjOG00=2qS?D>Nt`lfu&f(>PA;Nbt3jgO(rF zZ~LqwiNc1(G7e-b4qU=b98)Cd`Yty(@x+FPRnA!DcqX$dDgIyDU5P}T_D=G-eHrbY?TQ_E7i}fND zPijwssDD8VA|5PwkmAWh5f2hUg~fvu5#mXDnuBk)iMuQ_?|a|(y>B1O^{n6aI$IOB z1;ThMied9`2@}T6ggK~iP2`{xgnsOYexn1kd4T6)2R5 zb(ydpf6NumlWxTe7rnXA*Zos6mI@yb+H42Q1GJW+FQiE`8jHut&u<1DqHl=LJj$<+ zcJYhc#tiJT)wKGVRtW?8XMl6Oi+^Pi-wL2_f-1C&X=g)x=Qj)Y3tc>7Yp6dZc*4#>+mC}) zU#m#sVA;|#9q6I01G~6`Pi>dN=Q<*}-QNdlrl6;Ebhk z&dx&YEf37^84lKsvgP2Gu|=m&_00$<`+FjWk=N{}(8MX@BfWW3lXi_6OVj=Vc15&+ diff --git a/pete.jim b/pete.jim index 41fffe78b38978b68527023718d3ce394f0d3535..93e9e96dcd3a3a3ee8e59864f24dea321975adb5 100755 GIT binary patch literal 259 zcmcE1U{GSy_{qSgu|%DjAvv*#Ay`C8gF}*up@HE7!zz9Tmi;V@4A#t7S*$cbtR&?L z$~`=M8kfZ+R6dJ|vHW3K#s7&VMq?Gfgo-2IZDm2A$}kN+4M)EHEDQ{PfV$r+>2rNz zc>z=*#dAuWM-`-|2B>P8#$&lpEORtGOVo=MO7im+(h`e+v_g4ePBw@x$uG~-W9XCv z*?OAgfrb>%eij~v{VePZ$vjtC?r1>lx&k)kl17NXi@%kEd%i+Oer_s~E|4oYdBj*i bF5S=4qY84%Z;gV~l2pCi!~%vU#Xl?nHhD}t literal 239 zcmZ3gUaH8d{*>XP+7vZrhUCN|hF}pf^;!u=h6W(~sKx;jE6L1F1xYY4tm0>2+0Vkj zV9k7$B}RQeiw%R2`UFW3`x8rq`YQgPYGz`WnYG11@?PqS;-^`B)V0MyqPLlUs@19f zVF^~U5CoaQ2sUG(dW763mig-88HptdiFpe7IVlQ7rNt#lrODZ;C3?JE9*MLm&( zMVV!(c?y|%3YDpeMa6my|768j{;;g#|HQHzXl=H#HQ!G)Yd(*F ViRF@dL25~=UT$Im!*_*0EC6J$Nr(Ud diff --git a/pete.jor b/pete.jor index 0263573..2416acb 100755 --- a/pete.jor +++ b/pete.jor @@ -1,24 +1,24 @@ ( P E T E ) -8 8 E ' {car} defentity car +13 8 N ' {car} defentity car -var cartimer -car :tick 60 cartimer triggered if - :| car entity.dir @ E = if W else E then car entity.dir ! - car try-move-entity |; JOB send -then -:touch pete say" What an old rustbucket. -Hasn't driven in years." +car :touch + 1 player.state DRIVING f! + car entity>pos player entity.pos! ;entity :noname - :| - player yield - car yield - 0 |; - ' entities redefine + :| player yield + player.driving? not if car yield then + 0 |; ' entities redefine - cartimer now! + ( TODO: DSL for touch events? ) + :| 2dup S leaving? player.driving? not and if + pete say" It's too far to walk to town." 1 else + 2dup 12 7 2= if + player.driving? not if pete say" TODO: Go home" then 1 + else 0 then then >rot drop drop + |; ' player-touch redefine s" pete.map" load-map ; ' onload redefine diff --git a/testbed.c b/testbed.c index 123749e..9eef18f 100755 --- a/testbed.c +++ b/testbed.c @@ -213,7 +213,7 @@ void game_f_init() { CDEF("mousepos", f_mousepos); CDEF("mousebuttons", f_mousebuttons); CDEF("unfuck", tile_init); - f_loadfile("game.jor"); + f_loadjor("gameboot.jor"); } void f_poll() { diff --git a/timer.jim b/timer.jim index 0c21a1547c115bb6fa2f55df1e79e1130bcf330d..7078a5c3bdbdf1f6cf06c13bbe6dbf0d538348e8 100755 GIT binary patch literal 438 zcmX|-KTE?v7{=c;Pph>Np<>|9DY{m0=~PX@!6Ld9oLoYC)Iyt<80z5QCvb9ca#vjX z0ZJFQpo=&uf*}124mbE-(#kD&zvp@0KbKqCT%X7%t0uNZfm*$wKis9qHR+t#?>H4M z5=4S91(6{k6E}Ss?(tot#z8*{;_iThC3rYwVPb2z}qdMX-5Y^vfx__z~>KhJsi&nuYauEnd+_!LMpEY-`$8yWl+MT(SfRd*hcTP#*cLuEgyshe9{uwg=Eje6Bos~r(hN(b@^2-Bp;)6)-0OB_EIX_a z>Uc7>o~<_(HhjFBGvp}29iMEp(&ZE`xiA`Bcxj=B7ry<2C{WND2T@yUOp7i;jXM+` z#VUn^vD_W$cgSX$R;k>u#-hmuH4vJd+2Lobx~3K86BOJQ&&)oBZ(i`cFXeDCvT3U?tGx<;Vgqoe