From 467263ce86fa90d4967183d47bdf8212f5f5cfc9 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 8 May 2021 21:10:25 +0100 Subject: [PATCH] Area support in map editor. Increase max smart tiles. Smart tile editor. Removed static area names. Tile/map layout continuation. --- !TheEsc/!MapEdit,ff8 | Bin 7928 -> 9676 bytes !TheEsc/!RunImage,ff8 | Bin 21276 -> 21240 bytes !TheEsc/Font,ff9 | Bin 29740 -> 31688 bytes !TheEsc/Spr,ff9 | Bin 113272 -> 113592 bytes !TheEsc/Tiles,ff9 | Bin 91404 -> 94092 bytes !TheEsc/c/CTheEscape | 4 +- !TheEsc/c/Graphics | 3 + !TheEsc/c/MapEdit | 414 ++++++++++++++++++++++++++++++++---------- !TheEsc/c/Mission2 | 43 +++-- !TheEsc/m2_map,ffd | Bin 10000 -> 10000 bytes !TheEsc/m2_smart,ffd | Bin 1200 -> 2400 bytes 11 files changed, 359 insertions(+), 105 deletions(-) diff --git a/!TheEsc/!MapEdit,ff8 b/!TheEsc/!MapEdit,ff8 index a6ee6dd81a99f30c556c51d37aa3f3806a7c8d5f..f1de4f2c8dad05a2c3cb395219966d82ec4838fe 100644 GIT binary patch literal 9676 zcmeHMeQ;FQbw6)Eq}666J%p&Su-OMTv78!b5%{AXoLMYP7+W!mp_ml8(xP3^nnikO zS2Z|eXZ3*$t!xR5W!D4N15E1Tbjmo`<1rywVrYqrTkzoet4(&_^9>S8Y{m6VXiKvF zo%bQFF=_2T+UXzOnLGF0d(S=J=iGDe5@~rt3lNPRE~T+4L?4~Lmgpi`zwjdaBV+Y7 z_HeS(@|D?pa)InXu99|-%Gm}zr0f<_pvqW~-93%6{Ul}kbD&`mtuQLawKE>-|G*Pk zq5o&0aDIJsW4x{@*&dChHby(r=|nP~V%*b-3guZX|Lb?=j(QF?=zh9Cztl%ZD6HkZ zz_qY>Sd_?GehT%CEQkyXucGCBn6LKHn5;f2hAQqet{{3whD@bcqtKJWQ#qgy&D4wr z!2COCpMH+$0@{iR%1V55OFSM+DRW}V+AZmLN~v|eu2g5_jh0{CYBn5Xg98KWPT(s|!M5>3h*?TAO)AbpCeFC%Mtk*tTBgA=m8 z5(!So`YvQ+S-s`=8Nl((TP2gSx*)6fYVc;ux(L)#UtGM;E#J$Kuk~#rzoHq)#M zQO#A#u&Bm3Lzx^&Sd-yPN=EqPtSCdP7(bNnKR_f=Mn6dr<5z{kt2{TU>y1&>wAE*Q z>IbEhJ~e&qq@I;~C-wYYThG^>x=)v>@fsg={ZNsvE1~O6@GDnMm;Mr9S(ZHSLC?Ms z`5$~^J>>sZRQ+Psfjk$!XX*QN)#deFOP0PjLEkRFrSl83EuG&5nwEanC6dWc>t}vZ z%x!>vR3#`RxjUCR2K~Db%Tu~?65?<-#~o>Tws{Zajmf=;)2%v>S!X9PuC~YD!T9cA zuRhZrKZx;_Gkf(~dz`}fVXW8L<93XPFkWbn!N=I&V!Xs2LuX@k*dMXSEg0vq{wMZ0 zgqZtN$ao5VVab__r#n?bo-^}Gs7S^-$oQ{b8dG4?_tDQpUk4v+ydx+`K5oXeM8|~- z-){6CG%s2SS}EE>$m>&%i!yxs0rM5~8IDuvCWf^Fa5aFx7#>}Ob z{OLr?hNeWD+L`8cC+Cd6Kbc?0OX$eOJBEdnL42v2ksR#RCD&h$#8w1F8nGc!$k;;g zZRqG_#3f;j^TO{zzH0sejT_!58jnGU5dBi(|FZMynh6|hi$x9Gr!>F74X{#euZwt1R>ruiv!WUa=1N8jJB=;twW1+aChA zSa$P;&e-_Q0AD@u9kcQ66ZZn&QX5|>_$$_t8@#0u6U?tgzgOG>_=Pt78!XQy^iLM~ zWB(=eTSGg&p3vS2+DD1Zx}a{5>y;4K5dLD{o(fzfKPh5zmrn8tv8Y^l5$KsXC=R=xK!@(;^ zc>!RXvx=?UVE07tz8$Iiy!j`)dy`_t8*w50B z8@=C*-(E9r_Sw9ZId-yn^Fq(n;ER-hJ|`*NIw^m5&e_NDvFmf~yW>;)I1c(g$G%qB z$)Ocfta#X5w2$*$u@8H|YfOFuH5GIwGoPG)_lxDA_kg_*dhiEv{`}&%g)#28p{=%BF;(Zvun>2Me&+w_5R0m#?>T{w2 z`>-~8xwCEZJfn&8y!agZhL?^6PJc_Mh-RFv4+^H&41CKGV~zBj(A_jP2mCC&D~Pz< zCHP#e01Th0KZ2arUF9)BVa@@21leb=Pkzjd_e>OZ(AvISNmR>wFqfQ;9K9ox+n(vl zdFY*UXRC%0n>$3;G1N&_{ki^H&UxLr?KlrTXfZm5SUw}ZtC0SE*RXgYIG|q--g;;C z<~+0c{Lu0)Rm=1Jp&#qxE*i_A=kv#@!E#I!weWV-#2&O5oyK_~quwTeDe@oh9fI9{ zjJ>gtX2cZDD8*a};l4(5M{oTK_RE8&>@MJC*>Of265#HZP`jRf4EZ3$_XQ2q8dDKEwBbSZtVjOdK&vwLv7yXt)d+hIXE*5IA>cnm5b-W7gfPO zrfB(_A?qKrP9j@z?!SV%GL$dNX!$bO$^%-V;6T;9;DAem&w5?)9P1=AYf%n&r~D9X z^9c6(=xy=544u#J%JIHh_!Q@yVtAL0^KR_lWba}7Ag|VxDQ^o!9Y#H?7 zD({V0FkbM!3VUw35%+NB9s0Q$drulmYL`;`H4#JRsS%I z^SPl{?@u63l_8Pt2%0|mEcnZTHskezHv8p4;C04(L8ljEo^MrN76$=;7Vxh@4-E4? zTaUc{qP_1!%(<^ZO$Ocl4dyuS^O?i$aoe1Pe}&qSNLyd*>9?`lwsdx++B@L4aQymY zLS5S)?cf*)h3AgCluRy=+aoGaw@nZ45!I1BLeB0HUgdEOwcK7eb!h>L?8W<+hI`Up z(EEWz+Wt`HwL=Z-2D-BGu@>Bs{3z=LRYXq{-^Mmvl%EP`B=g{&*l z{|NnRIxJ+|4Uf3#{Kjaajd7w5H1ECcBAjX9RPi?P682O=_I-E*Yy!?^Maur?KIS7L2B#3{jb56NfDEK+9FQ8wIvnGNw<|)u& z9n^2>A2NK?<}HQ(wSQQpd&?X5 zm!eK0$i*?haD@H00Cu4b+lt;peL4+l`KUS9D~J{#?@-Oh@FzZlZwGwHhHo_cT|$Q6 z(O?F!y9CY?yc@vx1AP8%Gv}CRoVTVNH)8GQ;K6?x7|1xvvNFv0h8d%8xvaa3`KD>A zO~K<%T$z(n+S=2~y7tbt*bSd~#!M*DwwRJiJY>CUCj4v@`2ED*R6M>hrF6FOb3%Jt zbZv5rl8kn&k1NqMBEotny$o7E)wg#hV{O-^m5tG4vb|*j7@Tw{mR*&#o$J=cJNy(& zq|{_|OVh^oSe*UUvGt}Re?954-s=8<<;D97(N^&Zzl}Qf!Tc`UUKHLcOq*eD0CPk+ zgW*dsW_S<2dHp7gAH}*0y)Qgu;$k>nYs6dzYaZP3JTxS_s5w`>_iI?+Y~l_X>ho*L zI$?7O_CAa``2YC{`IoI|s&9?9t&cC>f*0RJ3qQu5nTkp`k z#_!M#@DY=)P0-0T#q`>W=plC+jd=TU=*2i67ty;F^t}HKy^uq%10@1fkc5QLaUF!54;f*<{F_B{Y$p%q-oTs}aE>qV9LxLnu*2*u z;_Fnue(iktOtweVW>F_)cMD&r2lY+Q2r1bJyuizGh4??O93XOV zw0=$;{Y5xFlIT3=I0wh~e-94Mjm3PNF2eCM;NaY7+RlodbbNDqLYKdJck&(Ycajw+ zQUv!0N&c$=Zu40NjEJe22(ubF-uF%}`mmD1UBL~r1nJ$p_;&h}Gi>LX}w)c#z1 zv2T?_pGR5mfJvZ6Ux2k~s3C5^_dI;VonPm@UVLANKG59fnuG6Jd|wY-Tw`KR=Q`{p z^FUYlS(uCCfIBp&b6j> zi8ihgoLIY}D7K$qTV*vPYtxWid|vek7y1Bt_E#CL8ZCDx_<%i_Mwd-vwOO~|Ou?Dz z!CM{gt-u=Z^~l(-^oZ$SwfG{O^$p-@S*eHCcSP0JL`$lvr9Ii+*)icq#rZY~-c~Q+ zJll(g{MoF*UwTJdS6Tm!;OxpPzd!EO#9G@lke0bo!kSuo3Qt+O*l33-><YozK7bDgu;=s@toJT)_B!r0<7b#RAMcxRcEmQs zw?KCeUsH;7S0FmlrD(`(6l9S_*5(6tHl4&9}>0m zcZqKm@7cSda$q0sYx`0DAN0|Hj`fcQD>77na~}Cb4dQ=w zr8^g%H!MB@{Tm$K*BA4CC{NPd(Qfch(oy^`O%Hs7@0l`i;EkB`BGGE(2fFJb^fj&w zi$JJfcZKS6ZhoH%KmEbtMTZc>bQk`gzs<9J$2oTdcjM(<=YE5H_zgNb;^+i9^VRB1 zm!6TH9?3}kqmVDZ4SYr5tAyArg**Z1-INL6MB8Cw*2B>e>Emai)48K~{~0sobJdAFxmJ zob%)HsRKm3PUGP1%l4%XzVw0rw?0sdFy&bN;92x&y=eU79B>lt6xwOD|LY&;nE!2> W{2sC*o}M7X*GKCU)SB#i`Vi)EBjKn<2!AT+J+y~oP6`CCX;SR5`~gnVO`#3Zc5MpGm$5# zTTzvNySoi5$|c1u)^CDzzKdx#=9W=!Of6x5AomtGZE0{kK00X~Kn2 z(zwQkQGew*Q>D(CIe;?b5hw+KvK3I2%9yzxwn)#4yZHvkoN34~y>ep@_p-)(FtRC7ERswdHW?&1#|b&A)`Yn*kxb#M_;~ zyx4C>aBiuVAwkq+m7>_4aCSmEr;t&^n>{m~ZfZC9CQt3G6BHM-;iemI98tKzmTGJ{ zfi0auV4&5;41Us6)vF%-8k~pPEtTjUFY&KI;^JA;h;Az35#flA2oJTGUK$ZCPTeQ~ zcM@fEJ+#Y|AbtuEtpM?VF~cvPpBtQn-I-fkEq7F4$K&>n;1pzJNyx2= zzmZ$j8$2kK2HkiHgDLf)rbP{r&4J{ws0mu=+BYTa3djMYse*wXB z5PW+?%a%F!8vtAq@`~xc5^3B8VU{AL4{+{)SjML%1PJ9b`;}ctNXh|Y&e!;MK7o3&e8-c+?Cp+!T=PZVG*HG z(HkT)^}(P0EvUQR`2P!>z= z;lugGb#BZ+Y5gZO>=IZfe zyHgSMytoJo!m*m*OT3k{cPNuFrRh|JWWhdVs9;}FC8DqvIsVpIXL!t8+

