From bdb2012531c2f73bc4742d7652e27752113362b8 Mon Sep 17 00:00:00 2001 From: oc Date: Fri, 8 Feb 2019 18:32:06 +0800 Subject: [PATCH 01/16] Update tools --- 常用工具/RM动画导出器.exe | Bin 37888 -> 38400 bytes 常用工具/便捷PS工具.exe | Bin 27136 -> 26624 bytes 常用工具/怪物数据导出器.exe | Bin 29696 -> 29696 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/常用工具/RM动画导出器.exe b/常用工具/RM动画导出器.exe index fb3a8f75258eb1370abb5c46d0cb41c0f432bb33..b894a78613b75d0e4089f1b3f5252690b432cf17 100644 GIT binary patch delta 9093 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 delta 8797 zcmai43w#vS)ju=4JG-+xyUFe(`^alIM9h$cB#6945j2)T&^$Hfk%uT8l~ypAW>MNKsp~!gtP{*`3|M_xqOLo_o&! zoO{l>=ia&Z?u4eDeA5nobIX9A){mGE=BE#M&ck^C)+69Dz}}Abr?2&G>;RZfz&?N_ zj`m_%>I0BazGeqNfqrsBg+7NXb$`4Lp%{MG>+894ZlnHNu9VxN_i_V@_n`;+Ou{b@ z4j6e2cEqm@<%W6q z8z&OBhKxisay4R6?dn>TWpQK<`U!|i3rY6)I{j#13=Y3UE>3JfD87+!m*3@gs;$T( zBQ(0HdrI=46wP)uIyT6w2~I6tyCru--My#?)hp##Mdd!^)5<+c zz(S^#TDJ3zMK~bs4fO4|E59JeKqd0BGHcO>vIPueqc#?LWX9$-xJodY?QDk z;cV2iD^*eZ*yw%B2iNc9_T!B|}M#*!Gx z*vBaHD8_ChcC^KgvDiy2b}VC=hf5i|ow|*)&>F@*j`7_q=~3q6Pml#Y>E@U(x7Z05 zTgzBhiSdm6C3T~X%It=_Ag)rXo%$rI_(mFm$xcqYLZ3gY~A$ ztGL0USsF@{pmyjd!*b&3lujFjv#ui397ppPtHT?f2Vlm z*JOtYV>Hr5qG~)!kP(C+ZI~5=<2B+Q4Ofc`NED==fQ4rwuHyG_O*KIT2A zP6TULSi>N>e~1w@{z5Yb>yQ?M?SjUZM*FzAr4bsj6cjsIPW530|n@xQnDV0u>MEvUYb(rOE=3=Q3jNnO$Z zk*;C3TYs!5HxW|zF>^Y|v^cripOT~H>dQ=^qfJ|3DM=2ie@N+~H<*TW@M#IlkmRHx z@hL+(7PYkwNF?JCkhCN|I>K~GN0rim+m8AQi^q;GWB$gW%A7w!`_CU?TB}tZlKanJ zVpqy(astV#vKV3YRi-03Ieo+jGp2(O?ExzY$^C;EF<4*qk13x)^)-M*^3*j(Gzoi~ zBdQ_RK+g9lH#01 z+CfjMWN|6!=uOdS=_{Hrt;;GQ$uT^2Aex(gN)Vhpf@ze|lIYBIH-u@gnr`M}U769O zXm+|2!qS~+hp2_U zgy7_c#JZfc!jc@#Ry$b$y5K3@$eNcQlB04AHv>o?>jbz4;|>&3#|7D)CoaLs&6ap= zD0MN0%Umbp(wyVKrj{fJMu4`!3PAFC0uY=$_E;Cy3P5sdV6=Sj;#HbH3c|FftQgED z(eLI(U~&2Kc_lIFVDP>l4I>8TAAk_$FHMzX|qp2Y%4tpx24yOV9nu7g=1zdWR|h$2#$(oNY*DpeT>;>N^|xH;5(NZ zBsI11x9E3>a)8naDLvH0R$+Z&Gm)^-CE-M)TU5_#Vx}RkLbPvn`@L4AS$B#pQo5mMZ{z{Ej zg=JIN&zX?&4nxMI3W?KLM$`B=#FckR$$lOM)xR^IhMVN6I7yxk1N9Iyp&}+>A{v?#o~QI7BPd6ZdIG$V zr~D6cOk^59{t?P6XHaDC$j#^>V0VdmbIEK$njOAxAQ!U3@2I%RZ#Uh{#rU$|w-*^+ zndtP}qmmT`Un=3FpC*ea=a{m-zqBy$G5Qrl^Z(XY=BH`d6iuGcpDc{{)S^ zLD@c1#^o1qpi?8q^b{RNibBBYck~};{8RllC78$@yx-_8d;IP+dwhlBHV4Fp?De}d z2INCIeLz_#CkKRC2G8(vHbUXFG5b+2K-o^E*PVk3M;}E?KaN@!{i0tOHxUPpt>1+?S8v++$U$wo)tuuM-3I{M}vy0Gm69B|9OH^`S5^EaGg^Z5yz(Q9CQiS zrym=%h?}F&D9iEOjLY_bgm1ExW4c;aSwe+z3kSRmL7v`yxtEdXacb*m)qk$Q$Kfg{0nVsq4<8K4z(BCDmc0H@-re4&b$G z5f^5T%bYS_R9>w#V+5Plif>7c_h5`IP>xd$ww2S+O|OU#z=QgW<#}AaeyBWJT8=K5 zneq@?VX9Z7m7si%f;x^;?alV!yDdFh5y2j#DoQKAKvmTY^fwbNwOicyN~@9BQ2j=Y zy|>EnqqkLz9#W6ETx|m^Bn0rO)ZX&`KfO*@+kax~!S)ok61HFK zO@n80-{=Pik3s6Itd4$*8hlRvX5l6Q2wR&R!$uCZ}jR^8<56NBasA`@*TG7_efmoe~@~$ zHCgxySNQ>XWgZgQ?o!WyKCfyBe->ZhR}CuQIeeWP)Apd<0XexqRU4vlyZ(07P|tr* zvuZX@o9fX0)rBMY?39c~Zef{#6)wwLg;QrQyEeWEmxAI%%`&Vc-^9=&UU79Tte!56 z{U8ibvI_si5W&AoV`id;)X96)pChn&*%xHH^M+nG62(q*f#;Qf}~!>=q^T&FzN`A(;11r8W??|k#!a89o$2zX$s^EE3YH-ZrhQPOo-TAp|ENsP}698-ANtDKcgx5ckUUGirs)hRvDIDgv zz(lxUvZ3?1Dp0zcNzEX;w!mfZv8fBYJmO_=+>|bK<)E~z>vYY%Tw>>y)crnK; z0N@Tx(o)wQ;u_dI#gOiBHHj_Yn`%gRyVi>9VHA_ruq4``mPxBkX$q5c*KyYaVjFBQ zB@iD$X^SaI;^Qc7H9G39u-GAPf>%sslu5^#bf4==aX;!r+@i4tEW{=_#dPiA=ObOy zCR{Bj+xX`KvtcR!dZ5EI5sb>TW#xIMFn&Mu1ZHwQ+~I)!-sA$?r-8rfrzb~iJ9v-$ zxu=sS^96jFTqy13zRE6^w(*zBb?9t{JcuDxj1HHU^4H0iNPGF4xOVeSlfH~f(M9F`(0xRC1xZ`MoFC`{s2sT+m|Tclb{w81mkwkVi*Lz-;c7(6KX z;gR5-NM8sZLfV7f{BSDRCoN`U@=PHso24m!CoKO4HaUxzqvC)buGcqKNW642yU5U=M>$xXZ&n&9o`dP8om zoBKL+m3Jv$9G-`^r~GyB07keIwTr{+y`8p=;mt_z4d3Ujg-63rAbpb2JxKT3UJLK= zp2o<#5cm3?@h*nNfj7PTS&rSdPs8te+qrMThY|TMd=xGD$Z>Cv?Mw|m@nm||dk9Ul zeMeXa5w45O_RWExMXvK5!BiWNu8u76okVS;kF&oO`M_7qh9m07rVLD6UNG_x{s+v+s6&;k3QtZqFXi%bwRg@9U-0 zR}Z8EkUmE|C-5p|eCWs&@Z5b4TjB@mA5AaCQ?ko9V|Sn{)X?GV+JDo9ye{7QL|*=U zsKkHsp%#|I4LGGL@^!e8&hPrwt%JPiv#;d9l(L35YuCLy{@ZVUvh1C%kMG>>aR^RZ zz@>Mrc``A_SLmZppm{+dvMwSH;C;RVM+^eZw+bbVB;T1g1>pG(X3#q=4NJh z4+({VS%zwz(X<*(yV2ZhG!HQQhsj}KfiQr1+-9gcjAob7bW#&&{*C_C+WFjmeQHbS z;#VC`L>356p7M22^c`VTUi9H5| z4hL|)LWksZ1R{Z9f#xInnU+PdZ=7g^j=!;E6dWX9;0r8A_XURgAN0G|U2o?CcX3@u z*R8}u7?S_#gRU?II8{sVmBEtr09V&dtScD$#q4)p7%_g&wFhs!h#&v@1zqhM(CwZM lv^76}AwJe#9OUhk~m1lL~e{9k=KW$AnOr7XL)R^xX3bdr>KH{-=1u!NlQ%7HuR65Ju{SC`ZI;SXu-@K?0LScmUd(N2Uj7z_q#C^8%* z&E>NP77^tBCrdmbr&%4ULw30WIkac0L%bsAl{zmb=Y~U+@&9QT!BwC-3!pZYdePBM z=id?FE*^E5KjX$)En}^)Szo%Xp0N()H<8siP(ghI9okAZ>nm9vTZ!AEwc4&F4o7>G zTU;F@{eMS@h;5FAx9dIQC^pV$!E42=BV;_Mt5KV?9*v)Bx*^)O;7!IXBE!9srHK37 z!Nd&+g99Vf7)Lzf_2d+B+&!My_g|w|H*QVNWIM%pa*)l4pCym5H$`bmG5!ukZ%QLx zK{1n3gf~!JBD#g5&{IS`Iy?<*fjI2Z<9_QYV>!a?EoYlVjkk+EAP#s-*qHdWH^lY| zo?5~tMMY|e9Twk6EoV`2Fg1kNx%eQp48P#QoL0etVrg1As}kX~yV;O9mDbB179aV% zVp+P6Ds-o76`o8Fv1i1Y^m6usxS5`he~?6uuNbdOqS@DipGsoJSFCaaO}tf~xR4&X zuvVs>S)*(G*O)U%&Varh?!bO6CcG%RD)SmMH<9Cz(H-sb}<_j zv)L20nEo6ei$wS4EJ8Ldev!8d&lyBwU*Nc-kvRR6r~sZS(;`np37>{SI94_qORVI> zun-=NPxx|zM%l|X-y_Ki)2KqHJy0lxi4Md`+nHjxpi``9DSRIHX*J8>!ks`z1lCAz z5Xp5KO~5+o4ADeAX#FRkS$YR5;FNZ2;tea|tWINk`%0MANysOp%TNhU`X2=l@_W*s zi9B(-C|x7Uj?*>iW2l0=befP84Kk~OKAmDCRY4O`)L(TTM>$4dWrBhiSe=}NSC}^P z71o*H#jCo0l}#r2u@-Kc7vc~cNm!2zwU`U!ZKUC@By{39$wn~ae8M!SPBa zS%zsP`Ih4>gDekX26kIUsoHkSBczw`VFzS@!uDY)$=6sZK5m&3<4dxf$8ZBByh@>$ zET>5R)$*1&xg+%B{tu*I3unU|+XZ@FCFbLoj5Wh96V>7Rr6hS}pd~WQ|ty zSIBZF#oLv2TpPZbN8r4*leRBKsU|(2wnz=+?Uma20rhR+UY0f5g87hT?30SX z32BBRdco(A+zVqQt073z0w0jqtJ{OREY~ADppLv_@GX)}y1h=9{ji-ZBhV)`=#}T7 z5nFH$<_%x*Ik;tLLC!P_XY+>eVrhzN&?7xd4jGJa$gqX&WDz#UYH<)F_#D1~@8J7* z3IBl)^QZYievr7#&@VJr$xi_($)=k79N@6P@1|9$`C z{O8=qo^@x)x=+Y2UKs0LG;s;Uj!Qs^g;)TZQ7}fuk9+zLF0`%f0eD0T>i`_Oe!m*G z8z2t(v}XX4#K6)VQBN|=pDaZw70+g|nPih?;%$;aej+ZCvFU?YK^`@DQqaL5mU|@^ zfFKV5=xeF~T1{AKd}KC#lF~_vIHo*C{w`8=A#3pgjB=^Q;;ncUOLX-MoTkh)0CVbn z6oP(aSi_v_L1U~m>}dFNScEqDv@%a7w_qhQj12-5uR4L6sN&HRs zMlaWM-Q<_BEE+%S1P+Tl|GE5j!d+`cK96EVRZe9EO-vzuJ1EqjKETe+=6kJC`? zPWul!8;?xu%#ViFnFkH6GrN|QS&X$h6wKr{?8n9vY|$PI-{e*ltlS!HuyBW1tFJLI zf_-EYaY~=l>xg>1jVh1kpyhO_YW8B68lPRm9Y(JDQX71!oY#9A7xQ@9tpiXRq8IMe zM9!U0kHH?e%6S8i=gtO>lBc6oYVp`XJdgJlM!1Tm%2jXSUhe29L#I)!HrOY+zIatG zPYBzJmfcc<_cUCOJhL35!YydId=72R(v2Mtq2^Lu;)o&HI);xix?Gv#n1 z*F{fyxLr>1|I#jkYdm+22dGTK!SHCp^Ed|1f=*OxYkxCO-2_pjk{<66$D>iNy&Mu*$}SS~63dP0-?~w~#z4Lf#p>K_UPT=9ilZb zj_eg%0#k7n&IIzvJ1?hg$6j`%`N(kOowSLRToAX?tEovZiZjY0Kg)R2l5{_@d3q; znsly5mI8}oY!BUtA4X4J)Hg`C!dN&SV}HQNG$_rF`u;(;LpnShV>i*432S5Q-^j*8 zYfwi15%Spp%y^@#Af(gvt)OtNZ-#rHX@m^G8&nqgpsX`F}X5%a7bg( zq6Kg|=94uG;m}l>*AFw46UaW-*mihC`4h4yrh^=RJ1kT_h9cNDU4}*nEQVJ#wq6^) z81`#S7>_BJpct;j*g542vVXL$A|<|r}IWNQxU>DD?JfS@&qcDZ#vPVC3lV%7;# z?}Se4035*h<(RwKS|L6x3-ng7cTuUrc!zBslap^?{qU)^8J91?R)KaF;xNWEv$J%L ztrc;Nt(|e$WXnO^X~U&~H#8i!tztK{`W$ZCy3tGQ73}NSh+g}1vP1g-E@;r+1<%q- zdzWY{w-6zIS|0KpVBgXc=-mZ3?1Rk2?%3bP3jalgL!#q|7%mSqe#GkO>yE#$5;*Ai zE8>ub?<4xzImdaH#V$EMM}5F}nH4Y_xyMQnyTAlR{9&by&g3=90N#;Vh(T+kQj6YJ zrJntopAprQ1HFwj3j+FfWdf++*G<5kNETurY(y-DJVXmzKyRX^XKNVLA{(I^z3ZU| zah|46)o=xLqS6iRO08CT1nOub9f3PKqKv>jT_a^gDvaFGt)8UpW|A~3d(mM8J-n`K zA!|rK86nf@D!Ppxq(k%^Jx@pIUAl?wVtd#JY?LijmPG;;zf;{4Eo;`i`1tY*FQqnp zzpy%-*Lr2vTRmrA6N7X8k@It{I){DSiP0}x-k-5!c+XJ(o?LI_n?)l;4H(?cbtj!1 ze@5-#$&st|3zgglyFrRCToS>39B%KL@!xjtylL}1^W$6fhY!x^TV8ZC{!T~FOpfr@TckhV@ISDPL7e~q diff --git a/常用工具/怪物数据导出器.exe b/常用工具/怪物数据导出器.exe index 2e6a2780561f198b6c12d3932a3db73a1393cd8a..493a5465cc1eee63b42dfc06936fbcb856551d0a 100644 GIT binary patch delta 5938 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 delta 5683 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 Jk~rEO`d<<@&Ex<8 From fdbceeea8dd0193502793494ae459f64f1908d46 Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 10 Feb 2019 12:30:05 +0800 Subject: [PATCH 02/16] ps 48x32->32x48 --- 常用工具/便捷PS工具.exe | Bin 26624 -> 26624 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/常用工具/便捷PS工具.exe b/常用工具/便捷PS工具.exe index 4f8e199670102291732548e2af51cb5579eb0a59..90959cf001b79e78b71dfae4f0346e1e62fa8caf 100644 GIT binary patch delta 114 zcmZp;z}RqsaY6@k--`H+-8_Pf(>Ko$+$hBCDId1kN5xrRR9GkdX>57mt6=?9#$;m# zBZdkFM)AoP!o)Z44&KPj2@x@2u$WvLo-c4=iEy#Vp`YG;MfT6FeoN_X{u1uN1~PiG OeVitv`R2^H>6`%ig(zbH delta 108 zcmZp;z}RqsaY6@kbX4rdZXQ9#iJNB#ZWLnnm5 Date: Wed, 13 Feb 2019 23:33:29 +0800 Subject: [PATCH 03/16] Fix x||'x' --- libs/events.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/events.js b/libs/events.js index df568954..1db37f82 100644 --- a/libs/events.js +++ b/libs/events.js @@ -376,7 +376,7 @@ events.prototype.doAction = function() { } var x=core.status.event.data.x, y=core.status.event.data.y; - var prefix = [core.status.floorId||"f", x||"x", y||"y"].join("@"); + var prefix = [core.status.floorId||"f", core.isset(x)?x:"x", core.isset(y)?y:"y"].join("@"); var current = core.status.event.data.list[0]; if (current.todo.length == 0) { // current list is empty From bcaedbe5150352065ed076cf9999192f3691e2b1 Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 17 Feb 2019 11:36:22 +0800 Subject: [PATCH 04/16] Fix criticals --- libs/enemys.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/enemys.js b/libs/enemys.js index 4e5824d7..ae152328 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -184,8 +184,8 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) { var info = this.getDamageInfo(enemy, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef, x, y, floorId); if (info == null) { - if (core.status.hero.atk<=enemy.def) { - return [[enemy.def+1-core.status.hero.atk,'?']]; + if (core.status.hero.atk<=info.def) { + return [[info.def+1-core.status.hero.atk,'?']]; } return []; } @@ -200,7 +200,7 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) { } var list = [], pre = null; - var mon_hp = info.mon_hp, hero_atk = core.status.hero.atk, mon_def = enemy.def, turn = info.turn; + var mon_hp = info.mon_hp, hero_atk = core.status.hero.atk, mon_def = info.def, turn = info.turn; if (useTurn) { // 回合数计算法 for (var t = turn-1;t>=1;t--) { From 72db865d7400b81cfbf90474ef348bb666ed01e7 Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 17 Feb 2019 23:57:28 +0800 Subject: [PATCH 05/16] Fix enemy bug --- libs/enemys.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/enemys.js b/libs/enemys.js index ae152328..d3a56e3e 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -184,8 +184,8 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) { var info = this.getDamageInfo(enemy, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef, x, y, floorId); if (info == null) { - if (core.status.hero.atk<=info.def) { - return [[info.def+1-core.status.hero.atk,'?']]; + if (core.status.hero.atk<=enemy.def) { + return [[enemy.def+1-core.status.hero.atk,'?']]; } return []; } @@ -200,7 +200,7 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) { } var list = [], pre = null; - var mon_hp = info.mon_hp, hero_atk = core.status.hero.atk, mon_def = info.def, turn = info.turn; + var mon_hp = info.mon_hp, hero_atk = core.status.hero.atk, mon_def = info.mon_def, turn = info.turn; if (useTurn) { // 回合数计算法 for (var t = turn-1;t>=1;t--) { From d9c12a6b830578b4b64878a293b176f737ebefa7 Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 01:35:02 +0800 Subject: [PATCH 06/16] route record number for items --- libs/utils.js | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/libs/utils.js b/libs/utils.js index a8751ef4..dd3f491a 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -405,6 +405,11 @@ utils.prototype.encodeRoute = function (route) { var ans=""; var lastMove = "", cnt=0; + var id2number = function (id) { + var number = core.maps.getNumberById(id); + return number==0?id:number; + } + route.forEach(function (t) { if (t=='up' || t=='down' || t=='left' || t=='right') { if (t!=lastMove && cnt>0) { @@ -422,11 +427,11 @@ utils.prototype.encodeRoute = function (route) { cnt=0; } if (t.indexOf('item:')==0) - ans+="I"+t.substring(5)+":"; + ans+="I"+id2number(t.substring(5))+":"; else if (t.indexOf('unEquip:')==0) ans+="u"+t.substring(8); else if (t.indexOf('equip:')==0) - ans+="e"+t.substring(6)+":"; + ans+="e"+id2number(t.substring(6))+":"; else if (t.indexOf('fly:')==0) ans+="F"+t.substring(4)+":"; else if (t.indexOf('choices:')==0) @@ -490,15 +495,23 @@ utils.prototype.decodeRoute = function (route) { "R": "right" } + var number2id = function (nxt) { + if (/^\d+$/.test(nxt)) { + var info = core.maps.blocksInfo[nxt]; + if (core.isset(info)) return info.id; + } + return nxt; + } + while (index Date: Mon, 18 Feb 2019 02:14:21 +0800 Subject: [PATCH 07/16] compress & decompress map --- libs/maps.js | 68 +++++++++++++++++++++++++++++++++++++++++++++------ libs/utils.js | 2 ++ 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/libs/maps.js b/libs/maps.js index 3d43610b..801b1fab 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -23,7 +23,7 @@ maps.prototype.loadFloor = function (floorId, map) { if (core.isset(map[e])) content[e] = core.clone(map[e]); else content[e] = core.clone(floor[e]); }); - map=map.map; + map=this.decompressMap(map.map, floorId); var mapIntoBlocks = function(map,maps,floor,floorId){ var blocks = []; var mw = core.floors[floorId].width || 13; @@ -178,18 +178,59 @@ maps.prototype.initMaps = function (floorIds) { return maps; } +////// 压缩地图 +maps.prototype.compressMap = function (mapArr, floorId) { + if (core.utils.same(mapArr, core.floors[floorId].map)) return null; + + var mw = core.floors[floorId].width || 13; + var mh = core.floors[floorId].height || 13; + for (var x=0;x Date: Mon, 18 Feb 2019 21:25:20 +0800 Subject: [PATCH 08/16] fly check --- project/items.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/items.js b/project/items.js index 82d0a830..468f5e17 100644 --- a/project/items.js +++ b/project/items.js @@ -389,7 +389,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = }, "canUseItemEffect": { "book": "true", - "fly": "(function () {\n\treturn core.status.hero.flyRange.indexOf(core.status.floorId)>=0;\n})();", + "fly": "(function () {\n\treturn core.status.hero.flyRange.indexOf(core.status.floorId)>=0 && (core.status.maps[core.status.floorId]||{}).canFlyTo;\n})();", "pickaxe": "(function() {\n\tvar ids = [], id2s = [];\n\tfor (var i in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[i];\n\t\tif (core.isset(block.event) && !block.disable && core.nearHero(block.x, block.y) && \n\t\t\t(block.event.canBreak || block.event.id == 'yellowWall' || block.event.id=='whiteWall' || block.event.id=='blueWall')) { // 能破哪些墙\n\t\t\t// 四个方向\n\t\t\tif (core.flags.pickaxeFourDirections || (block.x == core.nextX() && block.y == core.nextY()))\n\t\t\t\tids.push(i);\n\t\t\telse id2s.push(i);\n\t\t}\n\t}\n\tif (ids.length>0) {\n\t\tcore.status.event.ui = ids;\n\t\treturn true;\n\t}\n\telse if (id2s.length==1) {\n\t\tcore.status.event.ui = id2s;\n\t\treturn true;\n\t}\n\treturn false;\n})();", "icePickaxe": "(function() {\n\tfor (var i in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[i];\n\t\tif (core.isset(block.event) && !block.disable && block.x==core.nextX() && block.y==core.nextY() && block.event.id=='ice') {\n\t\t\tcore.status.event.ui = [i];\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();", "bomb": "(function () {\n\tvar ids = [], id2s = [];\n\tfor (var i in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[i];\n\t\tif (core.isset(block.event) && !block.disable && block.event.cls.indexOf('enemy')==0 && core.nearHero(block.x, block.y)) {\n\t\t\tvar enemy = core.material.enemys[block.event.id];\n\t\t\tif (core.isset(enemy) && enemy.notBomb) continue;\n\t\t\tif (core.flags.bombFourDirections || (block.x==core.nextX() && block.y==core.nextY()))\n\t\t\t\tids.push(i);\n\t\t\telse\n\t\t\t\tid2s.push(i);\n\t\t}\n\t}\n\tif (ids.length>0) {\n\t\tcore.status.event.ui = ids;\n\t\treturn true;\n\t}\n\tif (id2s.length==1) {\n\t\tcore.status.event.ui = id2s;\n\t\treturn true;\n\t}\n\treturn false;\n})();", From a80383e0fb7ab956b05101959f1b407847956f0f Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 21:43:35 +0800 Subject: [PATCH 09/16] askRate & Fix getSaves --- libs/control.js | 8 +++++--- libs/events.js | 27 +++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/libs/control.js b/libs/control.js index 109de0e3..33ea4eac 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2447,12 +2447,14 @@ control.prototype.getSaves = function (index, callback) { return; } - var ids = Object.keys(core.saves.ids).sort(function(a,b) {return a-b;}), number = ids.length; + var ids = Object.keys(core.saves.ids).filter(function(x){return x!=0;}) + .sort(function(a,b) {return a-b;}), number = ids.length; + // 不计0 var saves = []; var load = function (index, callback) { - if (index >= number) { + if (index > number) { if (core.isset(callback)) callback(saves); return; } @@ -2464,7 +2466,7 @@ control.prototype.getSaves = function (index, callback) { load(index+1, callback); }) } - load(1, callback); + load(0, callback); } ////// 获得所有存在存档的存档位 ////// diff --git a/libs/events.js b/libs/events.js index 1db37f82..3bdf5e54 100644 --- a/libs/events.js +++ b/libs/events.js @@ -221,6 +221,27 @@ events.prototype.gameOver = function (ending, fromReplay, norank) { ending += "[比赛]"; } + var askRate = function () { + if (!core.isset(ending)) { + core.restart(); + return; + } + + core.ui.closePanel(); + core.ui.drawConfirmBox("恭喜通关本塔,你想进行评分吗?", function () { + if (core.platform.isPC) { + window.open("/score.php?name="+core.firstData.name+"&num=10", "_blank"); + core.restart(); + } + else { + window.location.href = "/score.php?name="+core.firstData.name+"&num=10"; + } + }, function () { + core.restart(); + }); + + } + // 下载录像 var confirmDownload = function () { @@ -234,9 +255,11 @@ events.prototype.gameOver = function (ending, fromReplay, norank) { 'route': core.encodeRoute(core.status.route) } core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5route", JSON.stringify(obj)); - core.restart(); + // core.restart(); + askRate(); }, function () { - core.restart(); + // core.restart(); + askRate(); }) } From 8d4e5daaec637bf71ad920da677775884c5bbb92 Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 22:29:01 +0800 Subject: [PATCH 10/16] fix pushbox --- libs/events.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/libs/events.js b/libs/events.js index 3bdf5e54..57b81c4a 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2178,12 +2178,19 @@ events.prototype.pushBox = function (data) { core.updateStatusBar(); core.status.replay.animate = true; - core.moveHero(direction, function() { - core.status.replay.animate = false; - core.status.route.pop(); - core.events.afterPushBox(); - core.replay(); - }); + core.lockControl(); + setTimeout(function () { + core.moveHero(direction, function() { + core.status.replay.animate = false; + core.status.route.pop(); + core.events.afterPushBox(); + // 可能有阻击... + if (core.status.event.id == null) { + core.unLockControl(); + core.replay(); + } + }); + }) } From b219c374a0a65eb0a0320dfb361d1a9202b50d92 Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 23:01:26 +0800 Subject: [PATCH 11/16] Ctrl+S in editor --- _server/editor.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/_server/editor.js b/_server/editor.js index b151c161..f6e8e1b5 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -881,6 +881,21 @@ editor.prototype.listen = function () { var shortcut = core.getLocalStorage('shortcut',{48: 0, 49: 0, 50: 0, 51: 0, 52: 0, 53: 0, 54: 0, 55: 0, 56: 0, 57: 0}); document.body.onkeydown = function (e) { + // 监听Ctrl+S保存 + if (e.ctrlKey && e.keyCode == 83) { + e.preventDefault(); + if (editor_multi.id != "") { + editor_multi.confirm(); // 保存脚本编辑器 + } + else if (editor_blockly.id != "") { + editor_blockly.confirm(); // 保存事件编辑器 + } + else { + editor_mode.onmode(''); + } + return; + } + // 如果是开启事件/脚本编辑器状态,则忽略 if (editor_multi.id!="" || editor_blockly.id!="") return; @@ -910,6 +925,7 @@ editor.prototype.listen = function () { currDrawData = JSON.parse(JSON.stringify(reDo)); reDo = null; } + // PGUP和PGDOWN切换楼层 if (e.keyCode==33) { e.preventDefault(); From 25bd2c5d7263eaf74a03914c4f44c1ffac052b38 Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 23:05:39 +0800 Subject: [PATCH 12/16] editor saveFloor --- _server/editor.js | 2 +- _server/editor_mode.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index f6e8e1b5..2f184f30 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -891,7 +891,7 @@ editor.prototype.listen = function () { editor_blockly.confirm(); // 保存事件编辑器 } else { - editor_mode.onmode(''); + editor_mode.saveFloor(); } return; } diff --git a/_server/editor_mode.js b/_server/editor_mode.js index c97db93f..40ad2801 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -583,7 +583,7 @@ editor_mode = function (editor) { }); var saveFloor = document.getElementById('saveFloor'); - saveFloor.onclick = function () { + editor_mode.saveFloor = function () { editor_mode.onmode(''); editor.file.saveFloorFile(function (err) { if (err) { @@ -593,6 +593,7 @@ editor_mode = function (editor) { ;printf('保存成功'); }); } + saveFloor.onclick = editor_mode.saveFloor; var newMap = document.getElementById('newMap'); var newFileName = document.getElementById('newFileName'); From fc878bb5297306a4231baea2ea171f811096bf6e Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Mon, 18 Feb 2019 10:20:34 -0500 Subject: [PATCH 13/16] blockly-version --- _server/blockly/NOTICE.md | 14 +- _server/blockly/blockly_compressed.js | 1775 +++++++++++++++++++++ _server/blockly/blockly_compressed.min.js | 342 ---- _server/blockly/blockly_config.min.js | 59 - _server/blockly/blocks_compressed.js | 171 ++ _server/blockly/javascript_compressed.js | 96 ++ _server/blockly/media/quote0.png | Bin 796 -> 771 bytes _server/blockly/media/sprites.png | Bin 4146 -> 2595 bytes _server/blockly/media/sprites.svg | 130 +- _server/blockly/zh-hans.js | 435 +++++ _server/colorPicker/jsColor.js | 10 +- editor-mobile.html | 6 +- editor.html | 6 +- 13 files changed, 2554 insertions(+), 490 deletions(-) create mode 100644 _server/blockly/blockly_compressed.js delete mode 100644 _server/blockly/blockly_compressed.min.js delete mode 100644 _server/blockly/blockly_config.min.js create mode 100644 _server/blockly/blocks_compressed.js create mode 100644 _server/blockly/javascript_compressed.js create mode 100644 _server/blockly/zh-hans.js diff --git a/_server/blockly/NOTICE.md b/_server/blockly/NOTICE.md index d485ba50..cfb13aef 100644 --- a/_server/blockly/NOTICE.md +++ b/_server/blockly/NOTICE.md @@ -8,14 +8,6 @@ files copyed from https://github.com/google/blockly.git - -### diff in blockly code -blocks_compressed.js -line 44 ~ 48 -```javascript -// change by zhaouv @ logic_compare output : "Boolean" -> null -colour:"%{BKY_LOGIC_HUE}",tooltip:"%{BKYCONTROLS_IF_TOOLTIP_2}",helpUrl:"%{BKY_CONTROLS_IF_HELPURL}",extensions:["controls_if_tooltip"]},{type:"logic_compare",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A"},{type:"field_dropdown",name:"OP",options:[["=","EQ"],["\u2260","NEQ"],["<","LT"],["\u2264","LTE"],[">","GT"],["\u2265","GTE"]]},{type:"input_value",name:"B"}],inputsInline:!0,output:null,colour:"%{BKY_LOGIC_HUE}",helpUrl:"%{BKY_LOGIC_COMPARE_HELPURL}",extensions:["logic_compare", -// change by zhaouv @ logic_operation output,check : "Boolean" -> null -// change by zhaouv @ logic_negate output,check : "Boolean" -> null -"logic_op_tooltip"]},{type:"logic_operation",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:null},{type:"field_dropdown",name:"OP",options:[["%{BKY_LOGIC_OPERATION_AND}","AND"],["%{BKY_LOGIC_OPERATION_OR}","OR"]]},{type:"input_value",name:"B",check:null}],inputsInline:!0,output:null,colour:"%{BKY_LOGIC_HUE}",helpUrl:"%{BKY_LOGIC_OPERATION_HELPURL}",extensions:["logic_op_tooltip"]},{type:"logic_negate",message0:"%{BKY_LOGIC_NEGATE_TITLE}",args0:[{type:"input_value",name:"BOOL", -``` \ No newline at end of file +`Converter.bundle.min.js` +copyed from +https://github.com/zhaouv/antlr-blockly.git \ No newline at end of file diff --git a/_server/blockly/blockly_compressed.js b/_server/blockly/blockly_compressed.js new file mode 100644 index 00000000..bfbb77fc --- /dev/null +++ b/_server/blockly/blockly_compressed.js @@ -0,0 +1,1775 @@ +// Do not edit this file; automatically generated by build.py. +'use strict'; + +var $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this;goog.isDef=function(a){return void 0!==a};goog.isString=function(a){return"string"==typeof a};goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a}; +goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}}; +goog.define=function(a,b){var c=b;if(!COMPILED){var d=goog.global.CLOSURE_UNCOMPILED_DEFINES,e=goog.global.CLOSURE_DEFINES;d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)?c=d[a]:e&&void 0===e.nodeType&&Object.prototype.hasOwnProperty.call(e,a)&&(c=e[a])}goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1; +goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(".")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)}; +goog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/; +goog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide."); +if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)}; +goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG}; +goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1}; +goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0}; +goog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error('Module with namespace "'+a+'" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error('Module with namespace "'+ +a+'" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.module.declareNamespace=goog.declareModuleId;goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){}; +COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={"goog.module":!0});goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e=0;e>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid; +goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)}; +goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')}); +a("es6-impl",function(){return!0});a("es7",function(){return b("2 ** 2 == 4")});a("es8",function(){return b("async () => 1, true")});a("es9",function(){return b("({...rest} = {}), true")});a("es_next",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_= +this.transpilationTarget_||c.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||"es6"!=b||"noModule"in goog.global.document.createElement("script")?!1:!0;throw Error("Unknown language mode: "+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_= +{};this.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){for(var e=[],f=0;f\x3c/script>")}else{var e=b.createElement("script");e.defer=goog.Dependency.defer_;e.async=!1;e.type="text/javascript";(d=goog.getScriptNonce())&&e.setAttribute("nonce",d);goog.DebugLoader_.IS_OLD_IE_?(a.pause(),e.onreadystatechange=function(){if("loaded"== +e.readyState||"complete"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=this.path;b.head.appendChild(e)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency, +goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(a,b){b?d.write(' - - + + + + diff --git a/editor.html b/editor.html index 0e85e8b0..e619ae50 100644 --- a/editor.html +++ b/editor.html @@ -529,8 +529,10 @@ if (location.protocol.indexOf("http")!=0) { - - + + + + From 248b65834d19faba11c52fabf2e104c72bb8c409 Mon Sep 17 00:00:00 2001 From: oc Date: Mon, 18 Feb 2019 23:51:38 +0800 Subject: [PATCH 14/16] editor format js --- _server/CodeMirror/LICENSE | 13 +++++++++++++ _server/CodeMirror/beautify.min.js | 1 + _server/editor_multi.js | 16 ++++++++++++++++ editor-mobile.html | 2 ++ editor.html | 2 ++ 5 files changed, 34 insertions(+) create mode 100644 _server/CodeMirror/beautify.min.js diff --git a/_server/CodeMirror/LICENSE b/_server/CodeMirror/LICENSE index ff7db4b9..a139012a 100644 --- a/_server/CodeMirror/LICENSE +++ b/_server/CodeMirror/LICENSE @@ -19,3 +19,16 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------------------------------------------------------- + +The MIT License (MIT) + +Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/_server/CodeMirror/beautify.min.js b/_server/CodeMirror/beautify.min.js new file mode 100644 index 00000000..d57943a9 --- /dev/null +++ b/_server/CodeMirror/beautify.min.js @@ -0,0 +1 @@ +!function(){var t=function(u){var i={};function n(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return u[t].call(e.exports,e,e.exports,n),e.l=!0,e.exports}return n.m=u,n.c=i,n.d=function(t,e,u){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:u})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var u=Object.create(null);if(n.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(u,i,function(t){return e[t]}.bind(null,i));return u},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,u){"use strict";var i=u(1).Beautifier,n=u(5).Options;t.exports=function(t,e){return new i(t,e).beautify()},t.exports.defaultOptions=function(){return new n}},function(t,e,u){"use strict";var i=u(2).Output,n=u(3).Token,o=u(4),_=u(5).Options,s=u(7).Tokenizer,p=u(7).line_starters,l=u(7).positionable_operators,f=u(7).TOKEN;function c(t,e){return-1!==e.indexOf(t)}function a(t,e){return t&&t.type===f.RESERVED&&t.text===e}function d(t,e){return t&&t.type===f.RESERVED&&c(t.text,e)}var b=["case","return","do","if","throw","else","await","break","continue","async"],g=function(t){for(var e={},u=0;uu&&(u=t.line_indent_level)),{mode:e,parent:t,last_token:t?t.last_token:new n(f.START_BLOCK,""),last_word:t?t.last_word:"",declaration_statement:!1,declaration_assignment:!1,multiline_frame:!1,inline_frame:!1,if_block:!1,else_block:!1,do_block:!1,do_while:!1,import_block:!1,in_case_statement:!1,in_case:!1,case_body:!1,indentation_level:u,alignment:0,line_indent_level:t?t.line_indent_level:u,start_line_index:this._output.get_line_number(),ternary_depth:0}},T.prototype._reset=function(t){var e=t.match(/^[\t ]*/)[0];this._last_last_text="",this._output=new i(this._options,e),this._output.raw=this._options.test_output_raw,this._flag_store=[],this.set_mode(m);var u=new s(t,this._options);return this._tokens=u.tokenize(),t},T.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var t=this._reset(this._source_text),e=this._options.eol;"auto"===this._options.eol&&(e="\n",t&&o.lineBreak.test(t||"")&&(e=t.match(o.lineBreak)[0]));for(var u=this._tokens.next();u;)this.handle_token(u),this._last_last_text=this._flags.last_token.text,this._flags.last_token=u,u=this._tokens.next();return this._output.get_code(e)},T.prototype.handle_token=function(t,e){t.type===f.START_EXPR?this.handle_start_expr(t):t.type===f.END_EXPR?this.handle_end_expr(t):t.type===f.START_BLOCK?this.handle_start_block(t):t.type===f.END_BLOCK?this.handle_end_block(t):t.type===f.WORD?this.handle_word(t):t.type===f.RESERVED?this.handle_word(t):t.type===f.SEMICOLON?this.handle_semicolon(t):t.type===f.STRING?this.handle_string(t):t.type===f.EQUALS?this.handle_equals(t):t.type===f.OPERATOR?this.handle_operator(t):t.type===f.COMMA?this.handle_comma(t):t.type===f.BLOCK_COMMENT?this.handle_block_comment(t,e):t.type===f.COMMENT?this.handle_comment(t,e):t.type===f.DOT?this.handle_dot(t):t.type===f.EOF?this.handle_eof(t):(t.type,f.UNKNOWN,this.handle_unknown(t,e))},T.prototype.handle_whitespace_and_comments=function(t,e){var u=t.newlines,i=this._options.keep_array_indentation&&R(this._flags.mode);if(t.comments_before)for(var n=t.comments_before.next();n;)this.handle_whitespace_and_comments(n,e),this.handle_token(n,e),n=t.comments_before.next();if(i)for(var _=0;_this._options.max_preserve_newlines&&(u=this._options.max_preserve_newlines),this._options.preserve_newlines&&1this._flags.parent.indentation_level)&&(this._flags.indentation_level-=1,this._output.set_indent(this._flags.indentation_level,this._flags.alignment))},T.prototype.set_mode=function(t){this._flags?(this._flag_store.push(this._flags),this._previous_flags=this._flags):this._previous_flags=this.create_flags(null,t),this._flags=this.create_flags(this._previous_flags,t),this._output.set_indent(this._flags.indentation_level,this._flags.alignment)},T.prototype.restore_mode=function(){0"===this._flags.last_token.text?this.set_mode(m):c(this._flags.last_token.type,[f.EQUALS,f.START_EXPR,f.COMMA,f.OPERATOR])||d(this._flags.last_token,["return","throw","import","default"])?this.set_mode(r):this.set_mode(m);var i=!e.comments_before&&"}"===e.text,n=i&&"function"===this._flags.last_word&&this._flags.last_token.type===f.END_EXPR;if(this._options.brace_preserve_inline){var _=0,s=null;this._flags.inline_frame=!0;do{if(_+=1,(s=this._tokens.peek(_-1)).newlines){this._flags.inline_frame=!1;break}}while(s.type!==f.EOF&&(s.type!==f.END_BLOCK||s.opened!==t))}("expand"===this._options.brace_style||"none"===this._options.brace_style&&t.newlines)&&!this._flags.inline_frame?this._flags.last_token.type!==f.OPERATOR&&(n||this._flags.last_token.type===f.EQUALS||d(this._flags.last_token,b)&&"else"!==this._flags.last_token.text)?this._output.space_before_token=!0:this.print_newline(!1,!0):(!R(this._previous_flags.mode)||this._flags.last_token.type!==f.START_EXPR&&this._flags.last_token.type!==f.COMMA||((this._flags.last_token.type===f.COMMA||this._options.space_in_paren)&&(this._output.space_before_token=!0),(this._flags.last_token.type===f.COMMA||this._flags.last_token.type===f.START_EXPR&&this._flags.inline_frame)&&(this.allow_wrap_or_preserved_newline(t),this._previous_flags.multiline_frame=this._previous_flags.multiline_frame||this._flags.multiline_frame,this._flags.multiline_frame=!1)),this._flags.last_token.type!==f.OPERATOR&&this._flags.last_token.type!==f.START_EXPR&&(this._flags.last_token.type!==f.START_BLOCK||this._flags.inline_frame?this._output.space_before_token=!0:this.print_newline())),this.print_token(t),this.indent(),i||this._options.brace_preserve_inline&&this._flags.inline_frame||this.print_newline()},T.prototype.handle_end_block=function(t){for(this.handle_whitespace_and_comments(t);this._flags.mode===w;)this.restore_mode();var e=this._flags.last_token.type===f.START_BLOCK;this._flags.inline_frame&&!e?this._output.space_before_token=!0:"expand"===this._options.brace_style?e||this.print_newline():e||(R(this._flags.mode)&&this._options.keep_array_indentation?(this._options.keep_array_indentation=!1,this.print_newline(),this._options.keep_array_indentation=!0):this.print_newline()),this.restore_mode(),this.print_token(t)},T.prototype.handle_word=function(t){if(t.type===f.RESERVED)if(c(t.text,["set","get"])&&this._flags.mode!==r)t.type=f.WORD;else if("import"===t.text&&"("===this._tokens.peek().text)t.type=f.WORD;else if(c(t.text,["as","from"])&&!this._flags.import_block)t.type=f.WORD;else if(this._flags.mode===r){":"===this._tokens.peek().text&&(t.type=f.WORD)}if(this.start_of_statement(t)?d(this._flags.last_token,["var","let","const"])&&t.type===f.WORD&&(this._flags.declaration_statement=!0):!t.newlines||O(this._flags.mode)||this._flags.last_token.type===f.OPERATOR&&"--"!==this._flags.last_token.text&&"++"!==this._flags.last_token.text||this._flags.last_token.type===f.EQUALS||!this._options.preserve_newlines&&d(this._flags.last_token,["var","let","const","set","get"])?this.handle_whitespace_and_comments(t):(this.handle_whitespace_and_comments(t),this.print_newline()),this._flags.do_block&&!this._flags.do_while){if(a(t,"while"))return this._output.space_before_token=!0,this.print_token(t),this._output.space_before_token=!0,void(this._flags.do_while=!0);this.print_newline(),this._flags.do_block=!1}if(this._flags.if_block)if(!this._flags.else_block&&a(t,"else"))this._flags.else_block=!0;else{for(;this._flags.mode===w;)this.restore_mode();this._flags.if_block=!1,this._flags.else_block=!1}if(this._flags.in_case_statement&&d(t,["case","default"]))return this.print_newline(),(this._flags.case_body||this._options.jslint_happy)&&(this.deindent(),this._flags.case_body=!1),this.print_token(t),void(this._flags.in_case=!0);if(this._flags.last_token.type!==f.COMMA&&this._flags.last_token.type!==f.START_EXPR&&this._flags.last_token.type!==f.EQUALS&&this._flags.last_token.type!==f.OPERATOR||this.start_of_object_property()||this.allow_wrap_or_preserved_newline(t),a(t,"function"))return(c(this._flags.last_token.text,["}",";"])||this._output.just_added_newline()&&!c(this._flags.last_token.text,["(","[","{",":","=",","])&&this._flags.last_token.type!==f.OPERATOR)&&(this._output.just_added_blankline()||t.comments_before||(this.print_newline(),this.print_newline(!0))),this._flags.last_token.type===f.RESERVED||this._flags.last_token.type===f.WORD?d(this._flags.last_token,["get","set","new","export"])||d(this._flags.last_token,A)?this._output.space_before_token=!0:a(this._flags.last_token,"default")&&"export"===this._last_last_text?this._output.space_before_token=!0:"declare"===this._flags.last_token.text?this._output.space_before_token=!0:this.print_newline():this._flags.last_token.type===f.OPERATOR||"="===this._flags.last_token.text?this._output.space_before_token=!0:(this._flags.multiline_frame||!O(this._flags.mode)&&!R(this._flags.mode))&&this.print_newline(),this.print_token(t),void(this._flags.last_word=t.text);var e="NONE";(this._flags.last_token.type===f.END_BLOCK?this._previous_flags.inline_frame?e="SPACE":d(t,["else","catch","finally","from"])?"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&&t.newlines?e="NEWLINE":(e="SPACE",this._output.space_before_token=!0):e="NEWLINE":this._flags.last_token.type===f.SEMICOLON&&this._flags.mode===m?e="NEWLINE":this._flags.last_token.type===f.SEMICOLON&&O(this._flags.mode)?e="SPACE":this._flags.last_token.type===f.STRING?e="NEWLINE":this._flags.last_token.type===f.RESERVED||this._flags.last_token.type===f.WORD||"*"===this._flags.last_token.text&&(c(this._last_last_text,["function","yield"])||this._flags.mode===r&&c(this._last_last_text,["{",","]))?e="SPACE":this._flags.last_token.type===f.START_BLOCK?e=this._flags.inline_frame?"SPACE":"NEWLINE":this._flags.last_token.type===f.END_EXPR&&(this._output.space_before_token=!0,e="NEWLINE"),d(t,p)&&")"!==this._flags.last_token.text&&(e=this._flags.inline_frame||"else"===this._flags.last_token.text||"export"===this._flags.last_token.text?"SPACE":"NEWLINE"),d(t,["else","catch","finally"]))?(this._flags.last_token.type!==f.END_BLOCK||this._previous_flags.mode!==m||"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&&t.newlines)&&!this._flags.inline_frame?this.print_newline():(this._output.trim(!0),"}"!==this._output.current_line.last()&&this.print_newline(),this._output.space_before_token=!0):"NEWLINE"===e?d(this._flags.last_token,b)?this._output.space_before_token=!0:"declare"===this._flags.last_token.text&&d(t,["var","let","const"])?this._output.space_before_token=!0:this._flags.last_token.type!==f.END_EXPR?this._flags.last_token.type===f.START_EXPR&&d(t,["var","let","const"])||":"===this._flags.last_token.text||(a(t,"if")&&a(t.previous,"else")?this._output.space_before_token=!0:this.print_newline()):d(t,p)&&")"!==this._flags.last_token.text&&this.print_newline():this._flags.multiline_frame&&R(this._flags.mode)&&","===this._flags.last_token.text&&"}"===this._last_last_text?this.print_newline():"SPACE"===e&&(this._output.space_before_token=!0);!t.previous||t.previous.type!==f.WORD&&t.previous.type!==f.RESERVED||(this._output.space_before_token=!0),this.print_token(t),this._flags.last_word=t.text,t.type===f.RESERVED&&("do"===t.text?this._flags.do_block=!0:"if"===t.text?this._flags.if_block=!0:"import"===t.text?this._flags.import_block=!0:this._flags.import_block&&a(t,"from")&&(this._flags.import_block=!1))},T.prototype.handle_semicolon=function(t){this.start_of_statement(t)?this._output.space_before_token=!1:this.handle_whitespace_and_comments(t);for(var e=this._tokens.peek();!(this._flags.mode!==w||this._flags.if_block&&a(e,"else")||this._flags.do_block);)this.restore_mode();this._flags.import_block&&(this._flags.import_block=!1),this.print_token(t)},T.prototype.handle_string=function(t){this.start_of_statement(t)?this._output.space_before_token=!0:(this.handle_whitespace_and_comments(t),this._flags.last_token.type===f.RESERVED||this._flags.last_token.type===f.WORD||this._flags.inline_frame?this._output.space_before_token=!0:this._flags.last_token.type===f.COMMA||this._flags.last_token.type===f.START_EXPR||this._flags.last_token.type===f.EQUALS||this._flags.last_token.type===f.OPERATOR?this.start_of_object_property()||this.allow_wrap_or_preserved_newline(t):this.print_newline()),this.print_token(t)},T.prototype.handle_equals=function(t){this.start_of_statement(t)||this.handle_whitespace_and_comments(t),this._flags.declaration_statement&&(this._flags.declaration_assignment=!0),this._output.space_before_token=!0,this.print_token(t),this._output.space_before_token=!0},T.prototype.handle_comma=function(t){this.handle_whitespace_and_comments(t,!0),this.print_token(t),this._output.space_before_token=!0,this._flags.declaration_statement?(O(this._flags.parent.mode)&&(this._flags.declaration_assignment=!1),this._flags.declaration_assignment?(this._flags.declaration_assignment=!1,this.print_newline(!1,!0)):this._options.comma_first&&this.allow_wrap_or_preserved_newline(t)):this._flags.mode===r||this._flags.mode===w&&this._flags.parent.mode===r?(this._flags.mode===w&&this.restore_mode(),this._flags.inline_frame||this.print_newline()):this._options.comma_first&&this.allow_wrap_or_preserved_newline(t)},T.prototype.handle_operator=function(t){var e="*"===t.text&&(d(this._flags.last_token,["function","yield"])||c(this._flags.last_token.type,[f.START_BLOCK,f.COMMA,f.END_BLOCK,f.SEMICOLON])),u=c(t.text,["-","+"])&&(c(this._flags.last_token.type,[f.START_BLOCK,f.START_EXPR,f.EQUALS,f.OPERATOR])||c(this._flags.last_token.text,p)||","===this._flags.last_token.text);if(this.start_of_statement(t));else{var i=!e;this.handle_whitespace_and_comments(t,i)}if(d(this._flags.last_token,b))return this._output.space_before_token=!0,void this.print_token(t);if("*"!==t.text||this._flags.last_token.type!==f.DOT)if("::"!==t.text){if(this._flags.last_token.type===f.OPERATOR&&c(this._options.operator_position,k)&&this.allow_wrap_or_preserved_newline(t),":"===t.text&&this._flags.in_case)return this._flags.case_body=!0,this.indent(),this.print_token(t),this.print_newline(),void(this._flags.in_case=!1);var n=!0,_=!0,s=!1;if(":"===t.text?0===this._flags.ternary_depth?n=!1:(this._flags.ternary_depth-=1,s=!0):"?"===t.text&&(this._flags.ternary_depth+=1),!u&&!e&&this._options.preserve_newlines&&c(t.text,l)){var a=":"===t.text,o=a&&s,r=a&&!s;switch(this._options.operator_position){case g.before_newline:return this._output.space_before_token=!r,this.print_token(t),a&&!o||this.allow_wrap_or_preserved_newline(t),void(this._output.space_before_token=!0);case g.after_newline:return this._output.space_before_token=!0,!a||o?this._tokens.peek().newlines?this.print_newline(!1,!0):this.allow_wrap_or_preserved_newline(t):this._output.space_before_token=!1,this.print_token(t),void(this._output.space_before_token=!0);case g.preserve_newline:return r||this.allow_wrap_or_preserved_newline(t),n=!(this._output.just_added_newline()||r),this._output.space_before_token=n,this.print_token(t),void(this._output.space_before_token=!0)}}if(e){this.allow_wrap_or_preserved_newline(t),n=!1;var h=this._tokens.peek();_=h&&c(h.type,[f.WORD,f.RESERVED])}else"..."===t.text?(this.allow_wrap_or_preserved_newline(t),n=this._flags.last_token.type===f.START_BLOCK,_=!1):(c(t.text,["--","++","!","~"])||u)&&(this._flags.last_token.type!==f.COMMA&&this._flags.last_token.type!==f.START_EXPR||this.allow_wrap_or_preserved_newline(t),_=n=!1,!t.newlines||"--"!==t.text&&"++"!==t.text||this.print_newline(!1,!0),";"===this._flags.last_token.text&&O(this._flags.mode)&&(n=!0),this._flags.last_token.type===f.RESERVED?n=!0:this._flags.last_token.type===f.END_EXPR?n=!("]"===this._flags.last_token.text&&("--"===t.text||"++"===t.text)):this._flags.last_token.type===f.OPERATOR&&(n=c(t.text,["--","-","++","+"])&&c(this._flags.last_token.text,["--","-","++","+"]),c(t.text,["+","-"])&&c(this._flags.last_token.text,["--","++"])&&(_=!0)),(this._flags.mode!==m||this._flags.inline_frame)&&this._flags.mode!==w||"{"!==this._flags.last_token.text&&";"!==this._flags.last_token.text||this.print_newline());this._output.space_before_token=this._output.space_before_token||n,this.print_token(t),this._output.space_before_token=_}else this.print_token(t);else this.print_token(t)},T.prototype.handle_block_comment=function(t,e){if(this._output.raw)return this._output.add_raw_token(t),void(t.directives&&"end"===t.directives.preserve&&(this._output.raw=this._options.test_output_raw));if(t.directives)return this.print_newline(!1,e),this.print_token(t),"start"===t.directives.preserve&&(this._output.raw=!0),void this.print_newline(!1,!0);if(!o.newline.test(t.text)&&!t.newlines)return this._output.space_before_token=!0,this.print_token(t),void(this._output.space_before_token=!0);var u,i=function(t){for(var e=[],u=(t=t.replace(o.allLineBreaks,"\n")).indexOf("\n");-1!==u;)e.push(t.substring(0,u)),u=(t=t.substring(u+1)).indexOf("\n");return t.length&&e.push(t),e}(t.text),n=!1,_=!1,s=t.whitespace_before,a=s.length;if(this.print_newline(!1,e),this.print_token(t,i[0]),this.print_newline(!1,e),1this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},n.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var t=this.__parent.current_line;return t.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),t.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),t.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===t.__items[0]&&(t.__items.splice(0,1),t.__character_count-=1),!0}return!1},n.prototype.is_empty=function(){return 0===this.__items.length},n.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},n.prototype.push=function(t){this.__items.push(t);var e=t.lastIndexOf("\n");-1!==e?this.__character_count=t.length-e:this.__character_count+=t.length},n.prototype.pop=function(){var t=null;return this.is_empty()||(t=this.__items.pop(),this.__character_count-=t.length),t},n.prototype._remove_indent=function(){0=this.__cache.length;)this.__add_column()},i.prototype.__add_column=function(){var t=this.__cache.length,e=0,u="";this.__indent_size&&t>=this.__indent_size&&(t-=(e=Math.floor(t/this.__indent_size))*this.__indent_size,u=new Array(e+1).join(this.__indent_string)),t&&(u+=new Array(t+1).join(" ")),this.__cache.push(u)},_.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},_.prototype.get_line_number=function(){return this.__lines.length},_.prototype.get_indent_string=function(t,e){return this.__indent_cache.get_indent_string(t,e)},_.prototype.get_indent_size=function(t,e){return this.__indent_cache.get_indent_size(t,e)},_.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},_.prototype.add_new_line=function(t){return!(this.is_empty()||!t&&this.just_added_newline())&&(this.raw||this.__add_outputline(),!0)},_.prototype.get_code=function(t){this.trim(!0);var e=this.current_line.pop();e&&("\n"===e[e.length-1]&&(e=e.replace(/\n+$/g,"")),this.current_line.push(e)),this._end_with_newline&&this.__add_outputline();var u=this.__lines.join("\n");return"\n"!==t&&(u=u.replace(/[\n]/g,t)),u},_.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},_.prototype.set_indent=function(t,e){return t=t||0,e=e||0,this.next_line.set_indent(t,e),1>> === !== << && >= ** != == <= >> || < / - + > : & % ? ^ | *".split(" "),g=">>>= ... >>= <<= === >>> !== **= => ^= :: /= << <= == && -= >= >> != -- += ** || ++ %= &= *= |= = ! ? > < : / ^ - + * & % ~ |";g=(g=g.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&")).replace(/ /g,"|");var k,m=new RegExp(g),w="continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export".split(","),y=w.concat(["do","in","of","else","get","set","new","catch","finally","typeof","yield","async","await","from","as"]),x=new RegExp("^(?:"+y.join("|")+")$"),v=function(t,e){n.call(this,t,e),this._patterns.whitespace=this._patterns.whitespace.matching(/\u00A0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff/.source,/\u2028\u2029/.source);var u=new a(this._input),i=new o(this._input);i=(i=i.disable("handlebars")).disable("django"),this.__patterns={template:i,identifier:i.starting_with(r.identifier).matching(r.identifierMatch),number:u.matching(f),punct:u.matching(m),comment:u.starting_with(/\/\//).until(/[\n\r\u2028\u2029]/),block_comment:u.starting_with(/\/\*/).until_after(/\*\//),html_comment_start:u.matching(//),include:u.starting_with(/#include/).until_after(r.lineBreak),shebang:u.starting_with(/#!/).until_after(r.lineBreak),xml:u.matching(/[\s\S]*?<(\/?)([-a-zA-Z:0-9_.]+|{[\s\S]+?}|!\[CDATA\[[\s\S]*?\]\])(\s+{[\s\S]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{[\s\S]+?}))*\s*(\/?)\s*>/),single_quote:i.until(/['\\\n\r\u2028\u2029]/),double_quote:i.until(/["\\\n\r\u2028\u2029]/),template_text:i.until(/[`\\$]/),template_expression:i.until(/[`}\\]/)}};(v.prototype=new n)._is_comment=function(t){return t.type===p.COMMENT||t.type===p.BLOCK_COMMENT||t.type===p.UNKNOWN},v.prototype._is_opening=function(t){return t.type===p.START_BLOCK||t.type===p.START_EXPR},v.prototype._is_closing=function(t,e){return(t.type===p.END_BLOCK||t.type===p.END_EXPR)&&e&&("]"===t.text&&"["===e.text||")"===t.text&&"("===e.text||"}"===t.text&&"{"===e.text)},v.prototype._reset=function(){k=!1},v.prototype._get_next_token=function(t,e){var u=null;this._readWhitespace();var i=this._input.peek();return null===i?this._create_token(p.EOF,""):u=(u=(u=(u=(u=(u=(u=(u=(u=u||this._read_string(i))||this._read_word(t))||this._read_singles(i))||this._read_comment(i))||this._read_regexp(i,t))||this._read_xml(i,t))||this._read_non_javascript(i))||this._read_punctuation())||this._create_token(p.UNKNOWN,this._input.next())},v.prototype._read_word=function(t){var e;return""!==(e=this.__patterns.identifier.read())?(e=e.replace(r.allLineBreaks,"\n"),t.type!==p.DOT&&(t.type!==p.RESERVED||"set"!==t.text&&"get"!==t.text)&&x.test(e)?"in"===e||"of"===e?this._create_token(p.OPERATOR,e):this._create_token(p.RESERVED,e):this._create_token(p.WORD,e)):""!==(e=this.__patterns.number.read())?this._create_token(p.WORD,e):void 0},v.prototype._read_singles=function(t){var e=null;return"("===t||"["===t?e=this._create_token(p.START_EXPR,t):")"===t||"]"===t?e=this._create_token(p.END_EXPR,t):"{"===t?e=this._create_token(p.START_BLOCK,t):"}"===t?e=this._create_token(p.END_BLOCK,t):";"===t?e=this._create_token(p.SEMICOLON,t):"."===t&&d.test(this._input.peek(1))?e=this._create_token(p.DOT,t):","===t&&(e=this._create_token(p.COMMA,t)),e&&this._input.next(),e},v.prototype._read_punctuation=function(){var t=this.__patterns.punct.read();if(""!==t)return"="===t?this._create_token(p.EQUALS,t):this._create_token(p.OPERATOR,t)},v.prototype._read_non_javascript=function(t){var e="";if("#"===t){if(this._is_first_token()&&(e=this.__patterns.shebang.read()))return this._create_token(p.UNKNOWN,e.trim()+"\n");if(e=this.__patterns.include.read())return this._create_token(p.UNKNOWN,e.trim()+"\n");t=this._input.next();var u="#";if(this._input.hasNext()&&this._input.testChar(c)){for(;u+=t=this._input.next(),this._input.hasNext()&&"#"!==t&&"="!==t;);return"#"===t||("["===this._input.peek()&&"]"===this._input.peek(1)?(u+="[]",this._input.next(),this._input.next()):"{"===this._input.peek()&&"}"===this._input.peek(1)&&(u+="{}",this._input.next(),this._input.next())),this._create_token(p.WORD,u)}this._input.back()}else if("<"===t){if(e=this.__patterns.html_comment_start.read()){for(;this._input.hasNext()&&!this._input.testChar(r.newline);)e+=this._input.next();return k=!0,this._create_token(p.COMMENT,e)}}else if(k&&"-"===t&&(e=this.__patterns.html_comment_end.read()))return k=!1,this._create_token(p.COMMENT,e);return null},v.prototype._read_comment=function(t){var e=null;if("/"===t){var u="";if("*"===this._input.peek(1)){u=this.__patterns.block_comment.read();var i=l.get_directives(u);i&&"start"===i.ignore&&(u+=l.readIgnored(this._input)),u=u.replace(r.allLineBreaks,"\n"),(e=this._create_token(p.BLOCK_COMMENT,u)).directives=i}else"/"===this._input.peek(1)&&(u=this.__patterns.comment.read(),e=this._create_token(p.COMMENT,u))}return e},v.prototype._read_string=function(t){if("`"!==t&&"'"!==t&&'"'!==t)return null;var e=this._input.next();return this.has_char_escapes=!1,e+="`"===t?this._read_string_recursive("`",!0,"${"):this._read_string_recursive(t),this.has_char_escapes&&this._options.unescape_strings&&(e=function(t){var e="",u=0,i=new _(t),n=null;for(;i.hasNext();)if((n=i.match(/([\s]|[^\\]|\\\\)+/g))&&(e+=n[0]),"\\"===i.peek()){if(i.next(),"x"===i.peek())n=i.match(/x([0-9A-Fa-f]{2})/g);else{if("u"!==i.peek()){e+="\\",i.hasNext()&&(e+=i.next());continue}n=i.match(/u([0-9A-Fa-f]{4})/g)}if(!n)return t;if(126<(u=parseInt(n[1],16))&&u<=255&&0===n[0].indexOf("x"))return t;if(0<=u&&u<32){e+="\\"+n[0];continue}e+=34===u||39===u||92===u?"\\"+String.fromCharCode(u):String.fromCharCode(u)}return e}(e)),this._input.peek()===t&&(e+=this._input.next()),e=e.replace(r.allLineBreaks,"\n"),this._create_token(p.STRING,e)},v.prototype._allow_regexp_or_xml=function(t){return t.type===p.RESERVED&&h(t.text,["return","case","throw","else","do","typeof","yield"])||t.type===p.END_EXPR&&")"===t.text&&t.opened.previous.type===p.RESERVED&&h(t.opened.previous.text,["if","while","for"])||h(t.type,[p.COMMENT,p.START_EXPR,p.START_BLOCK,p.START,p.END_BLOCK,p.OPERATOR,p.EQUALS,p.EOF,p.SEMICOLON,p.COMMA])},v.prototype._read_regexp=function(t,e){if("/"===t&&this._allow_regexp_or_xml(e)){for(var u=this._input.next(),i=!1,n=!1;this._input.hasNext()&&(i||n||this._input.peek()!==t)&&!this._input.testChar(r.newline);)u+=this._input.peek(),i?i=!1:(i="\\"===this._input.peek(),"["===this._input.peek()?n=!0:"]"===this._input.peek()&&(n=!1)),this._input.next();return this._input.peek()===t&&(u+=this._input.next(),u+=this._input.read(r.identifier)),this._create_token(p.STRING,u)}return null},v.prototype._read_xml=function(t,e){if(this._options.e4x&&"<"===t&&this._allow_regexp_or_xml(e)){var u="",i=this.__patterns.xml.read_match();if(i){for(var n=i[2].replace(/^{\s+/,"{").replace(/\s+}$/,"}"),_=0===n.indexOf("{"),s=0;i;){var a=!!i[1],o=i[2];if(!(!!i[i.length-1]||"![CDATA["===o.slice(0,8))&&(o===n||_&&o.replace(/^{\s+/,"{").replace(/\s+}$/,"}"))&&(a?--s:++s),u+=i[0],s<=0)break;i=this.__patterns.xml.read_match()}return i||(u+=this._input.match(/[\s\S]*/g)[0]),u=u.replace(r.allLineBreaks,"\n"),this._create_token(p.STRING,u)}}return null},v.prototype._read_string_recursive=function(t,e,u){var i,n;"'"===t?n=this.__patterns.single_quote:'"'===t?n=this.__patterns.double_quote:"`"===t?n=this.__patterns.template_text:"}"===t&&(n=this.__patterns.template_expression);for(var _=n.read(),s="";this._input.hasNext();){if((s=this._input.next())===t||!e&&r.newline.test(s)){this._input.back();break}"\\"===s&&this._input.hasNext()?("x"===(i=this._input.peek())||"u"===i?this.has_char_escapes=!0:"\r"===i&&"\n"===this._input.peek(1)&&this._input.next(),s+=this._input.next()):u&&("${"===u&&"$"===s&&"{"===this._input.peek()&&(s+=this._input.next()),u===s&&(s+="`"===t?this._read_string_recursive("}",e,"`"):this._read_string_recursive("`",e,"${"),this._input.hasNext()&&(s+=this._input.next()))),_+=s+=n.read()}return _},t.exports.Tokenizer=v,t.exports.TOKEN=p,t.exports.positionable_operators=b.slice(),t.exports.line_starters=w.slice()},function(t,e,u){"use strict";var n=RegExp.prototype.hasOwnProperty("sticky");function i(t){this.__input=t||"",this.__input_length=this.__input.length,this.__position=0}i.prototype.restart=function(){this.__position=0},i.prototype.back=function(){0=t.length&&this.__input.substring(e-t.length,e).toLowerCase()===t},t.exports.InputScanner=i},function(t,e,u){"use strict";var i=u(8).InputScanner,_=u(3).Token,s=u(10).TokenStream,n=u(11).WhitespacePattern,a={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},o=function(t,e){this._input=new i(t),this._options=e||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new n(this._input)};o.prototype.tokenize=function(){var t;this._input.restart(),this.__tokens=new s,this._reset();for(var e=new _(a.START,""),u=null,i=[],n=new s;e.type!==a.EOF;){for(t=this._get_next_token(e,u);this._is_comment(t);)n.add(t),t=this._get_next_token(e,u);n.isEmpty()||(t.comments_before=n,n=new s),t.parent=u,this._is_opening(t)?(i.push(u),u=t):u&&this._is_closing(t,u)&&((t.opened=u).closed=t,u=i.pop(),t.parent=u),(t.previous=e).next=t,this.__tokens.add(t),e=t}return this.__tokens},o.prototype._is_first_token=function(){return this.__tokens.isEmpty()},o.prototype._reset=function(){},o.prototype._get_next_token=function(t,e){this._readWhitespace();var u=this._input.read(/.+/g);return u?this._create_token(a.RAW,u):this._create_token(a.EOF,"")},o.prototype._is_comment=function(t){return!1},o.prototype._is_opening=function(t){return!1},o.prototype._is_closing=function(t,e){return!1},o.prototype._create_token=function(t,e){return new _(t,e,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token)},o.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},t.exports.Tokenizer=o,t.exports.TOKEN=a},function(t,e,u){"use strict";function i(t){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=t}i.prototype.restart=function(){this.__position=0},i.prototype.isEmpty=function(){return 0===this.__tokens_length},i.prototype.hasNext=function(){return this.__position/),erb:u.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:u.starting_with(/{%/).until_after(/%}/),django_value:u.starting_with(/{{/).until_after(/}}/),django_comment:u.starting_with(/{#/).until_after(/#}/)}}(_.prototype=new i)._create=function(){return new _(this._input,this)},_.prototype._update=function(){this.__set_templated_pattern()},_.prototype.disable=function(t){var e=this._create();return e._disabled[t]=!0,e._update(),e},_.prototype.exclude=function(t){var e=this._create();return e._excluded[t]=!0,e._update(),e},_.prototype.read=function(){var t="";t=this._match_pattern?this._input.read(this._starting_pattern):this._input.read(this._starting_pattern,this.__template_pattern);for(var e=this._read_template();e;)this._match_pattern?e+=this._input.read(this._match_pattern):e+=this._input.readUntil(this.__template_pattern),t+=e,e=this._read_template();return this._until_after&&(t+=this._input.readUntilAfter(this._until_pattern)),t},_.prototype.__set_templated_pattern=function(){var t=[];this._disabled.php||t.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||t.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||t.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(t.push(this.__patterns.django._starting_pattern.source),t.push(this.__patterns.django_value._starting_pattern.source),t.push(this.__patterns.django_comment._starting_pattern.source)),this._until_pattern&&t.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp("(?:"+t.join("|")+")")},_.prototype._read_template=function(){var t="",e=this._input.peek();if("<"===e){var u=this._input.peek(1);this._disabled.php||this._excluded.php||"?"!==u||(t=t||this.__patterns.php.read()),this._disabled.erb||this._excluded.erb||"%"!==u||(t=t||this.__patterns.erb.read())}else"{"===e&&(this._disabled.handlebars||this._excluded.handlebars||(t=(t=t||this.__patterns.handlebars_comment.read())||this.__patterns.handlebars.read()),this._disabled.django||(this._excluded.django||this._excluded.handlebars||(t=t||this.__patterns.django_value.read()),this._excluded.django||(t=(t=t||this.__patterns.django_comment.read())||this.__patterns.django.read())));return t},t.exports.TemplatablePattern=_}]);"function"==typeof define&&define.amd?define([],function(){return{js_beautify:t}}):"undefined"!=typeof exports?exports.js_beautify=t:"undefined"!=typeof window?window.js_beautify=t:"undefined"!=typeof global&&(global.js_beautify=t)}(); \ No newline at end of file diff --git a/_server/editor_multi.js b/_server/editor_multi.js index 2c426991..856fa59b 100644 --- a/_server/editor_multi.js +++ b/_server/editor_multi.js @@ -1,3 +1,5 @@ + + editor_multi = function () { var editor_multi = {}; @@ -19,6 +21,8 @@ editor_multi = function () { highlightSelectionMatches: {showToken: /\w/, annotateScrollbar: true} }); + editor_multi.codeEditor = codeEditor; + codeEditor.on("keyup", function (cm, event) { if (codeEditor.getOption("autocomplete") && !event.ctrlKey && ( (event.keyCode >= 65 && event.keyCode <= 90) || @@ -60,6 +64,18 @@ editor_multi = function () { return '\t'; } + editor_multi.format = function () { + if (!editor_multi.lintAutocomplete) { + alert("只有代码才能进行格式化操作!"); + return; + } + codeEditor.setValue(js_beautify(codeEditor.getValue(), { + brace_style: "collapse-preserve-inline", + indent_with_tabs: true, + jslint_happy: true + })); + } + editor_multi.import = function (id_, args) { var thisTr = document.getElementById(id_); if (!thisTr) return false; diff --git a/editor-mobile.html b/editor-mobile.html index 514346e4..3ccbdbbc 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -220,6 +220,7 @@
+ 语法检查 @@ -554,6 +555,7 @@ if (location.protocol.indexOf("http")!=0) { + diff --git a/editor.html b/editor.html index 0e85e8b0..3e08dfde 100644 --- a/editor.html +++ b/editor.html @@ -216,6 +216,7 @@
+ 语法检查 @@ -535,6 +536,7 @@ if (location.protocol.indexOf("http")!=0) { + From 6b63a8b6c49179f7d53dc65359d618fbad4d600b Mon Sep 17 00:00:00 2001 From: oc Date: Tue, 19 Feb 2019 00:17:34 +0800 Subject: [PATCH 15/16] moveHero forward & backward --- _server/blockly/MotaAction.g4 | 14 +++++++++----- libs/control.js | 15 +++++++++++---- libs/maps.js | 1 + 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 2467d19c..d81a1128 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -1257,7 +1257,7 @@ moveHero_s /* moveHero_s tooltip : moveHero:移动勇士,用这种方式移动勇士的过程中将无视一切地形, 无视一切事件, 中毒状态也不会扣血 helpUrl : https://h5mota.com/games/template/docs/#/event?id=movehero%EF%BC%9A%E7%A7%BB%E5%8A%A8%E5%8B%87%E5%A3%AB -default : [500,false,"上右3下2左上左2"] +default : [500,false,"上右3下2后4左前2"] colour : this.dataColor Int_0 = Int_0!=='' ?(', "time": '+Int_0):''; Bool_0 = Bool_0?', "async": true':''; @@ -1846,8 +1846,8 @@ Global_Value_List Global_Flag_List - : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示魔力值'|'显示魔防值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'开启加点'|'开启负伤'|'循环计算临界'|'允许轻按'|'允许走到将死领域'|'允许瞬间移动'|'阻激夹域后禁用快捷商店' - /*Global_Flag_List ['enableFloor','enableName','enableLv', 'enableHPMax', 'enableMana', 'enableMDef', 'enableMoney', 'enableExperience', 'enableLevelUp', 'levelUpLeftMode', 'enableKeys', 'enablePZF', 'enableDebuff', 'enableSkill', 'flyNearStair', 'enableAddPoint', 'enableNegativeDamage', 'useLoop', 'enableGentleClick', 'canGoDeadZone', 'enableMoveDirectly', 'disableShopOnDamage']*/; + : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示魔力值'|'显示魔防值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'开启加点'|'开启负伤'|'仇恨怪战后扣减一半'|'夹击是否上整'|'循环计算临界'|'允许轻按'|'寻路算法不绕血瓶'|'允许走到将死领域'|'允许瞬间移动'|'允许查看禁用商店'|'阻激夹域后禁用快捷商店'|'检查控制台' + /*Global_Flag_List ['enableFloor','enableName','enableLv', 'enableHPMax', 'enableMana', 'enableMDef', 'enableMoney', 'enableExperience', 'enableLevelUp', 'levelUpLeftMode', 'enableKeys', 'enablePZF', 'enableDebuff', 'enableSkill', 'flyNearStair', 'enableAddPoint', 'enableNegativeDamage', 'hatredDecrease', 'betweenAttackCeil', 'useLoop', 'enableGentleClick', 'potionWhileRouting', 'canGoDeadZone', 'enableMoveDirectly', 'enableDisabledShop', 'disableShopOnDamage', 'checkConsole']*/; Colour : 'sdeirughvuiyasdeb'+ //为了被识别为复杂词法规则 @@ -2516,7 +2516,9 @@ ActionParser.prototype.StepString = function(steplist) { 'up': '上', 'down': '下', 'left': '左', - 'right': '右' + 'right': '右', + 'forward': '前', + 'backward': '后' } var StepString = []; for(var ii=0,obj;obj=steplist[ii];ii++) { @@ -2573,7 +2575,7 @@ MotaActionFunctions.PosString_pre = function(PosString){ MotaActionFunctions.StepString_pre = function(StepString){ //StepString='上右3下2左上左2' - var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R'); + var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R').replace(/前/g,'F').replace(/后/g,'B'); //copyed from core.js var ans=[], index=0; @@ -2602,6 +2604,8 @@ MotaActionFunctions.StepString_pre = function(StepString){ case "D": for (var i=0;i=0;}); + var step=0; var animate=window.setInterval(function() { @@ -918,18 +920,23 @@ control.prototype.eventMoveHero = function(steps, time, callback) { } else { var direction = moveSteps[0]; + + // ------ 前进/后退 + var o = direction == 'backward' ? -1 : 1; + if (direction == 'forward' || direction == 'backward') direction = core.getHeroLoc('direction'); + core.setHeroLoc('direction', direction); step++; if (step <= 4) { - core.drawHero(direction, x, y, 'leftFoot', 4 * step); + core.drawHero(direction, x, y, 'leftFoot', 4 * o * step); } else if (step <= 8) { - core.drawHero(direction, x, y, 'rightFoot', 4 * step); + core.drawHero(direction, x, y, 'rightFoot', 4 * o * step); } if (step == 8) { step = 0; - core.setHeroLoc('x', x + core.utils.scan[direction].x, true); - core.setHeroLoc('y', y + core.utils.scan[direction].y, true); + core.setHeroLoc('x', x + o * core.utils.scan[direction].x, true); + core.setHeroLoc('y', y + o * core.utils.scan[direction].y, true); core.control.updateFollowers(); moveSteps.shift(); } diff --git a/libs/maps.js b/libs/maps.js index 801b1fab..e8e3c0e4 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1019,6 +1019,7 @@ maps.prototype.moveBlock = function(x,y,steps,time,keep,callback) { } } }); + moveSteps = moveSteps.filter(function (t) { return ['up','down','left','right'].indexOf(t)>=0;}); var nowX=32*x, nowY=32*y, step=0; var destX=x, destY=y; From 7bb7b26e30b144bae91a309a3fffc60ec51bb80f Mon Sep 17 00:00:00 2001 From: oc Date: Tue, 19 Feb 2019 00:42:54 +0800 Subject: [PATCH 16/16] v2.5.5 --- README.md | 11 +++++++++++ _docs/V2.0.md | 2 +- _docs/api.md | 18 ++++++++++++------ _docs/element.md | 2 +- _docs/event.md | 2 +- _docs/index.md | 2 +- _docs/personalization.md | 2 +- _docs/start.md | 4 ++-- libs/control.js | 3 ++- libs/core.js | 4 ++++ main.js | 6 +++--- project/data.js | 2 +- 更新说明.txt | 15 ++++++++++++++- 13 files changed, 54 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 68d04b78..2eb8f744 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,17 @@ HTML5 canvas制作的魔塔样板,支持全平台游戏! ## 更新说明 +### 2019.2.19 V2.5.5 + +* [x] 现在编辑器修改地图后可以直接读档生效,无需再重置地图或回放录像 +* [x] 存档方式优化,大幅降低单个存档的占用空间 +* [x] 脚本编辑器增加代码格式化的选项 +* [x] 事件和脚本编辑器中Ctrl+S可以进行保存 +* [x] 事件的移动勇士增加前进和后退两个操作 +* [x] 事件编辑器的下拉框增加滚动条 +* [x] 通关后将询问是否进行评分 +* [x] 修复已知的所有Bug,大量细节优化 + ### 2019.2.4 V2.5.4 * [x] 发布15x15的版本 diff --git a/_docs/V2.0.md b/_docs/V2.0.md index f83ddb06..f10852d8 100644 --- a/_docs/V2.0.md +++ b/_docs/V2.0.md @@ -1,6 +1,6 @@ # V2.0版本介绍 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 目前样板已经更新到V2.0版本以上,本章将对V2.0的一些内容进行介绍。 diff --git a/_docs/api.md b/_docs/api.md index aa96918f..68606a04 100644 --- a/_docs/api.md +++ b/_docs/api.md @@ -1,6 +1,6 @@ # 附录: API列表 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * **这里只列出所有可能会被造塔者用到的常用API,更多的有关内容请在代码内进行查询。** @@ -139,15 +139,12 @@ core.changeFloor('MT5', null, {'x': 3, 'y': 6}, 0) 无动画切换到MT5层的(3 core.resetMap() 重置当前楼层地图和楼层属性。 -当我们修改某一层地图后,进游戏读档,会发现修改的内容并没有被更新上去。 -这是因为,H5的存档是会存下来每一个楼层的地图的,读档会从档里面获得地图信息。 -此时,如果我们在某一层地图执行 core.resetMap() ,则可以立刻从剧本中读取并重置当前楼层地图。 -已经被修改过的内容也会相应出现。 此函数参数有三种形式: - 不加任何参数,表示重置当前层:core.resetMap() - 加上一个floorId,表示重置某一层:core.resetMap("MT1") - 使用一个数组,表示重置若干层:core.resetMap(["MT1", "MT2", "MT3"]) - +--------------------------- +** 说明:从V2.5.5开始存档方式发生了改变,在编辑器修改了地图后现在将直接生效,无需再重置地图。 R 录像回放的快捷键;这不是一个控制台命令,但是也把它放在这里供使用。 @@ -637,6 +634,15 @@ core.utils.formatBigNumber(x, onMap) 大数据的格式化 +core.utils.subarray(a, b) +检查b是否是a的从头开始子串。 +如果是,则返回a删去b的一段;否则返回null。 + + +core.utils.same(a, b) +比较a和b两个对象是否相同 + + core.utils.clamp(x, a, b) 将x限制在[a,b]之间的范围内 diff --git a/_docs/element.md b/_docs/element.md index a9204028..3e123c60 100644 --- a/_docs/element.md +++ b/_docs/element.md @@ -1,6 +1,6 @@ # 元件说明 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 在本章中,将对样板里的各个元件进行说明。各个元件主要包括道具、门、怪物、楼梯等等。 diff --git a/_docs/event.md b/_docs/event.md index fb849218..4ea13806 100644 --- a/_docs/event.md +++ b/_docs/event.md @@ -1,6 +1,6 @@ # 事件 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 本章内将对样板所支持的事件进行介绍。 diff --git a/_docs/index.md b/_docs/index.md index 9f626c39..cb6a896c 100644 --- a/_docs/index.md +++ b/_docs/index.md @@ -1,6 +1,6 @@ # HTML5 魔塔样板说明文档 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 众所周知,魔塔的趋势是向移动端发展,贴吧中也常常能见到“求手机魔塔”的帖子。然而现有的工具中,NekoRPG有着比较大的局限性,游戏感较差,更是完全没法在iOS上运行。而一些APP的魔塔虽然可用,但是必须要下载安装,对于Android和iOS还必须开发不同的版本,非常麻烦。 diff --git a/_docs/personalization.md b/_docs/personalization.md index e74e7bf2..0b54e789 100644 --- a/_docs/personalization.md +++ b/_docs/personalization.md @@ -1,6 +1,6 @@ # 个性化 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 有时候只靠样板本身可能是不够的。我们需要一些个性化、自定义的素材,道具效果,怪物属性,等等。 diff --git a/_docs/start.md b/_docs/start.md index 2df70396..a68ac244 100644 --- a/_docs/start.md +++ b/_docs/start.md @@ -1,6 +1,6 @@ # 快速上手 -?> 目前版本**v2.5.4**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.5.5**,上次更新时间:* {docsify-updated} * 在这一节中,将详细介绍做一部塔的流程。现在,让我们来做一部单层塔! @@ -225,7 +225,7 @@ HTML5的塔都是可以进行控制台调试的。 - `core.changeFloor('MT5', null, {'x': 4, 'y': 7})` 立刻切换楼层到MT5层的(4,7)点。 - `core.getBlock(3, 5, 'MT1')` 获得当前地图上某一个块的信息。第三个参数为floorId,可省略表示当前楼层。 - `core.getBlockId(3, 5, 'MT1')` 获得当前地图上某一个点的图块ID。第三个参数为floorId,可省略表示当前楼层。 -- `core.resetMap()` 重置当前层地图。**当修改地图后再读档,修改的地图不会立刻生效,此时可以使用resetMap来重置当前楼层的地图。** +- `core.resetMap()` 重置当前层地图。 - …… 更多API和详细参数介绍可参见[API列表](api)。 diff --git a/libs/control.js b/libs/control.js index d85308f5..fa540022 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2420,7 +2420,8 @@ control.prototype.loadData = function (data, callback) { core.status.textAttribute = core.getFlag('textAttribute', core.status.textAttribute); var toAttribute = core.getFlag('globalAttribute', core.status.globalAttribute); - if (core.utils.hashCode(toAttribute) != core.utils.hashCode(core.status.globalAttribute)) { + // if (core.utils.hashCode(toAttribute) != core.utils.hashCode(core.status.globalAttribute)) { + if (!core.same(toAttribute, core.status.globalAttribute)) { core.status.globalAttribute = toAttribute; core.control.updateGlobalAttribute(Object.keys(toAttribute)); } diff --git a/libs/core.js b/libs/core.js index 99119bc3..ace726a7 100644 --- a/libs/core.js +++ b/libs/core.js @@ -1420,6 +1420,10 @@ core.prototype.subarray = function (a, b) { return core.utils.subarray(a, b); } +core.prototype.same = function (a, b) { + return core.utils.same(a, b); +} + core.prototype.clamp = function (x, a, b) { return core.utils.clamp(x, a, b); } diff --git a/main.js b/main.js index 4c81499e..befbbd0e 100644 --- a/main.js +++ b/main.js @@ -2,7 +2,7 @@ function main() { //------------------------ 用户修改内容 ------------------------// - this.version = "2.5.4"; // 游戏版本号;如果更改了游戏内容建议修改此version以免造成缓存问题。 + this.version = "2.5.5"; // 游戏版本号;如果更改了游戏内容建议修改此version以免造成缓存问题。 this.useCompress = false; // 是否使用压缩文件 // 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 @@ -182,8 +182,8 @@ function main() { this.floors = {} this.canvas = {}; - this.__VERSION__ = "2.5.4"; - this.__VERSION_CODE__ = 24; + this.__VERSION__ = "2.5.5"; + this.__VERSION_CODE__ = 25; } main.prototype.init = function (mode, callback) { diff --git a/project/data.js b/project/data.js index 5880029d..9b502c42 100644 --- a/project/data.js +++ b/project/data.js @@ -71,7 +71,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "firstData": { "title": "魔塔样板", "name": "template", - "version": "Ver 2.5.4", + "version": "Ver 2.5.5", "floorId": "sample0", "hero": { "name": "阳光", diff --git a/更新说明.txt b/更新说明.txt index 8a3e2648..d0ff4cbf 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -1,4 +1,17 @@ -HTML5魔塔样板V2.5.4 +HTML5魔塔样板V2.5.5 + +现在编辑器修改地图后可以直接读档生效,无需再重置地图或回放录像 +存档方式优化,大幅降低单个存档的占用空间 +脚本编辑器增加代码格式化的选项 +事件和脚本编辑器中Ctrl+S可以进行保存 +事件的移动勇士增加前进和后退两个操作 +事件编辑器的下拉框增加滚动条 +通关后将询问是否进行评分 +修复已知的所有Bug,大量细节优化 + +----------------------------------------------------------------------- + +HTML5魔塔样板V2.5.4 发布15x15的版本 独立出来的公共事件