From a2e40d2b91618f23141d2ddc0b32498edaf80fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Tue, 6 Mar 2018 00:52:44 +0100 Subject: [PATCH] Fixed "on" and "hover" layers being in back of children objects --- TODO.md | 2 - .../exported/character/portrait-hover.png | Bin 1367 -> 474 bytes graphics/exported/character/portrait-on.png | Bin 474 -> 5889 bytes graphics/ui/character.svg | 140 ++++++++++++++---- src/ui/character/CharacterPortrait.ts | 1 - src/ui/character/CharacterSheet.ts | 6 +- src/ui/common/UIBuilder.ts | 13 +- src/ui/common/UITools.ts | 2 +- 8 files changed, 129 insertions(+), 35 deletions(-) diff --git a/TODO.md b/TODO.md index 84a4148..b3e3486 100644 --- a/TODO.md +++ b/TODO.md @@ -24,8 +24,6 @@ Map/story Character sheet --------------- -* Fix the hover/on not working on fleet members -* Improve tooltip content * Replace the close icon by a validation icon in creation view * Allow to change/buy ship model * Allow to rename a personality (in creation view only) diff --git a/graphics/exported/character/portrait-hover.png b/graphics/exported/character/portrait-hover.png index f2edc463328184e268540cc0797723178cf0c637..fd00cb109845ec0229c849d1ca20be2624ab9eae 100644 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^Eg;On1|$PrnwJA9mSQK*5Dp-y;YjHK@;M7UB8wRq z_>O=u<5X=vX`rBFiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?;hrvz zAr*7pURx;G;vm9$@b>D{Pet1PBp+DN!N!y3ksx@t=&Eq={<56kg>?_U&9!YP7i3Z7 zc=Wv{V*39XhAo!!>OI7p1b{+L0xb$0jsi^zERGx_P#_5yKCDG3o3Q&POOpPvRx5glY*}(x$>}(=trMh{T4Vs0D<`=y+h7?oge71RE7v2}-Bi2Q~D04@Wcu(|5%0<#`HG9pf7 z#M94YWGAOnfb8sSzjLWH208fx#gCp&ZP12nu|67$!i6W~G-~Q;jEUVFBf5#m+!YHr zv5^GR|8)24ql&2D(TN-SW{=V<6>FukXC?cGdjrsSf%@nIp7_ljL2xy1-@l9$?#t5a zfFU?XHy+)ihhl^g4uy!XROcN58VUicr1w&RN?scid`D2$8{++9wMkWUuP+cqvoq{% zCfjN0y{3HRbE+94;(ymnuoV^NMS)C7<)9Gw9B52z_;zMoX#p1CKES$;x27QRI0;mo zlsr$}0j^nK2jtqFo8?~<{9uH~-Nbrdwp@0z|9W;|s-56jCjZ5VgA<_d8F`^68_+^L z1b}_iB$w2B%->0r39)IqscV6E_tjHYE(NGs2vD7`G4JmKN)lYwo`!<}SchWrf-F_h z8aw|FW}!jwjHl6bh^BCn?J3+)j^i52YL7vp_waImD|%9Q zc-K-XkC&p=s~&T~oq6n}+gY2yKX3JJ2O;D8e>IieoBFa^P`nrQs)q1>^m%Gwkru9s zUP&7e=1NBs59kZcof}Hl#*CtYtQ{6qV+^Y0b*sePvWFXcMd|8o9Ec42zm3b_(>@t` zxOb-%Ye-d)`x=>Sj=ww`sy6h$s4?)nFFsJ8@m(UfrF1=HPR-EB#!3BV@H2*6Qx365 z!~XGcp8C96Fg&t+0$;71=hV=X<{o5HD$!UMk7`Y5zKsYXYJ7PZ=!#Tq2SG_}iBbg_ z9Le8gzl+;2QI#lNsW+eiZ??gY_>wj#Z>cq+067riZR`bVd-hlwR<@6YUEgxUsby*} z-Pr7J31rUjBNtoBZAFI)T+|ZcMeQ4Bx4M4vU)A@dg%3rC6b+|4cGf9Mn zq|y%Z!{+isHWahYFvs_qm@z}egl8#UuNu=m7(Ff(-MMXH>dk=ZjcP&QZO4vfoJ*zK zOurp5N*(i$yS=j;diolFsS~rUEIB;=Z2Sin(tJg^#M*rxZ*)h>prNkOee}QJmPH~` z+nd==J%UH-Fld{jSFu|=6(jdsgM`|iY77E~k#m$(WD9?(4lS=G6gpMX;dTxzJo15# zCUE2$vKLccAFG__IGEQL{~;dM(}H;PlKveQPuK=0(k;XWcF{n$SOKMH?pEoIx}OcE j+XEn6QP70p@A^oOTi>KTX+n%yOAv^PID+dsc#8EOXZfKG diff --git a/graphics/exported/character/portrait-on.png b/graphics/exported/character/portrait-on.png index fd00cb109845ec0229c849d1ca20be2624ab9eae..b6b24eefe7b93ad22fd5df94581636442f480a08 100644 GIT binary patch literal 5889 zcmdsbhd12c^Y?q#V)b3wu==i+6{1J9#9FIIiI6D4>NU}OUu~5jYN8XOlPI4A(Si`7 zM33ksi0DKMe!kD2@!WIf&Y3%B&Y3f3?rTbnuC^*2H7hj$0CehVc)cqg@jrr6T-^`w z;U!lL;(=4whhCjPs5R+IrgBv?@&Ew(uKy7zO^}}L>XF4$+0gT$i>;@Rg}V*l%EHw~*u~v0YfGLL0GNW+@rwGs*_+ws&b+F@^KEVA)m!Th^o?4=J{iq|G08$5 zoVoDJ7_Y|u?i*+)R4>b5_&fXsI?7yFXB7Z}c|}IN|@X{h6XOzsc zXIPTfM8Yy^33$(}KIWjjm8?l`*LyN*YTA~^6;(Gq;qKEoGW@pa6rdx9=a$=!mxLI! zm4m4suDD#h4mmA%KkXS68r`?XS1(p+~=8(0cLL>W#QjcbZfxR~Z5L20X=*w9|+<`p#kG@uu!0mwfEaR|;2%K)s`5YzD zSSOSfi-Ky^1P(z!5m;{GfKWda2Jntz0vvH9z{UDKLv^u8P592OPy~t<#m61n+q`Q8 zgTvrtp8y#w5_josWfhKs-7oVik&X7{z&`lZMp;^;NPs{=VpcNwZ;U20Xk}X2;X+t) zMe5bHBe(NY>3jFf3d^WLfV%p7S-lG+u>$Bu#h^q11WEL6MjJ0I;xjx{nE?6{V~-&! z%;v2ohFX`8YZ;Ji>jXBn|Mca^gnOT>L%irz+(piWLs;E(P6V+yQvlx@^iDv%Xm96*8)C&2D~b{z&ofaV1{g5Id{ z9M5!dEc&6p{ljKSwQf+J0~Sk6SysjGm?Hk!G#XGD7pOlGf$uFPm}_1tb%_l!+PP)tw`a zq6tt$irN<<Qkm+Wx4j z#12}%+rB@i4==b=d;ikXXTq5-KqSSjjImroT2B#{v>*Q20Y=Bv^GNaMpFcqCw(9EZ zfeV$<){|ccugP2~;NW9v4dg8RTWK_z6du|b|t0+p5V87d}K=>Wr{ZtW9MoRbp^2M6D7X%x*#JF7*N z0HX~}DJ(RjFjmi)8X*cbig=mo@nCi;ASlSkraFU51ef!Of{|rjc8;G?N-DEwvn3%d z?YcvQ@t$1Uev50(pUES+S((#@kewlGbWZ2ViA=W6>XR1E%Od2@%V%S9r{_5|2MHy>a26rpcW8 z!wWG-ed28cGwTf;Qkl{H8o-f0Yw_T+c=NmhlW{Oxer|M=@1 zd!wU+2KRGVY;1?)6J55{^yLWT%9nH|tNvZB9jCW5hXjp%}etk{w0YRAMTJ~g^ zdc#EB=QUpHPJcwC#Cb=ryciA$C1HR}C`AMmFNTfLb5wcZi1}&jrR87L^*zwA*|ER= z@8R*nTB%2UQ$s3Ue(ai z)^+!vefLl10_1)wy@#P-EOvB8=^*U!(&VS8yDzgu!WB)s#>sYsU;~Wyj}(WJa2)xD zsN38~;PgWx*CHOBAosxHqd^swC?0|1Wm1lLRL)7_{q#B6%9cazl?iJ%^G0012tB1+ zRa$2W~+v>T-th-{x~3BzF}xp&!Dc$sL8qs07m>tW;{_*U?eB5H+>XC@jeLPr>R9 zVN;qg(cCW>a6OD1h9u%)V@P%f8|vgwvK9SLgreWM!lDlB6uy_6XI{RtNUur^^_Ds5 z9FhE)mX@|RQDst&(YW5?3vw%2j-~@TX*Av%6q;>&BnO61PEH>Gn7@z;eFxRl)Raxg zt7uS|iW?dj_>o9GWiD|&{qHWURBz` zAtHoGb@KCsPwRAtUh3XogQhL=EMLM$fM|FkbHBbM#XGlWB?d-E(4 z@XXKemCJmq)|4^s7Kc9?pnabXnfkQ1SNmt{S#MuoY-M$Ixzl8IS%#Uvz|0R1l?_a3 z4-dKO>D&3+cnOV)*P%jS8Yu*ZN1Kv+n74?k5|X*Lti1LGf6yfrl0I;Y8-o?oWrU|u z)5oTAOWT7H%7rRY!!*i|f8gWF^p=9zCe>Ey zJX_Xj_#yM3CK(|qoCq=$tW_?cWr^QY8}Ge|zfGQ?j})h)ARGVSlgONrL1j;s1Tu>H zTUYZXjI@q#+5c^{9lF zh^1}1*s69Va8Drcnc2c$DAJb-QMUzGo)kLXep4u2^Xw|9_AT_*T-%Ah+4KVOwAP}9>?tH(=5T~~pX?p4 zc6LHeD%`c~Ek`uYZK)Qky|_$VDPbh|HfJcF-)A zEky3<@8EoI`lA0oRuk*0QL&DUJz=TQ(aB~XP*?Ds{KnysA1=GGdMrP(?zyt}v)|Ik zoA;TdwJ3DO-hQZlP$CYd6i;v#P?g5j+_`Xea{5;nbl!A->sp9GHC2jKX1!4jCHo@u zbGmrf+B(OMz$=XiT@4z6TYQ!H;%l2YF_ogRf~4p8$y0e`e34n(P=9|-pSRS7S-QkCt)M>GS6ULxH}^)=?q)-0j4&COcs z$&(*2bH55P5Dl>pgs~W>WC_5&DpHfl4)kroO@JOBCSQ=*vqy_df+7h3o}0T;^21wR zexaOp(X_A%mR0AMO-*$PQ9S&yz9$*!{aJTh(j79Jyqj+g*rqTsGq3-B&NkK|!lO06 zuLrDonk5&r-P!qlr%j-_xq0N-dmAgOS<_~3ttDyx=}GFPsjfk~Pcr4}XV2`(ZeUmn zJe*d+G(0L?oeuadlwVa})wk>>5d z5`(hi=?16rQ9n6Mzy7%6{V5A}d>;)6*!FqB8%9eJDw{}`n44ts zrXqKp#%}YrF}WlekkTC;gN%5`mTdEV?bei~Snb^v`5rjaS6C+1U2l76qY>2skc1CK zLTJ>ax0Y4?z9yk*lOlD6+p(cMAb+8ex`e;sdUIZjjYl=a0H3*SnT0oJi*3OvIq0VNB;KzL=>sW{;{EI5fLAFzh1<-H6D zoss%H<2Yvb<2fI#)PJLUm-z!VLt!RWcW(U3MMmQx8yg#A7X%Thrjn;hP65)oQg0Ef z4MTGY<|zLrvJ^JO@G0rlSS3BQC=7mwMT!##fZ=L*>3(rPn!84jCV^a+8+GSLeJu-i z_?gF%KOg6pQmEmvkR-Mvue5925d`rk7%dam19PpZ13qm~Q9x+^5Y{AI^QGi8mHv!;Yram#rauspVkfEVD>ZR)?} zJQx10n9WcHpUCVjzbMs3<3!JBmn~99#Op(;Iy$o@8*|?@JrMc0V|=T>7R@Qr*%>G< zxG2TKJ}axE!-t#`&vb5)X0t z_+q`d&63HIc1Y$r1+OzyxAMB!*8KnYpy6_?atd9za{N zHK{|-lA_*+K-S20?dDE&&osix#aNK0O+ex8ejaiE1UDd}J~Z1yTdw4ReMU*#?Dws! zEG0qnL^}c*ugvRY85FPP;HOWYu4`tb+eIrHG0=<|KCp%($lq-Lar6&BG#d%f?8`@3q1>#YBqqH8dVlQL&L)iCsNnVD2sJihMJ;Kmyw=59f3Gh*?g3Wf>&2v{S*pK|#5j5#2VvXT z@I0hHm~9RiQZ;S?kJM31zJ|VokwYG>M8`cu0}<_AOL$5pxC2!5A^m2BX3pT{?B|2m zUHXwQ;PRM~F{G*nnXudYa+gGhoJ=TmWQ2m9wnVeu(EAHcXErs~cw<{PM| zE~p%QOj|0PSS$2;O>m$3_1kL05YrT66oCRS22uf(=OXQJC{$=zJ6Mmo6v@4NF}TQ8 zi4AfM{E?Dgmlsn;CHB1z+NbHL%lVNB^36ss6{gFq_8fR#*PGHx3#CG7hZ;iQc*ppq z$L~B36{JQZ5{{(b=#A?~$3M4C8PSd&AzpYRDQLJE$q?`kY<>jRYVmGK6u;A87s{}A z*NCFf#p3Mza%^rc@Auz@vC+YkpdcCQar2B_bi6KvVwn%4;B)LOib7-2AUIT=r90&I z+ESZNUGh5hyViuycP<9K&@v23U_4n79)I#}sSeGZ^7=U(OAq6J*>+?%@GJ3+(a=}~ zGB42(eoeVeIYJ+WzsH?TwVa|220v<>7Pusb|9xZd7r_Hjui)#w7zpvD3VmhPn0o`p zI=l~@+aSQloAZN(uU45q(uRb6&R;nI-<7# literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^Eg;On1|$PrnwJA9mSQK*5Dp-y;YjHK@;M7UB8wRq z_>O=u<5X=vX`rBFiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?;hrvz zAr*7pURx;G;vm9$@b>D{Pet1PBp+DN!N!y3ksx@t=&Eq={<56kg>?_U&9!YP7i3Z7 zc=Wv{V*39XhAo!!>OI7p1b{+L0xb$0jsi^zERGx_P#_5yK + + + + + + @@ -791,19 +811,6 @@ result="composite2" id="feComposite15041" /> - - - + + + + Actions - + + + + + + + + + + + { - // FIXME Under hover/on let portrait = builder.image(`ship-${this.ship.model.code}-portrait`, 0, 0, true); portrait.scale.set(0.5); }); diff --git a/src/ui/character/CharacterSheet.ts b/src/ui/character/CharacterSheet.ts index bc5e92e..052dba8 100644 --- a/src/ui/character/CharacterSheet.ts +++ b/src/ui/character/CharacterSheet.ts @@ -256,7 +256,7 @@ module TK.SpaceTac.UI { let builder = this.builder.in(this.group_portraits); fleet.ships.forEach((ship, idx) => { - let button: UIButton + let button: UIButton; button = new CharacterPortrait(ship).draw(builder, 64 + idx * 140, 64, () => { if (button) { builder.select(button); @@ -267,6 +267,10 @@ module TK.SpaceTac.UI { this.refreshUpgrades(); } }); + + if (ship == this.ship) { + builder.switch(button, true); + } }); } } diff --git a/src/ui/common/UIBuilder.ts b/src/ui/common/UIBuilder.ts index 201ca3c..735fcbe 100644 --- a/src/ui/common/UIBuilder.ts +++ b/src/ui/common/UIBuilder.ts @@ -122,6 +122,14 @@ module TK.SpaceTac.UI { private add(child: UIText | UIImage | UIButton | UIContainer): void { if (this.parent instanceof Phaser.Group) { this.parent.add(child); + } else if (this.parent instanceof Phaser.Button) { + // Protect the "on" and "hover" layers + let layer = first(this.parent.children, child => child instanceof Phaser.Image && (child.name == "*on*" || child.name == "*hover*")); + if (layer) { + this.parent.addChildAt(child, this.parent.getChildIndex(layer)); + } else { + this.parent.addChild(child); + } } else { this.parent.addChild(child); } @@ -208,6 +216,7 @@ module TK.SpaceTac.UI { let on_info = this.view.getImageInfo(options.on_name || (name + "-on")); if (on_info.exists) { on_mask = new Phaser.Image(this.game, 0, 0, on_info.key, on_info.frame); + on_mask.name = "*on*"; on_mask.visible = false; result.addChild(on_mask); } @@ -227,6 +236,7 @@ module TK.SpaceTac.UI { let hover_mask: Phaser.Image | null = null; if (hover_info.exists) { hover_mask = new Phaser.Image(this.game, 0, 0, hover_info.key, hover_info.frame); + hover_mask.name = "*hover*"; hover_mask.visible = false; result.addChild(hover_mask); } @@ -252,8 +262,7 @@ module TK.SpaceTac.UI { () => { if (onclick) { onclick(); - } - if (onoffcallback) { + } else if (onoffcallback) { this.switch(result, !onstatus); } }, 100); diff --git a/src/ui/common/UITools.ts b/src/ui/common/UITools.ts index 2dbf1bd..9dee909 100644 --- a/src/ui/common/UITools.ts +++ b/src/ui/common/UITools.ts @@ -147,7 +147,7 @@ module TK.SpaceTac.UI { if (!(background.width && background.data.bg_bounds && UITools.compareRects(background.data.bg_bounds, bounds))) { background.clear(); background.lineStyle(2, 0x404450); - background.beginFill(0x202225, 0.9); + background.beginFill(0x202225); background.drawRect(x, y, width, height); background.endFill();