littlejsengine 1.5.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -16
- package/{engine/index.d.ts → build/littlejs.d.ts} +1 -1
- package/{engine/engine.all.module.js → build/littlejs.esm.js} +5 -5
- package/build/littlejs.esm.min.js +1 -0
- package/{engine/engine.all.js → build/littlejs.js} +5 -5
- package/build/littlejs.min.js +1 -0
- package/{engine/engine.all.release.js → build/littlejs.release.js} +5 -5
- package/examples/breakout/index.html +3 -2
- package/examples/electron/build.bat +52 -0
- package/{electron → examples/electron}/electron.js +18 -21
- package/{game.js → examples/electron/game.js} +1 -1
- package/examples/electron/index.html +2 -0
- package/examples/electron/package.json +20 -0
- package/examples/empty/game.js +1 -1
- package/examples/empty/index.html +2 -2
- package/examples/module/game.js +1 -1
- package/examples/module/index.html +2 -1
- package/examples/particles/index.html +3 -2
- package/examples/platformer/index.html +3 -2
- package/examples/puzzle/index.html +3 -2
- package/{build.bat → examples/starter/build.bat} +14 -15
- package/examples/starter/game.js +111 -0
- package/examples/starter/index.html +27 -0
- package/examples/starter/tiles.png +0 -0
- package/examples/stress/index.html +3 -2
- package/examples/typescript/game.js +1 -1
- package/examples/typescript/game.ts +1 -1
- package/examples/typescript/index.html +2 -1
- package/package.json +2 -2
- package/{engine → src}/engine.js +1 -1
- package/src/engineBuild.bat +130 -0
- package/{engine → src}/engineInput.js +3 -3
- package/{engine → src}/engineMedals.js +1 -1
- package/electron/electronBuild.bat +0 -32
- package/electron/electronSetup.bat +0 -2
- package/electron/package.json +0 -21
- package/engine/engine.all.min.js +0 -1
- package/engine/engine.all.module.min.js +0 -1
- package/engine/engineBuild.bat +0 -127
- package/index.html +0 -26
- /package/{tiles.png → examples/electron/tiles.png} +0 -0
- /package/{favicon.png → examples/favicon.png} +0 -0
- /package/{engine → src}/engineAudio.js +0 -0
- /package/{engine → src}/engineDebug.js +0 -0
- /package/{engine → src}/engineDraw.js +0 -0
- /package/{engine → src}/engineExport.js +0 -0
- /package/{engine → src}/engineFont.png +0 -0
- /package/{engine → src}/engineObject.js +0 -0
- /package/{engine → src}/engineParticles.js +0 -0
- /package/{engine → src}/engineRelease.js +0 -0
- /package/{engine → src}/engineSettings.js +0 -0
- /package/{engine → src}/engineTileLayer.js +0 -0
- /package/{engine → src}/engineUtilities.js +0 -0
- /package/{engine → src}/engineWebGL.js +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<body><script>
|
|
2
|
+
eval(Function("[M='DYhuJzCBV~LKby?Vt_b^ejSdE[eOF]^xwJzztBUSE|iPNBKKb?dBsnnlAtsdW{Bah}DrNQBAvepYbgAd|MkbArM~O||rTzOp@j@plQJwXWvVhjJOIAP]qltDKs]}eKr_hNM[lCb@AimlGZse}EkgtrHOvPEpL_wCglz}RRMIaRQzRhG{}zBgw@o]PR]~GKdRJGuuTSzzixXpGA}gRynsIAu{Sw{F}R|LIG@CsRCM`JUJvCzAYYZu@oL[I|WDTw|soA_N|ancvowsba{YWMEFfRfNMYRp_TvI~Fx`ZQzun_?[FQ@j?nsDgS}HlS_G~]h^vAvy^dSsvmUzvoHPLSdEgeGgYV{KTFMcq?byagUHA{yNhjvosWF|JY}?fQEbD}OjGVwx^c}OMOl^bWOui^[Ivg[jsXiPsH`v}AUS`pXxUJz]hAOQhlYOCMUceMnrGhge|EkH{?WpWojSpLiJRRVcNwXKw{JXRZgzX]gQ@etO^dYcUGvirBooulMfYq@JovQKWTOHCIDd`K?junfya]tnwNmtrCnEB{FBvcPIR|p|]apt~LzVZ`uIsSeaTtTVKi[|LYGO[ML_ulpHJ?QteSYjISIHNzI~mePARzyvRJcPtslrQgXO`fAyNNzFJ{abI]jpXTnT{YFRvrJAZnOzUaRuTX?uAkmmeJpZJmvyULO@`p@R}[t~qOlHB_TqPslYp|R^ftUiccRghndwglFSLpBAa[g}cKvx|HibXgWlIGXsGIHCa_f[tS?]eiZq^dtAhlWJffyPW]n|D[zRUFIAdi_iVHNQfkSn@QdEqqhUEgzE{pCpfnhacZJWV[MOjtdQq_ZMcC@pwJwmnFt^HK^tEOUeu{nl[wvQqf{SE`UhYtcDsdLALAbt`qDfmeZ`Gyj_iWv_[?}SPzvE[AtFJ^_X?pq|SjuuYFSkniQYdhaUmNmvDtHn[DTt{TIE}NtkDvi~?bd~RAu|fK^?lOvUUv]AWT?Ui]^_Z{kytzlQ@rhR`_OTEnDFk[bDtj|uyttWJ_VkirTg]WBlS{[om@LudgyTdJ^MNdmXo^lRP`e`kKtZVD|YGFqjGCYQH`EpErSwlhtYDgRUwujfAXWXJI|NDwQ|OApShIKEJJeOcBUbchxxQ^}gcH?gbfNYwk~{|]LScUWE`Gzv{hx^FyioJP[^_CMUeICIIdroIVKkR}xTKYDLqUzfl{XVao`@zbtAlV{?mOXelBkgKeQuwqPWbf^PM]ahX]{IFKYF@b_VE_vFs[ct~l?CA_}mZV^aoMAdYCOU`PDjYFEwqxxUHWzpnY@?H~GagutCltWqq{zsWds^jkN{`z{Pp}pZCnyfV^tLhLE|ydFFDytCUAIghmjfWqbH?ma]_gRnYJsboB{nQSoIVYVrqHLO`mzC{QkZojEUA`FLfOKzM_mQommrT?yezZeYPodczzc_aQuQrBSNeQ@Kitt^QKmf@]KKHjygOxxYH?B^UgPp]zXK[xffIt`jHIFw?zfy~|m`KpIyJ{{nwW@TqacRjViIfW{UKT@mYNZWOTUeckbaYMnJ~h|}y_?a{nnE_s?GV_tWBqSPr?gqq@wfIZWLCA|CAN_MvkhvcnQhKZsBrmU^w[D|YNf}_nZJwNXM{Dw?PDY~rusf_Nrm{NyzSY}qt|y]mPgPRl?SliU@CxtCFf@ZNP`gg|g@FsI^mUayJjOK~doq~|GuDt`PwKMWyb}|~iklbESGhcS?a~zT_a]yTKpMi?Llrs@bQ_L|xh?wUOpuXkZoSzWDvwmyg[ggMnEAAr_w?Fctw|EHql|OGtTRN{XBWxdvVsiEwZkGFD|{WspkNjMSV[nxYmppwBVb]tlZReEPHhIDZfHgEZemYtiXft_}_sOEnA~U~`awBrmQ`W[[jaOu@Fp_dtyZc]|BR{[jSOy}SA]?sfaRz[jwiMufnOLOBKalL`JiYH]YUQMkwJuqvd[lPcZt[Ek?r`TkRDTXBszW}QszISPMPzj]l}ALBP?coK[M}QMu|wHvPrMNPA^vCUGbGeCBhF|SgQeVptFfDMWrpc@Taj~WpCNPzwvBSSY`ccans??UzK^adxVBOtiNdoZmqaJ]T^RkMfPuxlyn|YUcdf[AQWqOVGUTUSz_CROMCRtM^WCCCcFo}o@bH[J{l?wUM[soFzKgJRpv[FCLYRXOd|bdqfd?AAwYCSeZkbWj~SoXDi`xRUyQWQX_j@GuxZkjxN^RZgfd~~|N`gBA]kJ^jLTZxlNV]N`_urbSf|Yt?prXcvhiS?hfbamVv{LPqhim{]bCM}OA}^DYjrDsrFIsSDvhCKLu^]`vKo{tWV_FdyqpUPIKgN`Qa[GaKuKvF?kcEhJvS[ypCruGUVHmk^xG_Q@HXMmpiaKvf?UjJ{icwDQrrq{UYw_DmVFzhHqzUUi?o_~VRU_HxKdUm|y`dvA^{Ai`tnSdO@YsBWAIBflM?UvLR]vTf`TcMoc`fVGNWIkTJsfMkDMzHIJcuC^ASrCabcl[?QfonyEFyogsunyRacV{CgFm[hynYFecGgAdftoVsZJNdPCRDkk[UUMWq_Pox`Xk{HeeROyfq`?rCg?JIrtnO@Ns{Tm{@r|}gExLpF|JgzZV~eliS?zT?y~CxIIZ?[_SRbJcO@_kdVJOWwZNAUFEVBBgxK_xhkGZa_JxymZlCAaygyaf?dIo]m}Wgpf~K_]bAQgOwnJ{k{XmHGGyePZsjd{?OvUCG_zrjAo{Uo_QyCJzWJ]wf|_FIYQxgrdqjv~lcItCWI}sAyqPX]RlX?FJjKUBJKccMPWcgp[`YALWnUJpmyp`oqB~IP@zOZZpz`b_xMG}dCNuxsaRgsqIv?cGPWEFWeBIFPQ@l}OVPbwvrGvkPBZ?jRyrh^i{gO@?wqvzGHzFnAPw}mkpzvJWrNQfLof]WL[}?nXSz_ADPjhQcG_aGS[|@DYJqMX?O^NqUQ^Bi@d~}`fhleXD?L~J|NzlkQoJCBMWvwgzMhAXqxIbIgNf@?vroNXhzJ?@oUShEqi}LAyTp|cYKyjf|Vs[wbGDfkegITHOozosxloZdxlFmE_?pjFMZMrR]DbjdzXPzNYT}@rPKDwY^_WWgNRYtoIETZhvzXP[wa|tWKTwF^KogSPW{o?[N}AyT`GtdzSErko?DtjzKBJdWXugT~s`rW~|TjTCTgCeD|Fu_YsR]VXmUOxBVVY|GMNC`BhQltZtz`YsG?k_DXUfSGKMSYlhiabhMLOyYJfUlR_|RRzFmb@FQxZO`wlGQP^FxEE`?l~n~W`DNYmbnz_pnZZaDG|_YeeF[wqjSVu{^BMQg}wpp{J_qyLlzMrTY|HDTN`QzoQuHeaktwqmPOg[Z[cEzjmQyF][qtCQ]NPJk~jZkDRDej]yk^tLJmRJZsEBh{Sa]Md^D|EI~yCSNMqAjn?BMwuXNe|KnjSXrmPThgj_hc^B_SficQw|T@SSgzBygIwDtvEqDRlTB}hA@mZUW]g`dfbtEsR?rWqWkVp``InYlyoerOtU?okUZV?jK}CPWw?Onq?^IezHJTqBASonkuD{_GzqZ[aSMZPhvBnpQYII~VT}JPxgQUZShecdMcDNYjemVgIF|~dnM[{@~~QDAcCeK_QLSx|BFIC`esdZmo??xI]~p|uRcQY_Q}LlzWioticXqY?pNOWNhOW_q{sm[?NLoivJcl~qDRwFM_dTK[j@^DF[bFY`sEVhUq[miWk[xV?RM?KVNSG^f_qnvRxN?zMwCaxwZNvw@ohtzk^gDC`Z_]zUHnOFLr~ZhGFYIYyWOl?IbAKVJcKtj@~ToUxGCDDZIx?nd?iOV^uh{dsRWtva?faEhvImhRbneQWoSCPFu}[Hb]XrcDOqkVbkyIazdpDcAaCxYW]jmcQhOsE|b[}CdczX^J}yKGjtAJAWsgGSV~ntNxtmYJEhbh{u[HKv_kPDhZt?oGT~V}dLsPWWCpT|qtGix|mfU`rFh`ir{bTgskDf]FZ}NZXJiAVUNaiIwkuskx~}u@djezJXzq?LBA^_dCIW@XW|t`bouxD|ACJvpChHVp[|wD]FpB_~~lV_Pz[|_s[ku^wAzh[{qm|W~K@OBK@vlDG|Y|RelcMQKvtmmdVGQ}OCFexbHzJR}Y}akNvONeOxcZ@JhVUC{dcXndDvsG[ytriKIdRIwVJgQ]wX?Cg~aTXtDcvVM^Z``tLyH~Ez~BRKDBplY`tnvS_w|RmGBQ[Yh_Q[ftvHMPpFoUR|cAGAjKj^[Ht@cD}ruQOpnTQhpYC`@yKdJPaSbIRv}VfCbYDE@BUuqaM?AFYo_ZGM]{ndLiLzrQsYWIUrisBQBBBOf_ImzH@|}xU}yC~ry`mbSlHgnMDKqFIRFqKZ?CXUToMcveLQaQ~]|OPC[[tfFvu{V^h]s[G{l?O`Y}kBnJk}XPy`ldz^Ktur?CEWVfWkgLMzS`usxxfDEuN`UHbfikOU~YG]lDfAlv]Vctn`KxS~v|ALhjCSZEHC}NwYuRIyjgYQUtp]lMAGyQNqFLfyMiHnK`SyMdXOofrwQg_VMKJgP@QtWto@v]qAGxbJDh_MVJJZRASfi@GjM]TwzgaM^zyLke~eYnHcq_ZBr`RKoeq~pauJETAgraal?EdOgqRfcjcpBExanDBdw[YYj]p@nRyCcBFx_STvj~nMeXGyEslPfCQJm_acS|}OvEeYanDQSEVzFbVIWvNnIxjPT_NXi@y]IkSGiFmu^lq`pKB_UpFoSmKkufT[{^i?rccrmoGMVtYjcOZolZdgUwKI^voQfjNd}LxukpVjx~VqN|nyLUBY^qAqn`^?phzGoiRhx_c?btr^AFByUK]wNtGGrkfsXpjjLUCe?O}iCqbnwBNXjrrVFPgKtBKMUnpaYdj@acAua[PeU]n_U?tpDMoepGZhPcuB|IynrfSCKNkzftCqZ?ti~jKOHBRM}jWza^cVFRXnzK?tL_TFmqSsqMfIAPINqLDqQy}YZGuhyzyb|OLj~vfgRfEfv?usSOLsF`[uUcJY_gnaKF?dXNvDEFQWqDbSBpi~ZCQEUy_hd@Owm^YKt_BIXv@NDk[jxRMWICW~GD[`sTQLGv`gPyUbmDdDO}OdbKvwzLoDKavDJRgQwnHIMe?u|xtBo?eqqSPMgwfzyatUiSnBnEuToTwb]cbrRQQ^uAIPswLp|hKaPWk^`MKhE^auir{sJNzqptiGN@Iz@~X`O`JuL?efbeF_k][dvHESTkxn^HnXUsxPbI?lE|EDbKmCRL~NprItUGvq~q{qBp]njD[yctdo^JxjZFSrgHwDouGkqHxgg}mj{noEHzfmb~JSVzIoyAlzwtmQbL~OdZWRZ`mpUDKagmcvNmne[jP|nxCJqzUgLXJBmGG~?a}uDTGbIqsC@u]VfgPVgbg[xto`zeQ_nXRbwY}K~|n`yKeSBFswLA?oCOdiwmc?YwcVGvitUWIjVSawT~Yh`NXx~Jr?HRf}LqVExCisFu|@KvWGETo]?[Xviep^tXQlsS|xschkIzdVzNdgf?ZcwsXX]RanjaebtW[Ujl|^BOlkwK`CTOkvyC?N@EnuWVN]X?oUwlhJVyZAVLmLW]P_vrZoZ}O]vFrWBXwz{lU]XVwrPx]khjwUuv}xUAfaVgfEwv[JgiUpxIIfr}??wIhnnNvMtbmq[hDkfgfTaInXGW[WW?@nnaDVLbGRvFXDSZHcjoMrwbZ`BQCegnD}NJjtNR`[AfJjVAfwrWLnVftTcVYUNCFb[n}[yyEEFSHNllFBh@c^^t?bQDld}OlyIxKwTv[BnLENhKGrHITL^|waFPlQsa]soPPFxON}UKWy^yvyKe]WuqWb]xaGAbPL@tGyLknI_AfSAj^YD?tlORYT_Go`AdJXhJkgiIAhIzV`^ZsyCagoORq`yviJcbAJKuuiE}c{WeoI_mjcjLQtfwgGIYzYGsTE@i@IrvgUj[U[DzmS|bH?DDeDldazEsXBLlqf[uUeYPtq`tLUvkIs~a`HiXFac~WV@t[[eAnLWcpvASBOYiRLCdyCLwpBQXwXGJorQcyNTQkBQQ][rYy~p^RCj~ELPkV`aka}aNSLpyDydUGrC@zG?wSlIuvQjaZH}~tIgYYvrfXIaMHvMg}@~xgr[NKsgUpGcGBwVcRmjw@@NFaGY[|WyQkF_n^~rGpcDr?fqBEq~ZoagW[wCMirZB[l}~hSX^XzCyabfiLXPkbDplwGdIzJPNPQb@BtN^Wmh[?]dMeCkwa@VQSeQCkEQwKBpuZ_ClD}E_sEr?B`_rupxp?ckRsn~Cfoxji^Tucc@}nKCFrW@gHe?Cxd@}SlS@iX^aTzMY_CK@o|nr}{y@qXsgRJ`ItgUP?yvnaIxTr{AfplV}cvEVUeUFPtFD?g_imZ^tw]vHcFclKsqvOYdgJl@hlOrNN|zniXkJMqiSvtnn~AUyuOheTwX_tLz|_cfikR{IEyRw~OuCf[]IAT[PPKIOnc|IAsec^cFwcoeIHFFUQAyRIUAEDzngxosbFd@NEJzFGQCGwWKJNmBwZ_F}OA}MKzIE@LAfAXcp}fNBNCTpGgmV[BaoDIvOd}h~@^N@WD?w|s[i[B@Pv_ZMCzk^qBbNuVzjYWscbJfQVPn|mCKrrazm]QAVS?mfw^vGf]b@N?xA@~b{fily@]f_F@FW|DdLsFng?rdE`PftgWBH^rYn@f`zAZanDdBXkAplT}mpcokSIVfmHbvKNmYblbBu^OYJQqKFHgRwuYfOnvvaSuXBUWS?^Bzkto^gbv?YlP@lnWGEayDQsaqu_fm{WcoCleS@axo~[FqMaUfIikX~vssKAzyevpoHmLGKFfus|tfroqyXJMJ|{`MNrg}Rf`T]weSQIPnD~L?mRfT^ciedQ~BK]?`OcBE~B@j]`D?OF]GPfIwnlX|jgopQQNgqMZkqAjz}ZYDnsBPlyYigZEy[Gfdi@{afvogVO}du{f}j]Eto@si]yf?dVr[yaSIXBrxWiSRxa_BG_pADKsF]|`mLGUHdE_Z}moOXKMbwpzi[XfYTQ_QrdN[pyowYJue|{xLgVdI}{?njX`^MwWV@LWAanGO|u`V?`Da{JAT?HvoL|sDTeeZxSf@hIqwRLrlQGONq?lOCeoAIF?I?AOdg`MxyfyKyyXEjsv[r^Uq?Wj~CoRvTjjxausxHB`CwauprXOle`IpYdsOg]F?iDz]hTSp[_FhmUkRGy]f^dS?fJYFYYgaYSi_DUbNWMSYJfdheVFdw[I}WjP_GMD^LMn~pGQytBn~Qe}aT^VeM_E{M`mNA^{orkcdMy?DToGNLtF[oPbBCd|BmXn|ynz@noy~b}|mGEOQ[f_Dx`JxhL]?DZuvdEpd[f]z|b{xCkFirFxdK|ZAOofbKYngwAEKeaPsFEg?Q`vgkb}`rmuz^f`hvVpOjtjqtcXmhq^W@uRPNnqcmVhp`HJ@WuUIOmpc?`CE??ewy}gAEcMUjY^MqrtQrfoQhqbx]lrHn`cAG|cI`rHF?_?g]HXG][~BcjDigTFkgkW[geovnUFARvz[i?]EV{rIAJ}Rna@_L[vdrd{QlbHs[FlJKpRXlyPp`zeNYoT_am]YOkJiWZBBhb~tvANUcsy|mmj]X|cUdkwIW|vGFUselsg?QFjk?lI[XUr|je@~`NWwJhFHG`ek}TX?UcezDgU]TcMdRy{rq}r[||oBIAXjFtKx_?rXhiVN|dwuVFbfVMsBzfpq|Z|bKRifQ_Bp@mY_]dt{lMB`vDGs~aBKNS@DQ{trAl^^nO_BSb{nZ]AuCZGN@cDPYL{ZJpPvR[PUgoLncXbMpgucJjgETBi[hhmpzbw@TjvZOP]EhFcH{g]HWOmSOBkEjXCkvO`gZSL?NW}PBGqaObGE]Qw[UZtEv~xLk@^~oSXWBaOmjnNQYh^H~KQbhox?X{uNa}aJJf}Qc~`}_MtvjXcNr@?VafbhkRFJqCSFe``I{yqFMjmUVB^fau~}ieSUcEOe`l?VWThanHwXPU`fGHFruFQm`h~`{|GVHv~_Wbz_v]`_TLuGYp_RZvFtTn@@PUTSMWXRNnoEaYKNT{sqQIHt_UUvA|ziPqvbQi~t@s]QmrQaYxpIFHqdYxsRSrUb^GhDk`@wYE^JFABqmjKtkWwWkWfMM}Yj~bvgd`WQYefZg}YqJ'",...']charCodeAtUinyxp',"for(;e<13590;c[e++]=x-128)for(x=1;x<128;n=p.map((i,y)=>(t=r[i]*2+1,t=Math.log(t/(h-t)),A-=a[y]*t,t/750)),A=~-h/(1+Math.exp(A))|1,U=o%h<A,o=o%h+(U?A:h-A)*(o>>13)-!U*A,p.map((i,y)=>(t=r[i]+=(U*h/2-r[i]<<17)/((C[i]+=C[i]<5)+.1)>>17,a[y]+=n[y]*(U-A/h))),x=x*2+U)for(p='010202103203210431053105410642065206541'.split(A=0).map((i,y)=>(t=0,[...i].map((i,y)=>(t=t*997+(c[e-i]|0)|0)),h*512-1&t*997+x)*12+y);o<h*512;o=o*64|M.charCodeAt(d++)&63);for(C=String.fromCharCode(...c);r=/[\0-]/.exec(C);)with(C.split(r))C=join(shift());return C")([],[],1<<13,[0,0,0,0,0,0,0,0,0,0,0,0],new Uint16Array(51e6).fill(1<<11),new Uint8Array(51e6),0,0,0))</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "LittleJSGame",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A minimal Electron application",
|
|
5
|
+
"main": "electron.js",
|
|
6
|
+
"scripts": {},
|
|
7
|
+
"repository": "https://github.com/electron/electron-quick-start",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"Electron",
|
|
10
|
+
"LittleJS",
|
|
11
|
+
"Game"
|
|
12
|
+
],
|
|
13
|
+
"author": "GitHub",
|
|
14
|
+
"license": "CC0-1.0",
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"electron": "~25.2.0",
|
|
17
|
+
"electron-packager": "~17.1.1"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {}
|
|
20
|
+
}
|
package/examples/empty/game.js
CHANGED
|
@@ -27,7 +27,7 @@ function gameRender()
|
|
|
27
27
|
///////////////////////////////////////////////////////////////////////////////
|
|
28
28
|
function gameRenderPost()
|
|
29
29
|
{
|
|
30
|
-
drawTextScreen('
|
|
30
|
+
drawTextScreen('Hello World!', mainCanvasSize.scale(.5), 80);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
///////////////////////////////////////////////////////////////////////////////
|
package/examples/module/game.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little JS Module Demo</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
</head><body>
|
|
7
8
|
|
|
8
9
|
<!-- Add your game scripts here -->
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little JS Particle System Designer</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
<style>
|
|
7
8
|
input
|
|
8
9
|
{
|
|
@@ -15,7 +16,7 @@ button
|
|
|
15
16
|
</style>
|
|
16
17
|
</head><body>
|
|
17
18
|
|
|
18
|
-
<script src=../../
|
|
19
|
+
<script src=../../build/littlejs.js?125></script>
|
|
19
20
|
<script>
|
|
20
21
|
|
|
21
22
|
'use strict';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little JS Platforming Game Demo</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
</head><body>
|
|
7
8
|
|
|
8
|
-
<script src=../../
|
|
9
|
+
<script src=../../build/littlejs.js?125></script>
|
|
9
10
|
<script src=gameObjects.js?125></script>
|
|
10
11
|
<script src=gamePlayer.js?125></script>
|
|
11
12
|
<script src=gameEffects.js?125></script>
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little Puzzle Game Demo</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
</head><body>
|
|
7
8
|
|
|
8
|
-
<script src=../../
|
|
9
|
+
<script src=../../build/littlejs.js?125></script>
|
|
9
10
|
<script src=game.js?125></script>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
rem Simple build script for LittleJS by Frank Force
|
|
2
2
|
rem Minfies and combines index.html and index.js and zips the result
|
|
3
|
-
rem Run buildSetup.bat to install required dependencies.
|
|
4
3
|
|
|
5
4
|
set NAME=game
|
|
6
5
|
set BUILD_FOLDER=build
|
|
@@ -9,22 +8,24 @@ set BUILD_FILENAME=index.js
|
|
|
9
8
|
rem install dev packages
|
|
10
9
|
rem call npm install
|
|
11
10
|
|
|
12
|
-
rem rebuild engine first
|
|
13
|
-
cd engine
|
|
14
|
-
call engineBuild.bat
|
|
15
|
-
if %ERRORLEVEL% NEQ 0 (
|
|
16
|
-
exit /b %ERRORLEVEL%
|
|
17
|
-
)
|
|
18
|
-
cd ..
|
|
19
|
-
|
|
20
11
|
rem remove old files
|
|
21
12
|
del %NAME%.zip
|
|
22
13
|
rmdir /s /q %BUILD_FOLDER%
|
|
23
14
|
|
|
24
15
|
rem copy engine release build
|
|
25
16
|
mkdir %BUILD_FOLDER%
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
pushd %BUILD_FOLDER%
|
|
18
|
+
|
|
19
|
+
rem rebuild engine first
|
|
20
|
+
pushd ..\..\..\src
|
|
21
|
+
call engineBuild.bat
|
|
22
|
+
if %ERRORLEVEL% NEQ 0 (
|
|
23
|
+
pause
|
|
24
|
+
exit /b %ERRORLEVEL%
|
|
25
|
+
)
|
|
26
|
+
popd
|
|
27
|
+
|
|
28
|
+
type ..\..\..\build\littlejs.release.js >> %BUILD_FILENAME%
|
|
28
29
|
echo. >> %BUILD_FILENAME%
|
|
29
30
|
|
|
30
31
|
rem add your game's files to include here
|
|
@@ -67,12 +68,10 @@ rem delete intermediate files
|
|
|
67
68
|
del %BUILD_FILENAME%
|
|
68
69
|
|
|
69
70
|
rem zip the result, ect is recommended
|
|
70
|
-
call
|
|
71
|
+
call ..\..\..\node_modules\ect-bin\vendor\win32\ect.exe -9 -strip -zip ..\%NAME%.zip index.html tiles.png
|
|
71
72
|
if %ERRORLEVEL% NEQ 0 (
|
|
72
73
|
pause
|
|
73
74
|
exit /b %ERRORLEVEL%
|
|
74
75
|
)
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
rem pause to see result
|
|
77
|
+
popd
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
LittleJS Hello World Starter Game
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
// sound effects
|
|
8
|
+
const sound_click = new Sound([1,.5]);
|
|
9
|
+
|
|
10
|
+
// medals
|
|
11
|
+
const medal_example = new Medal(0, 'Example Medal', 'Welcome to LittleJS!');
|
|
12
|
+
medalsInit('Hello World');
|
|
13
|
+
|
|
14
|
+
// game variables
|
|
15
|
+
let particleEmiter;
|
|
16
|
+
|
|
17
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
18
|
+
function gameInit()
|
|
19
|
+
{
|
|
20
|
+
// create tile collision and visible tile layer
|
|
21
|
+
initTileCollision(vec2(32, 16));
|
|
22
|
+
const pos = vec2();
|
|
23
|
+
const tileLayer = new TileLayer(pos, tileCollisionSize);
|
|
24
|
+
|
|
25
|
+
// get level data from the tiles image
|
|
26
|
+
const imageLevelDataRow = 1;
|
|
27
|
+
mainContext.drawImage(tileImage, 0, 0);
|
|
28
|
+
for (pos.x = tileCollisionSize.x; pos.x--;)
|
|
29
|
+
for (pos.y = tileCollisionSize.y; pos.y--;)
|
|
30
|
+
{
|
|
31
|
+
const imageData = mainContext.getImageData(pos.x, 16*(imageLevelDataRow+1)-pos.y-1, 1, 1).data;
|
|
32
|
+
if (imageData[0])
|
|
33
|
+
{
|
|
34
|
+
const tileIndex = 1;
|
|
35
|
+
const direction = randInt(4)
|
|
36
|
+
const mirror = randInt(2);
|
|
37
|
+
const color = randColor();
|
|
38
|
+
const data = new TileLayerData(tileIndex, direction, mirror, color);
|
|
39
|
+
tileLayer.setData(pos, data);
|
|
40
|
+
setTileCollisionData(pos, 1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
tileLayer.redraw();
|
|
44
|
+
|
|
45
|
+
// move camera to center of collision
|
|
46
|
+
cameraPos = tileCollisionSize.scale(.5);
|
|
47
|
+
|
|
48
|
+
// enable gravity
|
|
49
|
+
gravity = -.01;
|
|
50
|
+
|
|
51
|
+
// create particle emitter
|
|
52
|
+
particleEmiter = new ParticleEmitter(
|
|
53
|
+
vec2(16), 0, // emitPos, emitAngle
|
|
54
|
+
1, 0, 500, PI, // emitSize, emitTime, emitRate, emiteCone
|
|
55
|
+
0, vec2(16), // tileIndex, tileSize
|
|
56
|
+
new Color(1,1,1), new Color(0,0,0), // colorStartA, colorStartB
|
|
57
|
+
new Color(1,1,1,0), new Color(0,0,0,0), // colorEndA, colorEndB
|
|
58
|
+
2, .2, .2, .1, .05, // time, sizeStart, sizeEnd, speed, angleSpeed
|
|
59
|
+
.99, 1, 1, PI, // damping, angleDamping, gravityScale, cone
|
|
60
|
+
.05, .5, 1, 1 // fadeRate, randomness, collide, additive
|
|
61
|
+
);
|
|
62
|
+
particleEmiter.elasticity = .3; // bounce when it collides
|
|
63
|
+
particleEmiter.trailScale = 2; // stretch in direction of motion
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
67
|
+
function gameUpdate()
|
|
68
|
+
{
|
|
69
|
+
if (mouseWasPressed(0))
|
|
70
|
+
{
|
|
71
|
+
// play sound when mouse is pressed
|
|
72
|
+
sound_click.play(mousePos);
|
|
73
|
+
|
|
74
|
+
// change particle color and set to fade out
|
|
75
|
+
particleEmiter.colorStartA = new Color;
|
|
76
|
+
particleEmiter.colorStartB = randColor();
|
|
77
|
+
particleEmiter.colorEndA = particleEmiter.colorStartA.scale(1,0);
|
|
78
|
+
particleEmiter.colorEndB = particleEmiter.colorStartB.scale(1,0);
|
|
79
|
+
|
|
80
|
+
// unlock medals
|
|
81
|
+
medal_example.unlock();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// move particles to mouse location if on screen
|
|
85
|
+
if (mousePosScreen.x)
|
|
86
|
+
particleEmiter.pos = mousePos;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
90
|
+
function gameUpdatePost()
|
|
91
|
+
{
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
96
|
+
function gameRender()
|
|
97
|
+
{
|
|
98
|
+
// draw a grey square in the background without using webgl
|
|
99
|
+
drawRect(cameraPos, tileCollisionSize.add(vec2(5)), new Color(.2,.2,.2), 0, 0);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
103
|
+
function gameRenderPost()
|
|
104
|
+
{
|
|
105
|
+
// draw to overlay canvas for hud rendering
|
|
106
|
+
drawTextScreen('LittleJS Engine Demo', vec2(mainCanvasSize.x/2, 80), 80);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
110
|
+
// Startup LittleJS Engine
|
|
111
|
+
engineInit(gameInit, gameUpdate, gameUpdatePost, gameRender, gameRenderPost, 'tiles.png');
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<html><head>
|
|
2
|
+
<title>Little JS Starter Project</title>
|
|
3
|
+
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
4
|
+
<meta name=apple-mobile-web-app-capable content=yes>
|
|
5
|
+
<meta name=mobile-web-app-capable content=yes>
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
7
|
+
</head><body>
|
|
8
|
+
|
|
9
|
+
<!-- LittleJS engine scripts -->
|
|
10
|
+
<script src=../../src/engineDebug.js?125></script>
|
|
11
|
+
<script src=../../src/engineUtilities.js?125></script>
|
|
12
|
+
<script src=../../src/engineSettings.js?125></script>
|
|
13
|
+
<script src=../../src/engineObject.js?125></script>
|
|
14
|
+
<script src=../../src/engineDraw.js?125></script>
|
|
15
|
+
<script src=../../src/engineInput.js?125></script>
|
|
16
|
+
<script src=../../src/engineAudio.js?125></script>
|
|
17
|
+
<script src=../../src/engineTileLayer.js?125></script>
|
|
18
|
+
<script src=../../src/engineParticles.js?125></script>
|
|
19
|
+
<script src=../../src/engineMedals.js?125></script>
|
|
20
|
+
<script src=../../src/engineWebGL.js?125></script>
|
|
21
|
+
<script src=../../src/engine.js?125></script>
|
|
22
|
+
|
|
23
|
+
<!-- You can also include all engine scripts like this... -->
|
|
24
|
+
<!-- <script src=engine/engine.all.js></script> -->
|
|
25
|
+
|
|
26
|
+
<!-- Add your game scripts here -->
|
|
27
|
+
<script src=game.js?125></script>
|
|
Binary file
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little JS Stress Test</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
</head><body>
|
|
7
8
|
|
|
8
|
-
<script src=../../
|
|
9
|
+
<script src=../../build/littlejs.min.js?125></script>
|
|
9
10
|
<script>
|
|
10
11
|
|
|
11
12
|
/*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
// import module
|
|
6
|
-
import * as LittleJS from '../../
|
|
6
|
+
import * as LittleJS from '../../build/littlejs.esm.js';
|
|
7
7
|
const { Vector2, Color, Timer, vec2 } = LittleJS;
|
|
8
8
|
// sound effects
|
|
9
9
|
const sound_click = new LittleJS.Sound([1, .5]);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<html><head>
|
|
2
|
+
<title>Little TypeScript Demo</title>
|
|
2
3
|
<meta name=viewport content=width=device-width,height=device-height,initial-scale=1,maximum-scale=1>
|
|
3
4
|
<meta name=apple-mobile-web-app-capable content=yes>
|
|
4
5
|
<meta name=mobile-web-app-capable content=yes>
|
|
5
|
-
<link rel=icon type=image/png href
|
|
6
|
+
<link rel=icon type=image/png href=../favicon.png>
|
|
6
7
|
</head><body>
|
|
7
8
|
|
|
8
9
|
<!-- Add your game scripts here -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "littlejsengine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "LittleJS - Tiny and Fast HTML5 Game Engine",
|
|
5
5
|
"main": "engine/engine.all.module.js",
|
|
6
6
|
"repository": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"homepage": "https://github.com/KilledByAPixel/LittleJS",
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "
|
|
26
|
+
"build": "cd src && engineBuild.bat"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"ect-bin": "~1.4.1",
|
package/{engine → src}/engine.js
RENAMED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
rem Simple build script for LittleJS Engine by Frank Force
|
|
2
|
+
rem Minfies and combines index.html and index.js and zips the result
|
|
3
|
+
rem Run npm install first to install required dependencies
|
|
4
|
+
|
|
5
|
+
rem --- BUILD ENGINE DEBUG ---
|
|
6
|
+
|
|
7
|
+
set BUILD_FOLDER=build
|
|
8
|
+
set ENGINE_NAME=littlejs
|
|
9
|
+
|
|
10
|
+
cd ..
|
|
11
|
+
rem remove old files
|
|
12
|
+
rmdir /s /q %BUILD_FOLDER%
|
|
13
|
+
mkdir %BUILD_FOLDER%
|
|
14
|
+
pushd %BUILD_FOLDER%
|
|
15
|
+
|
|
16
|
+
rem --- BUILD ENGINE ALL ---
|
|
17
|
+
|
|
18
|
+
set OUTPUT_FILENAME=%ENGINE_NAME%.js
|
|
19
|
+
|
|
20
|
+
rem combine code
|
|
21
|
+
type ..\src\engineDebug.js >> %OUTPUT_FILENAME%
|
|
22
|
+
echo.>> %OUTPUT_FILENAME%
|
|
23
|
+
type ..\src\engineUtilities.js >> %OUTPUT_FILENAME%
|
|
24
|
+
echo.>> %OUTPUT_FILENAME%
|
|
25
|
+
type ..\src\engineSettings.js >> %OUTPUT_FILENAME%
|
|
26
|
+
echo.>> %OUTPUT_FILENAME%
|
|
27
|
+
type ..\src\engineObject.js >> %OUTPUT_FILENAME%
|
|
28
|
+
echo.>> %OUTPUT_FILENAME%
|
|
29
|
+
type ..\src\engineDraw.js >> %OUTPUT_FILENAME%
|
|
30
|
+
echo.>> %OUTPUT_FILENAME%
|
|
31
|
+
type ..\src\engineInput.js >> %OUTPUT_FILENAME%
|
|
32
|
+
echo.>> %OUTPUT_FILENAME%
|
|
33
|
+
type ..\src\engineAudio.js >> %OUTPUT_FILENAME%
|
|
34
|
+
echo.>> %OUTPUT_FILENAME%
|
|
35
|
+
type ..\src\engineTileLayer.js >> %OUTPUT_FILENAME%
|
|
36
|
+
echo.>> %OUTPUT_FILENAME%
|
|
37
|
+
type ..\src\engineParticles.js >> %OUTPUT_FILENAME%
|
|
38
|
+
echo.>> %OUTPUT_FILENAME%
|
|
39
|
+
type ..\src\engineMedals.js >> %OUTPUT_FILENAME%
|
|
40
|
+
echo.>> %OUTPUT_FILENAME%
|
|
41
|
+
type ..\src\engineWebGL.js >> %OUTPUT_FILENAME%
|
|
42
|
+
echo.>> %OUTPUT_FILENAME%
|
|
43
|
+
type ..\src\engine.js >> %OUTPUT_FILENAME%
|
|
44
|
+
echo.>> %OUTPUT_FILENAME%
|
|
45
|
+
|
|
46
|
+
rem --- BUILD ENGINE RELEASE ---
|
|
47
|
+
|
|
48
|
+
set OUTPUT_FILENAME=%ENGINE_NAME%.release.js
|
|
49
|
+
|
|
50
|
+
rem combine code
|
|
51
|
+
type ..\src\engineRelease.js >> %OUTPUT_FILENAME%
|
|
52
|
+
echo.>> %OUTPUT_FILENAME%
|
|
53
|
+
type ..\src\engineUtilities.js >> %OUTPUT_FILENAME%
|
|
54
|
+
echo.>> %OUTPUT_FILENAME%
|
|
55
|
+
type ..\src\engineSettings.js >> %OUTPUT_FILENAME%
|
|
56
|
+
echo.>> %OUTPUT_FILENAME%
|
|
57
|
+
type ..\src\engine.js >> %OUTPUT_FILENAME%
|
|
58
|
+
echo.>> %OUTPUT_FILENAME%
|
|
59
|
+
type ..\src\engineObject.js >> %OUTPUT_FILENAME%
|
|
60
|
+
echo.>> %OUTPUT_FILENAME%
|
|
61
|
+
type ..\src\engineDraw.js >> %OUTPUT_FILENAME%
|
|
62
|
+
echo.>> %OUTPUT_FILENAME%
|
|
63
|
+
type ..\src\engineInput.js >> %OUTPUT_FILENAME%
|
|
64
|
+
echo.>> %OUTPUT_FILENAME%
|
|
65
|
+
type ..\src\engineAudio.js >> %OUTPUT_FILENAME%
|
|
66
|
+
echo.>> %OUTPUT_FILENAME%
|
|
67
|
+
type ..\src\engineTileLayer.js >> %OUTPUT_FILENAME%
|
|
68
|
+
echo.>> %OUTPUT_FILENAME%
|
|
69
|
+
type ..\src\engineParticles.js >> %OUTPUT_FILENAME%
|
|
70
|
+
echo.>> %OUTPUT_FILENAME%
|
|
71
|
+
type ..\src\engineMedals.js >> %OUTPUT_FILENAME%
|
|
72
|
+
echo.>> %OUTPUT_FILENAME%
|
|
73
|
+
type ..\src\engineWebGL.js >> %OUTPUT_FILENAME%
|
|
74
|
+
echo.>> %OUTPUT_FILENAME%
|
|
75
|
+
|
|
76
|
+
rem --- BUILD ENGINE MINIFIED ---
|
|
77
|
+
|
|
78
|
+
set OUTPUT_FILENAME=%ENGINE_NAME%.min.js
|
|
79
|
+
|
|
80
|
+
rem start with release build
|
|
81
|
+
copy %ENGINE_NAME%.release.js %OUTPUT_FILENAME%
|
|
82
|
+
|
|
83
|
+
rem check code with closure
|
|
84
|
+
move %OUTPUT_FILENAME% %OUTPUT_FILENAME%.temp
|
|
85
|
+
call npx google-closure-compiler --js=%OUTPUT_FILENAME%.temp --js_output_file=%OUTPUT_FILENAME% --language_out=ECMASCRIPT_2021 --warning_level=VERBOSE --jscomp_off=*
|
|
86
|
+
del %OUTPUT_FILENAME%.temp
|
|
87
|
+
if %ERRORLEVEL% NEQ 0 (
|
|
88
|
+
pause
|
|
89
|
+
exit /b %ERRORLEVEL%
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
rem lightly minify with uglify
|
|
93
|
+
call npx uglifyjs -o %OUTPUT_FILENAME% -- %OUTPUT_FILENAME%
|
|
94
|
+
if %ERRORLEVEL% NEQ 0 (
|
|
95
|
+
pause
|
|
96
|
+
exit /b %ERRORLEVEL%
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
rem --- BUILD ENGINE ESM MODULE ---
|
|
100
|
+
|
|
101
|
+
set OUTPUT_FILENAME=%ENGINE_NAME%.esm.js
|
|
102
|
+
type %ENGINE_NAME%.js >> %OUTPUT_FILENAME%
|
|
103
|
+
echo.>> %OUTPUT_FILENAME%
|
|
104
|
+
type ..\src\engineExport.js >> %OUTPUT_FILENAME%
|
|
105
|
+
echo.>> %OUTPUT_FILENAME%
|
|
106
|
+
|
|
107
|
+
rem --- BUILD ENGINE ESM MODULE RELEASE ---
|
|
108
|
+
|
|
109
|
+
set OUTPUT_FILENAME=%ENGINE_NAME%.esm.min.js
|
|
110
|
+
type %ENGINE_NAME%.min.js >> %OUTPUT_FILENAME%
|
|
111
|
+
echo.>> %OUTPUT_FILENAME%
|
|
112
|
+
type ..\src\engineExport.js >> %OUTPUT_FILENAME%
|
|
113
|
+
echo.>> %OUTPUT_FILENAME%
|
|
114
|
+
|
|
115
|
+
rem lightly minify with uglify
|
|
116
|
+
call npx uglifyjs -o %OUTPUT_FILENAME% -- %OUTPUT_FILENAME%
|
|
117
|
+
if %ERRORLEVEL% NEQ 0 (
|
|
118
|
+
pause
|
|
119
|
+
exit /b %ERRORLEVEL%
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
rem --- BUILD TYPESCRIPT DEFINITIONS ---
|
|
123
|
+
|
|
124
|
+
call npx tsc %ENGINE_NAME%.esm.js --declaration --allowJs --emitDeclarationOnly --outFile %ENGINE_NAME%.d.ts
|
|
125
|
+
if %ERRORLEVEL% NEQ 0 (
|
|
126
|
+
pause
|
|
127
|
+
exit /b %ERRORLEVEL%
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
popd
|
|
@@ -142,15 +142,15 @@ function inputUpdatePost()
|
|
|
142
142
|
onkeydown = (e)=>
|
|
143
143
|
{
|
|
144
144
|
if (debug && e.target != document.body) return;
|
|
145
|
-
e.repeat || (inputData[isUsingGamepad = 0][
|
|
145
|
+
e.repeat || (inputData[isUsingGamepad = 0][remapKey(e.which)] = 3);
|
|
146
146
|
preventDefaultInput && e.preventDefault();
|
|
147
147
|
}
|
|
148
148
|
onkeyup = (e)=>
|
|
149
149
|
{
|
|
150
150
|
if (debug && e.target != document.body) return;
|
|
151
|
-
inputData[0][
|
|
151
|
+
inputData[0][remapKey(e.which)] = 4;
|
|
152
152
|
}
|
|
153
|
-
const
|
|
153
|
+
const remapKey = (c)=> inputWASDEmulateDirection ? c==87?38 : c==83?40 : c==65?37 : c==68?39 : c : c;
|
|
154
154
|
|
|
155
155
|
///////////////////////////////////////////////////////////////////////////////
|
|
156
156
|
// Mouse event handlers
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
rem Simple build script for LittleJS Electron Builds by Frank Force
|
|
2
|
-
rem Calls the normal build and then packages it with electron
|
|
3
|
-
rem Run electronSetup.bat first to install electron
|
|
4
|
-
|
|
5
|
-
rem do the normal build first
|
|
6
|
-
cd ..
|
|
7
|
-
call build.bat
|
|
8
|
-
if %ERRORLEVEL% NEQ 0 (
|
|
9
|
-
pause
|
|
10
|
-
exit /b %ERRORLEVEL%
|
|
11
|
-
)
|
|
12
|
-
cd electron
|
|
13
|
-
|
|
14
|
-
rem remove old electron build folder
|
|
15
|
-
rmdir /s /q build
|
|
16
|
-
mkdir build
|
|
17
|
-
copy electron.js build\electron.js
|
|
18
|
-
copy package.json build\package.json
|
|
19
|
-
|
|
20
|
-
rem copy files and build clean html
|
|
21
|
-
xcopy /h /i /c /k /e /r /y ..\build\*.* .\build\
|
|
22
|
-
del build\index.html
|
|
23
|
-
echo ^<body^>^<script^> >> build\index.html
|
|
24
|
-
type ..\build\index.js >> build\index.html
|
|
25
|
-
echo ^</script^> >> build\index.html
|
|
26
|
-
|
|
27
|
-
rem build with electron
|
|
28
|
-
call electron-packager build --overwrite
|
|
29
|
-
if %ERRORLEVEL% NEQ 0 (
|
|
30
|
-
pause
|
|
31
|
-
exit /b %ERRORLEVEL%
|
|
32
|
-
)
|
package/electron/package.json
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "LittleJSGame",
|
|
3
|
-
"version": "1.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "electron.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"start": "electron ."
|
|
8
|
-
},
|
|
9
|
-
"repository": "",
|
|
10
|
-
"keywords": [
|
|
11
|
-
"game",
|
|
12
|
-
"javascript",
|
|
13
|
-
"littlejs"
|
|
14
|
-
],
|
|
15
|
-
"author": "",
|
|
16
|
-
"license": "",
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"electron": "^8.5.5",
|
|
19
|
-
"electron-packager": "^14.2.1"
|
|
20
|
-
}
|
|
21
|
-
}
|