From 14959f799985a65752b6fcfa8d07695f1070f4ae Mon Sep 17 00:00:00 2001 From: narimiran Date: Fri, 24 May 2024 12:31:32 +0200 Subject: [PATCH] refactoring --- docs/js/main.js | 56 +++++++++++++++++----------------- src/amaze/config.cljs | 10 ------ src/amaze/intro_screen.cljs | 6 ++-- src/amaze/maze_generation.cljs | 43 +++++++++++++++----------- src/amaze/methods.cljs | 12 +++++++- src/amaze/navigation.cljs | 33 +++++++++----------- src/amaze/win_screen.cljs | 2 +- 7 files changed, 82 insertions(+), 80 deletions(-) diff --git a/docs/js/main.js b/docs/js/main.js index 66213c1..51fc6c7 100644 --- a/docs/js/main.js +++ b/docs/js/main.js @@ -1952,7 +1952,7 @@ function gb(a,b){if(null!=a&&null!=a.Sb)a=a.Sb(a,b);else{var c=gb[t(null==a?null function jb(a){if(null!=a&&null!=a.S)a=a.S(a);else{var b=jb[t(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=jb._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw z("IMeta.-meta",a);}return a}function kb(a,b){if(null!=a&&null!=a.U)a=a.U(a,b);else{var c=kb[t(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=kb._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw z("IWithMeta.-with-meta",a);}return a}function lb(){} var nb=function(){function a(d,e,f){var g=mb[t(null==d?null:d)];if(null!=g)return g.i?g.i(d,e,f):g.call(null,d,e,f);g=mb._;if(null!=g)return g.i?g.i(d,e,f):g.call(null,d,e,f);throw z("IReduce.-reduce",d);}function b(d,e){var f=mb[t(null==d?null:d)];if(null!=f)return f.h?f.h(d,e):f.call(null,d,e);f=mb._;if(null!=f)return f.h?f.h(d,e):f.call(null,d,e);throw z("IReduce.-reduce",d);}var c=null;c=function(d,e,f){switch(arguments.length){case 2:return b.call(this,d,e);case 3:return a.call(this,d,e,f)}throw Error("Invalid arity: "+ arguments.length);};c.h=b;c.i=a;return c}(),mb=function mb(a){switch(arguments.length){case 2:return mb.h(arguments[0],arguments[1]);case 3:return mb.i(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",B.g(arguments.length)].join(""));}};mb.h=function(a,b){return null!=a&&null!=a.aa?a.aa(a,b):nb(a,b)};mb.i=function(a,b,c){return null!=a&&null!=a.ba?a.ba(a,b,c):nb(a,b,c)};mb.D=3;function ob(){} -function pb(a,b){if(null!=a&&null!=a.zb)a=a.zb(a,b,!0);else{var c=pb[t(null==a?null:a)];if(null!=c)a=c.i?c.i(a,b,!0):c.call(null,a,b,!0);else if(c=pb._,null!=c)a=c.i?c.i(a,b,!0):c.call(null,a,b,!0);else throw z("IKVReduce.-kv-reduce",a);}return a}function qb(a,b){if(null!=a&&null!=a.K)a=a.K(a,b);else{var c=qb[t(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=qb._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw z("IEquiv.-equiv",a);}return a} +function pb(a,b,c){if(null!=a&&null!=a.zb)a=a.zb(a,b,c);else{var d=pb[t(null==a?null:a)];if(null!=d)a=d.i?d.i(a,b,c):d.call(null,a,b,c);else if(d=pb._,null!=d)a=d.i?d.i(a,b,c):d.call(null,a,b,c);else throw z("IKVReduce.-kv-reduce",a);}return a}function qb(a,b){if(null!=a&&null!=a.K)a=a.K(a,b);else{var c=qb[t(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=qb._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw z("IEquiv.-equiv",a);}return a} function rb(a){if(null!=a&&null!=a.M)a=a.M(a);else{var b=rb[t(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=rb._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw z("IHash.-hash",a);}return a}function sb(){}function tb(a){if(null!=a&&null!=a.P)a=a.P(a);else{var b=tb[t(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=tb._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw z("ISeqable.-seq",a);}return a}function ub(){}function vb(){}function wb(){}function xb(){} function yb(a){if(null!=a&&null!=a.Ab)a=a.Ab(a);else{var b=yb[t(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=yb._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw z("IReversible.-rseq",a);}return a}function zb(a,b){if(null!=a&&null!=a.Tb)a=a.Tb(a,b);else{var c=zb[t(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=zb._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw z("IWriter.-write",a);}return a}function Ab(){} function Bb(a,b,c){if(null!=a&&null!=a.O)a=a.O(a,b,c);else{var d=Bb[t(null==a?null:a)];if(null!=d)a=d.i?d.i(a,b,c):d.call(null,a,b,c);else if(d=Bb._,null!=d)a=d.i?d.i(a,b,c):d.call(null,a,b,c);else throw z("IPrintWithWriter.-pr-writer",a);}return a}function Cb(a){if(null!=a&&null!=a.Xa)a=a.Xa(a);else{var b=Cb[t(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=Cb._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw z("IEditableCollection.-as-transient",a);}return a} @@ -2039,7 +2039,7 @@ function jd(a,b){var c=R(a),d=R(b);if(cd)a=1;else if(0===c)a=0 function Kc(a){switch(arguments.length){case 2:return Jc(arguments[0],arguments[1]);case 3:return Lc(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",B.g(arguments.length)].join(""));}}function Jc(a,b){var c=K(b);return c?(b=N(c),c=P(c),kd?kd(a,b,c):ld.call(null,a,b,c)):a.j?a.j():a.call(null)}function Lc(a,b,c){for(c=K(c);;)if(c){var d=N(c);b=a.h?a.h(b,d):a.call(null,b,d);if(vc(b))return F(b);c=P(c)}else return b} function md(a,b){a=Rb(a);if(x(a.fa()))for(var c=a.next();;)if(a.fa()){var d=a.next();c=b.h?b.h(c,d):b.call(null,c,d);if(vc(c))return F(c)}else return c;else return b.j?b.j():b.call(null)}function nd(a,b,c){for(a=Rb(a);;)if(a.fa()){var d=a.next();c=b.h?b.h(c,d):b.call(null,c,d);if(vc(c))return F(c)}else return c} function ld(a){switch(arguments.length){case 2:return od(arguments[0],arguments[1]);case 3:return kd(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",B.g(arguments.length)].join(""));}}function od(a,b){return null!=b&&(b.l&524288||w===b.hc)?b.aa(null,a):Da(b)?yc(b,a):"string"===typeof b?yc(b,a):y(lb,b)?mb(b,a):kc(b)?md(b,a):Jc(a,b)} -function kd(a,b,c){return null!=c&&(c.l&524288||w===c.hc)?c.ba(null,a,b):Da(c)?zc(c,a,b):"string"===typeof c?zc(c,a,b):y(lb,c)?mb(c,a,b):kc(c)?nd(c,a,b):Lc(a,b,c)}function pd(a,b){return(null!=b?b.l&1048576||w===b.ac||(b.l?0:y(ob,b)):y(ob,b))?pb(b,a):kd(function(c,d){var e=db(d);d=eb(d);return a.i?a.i(c,e,d):a.call(null,c,e,d)},!0,b)}function qd(a){return a}function rd(a,b,c,d){a=a.g?a.g(b):a.call(null,b);c=kd(a,c,d);return a.g?a.g(c):a.call(null,c)} +function kd(a,b,c){return null!=c&&(c.l&524288||w===c.hc)?c.ba(null,a,b):Da(c)?zc(c,a,b):"string"===typeof c?zc(c,a,b):y(lb,c)?mb(c,a,b):kc(c)?nd(c,a,b):Lc(a,b,c)}function pd(a,b,c){return(null!=c?c.l&1048576||w===c.ac||(c.l?0:y(ob,c)):y(ob,c))?pb(c,a,b):kd(function(d,e){var f=db(e);e=eb(e);return a.i?a.i(d,f,e):a.call(null,d,f,e)},b,c)}function qd(a){return a}function rd(a,b,c,d){a=a.g?a.g(b):a.call(null,b);c=kd(a,c,d);return a.g?a.g(c):a.call(null,c)} var ch=function ch(a){switch(arguments.length){case 1:return ch.g(arguments[0]);case 2:return ch.h(arguments[0],arguments[1]);default:for(var c=[],d=arguments.length,e=0;;)if(eb};fh.s=function(a,b,c){for(;;)if(a>b)if(P(c))a=b,b=N(c),c=P(c);else return b>N(c);else return!1}; fh.F=function(a){var b=N(a),c=P(a);a=N(c);c=P(c);return this.s(b,a,c)};fh.D=2;function lh(a){return a-1}function sd(a,b){a=(a-a%b)/b;return 0<=a?Math.floor(a):Math.ceil(a)}function td(a){a-=a>>1&1431655765;a=(a&858993459)+(a>>2&858993459);return 16843009*(a+(a>>4)&252645135)>>24} @@ -2146,7 +2146,7 @@ h.Ya=function(a,b,c){if("number"===typeof b)return Re(this,b,c);throw Error("Tra function Re(a,b,c){if(a.root.H){if(0<=b&&b>>f&31;f=k(f-5,g.arr[l]);g.arr[l]=f}return g}(a.shift,a.root);a.root=d}return a}if(b===a.cnt)return a.Za(null,c);throw Error(["Index ",B.g(b)," out of bounds for TransientVector of length",B.g(a.cnt)].join(""));}throw Error("assoc! after persistent!");}h.T=function(){if(this.root.H)return this.cnt;throw Error("count after persistent!");}; h.R=function(a,b){if(this.root.H)return ye(this,b)[b&31];throw Error("nth after persistent!");};h.ya=function(a,b,c){return 0<=b&&be*e/(c*c)+f*f/(d*d)?(c=1*Math.random(),b=.6-1E-5*(am()-b),a=ce*e/(c*c)+f*f/(d*d)?(c=1*Math.random(),b=.6-1E-5*(am()-b),a=cb?0:b); -a=K(a);c=null;for(e=d=0;;)if(eb?0:b); +a=K(a);c=null;for(e=d=0;;)if(e(c.g?c.g(d):c.call(null,d))&&1>=R(g)&& +Jg(Xk,zh,function(a){yk().background(210);var b=Xd(a),c=ec(b,Gj),d=ec(b,Ol),e=ec(b,Ij),f=ec(b,Mi),g=ec(b,tl);b=ec(b,Xl);Dk.g(0);zl(14);Al(wj);Zk(Kg);Hk(["Walls: ",B.g(R(f))].join(""),12,572);Hk(["Time: ",B.g(d.g?d.g(e):d.call(null,e))].join(""),tm,572);Hk(["Bombs used: ",B.g(g),"/",B.g(5)].join(""),336,572);Hk(["Gold taken: ",B.g(R(b)),"/",B.g(2)].join(""),520.8,572);Hk(["Moves: ",B.g(c)].join(""),um,572);Hk("SPACE drop bomp",12,592);Hk("N new maze",tm,592);Hk("R restart maze",336,592);Dk.g(0); +yk().scale(12);Gm(a);Hm(a,!0);a:if(d=Xd(a),c=ec(d,Rl),d=ec(d,qj),am()<=300+d)for(Dk.i(200+fl(55),150+fl(105),50+fl(155)),c=K(c),e=null,g=f=0;;)if(g(c.g?c.g(d):c.call(null,d))&&1>=R(g)&& H.h(a,cl)?(a=(am()/300%2+2)%2+1,gm(Wh),yk().ellipse(.5+e,.5+f,a,a),a=gm(ti)):a=yk().ellipse(e,f,1,1);return a}); function lm(a){var b=Xd(a),c=ec(b,Wl),d=U(c,0,null),e=U(c,1,null),f=ec(b,Mi),g=ec(b,tl);if(5<=g)return b;var k=function(){return function p(n){return new Bd(null,function(){for(var q=n;;){var r=K(q);if(r){var u=r,v=N(u);if(r=K(function(A,C,E,I,M,W,Ka,ci,jl,be,kl,ll,ml){return function nl(ei){return new Bd(null,function(fi,gi,Qc,ce,hi,Rc,Jf,ii,Fh,ul,Jl){return function(){for(var Zi=ei;;)if(Zi=K(Zi)){if(cd(Zi)){var Fl=Jb(Zi),Kl=R(Fl),mm=th(Kl);a:for(var nm=0;;)if(nme&&(window.localStorage.setItem(Sl,f),d=V.i(d,Uh,f));a=c.call(V,d,Gl,a>b?a:b)}return a});function gl(){return Wf(pe(Vf([cl,dl]),qe.h(ne(function(a){return new X(null,2,5,Y,[new X(null,2,5,Y,[a,0],null),new X(null,2,5,Y,[a,jm-1],null)],null)},Ic([bg(0,im,1)])),ne(function(a){return new X(null,2,5,Y,[new X(null,2,5,Y,[0,a],null),new X(null,2,5,Y,[im-1,a],null)],null)},Ic([bg(0,jm,1)])))))}function hl(a){return sd(am()-a,1E3)} +Gk(.1+b,.1+f,.8,.8),c=P(c),b=null,f=0),g=0;else break;return Hm(a,!1)});Jg(Rk,vl,function(a){a=Xd(a);var b=ec(a,Di),c=ec(a,el);var d=c-50;d=fh.h?fh.h(d,b):fh.call(null,d,b);if(x(d))a=rh(a,el,ch,11);else if(x(fh.h?fh.h(c,b):fh.call(null,c,b)))a=mh(a,el,lh);else{d=Xd(a);a=ec(d,Gl);b=ec(d,Di);c=V.i;d=Xd(d);var e=ec(d,Ch),f=ec(d,Di);f>e&&(window.localStorage.setItem(xl,f),d=V.i(d,Ch,f));a=c.call(V,d,Gl,a>b?a:b)}return a});function gl(){return Wf(pe(Vf([cl,dl]),qe.h(ne(function(a){return new X(null,2,5,Y,[new X(null,2,5,Y,[a,0],null),new X(null,2,5,Y,[a,jm-1],null)],null)},Ic([bg(0,im,1)])),ne(function(a){return new X(null,2,5,Y,[new X(null,2,5,Y,[0,a],null),new X(null,2,5,Y,[im-1,a],null)],null)},Ic([bg(0,jm,1)])))))}function hl(a){return sd(am()-a,1E3)} function Km(){document.body.addEventListener("keydown",function(a){var b=a.keyCode;var c=new Sf(null,new va(null,10,[65,null,39,null,32,null,40,null,68,null,9,null,83,null,38,null,87,null,37,null],null),null);b=c.g?c.g(b):c.call(null,b);return x(b)?a.preventDefault():null})}function sm(){return yk().smooth(8)} -function il(){Km();ie.A(Z.sb,V,Xh,30);Z.frameRate(30);yk().noStroke();ie.A(Z.sb,V,Nh,null);gm(ti);yk().textFont("monospace",14);var a=new X(null,1,5,Y,[cl],null),b=Uf,c=Uf,d=Nc,e=am(),f=Uf,g=gl(),k=Uf,l=window.localStorage.getItem(Sl);return Lf([Sk,Gg,oi,Xl,vl,Wl,Gj,Yl,aj,Mi,Lh,si,Ol,Ij,tl,Fj,Gl,Uh],[a,Ch,b,c,0,cl,0,d,e,f,g,k,hl,0,0,0,0,x(l)?l:0])};Sd(vk,Ic([Hi,"app",Lg,new X(null,2,5,Y,[840,600],null),yj,new ic(function(){return sm},$l,Lf([Ml,Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[!0,Tl,Vk,"amaze/core.cljs",16,1,33,33,bi(Nc),null,x(sm)?sm.Ub:null])),vh,new ic(function(){return il},Ql,Lf([Ml,Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[!0,Tl,Vl,"amaze/core.cljs",13,1,36,36,bi(Nc),null,x(il)?il.Ub:null])),ki,new ic(function(){return Rk},lj,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,jj,"amaze/methods.cljs",23,1,4,4,O,null,x(Rk)?Rk.Ub:null])),li,new ic(function(){return Xk}, -Wk,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,ql,"amaze/methods.cljs",15,1,9,9,O,null,x(Xk)?Xk.Ub:null])),ji,new ic(function(){return wl},Hl,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,Nl,"amaze/methods.cljs",20,1,13,13,O,null,x(wl)?wl.Ub:null])),fj,new X(null,1,5,Y,[function(a){return Qk(a)}],null)])); +function il(){Km();ie.A(Z.sb,V,Xh,30);Z.frameRate(30);yk().noStroke();ie.A(Z.sb,V,Nh,null);gm(ti);yk().textFont("monospace",14);var a=new X(null,1,5,Y,[cl],null),b=Uf,c=Uf,d=Nc,e=am(),f=Uf,g=gl(),k=Uf,l=window.localStorage.getItem(xl);return Lf([Sk,Gg,oi,Xl,el,Wl,Gj,Sl,Ij,Mi,Lh,si,Ol,Di,tl,Fj,Gl,Ch],[a,aj,b,c,0,cl,0,d,e,f,g,k,hl,0,0,0,0,x(l)?l:0])};Sd(vk,Ic([Hi,"app",Lg,new X(null,2,5,Y,[840,600],null),yj,new ic(function(){return sm},$l,Lf([Ml,Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[!0,Tl,Vk,"amaze/core.cljs",16,1,33,33,bi(Nc),null,x(sm)?sm.Ub:null])),vh,new ic(function(){return il},Ql,Lf([Ml,Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[!0,Tl,Vl,"amaze/core.cljs",13,1,36,36,bi(Nc),null,x(il)?il.Ub:null])),ki,new ic(function(){return Rk},lj,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,jj,"amaze/methods.cljs",23,1,5,5,O,null,x(Rk)?Rk.Ub:null])),li,new ic(function(){return Xk}, +Wk,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,ql,"amaze/methods.cljs",15,1,10,10,O,null,x(Xk)?Xk.Ub:null])),ji,new ic(function(){return wl},Hl,Lf([Th,Bl,pl,sl,Uk,pi,Zl,rl,Tj,ol],[bl,Nl,"amaze/methods.cljs",20,1,14,14,O,null,x(wl)?wl.Ub:null])),fj,new X(null,1,5,Y,[function(a){return Qk(a)}],null)])); }).call(this); \ No newline at end of file diff --git a/src/amaze/config.cljs b/src/amaze/config.cljs index e8ba3f5..50a0f55 100644 --- a/src/amaze/config.cljs +++ b/src/amaze/config.cljs @@ -14,16 +14,6 @@ (def generating-speed 2) (def free-area 3) -(def free-pass - (let [[sx sy] start - [fx fy] finish] - (->> (for [dx (range free-area) - dy (range free-area)] - [[(+ sx dx) (+ sy dy)] - [(- fx dx) (- fy dy)]]) - (apply concat) - set))) - (def title-size 36) (def text-size 14) (def line-height 20) diff --git a/src/amaze/intro_screen.cljs b/src/amaze/intro_screen.cljs index 418ac06..263b7a7 100644 --- a/src/amaze/intro_screen.cljs +++ b/src/amaze/intro_screen.cljs @@ -1,7 +1,7 @@ (ns amaze.intro-screen (:require [quil.core :as q] - [amaze.methods :refer [draw key-press]] + [amaze.methods :refer [draw key-press change-screen]] [amaze.config :refer [title-size scene-width scene-height text-size]])) @@ -29,7 +29,5 @@ (defmethod key-press :intro [state] (case (q/key-as-keyword) - :space (-> state - (assoc :screen-type :generation) - (assoc :scene-start (q/millis))) + :space (change-screen state :generation) state)) diff --git a/src/amaze/maze_generation.cljs b/src/amaze/maze_generation.cljs index 755cab3..e255b1f 100644 --- a/src/amaze/maze_generation.cljs +++ b/src/amaze/maze_generation.cljs @@ -1,10 +1,10 @@ (ns amaze.maze-generation (:require [quil.core :as q] - [amaze.methods :refer [update-state draw key-press]] - [amaze.config :refer [size width height free-pass generating-speed + [amaze.methods :refer [update-state draw key-press change-screen]] + [amaze.config :refer [size width height free-area generating-speed text-size bottom-1 bottom-2 x1 gold-amount - background-color]])) + background-color start finish]])) (defn- random-point [] @@ -34,17 +34,27 @@ (* 0.00001 (- (q/millis) start)))) (defn- create-elliptical-walls [{:keys [scene-start]}] - (let [a (quot width 6) + (let [a (quot width 6) aa (* 2 a) - b (quot (* 3 height) 5) - x (- (rand-int aa) a) - y (inc (rand-int b))] + b (quot (* 3 height) 5) + x (- (rand-int aa) a) + y (inc (rand-int b))] (when (< (+ (/ (* x x) (* a a)) (/ (* y y) (* b b))) 1) - (when (< (rand) (fade-out scene-start)) - [[(+ x aa) y] - [(- width x aa) (- height y 1)]])))) + (when (< (rand) (fade-out scene-start)) + [[(+ x aa) y] + [(- width x aa) (- height y 1)]])))) + +(def free-pass + (let [[sx sy] start + [fx fy] finish] + (->> (for [dx (range free-area) + dy (range free-area)] + [[(+ sx dx) (+ sy dy)] + [(- fx dx) (- fy dy)]]) + (apply concat) + set))) (defn- create-walls [state] (->> (reduce (fn [acc _] @@ -91,12 +101,9 @@ (defmethod key-press :generation [{:keys [walls] :as state}] (case (q/key-as-keyword) - (:space :n) (-> state - (assoc :screen-type :navigation) - (assoc :orig-walls walls) - (assoc :gold (place-gold walls)) - (assoc :scene-start (q/millis))) - :q (-> state - (assoc :screen-type :intro) - (assoc :walls #{})) + (:space :n) (change-screen state :navigation + {:orig-walls walls + :gold (place-gold walls)}) + :q (change-screen state :intro + {:walls #{}}) state)) diff --git a/src/amaze/methods.cljs b/src/amaze/methods.cljs index f53391d..d6e2bd7 100644 --- a/src/amaze/methods.cljs +++ b/src/amaze/methods.cljs @@ -1,4 +1,5 @@ -(ns amaze.methods) +(ns amaze.methods + (:require [quil.core :as q])) (defmulti update-state :screen-type) @@ -14,3 +15,12 @@ (defmethod key-press :default [state] state) + + +(defn change-screen [state new-screen-type & [opts]] + (-> (reduce-kv (fn [state k v] + (assoc state k v)) + state + opts) + (assoc :screen-type new-screen-type) + (assoc :scene-start (q/millis)))) diff --git a/src/amaze/navigation.cljs b/src/amaze/navigation.cljs index 2d99a6f..9429c35 100644 --- a/src/amaze/navigation.cljs +++ b/src/amaze/navigation.cljs @@ -1,7 +1,7 @@ (ns amaze.navigation (:require [quil.core :as q] - [amaze.methods :refer [update-state draw key-press]] + [amaze.methods :refer [update-state draw key-press change-screen]] [amaze.config :refer [size start finish gold-multi gold-amount bomb-multi bomb-limit width height text-size x1 x2 x3 x4 x5 bottom-1 bottom-2 @@ -9,23 +9,21 @@ (defn reset-level [state] - (-> state - (assoc :screen-type :navigation) - (assoc :walls (:orig-walls state)) - (assoc :bombs-used 0) - (assoc :bombs-expls []) - (assoc :pos start) - (assoc :path [start]) - (assoc :picked-gold #{}) - (assoc :scene-start (q/millis)) - (assoc :cnt 0))) + (change-screen state :navigation + {:walls (:orig-walls state) + :bombs-used 0 + :bomb-expls [] + :pos start + :path [start] + :picked-gold #{} + :cnt 0})) (defn quit-level [state] (-> state reset-level - (assoc :walls #{}) - (assoc :maze-best 0) - (assoc :screen-type :generation))) + (change-screen :generation + {:walls #{} + :maze-best 0}))) (defn- calc-score [{:keys [cnt walls win-time bombs-used picked-gold]}] (- (+ (count walls) (* gold-multi (count picked-gold))) @@ -65,10 +63,9 @@ (let [win-time (calc-duration scene-start) state (assoc state :win-time win-time) score (calc-score state)] - (-> state - (assoc :score score) - (assoc :score-shown (count walls)) - (assoc :screen-type :win))) + (change-screen state :win + {:score score + :score-shown (count walls)})) (and (gold pos) (not (picked-gold pos))) diff --git a/src/amaze/win_screen.cljs b/src/amaze/win_screen.cljs index e8eb2f7..6c0fea7 100644 --- a/src/amaze/win_screen.cljs +++ b/src/amaze/win_screen.cljs @@ -36,7 +36,7 @@ [y1 y11 y2 y3 y4 y5] (range y1 600 line-height) y6 (+ y5 line-height 10) - [y7 y8] (range (+ 50 y6) 600 line-height)] + [y7 y8] (range (+ 50 y6) 600 line-height)] (q/text-size text-size) (q/text-style :normal) (q/text-align :left)