WIXj5> 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 CXfMA2 delta 4102 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 N_9V<-q1&hZ=|AUuN0R^m diff --git a/!TheEsc/Font,ff9 b/!TheEsc/Font,ff9 index 2dce9ce410b0d471c8fbb14414e45053fcea4c9b..61e4765b67381387cc860d31b84e232b36ef52f7 100644 GIT binary patch delta 273 zcmZ4Ug7L(6MlO8@1_l8jK2yDsOR0qQ3KIiE?B+s$btY~GhBZ*oKKZ<#64U?xlLdVw zCUg7CBmvbkF#P}jA4G!LARdAZ62ugTss~aKRtnH64XADy#Rg@FZx+lKV3IR2VK6cI zkAeRK#eo)1?za(@1z8L-NfTxSlm?l^v6(ktm`NV2AEXBzgUkjR(`X~c3^WA*K|f5+ delta 21 bcmX@{opH?zMlKx&1_l8jHYnN1rBng{N(cp! diff --git a/!TheEsc/Spr,ff9 b/!TheEsc/Spr,ff9 index ce8d8918ed66043c4755673f6eaf7551a008e093..51ef4b8f24f412b0f97c2b12046ba40df9cc404d 100644 GIT binary patch delta 980 zcmezIg>A=oHZEBP1_l8j-m|-rYbzJyzQ*le+8A4m>vPx`7;+QyfHDxk38aLfYr~tU0IaZDVAcET1kuIU$>C^4UD`=>}Gef|F}A6oCTlll3!^X`abv l(ZFbgtFKhwr2H@QG23joM48qfd$ delta 733 zcmZWlyGjF55WRC_cFpD~NhD|_g&>M)f(u*3LO;MlSS-b@g0G;Bl@J0J0TF~Lw)F$F z6h%QT?feBl!9q~9xXyj8iB5KzIgfd4ZadkXcRcmj}#T0E-d#zu1Tm-zeJ#}um-S2V)QkY@JV4E<_gZ$CeZV& z$Z(TqGhCA(FRBreDp;ic25OTU87VbVGDr2b_~I1C;@1I8s|p*PG%g-^DE9J}aPWJ3 zG654z2$Ae&gyQpgsN!QMgGb8+eCcNKYRBb5;OcHUFAc`7m`YAEx__v3!*a$?O*-tR zKf0W1!p{12s_{z2uhgtdmDI4+uE?)&(+U%$qqzeD-*Qu?YLzOu#T`Q9@!UO>aHZ|x M6VKc{_u*ve2XoAs;{X5v diff --git a/!TheEsc/Tiles,ff9 b/!TheEsc/Tiles,ff9 index 2005059742650538f84166626a43a61cf969865a..0ef2d0e2adde07fc7cc6a492a5e8cfb666e5bf55 100644 GIT binary patch literal 94092 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 T$y4hIQ@IeSPqT&W`s)7y1{+DR delta 7528 zcmeHMTWnNC7(TPN?v1u|+wQKkyIZ=nU~gL}iqXUpFfpjqrka3Fwp=tpqbSiPJ~S#R zs39#-{>0;h;sQRdcpE+~>nR9kJ_O*ZPia)$r)3j>(duloy?$f)UVD)gUFLmpUlLIMFHcS21!pVV5 zbv8R_D{y?ErP2-}v^r{q5V$jJ0_e5}rHf8yKsadTd}N}r7CXi2<6D2jw{Vt=Teb(h zkj?MW3oXp;(gS1p9mUMh2fm3y4_w{d3Hw;ir)fAvx1Rywr=PqHZ>zXv?@BLa^YlP1 zq=r(y!9jGQL%9I0BQz_AI)h?Kp;JB7o{;M+n=M(2rcG>YP#h^u(#cuba?WJkILW$m zg5@0F6X?bcy_oyQo|{+GBKnCIw$2-gaHFdN5i0OwzN>;;+-{2)IOlfe+o%rF1q<95 zXsxpF9P7@vR&iEbs4cc@jyc*9t9LiB<`^0>pfvEIr#+emO@TTz8*yyCeob2o{hM2- zH+=5#{M`!~uDtvZ>Um$=x(T0ueK9rkA#LTwheuN$$RDiL3%glR zFYIJd_+d1|JvbZ+!1;r#F`+|np&|j1@G>}mAna&*EYE5@9Uc0KJWDjnoj}vJJBw(N z42mY0iv6$03|%rnAcyKC0h)=?Mh*JRWVQY#UB-#e< zLr_3Q%f^ll#~7tX>Jrt?CVKc@CiB>fk6Q2E!D1ql{rt(pwF5CTb)C8ENF~Y=EF$k6 zoSA>vqKvb!E}UXrInElXOX(T&%O1$9^O}jfM6M?A(@4%_sifvmc4mDaNLF%kPdDUT zYjWkRm2+`vwdrn;7DInoxmLunCMIY>%LI%7lo$HjOEy$+i@c>TTuno z!GPL_gK&Q+3e|4}kO_z7%EaAs|I@5p?YH{IU91((2P))dI~|A{p(^O}gm1t%Mze@j z!dIgq76KNm$G1VP*lMSDu@!n|2lFFT9S~b3+!#&D;iw%Knhvg6#>XrPs|#AbtOGKfDv@t1}wGEE4!5O!D*PS}W41`B};tUY07rs&eR z{twe4=1)h>%O9DO#_}NatkpKUchg_e&Hq8vQ$pj9JgDC{gSeCexawsQ9lC-Pmp^cO zTLU&T%p9{27^x@VdIJ*`MiNHx%J}7bV4{cr%%LL=PpJeOZ?3ghUfik>?UuElZ(WFV znHK%J>(<|GVR!rKw^L8CfA23IiU^x-=Ir5ww~kRvaec;A7soCiOzZuRencl#WcdD#Ei9f-w{4Vrw4S+(@=vFMZs(4sPUdp`cK!q!0bMtfa^WL%|nkMf#Vwmxnk1_PZK+Zsv$bK7$gU!d3?+d8Fgy>P4JfK=KzS$~mzw9H3qCx|^KdCBeCKY z(q$>7(t-2F4ZH~O}O+ZI>ewz zmiNdzEG@uSd85OaIbgakdg5Ip@SNCuSBIbj-<9jvsS! zYioa8qtEA#SWxb%R_m%azvZB>e(W|VNlyw@dAl=aE!s&uu$gpkV z_I{2?RZiaC?SAvuSFvr@1c1eFn(*1jX7W*1^y&R=?B4Z-Q>O|AKEGB8sDkH$&CJe8|&~Pp3&3oEa%B&^!|3%rN0(Or%=$(#@Sj{(7%nd Sbyy`6yn2LJGy4-P;{6q!(PHTU diff --git a/!TheEsc/c/CTheEscape b/!TheEsc/c/CTheEscape index 705dcb0..106697f 100644 --- a/!TheEsc/c/CTheEscape +++ b/!TheEsc/c/CTheEscape @@ -5,8 +5,8 @@ #include "Sound.h" #include "Graphics.h" -//#define SKIP_INTRO -//#define SKIP_MISSION1 +#define SKIP_INTRO +#define SKIP_MISSION1 //#define SKIP_MISSION2 // SWI Registers diff --git a/!TheEsc/c/Graphics b/!TheEsc/c/Graphics index 7ab57e7..1518a54 100644 --- a/!TheEsc/c/Graphics +++ b/!TheEsc/c/Graphics @@ -198,6 +198,8 @@ void draw_spritetext(char* text, int x, int y) currentx += 20 + 4; break; case ' ': + case '(': + case ')': currentx += 8 + 4; break; case '=': @@ -205,6 +207,7 @@ void draw_spritetext(char* text, int x, int y) break; case '{': case '}': + case ']': currentx += 26; break; case '~': diff --git a/!TheEsc/c/MapEdit b/!TheEsc/c/MapEdit index c6a5d85..2260339 100644 --- a/!TheEsc/c/MapEdit +++ b/!TheEsc/c/MapEdit @@ -15,7 +15,8 @@ extern int screen; #define TILESX 10 #define TILESY 10 -#define SMARTTILES 100 +#define SMARTTILES 200 +#define AREAS 20 // SWI Registers _kernel_swi_regs inreg; @@ -30,9 +31,10 @@ int tick = 0; int lasttick = 0; extern int screen; int clipboard = 0; +int clipboard_tileid = 0; extern void screen_nobuffer(); - - +unsigned int editsmart = 0; +int selectedsmart = -1; // map[0] is the 'master', [1] and [2] represents what is currently // believed to be displayed in the corresponding (+1) screen buffer // and we run a compare to see if re-drawing is needed. 0xFF is used @@ -69,6 +71,19 @@ struct SmartTile_s { struct SmartTile_s SmartTiles[SMARTTILES]; +struct Area_s { + unsigned char name[16]; +}; + +struct Area_s Areas[AREAS]; + +#define ACTION_SIZE 16 + +char actionnames[][ACTION_SIZE] = +{ "TileSet", + "AreaChange" +}; + void game2_loadsmarttiles(char* filename) { int length; @@ -99,6 +114,36 @@ void game2_loadsmarttiles(char* filename) } +void game2_loadareanames(char* filename) +{ + int length; + + // Attempt to get file info + inreg.r[0] = 5; + inreg.r[1] = (int) filename; + _kernel_swi(OS_File,&inreg,&outreg); + + // Length will be in R4 if it exists + length = outreg.r[4]; + + if(length > sizeof(Areas)) + { + screen_nobuffer(); + while (1) + printf("Areas exceeds %d bytes (%d bytes) object type is %d\n",sizeof(Areas),length,outreg.r[0]); + //exit(0); + } + + // Attempt to get file info + inreg.r[0] = 16; + inreg.r[1] = (int) filename; + inreg.r[2] = (int) Areas; + inreg.r[3] = 0; + + _kernel_swi(OS_File,&inreg,&outreg); + +} + void game2_savesmarttiles(char* filename) { // Attempt to get file info @@ -109,7 +154,22 @@ void game2_savesmarttiles(char* filename) inreg.r[5] = (int) SmartTiles + (sizeof(SmartTiles)); _kernel_swi(OS_File,&inreg,&outreg); - +} + + +void game2_getnewsmarttile() +{ + int i; + for(i = 0; i < SMARTTILES; i++) + { + if(SmartTiles[i].Tile == -1) + { + SmartTiles[i].Tile = TilePlayer.rawtile; + SmartTiles[i].Action = 0; + SmartTiles[i].ActionValue = 0; + return; + } + } } void game2_loadmap(char* filename) @@ -138,7 +198,6 @@ void game2_loadmap(char* filename) inreg.r[3] = 0; _kernel_swi(OS_File,&inreg,&outreg); - } void game2_savemap(char* filename) @@ -151,7 +210,6 @@ void game2_savemap(char* filename) inreg.r[5] = (int) fullmap + sizeof(fullmap); _kernel_swi(OS_File,&inreg,&outreg); - } void game2_fillmap(int xoffset, int yoffset) @@ -186,137 +244,255 @@ void game2_setup() game2_loadmap("m2_map"); game2_loadsmarttiles("m2_smart"); + game2_loadareanames("m2_areas"); game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } void game2_tick_input() { int x,y; - // Up arrow - if(input_readkey(57)) + int oldselectedsmart; + oldselectedsmart = selectedsmart; + if(editsmart == 1) { - if(tick > readmodkey) + // Right arrow + if(input_readkey(121)) { - TilePlayer.location.Y += 100; - if(TilePlayer.location.Y > (950)) + if(tick > readmodkey) { - TilePlayer.location.Y = 50; - TilePlayer.mapoffset.Y += 10; + SmartTiles[selectedsmart].Action++; + if(SmartTiles[selectedsmart].Action > 1) + SmartTiles[selectedsmart].Action = 1; + readmodkey = tick + 20; } - readmodkey = tick + 10; } - } - // Down arrow - if(input_readkey(41)) - { - if(tick > readmodkey) + // Left arrow + if(input_readkey(25)) { - TilePlayer.location.Y -= 100; - if(TilePlayer.location.Y < (10)) + if(tick > readmodkey) { - if(TilePlayer.mapoffset.Y > 0) + SmartTiles[selectedsmart].Action--; + // Looks weird, but unsigned so -1 is 255 + if(SmartTiles[selectedsmart].Action > 1) + SmartTiles[selectedsmart].Action = 0; + readmodkey = tick + 20; + } + } + + // Up arrow + if(input_readkey(57)) + { + if(tick > readmodkey) + { + selectedsmart--; + while(SmartTiles[selectedsmart].Tile != SmartTiles[oldselectedsmart].Tile) { - TilePlayer.location.Y = 950; - TilePlayer.mapoffset.Y -= 10; - }else{ - TilePlayer.location.Y += 100; + if(selectedsmart > 0) + selectedsmart--; + else + selectedsmart = oldselectedsmart; } + readmodkey = tick + 20; } - readmodkey = tick + 10; } - } - - // Right arrow - if(input_readkey(121)) - { - if(tick > readmodkey) - { - TilePlayer.location.X += 100; - if(TilePlayer.location.X > (950)) - { - TilePlayer.location.X = 50; - TilePlayer.mapoffset.X += 10; - } - readmodkey = tick + 10; - } - } - // Left arrow - if(input_readkey(25)) - { - if(tick > readmodkey) + // Down arrow + if(input_readkey(41)) { - TilePlayer.location.X -= 100; - if(TilePlayer.location.X < (10)) + if(tick > readmodkey) { - if(TilePlayer.mapoffset.X > 0) + selectedsmart++; + while(SmartTiles[selectedsmart].Tile != SmartTiles[oldselectedsmart].Tile) { - TilePlayer.location.X = 950; - TilePlayer.mapoffset.X -= 10; - }else{ - TilePlayer.location.X += 100; + if(selectedsmart < SMARTTILES) + selectedsmart++; + else + selectedsmart = oldselectedsmart; } + readmodkey = tick + 20; } - readmodkey = tick + 10; } - } - // Right Pointy - if(input_readkey(103)) - { - if(tick > readmodkey) + // > - next tile + if(input_readkey(103)) { - fullmap[TilePlayer.rawtile] = fullmap[TilePlayer.rawtile] + 1; - readmodkey = tick + 10; + if(tick > readmodkey) + { + if(SmartTiles[selectedsmart].Action == 0) + SmartTiles[selectedsmart].ActionValue++; + readmodkey = tick + 10; + } } - } - // Left Pointy - if(input_readkey(102)) - { - if(tick > readmodkey) + // < - previous tile + if(input_readkey(102)) { - fullmap[TilePlayer.rawtile] = fullmap[TilePlayer.rawtile] - 1; - readmodkey = tick + 10; + if(tick > readmodkey) + { + if(SmartTiles[selectedsmart].Action == 0) + SmartTiles[selectedsmart].ActionValue--; + readmodkey = tick + 10; + } } - } - // C - if(input_readkey(82)) - { - if(tick > readmodkey) + // C - Create smart tile + if(input_readkey(82)) { - clipboard = fullmap[TilePlayer.rawtile]; - readmodkey = tick + 10; + if(tick > readmodkey) + { + game2_getnewsmarttile(); + readmodkey = tick + 10; + } } - } - // p - if(input_readkey(55)) - { - if(tick > readmodkey) + // P - Set Target + if(input_readkey(55)) { - fullmap[TilePlayer.rawtile] = clipboard; - readmodkey = tick + 10; + if(tick > readmodkey) + { + if(SmartTiles[selectedsmart].Action == 0) + SmartTiles[selectedsmart].ActionTarget = clipboard_tileid; + readmodkey = tick + 10; + } + } + }else{ + // Right arrow + if(input_readkey(121)) + { + if(tick > readmodkey) + { + TilePlayer.location.X += 100; + if(TilePlayer.location.X > (950)) + { + TilePlayer.location.X = 50; + TilePlayer.mapoffset.X += 10; + } + readmodkey = tick + 10; + } + } + + // Left arrow + if(input_readkey(25)) + { + if(tick > readmodkey) + { + TilePlayer.location.X -= 100; + if(TilePlayer.location.X < (10)) + { + if(TilePlayer.mapoffset.X > 0) + { + TilePlayer.location.X = 950; + TilePlayer.mapoffset.X -= 10; + }else{ + TilePlayer.location.X += 100; + } + } + readmodkey = tick + 10; + } + } + + // Up arrow + if(input_readkey(57)) + { + if(tick > readmodkey) + { + TilePlayer.location.Y += 100; + if(TilePlayer.location.Y > (950)) + { + TilePlayer.location.Y = 50; + TilePlayer.mapoffset.Y += 10; + } + readmodkey = tick + 10; + } + } + + // Down arrow + if(input_readkey(41)) + { + if(tick > readmodkey) + { + TilePlayer.location.Y -= 100; + if(TilePlayer.location.Y < (10)) + { + if(TilePlayer.mapoffset.Y > 0) + { + TilePlayer.location.Y = 950; + TilePlayer.mapoffset.Y -= 10; + }else{ + TilePlayer.location.Y += 100; + } + } + readmodkey = tick + 10; + } + } + + // > - next tile + if(input_readkey(103)) + { + if(tick > readmodkey) + { + fullmap[TilePlayer.rawtile] = fullmap[TilePlayer.rawtile] + 1; + readmodkey = tick + 10; + } + } + + // < - previous tile + if(input_readkey(102)) + { + if(tick > readmodkey) + { + fullmap[TilePlayer.rawtile] = fullmap[TilePlayer.rawtile] - 1; + readmodkey = tick + 10; + } + } + + // C - Copy tile + if(input_readkey(82)) + { + if(tick > readmodkey) + { + clipboard = fullmap[TilePlayer.rawtile]; + clipboard_tileid = TilePlayer.rawtile; + readmodkey = tick + 10; + } + } + + // P - Paste tile + if(input_readkey(55)) + { + if(tick > readmodkey) + { + fullmap[TilePlayer.rawtile] = clipboard; + readmodkey = tick + 10; + } } } - // S + // S - Save if(input_readkey(81)) { game2_savemap("m2_map"); game2_savesmarttiles("m2_smart"); } - // H + // H - Toggle 'hard' on a tile if(input_readkey(84)) { if(tick > readmodkey) { fullmap[TilePlayer.rawtile] = fullmap[TilePlayer.rawtile] ^ 128; readmodkey = tick + 10; + } + } + // T - Toggle Smart Tile (trigger) editor + if(input_readkey(35)) + { + if(tick > readmodkey) + { + editsmart = !editsmart; + readmodkey = tick + 50; } } } @@ -327,6 +503,7 @@ int game2_tick() int y; int i; int udt = 0; + int smarty = 0; lasttick = tick; tick = clock(); @@ -364,9 +541,9 @@ int game2_tick() TilePlayer.localtile.X = x; TilePlayer.localtile.Y = y; if(screen) - draw_sprite("select1",x*100,y*100); - else - draw_sprite("select2",x*100,y*100); + draw_sprite("select1",x*100,y*100); + else + draw_sprite("select2",x*100,y*100); } @@ -377,11 +554,63 @@ int game2_tick() TilePlayer.rawtile = (TilePlayer.mapoffset.Y) + TilePlayer.localtile.Y + (TilePlayer.mapoffset.X * 100) + (TilePlayer.localtile.X * 100); - for(i = 0; i < SMARTTILES; i++) + if(editsmart == 1) { - if(SmartTiles[i].Tile == TilePlayer.rawtile) + // If our selected smart tile isn't one we're stood on then reset + if(SmartTiles[selectedsmart].Tile != TilePlayer.rawtile) + selectedsmart = -1; + + for(i = 0; i < SMARTTILES; i++) { - draw_sprite("smart",TilePlayer.localtile.X*100,TilePlayer.localtile.Y*100); + if(SmartTiles[i].Tile == TilePlayer.rawtile) + { + // If we dont have a selected one, then use the first one we hit + if(selectedsmart == -1) + selectedsmart = i; + + draw_sprite("smart",TilePlayer.localtile.X*100,TilePlayer.localtile.Y*100); + + smarty++; + + if(selectedsmart == i) + { + sprintf(textbuffer,"} %i",SmartTiles[i].ActionTarget); + draw_spritetext(textbuffer, 150, 1000 - (smarty*120)); + } + else + { + sprintf(textbuffer,"] %i",SmartTiles[i].ActionTarget); + draw_spritetext(textbuffer, 150, 1000 - (smarty*120)); + } + + sprintf(textbuffer,"%s",actionnames[SmartTiles[i].Action]); + draw_spritetext(textbuffer, 300, 1000 - (smarty*120)); + + if(SmartTiles[i].Action == 0) + { + sprintf(tilenamebuffer,"%i",SmartTiles[i].ActionValue); + draw_tile(tilenamebuffer,600,1000 - (smarty*120) - 25); + }else if(SmartTiles[i].Action == 1) + { + sprintf(textbuffer,"%s",Areas[SmartTiles[i].ActionValue].name); + draw_spritetext(textbuffer,600,1000 - (smarty*120)); + } + } + } + + // If no smart tiles then say + if(smarty == 0) + { + smarty++; + sprintf(textbuffer,"No Smart Tiles"); + draw_spritetext(textbuffer, 150, 1000 - (smarty*120)); + } + }else{ + // Just a simple highlight if we've not got the smart edit being shown + for(i = 0; i < SMARTTILES; i++) + { + if(SmartTiles[i].Tile == TilePlayer.rawtile) + draw_sprite("smart",TilePlayer.localtile.X*100,TilePlayer.localtile.Y*100); } } @@ -421,7 +650,8 @@ int game2_tick() sprintf(tilenamebuffer,"%i",clipboard); draw_tile(tilenamebuffer,x,y); draw_sprite("select1",x,y); - + sprintf(tilenamebuffer,"%i",clipboard_tileid); + draw_spritetext(tilenamebuffer, x+10, y+30); draw_spritetext("Clipboard", x-174, y+30); diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index e97e6fe..426665e 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -12,7 +12,7 @@ extern _kernel_swi_regs outreg; #define TILESX 10 #define TILESY 10 -#define SMARTTILES 100 +#define SMARTTILES 200 #define AREAS 20 // map[0] is the 'master', [1] and [2] represents what is currently @@ -117,6 +117,36 @@ void game2_loadsmarttiles(char* filename) } +void game2_loadareanames(char* filename) +{ + int length; + + // Attempt to get file info + inreg.r[0] = 5; + inreg.r[1] = (int) filename; + _kernel_swi(OS_File,&inreg,&outreg); + + // Length will be in R4 if it exists + length = outreg.r[4]; + + if(length > sizeof(Areas)) + { + screen_nobuffer(); + while (1) + printf("Areas exceeds %d bytes (%d bytes) object type is %d\n",sizeof(Areas),length,outreg.r[0]); + //exit(0); + } + + // Attempt to get file info + inreg.r[0] = 16; + inreg.r[1] = (int) filename; + inreg.r[2] = (int) Areas; + inreg.r[3] = 0; + + _kernel_swi(OS_File,&inreg,&outreg); + +} + void game2_loadmap(char* filename) { int length,i; @@ -246,16 +276,7 @@ void game2_setup() game2_loadmap("m2_map"); game2_loadsmarttiles("m2_smart"); - sprintf(areaname,"null"); - sprintf(Areas[0].name,"corridor"); - sprintf(Areas[1].name,"shuttle bay"); - sprintf(Areas[2].name,"briefing room"); - sprintf(Areas[3].name,"cargo bay"); - sprintf(Areas[4].name,"arboretum"); - sprintf(Areas[5].name,"torpedo room 1"); - sprintf(Areas[6].name,"torpedo room 2"); - sprintf(Areas[7].name,"sensor control"); - game2_saveareanames("m2_areas"); + game2_loadareanames("m2_areas"); game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } diff --git a/!TheEsc/m2_map,ffd b/!TheEsc/m2_map,ffd index 31e88e0c3e88ed4dd0689b09591832639d4765a0..bf05f73a48c2cce618afb0196770b4ae4b54531f 100644 GIT binary patch literal 10000 zcmeH}OHaZ;5XT`|KZc2T0F5RJ_ZA;ttO<$lH(kX?yr`EZZ~@<6&YA7*b}S?uc6uP0 z31v%3=EwYJ|Fa~05(9HTNa&+lcxYuKgY~J7k?PonQuQ<(QPb+>^6dDa34|dszTT0s zvJ0^jGckJV_3HfO5Q`ZhxyJ;DC~Le_39WKj$y&@kzJg^L=HsLO?|f%)hXVHPuph zK`d|`iLthQ)7A8Yp56V57`oHh8d}R4pPTv4ymx^yat!pjneT)FBP7#W-#y(9|K?oBX1GpXJNR8k0}F^+u&eK z`8+?(^b literal 10000 zcmeH|%T5A85Je$rHzp?jfLqX&!UxR8A2T8G5sgNn6>(w$>PCeP_;xblmsz)Z21s1E zsdja5m|-%DKGf+hDs7h;^xNIE9qz@uZp9?t6}gx1j;~5OJ}J^MK~%iEIXODmt${Rr z@YUBRFs8^?V#H{<+trojJuPPR=&NtfVB}ezW#4v;yVK*t{klTLRbXU@AwySpuGo+F zm#`n(S#Hk&>g;;H=dl=W4U7*xSC+1pilC0qi@?A$Vs@^=a$(J#b4hR3Gf^1npfA0C zCDjO1y3wWwTMK1qpNC%m2Sx!lt7F5}94-mYuGZm_1Ro>DY=8Bq%h`?1z}bz>!1_@b z>#pu_Nun`yBf>2bLpvMYjr8KUO3QJslROT?H=CQoQdcBbV2nxzdQfMGaSt{cTP4Ej z{J;z`X3PQdg!Lmc(C3$!Q^s{nCSxsSEQz(}Glo3O8Ns0S|L%B^A-WJF#_v8~c+<0) wwOoY;Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xy9)HKchh3U;qFB diff --git a/!TheEsc/m2_smart,ffd b/!TheEsc/m2_smart,ffd index 75b67997452ec8dffd22f9ddf547b6ce6fd1629a..534b554cccc5596fccbffb31495375d20275cb51 100644 GIT binary patch literal 2400 zcmeIw*$u)l5CqUofHF`xJ`+I`Py+})xe5V6QCyz{D9Y?OjF=XX94Ya`TCXNc>fG$< zw-wDwzhr++cg-VQgjwhFl~zFN_UTUx>u! ggRxl{7>bbC|A7Ev0|Ub-8xj(u;V>EwBRLHK03rxr82|tP