From c03cdc3c1e9fbde07ef81255dab50cf37a6cc1e2 Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Sat, 26 Nov 2011 00:19:24 +0000 Subject: [PATCH] Holy Graphical User Interface, Batman! --- .gitattributes | 42 +- .gitignore | 14 + res/images/skins/default/bg_match.jpg | Bin 0 -> 175616 bytes res/images/skins/default/sprite.png | Bin 0 -> 23703 bytes res/images/skins/default/texture2.jpg | Bin 46478 -> 0 bytes res/images/skins/default/texture3.jpg | Bin 87314 -> 0 bytes res/images/skins/rebel/bg_match.jpg | Bin 0 -> 84950 bytes res/images/skins/rebel/sprite.png | Bin 0 -> 22367 bytes res/images/skins/rebel/texture2.jpg | Bin 46733 -> 0 bytes res/images/skins/rebel/texture3.jpg | Bin 67923 -> 0 bytes res/images/symbols-13/detail_exile.png | Bin 0 -> 3503 bytes res/images/symbols-13/detail_flashback.png | Bin 0 -> 3400 bytes res/images/symbols-13/detail_grave.png | Bin 0 -> 3312 bytes res/images/symbols-13/detail_hand.png | Bin 0 -> 3554 bytes res/images/symbols-13/detail_library.png | Bin 0 -> 2873 bytes res/images/symbols-13/detail_poison.png | Bin 0 -> 3349 bytes res/lang/de.properties | 4 +- res/lang/en.properties | 2 +- src/main/java/forge/AllZone.java | 18 + src/main/java/forge/Constant.java | 15 +- src/main/java/forge/GameAction.java | 17 +- src/main/java/forge/Phase.java | 3 + src/main/java/forge/PhaseUtil.java | 45 ++ src/main/java/forge/control/ControlAllUI.java | 98 +++ .../java/forge/control/ControlEditorUI.java | 19 + .../java/forge/control/ControlHomeUI.java | 9 + .../java/forge/control/ControlMatchUI.java | 240 +++++++ .../control/match/ControlCardviewer.java | 64 ++ .../java/forge/control/match/ControlDock.java | 106 +++ .../forge/control/match/ControlField.java | 459 +++++++++++++ .../java/forge/control/match/ControlHand.java | 128 ++++ .../forge/control/match/ControlInput.java | 88 +++ .../forge/control/match/ControlTabber.java | 198 ++++++ .../forge/control/match/package-info.java | 3 + src/main/java/forge/control/package-info.java | 3 + src/main/java/forge/gui/skin/FButton.java | 9 +- src/main/java/forge/gui/skin/FPanel.java | 92 ++- .../java/forge/gui/skin/FRoundedPanel.java | 73 +- src/main/java/forge/gui/skin/FSkin.java | 168 ++++- src/main/java/forge/model/FGameState.java | 1 + .../forge/properties/ForgePreferences.java | 203 +++++- .../java/forge/properties/NewConstants.java | 2 +- .../java/forge/quest/gui/QuestMainPanel.java | 16 +- src/main/java/forge/view/GuiTopLevel.java | 49 ++ .../java/forge/view/home/HomeTopLevel.java | 16 + .../forge/view/match/ViewAreaBattlefield.java | 52 ++ .../forge/view/match/ViewAreaSidebar.java | 62 ++ .../java/forge/view/match/ViewAreaUser.java | 63 ++ .../java/forge/view/match/ViewCardviewer.java | 107 +++ src/main/java/forge/view/match/ViewDock.java | 388 +++++++++++ src/main/java/forge/view/match/ViewField.java | 628 ++++++++++++++++++ src/main/java/forge/view/match/ViewHand.java | 171 +++++ src/main/java/forge/view/match/ViewInput.java | 79 +++ .../java/forge/view/match/ViewTabber.java | 501 ++++++++++++++ .../java/forge/view/match/ViewTopLevel.java | 453 +++++++++++++ .../forge/view/swing/ApplicationView.java | 2 +- .../java/forge/view/swing/OldGuiNewGame.java | 31 +- .../java/forge/view/swing/SplashFrame.java | 2 +- .../java/forge/view/swing/WinLoseFrame.java | 15 +- .../forge/view/toolbox/CardDetailPanel.java | 382 +++++++++++ .../java/forge/view/toolbox/CardViewer.java | 88 +++ .../java/forge/view/toolbox/FOverlay.java | 78 +++ .../forge/view/toolbox/FVerticalTabPanel.java | 190 ++++++ 63 files changed, 5379 insertions(+), 117 deletions(-) create mode 100644 res/images/skins/default/bg_match.jpg create mode 100644 res/images/skins/default/sprite.png delete mode 100644 res/images/skins/default/texture2.jpg delete mode 100644 res/images/skins/default/texture3.jpg create mode 100644 res/images/skins/rebel/bg_match.jpg create mode 100644 res/images/skins/rebel/sprite.png delete mode 100644 res/images/skins/rebel/texture2.jpg delete mode 100644 res/images/skins/rebel/texture3.jpg create mode 100644 res/images/symbols-13/detail_exile.png create mode 100644 res/images/symbols-13/detail_flashback.png create mode 100644 res/images/symbols-13/detail_grave.png create mode 100644 res/images/symbols-13/detail_hand.png create mode 100644 res/images/symbols-13/detail_library.png create mode 100644 res/images/symbols-13/detail_poison.png create mode 100644 src/main/java/forge/control/ControlAllUI.java create mode 100644 src/main/java/forge/control/ControlEditorUI.java create mode 100644 src/main/java/forge/control/ControlHomeUI.java create mode 100644 src/main/java/forge/control/ControlMatchUI.java create mode 100644 src/main/java/forge/control/match/ControlCardviewer.java create mode 100644 src/main/java/forge/control/match/ControlDock.java create mode 100644 src/main/java/forge/control/match/ControlField.java create mode 100644 src/main/java/forge/control/match/ControlHand.java create mode 100644 src/main/java/forge/control/match/ControlInput.java create mode 100644 src/main/java/forge/control/match/ControlTabber.java create mode 100644 src/main/java/forge/control/match/package-info.java create mode 100644 src/main/java/forge/control/package-info.java create mode 100644 src/main/java/forge/view/GuiTopLevel.java create mode 100644 src/main/java/forge/view/home/HomeTopLevel.java create mode 100644 src/main/java/forge/view/match/ViewAreaBattlefield.java create mode 100644 src/main/java/forge/view/match/ViewAreaSidebar.java create mode 100644 src/main/java/forge/view/match/ViewAreaUser.java create mode 100644 src/main/java/forge/view/match/ViewCardviewer.java create mode 100644 src/main/java/forge/view/match/ViewDock.java create mode 100644 src/main/java/forge/view/match/ViewField.java create mode 100644 src/main/java/forge/view/match/ViewHand.java create mode 100644 src/main/java/forge/view/match/ViewInput.java create mode 100644 src/main/java/forge/view/match/ViewTabber.java create mode 100644 src/main/java/forge/view/match/ViewTopLevel.java create mode 100644 src/main/java/forge/view/toolbox/CardDetailPanel.java create mode 100644 src/main/java/forge/view/toolbox/CardViewer.java create mode 100644 src/main/java/forge/view/toolbox/FOverlay.java create mode 100644 src/main/java/forge/view/toolbox/FVerticalTabPanel.java diff --git a/.gitattributes b/.gitattributes index 7f9009ef7fe..a8bdee7987c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9805,6 +9805,7 @@ res/images/deckeditor/filter_sorcery_n.png -text svneol=unset#image/png res/images/deckeditor/filter_sorcery_y.png -text svneol=unset#image/png res/images/deckeditor/filter_white_n.png -text svneol=unset#image/png res/images/deckeditor/filter_white_y.png -text svneol=unset#image/png +res/images/skins/default/bg_match.jpg -text res/images/skins/default/bg_splash.jpg -text res/images/skins/default/btnLdown.png -text res/images/skins/default/btnLover.png -text @@ -9818,9 +9819,9 @@ res/images/skins/default/btnRup.png -text res/images/skins/default/font1.ttf -text res/images/skins/default/font2.ttf -text res/images/skins/default/palette.png -text +res/images/skins/default/sprite.png -text res/images/skins/default/texture1.jpg -text -res/images/skins/default/texture2.jpg -text -res/images/skins/default/texture3.jpg -text +res/images/skins/rebel/bg_match.jpg -text res/images/skins/rebel/bg_splash.jpg -text res/images/skins/rebel/btnLdown.png -text res/images/skins/rebel/btnLover.png -text @@ -9834,9 +9835,8 @@ res/images/skins/rebel/btnRup.png -text res/images/skins/rebel/font1.ttf -text res/images/skins/rebel/font2.ttf -text res/images/skins/rebel/palette.png -text +res/images/skins/rebel/sprite.png -text res/images/skins/rebel/texture1.jpg -text -res/images/skins/rebel/texture2.jpg -text -res/images/skins/rebel/texture3.jpg -text res/images/symbols-13/0.png -text svneol=unset#image/png res/images/symbols-13/1.png -text svneol=unset#image/png res/images/symbols-13/10.png -text svneol=unset#image/png @@ -9891,6 +9891,12 @@ res/images/symbols-13/counters2.png -text res/images/symbols-13/counters3.png -text res/images/symbols-13/countersMulti.png -text res/images/symbols-13/defend.png -text svneol=unset#image/png +res/images/symbols-13/detail_exile.png -text +res/images/symbols-13/detail_flashback.png -text +res/images/symbols-13/detail_grave.png -text +res/images/symbols-13/detail_hand.png -text +res/images/symbols-13/detail_library.png -text +res/images/symbols-13/detail_poison.png -text res/images/symbols-13/foil01.png -text svneol=unset#image/png res/images/symbols-13/foil02.png -text svneol=unset#image/png res/images/symbols-13/foil03.png -text svneol=unset#image/png @@ -10692,6 +10698,18 @@ src/main/java/forge/card/trigger/TriggerTurnFaceUp.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerUnequip.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerUntaps.java svneol=native#text/plain src/main/java/forge/card/trigger/package-info.java svneol=native#text/plain +src/main/java/forge/control/ControlAllUI.java -text +src/main/java/forge/control/ControlEditorUI.java -text +src/main/java/forge/control/ControlHomeUI.java -text +src/main/java/forge/control/ControlMatchUI.java -text +src/main/java/forge/control/match/ControlCardviewer.java -text +src/main/java/forge/control/match/ControlDock.java -text +src/main/java/forge/control/match/ControlField.java -text +src/main/java/forge/control/match/ControlHand.java -text +src/main/java/forge/control/match/ControlInput.java -text +src/main/java/forge/control/match/ControlTabber.java -text +src/main/java/forge/control/match/package-info.java -text +src/main/java/forge/control/package-info.java -text src/main/java/forge/deck/Deck.java svneol=native#text/plain src/main/java/forge/deck/DeckGeneration.java -text src/main/java/forge/deck/DeckManager.java svneol=native#text/plain @@ -10848,6 +10866,18 @@ src/main/java/forge/quest/gui/main/package-info.java svneol=native#text/plain src/main/java/forge/quest/gui/package-info.java svneol=native#text/plain src/main/java/forge/quest/package-info.java svneol=native#text/plain src/main/java/forge/view/FView.java svneol=native#text/plain +src/main/java/forge/view/GuiTopLevel.java -text +src/main/java/forge/view/home/HomeTopLevel.java -text +src/main/java/forge/view/match/ViewAreaBattlefield.java -text +src/main/java/forge/view/match/ViewAreaSidebar.java -text +src/main/java/forge/view/match/ViewAreaUser.java -text +src/main/java/forge/view/match/ViewCardviewer.java -text +src/main/java/forge/view/match/ViewDock.java -text +src/main/java/forge/view/match/ViewField.java -text +src/main/java/forge/view/match/ViewHand.java -text +src/main/java/forge/view/match/ViewInput.java -text +src/main/java/forge/view/match/ViewTabber.java -text +src/main/java/forge/view/match/ViewTopLevel.java -text src/main/java/forge/view/package-info.java svneol=native#text/plain src/main/java/forge/view/swing/ApplicationView.java svneol=native#text/plain src/main/java/forge/view/swing/GuiHomeScreen.java svneol=native#text/plain @@ -10859,6 +10889,10 @@ src/main/java/forge/view/swing/SplashProgressModel.java -text src/main/java/forge/view/swing/WinLoseFrame.java -text src/main/java/forge/view/swing/WinLoseModeHandler.java -text src/main/java/forge/view/swing/package-info.java svneol=native#text/plain +src/main/java/forge/view/toolbox/CardDetailPanel.java -text +src/main/java/forge/view/toolbox/CardViewer.java -text +src/main/java/forge/view/toolbox/FOverlay.java -text +src/main/java/forge/view/toolbox/FVerticalTabPanel.java -text src/main/java/net/slightlymagic/braids/LICENSE.txt svneol=native#text/plain src/main/java/net/slightlymagic/braids/util/ClumsyRunnable.java svneol=native#text/plain src/main/java/net/slightlymagic/braids/util/ImmutableIterableFrom.java svneol=native#text/plain diff --git a/.gitignore b/.gitignore index a9ec3ba43b7..144d82156da 100644 --- a/.gitignore +++ b/.gitignore @@ -17,8 +17,22 @@ res/quest/questData.dat res/quest/questData.dat.xml res/reprintSetInfo.log res/setInfoScript.log +src/main/java/forge/control +src/main/java/forge/gui/control +src/main/java/forge/gui/ds +src/main/java/forge/gui/editor +src/main/java/forge/gui/home src/main/java/forge/gui/match +src/main/java/forge/gui/matchOLD src/main/java/forge/gui/toolbox src/main/java/forge/gui/unfinished +src/main/java/forge/interfaces +src/main/java/forge/view/components +src/main/java/forge/view/controllers +src/main/java/forge/view/editor +src/main/java/forge/view/home +src/main/java/forge/view/interfaces +src/main/java/forge/view/match +src/main/java/forge/view/toolbox /target /test-output diff --git a/res/images/skins/default/bg_match.jpg b/res/images/skins/default/bg_match.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51a480836b851988d89cbd77a0198cbe1114cea6 GIT binary patch literal 175616 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 literal 0 HcmV?d00001 diff --git a/res/images/skins/default/sprite.png b/res/images/skins/default/sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..0492e8ce5cf1521ee369321249a85bc825075621 GIT binary patch literal 23703 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 literal 0 HcmV?d00001 diff --git a/res/images/skins/default/texture2.jpg b/res/images/skins/default/texture2.jpg deleted file mode 100644 index 6fc0e6f890f622c5bf9ae90c3da331666c9cf629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46478 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 JfSvej>Tj@gA%*|| diff --git a/res/images/skins/default/texture3.jpg b/res/images/skins/default/texture3.jpg deleted file mode 100644 index 023287f74d90bff9133d6afece82e2a57ea99cd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87314 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%0D6Kcao2dcs0fz=FBPew%TShSZaPA<~ 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 r_vSI!BJ6r>BNh%_N8 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 N002ovPDHLkV1lZo6w3er literal 0 HcmV?d00001 diff --git a/res/images/skins/rebel/texture2.jpg b/res/images/skins/rebel/texture2.jpg deleted file mode 100644 index 75a621f202d809d5d0b1db9c4a015c5005e7ecd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46733 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�@X-~*6QM@eDruQY3Y^&Q(ue_0OoPGg zt$(utW+5r!(tD@b;k+~<>IGlrJiTaeSzk{C*yoE0$>_@I`U|7``TYbfeC<6=DcpE- z@)Xq}@~qe33g`P)VJAeiJYN}zdcSqc{}whYVpqztfM_^cN>X)wF;WNBHC};Tn0i1abwy0I29JQXx(y}Mt#kTK($qrWW_?4OU-*T}=edYN?;sp5oTu$pClMAFi|TN2^Ubwy$k8NS z1O1!kzJF}XL{D2o-C(Spxh#2_JC+)8bB2L&GAh86ma)_w0~}wdX@HiK`+9Xo=9}&< z*d7lpW3IuUh9DqYS2yI$Vtw*KT?cW}E&J4;QZ@Zx{Hx%`_?px_>n7g2VcMWj*xaY< zvrBydJBmjN&>#B&DyPgDHapf~qV|9EWfV~Ln6_#XSnd zn%pt^{5A#asE6;ui!+ZAi7O~o+LzO0`{Pluy(o_VKpYD_c#apgH;fE`m^>-pxz1F# zXakPs8pK##yIh!KAY|l#Vyi)|ikTWgu0O~GJf3aiU5ps~DY9nk_wIJID7eoM0Kj1M zT*f?hi?gDN<0xBPm;<3_Qi-aw=(0v4XeouMmJJmfdozcv#c=!gBh=RKBWx_Jg!ax2e#1?Qcw21sD+Fb z*r^P+*j%IrQE1m&cm1|amO-2)%ZC++YIgoJdH2aMHkIPou&sKn#jojiS)RIrV|^H#Petuz>p_ zBf7NSntskG2sf2m>Gl z7{SX6B65t=fOteG0>J;7HWU2q1x_5?0sx+qzkU_%J!~CV^_)F?JiMJfJXw_uMOjS| zNP7=|Z$LyySXf3_2>j0~Bqbv(CL<~VW&uE7K>n`V3%tMbfBypdH;xko10e+ZQ_jZ6f`B`7cdAz^!X7&D&9Zp*~jr{mM`dybe8cvt%0O@g?td(^D$k7Hs zejEerZ{boNO#t@*QX(QEVj@yvVp2+y6C{+h6r`jSw5O@5X{o7CQ<5HspFck${}n>W zNJz-Y$xf1!pQIrtC#S&ya+)7WDF2fTj@|&2M8FH+1r)*#;88-Ll#rt-u-PY$njvto zmIRRF09F_mpx{8kCm@6o5uYFdhr>Ua5C9MQi+K`&;6tEz_;>^`LLvevsVK;#gyOSN z2@@#l+fcJ#yDdUU6P;G7#KB2x@YYsT%9$Do>2;Ro`X! zNSx|7{^;il@zkpSH6qTZR^POdS0};ZVTqq47D@ zZ6iy&lmH$cSX=z#I>87D#E+}MCQOA7*5DdDHG#hxA?n$uo4-k>{X2=d>lUhRfYe#20VXP;b8!49!C|?V;@^-h9K(4Y1MLGLF$z9M zfT>eG=EV8cZJ|g*(SCow(Sh%7PW=XQSCSNM8VXZ=C|n!HH^vvGOZ>l4HLkKO98x{S zI6exx%NkI)OQ%f*TMAUKRY&g#ufPRfC+-U(Z?Q~zE6cS9PiFWHI|W2uFqm78g2!T$ zty0mez^+4S5|)RBqHCW;^9)OaVEGZCWH4VmxOgfkuO1c5Rs^qgt-=bf@L($qyWc*s zipD2Xgf-kQnz4MsT&j2V)dGv^KFM4W6?C7l^Av@Bs@3hVw}H4 zv(4?4+9q}3oSQ744kNu|LoHw2S^Ok*1aMX(D5pC}E-Dx4+dV4i;>xgg_1Qw#CQtS( ztt<|^vg5%?sWR0l6uUONIZ6MQ@U8~dbh)gI1hc5yX7pHa3ok?q(+-OIMF zS|KD?f3?y}6a&vSU)R`qXN%PQpj#s_Jpl3-Wxdsc}D`t6hnjs5=%tc7+jD#|so;w0y z>yw{ms+TEO9Lq`%y(7Qf8r!&ZSgONGQWnlOy;!q$CUi3h7Q|WTAOGzLAl5zVU2R+< z6QEklR@^_MmO9SWsHuf6^00YdB2^c61V|IybvpvglVjxkvY8s4qXsIw-5Mw1lH)Cu zJCXREi!YyS`=vM?3OX)y&LFhFhIaR$7g+HQx}K)UDRohx?;0}KnmNN=5gvH&x-_vf z$j$xONULH+KP{;4lVpy=iAx*hIv(30nv+4jmQ{)eQ!Nj!q0I8MS2}B38!Jtg#Iy>K z#RHee-L}!$9u`^MXS}MPWT?#!r%D_~`lfbh%Ph*TM|84HRv={1`|{gMMRre0v5JKP zREr^)p02g=L63^8gT{9TZL0)i{@H6QL08ybq@cQXd9YOj_@D5|Z%3breB0%ZJ;lT1 zSfVwIG5y?qhlpHwZhiL%&<}$Z+lgVeY-W-)C(^+2(4*6Cy_0qDI{)%iaNMY+qp|JV zob=Y3+gpM1N&dboNw%GF!$5RSP2}`gMdn6B$dWtK=K_T%;tafJyI;?1m6zc7Tj;c4Go^+0iaQgu>N!0XQIREobAD>;bcSIyqNKcH225|3RGYDRxI4Z zxT0ZfFezo*&GoU^5%4Y${+XA#Ugz41lgaX~*gCs<6q$b|RlrwVAKXtF{+tU%T1k(; zth1m%%Zbfwg@s_;I$U+V`taaUetC!E={>F@W)uVH4j&dRQ}G$~tyt6&8FbRiZ-k0j z(OUz%Bzsju>s8kF5fH?mGB{@DUfgv)ziD4mOBy?)>$uA;hm6ijd>zehMi!77l5CX_ zWYZ)gDjZS%(yd1QThjP0kB3FxaDc}L=kvYdX>Zz(fV<*Hzz|zAD&V4F-Ml7XUvbK% zuZlBxcd6RNZzte+lmGat_qm16CofZ{%iyxRV4bU$Rur%Ag6}lf#(- z8@vQda+#uvmiY8Xz&-EL%)=5(sK0|^aM2hQ&u+m)ZP%f}h06j|q2v-$qx0$3p9cw`RVN$i2?NRt@p^h7obBM=dVfP${FHklDQsyBqw{ zc0_jT?ycE|*Q1Aqcje=EOhsF;2$bNL#CU(J)^U<@>?ukC3OBq9*yMqT+DB|fodjR& z2X5X`-xLZ798W&<{1_L{_@N0V2y=~mXBPCZ$E>ZGVXbJQ;SKEM)m7nTOw7lx@kV(K zM)o?s3$WS@?^J!}1n41U*S@A?vB7MR>@@b(8_L7rnSIU3VNz6gM^Q%UuI4w7@?{>B zW!f$2y=2KC3jO={dN!&Zry4&f9q8g_fQwANw_CjmZhC&`-olz<7#8!Y3x`~r2o244 z6I{g+sZ*|2Gg;Uy>S2c7sgdDTmc2EZxX3QYMJyL&CzMo1ezJdqOi%0fVO4YCE}#8j zZA2TLEN>V8fa}#1xZJw8KdN6_=I{ctK)Sfla$n||)dO&9BGz9;mmZ(Qcgrqy?{ ziYBnCY{O>zT}J@IIlsJem@cL3{J#9C%LVJ<<5@~evc&eesMX?^5rt5esVT5Qa*kn= z!h4()*-IDP1)fi&t!oDim=XJ_2$#N|uw*;}SS3GaGX>IjPl}EeKTkl6UyzfOPTfIV zsrz8valpkN{L&^x%~fr~tk<7nL2|6#HfnXWrL42HhJyGS&p~S~_fFKVlq7EnpgD-w zD;?aGs+cERI3HbGTW>x#Zw_zAG7r|&Up&q#V1l7_bgiMQTw$?{L3d+VV!zn`!1mJW z^|!qNAtRnE8h01U-BCJ1`z;Szo3@f`md_(t&@<(espt(+bj3nxGPaOZNE80LO?diK zO=A&mRG*UbW@bFsWh2lxU098PFH4lWSXWx0lUubK_$mV1$q?`_!Cjl+Bg9Xt;?tc) zFaOgl!%o@B=tJ2DFoD}k3d1nzr5?vY!RD-MBYd6|4jcT~rSKw_;p?`3JHzB&^oY%6 z%*5Bp;Y!iEAstkEb^7ozz8#3<{69 z?!#S})8s$A4^8+g>*sFuMxHArIbi7gzO=1+KjI-7cCof=S6XFfpO|$)Je+~PZ-yRR z3w?l<%*&3hEea28gw*zUY)Vd8B(9#Wylq+D!1i7Ox^glQvx{;#cUWq$v-2#FXKhcJ zoA4vaErEz5KzT9^6L>1Mde|RJ$$1i0s&C+Lm7yehraA;Fas)ha-PfELaorUkY2O4o zEWRxNgGsAJJo#$mA|QL>oHMNjKE>Aw1ite&S zS&Rd{4Rui{>Eek>Rcs*RN&e14q9Xublc%$OK)}{xd|N6YhwqH;ccobdo?UeL^e3sv zP1>_NYkmkvX9NTF$#vB1UB>Ky2Jhu(Rh#}~)Uv1>C1cfrjdAHSg;G6ziS9SnfeQ7V z$>ybEJHmiaS&vQFE#NSx+)MI!4vH;Z9etryPQoBtugS3mPu9gCYtBp4ib#1sv*^S6 zyX`jc?N9j!I=?@4si9fj)9*ew!@ZeAdfwC^4V6H3DIEcYM%C+nVlZsp@bDo&q|g~Y z0-c^&<6&}1I8Sf0zCqYKJGb|I5lc%kF+@rB!F94v5OBYZ>6rv)4`a#^VL`T3B>uI1 z?)tz;n|j-ymFhqr3J-U-mZrAHMPuV%VvHKy_0IV|{^0&p=z4jirwIEcEhVP*@jkIEjo$N-Nt19>izfDk7Hl1UT@wFvw?B8qjFmQ#f1Gf)p#BQMq`v)T}v!9gi-5IGjP+%UL|15r9aFrH* zG_cxZ*>+ZhWd8oUc6-$T~9!&QSyarXAi(Ac5Zqu`f%KJ=9`^3kr<>LDX;yS%|uFNA6qhkJdvHlir@ z9;S@su2T)o98r6>O(kNH)OA;$}a% zDrHMu59!ykeqzWmQLzE2fAd2Po<((^5Pv-Wp82Dt48UtfBr=FZ>DVzV)ys z*0GM>}otCZ!=Qt9+_neOZzl+Zb7QCV_=TBN}>`riGpoxHb`sifyZ?S#2E&$+A7f zJ%Pc||5SKppujt@wo63)kxji33aJmyV9w>P*UxbHe@g*s>y46!Ki?3LwnOzpDr=%( zo8s%>v%jWX!k2J(YcHlBU}@jpt=v%B%saF;7V)i=arUC#U;YwMWK@{Yk1dp>4IodMsjUP{k$c=z6{T7 z`-ZNSUX6VKl_;&j*l%1r)M9)7sqnaGFWSl+%HG3PmG$ktX=Bmy1{YZ`ZR;eKB;XQ3 z^^N&QfUaGP{}ubVYT-CDY1g1qta~Rq4_+YB=$oQg2-WK)jzQg+peWzZ{fYvo#RE?G z(cs$U;k(SkjcgMUMWi-^*K6-b=wO^^QuX%)nByzErznt{+m&=jz>I;MKV3;LNkLv$ zZ}nTjiKoOA9X8G~(fpC0FiEu$=cWyuYy%b`(WhiH zDE$fQh(;|tKMmk>`*83X3viXDOzbp~)UUQgf9Bp1kde2xTMyRDedTyjaFNL&&b+i% z{)?nc-RhuZ%XEe8!4SpX+c01HaE?e1IJ(`&OTBpT3{<4*JsKG=0}nt~HEicNT`sB{ zi(woF7lLc3vf&NylP_hC-_SUU`u3(28Y1LpbnYl(M`XqaL(N+PZ}}OQ%~uvONTA~F zTs3wAfKx#=BP+qK$#VyfEV}X{ue1?fa%E@>qUcV2-t*UjMLTua+^~b(D7wRnHBvaI zPakzTlNe*^a;S4Flx3wuKJr@(wn4-B+J~ab&VWeH_Akz(nKDCMA@hmW*;52B?Y?+m z4NiSDdb88&HiMq=upQoHp*uO#&nsJGH?l4*ACVkc5nY_MG-{RLJBh-iz9MsYJQ+;x zomeS2F&fT%(D3-e+tjTqD{XrZrVe9q1I&K9)^Ju-xPB@_?%u{>f#1EEs)>d!Y4Yir zOolP%BOtAo+xPK>$i9&nLAb^U@?P7AiqK(Frytv!4T>hor6@nYuHjkvi0zEJx|RYKLX+sr>@;|rys0rTBgG!U0|57=&A>wQTHRV zf2_(5C2tNtq!!o(;MdnnMx$1J!dafJGU8VcxLWjIm_&P^^T-?Ys2#ps3a6||T{D`= zj$Zk`E$a%}OJdFD<_~fR8&VfDek|W(kAS10)ky26|6(>`E>Xaq?TRZ`wi}nYvne!O zTi=+Qf(=NrF6)@EoJcEtz!1E3bq1IeyVuA*e+=o#l|7Hda*HnC$@1t-(8kaVaI%fKY^2?8-1T*Vz4duplaXg zb3+|~y4FRu%Z2d@pD<5Zx$sphG+W`&5bf@Tnka-$#kIO_Kf4K+{0y1~j^_~#E8p>F z?=~wXJvLRub9Mz}gX4FoBdS5G(Nn8tMDE=wjOFWUZaLc*Z*P2%f3$t7$$~T3qc$}O z9FdYJ$>)sfBAf_J57`;LMyjXG)nQFgxOYf|-KFoi#q$ymlh+-tT5@>1z_@x!99?Xv zMS9yQ()w*JsT~H`>afM+2AirBIlX14`rU@c%p*V;Y^kO;Y*<^5ZO?dP zqf0Avaz;mbWxJ1UPq3&N=3aq>mJB_Rk}{`(6oGXuo2nM<9F5B z=I$glrid;1S$O1hJov;(<3&yQR4|QklDC->!8^7Gf~T9fUN}{T`#t{4Xms)48;!t~ zI~VVi6LVufV{a>5VW~oM0&|bTe=o1meg5SCzR}2Z+yH0kiC_P4`|guXnF>74$Q8Ok z139nIpGG6<3{C8!+F)Ce-l$!f-@2^rYZbrk8SB173&))g57`UnZn}IVe1G`Xu9_=o z0ryVv6cdn*l8&2d`^?hijk+!*u8Usq?DtA8A(s(uI;5DW{Q&>>Mx&B_+@qfNX!wuK z=#S0lkIm?(&1mG0&FGKK=#S0lU)YR#|0A1`3O0wq(lyC4=j9z#g+wlS)l3FDvY&db zu!`BPWdgJrwS15BofyvZ@9UtFf1<77u_@l|QTu_Xq*oKhTj<=|9r3+;M7UdD&MQ8U zDPfp?SDA6CdiU0Z1<$%wz?;Iwq)^t;f!|CA}n&WbBYL0+mEPUU^y6W`X zmBzCd;A;KAtk;Gl_}8YWRb?M+Y1G#>yM*-7dG%Up$ELy5NU?3(g{4I;zb*gVV7d@l`m>p9|(hgfXkZY?zLZO9QS-BQFd z;@1;6Sg?w>=`OinUUH3clIl&$l$qkS%DJzsB8=e5N}S}d)R1L-&6xsYSX6Xi1~uzN z6~h`DM=!|?30a9WO-z!dy=~f(>)PjoSBY?G$ z*wH%o@ZZi7qUVJGDJ4xEe6Hia)So>;L5B}8Kz>rv5|jR-h#b=`K=?~W{Fox}H|03b?_eANJVB?9e;J^kaqNG| zI{Lri;mXFT2n=9f9LIk2(XW`$F%R-nJGffoT7uKZu`ck5jwv`jfiygYAJ@;Em_aIV z?BenxX9ippstST1y1+#N;Qh~w2=D8_|3BBDAb`IVqZrV7X9>_n+AvorNWGe829Y-`(e#;x?mJj~H2opPdcm*iBA)J0`isDD(HGYx7lrVb-M;l)^9}p$>bMW%{ z7vd(r$o~{4v2{}RaP#o`O}Ugm@>f#-ivcD9E_onvx+eDV@YMD7@pkw%FmSvRZs0)r zZ&XrS4AO$Z7{L3-^<4(i5!~Gb-KkibT1i%^z0-V}j z{J0>q0E8bzL5H)`pu5-~2eUs8W{c=Q4rYHG%>Fo-{c$k+<6!p3!R(KN*&he9KMrPp z9L)YWnEi1u`{Q8t$HDB6gV`Skvp)`Ie;myIIGFu$F#F?R_Q%2O&!)sbn-c#oHYNUX zF#EG9@z18jf3+#`kAvAC2ebbN9L#?BDzJer2moLVUZ9r|08jvmfIZ*=*n%!VtbiWi z4B|fE<$a8Kf)dpKMuHVk1`GjFT!ueN_~C5?13xu%T*lEHMYpq$kEe{FAkzE14ep~r z=j}Y)1+Uw93JRYW5(F;5uY20qxjOi;+B$&#HgfEn^^NST2zxnpQ*j+39ZzKkXM{$8 zmxE!zB_q24S37BYcDOw2h3hic-96nMd~8^+ySpL1Wv|l{z_Kq?JDr!Fq1Y>gSKU?PS?|IpjZ9Or3oC+Ohj z;O>C*@dkA!jBDDDHrsgqCHyay`}kRxc|;O*h- zW#<5jbNnjG^VbKT{&jJGv5!0dS0W#T)N|2k_N=clN>os6T0m%9z9 zSA@HblY^j(r-Kt%n2o25vX_I659m+?IyLKp!tTcHBp+1cZga z|3<$)T6GRYgoJ*G>Uh{A9B=$*qTu+nxAC$0PlR=JWK=xtd~uzxsUpYj>x;0Lky4UY zRTY;MQ4v!UQ3Y!yC88v*A|;|Ip`xNJA|ftvTp=)_Cequ-25IN;S3)6WNl|fW6^Z{j z;a~kDbL?IPHVSOHC_C%lbWLStJueSOgd524Hc(e$)l^lM5SEsZ5D+;p{JWqA!W&fd z4cySi^`Z>uI|nwx1~>5K*g?r-q8V-sx%vJef_EYq1ch<%C*Sk7cCAL0nP+KiHl8;1J-K;Fsi=;+N(JRU<6S zFD$|@EXpq|#t(KcC?qV&4~_-!Ng)D`5O9EiV@DhuM&Kv_2Mjn4WYyFp6s6RZMMb0~ z6@`RFC8R~gq=keOl_W((RTU*fMR3zUIRD^oX9q8EXxgiJdAPG4Pqi|L|9YQFiT%49 z{6|9j|28v-{+on?U^N7BkDcEhL%&Givkiy-^<Ct%1AjE| z|Bwd$em8eOf-mI$;G6f+M^ZEJ6~J20KvzvuTlLtCK&qjQKziVT+kU{06?);`3Czqb zSYh4ZwjW|}_Yt_k$HvavQ^!yZw>Jd<-xpYMFAg~TX8=tR=;7nt62O3fh8`>HFUEiP zOKIon1@10^=z;R0_TURPh~EQoH-8^b938h?gT~eshvVV48qs)x6$J6qINa$6j@z6; zWBUVFz~T1pNN{5h9y7|%+}<)8 zcLy7A6B0gdCkUsHgPk*o3xPPPmyv-oh+hDA(~vs-hTHyz`+z%dKv_W9!}G@RUKG}| zcD$frLRyMd!@=Lp!N*5H4>XwAc-e#I40lf(5aw4_Z|myuh!5Ik1|5qYQy`0=pY&k2p3QA&~!g?fxx?|HEXz z<$yzfjB5~~&O8KYtj_}{duRaYdMAKSO#(ozo`W37U;U;{Yyz4N0l<`H>BqPSagcuu z{{irDd!q2X5y#u%0A&LsRy$uWzaJv_xE}&=_a_BF1JDD^00(du5CB8~NkA4*091jC zfG%JJm;+Y;JJ2}k4(?j?2W|qlfe_#k5CuF1l7Lho6UYOKfij>Pcm=!#T7eGmv*bg- z1TYIM0IR?k01aTk4`9O}WDsfyJ%k0q1vv*1fk;8*A*v8MM}x-yh6MxytjBActd!zc&m6j;1|nDpmb0+r~p(7stnbIT0kA4UeI7@ z7&H!=4lRb(LEE4M&{^mjbPt~ppBkSPUjSbgUjyG5-wyv8elY%H{3QHb{3`rr`~mzq z{4e;21Y`t^1m_532s8=I2%HG~2|@_s2(k$(30eq-2o?y?goK22ggk_jgc^kAgf4`E zgpUbR2uldx5cUzy6YjuZFnZWIm>f(OW&`tqg}@SFg|J3gKWqW^orr{pg-C=*jmUxs zNpy!Ojwqk#HBmp&5)p>@BrzAU46!b;J@F0VNa9T5I^rJU1!Bwz$`d>%@afp(S- zO26GFrhf@zv6`$%qwR`%^X@%1cr^8N{oE|#8PtQuPO7BV^ zO2 z+|}Hlc~0|a@&xb{@Jya1I}1O1?QHtlL0&>$DPC9J6y9DwJU($gXTD^ICjbp2Nd9#G5dl&GMFBs70)e^nbmz6t-#K4>enXH`&_Xa;uubq#NLr2qH3Zj(HhaOV&}vh#GZ?dic^d0h=+>56URzON_a^W zODs!rN?w(GCOINSBc&(xSn9nrfwYn|O8S-bo{WTyk4%}&rmTRht8BjP=L`P+w0! zS%1+$*x;r?n<2HKwPC&?+DOSL(rCi?tg)~0I}-{ME0a8vT~ig)7}HrZL9-yU4s!-` zgn5kx%)-PX+hWI3)$*z3f|a;ch}H0Ap3B!Sw_jnn;&!FMn!?(~y8J4^Rnx2aR}XA- zZPIOaY&C74*?zH8wu`r0wO6o@wO@9SbBJ+Ra+Gt7as2Eg=k&yB*%|H}=e&kcMkFD= zx@fqhy6n2@y5_hZxtY3^xD&Zwb+1KIAzhKp9?TxsJ^DP)d4_n-UX!`@^x79MEw5~E zi1%gh8Xp>PG1cjN*7v^eoS(d3vfp=q6aVt-l-H5hJ8$sacz9zeKrJ9E5I@i^@ZC+e zo40Sy1t|ul1w(>ugWsVzQ1?&^x72Ut-ac{L^>)`Cp*t~mw(pwWt-Hr`@7BHf`|9@# zLdZkBLPkPmLsK8%KR`U_ekl4d@!?^Zeb|RbLXYAe9Xz&s{2^R8JR$rj!ZD&dQX=ws z6k!xHYB(Amof|_L6A&~1MCVCWENg67?DkXZr|ofKajEeq;(g<16SNa*5;+s25)YD` zlZKL&l1rX3K706VH^n}s|GC2R;#8*8N2&WS5HCj4)YGccxzpn^2s8XL7BfvU+p?sx z^0FDSA7x{6kU6ut2D#07l6iUgjQNoTcm=)%%Y{~jy+tZTHN^tOX(eVeP6DW zUM(Fi(<*ycE>&J!!Bz3BlDaai3Q~2W>PxkA^=yrKO<(QB+IMxbb(Qt!>vLYQy-IGN zZHRn*;`P1PM~wlEJ8wMSti5%5JO9r5-9(dF(_piHb9akY%llTf)}}Vaw#N5z?_agc zwAX%+`cT~=(NWbY-dWit-c{Kx(OuOe*;CUi-CNgpq3?A+y#MWh%0TO&=3vLrrJ=rI zD01q1hkJJDNpg?C<(Kx#y5k-ZU`JE9JQ5%O@?Pp?MKp ztT{O&T>Sj6-w3!L68hj_SnSid_=Loy%&hF3+`RmX%Bt#`+PdbJ*0%TU9|nhpM@GlS zKP@aSeO_MK-a+qv-`fY9k2?eeA4-6ak55QQ;0{)q5jPuc6ssku91;8`H2?Nq*|mvM{J8%e0z^PKR$`$WwLS6^cXUlYlD z_m3;Q#mf+zS%EtZYB=>pqOH?EmxBj`1&k=&cx{#g+}GvG}~)tL3Vy6;-dDs1+$-8$0u* zdd36XPlCKPIsIV+o3~0gCn_8&re>3R^MzP!pRxuk`0^##!9x$^6g&Os&{oDCUxT~e z4yanwM7>phI$@T(yu!;BF>nM>=ci@GT%+a?;y#=1DTvfyV;mU~{r>vg-I9;%`W6f$ zfaB|%UO~DhMCq}NGV_t^WEh>tnHf2gmZlzdZ1+@^O&`B~8zYYB`t%|!JyD!ZCgD}z zietkbdhJZsR2jSS9PlFSyFOh{0S*78r&-K}y1ww!F|HWhz5V&_w=dn8J01s)0Jj?fHA@!vQjK4X#lqCBw$0S9bPPk2f zSviAd&v%aW>PbS1&LbeTFm*XYwocfb!Rm@zPkacxDmRs0Q8&CO{~_|USmo)V026b2 zI_J?`Qj~n(KhN$}z|qu7jf*HZef@=B-oAI)i;10EM~3uL@sF|G9>ef`8c5ECFU z<8_-&136|QteV9K%R(54zKOX|0~vm-AES9iPC0Yats!VGZH*}<`GcY4l+nOauJFrZ ziPNpAbuG`_1z7V+l*pRsNb-l5X0oSBin+~~qOa(=oMW^n9SKRg26j5t*%ve{h*eHF zdpRO1yRFZGuY9q=SJ9ArJR>b<*!uDq5nJdw*Q%+B&*j6h35jDatNOkS4xafn)Nf6V!(oWTm{ zhdGHIQKiGOvesFTd2nv)_!WaUC%dcJ3OJdiG{Y3zLpEZT$$Z zI(jvqPv9-g`dLQaP`c&>)7^}WFJ+@qclAy!MUYx1?B<*(vlhMGWKe)=i`~)16XXP& zq03QS{VYmdLeO)gvq49hAc;>Pt8z;!iRe1qzl165PI01G@@kSMM~!@{ds`#2FK)p9 zj;m7co1ieG+k23a$HJ*ihs-Y)Wk~|h^HqOubevsIFA3AQn)YG6(8y1Uwwl z>u;BO7@a^(qc3%;n)76Y>uTbGHSODxuYS2jWUjYFt>vZVa|-bFFOoA|YeR=%vs(@H z2Q~x>s!OBZv8NTZUY%`cs95}_r>d`=6qTZV#d$~c$^piYtbb#SlI_baJ=L3MA2|($ z(IKVyHJL9vw?5Vs$L1Vhuf5+r|M^9L8P__ojbAY7gcj7O@(IhHO4tc2g_x&CM?gLE z;gsy+N;{*wpSFt&P5x7sXbaT&%GtIjIq=jgcVF$wnND^Y*LVpBm5UjT8I6DEE!C8G zQcNV0+GKyL+gLg>L?*PM<2BN|i>Y~_;8H5d>G|C4w7#&Lbzee+h@h}VRL`*Pc3;ZW z>B8{yf)Y+0O)L{ex{qJvvhqFRoH#6^EKTT(=>|c#6dtdN&ZESPkP*MguioBX z#+IA1_Y2SAQ>o=bXuqTnDYq6InjcK$Cq##9h~wtk8&}ZNydTqB7HqpsOw{<68z1$3 zM3kM=zI`QsJu<7!?uD7rZ3JcV;Enyjw5eSx3=CoUdZN$npG{nar4*DED` zrVly{9ha$;$qi0>Zqvk?tvq<7E>2S}N1)?ir^OjS(>xhhy^WsOkQ6z0?m>Cmb~+4w z54N{c$`ENij_MgX>K)@tolk9AaW-AwcNLGZ_@J6IDXu$q27`1+4}W?DIF=AZO!@T2 zKIG(kCzLweb|)Amko_{;$ZE7A+$x$oRUU8_Ya92vZW~h%q{4x2b8 z2iIat%cH%eGn(=U(q>GDuO+Ug&J~@MMyFJFi;5NYSpmIv%F@l>Kucoiqa~$6hzX5+ z-K{)~@Nn3BBM28okqn~CN3zALGH{^`&hoW(eC=6B6z0Ig2W=l)HYA=xYjW19%Dh{q3ES#eh7`Ynpj`{E^5`9N=?aEY!7F9JvKBI;P^!vpq*GQSW zR!gC#kS3!B)BY5VtQC((LuP9iw1&hmIlPaK=3_b`DEQ!WOkY5%$BL9Nue?1>pBmxUxm66&K-P|EAu zce2@=O^ns!dJOy9bQr6)_xnQ8!OxfdgG#&H=PcHA$hw3MW#xli+Lh#$bti_0xX4VB z3YK-z0Vd=xK0kZVX2cRX;Kb+r;vxJ|#AN5J&GmFW<{ATA@2`g1xnV6zt^HJ0pSIR% zD=;_p>n7LN`7;?7l$O7w6Aefv!2X6R7yS$a>xU ztemXr-m{%-bBZPb`1x4<1Jw7Ds1_Ys3f=Xo(&V^vc6sDqr*?L>D?g~O+vh$ndp6K~ zW2e-?i{SA2z-1jLVeavcx3q7DEtwNp7FS&uZ|Yiii?4TRQC9b5MvQdpQ?t)`I*!3H4PjB53F?8~ z>t>B(rY0$OjdkZ!y5yA=be9Z=e6$V^50$aca~$@2K6VFG)s=949lzTXpGR98wtso| z)z`juK2C+f4sK>=#*;63vW%5!mts7eCjBJ%4C9sN;U#SNOVaPZZC#KLy3X0Sc?5it zxo=!5FSy97LoWNGta30~#rbO2>{fk`9Jdr6fZ+W`D@3Fu?@6*d`?Ys{8t}-V(E~{{O z5)Z!S(z{-Y&Sz?JP?QYsm}~!zx}r+5ylUOKV-WN4iQzXU+xUEW5o7L4@l5?g-*wuU zFZ3!uY2NIbiA`pB!Ph#FZOB7QTJiaPSf`2F)tNgU>-bMb8|u~KxRByTQc+Q`FHc!V zn0*Ord&rBSA$b8MSu)XDgEOb{OGmHA=OcD68PYQt8Zu0GPGVfN?|b&0e}$BJ!b{GV z7dg_-oQEPV69d!DP!(&7|~Xx|T4ioWlu*PQhlqj-G7 z%{Q3lTw9F`M!7Vt*>I2_nVyvNI_&jL6D5s#yIjefs2lQ~0-I>FXgc>>7n>f6zRx@Y zUiDIp2Bc}~AjIKpgYT=ZLVj)3M| zjBF5;KwI@eVSc2*^PH@RBx(2MoeYXKtX%&F#x7~%UFB%fnIxM7zncd`G52nUq*fQ@ zUt}l}H|Rlkv^LvAlps zm?Gtq(J9b@`HZ6Mwo68mJFaG>yUMOtjSy3Wb&jPqwA=VDJnJu3$5XMp2W`5i50kp) zL@ESR_WF#UO&FEur4pRdw?Tw!CPeXeFSLC6ly3%OeepUD?;sbAF>`leI|BT3JA?UD z1x{`8o!feIus>WYx)1O4!PLl*@EYuR>wKG`ASW+2Tgr@<>2Y%^ixpeXYT=@_l1A0H zyvs@m?Qc#z@18w9s-;Ek_obumMHLXus(G44F*E;VNs5|$kX!k3?&Fp1+~qsv8Pz>s zzJC@@m2z2{=vSF>uP$fO4asd<$TBv$ctf-@F(Gd`GkV@SE79XU$Mo~zmaB;)-X=AM z<7v!~&ov9aB_4WG=O+E#yrd0DOlKP&$_gSU*BExHXuGS7M zQ(lFf{(hD27&3+AC$5$g?q!zWtIwoG1R3?siQ0|mU4@^QLnJ8-nytvW_TMGztFJ2H zQZ;?LcURyN?NjEUMnR=sx2mo_#Gq}Q%dtsHFspkJwN8g}gQT&Q^&AUolcQ!UOBiR*Avy8elQD(!&0>9nj*_%;D)u5* zI!;6Nca1Ab&#q166EYG$B))KSyEk}7z9DZFo4Um$Wa!hnlQtA#om8>c(8TXf#w;p4 zAk|5CKA>{`!}qz)jhh9 z&Q6av^(E+lGxx8re!uRR;$i5L9Wi48o`;p^d2q9&=zWuA!rtY_#Z4cbzUkacE&eiC ztC?lYs%V)&U*k3Qd9b$pdrRB=b4l8wiU-A*Sk1?G%3|b|we4AUi(i?C;M*VeY;Cth zFEegq9_GJ9iFsmBq~-;Ub(L}?ciP|aMvK2P`1DQs^NIp^6iVU9J_*L0d8Sef+11!u zc7r#}&bpHqy0>HS%@jkeTj5KdnvZa{>ol1UHhmVhFtog2yiAwuVdtb5HlWUFTxMWL z?7Pr$hMwT|{J3lV<<~?RuI@c;&%WxPIctsXQ9^O8x^!y}F~Pu}(HF?>4QrK~OL_a|FcU`g9m-mistcdXfTV)HW#ynLyO zM^5cu+t?a+FI5QJ>gIui=u`G)+L6b}bv3UWt*?S(Lp)gZ^?|zLGrz+90iwu7KA7jFb z85^fQ&KYznFWYLzOAL6pab-QMzwR)lX9;LTaXzMa(Qj;K+MU57UuC{MsOB4B}&&0jgm)Sk4CdMLinv86|_2(CGT}T}7>@?c$*Z5k}-&y^Ma#PpU_NDe} zZGjc;DS-p1ve_z)>S6QAZRVd?m}VntX>{E`XZSbB6tDPPDZ$VO|AJJ&XHHIvaL zLP29EJrugeQ{wUjyK~TH1s+$!yh3=!^%n0g@G38vD7`IGTg~ zrxwn`bxEn!S;d`i4l;5RUrub!Cx86%?GmSUi=eZw-^KJKC9;*YjPS7x`@!o5n((>x zM-4e%rS6h`UTVR1EYY*5^HpW7GbGTFGK}u0PsRhbFH>|a<0rIaBm})Sbg-o&#@_Ts zmt*dPHd(8xW~^}T0KwJORUtD0SHl+E6W)BfrBFgHMa!`TEn2a_8V`&)+wON7%Xu3Ua!x^kH=|y18?Gev*9~r@4^Vr47(tsf zc9g(O#9(rwDfhp*)Ww7}p7{!%lo=Jz2`;${Zo1tRew$~DTxTrMj}F%hKau9Mb;!Jl zsN6W!*DhXEa6z-B=IlWi>p@qXWL@26+2_v8Kjti9IR=Un?bXa9eDA3u!`aY;w_Xm#!D8R(Bc zBE;1m!NoctetYE(&|)(k|J`~OJ!^2CP*{L}ul*Tbg6pt@2cBv&Lh0=y2Zz`Pykj~S z39!~7MmPq|z}ZY9{y~P_=4|k=cp50~_H#FGh$R+dYsem3JFFm{5a)syBwY@lZ|2-* zP;)P!Om^HDUk-`44dJnlU~Dvrf2qTR%Wrg7E79aL6BzrnC-l>m9% zVISw;d=ZdlP%oofLJrI_FAgoNp%4A=z9o2KE_09>N{C|i)oFrZo{6QO*G?@9+Kj`= z<`+#gn8;o}%ZK5nB9C>HHjPi;?|ggmJ^-QCc&B?n0gY&1kCSx0eCLx&0q;c4B9RKL z`y=&w2o0?i)TeWt-YXUDzRt?#c~O%J4?lNDR^Gn3+S z)0)jmC+z;V2cT{SvK!a&-RiZE$dXU3RR5^V!R$E1c38`l-g!ZPlFfo)lwdC4=}<7x z`itYF0Xi;`I0W-+?)k*<&;G?>;lEcHkzKTNO%nS<4rNwRf42Wfu19tH2fdm0SbBpZ zZ8CW_iP}N^-gOR{bVs@-GZ04Wv8$~W!Z`b-E=lW0t|El+D3T$L!o;f(=FIt2Wzd?h zv#9y3H2nS@VtET{EM6MFV6MSz@|H1FI-^{0XG)9+!WA53nkaTM`ndPf>pm#;N1%5B zbkKlIM3ty|WlsFrWUKYF_)@2$dqaxJBSC~H_p&o*Q0>9&l}z$PSAn*oCVi_FV7zqU zzk%hyf#rV{Sa$y+yB9MCMhm_sH$03gOJF6S%zq1^32|}zP@!Y+fQ$iOX-*djq$;F@l z#W7iFI|t}NI0Lpl0oOD4(jMB#s=+MVs)cG^@2Q{kSyjlh%4!BoLN@+^6>2<&ik zbm!^p3)298-S>J(~b)AYsf35 z*6yfTc)1hf2g(YfXW~rsg>FSx$G?|8Ld}Mk%v_@?!f?|ngZd1FB6vIUV?6B6%{hvG z#Uu)67WYoP;SCZxn01g1#ZJ{bC1nGluue2FyK%NJV-MD9IB@FBYG<#9Kg|_*(@H(! zOW?n4tALZ;T?X0tH~x3hrPbjvr?yH&b%kU$ry5;%?7Bz$9hWUfp_(3m!xAg|P%BUQ z;GHyg`y4>0&d0S!i49xMeW#)7ot6cqj%~*twxtz0m{^^e>A~nPj$Er@%584k!T)UM z4Bf=-fK5}c$$hH{Z5-IkpXwxBXSHMao{lXT3x_+t7pB^P`PohVTsFPD=}YxM3I;2HhMv`Z5>6P7tVIphI|VAoqGhkssZDDvXRLM|;Tz`Ks zbaIIp@F9taDZD)dtG;P%Slqf}jZ5nUR_*2vN;OJ8_ix z2W2p2!=g3*ofz!@7l#2m{-fLZtf{SMiuI9XLap0T@Yyx&P#(i z4M;>+EG)EQH|6Z}OPX0oUkUcPLeaM-q1kDP;}3#8C%AD{<-R9&ANV|#Tq$Dr z%-qwT88tAl^E|55JqQe^-@0QppMsUeZ5UUwDQ_eOM71UCj$_@J>&NTk)5KCuOrT$P zPGLGl)pZog-IuZCU!G9N^Jd06h3qX(=LxdiEa&dwzp4J6MiWFfH-o3DjNNh~f;eb2 z=$zlyZS^R}65?IRP!sinr420iaB3N5SMD)waql=7v2@v6vL_bn?r{P(r^{b{CAyD2 zDQcW94bB4<%ab#B8(#KJ^{*g~TGM++9}9qWt!Z45<(o$a02Muvm)UoOO)G(m%S%<} zJ|f%E7aqvj3kj?==YtFRCvTTt@mwxmS%tdpe{yoTN5s*}m)WLj{3k!$$<*e7^J|&p zdoQSBf}|(UW6qn^43bFNqVfN%=l{it_33_y%Y}>jC)J-^pEs>`emo;#k$1s9Z&XuV z@Wa)`%4|hU_YeG63;S4+&(H zyJnPW40Wm84Nngbwtc$z0i@A|;`r2GKPBbpu?Y?S4492bBgkS9oRKo{awBP#e=O_a z`^f6(X+>%5%yQ3=oySh2v@kcZU~hOao-QTuJ_EFg`{00E#gX=&f&fK#$~{7TTm3bO zG=&xPHd|Vq>x+65G`qS~GNS2_iU>>{5MuNUQ64+34`g_8TQ)zi!GLJgZy#HCV2yDV zGpGu_FFOEZ7%qov*A`f81$ZTF=$lZgnE}LPXW><(PK}m*`id*lqCNA2t%UO$po4}t-#O*EH;(8jC!9=AOfFwa=7ByFSLWQt{%k*SYOUF04wK8% zt*94a0_VX&{^$1F#YLqfx@YFk1uhA$UF=^qdHe98T5xu+uO6^%ErHVG(%jcnME9XGRonkQOJ}FJSG5vSqjavH;NbvL8*h4Tx(Uld$?AT5R@D+40T~ zHdG_-(pg@el_Zosp|BXuZ|?y#;(8arGO}OJp`HWu9>Q}jqtGh1DR8D!w-$YPdUdVl z`a!ygu-UR&>I5bW4?|^9)GkWoEDd)+hBNa=CQGT`p3PION0KB~_UcuAuY~exQ#%-z+tKY zJ~;!Yp?4Ab`t7}J*lK>IN)gKU@wZ2~w?S1Yna!|VTkvJpr&75jKy8(52Jp!{{Cgph zrB??Vd*wwy6}61{L~D$V`}(Enu(f^U3k~)u<1Y>#+P%xo-EF2u zBHODkPzSoN`{#tU4Jp5mTlNeNR ziDMPI@_t?SU874X1|pUe?p=6Hg!D_SeEF1)v-3}u4+y$OzhCaWCP;bJ6f$NotF+vDiBbV9YH)1$t@S__JQsXD@NW8a?cWjqn zon^lY2Xqg>8uPKT)!igYO=UmhOW;%>j=VOoI49WTN$`SDoqG*(L1fWwiP&XF51iLK zc$q6KYbCU^Osx;Ub0{t~Xm4Kh4(T~3ScBMXAMJq-4e>txuoFN{4nq+p_rn;NES#B0 zD%oR2D+4ahz1mi&ppkvrw4rhD-YAc8kW<_Kk#_D;4O36Z+NI}gZ6;VOh-7GK$FIG7 zfI=!dyIXAvw455}fzu;itjSH`!eTf=Ns(yEb3e*r_+#AHSwt&?pYbXLuw;vB;qU$9 zRMokr*m>^#)KYpC8?=8cz6Oc3Y-N-UO3{gvBO&%~+GWF&bbX=1Y}=zDrLQT6bEf+q z!-ihMCd!y?POIivS{!l2$sNPOJt)EguCC^T^wh&AEX!dPk5dh*p#GaSI!*Ku{s_DT z7wOxP&!{1g{q&o6I1p2|T`O{(v|DJ+U)21)?Dg$FDN})MSeNV?O#d4I$m@J2!&6vW zQ?<+3s{xlizr$G4cFZZfU>R| zl4x|Wjbn$ux8U{{reI8e zLiHDp=%-hrQr9Y6=nvsjkDeQ;^a!=VddMH-UtVD;C`PzHWqKNRzIa>v-{M&>&d)fOdv(wUz``vGcY<% zX|*(uf_$8MmM$QnyzM%Oefox1G0;p{$KDcio1vCAFomF(>uPSjewJ6*`P7x`{pwao zLm@0twpb2V&R-_!_o#=XYt@MK&rM z+u6onrv8o&QbIx}?Q(rwCkT|0_rDuUZe~p$&>-ib<;Z@`kw=KPbigBW`Q(AfI?Zgt zf27>)U2{0a_mMOP2Q9B4&|wcdxNIpaB*DI|Nv>Y+U<7LYo2u^5_{-N~_8{ltoXV(= zU)eXbxVTTw?OM_Id8(TDA%h({IM)UmfQ{i<_@MSx=Cy>|qKV{MztVnf>s^T$QBD${ z7HX{>FUW?%$xiEVT(t$Qmv`R z4r!xaa+mkNAf(^1ZRE#X**}~88W?PeWh)=-dOO`1UQ5^w`ONln-T7~LN)sw%j;aZc zF+5+8yaU<5J`#!(iP;wxexAd1ei$;dJ^#fI{YI{S?``%#R53&ISJ~lm@{A$(4GCvR z(H*@NffBpPB$=yei7A121?-xkj-ywQBBj4Sx8a_U-OI(V?(Q|~E7iY!LHV{#^VBp6 zEMyJ1cc=`R93^vLDmA>3!NHXA;{4FJP~A=APR!nqhMUR4r(NJSa^7%6zCIMse``cV zp5K#4+qy-RlKF%E)UIm;_j412IBtMn^za!G+g}`B6T3ukWh#S%Y9&wqMNrg;jCDd4 zM_pPXesnuy)S}5SXH2o(5g(#hE&1@lTv$2ap4g0wzX_v5lZ5KGo;GO5Q@~ra_E~c9 zSe4@4t7{3{>Rs7b@uAo*S&tjn0H$HFa--S0^EQ#SB3w910~l9RniqX;wd!|sE$n=o zIEcsd?Va->DcxB2H~{Mw_jhpFDoCw&UUp$HO;v!7EP~BLgVu^|E2E|PmU_(4Keb7Q z_Ad?^xYQ|{DYmtbXkR>_Ax@v_a~&>~43#uplmyANd56nd?GB|7;Fp%2M?a5Dow*&rU}bNfK8o7iE{>%Mr)Kf& z2n!CXinw+#@r@2j(A&6i7KGv5vJ-a?4@Uyoxt&-La}tJj5-DrWn>)v+(t=!)DQq?L z7O#w2MHS2x#ZqNE>4e0G79N`65d68%vJC+-XS?&Yy~XM^V)hw8G3(Fd46>TCJe7FU z&(c>@IqPrklk0}xJ0UsiLIGJIcM&B75<2_)k%xlz8w3Et8H=8VlY$~>6(rb~#R)p#&M-fvzj0*rurRzQT-R1X z_uJ2poqhc)uW<<$Z2}GtU({jbq;8#OLR-X>i}rRNyI0AG*$Dz^8h8))X7va3RdeT4 z_srHQWnOIDS0Wze_D)Gl;`P9nipCG`%G+y}vZ1|^x_x;GJ`i;SxKiK=(NZzl{SPN>P1Rl zSu4yQ?#l9hSJh3(^+Hrl{vT&$yq%V%tmP}Ej;W|a4|RdbD0LZ4y8LutNmc%9WE%p4 zfD#I>Bm59(8N?^T#Bj|gePWRPr%xi`91d0_kaaMB71e`9T|)lO%qN?tED4PAXp*L+ zJ$3!HNfM1vKzd)BFvb+Tq9$^YT|}vvw6M0evOi&ZbjSUBd-;IVumlP6wvUE9m4ghV z+|ieWb18XF+%{sE+uGd4l^$v2UN)rv7&Vkf_5hLIhJhvK;V25SL0v<;Q_5GL!i`7X z(&sT;nJ_vbNk(PzN%w|SbdQM1OM<5e$IEwu^!^;~Y9q~9-~KLNtJgUGD9R()U(bOI zv@HrvqZWR2cI4)`Ynn?eZTZ64#qXP{qjO~9+oQTZ!YhKrJYwasOpg z6AR$nic0%O1v6md$>+wkH>I*>@TMVILfI&)un5DYuf+JSK!r%a zTl}F@DpOv~vGrdZzhaiourpz)3%=lJ3>#0;yKs`ezRoK#ZlZqM zZX!e5`!>*x_Z-1P2@rFx`N9zX8Pn$`2Xw7zWszQiO=V;HTL<@F)WlVUgZ*h!3PWoS zfXjHkIK4Ady`+fd;wE(HJL|<^ap`Zp!^Huij|?t7cHb6{+S~;R+g>Tgm4b36x zB*Au8HEfq{@;HDG`=E%=D5qSYI z1V{RMYxQBQN&f3xpLpU7?t2n;qK#drFYzjhrmMZf8s{fnC~VL_SY0yRM{M?sGA2g!U-P zl_RUvjRL}QB#Q25;12%9u~-5RJ8R>M=8vpUyiRF8LmF&I`~zYvM!e@UFqLWIg?HP5 zja3VtD$nNuinsVTPJxx*-^RgKn2i}II4{CCh`ufU#VJ28g)j8MkE#zee%!FH^3C2Y z6!UJ+oT`+OKB8~j1$*CJ7xxcpTO8|3ry^`N8-qAcnDJe?yhuoyJSr((!{%MDrjzV- zt@7o;wD^oiaH0>i9b1#)Nz~2XUP(oSm3Gcsi z9VY&I*=t{1K|yYi-j`01giRNk-_0N#8in}Ve^cADa{g@1zkK2tJQCEY1y5uAfkkQj zGm6jE8`M(5Ha6dx1c=L9*G+ma$;=F_{Zdv8%_cn;*3mzBc;Ke`?%}<^I58g;{3t4Q zFz_}(1;Ez=z=jGo&19g{>&H!sHcvLGC_PSn51(Jj7I)!7eUX+DHWO8d90L9_)7F+s z6OORZwx)Ujtn7V?!IlP;)QeQ{Eh2Yt?na8!WM6()HQ0X{cvTHW0Z8c^>4c}e>949e znN~y_JlCb1Uss9ttBSE}7io37vuwpT!Z^*hXTXgrx6<7dd1GgXQtiXcgA{gu48w(2 z%VabJ!=d9}(Vd~04Jm9uiAxOKK!(K`i^DU) z95Ts$ww^+&p%IhCEiI3m0!H`kt=&IF2}X1o<2njt#R<|KjjZ z>BK;r!_`n~^>>!DfEE~xmdPv7KVQGBxHSR6H;7UIaDi>t`K&GBduX$5u4tV@J;4lT{Ls=OF_SXvuk|4mnFu0C`} zNLg#q)MTY7bfVH;?N3R>8%2p=rF+o5vdh!8Q84QnEr~T;x!&A-3{Z1zVN&ECX-HWlR&P@(d)XL*r4*>uXJogL z`ha4`1yFwVr3ygF@c7arO}-FGHFuT%>_MJRE88rGR=7x3B~W~QrMMCO+tZP~QR(eC%WFPX<@ShQevZkMjU3$O)-2%Ahcwv;cF-ArR-z4xxRd*sxlNHm0{ zm7+oOq^Ntin3k*S%hUJ;kj7I5kZB_S5sYHTkgF&PqZ_sWdBs+b_ z-}kq^I`K}918m>8Xangs#DDo6nJQZ zf*Sa3PrvZx9X8c4GiEi?J&4AARgRd@JveAbi)GpY4W9JHn5G`$XC+pxV9M{7QmmE= zlB|W+cJgfC@DF2rLFM zwNMY9@W}@+F(qA|u5!6J(nvcXCIhST`+ze_hY`dq!Tv*4D!(-v zTM~af&?bjZjcVDj@X7w?uQjvj+NFy1Fv?hm#XMf*ZPTyn5~2E9T)j z4PCw8Y200vCa~8(Jo;?1A6_*#((kh!17k}DfL0zBRJ$ooNC-ENocZo|Y zO4v-|N-tn#-m$iwlkq}GPe}Ns?h#8@kVUUL(P;*2*rhx(EwGg*^~Zz_|D^J1OJ%e5 zKDgC9^s&t5am(P{7$>PgT=h?eUr@BC@#4F-JjTLL)3#cF2FmV&TmRrwRlLQMNKp^Cxs^f2 z!_A)Kx2?x6tnfGsykD!35tZgyD%Ymh6;1k07XwUD9&`<{qvY`~PglSJo#NU{Eq=6c z9nMD0al2cN;6f=FYANqyX*a#`XNSR%6zjkQaYIn|ygy>SF4LYfW>ILVxrspi6XPUT zCaNj`#KfcQn_-fJrGwGygVH&u@eOANa0|HEfE2ZMU;iI z_C^6BYi^xg5@7RIM)UKNx(Z>R6cv2pvZSR+8?N4%;GhN%_yJ{|KN5{eP!^ts-k*5S zbXv#3pYL+Y@V^KhYIN`^@ayQQ)|WP$I-IB&wzUAgpJ&hkRj#@}fzGg!yO*J~rEAM{ z?X%e{_+0(#zx&ZCuUlVm+$%J71~TEfk)U!R9+Xjmu77d*jNlQ|5zr}c#SIJx6W@>|a`OTD$X<@CF9>Tb53^K-N{ zEN*x$|IJC>Vs6P%<0%D6!g%E=IRleb|Lg{)%^K>ov12WidIhPOa|X6)AI&-Zt%!D(9j8Hk55ee!mc~@y!k~r9kmxQkm&$WQ%}Q=QXco!mA+KKaze{P?|dYbqwg|_N}07P`T&L2lkOFGxcT$ z6&`~65c*r0$riL?gND;Phmj{M%_>Y-NkEN;nqb`M@Wg`Ckss)jbYm6v5RxZQq4N>x z>c+$uO0K{y)SyQ-7)yFVjNi=w0NFKx@#8jCIiq94?(TsuPc3(xaChS+WHXZ{#~&Bb0Dsf*4D5Aojo@}swL#RX&3JL1g158M6JfgY+~OKe+?l(}%$ z)>p>;bY@jJekXN$gpWvjH@2r(uCin1*DFeXYzdGzI8pjLz$x%nk+)=RWAl)5^T`neo7!;!v=dc5RhVU3ohm$VoiHbN=&B481lv;>=&Kpc-B8 z7EBeiww?05UiI`&v0lZ^;(sqg=F-ThKGuIHPG$6!5Q8;e`9e1FRywIvWk)pUBDYa> zfp43!Q50xeJEUw_6rdfI4%$vPsAc&cgZrNFpGvG7n7%OAHsU4+5d|XvTB@#ny)I^x zD%u%QPg-H4lSH7G(aFkTPs~2M%Bub21tbjo4hEMgU{NERyG@Pyz9DqZeF1{+PG~FBzP%aT4ou(95+TUF^HKF zcno9ur$8(92Y%Ykp-|8iNNGLiYHXF`lnon(i<0wA{a6c4*Jtm%Hqf;hM`BfC?XqA6 zAM;?_{{2i$xQso_GQ(Zxd)Lp}fTeQ;{K@&1iJ3SnupvEAHh z!YmzIdnH0h^zocsgJw;*xooB#y(d-;o{LL-nyxpD$F7kNOGs)q9;~ZqpH0a7dGYTMDT9@*^YF*$)0;LR336b{}Tr8sxDx+N``_C*w{?Riv`6i zd*A7Z%IWdn8~x`*u8sW>MZxiyB|@?sRiYXuss&Zr)#{>Tpg~@s6%;{U7Ok(Az!duJ zG0(r9m0XRL<*7`2X4OnuMIJxP%gvK$Gv%>)r6y9~5K;c%&uN-Aa^Q;@+(Nk^#>}gh1(UXWO!)FP~4K zcRAHq*2aI2^=2y<^sEt@InYD2aCPj451h0Upo;MujQO=9|8Y2=vHNw~V~M)hWyxc4 zc@Y*3R`;&wtSTZrPhO-v$6FN{))5-nb6-yi&-@gehc*8_<&qRRPi>o5^kF;-tyfj_ z*i%y12RKYz93CxNLX~Bo_rdPtJr}Cl=Qvo_VuwO>(6uV2vVVj9_(P@l>HX40Q^md| z^0XKJNsqueOHWFZAHbNt^5f4@B2WGy3&;|`;Jw^czI}@ zb-mM2pgc8);INsI;lBV-ZIMc60^iDZ-0!$EU=9lnX{@Myyfw|8K3(%>0$allY#N6pA?T17M-tp~rw#n#X8&c8S{ z?De03pbe=tlDrYH+i<6#UlhC8V9dDm=myDRN`DOQxiwzJ-^GwDrDZ$)7>5dPu z6_6*n%lSx2M)#xD#KZKwrqEp9iU9}Dd%6>Ho18DRHcpn`@7fdYkhTLl4-A+`jyavy zuRM@PxNNcPeJcBs8QNK7Qd!u1S zZ}K8CfipFZn_8clOV392;`<|pSR5+T#cS@vlFCSZi+F+%)X~nBB7aZWwAnB^^CHu> zU`#xkZ}7&%byYuwYoXQn1%Kw1Jli9i5(eO@m(^ZB_px{A{N8#igZhtfRmOW_$X0+J zU%w&0`EU5CL_%xxl1q$^r*KPv@Y~Jk6#UTSFj{O@g6)!sqg*woQNScl(GthxFHZF$ zP5-(J06F#~0ADqv0|U)~n(!+w8r(<+1aI$2Y*bYCZ#i)s!iTKE>I7u2o8e^3%KkCWCuEsQltEZsdT2 zV^2{tYpSq5!+qbM<&P%aJK;I%h)P(xxV23g<16BPi>uP?4~y8JP^d}phmzMy#?f|u^eaT=86L&GDW%N5ooBco z><&MB-MXNvF+p}TJ?_G<-8g`T41=HPT#J;1t@2VSa@!XsUpTGz4{B%-H81sWyN#8H z(dSb>V-L+f;K-@EWgB-6NodqQCfI)}m%-Q^iRpiH6RlgGX)R^&Z*j>;mx4ZLD1LR| zpPtk-7a82Bg%{gAU_56pDlPuZVJ!K+o|9l&{On|LymOJGcvf{tOrNb>re}3J*v!$S zSB&@gpI0~+my+b_wKh0KwhYMl($l$DbYptQb+u_D^+L_Mh~dpIqZ{NXHO z*SE9N`W!&hN)C&cn0P<%CZN7Q=1-`s;9YRT`bR*W$6p-h=0g;XBFOyFqywMWoORE- z<5CBBL&dQ}XqYpxm)zqc#Km}d(MUDLgwM#}^Hg!dd452{>)KZl61m#wrSIWo*D7}3 z+{#-{8s++Ah$6re)-wUoDkRe6X)NDcaJ#}{AkHN#=SK7NAH#jM-k@j|)7JYW@+0^^ zb^oW8hqw%CpBna>Dt5)3MTsZ6C5fAH2DrZ&>|k1DsztRP75x_nA$p(t_pO%j#(|GW zoO#<5h6Tz_3%OW(2xy1f!Q0pTalC5a7T0V|8YPbeh2z@^P_REo)03g*aJmO#u73^!&3So3 zl=>Iv0}{Zi*<>BpQgab-ayvffGiYEGH!=-e2c`B2WfHTXhlyA_J5I%#zicqa-#lsH z$(6f94UeFwCvJr@EYaBcM?SHbd-52|ol%GXV?Ad7PR$cQ3WJ5-)lFD-iP+X>7YGxV zN^+yo6|OVP_ma+i4&m*&Q`U8r@kx~)5eg=JCm1~2^mrxfy-%TuRZJ>{j)XtidY-p5 zcQcPIByr@{cI4k^uouv$0?q03XKN@DA^U7HV+C$wl@}jd>+zUdC6rzz4ck5f&W3e< zBz!V`I`B3JV&0vhLEee`XC^N_&+D+k8=U>2+_|Eiuy(ER86ER-#Vd`rjmU$I z_bLisU&^ZCS=KKf+eVA^UUMZ65vb&pNqLpnkl#Wh(J0j+mEwHThTFW1 zJI6NB=gOeL3dB~Kq-3ydy|=)RriWUM!iSj|N+|WQ;!j)vq~f&$`}^*eUn3tMWbHs0 zwd8{>efFQNpLQo=Vgyl;$Aa^|<92PV(kTOaDEQ=tZiA%dRM1*}f&uz%OJOkrrf?7Q zBsS%a6&({&|6pBz?qQ;bjO2N+vBxESW1%s&AH|%+=bRncNUw684GE$s=n?ljp(#IJ zTciq8zGNj5p_X)wA~Q~uhZSU`;)>UW@=@ENO7tDijH5>r zYP}}`CTcfnKoZhPI)pvV^d_VsxRP3PD zUqfu|PAbactO)PybW25r**^c8P%eE4o2ZS=4rp;`N{~~DsV>V=72x|_h0ZGhyRz_~ zCpmZmn4Sa&J%Qw3dF{vb|8{EqGa51Bn(1+CpD4QU!bz5e&XrQ3y45FG4|DG0V}T$p zs2p<$K)4wwX!E8>HA+WyG#!{rWINppV^Gtk;I?CH2(pg~dJ`meW=7TI2L6LU(!nA8OvEm^Dm(kh@lpa&^iX2(KIy5VmGB6;=jZp}ylY&`ff}PO+6^sRy7z zYsArm&c2c$P}WPNbYa;PGS~L{^)v$K2++Q;WZNRdvLwR|5BO1fx31iqL4Hh+V zk7Fuwx)uCRTvZ%YjDxuS<+CrKMM@@XiOH5ku8{jZ)@*|9RN$kux7Oglw4$&A$^PXPU2(^udot%d zdMMjjDpkuN&*)3!jxObI5ZcTbH)M34OP=JG`uUSV86NYgd%HLwcTO0 zTU|9!q6H$?T=^u!ZWrd>PXz5WpWU7It136rD0e*!3mCbc zE+(XdxkDW3fLWjRZ~9Ituvz&0kptfJ%$zgLq)gi4CBnClzi?WS7sfC%`Ip8k z_ZSU`P`mD1*3KhhYJ#Yw+pH3&1Hc&M8Ht5EaF$0_=`ud&Sd6R7ypG=_Wb0-Q_RPva z=`mKDk{%TMT1x;f=lHM{2YaHZKb79%d}!rs4M)fBrMT@ho%C>d^2>5Fam#{kuI3#| z-WgphDM##7PHhULi6vyV*9dkRgHiG?4#z6w-szPrJlGP8#!)jJ=*4erm0~bA-hcnC z#<>lSO!;%cjB{<2jhtWrK+N?M!9v~)t^ts63^Dw4Vs@*`YIf`B&yQ#7zCV8js8(`$ zDwnH!DLPvsW`%fUwcUZ^_wG(9su#}ejYQ=#((Xojdp+*>lvg2bs#8- z5M6IV7w1Xk?fmADnofHrK7^9h)!SF6S4{4$5+aAsLsnb58LFq`R2zw|(_#{-nPx)w1As&lvcAD=G4HI{9 zc?ZcS^r75TCV5FX45HWI;XmfO%bZRbK6W-Nhxx`u1m=f%q`3mO~AvvNDQ- zaDh})`=r!5FC5fNI-))%Q}#=^MSB*WY<;Lcl-wkxnPx4v89s-{X4gIOh!ixnFj_UE zxCnHR{ZzEh8iS)m{F7eVuwe&#^uy9Rl|eKupwiyUE-(9%UTp$cfcIR>3wGnr@5VqW z?{#JoX9E4p`6K;u15l0q{mr^sA=1uwG@G=&xCyev)QA0Gn*`&TJ8gyq+3{)OaWw;* z<-iERt;Z7a>e(REPCq&8bCf~M*Yyb63cE$Qx&dgsv`n_)$6)Dhdx;x!OW@13#G!8q zrs2>%X}yjvY+)(?v`T;pd<~k-8h;so-Od?Wd_5E>B3RILwj5e5fOy9VWN}kfwouvX zO({wmho7fsyF7JjT>5e}yZThZW~K@-uUT33N*de6qNw`eY-bubx8z2!Ey{|+??JqM ze#u2+bh5uGQ%IeKfts04>>qN`+!3qaAt1}>NyP3_J@p5c0^`ebQm$z{jAoNs{3DBT zsEa$`;B4r-jM`Q%{c3=5(mA>AjaQEn*HHNoyhd9s&FFO;#aOBKFb;rmzHlG?Dz?Fk zI*PsLTk7@{9PfAsyjgQbb**G{OvlhAfU*E#xg>NDr}Lv6HE$MPPBO`tB${y4Wm)hL z9h-}xA-~khf`4Tb0(4`x@w#mPmi?g(MjdqR6fpmRU%5MTm(sc9JYuQ@oLsY+H(3HB zs(*J$pNZBQzCSRu1!#f}%`oe^Un=6@x!ZxCt5~tslsexLg~;TUO?F(wYbq{b zaj-FcxzF|f2MOp8flkQKrqFB$tqpx%^h1xAxYhkXO%~dnoyD0I+7|WMl!x#8F>aQ| zSS%0%?JXs3VAo1o{6Pw8%}!;4k};d5*wcNnJt4d3+X?vsqB#Y&!a)^!_M&9I8Bdak z?2m?AA|7kID~hCUnYP08rET7~VFqZF&v3#dwyA^E*dyMIN_G8}%We^lcbUM+p5`m3 z1W(P^T)3s>(Rm+=oZdZ6gO^lO-x!)@R*9@jGNIe5I{AiaV*$e|j{plH*e(nhZOY(D zY{Ao9Q;b_+{GjfHeZVkGZ)#dP;l~BnF(fS33S<(X25RpIy%9If-4JDN zXsdPlpUCZA;G$7=IBIG#lCLB;iX0C{-q1$;>vFJ^;f>BP z+su9)F#WVYM-L)XS>L}EjgnRfbG>O>eE(M4=&;o$y;eb6t%d(~sSY+bHCV82yue;^ zlvtN7lSo$?Qg*K9TIA7TxV$i3FYM@)Z`}xE!u@s#H3w;{5YJ;wLVbvJ%_U|TWK zH3&?O>Tu;wid|jtD&Gz?flPKWHMOrnF zUl$#(9`E)W_CNX*fJk2m;ly}R=!LC!d@v1Eh^1+;@vSl0oA<1LTB6@hnx0o(N@S@p zL~zAWbqh;LKX1vuimY`ffR}MN23ztoCS>ju`bXslVi~q-vdxgsXx~6n^yLi`h^q#W z{+lENU-7k&5yQc*6DUW=R>(go`ZF}oAGQBzf7YXN?+~XB$E5W=3Hx@k6CX!FOA-l= zRDfS;U*Kd684n{FGSfwWE|0gpPbq$nzOzguNloDmwSL?x)PJv3!M%X+Pf!P1WUHxZ zwsiWItN-gaSWO0wlPsUaYz%#=nOP6CLs4{V#LMc?hfcnU?X2$orG3d>Q0I+)?r01y zlQ5fu{#C6$r^mOtvmMX7KZhy;M*MLa56gevf-7b^96#fk2ZXgXF$`wa3w)2om}&%S zh&$1434U}56iVg8(CSa1Ht5yU=D(tP)3t8_O|sqx_&5CS1|^O!RG=GJs-}4jfzX$* zDo3wy@sry(@J`Mxjy=Po zRFeSB$m5;w6JP=gOjC+oVAh}p@d*Rfj>wrnlh}4q9;EGRn>DPs#Ew90w-%*AuUcJb zIIkvPNWvPEv~T;7Wmov?qBWdltk|i18W~5~mariK1M@9B^7Fo>{Bfx~Z>*gEOS(cS z#sxd^R*9y;>Y*n^diV1~l0$oWFRwVIqECt?%np(Y}2?LvvLYBRO?= zz_vwGu$8W!UUYEy4>wf_ah1Lh@_mh5d<7rrOi8TMQk@higXTcU)W9632CUX?L+3%f5;(< z0#$&Lg{Q6JjB?*HVEcqty15iPx@kS6Ov6osnZM9c(l^k@fgv(ZLmc8PyED``H(Ief&`zjWg#^(k@<>D*nfN@KKz_ZXPL$K9{gU*uFFuXjV6R~ z9>V@uCzN&X|F9y?WB&Z^DydCndyyghboY+X`o^*^#=4P);x`;WW8ZB2>cL@{q;%Okj) z%eeil$Aa@vd8W(nVjjZj*(s3K5_h9Mv{F|!2^5?a3|5$D*9IG>BvSJo8GWYVA_v&+ zDGgNgH*XK$O4J@YfmijzG+<7> zQ%Vx-G0EdQzJf#lX1wut3I(2@h;!e5sEry+WSp~OX~vLTzsuDd-@3b^CGMuU{zIFO z&N>6Ag7VMNGsTI7c>TE_N)(s`9ZFmuBQ6yHDFwaAn}CJPJy*?$0e2#^Tln#yiq2EL zL4)Q7U=qM$P~wX^Ze8>2^6GrETAE*TUGh8qDb+Z+4zcKj@yPL-7dBKpxV!WwpqrYK z5ugrf{Nbj@Atj&NXxu`ldxPE3fMS~Qo{VuoTPFMG=WH~;g0X!jG)u+f2z1NHDw)ss6nx|6s4YsrPP6+1^TT?)BtjML_5)06@sxz_n z@A^$aFIgLKmcO9DO@RY47LCYVug{|B`oi%2?AQejUO<~?>z*`FGu|uhGQ};s`L=7$ z6_DlQ_qh8nYA)=3;E!*vC26&Szl|&kUHA-#Dd!R#P-F*^37YtsoelJKI)B^{66JdlFsj6r}CmBr<5Gx~nn#E8eaH z-lXk1LCG&F`-$4cQV1%`B1z2TGwIFntp{xxXeay1=-ch7&x_ON6gum_4pZ3i->@?}@o@j^4>0?o`V=F+<0;nmKkeQ7JKI+r z2XHIa)n%=ztR+NIil$nXxODZjYU;WL39B%dtf~<;<}x;xM~W4x36;`D5lItwYN7RD zMunBu)U~z7!b3H4SzD$Z?Y`gtpg-&f-9EpcAI@_==lpU$@6Yq%J!^ib>HNxmbp%V5 z>fCz9HYo5to?9(-DPoyZ^)NwZJ~Dr_i9h{f@95fd_Oz_#e3|Ie8(n{R61S%ME(JQ) zYY!CtOl!!Yk~j-Bg~UCXgXmE;nfS#BOUuKeR;k9a$Agy_2G<4--+N% z&se|yU#ia?H=GPsAiEc^t$J%)CMk9sW#q)8ag1*Np+N?AmZqAS$GlW!N#}Rcg#sn5 z#PE<*KDu5gZk;ZbWPDPqrmx5s*!Z+ro*+lcJH5y*ysxHw^-bMMvGW$H7mOy+#;h=! zvvDe299k@kx1|1%Gi*$&ztR(EHep+NXy^59e={h|p}FNzEZQFq!u8>~M>R%*pO{Bl0~14M<%!&NX_XpCe(Q;a){+$v^&L-ZzesC zSrKmdG>aWvHI#xR1Ps0_;F)Ln>!pRna1Pb@fR#wg+8IqZc3S8X%o|70?r zG|iQYS}M7?lQ~7M7Vo&}dB;SfPpEYuvCi$DZ{F?UC0_eD-R#eM5|R9oUCr3li09?S z8Y$rpHvPNZ$HyDz9SUEzA#sQ?T;G9aX+^Zb24kdOeKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008oNklX7#1+lGS zdy@9xLFl2SN1=y;|AB?R9Hi*6Xi(8W!JtJnQbI@!d1-cbJK34pbbpz*uLo&LuYJzX zhtI>qhzKtm0RZPGCvmb;!SPn>SX30%FbL*3=lQczk>^Uoao(vCMc=QkKD_Dsm>&%O zhXEi@5(v{gQBu`c;waiwb$yvJ1|mW#ErPKK$wW z%F5gB$jFgA3{}71$6r!nuHO$f0NS7J$MOBSjSW{-6z9~~*!Xcpfk+b7Yqw_yzK=vo zEG7x=^?E1t*xJa55p@> zU4QU|vFC>!QxtsUc^GoOpfdJ%vt0I~ZWkI6k}QK$tKkh*?aUDMAOvnJ%5%6(gnFKj zo}8MxkXhEdPj_~ZW*LH_K%EFOig03l{DZ7i+WC2T`O7lV`aYa!+O%fdpN}>gA3rS$ ztvejzQJUgUDT~)MjZbA6nx?61wtc=5MIw{(D*%fE05$+?NmXY$Nur4~#iEq*uJ11_ zhT#ueu6q`h%9OUd%L+}?)=l%M&v|p-+{v<~yK8GV4Zxl-%_H~w{Ra!Z-sRP9_cxiQ zYpUm6X0_V%N)Y_}?c>LHdPVUF06;{j8wS8RW*q0-dy|u2Pdm>0uR0D4RRsXN?z*3S zI6M2xn+FeG5{d%LFhE3LM1+QEf{3t}rlq|+SBPlH7%R#`ASVJ5RTR!GU5Hp=Y=;0m d+1KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007WNklUEE2qA#}+r~ME zWHPx_EEXS3O--dTnGD4k$ChP1TwPr?YqeTgk|YZNfEb1Wj4?n6K^(^*%kt9v{QRS0 zv8d^~o;W@}rj}(%nx-i;Gc(zR0uInyQgb+xQ1d5^nA!K26bW~SW6>Qsv z_4W0NWm#oemQUO5_NM1~9YV+p!!Q=A)oPUjzyjwS1wjz$x_(Ddlmx~YOw)veg9EOr z>Rd9J#Bm&dbY1sNyUhNnV^jHYR&cDwx@Gsc#E-+!;``jwH95fDPa$;k=iayb|p8q%UD+Uxat z%R-1I=bU?_ZZQFhp$8jix*!#11 e5$H0n`aJ-a&@mwG+*7^)0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006TNkl!pP!!`9v+ebs8lML84C*w zm>KWy@4UXgGB-Cz5Cl9vK2j(Y0C;+OB8no;&(C`=7mG#tzOP23p(u(}uh%s{Kd=4$ zecj*RYh`6c&(F__qDVJ4H=3E5QK3-iecQ~C#L&(qu1k_6NWyhp4h{}zwOY*1&H@a=olb}K z^>uQ&91jl9i8WSl*?sSS68W4s|*hh_u&34CnhGizP`ruJhryB z@H~&v(NSF2#c>?&?(V2otEpKAAP54w-7ZH*M_gQ7aCv!&nNh3NczJo@?d^?|lN0Lo udJ2w=jPzU=7Z?A!hW}bmK*eHFzXkx0EHOR|!t>Gq0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009GNkle;)We z?AtxUj_1x11a^0SU$)rwQTA)s4fjp_Z*0V;?ndWr;N2g-E1nx4pU3m;5O7ndA?8F+ zaYeCcSA5%>+uyOdW?g2)qx+MI$A{D5V>8)sb@MXQa{R+g`;Yx@$C8^9t}#*##8YKa zoc4zoe9_XHr0eL+%fFt=ogW+ViN(!zo!b`f^*o5hCGLlE&@G11M>iysCMq%D(-&S% zV0P}Q?>jT>F5R_tylFOP@2RX5f_X_6E;|oJqn7IzCAsC+a>~kGV#(6xT<-7p22O_d ztIvHzRV#8AgD*cgl5H7I7gAG`AthJ9v4|BSM)5qMp)o>ZbEK{Q2IrUjB}@0m^Elg{ z8J(-DHrt=xbgg7YEN)2<5kx^m2t&d5l(p-t=-5=h=HfI&qL4^{^Vc69z|W@#i`mYt zH8_BvpblU`!CIkik-;r0>z}OOUt1SX-?lvUn`4ZyX4P4png~|4-kGuhsvx4M3IOrA z5(W{5PnUL`?91;=pR!Azf2nq{Q!GHS0H1ZuPA5_hh#~?iAmShb5d()`pJI9H;iXSkF55R@2k2h~AUtq}31|WiB|4R^u$qApHV;5!*9c_54sX37W28|;Q zS11;&R#ZZM4zPOlx@v$ih8OqN9&Bn({0n+a07*qoM6N<$f{!MwlK=n! literal 0 HcmV?d00001 diff --git a/res/images/symbols-13/detail_library.png b/res/images/symbols-13/detail_library.png new file mode 100644 index 0000000000000000000000000000000000000000..91d5698ea14760578447d10fb45e3211d141cee8 GIT binary patch literal 2873 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 literal 0 HcmV?d00001 diff --git a/res/lang/de.properties b/res/lang/de.properties index ea2122654f3..acf48eb9f94 100644 --- a/res/lang/de.properties +++ b/res/lang/de.properties @@ -134,7 +134,7 @@ NewGame/booster_text=Booster Draft (Schwierig) - W NewGame/yourdeck=Dein Deck NewGame/opponent=Gegner NewGame/deckeditor=Deck Editor -NewGame/newgui=New Gui +NewGame/oldgui=Old Gui NewGame/ailand=Stack AI Land NewGame/devmode=Developer Mode NewGame/questmode=Quest Mode @@ -142,7 +142,7 @@ NewGame/startgame=Spiel starten NewGame/savesealed_msg=Please name this sealed deck NewGame/savesealed_ttl=Save Sealed Deck -WinLose/won=Siege: +WinLose/won=Siege: WinLose/lost=, Niederlagen: WinLose/win=Gewonnen WinLose/lose=Verloren diff --git a/res/lang/en.properties b/res/lang/en.properties index 725391cda54..6e9a15ce40f 100644 --- a/res/lang/en.properties +++ b/res/lang/en.properties @@ -172,7 +172,7 @@ NewGame/booster_text=Booster Draft (Hard) - Pick cards 1 at a time to create you NewGame/yourdeck=Your Deck NewGame/opponent=Opponent NewGame/deckeditor=Deck Editor -NewGame/newgui=New Gui +NewGame/oldgui=Old Gui NewGame/ailand=Stack AI Land NewGame/devmode=Developer Mode NewGame/questmode=Quest Mode diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index 43d324f1316..01cdff41e51 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -11,6 +11,7 @@ import forge.card.trigger.TriggerHandler; import forge.deck.DeckManager; import forge.game.GameSummary; import forge.gui.input.InputControl; +import forge.view.toolbox.FOverlay; import forge.gui.skin.FSkin; import forge.model.FGameState; import forge.properties.ForgeProps; @@ -78,6 +79,9 @@ public final class AllZone { /** Global display. */ private static Display display; + /** Global overlay. */ + private static FOverlay overlay; + /** Constant DECK_MGR. */ private static DeckManager deckManager; @@ -629,4 +633,18 @@ public final class AllZone { public static void setSkin(final FSkin fs) { skin = fs; } + + /** + * @return overlay + */ + public static FOverlay getOverlay() { + return overlay; + } + + /** + * @param overlay0   Overlay panel + */ + public static void setOverlay(FOverlay overlay0) { + overlay = overlay0; + } } // AllZone diff --git a/src/main/java/forge/Constant.java b/src/main/java/forge/Constant.java index 2168f96ee66..d5c829c72dc 100644 --- a/src/main/java/forge/Constant.java +++ b/src/main/java/forge/Constant.java @@ -40,10 +40,17 @@ public final class Constant { public static final boolean[] MILL = new boolean[1]; /** The Constant DevMode. */ - public static final boolean[] DEV_MODE = new boolean[1]; // one for - // normal mode - // one for quest - // mode + // one for normal mode, one for quest mode + public static final boolean[] DEV_MODE = new boolean[1]; + + /** The Constant HANDVIEW. */ + public static final boolean[] HANDVIEW = new boolean[1]; + + /** The Constant LIBRARYVIEW. */ + public static final boolean[] LIBRARYVIEW = new boolean[1]; + + /** The Constant OLDGUI. */ + public static final boolean[] OLDGUI = new boolean[1]; /** The Constant NetConn. */ public static final boolean[] NET_CONN = new boolean[1]; diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index ba15dbe7eb0..cc21b310079 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -42,6 +42,7 @@ import forge.properties.ForgeProps; import forge.properties.NewConstants.Lang.GameAction.GameActionText; import forge.quest.gui.QuestWinLoseHandler; import forge.quest.gui.main.QuestEvent; +import forge.view.match.ViewTopLevel; import forge.view.swing.WinLoseFrame; /** @@ -776,14 +777,22 @@ public class GameAction { final boolean refreeze = AllZone.getStack().isFrozen(); AllZone.getStack().setFrozen(true); - final JFrame frame = (JFrame) AllZone.getDisplay(); - if (!frame.isDisplayable()) { - return; + if (Constant.Runtime.OLDGUI[0]) { + final JFrame frame = (JFrame) AllZone.getDisplay(); + if (!frame.isDisplayable()) { + return; + } + } + else { + final ViewTopLevel frame = (ViewTopLevel) AllZone.getDisplay(); + if (!frame.isDisplayable()) { + return; + } } if (this.canShowWinLose && this.checkEndGameSate()) { AllZone.getDisplay().savePrefs(); - frame.setEnabled(false); + //frame.setEnabled(false); // frame.dispose(); // Gui_WinLose gwl = new Gui_WinLose(AllZone.getMatchState(), diff --git a/src/main/java/forge/Phase.java b/src/main/java/forge/Phase.java index e423f2e5ace..44cdd8c1687 100644 --- a/src/main/java/forge/Phase.java +++ b/src/main/java/forge/Phase.java @@ -516,6 +516,9 @@ public class Phase extends MyObservable implements java.io.Serializable { this.turn++; } + // Visual indicators + PhaseUtil.visuallyActivatePhase(this.getPhase()); + // When consecutively skipping phases (like in combat) this section // pushes through that block this.updateObservers(); diff --git a/src/main/java/forge/PhaseUtil.java b/src/main/java/forge/PhaseUtil.java index 1bfa4db521d..fefc0adb898 100644 --- a/src/main/java/forge/PhaseUtil.java +++ b/src/main/java/forge/PhaseUtil.java @@ -6,6 +6,8 @@ import java.util.HashMap; import forge.Constant.Zone; import forge.card.cardfactory.CardFactoryUtil; import forge.gui.input.Input; +import forge.view.match.ViewField.PhaseLabel; +import forge.view.match.ViewTopLevel; /** *

@@ -423,6 +425,7 @@ public class PhaseUtil { */ public static void handleUpkeep() { Player turn = AllZone.getPhase().getPlayerTurn(); + if (skipUpkeep()) { // Slowtrips all say "on the next turn's upkeep" if there is no // upkeep next turn, the trigger will never occur. @@ -623,4 +626,46 @@ public class PhaseUtil { || phase.equals(Constant.Phase.DRAW) || phase.equals(Constant.Phase.MAIN1) || phase.equals(Constant.Phase.COMBAT_BEGIN); } + + /** + * Retrieves and visually activates phase label for appropriate + * phase and player. + * + * @param s   Phase state + */ + public static void visuallyActivatePhase(String s) { + PhaseLabel lbl = null; + Player p = AllZone.getPhase().getPlayerTurn(); + ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + + int i; // Index of field; computer is 0, human is 1 + if (p.isComputer()) { + i = 0; + } + else { + i = 1; + } + + if (s.equals(Constant.Phase.UPKEEP)) { + lbl = t.getFieldControllers().get(i).getView().getLblUpkeep(); + } + else if (s.equals(Constant.Phase.DRAW)) { + lbl = t.getFieldControllers().get(i).getView().getLblDraw(); + } + else if (s.equals(Constant.Phase.COMBAT_BEGIN)) { + lbl = t.getFieldControllers().get(i).getView().getLblBeginCombat(); + } + else if (s.equals(Constant.Phase.COMBAT_END)) { + lbl = t.getFieldControllers().get(i).getView().getLblEndCombat(); + } + else if (s.equals(Constant.Phase.END_OF_TURN)) { + lbl = t.getFieldControllers().get(i).getView().getLblEndTurn(); + } + else { + return; + } + + t.getController().resetAllPhaseButtons(); + lbl.setActive(true); + } } diff --git a/src/main/java/forge/control/ControlAllUI.java b/src/main/java/forge/control/ControlAllUI.java new file mode 100644 index 00000000000..17ad7e7763a --- /dev/null +++ b/src/main/java/forge/control/ControlAllUI.java @@ -0,0 +1,98 @@ +package forge.control; + +import java.awt.Component; + +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; + +import javax.swing.JLayeredPane; + +import forge.view.GuiTopLevel; +import forge.view.editor.EditorTopLevel; +import forge.view.home.HomeTopLevel; +import forge.view.match.ViewTopLevel; + +/** + *

ControlAllUI.

+ * Controls all Forge UI functionality inside one JFrame. + * This class switches between various display states in that JFrame. + * Controllers are instantiated separately by each state's top level view class. + */ +public class ControlAllUI { + private JLayeredPane display; + private GuiTopLevel view; + private HomeTopLevel home = null; + private ViewTopLevel match = null; + private EditorTopLevel editor = null; + + /** + *

ControlAllUI.

+ * Controls all Forge UI functionality inside one JFrame. + * This class switches between various display states in that JFrame. + * Controllers are instantiated separately by each state's top level view class. + * + */ + public ControlAllUI() { + view = new GuiTopLevel(); + + view.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + Component[] children; + children = display.getComponentsInLayer(JLayeredPane.DEFAULT_LAYER); + children[0].setSize(display.getSize()); + + children = display.getComponentsInLayer(JLayeredPane.MODAL_LAYER); + children[0].setSize(display.getSize()); + } + }); + + display = (JLayeredPane) view.getContentPane(); + + changeState(1); + } + + /** + *

changeState.

+ * Switches between display states in top level JFrame. + * + * @param i   State index: 0 for home, 1 for match, etc. + */ + public void changeState(int i) { + home = null; + match = null; + editor = null; + + display.removeAll(); + view.addOverlay(); + + // Fire up new state + switch (i) { + case 0: // Home screen + home = new HomeTopLevel(); + display.add(home); + break; + + case 1: // Match screen + match = new ViewTopLevel(); + display.add(match, JLayeredPane.DEFAULT_LAYER); + break; + + case 2: // Deck editor screen + editor = new EditorTopLevel(); + display.add(editor); + break; + + default: break; + } + } + + /** @return ViewTopLevel */ + public ViewTopLevel getMatchView() { + return match; + } + + /** @return ControlMatchUI */ + public ControlMatchUI getMatchController() { + return match.getController(); + } +} diff --git a/src/main/java/forge/control/ControlEditorUI.java b/src/main/java/forge/control/ControlEditorUI.java new file mode 100644 index 00000000000..536dac28967 --- /dev/null +++ b/src/main/java/forge/control/ControlEditorUI.java @@ -0,0 +1,19 @@ +package forge.control; + +import javax.swing.JPanel; + +/** + *

ControlEditorUI

+ * Top-level controller for deck editor. + * + */ +@SuppressWarnings("serial") +public class ControlEditorUI extends JPanel { + /** + *

ControlEditorUI

+ * Top-level controller for deck editor. + * + */ + public ControlEditorUI() { + } +} diff --git a/src/main/java/forge/control/ControlHomeUI.java b/src/main/java/forge/control/ControlHomeUI.java new file mode 100644 index 00000000000..2c667320168 --- /dev/null +++ b/src/main/java/forge/control/ControlHomeUI.java @@ -0,0 +1,9 @@ +package forge.control; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ControlHomeUI { + +} diff --git a/src/main/java/forge/control/ControlMatchUI.java b/src/main/java/forge/control/ControlMatchUI.java new file mode 100644 index 00000000000..a0524174671 --- /dev/null +++ b/src/main/java/forge/control/ControlMatchUI.java @@ -0,0 +1,240 @@ +package forge.control; + +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.InputMap; +import javax.swing.JComponent; + +import forge.AllZone; +import forge.Singletons; +import forge.Constant.Zone; +import forge.control.match.ControlField; +import javax.swing.KeyStroke; + +import org.apache.commons.lang3.StringUtils; + +import forge.properties.ForgePreferences; +import forge.view.match.ViewTopLevel; + +/** + *

ControlMatchUI

+ * Top-level controller for matches. Implements Display. + * + */ +public class ControlMatchUI { + private ViewTopLevel view; + + /** + *

ControlMatchUI

+ * Constructs instance of match UI controller, used as a single + * point of top-level control for child UIs - in other words, this class + * controls the controllers. Tasks targeting the view of individual + * components are found in a separate controller for that component + * and should not be included here. + * + * This constructor is called after child components have been instantiated. + * When children are instantiated, they also instantiate their controller. + * So, this class must be called after everything is already in place. + * + * @param v   A ViewTopLevel object + */ + public ControlMatchUI(ViewTopLevel v) { + view = v; + } + + /** + * Fires up controllers for each component of UI. + * + */ + public void initMatch() { + // All child components have been assembled; observers and listeners can + // be added safely. + view.getAreaSidebar().getTabber().getController().addObservers(); + view.getAreaSidebar().getTabber().getController().addListeners(); + + view.getAreaUser().getPnlInput().getController().addListeners(); + + view.getAreaUser().getPnlHand().getController().addObservers(); + view.getAreaUser().getPnlHand().getController().addListeners(); + + // Update all observers with values for start of match. + List fieldControllers = view.getFieldControllers(); + for (ControlField f : fieldControllers) { + f.addObservers(); + f.addListeners(); + f.getPlayer().updateObservers(); + } + + AllZone.getHumanPlayer().getZone(Zone.Hand).updateObservers(); + AllZone.getComputerPlayer().getZone(Zone.Hand).updateObservers(); + AllZone.getStack().updateObservers(); + AllZone.getHumanPlayer().getZone(Zone.Battlefield).updateObservers(); + AllZone.getInputControl().updateObservers(); + view.getAreaSidebar().getTabber().getController().updateObservers(); + this.mapKeyboardShortcuts(); + } + + /** + * Resets all phase buttons in all fields to "inactive", so highlight won't be + * drawn on them. "Enabled" state remains the same. + */ + // This method is in the top-level controller because it affects ALL fields (not just one). + public void resetAllPhaseButtons() { + List fieldControllers = view.getFieldControllers(); + + for (ControlField c : fieldControllers) { + c.resetPhaseButtons(); + } + } + + /** + * Maps actions to shortcuts, and attaches each shortcut to the + * InputMap of the top level view. + * + */ + @SuppressWarnings("serial") + private void mapKeyboardShortcuts() { + InputMap im = ((ViewTopLevel) AllZone.getDisplay()).getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + ForgePreferences fp = Singletons.getModel().getPreferences(); + String str; + KeyStroke key; + + // Actions which correspond to key presses + Action actShowStack = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getTabberController().showPnlStack(); } + }; + + Action actShowCombat = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getTabberController().showPnlCombat(); } + }; + + Action actShowConsole = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getTabberController().showPnlConsole(); } + }; + + Action actShowPlayers = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getTabberController().showPnlPlayers(); } + }; + + Action actShowDev = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getTabberController().showPnlDev(); } + }; + + Action actConcede = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getDockController().concede(); } + }; + + Action actShowPicture = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getCardviewerController().showPnlCardPic(); } + }; + + Action actShowDetail = new AbstractAction() { + public void actionPerformed(ActionEvent e) { view.getCardviewerController().showPnlCardDetail(); } + }; + + // Show stack + // (Get keycode string, convert to char, convert to keystroke, put on input map.) + str = fp.getShowStackShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowStack); + + // Show combat + str = fp.getShowCombatShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowCombat); + + // Show console + str = fp.getShowConsoleShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowConsole); + + // Show players + str = fp.getShowPlayersShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowPlayers); + + // Show devmode + str = fp.getShowDevShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowDev); + + // Concede game + str = fp.getConcedeShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actConcede); + + // Show card picture + str = fp.getShowPictureShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowPicture); + + // Show card detail + str = fp.getShowDetailShortcut(); + key = KeyStroke.getKeyStroke(codes2Chars(str)); + + im.put(key, str); + ((ViewTopLevel) AllZone.getDisplay()).getActionMap().put(im.get(key), actShowDetail); + } + + /** + * Converts a string of key codes (space delimited) into their respective + * key texts. This helps juggling between input maps, display text, save + * values, and input data. + * + * @param s0   A string of keycodes + * @return String + */ + private String codes2Chars(String s0) { + List codes = new ArrayList(Arrays.asList(s0.split(" "))); + List displayText = new ArrayList(); + String temp; + + for (String s : codes) { + temp = KeyEvent.getKeyText(Integer.valueOf(s)); + + if (!s.isEmpty()) { + // Probably a better way to do this; but I couldn't find it + // after a decent look around. The main problem is that + // KeyEvent.getKeyText() will return "Ctrl", but the input + // map expects "control". Similar case problems with Shift and Alt. + // Doublestrike 21-11-11 + if (temp.equalsIgnoreCase("ctrl")) { + temp = "control"; + } + else if (temp.equalsIgnoreCase("shift")) { + temp = "shift"; + } + else if (temp.equalsIgnoreCase("alt")) { + temp = "alt"; + } + else if (temp.equalsIgnoreCase("escape")) { + temp = "escape"; + } + + displayText.add(temp); + } + } + + return StringUtils.join(displayText, ' '); + } +} diff --git a/src/main/java/forge/control/match/ControlCardviewer.java b/src/main/java/forge/control/match/ControlCardviewer.java new file mode 100644 index 00000000000..f269dcc3d3e --- /dev/null +++ b/src/main/java/forge/control/match/ControlCardviewer.java @@ -0,0 +1,64 @@ +package forge.control.match; + +import java.awt.Image; + +import forge.Card; +import forge.ImageCache; +import forge.view.match.ViewCardviewer; + +/** + * + * Controls the vertical tabber in sidebar used for + * viewing card details and picture. + * + */ +public class ControlCardviewer { + private ViewCardviewer view; + private Card currentCard = null; + + /** + * Controls the vertical tabber in sidebar used for + * viewing card details and picture. + * @param v   The CardViewer Swing component. + */ + public ControlCardviewer(ViewCardviewer v) { + view = v; + } + + /** + * Shows card details and/or picture in sidebar cardview tabber. + * @param c   Card object + */ + public void showCard(Card c) { + Image img = ImageCache.getImage(c); + this.currentCard = c; + view.getPnlCardPic().setCard(c); + view.getPnlCardDetail().setCard(c); + + if (img != null) { + showPnlCardPic(); + } + else { + showPnlCardDetail(); + } + } + + /** @return Card */ + public Card getCurrentCard() { + return currentCard; + } + + /** + * Programatically forces card layout of sidebar tabber to show "CardDetail" panel. + */ + public void showPnlCardDetail() { + view.getVtpCardviewer().showTab(1); + } + + /** + * Programatically forces card layout of sidebar tabber to show card picture panel. + */ + public void showPnlCardPic() { + view.getVtpCardviewer().showTab(0); + } +} diff --git a/src/main/java/forge/control/match/ControlDock.java b/src/main/java/forge/control/match/ControlDock.java new file mode 100644 index 00000000000..fbd9b4eb358 --- /dev/null +++ b/src/main/java/forge/control/match/ControlDock.java @@ -0,0 +1,106 @@ +package forge.control.match; + +import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import forge.AllZone; +import forge.Singletons; +import forge.properties.ForgePreferences; +import forge.view.match.ViewDock; +import forge.view.match.ViewDock.KeyboardShortcutField; + +/** + * Child controller, handles dock button operations. + * + */ +public class ControlDock { + private ViewDock view; + + /** + * Child controller, handles dock button operations. + * @param v   ViewDock obj + */ + public ControlDock(ViewDock v) { + view = v; + } + + /** Concede game, bring up WinLose UI. */ + public void concede() { + AllZone.getHumanPlayer().concede(); + AllZone.getGameAction().checkStateEffects(); + } + + /** @return ViewDock */ + public ViewDock getView() { + return view; + } + + /** Updates and saves ForgePreferences with current shortcuts. */ + public void saveKeyboardShortcuts() { + ForgePreferences fp = Singletons.getModel().getPreferences(); + Map shortcuts = view.getKeyboardShortcutFields(); + + fp.setShowStackShortcut(shortcuts.get("showstack").getCodeString()); + fp.setShowCombatShortcut(shortcuts.get("showcombat").getCodeString()); + fp.setShowPlayersShortcut(shortcuts.get("showplayers").getCodeString()); + fp.setShowConsoleShortcut(shortcuts.get("showconsole").getCodeString()); + fp.setShowDevShortcut(shortcuts.get("showdev").getCodeString()); + fp.setConcedeShortcut(shortcuts.get("concede").getCodeString()); + fp.setShowPictureShortcut(shortcuts.get("showpicture").getCodeString()); + fp.setShowDetailShortcut(shortcuts.get("showdetail").getCodeString()); + + try { + fp.save(); + } catch (Exception e) { + e.printStackTrace(); + } + + AllZone.getOverlay().hideOverlay(); + } + + /** + * - Adds keycode to list stored in name of a text field. + * - Code is not added if already in list. + * - Backspace removes last code in list. + * - Sets text of text field with character equivalent of keycodes. + * + * @param e   KeyEvent + */ + public void addKeyCode(KeyEvent e) { + KeyboardShortcutField ksf = (KeyboardShortcutField) e.getSource(); + String newCode = Integer.toString(e.getKeyCode()); + String codestring = ksf.getCodeString(); + List existingCodes; + + if (codestring != null) { + existingCodes = new ArrayList(Arrays.asList(codestring.split(" "))); + } + else { + existingCodes = new ArrayList(); + } + + // Backspace (8) will remove last code from list. + if (e.getKeyCode() == 8) { + existingCodes.remove(existingCodes.size() - 1); + } + else if (!existingCodes.contains(newCode)) { + existingCodes.add(newCode); + } + + ksf.setCodeString(StringUtils.join(existingCodes, ' ')); + } + + /** */ + public void endTurn() { + // Big thanks to you, Gameplay Guru, since I was too lazy to figure this out + // before release. Doublestrike 24-11-11 + System.err.println("forge.control.match > ControlDock > endTurn()"); + System.out.println("Should skip to the end of turn, or entire turn."); + System.err.println("If some gameplay guru could implement this, that would be great..."); + } +} diff --git a/src/main/java/forge/control/match/ControlField.java b/src/main/java/forge/control/match/ControlField.java new file mode 100644 index 00000000000..6b3981827b6 --- /dev/null +++ b/src/main/java/forge/control/match/ControlField.java @@ -0,0 +1,459 @@ +package forge.control.match; + +import java.awt.Toolkit; +import java.awt.datatransfer.StringSelection; +import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionAdapter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Observable; +import java.util.Observer; + +import javax.swing.JOptionPane; + +import net.slightlymagic.braids.util.ImmutableIterableFrom; + +import com.google.code.jyield.Generator; +import com.google.code.jyield.YieldUtils; + +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.Constant.Zone; +import forge.GuiDisplayUtil; +import forge.Player; +import forge.PlayerZone; +import forge.card.cardfactory.CardFactoryUtil; +import forge.deck.Deck; +import forge.gui.ForgeAction; +import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.InputAttack; +import forge.gui.input.InputBlock; +import forge.gui.input.InputPayManaCost; +import forge.gui.input.InputPayManaCostAbility; +import forge.item.CardPrinted; +import forge.properties.ForgeProps; +import forge.properties.NewConstants; +import forge.properties.NewConstants.Lang.GuiDisplay.ComputerHand; +import forge.properties.NewConstants.Lang.GuiDisplay.ComputerLibrary; +import forge.view.match.ViewField; +import forge.view.match.ViewTopLevel; + +/** + * Child controller, applied to single field in battlefield. + * Manages player view functions such as card observers, + * life total changes, graveyard button click, etc. + * + */ +public class ControlField { + private Player player; + private ViewField view; + + /** + * Child controller, applied to single field in battlefield. + * Manages player view functions such as card observers, + * life total changes, graveyard button click, etc. + * + * @param p   The Player this field applies to + * @param v   The Swing component for this field + */ + public ControlField(Player p, ViewField v) { + player = p; + view = v; + } + + /** @return Player */ + public Player getPlayer() { + return player; + } + + /** @return ViewField */ + public ViewField getView() { + return view; + } + + /** + * Adds observers to field components where required: card stats, player stats, etc. + */ + public void addObservers() { + // Hand, Graveyard, Library, Flashback, Exile totals, attached to respective Zones. + Observer o1 = new Observer() { + @Override + public void update(final Observable a, final Object b) { + view.updateZones(player); + } + }; + + player.getZone(Zone.Hand).addObserver(o1); + + // Life total, poison total, and keywords, attached directly to Player. + Observer o2 = new Observer() { + @Override + public void update(final Observable a, final Object b) { + view.updateDetails(player); + } + }; + player.addObserver(o2); + + // Card play area, attached to battlefield zone. + Observer o3 = new Observer() { + public void update(final Observable a, final Object b) { + PlayerZone pZone = (PlayerZone) a; + Card[] c = pZone.getCards(false); + GuiDisplayUtil.setupPlayZone(view.getTabletop(), c); + } + }; + + player.getZone(Zone.Battlefield).addObserver(o3); + } + + /** + * Listeners for user actions on the battlefield. + * + */ + public void addListeners() { + // When/if zone action properties become less specific, the conditional + // tests for computer/human players can be removed. If that's not ever + // going to happen, this comment can be removed. :) Doublestrike 29-10-11. + + this.addZoneListeners(); + + // Battlefield card clicks + view.getTabletop().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + Card c = t.getCardviewerController().getCurrentCard(); + Input input = t.getInputController().getInputControl().getInput(); + + if (c != null) { + if (c.isTapped() + && (input instanceof InputPayManaCost + || input instanceof InputPayManaCostAbility)) { + arcane.ui.CardPanel cardPanel = view.getTabletop().getCardPanel(c.getUniqueNumber()); + for (arcane.ui.CardPanel cp : cardPanel.getAttachedPanels()) { + if (cp.getCard().isUntapped()) { + break; + } + } + } + + CardList att = new CardList(AllZone.getCombat().getAttackers()); + if ((c.isTapped() || c.hasSickness() || ((c.hasKeyword("Vigilance")) && att.contains(c))) + && (input instanceof InputAttack)) { + arcane.ui.CardPanel cardPanel = view.getTabletop().getCardPanel(c.getUniqueNumber()); + for (arcane.ui.CardPanel cp : cardPanel.getAttachedPanels()) { + if (cp.getCard().isUntapped() && !cp.getCard().hasSickness()) { + break; + } + } + } + + if (e.isMetaDown()) { + if (att.contains(c) && (input instanceof InputAttack) + && !c.hasKeyword("CARDNAME attacks each turn if able.")) { + c.untap(); + AllZone.getCombat().removeFromCombat(c); + } else if (input instanceof InputBlock) { + if (c.getController().isHuman()) { + AllZone.getCombat().removeFromCombat(c); + } + ((InputBlock) input).removeFromAllBlocking(c); + } + } + else { + t.getInputController().getInputControl().selectCard(c, AllZone.getHumanPlayer().getZone(Zone.Battlefield)); + } + } + } + }); + + // Battlefield card mouseover + view.getTabletop().addMouseMotionListener(new MouseMotionAdapter() { + @Override + public void mouseMoved(final MouseEvent me) { + ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + Card c = view.getTabletop().getCardFromMouseOverPanel(); + if (c != null) { + t.getCardviewerController().showCard(c); + } + } + }); + + // Player select + view.getLblLife().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + if (player.isComputer()) { + t.getInputController().getInputControl().selectPlayer(AllZone.getComputerPlayer()); + } + else { + t.getInputController().getInputControl().selectPlayer(AllZone.getHumanPlayer()); + } + } + }); + } // End addListeners() + + /** Adds listeners to "zone" labels: flashback, graveyard, etc. + * This method only exists to avoid the 150-line limit in the checkstyle rules. + */ + private void addZoneListeners() { + // Graveyard card list button + view.getLblGraveyard().enableHover(); + view.getLblGraveyard().addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (player.isComputer()) { + new ZoneAction(player.getZone(Zone.Graveyard), + NewConstants.Lang.GuiDisplay.COMPUTER_GRAVEYARD).actionPerformed(null); + } + else { + new ZoneAction(player.getZone(Zone.Graveyard), + NewConstants.Lang.GuiDisplay.HUMAN_GRAVEYARD).actionPerformed(null); + } + } + }); + // Exile card list button + view.getLblExile().enableHover(); + view.getLblExile().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (player.isComputer()) { + new ZoneAction(player.getZone(Zone.Exile), + NewConstants.Lang.GuiDisplay.COMPUTER_REMOVED).actionPerformed(null); + } + else { + new ZoneAction(player.getZone(Zone.Exile), + NewConstants.Lang.GuiDisplay.HUMAN_REMOVED).actionPerformed(null); + } + } + }); + // Library card list button + view.getLblLibrary().enableHover(); + view.getLblLibrary().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (!player.isComputer()) { + new DeckListAction(NewConstants.Lang.GuiDisplay.HUMAN_DECKLIST).actionPerformed(null); + } + else { + // TODO DeckListAction has been rewritten to accept either human or computer + // decklists. However, NewConstants.Lang.GuiDisplay does not have a computer + // decklist available. That needs to be added for the below line to work + // properly. The current solution will work in the meantime. Doublestrike 15-11-11. + + //new DeckListAction(NewConstants.Lang.GuiDisplay).actionPerformed(null); + + new ZoneAction(player.getZone(Zone.Library), ComputerLibrary.BASE).actionPerformed(null); + } + } + }); + // Flashback card list button + view.getLblFlashback().enableHover(); + view.getLblFlashback().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (!player.isComputer()) { + new ZoneAction(player.getZone(Zone.Graveyard), NewConstants.Lang.GuiDisplay.HUMAN_FLASHBACK) { + + private static final long serialVersionUID = 8120331222693706164L; + + @Override + protected Iterable getCardsAsIterable() { + return new ImmutableIterableFrom(CardFactoryUtil.getExternalZoneActivationCards(AllZone + .getHumanPlayer())); + } + + @Override + protected void doAction(final Card c) { + AllZone.getGameAction().playCard(c); + } + }; + } + } + }); + // Hand button + if (player.isComputer()) { + view.getLblHand().enableHover(); + + view.getLblHand().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + new ZoneAction(player.getZone(Zone.Hand), ComputerHand.BASE).actionPerformed(null); + } + }); + } + } + + /** + * Resets all phase buttons to "inactive", so highlight won't be + * drawn on them. "Enabled" state remains the same. + */ + public void resetPhaseButtons() { + view.getLblUpkeep().setActive(false); + view.getLblDraw().setActive(false); + view.getLblBeginCombat().setActive(false); + view.getLblEndCombat().setActive(false); + view.getLblEndTurn().setActive(false); + } + + /** + * Receives click and programmatic requests for viewing data stacks + * in the "zones" of a player field: hand, library, etc. + * + */ + private class ZoneAction extends ForgeAction { + private static final long serialVersionUID = -5822976087772388839L; + private PlayerZone zone; + private String title; + + /** + * Receives click and programmatic requests for viewing data stacks + * in the "zones" of a player field: hand, graveyard, etc. The library + * "zone" is an exception to the rule; it's handled in DeckListAction. + * + * @param zone   PlayerZone obj + * @param property   String obj + */ + public ZoneAction(final PlayerZone zone, final String property) { + super(property); + title = ForgeProps.getLocalized(property + "/title"); + this.zone = zone; + } + + /** @param e   ActionEvent obj */ + public void actionPerformed(final ActionEvent e) { + Generator c = YieldUtils.toGenerator(getCardsAsIterable()); + + if (AllZone.getNameChanger().shouldChangeCardName()) { + c = AllZone.getNameChanger().changeCard(c); + } + + Iterable myIterable = YieldUtils.toIterable(c); + ArrayList choices = YieldUtils.toArrayList(myIterable); + //System.out.println("immediately after: "+choices); + //Iterator iter = myIterable.iterator(); + + ArrayList choices2 = new ArrayList(); + + if (choices.isEmpty()) { + GuiUtils.getChoiceOptional(title, new String[]{"no cards"}); + } + else { + for (int i = 0; i < choices.size(); i++) { + Card crd = choices.get(i); + //System.out.println(crd+": "+crd.isFaceDown()); + if (crd.isFaceDown()) { + Card faceDown = new Card(); + faceDown.setName("Face Down"); + choices2.add(faceDown); + //System.out.println("Added: "+faceDown); + } + else { + choices2.add(crd); + } + } + //System.out.println("Face down cards replaced: "+choices2); + Card choice = (Card) GuiUtils.getChoiceOptional(title, choices2.toArray()); + if (choice != null) { + doAction(choice); + /* + Card choice = GuiUtils.getChoiceOptional(title, iter); + if (choice != null) doAction(choice); + */ + } + } + } + + protected Iterable getCardsAsIterable() { + return new ImmutableIterableFrom(Arrays.asList(zone.getCards())); + } + + protected void doAction(final Card c) { + } + } // End ZoneAction + + /** + * Receives click and programmatic requests for viewing a player's + * library (typically used in dev mode). Allows copy of the + * cardlist to clipboard. + * + */ + private class DeckListAction extends ForgeAction { + public DeckListAction(final String property) { + super(property); + } + + private static final long serialVersionUID = 9874492387239847L; + + public void actionPerformed(final ActionEvent e) { + Deck targetDeck; + + if (Constant.Runtime.HUMAN_DECK[0].countMain() > 1) { + targetDeck = Constant.Runtime.HUMAN_DECK[0]; + } + else if (Constant.Runtime.COMPUTER_DECK[0].countMain() > 1) { + targetDeck = Constant.Runtime.COMPUTER_DECK[0]; + } + else { + return; + } + + HashMap deckMap = new HashMap(); + + for (Entry s : targetDeck.getMain()) { + deckMap.put(s.getKey().getName(), s.getValue()); + } + + String nl = System.getProperty("line.separator"); + StringBuilder deckList = new StringBuilder(); + String dName = targetDeck.getName(); + + if (dName == null) { + dName = ""; + } else { + deckList.append(dName + nl); + } + + ArrayList dmKeys = new ArrayList(); + for (String s : deckMap.keySet()) { + dmKeys.add(s); + } + + Collections.sort(dmKeys); + + for (String s : dmKeys) { + deckList.append(deckMap.get(s) + " x " + s + nl); + } + + int rcMsg = -1138; + String ttl = "Human's Decklist"; + if (!dName.equals("")) { + ttl += " - " + dName; + } + + StringBuilder msg = new StringBuilder(); + if (deckMap.keySet().size() <= 32) { + msg.append(deckList.toString() + nl); + } else { + msg.append("Decklist too long for dialog." + nl + nl); + } + + msg.append("Copy Decklist to Clipboard?"); + + rcMsg = JOptionPane.showConfirmDialog(null, msg, ttl, JOptionPane.OK_CANCEL_OPTION); + + if (rcMsg == JOptionPane.OK_OPTION) { + StringSelection ss = new StringSelection(deckList.toString()); + Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); + } + } + } // End DeckListAction +} diff --git a/src/main/java/forge/control/match/ControlHand.java b/src/main/java/forge/control/match/ControlHand.java new file mode 100644 index 00000000000..20407b874d7 --- /dev/null +++ b/src/main/java/forge/control/match/ControlHand.java @@ -0,0 +1,128 @@ +package forge.control.match; + +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Observable; +import java.util.Observer; + +import forge.AllZone; +import forge.Card; +import forge.Constant.Zone; +import forge.PlayerZone; +import forge.view.match.ViewHand; +import forge.view.match.ViewHand.CardPanel; +import forge.view.match.ViewTopLevel; + +/** + * Child controller - handles operations related to cards in user's hand + * and their Swing components, which are assembled in ViewHand. + * + */ +public class ControlHand { + private List cardsInPanel; + private ViewHand view; + + /** + * Child controller - handles operations related to cards in user's hand + * and their Swing components, which are assembled in ViewHand. + * @param v   The Swing component for user hand + */ + public ControlHand(ViewHand v) { + view = v; + cardsInPanel = new ArrayList(); + } + + /** Adds observers to hand panel. */ + public void addObservers() { + Observer o1 = new Observer() { + public void update(final Observable a, final Object b) { + resetCards(Arrays.asList(((PlayerZone) a).getCards())); + } + }; + AllZone.getHumanPlayer().getZone(Zone.Hand).addObserver(o1); + } + + /** Adds listeners to hand panel: window resize, etc. */ + public void addListeners() { + view.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + // Ensures cards in hand scale properly with parent. + view.refreshLayout(); + } + }); + } + + /** + * Adds various listeners for cards in hand. Uses CardPanel + * instance from ViewHand. + * + * @param c   CardPanel object + */ + public void addCardPanelListeners(final CardPanel c) { + // Grab top level controller to facilitate interaction between children + final ViewTopLevel display = (ViewTopLevel) (AllZone.getDisplay()); + final Card cardobj = c.getCard(); + + // Sidebar pic/detail on card hover + c.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(final MouseEvent e) { + display.getCardviewerController().showCard(cardobj); + } + }); + + // Mouse press + c.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + + if (e.getButton() != MouseEvent.BUTTON1) { + return; + } + + display.getInputController().getInputControl().selectCard( + cardobj, AllZone.getHumanPlayer().getZone(Zone.Hand)); + } + }); + } + + /** @param c   Card object */ + public void addCard(Card c) { + cardsInPanel.add(c); + view.refreshLayout(); + } + + /** @param c   List of Card objects */ + public void addCards(List c) { + cardsInPanel.addAll(c); + view.refreshLayout(); + } + + /** @return List */ + public List getCards() { + return cardsInPanel; + } + + /** @param c   Card object */ + public void removeCard(Card c) { + cardsInPanel.remove(c); + view.refreshLayout(); + } + + /** @param c   List of Card objects */ + public void removeCards(List c) { + cardsInPanel.removeAll(c); + view.refreshLayout(); + } + + /** @param c   List of Card objects */ + public void resetCards(List c) { + cardsInPanel.clear(); + addCards(c); + } +} diff --git a/src/main/java/forge/control/match/ControlInput.java b/src/main/java/forge/control/match/ControlInput.java new file mode 100644 index 00000000000..7e288ba7584 --- /dev/null +++ b/src/main/java/forge/control/match/ControlInput.java @@ -0,0 +1,88 @@ +package forge.control.match; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +import forge.AllZone; +import forge.GuiInput; +import forge.view.match.ViewInput; + +/** + * Child controller - handles operations related to input panel. + * + */ +public class ControlInput { + private ViewInput view; + + private GuiInput inputControl; + + /** + * Child controller - handles operations related to input panel. + * @param v   The Swing component for the input area + */ + public ControlInput(ViewInput v) { + view = v; + inputControl = new GuiInput(); + } + + /** Adds listeners to input area. */ + public void addListeners() { + view.getBtnCancel().addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent evt) { + btnCancelActionPerformed(evt); + view.getBtnOK().requestFocusInWindow(); + } + }); + // + view.getBtnOK().addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent evt) { + btnOKActionPerformed(evt); + + if (AllZone.getPhase().isNeedToNextPhase()) { + // moves to next turn + AllZone.getPhase().setNeedToNextPhase(false); + AllZone.getPhase().nextPhase(); + } + view.getBtnOK().requestFocusInWindow(); + } + }); + // + view.getBtnOK().addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(final KeyEvent arg0) { + // TODO make triggers on escape + int code = arg0.getKeyCode(); + if (code == KeyEvent.VK_ESCAPE) { + view.getBtnOK().doClick(); + } + } + }); + } + + /** + *

btnCancelActionPerformed.

+ * Triggers current cancel action from whichever input controller is being used. + * + * @param evt a {@link java.awt.event.ActionEvent} object. + */ + private void btnCancelActionPerformed(final ActionEvent evt) { + inputControl.selectButtonCancel(); + } + + /** + *

btnOKActionPerformed.

+ * Triggers current OK action from whichever input controller is being used. + * + * @param evt a {@link java.awt.event.ActionEvent} object. + */ + private void btnOKActionPerformed(final ActionEvent evt) { + inputControl.selectButtonOK(); + } + + /** @return GuiInput */ + public GuiInput getInputControl() { + return inputControl; + } +} diff --git a/src/main/java/forge/control/match/ControlTabber.java b/src/main/java/forge/control/match/ControlTabber.java new file mode 100644 index 00000000000..5246a94aec9 --- /dev/null +++ b/src/main/java/forge/control/match/ControlTabber.java @@ -0,0 +1,198 @@ +package forge.control.match; + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Observable; +import java.util.Observer; + +import forge.AllZone; +import forge.GuiDisplayUtil; +import forge.MyObservable; +import forge.Singletons; +import forge.view.match.ViewTabber; + +/** + * Controls the vertical tabber in sidebar used for + * viewing gameplay data: stack, combat, etc. + * + */ +public class ControlTabber extends MyObservable { + private ViewTabber view; + + /** + * Controls the vertical tabber in sidebar used for + * viewing gameplay data: stack, combat, etc. + * + * @param v   The tabber Swing component + */ + public ControlTabber(ViewTabber v) { + view = v; + if (Singletons.getModel().getPreferences().isMillingLossCondition()) { + view.getLblMilling().setEnabled(true); + } + else { + view.getLblMilling().setEnabled(false); + } + + if (Singletons.getModel().getPreferences().getHandView()) { + view.getLblHandView().setEnabled(true); + } + else { + view.getLblHandView().setEnabled(false); + } + + if (Singletons.getModel().getPreferences().getLibraryView()) { + view.getLblLibraryView().setEnabled(true); + } + else { + view.getLblLibraryView().setEnabled(false); + } + } + + /** Adds observers to tabber. */ + public void addObservers() { + // Stack + Observer o1 = new Observer() { + public void update(final Observable a, final Object b) { + view.updateStack(); + } + }; + + AllZone.getStack().addObserver(o1); + } + + /** Adds listeners to various components in tabber. */ + public void addListeners() { + // Milling enable toggle + view.getLblMilling().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + view.getLblMilling().toggleEnabled(); + } + }); + + // View any hand toggle + view.getLblHandView().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + view.getLblHandView().toggleEnabled(); + } + }); + + // DevMode: View any library toggle + view.getLblLibraryView().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + view.getLblLibraryView().toggleEnabled(); + } + }); + + // DevMode: Play unlimited land this turn toggle + view.getLblUnlimitedLands().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeUnlimitedLand(); + + // TODO: Enable toggle for this (e.g. Unlimited land each turn: enabled) + // Also must change enabled/disabled text in ViewTabber to reflect this. + //view.getLblUnlimitedLands().toggleEnabled(); + } + }); + + // DevMode: Generate mana + view.getLblGenerateMana().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeGenerateMana(); + } + }); + + // DevMode: Battlefield setup + view.getLblSetupGame().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devSetupGameState(); + } + }); + + // DevMode: Tutor for card + view.getLblTutor().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeTutor(); + } + }); + + // DevMode: Add counter to permanent + view.getLblCounterPermanent().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeAddCounter(); + } + }); + + // DevMode: Tap permanent + view.getLblTapPermanent().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeTapPerm(); + } + }); + + // DevMode: Untap permanent + view.getLblUntapPermanent().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeUntapPerm(); + } + }); + + // DevMode: Set human life + view.getLblHumanLife().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + GuiDisplayUtil.devModeSetLife(); + } + }); + } + + /** @return ViewTabber */ + public ViewTabber getView() { + return view; + } + + /** + * Programatically forces card layout of sidebar tabber to show "Dev" panel. + */ + public void showPnlDev() { + view.getVtpTabber().showTab(4); + } + + /** + * Programatically forces card layout of sidebar tabber to show "Players" panel. + */ + public void showPnlPlayers() { + view.getVtpTabber().showTab(3); + } + + /** + * Programatically forces card layout of sidebar tabber to show "Console" panel. + */ + public void showPnlConsole() { + view.getVtpTabber().showTab(2); + } + + /** + * Programatically forces card layout of sidebar tabber to show "Combat" panel. + */ + public void showPnlCombat() { + view.getVtpTabber().showTab(1); + } + + /** + * Programatically forces card layout of sidebar tabber to show "Stack" panel. + */ + public void showPnlStack() { + view.getVtpTabber().showTab(0); + } +} diff --git a/src/main/java/forge/control/match/package-info.java b/src/main/java/forge/control/match/package-info.java new file mode 100644 index 00000000000..ba6acc3b070 --- /dev/null +++ b/src/main/java/forge/control/match/package-info.java @@ -0,0 +1,3 @@ +/** Child controllers used in match UI. */ +package forge.control.match; + diff --git a/src/main/java/forge/control/package-info.java b/src/main/java/forge/control/package-info.java new file mode 100644 index 00000000000..8276b98567c --- /dev/null +++ b/src/main/java/forge/control/package-info.java @@ -0,0 +1,3 @@ +/** Controller (as in model-view-controller) for Forge. */ +package forge.control; + diff --git a/src/main/java/forge/gui/skin/FButton.java b/src/main/java/forge/gui/skin/FButton.java index 7287cf1014d..00c04bf4340 100644 --- a/src/main/java/forge/gui/skin/FButton.java +++ b/src/main/java/forge/gui/skin/FButton.java @@ -31,7 +31,14 @@ public class FButton extends JButton { private final AlphaComposite disabledComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.25f); /** - * Instantiates a new f button. + * Instantiates a new FButton. + */ + public FButton() { + this(""); + } + + /** + * Instantiates a new FButton. * * @param msg * the msg diff --git a/src/main/java/forge/gui/skin/FPanel.java b/src/main/java/forge/gui/skin/FPanel.java index 076270fdfea..9fa4f7d4a0d 100644 --- a/src/main/java/forge/gui/skin/FPanel.java +++ b/src/main/java/forge/gui/skin/FPanel.java @@ -2,6 +2,7 @@ package forge.gui.skin; import java.awt.Dimension; import java.awt.Graphics; +import java.awt.Image; import java.awt.LayoutManager; import javax.swing.ImageIcon; @@ -11,14 +12,15 @@ import javax.swing.JPanel; *

* FPanel. *

- * The core JPanel used throughout the Forge project. Allows tiled images and - * ... + * The core JPanel used throughout the Forge project. Allows tiled texture images + * and single background images, using setBGTexture() and setBGImage() respectively. * */ @SuppressWarnings("serial") public class FPanel extends JPanel { - private ImageIcon bgImg = null; - private int w, h, iw, ih, x, y = 0; + private Image bgTexture, bgImg = null; + // Panel Width, panel Height, Image Width, Image Height, Image Aspect Ratio + private double w, h, iw, ih, iar, x, y = 0; /** * Instantiates a new f panel. @@ -45,40 +47,84 @@ public class FPanel extends JPanel { */ @Override protected void paintComponent(final Graphics g) { - // System.out.print("\nRepainting. "); - if (this.bgImg != null) { - this.w = this.getWidth(); - this.h = this.getHeight(); - this.iw = this.bgImg.getIconWidth(); - this.ih = this.bgImg.getIconHeight(); + w = this.getWidth(); + h = this.getHeight(); - while (this.x < this.w) { - while (this.y < this.h) { - g.drawImage(this.bgImg.getImage(), this.x, this.y, null); - this.y += this.ih; + // Draw background texture + if (bgTexture != null) { + iw = bgTexture.getWidth(null); + ih = bgTexture.getHeight(null); + x = 0; + y = 0; + + while (x < w) { + while (y < h) { + g.drawImage(bgTexture, (int) x, (int) y, null); + y += ih; } - this.x += this.iw; - this.y = 0; + x += iw; + y = 0; + } + x = 0; + } + + // Draw background image + if (bgImg != null) { + iw = bgImg.getWidth(null); // Image Width + ih = bgImg.getHeight(null); // Image Height + iar = iw / ih; // Image Aspect Ratio + + // Image is smaller than panel: + if (w > iw && h > ih) { + g.drawImage(bgImg, (int) (w - iw) / 2, (int) (h - ih) / 2, (int) iw, (int) ih, null); + } + // Image is larger than panel, and tall: + else if (iar < 1) { + g.drawImage(bgImg, + (int) ((w - h * iar) / 2), 0, + (int) ((w + h * iar) / 2), (int) h, + 0, 0, (int) iw, (int) ih, null); + } + // Image is larger than panel, and wide: + else if (iar > 1) { + g.drawImage(bgImg, + 0, (int) ((h - w / iar) / 2), + (int) w, (int) ((h + w / iar) / 2), + 0, 0, (int) iw, (int) ih, null); } - this.x = 0; } super.paintComponent(g); } /** - * Sets the bG img. - * - * @param icon - * the new bG img + * An FPanel can have a tiled texture and an image. The texture will be drawn + * first. If a background image has been set, it will be drawn on top of the + * texture, centered and scaled proportional to its aspect ratio. + * + * @param i0   ImageIcon */ - public void setBGImg(final ImageIcon icon) { - this.bgImg = icon; + public void setBGImg(final ImageIcon i0) { + this.bgImg = i0.getImage(); if (this.bgImg != null) { this.setOpaque(false); } } + /** + * An FPanel can have a tiled texture and an image. The texture will be drawn + * first. If a background image has been set, it will be drawn on top of the + * texture, centered and scaled proportional to its aspect ratio. + * + * @param i0   ImageIcon + */ + public void setBGTexture(final ImageIcon i0) { + this.bgTexture = i0.getImage(); + if (this.bgTexture != null) { + this.setOpaque(false); + } + } + /** * Sets the preferred size. * diff --git a/src/main/java/forge/gui/skin/FRoundedPanel.java b/src/main/java/forge/gui/skin/FRoundedPanel.java index 0a2d3fe9ebf..29c1a85d61c 100644 --- a/src/main/java/forge/gui/skin/FRoundedPanel.java +++ b/src/main/java/forge/gui/skin/FRoundedPanel.java @@ -22,6 +22,7 @@ import forge.AllZone; */ @SuppressWarnings("serial") public class FRoundedPanel extends JPanel { + private boolean[] borders = { true, true, true, true }; private boolean[] corners = { true, true, true, true }; // NW, SW, SE, NE private Color shadowColor = new Color(150, 150, 150, 150); private Color borderColor = AllZone.getSkin().getClrBorders(); @@ -146,39 +147,56 @@ public class FRoundedPanel extends JPanel { // Mid, left, right rectangles: border g2d.setColor(this.borderColor); - g2d.drawLine(r, 0, w - r - so, 0); - g2d.drawLine(r, h - so - 1, w - r - so, h - so - 1); - g2d.drawLine(0, r, 0, h - r - so); - g2d.drawLine(w - so - 1, r, w - so - 1, h - r - so); + + if (this.borders[0]) { g2d.drawLine(r, 0, w - r - so, 0); } + if (this.borders[1]) { g2d.drawLine(0, r, 0, h - r - so); } + if (this.borders[2]) { g2d.drawLine(r, h - so - 1, w - r - so, h - so - 1); } + if (this.borders[3]) { g2d.drawLine(w - so - 1, r, w - so - 1, h - r - so); } // Corners: border // NW if (this.corners[0]) { g2d.drawArc(0, 0, 2 * r, 2 * r, 90, 90); } else { - g2d.drawLine(0, 0, r, 0); - g2d.drawLine(0, 0, 0, r); + if (this.borders[0]) { + g2d.drawLine(0, 0, r, 0); + } + if (this.borders[1]) { + g2d.drawLine(0, 0, 0, r); + } } // SW if (this.corners[1]) { g2d.drawArc(0, h - (2 * r) - so, 2 * r, (2 * r) - 1, 180, 90); } else { - g2d.drawLine(0, h - so - 1, 0, h - r - so - 1); - g2d.drawLine(0, h - so - 1, r, h - so - 1); + if (this.borders[1]) { + g2d.drawLine(0, h - so - 1, 0, h - r - so - 1); + } + if (this.borders[2]) { + g2d.drawLine(0, h - so - 1, r, h - so - 1); + } } // SE if (this.corners[2]) { g2d.drawArc(w - (2 * r) - so, h - (2 * r) - so, (2 * r) - 1, (2 * r) - 1, 270, 90); } else { - g2d.drawLine(w - so - 1, h - so - 1, w - so - 1, h - r - so); - g2d.drawLine(w - so - 1, h - so - 1, w - r - so, h - so - 1); + if (this.borders[2]) { + g2d.drawLine(w - so - 1, h - so - 1, w - r - so, h - so - 1); + } + if (this.borders[3]) { + g2d.drawLine(w - so - 1, h - so - 1, w - so - 1, h - r - so); + } } // NE if (this.corners[3]) { g2d.drawArc(w - (2 * r) - so, 0, (2 * r) - 1, (2 * r) - 1, 0, 90); } else { - g2d.drawLine(w - so - 1, 0, w - so - r, 0); - g2d.drawLine(w - so - 1, 0, w - so - 1, r); + if (this.borders[0]) { + g2d.drawLine(w - so - 1, 0, w - so - r, 0); + } + if (this.borders[3]) { + g2d.drawLine(w - so - 1, 0, w - so - 1, r); + } } } @@ -230,15 +248,14 @@ public class FRoundedPanel extends JPanel { *

* Sets radius of each corner on rounded panel. * - * @param r - * the new corner radius + * @param r0   int */ - public void setCornerRadius(int r) { - if (r < 0) { - r = 0; + public void setCornerRadius(int r0) { + if (r0 < 0) { + r0 = 0; } - this.cornerRadius = r; + this.cornerRadius = r0; } /** @@ -248,8 +265,7 @@ public class FRoundedPanel extends JPanel { * Sets if corners should be rounded or not in the following order: NW, SW, * SE, NE * - * @param vals - * the new corners + * @param vals   boolean[4] */ public void setCorners(final boolean[] vals) { if (vals.length != 4) { @@ -259,6 +275,23 @@ public class FRoundedPanel extends JPanel { this.corners = vals; } + /** + *

+ * setBorders. + *

+ * Sets if borders should be displayed or not following order: N, W, S, E. + * Only works for square corners, rounded corners will be shown with borders. + * + * @param vals   boolean[4] + */ + public void setBorders(final boolean[] vals) { + if (vals.length != 4) { + throw new IllegalArgumentException("FRoundedPanel > setBorders requires an array of booleans of length 4."); + } + + this.borders = vals; + } + /** * Sets the show shadow. * diff --git a/src/main/java/forge/gui/skin/FSkin.java b/src/main/java/forge/gui/skin/FSkin.java index f28c74b7a28..530adfd9cf4 100644 --- a/src/main/java/forge/gui/skin/FSkin.java +++ b/src/main/java/forge/gui/skin/FSkin.java @@ -28,6 +28,9 @@ public class FSkin { /** Primary texture used in skin. */ private ImageIcon texture1 = null; + /** Primary background image used during match play. */ + private ImageIcon matchBG = null; + /** Left side of button, up state. */ private ImageIcon btnLup = null; @@ -58,6 +61,17 @@ public class FSkin { /** Splash screen image. */ private ImageIcon splash = null; + /** Splash screen image. */ + private ImageIcon icoEnabled = null; + private ImageIcon icoDisabled = null; + private ImageIcon icoTap = null; + private ImageIcon icoUntap = null; + private ImageIcon icoPlus = null; + private ImageIcon icoShortcuts = null; + private ImageIcon icoSettings = null; + private ImageIcon icoConcede = null; + private ImageIcon icoEndTurn = null; + /** Base color used in skin. */ private Color clrTheme = Color.red; @@ -95,7 +109,7 @@ public class FSkin { private String name = "default"; // ===== Private fields - private final String paletteFile = "palette.png"; + private final String spriteFile = "sprite.png"; private final String font1file = "font1.ttf"; private final String font2file = "font2.ttf"; private final String texture1file = "texture1.jpg"; @@ -109,11 +123,11 @@ public class FSkin { private final String btnMdownfile = "btnMdown.png"; private final String btnRdownfile = "btnRdown.png"; private final String splashfile = "bg_splash.jpg"; + private final String matchfile = "bg_match.jpg"; private ImageIcon tempImg; private Font tempFont; - private String skin; - private final String notfound = "FSkin.java: \"" + this.skin + "\" skin can't find "; + private final String notfound = "FSkin.java: Can't find "; /** * FSkin constructor. No arguments, will generate default skin settings, @@ -153,6 +167,7 @@ public class FSkin { // Images this.setTexture1(this.retrieveImage(dirName + this.texture1file)); + this.setMatchBG(this.retrieveImage(dirName + this.matchfile)); this.setBtnLup(this.retrieveImage(dirName + this.btnLupfile)); this.setBtnMup(this.retrieveImage(dirName + this.btnMupfile)); this.setBtnRup(this.retrieveImage(dirName + this.btnRupfile)); @@ -162,26 +177,35 @@ public class FSkin { this.setBtnLdown(this.retrieveImage(dirName + this.btnLdownfile)); this.setBtnMdown(this.retrieveImage(dirName + this.btnMdownfile)); this.setBtnRdown(this.retrieveImage(dirName + this.btnRdownfile)); - this.setSplash(this.retrieveImage(dirName + this.splashfile)); + this.setSplashBG(this.retrieveImage(dirName + this.splashfile)); // Color palette - final File file = new File(dirName + this.paletteFile); + final File file = new File(dirName + this.spriteFile); BufferedImage image; try { image = ImageIO.read(file); - this.setClrTheme(this.getColorFromPixel(image.getRGB(60, 10))); - this.setClrBorders(this.getColorFromPixel(image.getRGB(60, 30))); - this.setClrZebra(this.getColorFromPixel(image.getRGB(60, 50))); - this.setClrHover(this.getColorFromPixel(image.getRGB(60, 70))); - this.setClrActive(this.getColorFromPixel(image.getRGB(60, 90))); - this.setClrInactive(this.getColorFromPixel(image.getRGB(60, 110))); - this.setClrText(this.getColorFromPixel(image.getRGB(60, 130))); - this.setClrProgress1(this.getColorFromPixel(image.getRGB(55, 145))); - this.setClrProgress2(this.getColorFromPixel(image.getRGB(65, 145))); - this.setClrProgress3(this.getColorFromPixel(image.getRGB(55, 155))); - this.setClrProgress4(this.getColorFromPixel(image.getRGB(65, 155))); + this.setClrTheme(this.getColorFromPixel(image.getRGB(70, 10))); + this.setClrBorders(this.getColorFromPixel(image.getRGB(70, 30))); + this.setClrZebra(this.getColorFromPixel(image.getRGB(70, 50))); + this.setClrHover(this.getColorFromPixel(image.getRGB(70, 70))); + this.setClrActive(this.getColorFromPixel(image.getRGB(70, 90))); + this.setClrInactive(this.getColorFromPixel(image.getRGB(70, 110))); + this.setClrText(this.getColorFromPixel(image.getRGB(70, 130))); + this.setClrProgress1(this.getColorFromPixel(image.getRGB(65, 145))); + this.setClrProgress2(this.getColorFromPixel(image.getRGB(75, 145))); + this.setClrProgress3(this.getColorFromPixel(image.getRGB(65, 155))); + this.setClrProgress4(this.getColorFromPixel(image.getRGB(75, 155))); + this.setIconEnabled(image.getSubimage(80, 0, 40, 40)); + this.setIconDisabled(image.getSubimage(120, 0, 40, 40)); + this.setIconTap(image.getSubimage(80, 40, 40, 40)); + this.setIconUntap(image.getSubimage(120, 40, 40, 40)); + this.setIconPlus(image.getSubimage(80, 80, 40, 40)); + this.setIconShortcuts(image.getSubimage(160, 0, 80, 80)); + this.setIconEndTurn(image.getSubimage(160, 80, 80, 80)); + this.setIconSettings(image.getSubimage(80, 0, 80, 80)); + this.setIconConcede(image.getSubimage(80, 80, 80, 80)); } catch (final IOException e) { - System.err.println(this.notfound + this.paletteFile); + System.err.println(this.notfound + this.spriteFile); } } @@ -273,7 +297,7 @@ public class FSkin { * Splash screen image. * @return {@link javax.swing.ImageIcon} splash */ - public ImageIcon getSplash() { + public ImageIcon getSplashBG() { return splash; } @@ -281,7 +305,7 @@ public class FSkin { * Splash screen image. * @param splash0   an image icon */ - public void setSplash(ImageIcon splash0) { + public void setSplashBG(ImageIcon splash0) { this.splash = splash0; } @@ -333,6 +357,22 @@ public class FSkin { this.texture1 = texture10; } + /** + * Primary background image used during match play. + * @return ImageIcon + */ + public ImageIcon getMatchBG() { + return matchBG; + } + + /** + * Primary background image used during match play. + * @param img0   an image icon + */ + public void setMatchBG(ImageIcon img0) { + this.matchBG = img0; + } + /** * Color of zebra striping in grid displays. * @return {@link java.awt.Color} clrZebra @@ -626,4 +666,94 @@ public class FSkin { public String getName() { return name; } + + /** @param bi0   BufferedImage */ + public void setIconEnabled(BufferedImage bi0) { + this.icoEnabled = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconEnabled() { + return icoEnabled; + } + + /** @param bi0   BufferedImage */ + public void setIconDisabled(BufferedImage bi0) { + this.icoDisabled = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconDisabled() { + return icoDisabled; + } + + /** @param bi0   BufferedImage */ + public void setIconTap(BufferedImage bi0) { + this.icoTap = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconTap() { + return icoTap; + } + + /** @param bi0   BufferedImage */ + public void setIconUntap(BufferedImage bi0) { + this.icoUntap = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconUntap() { + return icoUntap; + } + + /** @param bi0   BufferedImage */ + public void setIconPlus(BufferedImage bi0) { + this.icoPlus = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconPlus() { + return icoPlus; + } + + /** @param bi0   BufferedImage */ + public void setIconShortcuts(BufferedImage bi0) { + this.icoShortcuts = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconShortcuts() { + return icoShortcuts; + } + + /** @param bi0   BufferedImage */ + public void setIconSettings(BufferedImage bi0) { + this.icoSettings = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconSettings() { + return icoSettings; + } + + /** @param bi0   BufferedImage */ + public void setIconConcede(BufferedImage bi0) { + this.icoConcede = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconConcede() { + return icoConcede; + } + + /** @param bi0   BufferedImage */ + public void setIconEndTurn(BufferedImage bi0) { + this.icoEndTurn = new ImageIcon(bi0); + } + + /** @return ImageIcon */ + public ImageIcon getIconEndTurn() { + return icoEndTurn; + } } diff --git a/src/main/java/forge/model/FGameState.java b/src/main/java/forge/model/FGameState.java index 31014097701..64901aa1f4d 100644 --- a/src/main/java/forge/model/FGameState.java +++ b/src/main/java/forge/model/FGameState.java @@ -172,6 +172,7 @@ public class FGameState { * the phase to set */ protected final void setPhase(final Phase phase0) { + System.out.println("asdf:"+phase0); this.phase = phase0; } diff --git a/src/main/java/forge/properties/ForgePreferences.java b/src/main/java/forge/properties/ForgePreferences.java index b2a86719f24..5fc92012d22 100644 --- a/src/main/java/forge/properties/ForgePreferences.java +++ b/src/main/java/forge/properties/ForgePreferences.java @@ -18,8 +18,8 @@ import java.util.List; */ public class ForgePreferences extends Preferences { - /** The new gui. */ - private final boolean newGui; + /** Old gui checkbox toggle. */ + private boolean oldGui; /** The stack ai land. */ private boolean stackAiLand; @@ -27,7 +27,13 @@ public class ForgePreferences extends Preferences { /** The milling loss condition. */ private boolean millingLossCondition; - /** The developer mode. */ + /** Hand view toggle. */ + private boolean handView; + + /** Library view toggle. */ + private boolean libraryView; + + /** Developer mode. */ private boolean developerMode; /** The upload draft ai. */ @@ -106,6 +112,17 @@ public class ForgePreferences extends Preferences { /** The b human end combat. */ private boolean bHumanEndCombat; + // Keyboard shortcuts + private String showStackShortcut; + private String showCombatShortcut; + private String showConsoleShortcut; + private String showPlayersShortcut; + private String showDevShortcut; + private String concedeShortcut; + private String showPictureShortcut; + private String showDetailShortcut; + + // private final List saveListeners = new ArrayList(); private final String fileName; @@ -135,9 +152,11 @@ public class ForgePreferences extends Preferences { throw new Exception("Error reading \"" + fileName + "\".", ex); } - this.newGui = this.getBoolean("gui.new", true); + this.oldGui = this.getBoolean("gui.old", true); this.setStackAiLand(this.getBoolean("AI.stack.land", false)); this.setMillingLossCondition(this.getBoolean("loss.condition.milling", true)); + this.setHandView(this.getBoolean("developer.handview", true)); + this.setLibraryView(this.getBoolean("developer.libraryview", true)); this.setDeveloperMode(this.getBoolean("developer.mode", false)); this.setUploadDraftAI(this.getBoolean("upload.Draft.AI", true)); @@ -172,6 +191,16 @@ public class ForgePreferences extends Preferences { this.setbHumanEOT(this.getBoolean("phase.human.eot", true)); this.setbHumanBeginCombat(this.getBoolean("phase.human.beginCombat", true)); this.setbHumanEndCombat(this.getBoolean("phase.human.endCombat", true)); + + // Keyboard shortcuts + this.setShowStackShortcut(this.get("shortcut.showstack", "83")); + this.setShowCombatShortcut(this.get("shortcut.showcombat", "67")); + this.setShowConsoleShortcut(this.get("shortcut.showconsole", "76")); + this.setShowPlayersShortcut(this.get("shortcut.showplayers", "80")); + this.setShowDevShortcut(this.get("shortcut.showdev", "68")); + this.setConcedeShortcut(this.get("shortcut.concede", "27")); + this.setShowPictureShortcut(this.get("shortcut.showpicture", "17 80")); + this.setShowDetailShortcut(this.get("shortcut.showdetail", "17 68")); } /** @@ -184,10 +213,12 @@ public class ForgePreferences extends Preferences { */ public final void save() throws Exception { - this.set("gui.new", this.newGui); + this.set("gui.old", this.oldGui); this.set("AI.stack.land", this.isStackAiLand()); this.set("loss.condition.milling", this.isMillingLossCondition()); + this.set("developer.handview", this.getHandView()); + this.set("developer.libraryview", this.getLibraryView()); this.set("developer.mode", this.isDeveloperMode()); this.set("upload.Draft.AI", this.isUploadDraftAI()); @@ -224,6 +255,16 @@ public class ForgePreferences extends Preferences { this.set("phase.human.beginCombat", this.isbHumanBeginCombat()); this.set("phase.human.endCombat", this.isbHumanEndCombat()); + // Keyboard shortcuts + this.set("shortcut.showstack", this.getShowStackShortcut()); + this.set("shortcut.showcombat", this.getShowCombatShortcut()); + this.set("shortcut.showconsole", this.getShowConsoleShortcut()); + this.set("shortcut.showplayers", this.getShowPlayersShortcut()); + this.set("shortcut.showdev", this.getShowDevShortcut()); + this.set("shortcut.concede", this.getConcedeShortcut()); + this.set("shortcut.showpicture", this.getShowPictureShortcut()); + this.set("shortcut.showdetail", this.getShowDetailShortcut()); + try { final FileOutputStream stream = new FileOutputStream(this.fileName); this.store(stream, "Forge"); @@ -248,7 +289,7 @@ public class ForgePreferences extends Preferences { /** * Checks if is stack ai land. * - * @return the stackAiLand + * @return boolean */ public boolean isStackAiLand() { return this.stackAiLand; @@ -257,29 +298,78 @@ public class ForgePreferences extends Preferences { /** * Sets the stack ai land. * - * @param stackAiLand the stackAiLand to set + * @param b0   boolean */ - public void setStackAiLand(final boolean stackAiLand) { - this.stackAiLand = stackAiLand; // TODO: Add 0 to parameter's name. + public void setStackAiLand(final boolean b0) { + this.stackAiLand = b0; } /** - * Checks if is milling loss condition. + * Checks if old gui is to be used. * - * @return the millingLossCondition + * @return boolean + */ + public boolean isOldGui() { + return this.oldGui; + } + + /** + * Sets if old gui is to be used. + * + * @param b0   boolean + */ + public void setOldGui(final boolean b0) { + this.oldGui = b0; + } + + /** + * Checks if loss by milling is enabled. + * + * @return boolean */ public boolean isMillingLossCondition() { return this.millingLossCondition; } /** - * Sets the milling loss condition. + * Sets if loss by milling is enabled. * - * @param millingLossCondition the millingLossCondition to set + * @param millingLossCondition0 the millingLossCondition to set */ - public void setMillingLossCondition(final boolean millingLossCondition) { - this.millingLossCondition = millingLossCondition; // TODO: Add 0 to - // parameter's name. + public void setMillingLossCondition(final boolean millingLossCondition0) { + this.millingLossCondition = millingLossCondition0; + } + + /** + * Determines if "view any hand" option in dev mode is enabled or not. + * @return boolean + */ + public boolean getHandView() { + return this.handView; + } + + /** + * Determines if "view any hand" option in dev mode is enabled or not. + * @param b0   boolean + */ + public void setHandView(final boolean b0) { + this.handView = b0; + } + + /** + * Determines if "view any library" option in dev mode is enabled or not. + * @return boolean + */ + public boolean getLibraryView() { + return this.libraryView; + } + + /** + * Determines if "view any library" option in dev mode is enabled or not. + * @param b0   boolean + */ + public void setLibraryView(final boolean b0) { + this.libraryView = b0; } /** @@ -791,4 +881,85 @@ public class ForgePreferences extends Preferences { /** The large. */ large } + + // Keyboard shortcuts + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowStackShortcut() { + return this.showStackShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowStackShortcut(String keycodes) { + this.showStackShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowCombatShortcut() { + return this.showCombatShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowCombatShortcut(String keycodes) { + this.showCombatShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowConsoleShortcut() { + return this.showConsoleShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowConsoleShortcut(String keycodes) { + this.showConsoleShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowPlayersShortcut() { + return this.showPlayersShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowPlayersShortcut(String keycodes) { + this.showPlayersShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowDevShortcut() { + return this.showDevShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowDevShortcut(String keycodes) { + this.showDevShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getConcedeShortcut() { + return this.concedeShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setConcedeShortcut(String keycodes) { + this.concedeShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowPictureShortcut() { + return this.showPictureShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowPictureShortcut(String keycodes) { + this.showPictureShortcut = keycodes; + } + + /** @return String   String of keycodes set for this shortcut, delimited with spaces. */ + public String getShowDetailShortcut() { + return this.showDetailShortcut; + } + + /** @param keycodes   String of keycodes to set for this shortcut, delimited with spaces. */ + public void setShowDetailShortcut(String keycodes) { + this.showDetailShortcut = keycodes; + } } diff --git a/src/main/java/forge/properties/NewConstants.java b/src/main/java/forge/properties/NewConstants.java index dece320b55a..37cd7990a6d 100644 --- a/src/main/java/forge/properties/NewConstants.java +++ b/src/main/java/forge/properties/NewConstants.java @@ -760,7 +760,7 @@ public final class NewConstants { public static final String DECK_EDITOR = "%s/NewGame/deckeditor"; /** The NE w_ gui. */ - public static final String NEW_GUI = "%s/NewGame/newgui"; + public static final String OLD_GUI = "%s/NewGame/oldgui"; /** The A i_ land. */ public static final String AI_LAND = "%s/NewGame/ailand"; diff --git a/src/main/java/forge/quest/gui/QuestMainPanel.java b/src/main/java/forge/quest/gui/QuestMainPanel.java index b1f31570ff1..f2b504cf1ec 100644 --- a/src/main/java/forge/quest/gui/QuestMainPanel.java +++ b/src/main/java/forge/quest/gui/QuestMainPanel.java @@ -31,6 +31,7 @@ import forge.Command; import forge.Constant; import forge.GuiDisplay; import forge.ImageCache; +import forge.control.ControlAllUI; import forge.deck.Deck; import forge.gui.GuiUtils; import forge.gui.deckeditor.DeckEditorQuest; @@ -755,13 +756,14 @@ public class QuestMainPanel extends QuestAbstractPanel { // Dev Mode occurs before Display Constant.Runtime.DEV_MODE[0] = this.devModeCheckBox.isSelected(); - // DO NOT CHANGE THIS ORDER, GuiDisplay needs to be created before cards - // are added - // if (newGUICheckbox.isSelected()) { - AllZone.setDisplay(new GuiDisplay()); - // } else { - // AllZone.setDisplay(new GuiDisplay3()); - // } + if (Constant.Runtime.OLDGUI[0]) { + AllZone.setDisplay(new GuiDisplay()); + } + else { + ControlAllUI ui = new ControlAllUI(); + AllZone.setDisplay(ui.getMatchView()); + ui.getMatchController().initMatch(); + } Constant.Runtime.SMOOTH[0] = this.smoothLandCheckBox.isSelected(); diff --git a/src/main/java/forge/view/GuiTopLevel.java b/src/main/java/forge/view/GuiTopLevel.java new file mode 100644 index 00000000000..003d0144acd --- /dev/null +++ b/src/main/java/forge/view/GuiTopLevel.java @@ -0,0 +1,49 @@ +package forge.view; + +import java.awt.Dimension; + +import javax.swing.JFrame; +import javax.swing.JLayeredPane; + +import forge.AllZone; +import forge.view.toolbox.FOverlay; + +/** + * Parent JFrame for Forge UI. + * + */ +@SuppressWarnings("serial") +public class GuiTopLevel extends JFrame { + private JLayeredPane lpnContent; + + /** + * Parent JFrame for Forge UI. + */ + public GuiTopLevel() { + super(); + setMinimumSize(new Dimension(800, 600)); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setLocationRelativeTo(null); + setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); + + lpnContent = new JLayeredPane(); + lpnContent.setOpaque(true); + setContentPane(lpnContent); + addOverlay(); + + setVisible(true); + } + + /** + * Adds overlay panel to modal layer. Used when removeAll() + * has been called on the JLayeredPane parent. + */ + public void addOverlay() { + final FOverlay pnlOverlay = new FOverlay(); + AllZone.setOverlay(pnlOverlay); + pnlOverlay.setOpaque(false); + pnlOverlay.setVisible(false); + pnlOverlay.setBounds(0, 0, getWidth(), getHeight()); + lpnContent.add(pnlOverlay, JLayeredPane.MODAL_LAYER); + } +} diff --git a/src/main/java/forge/view/home/HomeTopLevel.java b/src/main/java/forge/view/home/HomeTopLevel.java new file mode 100644 index 00000000000..a8157bfec8a --- /dev/null +++ b/src/main/java/forge/view/home/HomeTopLevel.java @@ -0,0 +1,16 @@ +package forge.view.home; + +import forge.gui.skin.FPanel; + +/** + * Lays out battle, sidebar, user areas in locked % vals and repaints + * as necessary. + * + */ + +@SuppressWarnings("serial") +public class HomeTopLevel extends FPanel { + public HomeTopLevel() { + super(); + } +} diff --git a/src/main/java/forge/view/match/ViewAreaBattlefield.java b/src/main/java/forge/view/match/ViewAreaBattlefield.java new file mode 100644 index 00000000000..8244527ecc8 --- /dev/null +++ b/src/main/java/forge/view/match/ViewAreaBattlefield.java @@ -0,0 +1,52 @@ +package forge.view.match; + +import java.util.ArrayList; +import java.util.List; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.gui.skin.FPanel; + +/** + * Battlefield, assembles and contains instances of MatchPlayer. + * SHOULD PROBABLY COLLAPSE INTO TOP LEVEL. + * + */ +@SuppressWarnings("serial") +public class ViewAreaBattlefield extends FPanel { + private List fields; + + /** + * An FPanel that adds instances of ViewField fields + * from player name list. + * + */ + public ViewAreaBattlefield() { + super(); + setOpaque(false); + setLayout(new MigLayout("wrap, insets 1% 0.5% 0 0, gap 1%, nocache")); + + // When future codebase upgrades allow, as many fields as + // necessary can be instantiated here. Doublestrike 29-10-11 + + fields = new ArrayList(); + + ViewField temp; + + temp = new ViewField(AllZone.getComputerPlayer()); + this.add(temp, "h 48.5%!, w 99.5%!"); + fields.add(temp); + + temp = new ViewField(AllZone.getHumanPlayer()); + this.add(temp, "h 48.5%!, w 99.5%!"); + fields.add(temp); + } + + /** + * Returns a list of field components in battlefield. + * @return List + */ + public List getFields() { + return fields; + } +} diff --git a/src/main/java/forge/view/match/ViewAreaSidebar.java b/src/main/java/forge/view/match/ViewAreaSidebar.java new file mode 100644 index 00000000000..dd9ddbbeba0 --- /dev/null +++ b/src/main/java/forge/view/match/ViewAreaSidebar.java @@ -0,0 +1,62 @@ +package forge.view.match; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.gui.skin.FPanel; +import forge.gui.skin.FRoundedPanel; + +/** + * Handles display of child components of sidebar area in match UI. + * SHOULD PROBABLY COLLAPSE INTO TOP LEVEL. + * + */ +@SuppressWarnings("serial") +public class ViewAreaSidebar extends FPanel { + private ViewCardviewer cardviewer; + private ViewTabber tabber; + private FRoundedPanel sidebar; + + /** + * Handles display of all components of sidebar area in match UI. + * + */ + public ViewAreaSidebar() { + super(); + setOpaque(false); + setLayout(new MigLayout("insets 0")); + sidebar = new FRoundedPanel(); + sidebar.setLayout(new MigLayout("wrap, gap 0, insets 0")); + sidebar.setBackground(AllZone.getSkin().getClrTheme()); + sidebar.setCorners(new boolean[] {true, true, false, false}); + + // Add tabber, cardview, and finally sidebar. Unfortunately, + // tabber and cardviewer cannot extend FVerticalTabPanel, since that + // requires child panels to be prepared before it's instantiated. + // Therefore, their vertical tab panels must be accessed indirectly via + // an instance of this class. + cardviewer = new ViewCardviewer(); + tabber = new ViewTabber(); + + sidebar.add(cardviewer.getVtpCardviewer(), "w 97%!, h 40%!, gapleft 1%, gapright 2%"); + sidebar.add(tabber.getVtpTabber(), "w 97%!, h 60%!, gapright 2%"); + add(sidebar, "h 98%!, w 98%!, gapleft 2%, gaptop 1%"); + } + + /** + * Retrieves vertical tab panel used for card picture and detail. + * + * @return ViewCardviewer vertical tab panel + */ + public ViewCardviewer getCardviewer() { + return cardviewer; + } + + /** + * Retrieves vertical tab panel used for data presentation. + * + * @return ViewTabber vertical tab panel + */ + public ViewTabber getTabber() { + return tabber; + } +} diff --git a/src/main/java/forge/view/match/ViewAreaUser.java b/src/main/java/forge/view/match/ViewAreaUser.java new file mode 100644 index 00000000000..87fc14d15e0 --- /dev/null +++ b/src/main/java/forge/view/match/ViewAreaUser.java @@ -0,0 +1,63 @@ +package forge.view.match; + +import javax.swing.JPanel; + +import net.miginfocom.swing.MigLayout; +import forge.gui.skin.FPanel; + +/** + * Parent panel for display of input, hand, and dock. + * SHOULD PROBABLY COLLAPSE INTO TOP LEVEL. + * + */ +@SuppressWarnings("serial") +public class ViewAreaUser extends FPanel { + private ViewDock pnlDock; + private ViewHand pnlHand; + + private JPanel pnlMessage; + private ViewInput pnlInput; + + /** + * Assembles user area of match UI. + */ + public ViewAreaUser() { + super(); + setOpaque(false); + setLayout(new MigLayout("fill, insets 0, gap 0")); + + // Input panel + pnlInput = new ViewInput(); + + // Hand panel + pnlHand = new ViewHand(); + + // Dock panel + pnlDock = new ViewDock(); + + // A.D.D. + add(pnlInput, "h 100%!, west, w 200px!"); + add(pnlHand, "grow, gapleft 5"); + add(pnlDock, "growx, h 50px!, south, gaptop 5, gapleft 5"); + } + + /** @return ViewDock */ + public ViewDock getPnlDock() { + return pnlDock; + } + + /** @return ViewHand */ + public ViewHand getPnlHand() { + return pnlHand; + } + + /** @return JPanel */ + public JPanel getPnlMessage() { + return pnlMessage; + } + + /** @return ViewInput */ + public ViewInput getPnlInput() { + return pnlInput; + } +} diff --git a/src/main/java/forge/view/match/ViewCardviewer.java b/src/main/java/forge/view/match/ViewCardviewer.java new file mode 100644 index 00000000000..fb94b94a0f5 --- /dev/null +++ b/src/main/java/forge/view/match/ViewCardviewer.java @@ -0,0 +1,107 @@ +package forge.view.match; + +import java.awt.Graphics; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JPanel; + +import forge.Card; +import forge.ImageCache; +import forge.control.match.ControlCardviewer; +import forge.gui.skin.FPanel; +import forge.view.toolbox.CardDetailPanel; +import forge.view.toolbox.FVerticalTabPanel; + +/** + * Vertical tab panel for viewing card picture and/or details. + * + */ +public class ViewCardviewer { + private List panelList; + private ControlCardviewer control; + + private CardPicPanel pnlCardPic; + private CardDetailPanel pnlCardDetail; + private FVerticalTabPanel vtpCardviewer; + + private int w, h; + + /** + * + */ + public ViewCardviewer() { + // Assemble card pic viewer + panelList = new ArrayList(); + + pnlCardPic = new CardPicPanel(); + pnlCardPic.setOpaque(false); + pnlCardPic.setName("Picture"); + pnlCardPic.setToolTipText("Card Picture"); + panelList.add(pnlCardPic); + + pnlCardDetail = new CardDetailPanel(); + pnlCardDetail.setOpaque(false); + pnlCardDetail.setName("Detail"); + pnlCardDetail.setToolTipText("Card Text"); + panelList.add(pnlCardDetail); + + vtpCardviewer = new FVerticalTabPanel(panelList); + + // After all components are in place, instantiate controller. + control = new ControlCardviewer(this); + } + + /** @return ControlCardviewer */ + public ControlCardviewer getController() { + return control; + } + + /** + * Card picture handling in side panel of match. + * + */ + @SuppressWarnings("serial") + public class CardPicPanel extends FPanel { + private Card card = null; + + /** @param c   Card object */ + public void setCard(Card c) { + this.card = c; + repaint(); + } + + /** @return Card */ + public Card getCard() { + return this.card; + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + + if (card != null) { + w = getWidth(); + h = (int) (w / 0.7); + BufferedImage img = ImageCache.getImage(card, w, h); + g.drawImage(img, 0, (int) ((getHeight() - h) / 2), null); + } + } + } + + /** @return CardPicPanel */ + public CardPicPanel getPnlCardPic() { + return pnlCardPic; + } + + /** @return CardDetailPanel */ + public CardDetailPanel getPnlCardDetail() { + return pnlCardDetail; + } + + /** @return FVerticalTabPanel */ + public FVerticalTabPanel getVtpCardviewer() { + return vtpCardviewer; + } +} diff --git a/src/main/java/forge/view/match/ViewDock.java b/src/main/java/forge/view/match/ViewDock.java new file mode 100644 index 00000000000..50ca97a8df2 --- /dev/null +++ b/src/main/java/forge/view/match/ViewDock.java @@ -0,0 +1,388 @@ +package forge.view.match; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.border.LineBorder; + +import org.apache.commons.lang3.StringUtils; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.Singletons; +import forge.control.match.ControlDock; +import forge.gui.skin.FButton; +import forge.gui.skin.FPanel; +import forge.gui.skin.FRoundedPanel; +import forge.gui.skin.FSkin; +import forge.properties.ForgePreferences; +import forge.view.toolbox.FOverlay; + +/** + * Swing component for button dock. + * + */ +@SuppressWarnings("serial") +public class ViewDock extends FRoundedPanel { + private FSkin skin; + private ControlDock control; + private Map keyboardShortcutFields; + private Action actClose, actSaveKeyboardShortcuts; + + /** + * Swing component for button dock. + * + */ + public ViewDock() { + super(); + setCorners(new boolean[] {false, false, false, false}); + setBorders(new boolean[] {true, true, false, true}); + setToolTipText("Shortcut Button Dock"); + setBackground(AllZone.getSkin().getClrTheme()); + setLayout(new MigLayout("insets 0, gap 0, ay center, ax center")); + String constraints = "w 30px!, h 30px!, gap 0 10px"; + skin = AllZone.getSkin(); + keyboardShortcutFields = new HashMap(); + + actClose = new AbstractAction() { + public void actionPerformed(ActionEvent e) { + AllZone.getOverlay().hideOverlay(); + } + }; + + actSaveKeyboardShortcuts = new AbstractAction() { + public void actionPerformed(ActionEvent e) { + control.saveKeyboardShortcuts(); + } + }; + + JLabel btnConcede = new DockButton(skin.getIconConcede(), "Concede Game"); + btnConcede.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + control.concede(); + } + }); + + JLabel btnShortcuts = new DockButton(skin.getIconShortcuts(), "Keyboard Shortcuts"); + btnShortcuts.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + overlayKeyboard(); + } + }); + + JLabel btnSettings = new DockButton(skin.getIconSettings(), "Game Settings"); + btnSettings.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + overlaySettings(); + } + }); + + JLabel btnEndTurn = new DockButton(skin.getIconEndTurn(), "Game Settings"); + btnEndTurn.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + control.endTurn(); + } + }); + + add(btnConcede, constraints); + add(btnShortcuts, constraints); + add(btnSettings, constraints); + add(btnEndTurn, constraints); + + // After all components are in place, instantiate controller. + control = new ControlDock(this); + } + + /** @return ControlDock */ + public ControlDock getController() { + return control; + } + + /** + * Buttons in Dock. JLabels are used to allow hover effects. + */ + public class DockButton extends JLabel { + private Image img; + private Color hoverBG = skin.getClrHover(); + private Color defaultBG = new Color(0, 0, 0, 0); + private Color clrBorders = new Color(0, 0, 0, 0); + private int w, h; + + /** + * Buttons in Dock. JLabels are used to allow hover effects. + * + * @param i0   ImageIcon to show in button + * @param s0   Tooltip string + */ + public DockButton(ImageIcon i0, String s0) { + super(); + setToolTipText(s0); + setOpaque(false); + setBackground(defaultBG); + img = i0.getImage(); + + addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + clrBorders = skin.getClrBorders(); + setBackground(hoverBG); + } + + @Override + public void mouseExited(MouseEvent e) { + clrBorders = new Color(0, 0, 0, 0); + setBackground(defaultBG); + } + }); + } + + @Override + public void paintComponent(Graphics g) { + w = getWidth(); + h = getHeight(); + g.setColor(getBackground()); + g.fillRect(0, 0, w, h); + g.setColor(clrBorders); + g.drawRect(0, 0, w - 1, h - 1); + g.drawImage(img, 0, 0, w, h, null); + super.paintComponent(g); + } + } + + /** */ + private void overlayKeyboard() { + FOverlay overlay = AllZone.getOverlay(); + overlay.removeAll(); + overlay.setLayout(new MigLayout("insets 0")); + overlay.showOverlay(); + + FPanel parent = new FPanel(); + parent.setBGImg(skin.getTexture1()); + parent.setBorder(new LineBorder(skin.getClrBorders(), 1)); + parent.setLayout(new MigLayout("insets 0, wrap 2, ax center, ay center")); + overlay.add(parent, "w 80%!, h 80%!, gaptop 10%, gapleft 10%, span 2 1"); + + FButton btnOK = new FButton(); + FButton btnCancel = new FButton(); + + overlay.add(btnOK, "width 30%, newline, gapright 10%, gapleft 15%, gaptop 10px"); + overlay.add(btnCancel, "width 30%!"); + + btnOK.setAction(actSaveKeyboardShortcuts); + btnOK.setText("Save and Exit"); + + btnCancel.setAction(actClose); + btnCancel.setText("Exit Without Save"); + + KeyboardShortcutLabel lblBlurb = new KeyboardShortcutLabel(); + lblBlurb.setText("
Focus in a box and press a key.
" + + "Backspace will remove the last keypress.
" + + "Restart Forge to map any new changes.
"); + parent.add(lblBlurb, "span 2 1, gapbottom 30px"); + + ForgePreferences fp = Singletons.getModel().getPreferences(); + + // Keyboard shortcuts are a bit tricky to make, since they involve three + // different parts of the codebase: Preferences, main match control, and + // the customize button in the dock. To make a keyboard shortcut: + // + // 1. Go to ForgePreferences and set a variable, default value, setter, and getter + // 2. Go to ControlMatchUI and map an action using mapKeyboardShortcuts + // 3. (Optional) Come back to this file and add a new KeyboardShortcutField so + // the user can customize this shortcut. Update ControlDock to ensure any + // changes will be saved. + + // Keyboard shortcuts must be created, then added to the HashMap to help saving. + // Their actions must also be declared, using mapKeyboardShortcuts in ControlMatchUI. + final KeyboardShortcutField showStack = new KeyboardShortcutField(fp.getShowStackShortcut()); + this.keyboardShortcutFields.put("showstack", showStack); + + final KeyboardShortcutField showCombat = new KeyboardShortcutField(fp.getShowCombatShortcut()); + this.keyboardShortcutFields.put("showcombat", showCombat); + + final KeyboardShortcutField showConsole = new KeyboardShortcutField(fp.getShowConsoleShortcut()); + this.keyboardShortcutFields.put("showconsole", showConsole); + + final KeyboardShortcutField showPlayers = new KeyboardShortcutField(fp.getShowPlayersShortcut()); + this.keyboardShortcutFields.put("showplayers", showPlayers); + + final KeyboardShortcutField showDev = new KeyboardShortcutField(fp.getShowDevShortcut()); + this.keyboardShortcutFields.put("showdev", showDev); + + final KeyboardShortcutField concedeGame = new KeyboardShortcutField(fp.getConcedeShortcut()); + this.keyboardShortcutFields.put("concede", concedeGame); + + final KeyboardShortcutField showPicture = new KeyboardShortcutField(fp.getShowPictureShortcut()); + this.keyboardShortcutFields.put("showpicture", showPicture); + + final KeyboardShortcutField showDetail = new KeyboardShortcutField(fp.getShowDetailShortcut()); + this.keyboardShortcutFields.put("showdetail", showDetail); + + // + parent.add(new KeyboardShortcutLabel("Show stack tab: "), "w 200px!"); + parent.add(showStack, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show combat tab: "), "w 200px!"); + parent.add(showCombat, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show console tab: "), "w 200px!"); + parent.add(showConsole, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show players tab: "), "w 200px!"); + parent.add(showPlayers, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show devmode tab: "), "w 200px!"); + parent.add(showDev, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Concede game: "), "w 200px!"); + parent.add(concedeGame, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show card picture: "), "w 200px!"); + parent.add(showPicture, "w 100px!"); + parent.add(new KeyboardShortcutLabel("Show card detail: "), "w 200px!"); + parent.add(showDetail, "w 100px!"); + } + + /** */ + private void overlaySettings() { + FOverlay overlay = AllZone.getOverlay(); + overlay.setLayout(new MigLayout("insets 0")); + overlay.showOverlay(); + + JPanel parent = new JPanel(); + parent.setBackground(Color.red.darker()); + overlay.add(parent, "w 80%!, h 80%!, gaptop 10%, gapleft 10%, span 2 1"); + + FButton btnOK = new FButton("Save and Exit"); + FButton btnCancel = new FButton("Exit Without Save"); + + overlay.add(btnOK, "width 30%, newline, gapright 10%, gapleft 15%, gaptop 10px"); + overlay.add(btnCancel, "width 30%!"); + + btnOK.setAction(actClose); + btnOK.setText("Save and Exit"); + + btnCancel.setAction(actClose); + btnCancel.setText("Exit Without Save"); + + JLabel test = new JLabel(); + test.setForeground(Color.white); + test.setText("
'Settings' does not do anything yet.
" + + "This button is just here to demonstrate the dock feature.
" + + "'Settings' can be removed or developed further.
"); + + parent.add(test); + } + + /** Small private class to centralize label styling. */ + private class KeyboardShortcutLabel extends JLabel { + public KeyboardShortcutLabel() { + this(""); + } + + public KeyboardShortcutLabel(String s0) { + super(s0); + + this.setForeground(skin.getClrText()); + this.setFont(skin.getFont1().deriveFont(Font.PLAIN, 16)); + } + } + + /** A JTextField plus a "codeString" property, that stores keycodes for the shortcut. + * Also, an action listener that handles translation of keycodes into characters and + * (dis)assembly of keycode stack. + */ + public class KeyboardShortcutField extends JTextField { + private String codeString; + + /** A JTextField plus a "codeString" property, that stores keycodes for the shortcut. + * Also, an action listener that handles translation of keycodes into characters and + * (dis)assembly of keycode stack. + * + * This constructor sets the keycode string for this shortcut. + * Important: this parameter is keyCODEs not keyCHARs. + * + * @param s0   The string of keycodes for this shortcut + */ + public KeyboardShortcutField(String s0) { + this(); + this.setCodeString(s0); + } + + /** A JTextField plus a "codeString" property, that stores keycodes for the shortcut. + * Also, an action listener that handles translation of keycodes into characters and + * (dis)assembly of keycode stack. + */ + public KeyboardShortcutField() { + super(); + this.setEditable(false); + this.setFont(skin.getFont1().deriveFont(Font.PLAIN, 14)); + + this.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + control.addKeyCode(e); + } + }); + + this.addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + setBackground(skin.getClrActive()); + } + @Override + public void focusLost(FocusEvent e) { + setBackground(Color.white); + } + }); + } + + /** @return String */ + public String getCodeString() { + return codeString; + } + + /** @param s0   The new code string (space delimited) */ + public void setCodeString(String s0) { + if (s0.equals("null")) { + return; + } + + codeString = s0.trim(); + + List codes = new ArrayList(Arrays.asList(codeString.split(" "))); + List displayText = new ArrayList(); + + for (String s : codes) { + if (!s.isEmpty()) { + displayText.add(KeyEvent.getKeyText(Integer.valueOf(s))); + } + } + + this.setText(StringUtils.join(displayText, ' ')); + } + } + + /** @return Map */ + public Map getKeyboardShortcutFields() { + return keyboardShortcutFields; + } +} diff --git a/src/main/java/forge/view/match/ViewField.java b/src/main/java/forge/view/match/ViewField.java new file mode 100644 index 00000000000..18ad52bd011 --- /dev/null +++ b/src/main/java/forge/view/match/ViewField.java @@ -0,0 +1,628 @@ +package forge.view.match; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ScrollPaneConstants; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; +import javax.swing.border.MatteBorder; + +import arcane.ui.PlayArea; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.Player; +import forge.Constant.Zone; +import forge.card.cardfactory.CardFactoryUtil; +import forge.control.match.ControlField; +import forge.gui.skin.FPanel; +import forge.gui.skin.FRoundedPanel; +import forge.gui.skin.FSkin; + +/** + * Assembles Swing components of player field instance. + * + */ +@SuppressWarnings("serial") +public class ViewField extends FRoundedPanel { + private FSkin skin; + private int counter; + + private ControlField control; + private PlayArea tabletop; + + private Border hoverBorder, inactiveBorder; + + private DetailLabel + lblHand, lblGraveyard, lblLibrary, + lblExile, lblFlashback, lblPoison, + lblBlack, lblBlue, lblGreen, + lblRed, lblWhite, lblColorless; + + private PhaseLabel + lblUpkeep, lblDraw, lblBeginCombat, lblEndCombat, lblEndTurn; + + private JLabel lblLife; + private Map keywordLabels; + private Color transparent = new Color(0, 0, 0, 0); + + /** + * Assembles Swing components of player field instance. + * + * @param player   a Player object. + */ + public ViewField(Player player) { + super(); + setOpaque(false); + setLayout(new MigLayout("insets 1% 0.5%, gap 0.5%")); + setCornerRadius(5); + setToolTipText(player.getName() + " Gameboard"); + setBackground(AllZone.getSkin().getClrTheme()); + + skin = AllZone.getSkin(); + inactiveBorder = new LineBorder(new Color(0, 0, 0, 0), 1); + hoverBorder = new LineBorder(skin.getClrBorders(), 1); + counter = -1; + + JScrollPane scroller = new JScrollPane(); + tabletop = new PlayArea(scroller, true); + + scroller.setViewportView(tabletop); + scroller.setOpaque(false); + scroller.getViewport().setOpaque(false); + scroller.setBorder(null); + tabletop.setBorder(new MatteBorder(0, 1, 0, 0, skin.getClrBorders())); + tabletop.setOpaque(false); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.fill = GridBagConstraints.BOTH; + + // + Avatar pic = new Avatar("res/pics/icons/unknown.jpg"); + Details pool = new Details(); + + add(pic, "h 98%!, w 10%!"); + add(pool, "h 98%!, w 11%!"); + add(scroller, "h 98%!, w 77%!"); + + // After all components are in place, instantiate controller. + control = new ControlField(player, this); + } + + /** @return ControlField */ + public ControlField getController() { + return control; + } + + /** Handles observer update of player Zones - hand, graveyard, etc. + * + * @param p0   Player obj + */ + public void updateZones(Player p0) { + getLblHand().setText("" + + p0.getZone(Zone.Hand).size()); + getLblGraveyard().setText("" + + p0.getZone(Zone.Graveyard).size()); + getLblLibrary().setText("" + + p0.getZone(Zone.Library).size()); + getLblFlashback().setText("" + + CardFactoryUtil.getExternalZoneActivationCards(p0).size()); + getLblExile().setText("" + + p0.getZone(Zone.Exile).size()); + } + + /** Handles observer update of non-Zone details - life, poison, etc. + * Also updates "players" panel in tabber for this player. + * + * @param p0   Player obj + */ + public void updateDetails(Player p0) { + // "Players" panel update + ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + t.getTabberController().getView().updatePlayerLabels(p0); + + // Poison/life + getLblLife().setText("" + p0.getLife()); + getLblPoison().setText("" + p0.getPoisonCounters()); + + // Hide all keyword labels, then show the appropriate ones. + for (JLabel lbl : keywordLabels.values()) { + lbl.setVisible(false); + } + + for (String s : p0.getKeywords()) { + keywordLabels.get(s).setVisible(true); + } + } + + //========= Retrieval methods + /** @return PlayArea where cards for this field are in play */ + public PlayArea getTabletop() { + return tabletop; + } + + /** @return DetailLabel */ + public JLabel getLblLife() { + return lblLife; + } + + /** @return DetailLabel for hand cards */ + public DetailLabel getLblHand() { + return lblHand; + } + + /** @return DetailLabel for library cards */ + public DetailLabel getLblLibrary() { + return lblLibrary; + } + + /** @return DetailLabel for graveyard cards */ + public DetailLabel getLblGraveyard() { + return lblGraveyard; + } + + /** @return DetailLabel for exiled cards */ + public DetailLabel getLblExile() { + return lblExile; + } + + /** @return DetailLabel for flashback cards */ + public DetailLabel getLblFlashback() { + return lblFlashback; + } + + /** @return DetailLabel for poison counters */ + public DetailLabel getLblPoison() { + return lblPoison; + } + + /** @return DetailLabel for colorless mana count */ + public DetailLabel getLblColorless() { + return lblColorless; + } + + /** @return DetailLabel for black mana count */ + public DetailLabel getLblBlack() { + return lblBlack; + } + + /** @return DetailLabel for blue mana count */ + public DetailLabel getLblBlue() { + return lblBlue; + } + + /** @return DetailLabel for green mana count */ + public DetailLabel getLblGreen() { + return lblGreen; + } + + /** @return DetailLabel for red mana count */ + public DetailLabel getLblRed() { + return lblRed; + } + + /** @return DetailLabel for white mana count */ + public DetailLabel getLblWhite() { + return lblWhite; + } + + // Phases + /** @return PhaseLabel for upkeep */ + public PhaseLabel getLblUpkeep() { + return lblUpkeep; + } + + /** @return PhaseLabel for draw */ + public PhaseLabel getLblDraw() { + return lblDraw; + } + + /** @return PhaseLabel for beginning of combat*/ + public PhaseLabel getLblBeginCombat() { + return lblBeginCombat; + } + + /** @return PhaseLabel for end of combat */ + public PhaseLabel getLblEndCombat() { + return lblEndCombat; + } + + /** @return PhaseLabel for end of turn */ + public PhaseLabel getLblEndTurn() { + return lblEndTurn; + } + + /** @return Map */ + public Map getKeywordLabels() { + return keywordLabels; + } + + //========== Custom classes + + /** + * Shows user icon, keywords, and phase for this field. + */ + private class Avatar extends FPanel { + private ImageIcon icon; + private Color transparent = new Color(0, 0, 0, 0); + + public Avatar(String filename) { + // Panel and background image icon init + super(); + setOpaque(false); + setLayout(new MigLayout("fill, wrap, insets 0, gap 0")); + icon = new ImageIcon(filename); + + // Life label + lblLife = new JLabel("--"); + lblLife.setBorder(inactiveBorder); + lblLife.setToolTipText("Player life.
Click to select player."); + lblLife.setFont(skin.getFont1().deriveFont(Font.BOLD, 18)); + lblLife.setForeground(skin.getClrText()); + lblLife.setBackground(skin.getClrTheme().darker()); + lblLife.setOpaque(true); + lblLife.setHorizontalAlignment(JLabel.CENTER); + lblLife.setAlignmentX(Component.CENTER_ALIGNMENT); + lblLife.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + lblLife.setBackground(AllZone.getSkin().getClrHover()); + lblLife.setBorder(hoverBorder); + } + + @Override + public void mouseExited(MouseEvent e) { + lblLife.setBackground(skin.getClrTheme()); + lblLife.setBorder(inactiveBorder); + } + }); + add(lblLife, "w 100%!, dock north"); + + keywordLabels = new HashMap(); + // TODO link these map keys to correct keyword constant + keywordLabels.put("shroud", new KeywordLabel("Shroud")); + keywordLabels.put("extraturn", new KeywordLabel("+1 turn")); + keywordLabels.put("skipturn", new KeywordLabel("Skip turn")); + keywordLabels.put("problack", new KeywordLabel("Pro: Black")); + keywordLabels.put("problue", new KeywordLabel("Pro: Blue")); + keywordLabels.put("progreen", new KeywordLabel("Pro: Green")); + keywordLabels.put("prored", new KeywordLabel("Pro: Red")); + keywordLabels.put("prowhite", new KeywordLabel("Pro: White")); + + JPanel pnlKeywords = new JPanel(new MigLayout("insets 0, wrap, hidemode 2")); + pnlKeywords.setOpaque(false); + for (JLabel lbl : keywordLabels.values()) { + pnlKeywords.add(lbl); + } + + JScrollPane scrKeywords = new JScrollPane(pnlKeywords, + ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + + scrKeywords.setBorder(new EmptyBorder(0, 0, 0, 0)); + scrKeywords.setOpaque(false); + scrKeywords.getViewport().setOpaque(false); + scrKeywords.setViewportView(pnlKeywords); + add(scrKeywords, "w 100%!, growy"); + + JPanel phase = new JPanel(); + phase.setOpaque(false); + phase.setLayout(new MigLayout("fillx, insets 0, gap 0")); + add(phase, "w 100%!, h 20px!"); + + // Constraints string must be set once, for ease and also + // since dynamic sizing is buggy. + String constraints = "w 20%!, h 100%!"; + + lblUpkeep = new PhaseLabel("UP"); + lblUpkeep.setToolTipText("Phase: Upkeep
Click to toggle."); + phase.add(lblUpkeep, constraints); + + lblDraw = new PhaseLabel("DR"); + lblDraw.setToolTipText("Phase: Draw
Click to toggle."); + phase.add(lblDraw, constraints); + + lblBeginCombat = new PhaseLabel("BC"); + lblBeginCombat.setToolTipText("Phase: Begin Combat
Click to toggle."); + phase.add(lblBeginCombat, constraints); + + lblEndCombat = new PhaseLabel("EC"); + lblEndCombat.setToolTipText("Phase: End Combat
Click to toggle."); + phase.add(lblEndCombat, constraints); + + lblEndTurn = new PhaseLabel("ET"); + lblEndTurn.setToolTipText("Phase: End Turn
Click to toggle."); + phase.add(lblEndTurn, constraints); + } + + public void paintComponent(Graphics g) { + super.paintComponent(g); + setBorder(new MatteBorder(getWidth(), 0, 0, 0, transparent)); + g.drawImage(icon.getImage(), 0, 0, getWidth(), getWidth(), + 0, 0, icon.getIconWidth(), icon.getIconHeight(), null); + lblLife.setFont(skin.getFont1().deriveFont(Font.PLAIN, (int) (getWidth() / 4))); + } + } + + /** + * The "details" section of player info: + * Hand, library, graveyard, exiled, flashback, poison, + * and mana pool (BBGRW and colorless). + * + */ + // Design note: Labels are used here since buttons have various + // difficulties in displaying the desired "flat" background and + // also strange icon/action behavior. + private class Details extends JPanel { + public Details() { + super(); + setLayout(new MigLayout("insets 0, gap 0, wrap 2, filly")); + setOpaque(false); + final String constraints = "w 50%!, h 12.5%!, growy"; + + // Hand, library, graveyard, exile, flashback, poison labels + lblGraveyard = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_grave.png"), "99"); + lblGraveyard.setToolTipText("Cards in graveyard"); + add(lblGraveyard, constraints); + + lblLibrary = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_library.png"), "99"); + lblLibrary.setToolTipText("Cards in library"); + add(lblLibrary, constraints); + + lblExile = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_exile.png"), "99"); + lblExile.setToolTipText("Exiled cards"); + add(lblExile, constraints); + + lblFlashback = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_flashback.png"), "99"); + lblFlashback.setToolTipText("Flashback cards"); + add(lblFlashback, constraints); + + lblHand = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_hand.png"), "99"); + lblHand.setToolTipText("Cards in hand"); + add(lblHand, constraints); + + lblPoison = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_poison.png"), "99"); + lblPoison.setToolTipText("Poison counters"); + add(lblPoison, constraints); + + // Black, Blue, Colorless, Green, Red, White mana labels + lblBlack = new DetailLabel(new ImageIcon("res/images/symbols-13/B.png"), "99"); + lblBlack.setToolTipText("Black mana"); + add(lblBlack, constraints); + + lblBlue = new DetailLabel(new ImageIcon("res/images/symbols-13/U.png"), "99"); + lblBlue.setToolTipText("Blue mana"); + add(lblBlue, constraints); + + lblGreen = new DetailLabel(new ImageIcon("res/images/symbols-13/G.png"), "99"); + lblGreen.setToolTipText("Green mana"); + add(lblGreen, constraints); + + lblRed = new DetailLabel(new ImageIcon("res/images/symbols-13/R.png"), "99"); + lblRed.setToolTipText("Red mana"); + add(lblRed, constraints); + + lblWhite = new DetailLabel(new ImageIcon("res/images/symbols-13/W.png"), "99"); + lblWhite.setToolTipText("White mana"); + add(lblWhite, constraints); + + lblColorless = new DetailLabel(new ImageIcon("res/images/symbols-13/X.png"), "99"); + lblColorless.setToolTipText("Colorless mana"); + add(lblColorless, constraints); + } + } + + /** + * Used to show various values in "details" panel. Also increments + * grid bag constraints object as it goes, and zebra-stripes the labels. + */ + public class DetailLabel extends JLabel { + private final Dimension labelSize = new Dimension(40, 25); + private Color defaultBG; + private Color hoverBG; + private Color clrBorders; + private MouseAdapter madHover; + private int w, h; + + /** + * Instance of JLabel detailing info about field: + * has icon and optional hover effect. + * + * @param icon   Label's icon + * @param txt   Label's text + */ + public DetailLabel(ImageIcon icon, String txt) { + super(); + setIcon(icon); + setText(txt); + setOpaque(false); + setForeground(skin.getClrText()); + setPreferredSize(labelSize); + setMaximumSize(labelSize); + setMinimumSize(labelSize); + setBorder(new LineBorder(new Color(0, 0, 0, 0), 1)); + setHorizontalAlignment(CENTER); + + // Increment counter and check for zebra. Set default BG + // so hover effects return to the same color. + counter++; + + if (counter % 4 == 2 || counter % 4 == 3) { + defaultBG = skin.getClrZebra(); + } + else { + defaultBG = skin.getClrTheme(); + } + setBackground(defaultBG); + + madHover = new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + setBackground(hoverBG); + clrBorders = skin.getClrBorders(); + } + + @Override + public void mouseExited(MouseEvent e) { + setBackground(defaultBG); + clrBorders = transparent; + } + }; + + hoverBG = skin.getClrHover(); + clrBorders = transparent; + } + + /** Enable hover effects for this label. */ + public void enableHover() { + addMouseListener(madHover); + } + + /** Disable hover effects for this label. */ + public void disableHover() { + removeMouseListener(madHover); + } + + @Override + protected void paintComponent(Graphics g) { + w = getWidth(); + h = getHeight(); + g.setColor(getBackground()); + g.fillRect(0, 0, w, h); + g.setColor(clrBorders); + g.drawRect(0, 0, w - 1, h - 1); + this.setFont(skin.getFont1().deriveFont(Font.PLAIN, (int) (h / 2))); + super.paintComponent(g); + } + } + + private class KeywordLabel extends JLabel { + public KeywordLabel(String s) { + super(s); + setToolTipText(s); + } + } + + /** + * Shows phase labels, handles repainting and on/off states. A PhaseLabel + * has "skip" and "active" states, meaning "this phase is (not) skipped" + * and "this is the current phase". + */ + public class PhaseLabel extends JLabel { + private boolean enabled = true; + private boolean active = false; + private boolean hover = false; + private Color hoverBG = AllZone.getSkin().getClrHover(); + + /** + * Shows phase labels, handles repainting and on/off states. A PhaseLabel + * has "skip" and "active" states, meaning "this phase is (not) skipped" + * and "this is the current phase". + * + * @param txt   Label text + */ + public PhaseLabel(String txt) { + super(txt); + this.setHorizontalTextPosition(CENTER); + this.setHorizontalAlignment(CENTER); + + addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (enabled) { enabled = false; } + else { enabled = true; } + } + @Override + public void mouseEntered(MouseEvent e) { + hover = true; + repaint(); + } + @Override + public void mouseExited(MouseEvent e) { + hover = false; + repaint(); + } + }); + } + + /** + * Determines whether play pauses at this phase or not. + * + * @param b   boolean, true if play pauses + */ + public void setEnabled(boolean b) { + enabled = b; + } + + /** + * Determines whether play pauses at this phase or not. + * + * @return boolean + */ + public boolean getEnabled() { + return enabled; + } + + /** + * Determines if this phase is the current phase (or not). + * + * @param b   boolean, true if phase is current + */ + public void setActive(boolean b) { + active = b; + } + + /** + * Determines if this phase is the current phase (or not). + * + * @return boolean + */ + public boolean getActive() { + return active; + } + + @Override + public void paintComponent(Graphics g) { + int w = getWidth(); + int h = getHeight(); + Color c; + + // Set color according to skip or active or hover state of label + if (hover) { + c = hoverBG; + } + else if (enabled) { + c = Color.green; + } + else { + c = Color.red; + } + + if (active && !hover) { + c = c.darker().darker(); + } + + // Center vertically and horizontally. Show border if active. + g.setColor(c); + g.fillRoundRect(1, 1, w - 2, h - 2, 5, 5); + + setFont(new Font("TAHOMA", Font.PLAIN, (int) (w / 2))); + g.setColor(Color.black); + super.paintComponent(g); + } + } +} diff --git a/src/main/java/forge/view/match/ViewHand.java b/src/main/java/forge/view/match/ViewHand.java new file mode 100644 index 00000000000..8dd4b713fda --- /dev/null +++ b/src/main/java/forge/view/match/ViewHand.java @@ -0,0 +1,171 @@ +package forge.view.match; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ScrollPaneConstants; +import javax.swing.SwingConstants; +import javax.swing.border.LineBorder; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.Card; +import forge.GuiDisplayUtil; +import forge.ImageCache; +import forge.control.match.ControlHand; + +import forge.gui.skin.FRoundedPanel; + +/** + * VIEW - Swing components for user hand. + * + */ +@SuppressWarnings("serial") +public class ViewHand extends JScrollPane { + private FRoundedPanel pnlContent; + private ControlHand control; + private List cardPanels = new ArrayList(); + + /** + * VIEW - Swing components for user hand. + */ + public ViewHand() { + super(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + + setOpaque(false); + getViewport().setOpaque(false); + getHorizontalScrollBar().setUnitIncrement(16); + setBorder(null); + + // After all components are in place, instantiate controller. + control = new ControlHand(this); + } + + /** @return ControlHand */ + public ControlHand getController() { + return control; + } + + /** + * Rebuilds layout of the hand panel. Card panels are removed, + * the height and card aspect ratio are used to set layout column width, + * then card panels are added to the fresh layout. + * + */ + // This design choice was made to allow the functionality of a JPanel + // while maintaining a scale-able view. Overridden paint methods could + // do this, but require heavy coding. + public void refreshLayout() { + // Remove all panels and recalculate layout scaling based on aspect ratio. + pnlContent = new FRoundedPanel(); + pnlContent.setBackground(AllZone.getSkin().getClrTheme()); + pnlContent.setCorners(new boolean[] {true, false, false, true}); + pnlContent.setLayout(new MigLayout("insets 3 10 3 10")); + pnlContent.setSize(getViewport().getSize()); + pnlContent.validate(); + this.setViewportView(pnlContent); + + int h = getViewport().getHeight() - 6; + pnlContent.setLayout(new MigLayout("align center")); + + // Re-insert panel instances. Possible memory management problem + // from re-adding pre-existing panels. Doublestrike 22-11-11 + cardPanels = new ArrayList(); + for (Card c : control.getCards()) { + CardPanel temp = new CardPanel(c); + cardPanels.add(temp); + pnlContent.add(temp, "h " + h + "px!, w " + (int) (h * 0.7) + "px!"); + control.addCardPanelListeners(temp); + } + // Notify system of change. + } + + /** + * + */ + public class CardPanel extends JPanel { + private static final long serialVersionUID = 509877513760665415L; + private Card card = null; + private Image img; + private int w, h = 0; + + /** + *

Constructor for CardPanel.

+ * + * @param c   Card object. + */ + public CardPanel(Card c) { + super(); + this.card = c; + this.img = ImageCache.getImage(card); + + setToolTipText("" + c.getName() + "
" + GuiDisplayUtil.formatCardType(c) + ""); + + // No image? + if (img == null) { + setBorder(new LineBorder(new Color(240, 240, 240), 1)); + setLayout(new MigLayout("wrap, insets 2, gap 0")); + setOpaque(true); + setBackground(new Color(200, 200, 200)); + + JLabel lblManaCost = new JLabel(c.getManaCost()); + lblManaCost.setHorizontalAlignment(SwingConstants.RIGHT); + + JLabel lblCardName = new JLabel(c.getName()); + lblCardName.setHorizontalAlignment(SwingConstants.CENTER); + + JLabel lblPowerToughness = new JLabel(""); + lblPowerToughness.setHorizontalAlignment(SwingConstants.RIGHT); + + if (c.isFaceDown()) { + lblCardName.setText("Morph"); + lblManaCost.setText(""); + } + + if (c.isCreature()) { + lblPowerToughness.setText(c.getNetAttack() + " / " + c.getNetDefense()); + } + + add(lblManaCost, "w 90%!"); + add(lblCardName, "w 90%!"); + add(lblPowerToughness, "w 90%!, gaptop 25"); + } + else { + setBorder(new LineBorder(Color.black, 1)); + w = img.getWidth(null); + h = img.getHeight(null); + } + } + + /** @return Card */ + public Card getCard() { + return this.card; + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + if (img != null) { + Graphics2D g2d = (Graphics2D) g; + g2d.drawImage(img, 0, 0, getWidth(), getHeight(), 0, 0, w, h, null); + } + else { + g.setColor(new Color(200, 200, 200)); + g.drawRect(1, 1, getWidth(), getHeight()); + } + } + } + + /** @return List */ + public List getCardPanels() { + return cardPanels; + } +} diff --git a/src/main/java/forge/view/match/ViewInput.java b/src/main/java/forge/view/match/ViewInput.java new file mode 100644 index 00000000000..c7e0686816e --- /dev/null +++ b/src/main/java/forge/view/match/ViewInput.java @@ -0,0 +1,79 @@ +package forge.view.match; + +import java.awt.Font; + +import javax.swing.JButton; +import javax.swing.JTextArea; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.control.match.ControlInput; +import forge.gui.skin.FButton; +import forge.gui.skin.FRoundedPanel; +import forge.gui.skin.FSkin; + +/** + * Assembles Swing components of input area. + * + */ +@SuppressWarnings("serial") +public class ViewInput extends FRoundedPanel { + private ControlInput control; + private JButton btnOK, btnCancel; + private JTextArea tarMessage; + private FSkin skin; + + /** + * Assembles UI for input area (buttons and message panel). + * + */ + public ViewInput() { + super(); + skin = AllZone.getSkin(); + setToolTipText("Input Area"); + setBackground(skin.getClrTheme()); + setForeground(skin.getClrText()); + setCorners(new boolean[] {false, false, false, true}); + setBorders(new boolean[] {true, false, false, true}); + + setLayout(new MigLayout("wrap 2, fill, insets 0, gap 0")); + + // Cancel button + btnCancel = new FButton("Cancel"); + btnOK = new FButton("OK"); + + tarMessage = new JTextArea(); + tarMessage.setOpaque(false); + tarMessage.setFocusable(false); + tarMessage.setEditable(false); + tarMessage.setLineWrap(true); + tarMessage.setForeground(skin.getClrText()); + tarMessage.setFont(skin.getFont1().deriveFont(Font.PLAIN, 12)); + add(tarMessage, "span 2 1, h 80%!, w 96%!, gapleft 2%, gaptop 1%"); + add(btnOK, "w 47%!, gapright 2%, gapleft 1%"); + add(btnCancel, "w 47%!, gapright 1%"); + + // After all components are in place, instantiate controller. + control = new ControlInput(this); + } + + /** @return ControlInput */ + public ControlInput getController() { + return control; + } + + /** @return JButton */ + public JButton getBtnOK() { + return btnOK; + } + + /** @return JButton */ + public JButton getBtnCancel() { + return btnCancel; + } + + /** @return JTextArea */ + public JTextArea getTarMessage() { + return tarMessage; + } +} diff --git a/src/main/java/forge/view/match/ViewTabber.java b/src/main/java/forge/view/match/ViewTabber.java new file mode 100644 index 00000000000..92a88ab8407 --- /dev/null +++ b/src/main/java/forge/view/match/ViewTabber.java @@ -0,0 +1,501 @@ +package forge.view.match; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.ScrollPaneConstants; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.border.MatteBorder; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.Constant; +import forge.MagicStack; +import forge.Player; +import forge.card.spellability.SpellAbilityStackInstance; +import forge.control.match.ControlTabber; +import forge.gui.MultiLineLabelUI; +import forge.gui.skin.FPanel; +import forge.gui.skin.FSkin; +import forge.view.toolbox.FVerticalTabPanel; + +/** + * Vertical tab panel for viewing stack, combat, etc. + * Unfortunately, cannot extend a Swing component, since + * vertical tabs are generated dynamically in the constructor. + * + */ +public class ViewTabber { + private List panelList; + private HashMap detailLabels; + + private ControlTabber control; + private FSkin skin; + + private FPanel pnlStack, pnlCombat, pnlConsole, pnlPlayers, pnlDev; + + private DevLabel lblMilling, lblHandView, lblLibraryView, lblGenerateMana, + lblSetupGame, lblTutor, lblCounterPermanent, lblTapPermanent, lblUntapPermanent, + lblUnlimitedLands, lblHumanLife; + + private FVerticalTabPanel vtpTabber; + + /** + * Assembles Swing components for tabber area in sidebar. + */ + public ViewTabber() { + skin = AllZone.getSkin(); + + // Assemble card pic viewer + panelList = new ArrayList(); + String constraints = "wrap, insets 0, gap 0"; + + pnlStack = new FPanel(); + pnlStack.setName("Stack"); + pnlStack.setOpaque(false); + pnlStack.setLayout(new MigLayout(constraints)); + pnlStack.setToolTipText("View Stack"); + panelList.add(pnlStack); + + pnlCombat = new FPanel(); + pnlCombat.setName("Combat"); + pnlCombat.setOpaque(false); + pnlCombat.setLayout(new MigLayout(constraints)); + pnlCombat.setToolTipText("View Combat"); + panelList.add(pnlCombat); + + pnlConsole = new FPanel(); + pnlConsole.setName("Log"); + pnlConsole.setOpaque(false); + pnlConsole.setLayout(new MigLayout(constraints)); + pnlConsole.setToolTipText("View Console"); + panelList.add(pnlConsole); + + pnlPlayers = new FPanel(); + pnlPlayers.setName("Players"); + pnlPlayers.setOpaque(false); + pnlPlayers.setLayout(new MigLayout(constraints)); + pnlPlayers.setToolTipText("Player List"); + panelList.add(pnlPlayers); + + pnlDev = new FPanel(); + pnlDev.setName("Dev"); + pnlDev.setOpaque(false); + pnlDev.setLayout(new MigLayout(constraints)); + pnlDev.setToolTipText("Developer Mode"); + + if (Constant.Runtime.DEV_MODE[0]) { + panelList.add(pnlDev); + } + + // Populate the various panels in the tabber. + populatePnlDev(); + populatePnlPlayers(); + populatePnlConsole(); + + vtpTabber = new FVerticalTabPanel(panelList); + vtpTabber.getContentPanel().setBorder(new MatteBorder(1, 0, 0, 1, skin.getClrBorders())); + + // After all components are in place, instantiate controller. + control = new ControlTabber(this); + } + + /** @return ControlTabber */ + public ControlTabber getController() { + return control; + } + + /** + * Removes and adds JTextAreas to stack panel, which briefly summarize the + * spell and allow mouseover. + * + */ + public void updateStack() { + final MagicStack stack = AllZone.getStack(); + final ViewTopLevel t = (ViewTopLevel) AllZone.getDisplay(); + + int count = 1; + JTextArea tar; + String txt, isOptional; + + pnlStack.removeAll(); + vtpTabber.showTab(0); + Font font = skin.getFont1().deriveFont(Font.PLAIN, 11); + Border border = new MatteBorder(0, 0, 1, 0, Color.black); + + for (int i = stack.size() - 1; 0 <= i; i--) { + isOptional = stack.peekAbility(i).isOptionalTrigger() && stack.peekAbility(i).getSourceCard().getController().isHuman() ? "(OPTIONAL) " : ""; + txt = (count++) + ". " + isOptional + stack.peekInstance(i).getStackDescription(); + tar = new JTextArea(txt); + tar.setToolTipText(txt); + tar.setOpaque(false); + tar.setBorder(border); + tar.setFont(font); + tar.setFocusable(false); + tar.setEditable(false); + tar.setLineWrap(true); + tar.setWrapStyleWord(true); + + final SpellAbilityStackInstance spell = stack.peekInstance(i); + + tar.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + t.getCardviewerController().showCard(spell.getSpellAbility().getSourceCard()); + System.out.println(); + } + }); + + pnlStack.add(tar, "w 100%!"); + } + } + + /** + * Removes and adds JTextAreas to combat panel, which briefly summarize the + * current combat situation. + * + * @param s   String message + */ + + // Note: Can (should?) be easily retrofitted to fit stack-style reporting: + // multiple text areas, with mouseovers highlighting combat cards. Doublestrike 06-11-11 + public void updateCombat(String s) { + pnlCombat.removeAll(); + vtpTabber.showTab(1); + + Font font = skin.getFont1().deriveFont(Font.PLAIN, 11); + Border border = new MatteBorder(1, 0, 0, 0, Color.black); + + JTextArea tar = new JTextArea(s); + tar.setOpaque(false); + tar.setBorder(border); + tar.setFont(font); + tar.setFocusable(false); + tar.setLineWrap(true); + pnlCombat.add(tar, "h 100%!, w 100%!"); + } + + /** Updates labels in the "player" panel, which display non-critical details about + * each player in the game. + * + * @param p0   Player obj + */ + public void updatePlayerLabels(Player p0) { + JLabel[] temp = detailLabels.get(p0); + temp[0].setText("Life: " + String.valueOf(p0.getLife())); + temp[1].setText("Max hand: " + String.valueOf(p0.getMaxHandSize())); + temp[2].setText("Draw per turn: " + String.valueOf(p0.getNumDrawnThisTurn())); + } + + /** @return FVerticalTabPanel */ + public FVerticalTabPanel getVtpTabber() { + return vtpTabber; + } + + /** @return FPanel */ + public FPanel getPnlStack() { + return pnlStack; + } + + /** @return FPanel */ + public FPanel getPnlCombat() { + return pnlCombat; + } + + /** @return FPanel */ + public FPanel getPnlPlayers() { + return pnlPlayers; + } + + /** @return FPanel */ + public FPanel getPnlDev() { + return pnlDev; + } + + /** @return DevLabel */ + public DevLabel getLblMilling() { + return lblMilling; + } + + /** @return DevLabel */ + public DevLabel getLblHandView() { + return lblHandView; + } + + /** @return DevLabel */ + public DevLabel getLblLibraryView() { + return lblLibraryView; + } + + /** @return DevLabel */ + public DevLabel getLblGenerateMana() { + return lblGenerateMana; + } + + /** @return DevLabel */ + public DevLabel getLblSetupGame() { + return lblSetupGame; + } + + /** @return DevLabel */ + public DevLabel getLblTutor() { + return lblTutor; + } + + /** @return DevLabel */ + public DevLabel getLblCounterPermanent() { + return lblCounterPermanent; + } + + /** @return DevLabel */ + public DevLabel getLblTapPermanent() { + return lblTapPermanent; + } + + /** @return DevLabel */ + public DevLabel getLblUntapPermanent() { + return lblUntapPermanent; + } + + /** @return DevLabel */ + public DevLabel getLblUnlimitedLands() { + return lblUnlimitedLands; + } + + /** @return DevLabel */ + public DevLabel getLblHumanLife() { + return lblHumanLife; + } + + /** @return HashMap */ + public HashMap getDetailLabels() { + return detailLabels; + } + + + /** Assembles Swing components for "players" panel. */ + private void populatePnlPlayers() { + List players = AllZone.getPlayersInGame(); + detailLabels = new HashMap(); + + for (Player p : players) { + // Create and store labels detailing various non-critical player info. + InfoLabel name = new InfoLabel(); + InfoLabel life = new InfoLabel(); + InfoLabel hand = new InfoLabel(); + InfoLabel draw = new InfoLabel(); + detailLabels.put(p, new JLabel[] {life, hand, draw}); + + // Set border on bottom label, and larger font on player name + draw.setBorder(new MatteBorder(0, 0, 1, 0, skin.getClrBorders())); + name.setText(p.getName()); + name.setFont(skin.getFont1().deriveFont(Font.PLAIN, 14)); + + // Add to "players" tab panel + String constraints = "w 97%!, gapleft 2%, gapbottom 1%"; + pnlPlayers.add(name, constraints); + pnlPlayers.add(life, constraints); + pnlPlayers.add(hand, constraints); + pnlPlayers.add(draw, constraints); + } + } + + /** Assembles Swing components for "dev mode" panel. */ + private void populatePnlDev() { + JPanel viewport = new JPanel(); + viewport.setLayout(new MigLayout("wrap, insets 0")); + viewport.setOpaque(false); + + JScrollPane jsp = new JScrollPane(viewport, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + jsp.setOpaque(false); + jsp.getViewport().setOpaque(false); + + pnlDev.add(jsp, "w 100%!, h 100%!"); + + lblMilling = new DevLabel("Loss by Milling: Enabled", "Loss by Milling: Disabled"); + lblHandView = new DevLabel("View Any Hand: Enabled", "View Any Hand: Disabled"); + lblLibraryView = new DevLabel("View Any Library: Enabled", "View Any Library: Disabled"); + lblGenerateMana = new DevLabel("Generate Mana"); + lblSetupGame = new DevLabel("Setup Game State"); + lblTutor = new DevLabel("Tutor for card"); + lblCounterPermanent = new DevLabel("Add Counter to Permanent"); + lblTapPermanent = new DevLabel("Tap Permanent"); + lblUntapPermanent = new DevLabel("Untap Permanent"); + lblUnlimitedLands = new DevLabel("Play Unlimited Lands This Turn"); + lblHumanLife = new DevLabel("Set Player Life"); + + String constraints = "w 100%!, gap 0 0 5px 0"; + viewport.add(lblMilling, constraints); + viewport.add(lblHandView, constraints); + viewport.add(lblLibraryView, constraints); + viewport.add(lblGenerateMana, constraints); + viewport.add(lblSetupGame, constraints); + viewport.add(lblTutor, constraints); + viewport.add(lblCounterPermanent, constraints); + viewport.add(lblTapPermanent, constraints); + viewport.add(lblUntapPermanent, constraints); + viewport.add(lblUnlimitedLands, constraints); + viewport.add(lblHumanLife, constraints); + } + + /** Assembles swing components for "console" panel. */ + private void populatePnlConsole() { + JLabel prompt = new JLabel("IN > "); + JTextField input = new JTextField(); + + JTextArea log = new JTextArea(); + log.setBackground(new Color(0, 0, 0, 20)); + log.setWrapStyleWord(true); + log.setLineWrap(true); + log.setWrapStyleWord(true); + log.setEditable(false); + log.setFocusable(false); + log.setForeground(skin.getClrText()); + log.setFont(skin.getFont1().deriveFont(Font.PLAIN, 12)); + log.setBorder(new MatteBorder(1, 0, 0, 0, skin.getClrBorders())); + + log.setText("Not implemented yet. Input codes entered above. " + + "Output data recorded below."); + + pnlConsole.setLayout(new MigLayout("insets 0, gap 0, wrap 2")); + + pnlConsole.add(prompt, "w 28%!, h 10%!, gapleft 2%, gaptop 2%, gapbottom 2%"); + pnlConsole.add(input, "w 68%!, gapright 2%, gaptop 2%, gapbottom 2%"); + pnlConsole.add(log, "w 94%!, h 80%!, gapleft 4%, span 2 1"); + } + + /** + * Labels that act as buttons which control dev mode functions. Labels + * are used to support multiline text. + * + */ + public class DevLabel extends JLabel { + private static final long serialVersionUID = 7917311680519060700L; + + private Color defaultBG = Color.green; + private Color hoverBG = skin.getClrHover(); + private boolean enabled; + private String enabledText, disabledText; + private int w, h, r, i; // Width, height, radius, insets (for paintComponent) + + /** + * Labels that act as buttons which control dev mode functions. Labels + * are used (instead of buttons) to support multiline text. + * + * Constructor for DevLabel which doesn't use enabled/disabled states; + * only single text string required. + * + * @param s0   String text/tooltip of label + */ + public DevLabel(String s0) { + this(s0, s0); + } + + /** + * Labels that act as buttons which control dev mode functions. Labels + * are used (instead of buttons) to support multiline text. + * + * This constructor for DevLabels empowers an "enable" state that + * displays them as green (enabled) or red (disabled). + * + * @param en0   String text/tooltip of label, in "enabled" state + * @param dis0   String text/tooltip of label, in "disabled" state + */ + public DevLabel(String en0, String dis0) { + super(); + this.setUI(MultiLineLabelUI.getLabelUI()); + this.setFont(skin.getFont1().deriveFont(Font.PLAIN, 11)); + this.setBorder(new EmptyBorder(5, 5, 5, 5)); + this.enabledText = en0; + this.disabledText = dis0; + this.r = 6; // Radius (for paintComponent) + this.i = 2; // Insets (for paintComponent) + setEnabled(true); + + this.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + setBackground(hoverBG); + } + + @Override + public void mouseExited(MouseEvent e) { + setBackground(defaultBG); + } + }); + } + + /** + * Changes enabled state per boolean parameter, automatically updating + * text string and background color. + * + * @param b   boolean + */ + public void setEnabled(boolean b) { + String s; + if (b) { + defaultBG = Color.green; + s = enabledText; + } + else { + defaultBG = Color.red; + s = disabledText; + } + enabled = b; + this.setText(s); + this.setToolTipText(s); + this.setBackground(defaultBG); + } + + /** @return boolean */ + public boolean getEnabled() { + return enabled; + } + + /** + * In many cases, a DevLabel state will just be toggling a boolean. + * This method sets up and evaluates the condition and toggles as appropriate. + * + */ + public void toggleEnabled() { + if (enabled) { + setEnabled(false); + } + else { + setEnabled(true); + } + } + + @Override + protected void paintComponent(Graphics g) { + w = getWidth(); + h = getHeight(); + g.setColor(this.getBackground()); + g.fillRoundRect(i, i, w - 2 * i, h - i, r, r); + super.paintComponent(g); + } + } + + /** A quick JLabel for info in "players" panel, to consolidate styling. */ + @SuppressWarnings("serial") + private class InfoLabel extends JLabel { + public InfoLabel() { + super(); + this.setFont(skin.getFont1().deriveFont(Font.PLAIN, 11)); + this.setForeground(skin.getClrText()); + } + } +} diff --git a/src/main/java/forge/view/match/ViewTopLevel.java b/src/main/java/forge/view/match/ViewTopLevel.java new file mode 100644 index 00000000000..a9dc949f574 --- /dev/null +++ b/src/main/java/forge/view/match/ViewTopLevel.java @@ -0,0 +1,453 @@ +package forge.view.match; + +import java.awt.Graphics; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JTextArea; + +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.Display; +import forge.MyButton; +import forge.Player; +import forge.Singletons; +import forge.control.ControlMatchUI; +import forge.control.match.ControlCardviewer; +import forge.control.match.ControlDock; +import forge.control.match.ControlField; +import forge.control.match.ControlHand; +import forge.control.match.ControlInput; +import forge.control.match.ControlTabber; +import forge.gui.skin.FPanel; +import forge.properties.ForgePreferences; + +/** + * - Lays out battle, sidebar, user areas in locked % vals and repaints + * as necessary.
+ * - Instantiates top-level controller for match UI.
+ * - Has access methods for all child controllers
+ * - Implements Display interface used in singleton pattern + * + */ + +@SuppressWarnings("serial") +public class ViewTopLevel extends FPanel implements Display { + private ViewAreaSidebar areaSidebar; + private ViewAreaBattlefield areaBattle; + private ViewAreaUser areaUser; + + private int w, h; + private static final double SIDEBAR_W_PCT = 0.16; + private static final double USER_H_PCT = 0.27; + private ControlMatchUI control; + + /** + * - Lays out battle, sidebar, user areas in locked % vals and repaints + * as necessary.
+ * - Instantiates top-level controller for match UI.
+ * - Has access methods for all child controllers
+ * - Implements Display interface used in singleton pattern + * + */ + public ViewTopLevel() { + super(); + + // Set properties + setOpaque(false); + setBGTexture(AllZone.getSkin().getTexture1()); + setBGImg(AllZone.getSkin().getMatchBG()); + setLayout(null); + + // areaBattle: holds fields for all players in match. + areaBattle = new ViewAreaBattlefield(); + areaBattle.setBounds(0, 0, getWidth() / 2, getHeight() / 2); + add(areaBattle); + + // areaSidebar: holds card detail, info tabber. + areaSidebar = new ViewAreaSidebar(); + areaSidebar.setBounds(0, 0, getWidth() / 2, getHeight() / 2); + add(areaSidebar); + + // areaUser: holds input, hand, dock. + areaUser = new ViewAreaUser(); + areaUser.setBounds(0, 0, getWidth() / 2, getHeight() / 2); + add(areaUser); + + // After all components are in place, instantiate controller. + control = new ControlMatchUI(this); + } + + /** + * The null layout used in MatchFrame has zones split into percentage values + * to prevent child components pushing around the parent layout. A single + * instance of BodyPanel holds these zones, and handles the percentage resizing. + * + * @param g   Graphics object + */ + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + w = getWidth(); + h = getHeight(); + + // Set % boundaries of layout control layer + areaBattle.setBounds(0, 0, (int) (w * (1 - SIDEBAR_W_PCT)), + (int) (h * (1 - USER_H_PCT))); + areaSidebar.setBounds((int) (w * (1 - SIDEBAR_W_PCT)), 0, + (int) (w * SIDEBAR_W_PCT), h); + areaUser.setBounds(0, (int) (h * (1 - USER_H_PCT)), + (int) (w * (1 - SIDEBAR_W_PCT)), (int) (h * USER_H_PCT)); + areaBattle.validate(); + } + + + //========== Retrieval functions for easier interation with children panels. + /** @return ViewAreaSidebar */ + public ViewAreaSidebar getAreaSidebar() { + return areaSidebar; + } + + /** @return ViewAreaBattlefield */ + public ViewAreaBattlefield getAreaBattlefield() { + return areaBattle; + } + + /** @return ViewAreaUser */ + public ViewAreaUser getAreaUser() { + return areaUser; + } + + /** + * Retrieves top level controller (actions, observers, etc.) + * for this UI. + * + * @return {@link java.util.List} + */ + public ControlMatchUI getController() { + return control; + } + + /** @return ControlCardviewer */ + public ControlCardviewer getCardviewerController() { + return areaSidebar.getCardviewer().getController(); + } + + /** @return ControlTabber */ + public ControlTabber getTabberController() { + return areaSidebar.getTabber().getController(); + } + + /** @return ControlInput */ + public ControlInput getInputController() { + return areaUser.getPnlInput().getController(); + } + + /** @return ControlHand */ + public ControlHand getHandController() { + return areaUser.getPnlHand().getController(); + } + + /** @return ControlDock */ + public ControlDock getDockController() { + return areaUser.getPnlDock().getController(); + } + + /** @return List */ + public List getFieldControllers() { + List fields = areaBattle.getFields(); + List controllers = new ArrayList(); + + for (ViewField f : fields) { + controllers.add(f.getController()); + } + + return controllers; + } + + /** @return List */ + public List getFieldViews() { + return areaBattle.getFields(); + } + + //========== Input panel and human hand retrieval functions + // Also due to be deprecated. Access should be handled by child component + // view and/or controller. + + /** @return JTextArea Message area of input panel. */ + public JTextArea getPnlMessage() { + return areaUser.getPnlInput().getTarMessage(); + } + + /** @return ViewHand Retrieves player hand panel. */ + public ViewHand getPnlHand() { + return areaUser.getPnlHand(); + } + + //========== The following methods are required by the Display interface. + // To fit the UI MVC architecture with the previous "mixed nuts" architecture, + // these methods are temporarily required. However, since they are a mix of + // view and control functionalities, they are ALL on the "to-be-deprecated" list. + // The Display interface is to be reworked, eventually, with a better name + // and with interfaces for every screen in the entire UI. + // Doublestrike 23-10-11 + + /** + * Required by Display interface. + * Due to be deprecated in favor of more semantic getBtnCancel(). + * + * @return MyButton + */ + public MyButton getButtonCancel() { + MyButton cancel = new MyButton() { + public void select() { + getInputController().getInputControl().selectButtonCancel(); + } + + public boolean isSelectable() { + return areaUser.getPnlInput().getBtnCancel().isEnabled(); + } + + public void setSelectable(final boolean b) { + areaUser.getPnlInput().getBtnCancel().setEnabled(b); + } + + public String getText() { + return areaUser.getPnlInput().getBtnCancel().getText(); + } + + public void setText(final String text) { + areaUser.getPnlInput().getBtnCancel().setText(text); + } + + public void reset() { + areaUser.getPnlInput().getBtnCancel().setText("Cancel"); + } + }; + return cancel; + } + + /** + * Required by Display interface. + * Due to be deprecated in favor of more semantic getBtnOK(). + * + * @return MyButton + */ + public MyButton getButtonOK() { + MyButton ok = new MyButton() { + public void select() { + getInputController().getInputControl().selectButtonOK(); + } + + public boolean isSelectable() { + return areaUser.getPnlInput().getBtnOK().isEnabled(); + } + + public void setSelectable(final boolean b) { + areaUser.getPnlInput().getBtnOK().setEnabled(b); + } + + public String getText() { + return areaUser.getPnlInput().getBtnOK().getText(); + } + + public void setText(final String text) { + areaUser.getPnlInput().getBtnOK().setText(text); + } + + public void reset() { + areaUser.getPnlInput().getBtnOK().setText("OK"); + } + }; + + return ok; + } + + /** + * Required by Display interface. + * Due to be deprecated: is now and should be handled by ControlMatchUI. + * + * @param s   Message string + */ + public void showMessage(String s) { + getPnlMessage().setText(s); + } + + /** + * Required by Display interface. + * Due to be deprecated: should be handled by ControlMatchUI. + * + * @param s   Message string + */ + public void showCombat(String s) { + getTabberController().getView().updateCombat(s); + } + + /** + * Required by Display interface. + * Due to be deprecated: should be handled by a control class, and + * poorly named; "decking" == "milling" in preferences, same terminology + * should be used throughout project for obvious reasons. Unless "decking" + * is already the correct terminology, in which case, everything else is + * poorly named. + * + * @return boolean + */ + public boolean canLoseByDecking() { + return Constant.Runtime.MILL[0]; + } + + /** + *

loadPrefs.

+ * Required by Display interface. + * Due to be deprecated: will be handled by ControlMatchUI. + * + * + * @return boolean. + */ + public final boolean loadPrefs() { + ForgePreferences fp = Singletons.getModel().getPreferences(); + List fieldViews = getFieldViews(); + + // AI field is at index [0] + fieldViews.get(0).getLblUpkeep().setEnabled(fp.isbAIUpkeep()); + fieldViews.get(0).getLblDraw().setEnabled(fp.isbAIDraw()); + fieldViews.get(0).getLblEndTurn().setEnabled(fp.isbAIEOT()); + fieldViews.get(0).getLblBeginCombat().setEnabled(fp.isbAIBeginCombat()); + fieldViews.get(0).getLblEndCombat().setEnabled(fp.isbAIEndCombat()); + + // Human field is at index [1] + fieldViews.get(1).getLblUpkeep().setEnabled(fp.isbHumanUpkeep()); + fieldViews.get(1).getLblDraw().setEnabled(fp.isbHumanDraw()); + fieldViews.get(1).getLblEndTurn().setEnabled(fp.isbHumanEOT()); + fieldViews.get(1).getLblBeginCombat().setEnabled(fp.isbHumanBeginCombat()); + fieldViews.get(1).getLblEndCombat().setEnabled(fp.isbHumanEndCombat()); + + return true; + } + + /** + *

savePrefs.

+ * Required by Display interface. + * Due to be deprecated: will be handled by ControlMatchUI. + * Also, this functionality is already performed elsewhere in the code base. + * Furthermore, there's a strong possibility this will need bo be broken + * down and can't be in one place - e.g. keyboard shortcuts are + * saved after they're edited. + * + * @return a boolean. + */ + public final boolean savePrefs() { + ForgePreferences fp = Singletons.getModel().getPreferences(); + List fieldViews = getFieldViews(); + + // AI field is at index [0] + fp.setbAIUpkeep(fieldViews.get(0).getLblUpkeep().getEnabled()); + fp.setbAIDraw(fieldViews.get(0).getLblDraw().getEnabled()); + fp.setbAIEOT(fieldViews.get(0).getLblEndTurn().getEnabled()); + fp.setbAIBeginCombat(fieldViews.get(0).getLblBeginCombat().getEnabled()); + fp.setbAIEndCombat(fieldViews.get(0).getLblEndCombat().getEnabled()); + + // Human field is at index [1] + fp.setbHumanUpkeep(fieldViews.get(1).getLblUpkeep().getEnabled()); + fp.setbHumanDraw(fieldViews.get(1).getLblDraw().getEnabled()); + fp.setbHumanEOT(fieldViews.get(1).getLblEndTurn().getEnabled()); + fp.setbHumanBeginCombat(fieldViews.get(1).getLblBeginCombat().getEnabled()); + fp.setbHumanEndCombat(fieldViews.get(1).getLblEndCombat().getEnabled()); + + Constant.Runtime.MILL[0] = this.getTabberController().getView().getLblMilling().getEnabled(); + Constant.Runtime.HANDVIEW[0] = this.getTabberController().getView().getLblHandView().getEnabled(); + Constant.Runtime.LIBRARYVIEW[0] = this.getTabberController().getView().getLblLibraryView().getEnabled(); + + fp.setMillingLossCondition(Constant.Runtime.MILL[0]); + fp.setHandView(Constant.Runtime.HANDVIEW[0]); + fp.setLibraryView(Constant.Runtime.LIBRARYVIEW[0]); + return true; + } + + /** + *

stopAtPhase.

+ * Required by Display interface. + * Due to be deprecated: should be handled by control class. + * + * @param turn   Player object...more info needed + * @param phase   A string...more info needed + * @return a boolean. + */ + public final boolean stopAtPhase(final Player turn, final String phase) { + List fieldControllers = getFieldControllers(); + + // AI field is at index [0] + if (turn.isComputer()) { + if (phase.equals(Constant.Phase.END_OF_TURN)) { + return fieldControllers.get(0).getView().getLblEndTurn().getEnabled(); + } else if (phase.equals(Constant.Phase.UPKEEP)) { + return fieldControllers.get(0).getView().getLblUpkeep().getEnabled(); + } else if (phase.equals(Constant.Phase.DRAW)) { + return fieldControllers.get(0).getView().getLblDraw().getEnabled(); + } else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) { + return fieldControllers.get(0).getView().getLblBeginCombat().getEnabled(); + } else if (phase.equals(Constant.Phase.COMBAT_END)) { + return fieldControllers.get(0).getView().getLblEndCombat().getEnabled(); + } + } + // Human field is at index [1] + else { + if (phase.equals(Constant.Phase.END_OF_TURN)) { + return fieldControllers.get(1).getView().getLblEndTurn().getEnabled(); + } else if (phase.equals(Constant.Phase.UPKEEP)) { + return fieldControllers.get(1).getView().getLblUpkeep().getEnabled(); + } else if (phase.equals(Constant.Phase.DRAW)) { + return fieldControllers.get(1).getView().getLblDraw().getEnabled(); + } else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) { + return fieldControllers.get(1).getView().getLblBeginCombat().getEnabled(); + } else if (phase.equals(Constant.Phase.COMBAT_END)) { + return fieldControllers.get(1).getView().getLblEndCombat().getEnabled(); + } + } + return true; + } + + /** + * Required by display interface. + * Due to be deprecated: handled by control class. + * + * @return a {@link forge.Card} object. + */ + public final Card getCard() { + System.err.println("ViewTopLevel > getCard: Something should happen here!"); + new Exception().printStackTrace(); + return null; //new Card(); //detail.getCard(); + } + + /** + * Required by display interface. + * Due to be deprecated: already handled by controller class. + * + * @param card   a card + */ + public final void setCard(final Card card) { + System.err.println("ViewTopLevel > getCard: Something should happen here!"); + new Exception().printStackTrace(); + } + + /** + * Required by Display interface. + * Assigns damage to multiple blockers. + * Due to be deprecated: Gui_MultipleBlockers4 says "very hacky"; needs + * rewriting. + * + * @param attacker   Card object + * @param blockers   Card objects in CardList form + * @param damage   int + */ + public final void assignDamage(final Card attacker, final CardList blockers, final int damage) { + if (damage <= 0) { + return; + } + + //new Gui_MultipleBlockers4(attacker, blockers, damage, this); + } +} diff --git a/src/main/java/forge/view/swing/ApplicationView.java b/src/main/java/forge/view/swing/ApplicationView.java index 85f8ba43c06..b4911d38f39 100644 --- a/src/main/java/forge/view/swing/ApplicationView.java +++ b/src/main/java/forge/view/swing/ApplicationView.java @@ -97,7 +97,7 @@ public class ApplicationView implements FView { final ForgePreferences preferences = model.getPreferences(); OldGuiNewGame.getUseLAFFonts().setSelected(preferences.isLafFonts()); - // newGuiCheckBox.setSelected(preferences.newGui); + OldGuiNewGame.getOldGuiCheckBox().setSelected(preferences.isOldGui()); OldGuiNewGame.getSmoothLandCheckBox().setSelected(preferences.isStackAiLand()); OldGuiNewGame.getDevModeCheckBox().setSelected(preferences.isDeveloperMode()); OldGuiNewGame.getCardOverlay().setSelected(preferences.isCardOverlay()); diff --git a/src/main/java/forge/view/swing/OldGuiNewGame.java b/src/main/java/forge/view/swing/OldGuiNewGame.java index 30ce46b684e..eae858bfb97 100644 --- a/src/main/java/forge/view/swing/OldGuiNewGame.java +++ b/src/main/java/forge/view/swing/OldGuiNewGame.java @@ -59,6 +59,7 @@ import forge.ImageCache; import forge.MyRandom; import forge.PlayerType; import forge.Singletons; +import forge.control.ControlAllUI; import forge.deck.Deck; import forge.deck.DeckGeneration; import forge.deck.DeckManager; @@ -124,8 +125,8 @@ public class OldGuiNewGame extends JFrame { // @SuppressWarnings("unused") // titledBorder2 - /** Constant newGuiCheckBox. */ - // private static JCheckBox newGuiCheckBox = new JCheckBox("", true); + /** Constant oldGuiCheckBox. */ + private static JCheckBox oldGuiCheckBox = new JCheckBox("", false); /** Constant smoothLandCheckBox. */ private static JCheckBox smoothLandCheckBox = new JCheckBox("", false); /** Constant devModeCheckBox. */ @@ -556,7 +557,7 @@ public class OldGuiNewGame extends JFrame { ForgeProps.getLocalized(NewConstants.Lang.OldGuiNewGame.NewGameText.SETTINGS)); this.jPanel3.setLayout(new MigLayout("align center")); - // newGuiCheckBox.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.NEW_GUI)); + oldGuiCheckBox.setText(ForgeProps.getLocalized(NewConstants.Lang.OldGuiNewGame.NewGameText.OLD_GUI)); OldGuiNewGame.getSmoothLandCheckBox().setText( ForgeProps.getLocalized(NewConstants.Lang.OldGuiNewGame.NewGameText.AI_LAND)); @@ -639,7 +640,7 @@ public class OldGuiNewGame extends JFrame { this.getContentPane().add(this.jPanel3, "span 2, grow"); - // jPanel3.add(newGuiCheckBox, "wrap"); + jPanel3.add(oldGuiCheckBox, "wrap"); this.jPanel3.add(OldGuiNewGame.getSmoothLandCheckBox(), "wrap"); this.jPanel3.add(OldGuiNewGame.getDevModeCheckBox(), "wrap"); this.jPanel3.add(OldGuiNewGame.getUpldDrftCheckBox(), "wrap"); @@ -865,15 +866,19 @@ public class OldGuiNewGame extends JFrame { } } // else - // DO NOT CHANGE THIS ORDER, GuiDisplay needs to be created before cards - // are added - // Constant.Runtime.DevMode[0] = devModeCheckBox.isSelected(); + Constant.Runtime.OLDGUI[0] = oldGuiCheckBox.isSelected(); - // if (newGuiCheckBox.isSelected()) - AllZone.setDisplay(new GuiDisplay()); - // else AllZone.setDisplay(new GuiDisplay3()); + if (Constant.Runtime.OLDGUI[0]) { + AllZone.setDisplay(new GuiDisplay()); + } + else { + ControlAllUI ui = new ControlAllUI(); + AllZone.setDisplay(ui.getMatchView()); + ui.getMatchController().initMatch(); + } Constant.Runtime.SMOOTH[0] = OldGuiNewGame.getSmoothLandCheckBox().isSelected(); + //Constant.Runtime.DEV_MODE[0] = OldGuiNewGame.devModeCheckBox.isSelected(); AllZone.getGameAction().newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]); AllZone.getDisplay().setVisible(true); @@ -1714,7 +1719,7 @@ public class OldGuiNewGame extends JFrame { final ForgePreferences preferences = Singletons.getModel().getPreferences(); preferences.setLaf(UIManager.getLookAndFeel().getClass().getName()); preferences.setLafFonts(OldGuiNewGame.getUseLAFFonts().isSelected()); - // preferences.newGui = newGuiCheckBox.isSelected(); + preferences.setOldGui(oldGuiCheckBox.isSelected()); preferences.setStackAiLand(OldGuiNewGame.getSmoothLandCheckBox().isSelected()); preferences.setMillingLossCondition(Constant.Runtime.MILL[0]); preferences.setDeveloperMode(Constant.Runtime.DEV_MODE[0]); @@ -2000,4 +2005,8 @@ public class OldGuiNewGame extends JFrame { // name. } + /** @return JCheckBox */ + public static JCheckBox getOldGuiCheckBox() { + return OldGuiNewGame.oldGuiCheckBox; + } } diff --git a/src/main/java/forge/view/swing/SplashFrame.java b/src/main/java/forge/view/swing/SplashFrame.java index ffb0f97f6b6..3c88feb4fc5 100644 --- a/src/main/java/forge/view/swing/SplashFrame.java +++ b/src/main/java/forge/view/swing/SplashFrame.java @@ -69,7 +69,7 @@ public class SplashFrame extends JFrame { this.setUndecorated(true); // Set preferred JFrame properties. - final ImageIcon bgIcon = skin.getSplash(); + final ImageIcon bgIcon = skin.getSplashBG(); final int splashWidthPx = bgIcon.getIconWidth(); final int splashHeightPx = bgIcon.getIconHeight(); diff --git a/src/main/java/forge/view/swing/WinLoseFrame.java b/src/main/java/forge/view/swing/WinLoseFrame.java index 9759aea282e..d3b622b3519 100644 --- a/src/main/java/forge/view/swing/WinLoseFrame.java +++ b/src/main/java/forge/view/swing/WinLoseFrame.java @@ -17,6 +17,7 @@ import javax.swing.border.AbstractBorder; import net.miginfocom.swing.MigLayout; import forge.AllZone; +import forge.Constant; import forge.Phase; import forge.Player; import forge.gui.skin.FButton; @@ -24,6 +25,7 @@ import forge.gui.skin.FPanel; import forge.properties.ForgeProps; import forge.properties.NewConstants.Lang.WinLoseFrame.WinLoseText; import forge.quest.data.QuestMatchState; +import forge.view.match.ViewTopLevel; /** *

@@ -88,7 +90,7 @@ public class WinLoseFrame extends JFrame { // Place all content in FPanel final FPanel contentPanel = new FPanel(new MigLayout("wrap, fill, insets 20 0 10 10")); - contentPanel.setBGImg(AllZone.getSkin().getTexture1()); + contentPanel.setBGTexture(AllZone.getSkin().getTexture1()); contentPanel.setBorder(new WinLoseBorder()); this.getContentPane().add(contentPanel); @@ -271,8 +273,17 @@ public class WinLoseFrame extends JFrame { * @return {@link javax.swing.JFrame} display frame */ final JFrame closeWinLoseFrame() { + JFrame frame; + // Issue 147 - keep battlefield up following win/loss - final JFrame frame = (JFrame) AllZone.getDisplay(); + if (Constant.Runtime.OLDGUI[0]) { + frame = (JFrame) AllZone.getDisplay(); + } + else { + ViewTopLevel temp = (ViewTopLevel) AllZone.getDisplay(); + frame = (JFrame) temp.getParent().getParent().getParent().getParent(); + } + frame.dispose(); frame.setEnabled(true); this.dispose(); diff --git a/src/main/java/forge/view/toolbox/CardDetailPanel.java b/src/main/java/forge/view/toolbox/CardDetailPanel.java new file mode 100644 index 00000000000..83cf97fb67e --- /dev/null +++ b/src/main/java/forge/view/toolbox/CardDetailPanel.java @@ -0,0 +1,382 @@ +package forge.view.toolbox; + +import java.awt.Color; +import java.awt.Font; +import java.util.Iterator; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.ScrollPaneConstants; +import javax.swing.SwingConstants; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.Card; +import forge.CardContainer; +import forge.Constant.Zone; +import forge.Counters; +import forge.GameEntity; +import forge.GuiDisplayUtil; +import forge.gui.skin.FSkin; + +/** Shows details of card if moused over. */ +@SuppressWarnings("serial") +public class CardDetailPanel extends JPanel implements CardContainer { + private Card card = null; + private JLabel lblCardName, lblCardCost, lblCardType, + lblCardID, lblCardPT, lblCardSet, lblCardDmg1, lblCardDmg2; + private JTextArea tarInfo; + private static final Color PURPLE = new Color(14381203); + + private FSkin skin; + private Font f; + private Color foreground; + private Color zebra; + + /** */ + public CardDetailPanel() { + super(); + setLayout(new MigLayout("wrap, insets 0, gap 0")); + + // Styles used in DetailLabel class + skin = AllZone.getSkin(); + f = skin.getFont1().deriveFont(Font.PLAIN, 11); + foreground = skin.getClrText(); + zebra = skin.getClrZebra(); + + // DetailLabel instances (true = zebra stripe) + lblCardName = new DetailLabel(); + lblCardCost = new DetailLabel(); + lblCardType = new DetailLabel(); + lblCardPT = new DetailLabel(); + lblCardDmg1 = new DetailLabel(); + lblCardDmg2 = new DetailLabel(); + lblCardID = new DetailLabel(); + lblCardSet = new DetailLabel(); + + // Info text area + tarInfo = new JTextArea(); + tarInfo.setFont(f); + tarInfo.setLineWrap(true); + tarInfo.setWrapStyleWord(true); + tarInfo.setFocusable(false); + + add(lblCardName, "w 100%!"); + add(lblCardCost, "w 100%!"); + add(lblCardType, "w 100%!"); + add(lblCardPT, "w 100%!"); + add(lblCardDmg1, "w 100%!"); + add(lblCardDmg2, "w 100%!"); + add(lblCardID, "w 100%!"); + add(lblCardSet, "w 100%!"); + add(new JScrollPane(tarInfo, + ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER), "w 100%!, h 45%!, south"); + setCard(card); + } + + /** + * A fairly long method testing conditions determining which details to show. + * + * @param c   Card obj + */ + public void setCard(Card c) { + lblCardName.setText(" "); + lblCardCost.setText(" "); + lblCardType.setText(" "); + lblCardPT.setText(" "); + lblCardDmg1.setText(" "); + lblCardDmg2.setText(" "); + lblCardID.setText(" "); + lblCardSet.setText(" "); + lblCardSet.setOpaque(true); + lblCardSet.setBorder(null); + tarInfo.setText(" "); + + this.card = c; + if (card == null) { + return; + } + + boolean faceDown = card.isFaceDown() && card.getController() != AllZone.getHumanPlayer(); + + if (!faceDown) { + lblCardName.setText(card.getName()); + if (!card.getManaCost().equals("") && !card.isLand()) { + lblCardCost.setText(card.getManaCost()); + } + } + else { + lblCardName.setText("Morph"); + } + + if (!faceDown) { + lblCardType.setText(GuiDisplayUtil.formatCardType(card)); + } + else { + lblCardType.setText("Creature"); + } + + if (card.isCreature()) { + lblCardPT.setText(card.getNetAttack() + " / " + card.getNetDefense()); + lblCardDmg1.setText("Damage: " + card.getDamage()); + lblCardDmg2.setText("Assigned Damage: " + card.getTotalAssignedDamage()); + } + if (card.isPlaneswalker()) { + lblCardDmg2.setText("Assigned Damage: " + card.getTotalAssignedDamage()); + } + + lblCardID.setText("Card ID " + card.getUniqueNumber()); + + // Rarity and set of a face down card should not be visible to the opponent + if (!card.isFaceDown() || card.getController().isHuman()) { + String s = card.getCurSetCode(); + if (s.equals("")) { + lblCardSet.setText("---"); + } + else { + lblCardSet.setText(s); + } + } + + String csr = card.getCurSetRarity(); + if (csr.equals("Common") || csr.equals("Land")) { + lblCardSet.setBackground(Color.BLACK); + lblCardSet.setForeground(Color.WHITE); + //lblCardSet.setBorder(BorderFactory.createLineBorder(Color.WHITE)); + } else if (csr.equals("Uncommon")) { + lblCardSet.setBackground(Color.LIGHT_GRAY); + lblCardSet.setForeground(Color.BLACK); + //lblCardSet.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + } else if (csr.equals("Rare")) { + lblCardSet.setBackground(Color.YELLOW); + lblCardSet.setForeground(Color.BLACK); + //lblCardSet.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + } else if (csr.equals("Mythic")) { + lblCardSet.setBackground(Color.RED); + lblCardSet.setForeground(Color.BLACK); + //lblCardSet.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + } else if (csr.equals("Special")) { + // "Timeshifted" or other Special Rarity Cards + lblCardSet.setBackground(PURPLE); + lblCardSet.setForeground(Color.BLACK); + //lblCardSet.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + } + + // Fill the card text + StringBuilder str = new StringBuilder(); + + // Token + if (card.isToken()) { str.append("Token"); } + + if (!faceDown) { + if (str.length() != 0) { str.append("\n"); } + String text = card.getText(); + + //LEVEL [0-9]+-[0-9]+ + //LEVEL [0-9]+\+ + String regex = "LEVEL [0-9]+-[0-9]+ "; + text = text.replaceAll(regex, "$0\r\n"); + + regex = "LEVEL [0-9]+\\+ "; + text = text.replaceAll(regex, "\r\n$0\r\n"); + + // Displays keywords that have dots in them a little better: + regex = "\\., "; + text = text.replaceAll(regex, ".\r\n"); + + str.append(text); + } + + // Phasing + if (card.isPhasedOut()) { + if (str.length() != 0) { str.append("\n"); } + str.append("Phased Out"); + } + + // Counter text + Counters[] counters = Counters.values(); + for (Counters counter : counters) { + if (card.getCounters(counter) != 0) { + if (str.length() != 0) { str.append("\n"); } + str.append(counter.getName() + " counters: "); + str.append(card.getCounters(counter)); + } + } + + // Regeneration Shields + int regenShields = card.getShield(); + if (regenShields > 0) { + if (str.length() != 0) { str.append("\n"); } + str.append("Regeneration Shield(s): ").append(regenShields); + } + + // Damage Prevention + int preventNextDamage = card.getPreventNextDamage(); + if (preventNextDamage > 0) { + str.append("\n"); + str.append("Prevent the next ").append(preventNextDamage).append(" damage that would be dealt to "); + str.append(card.getName()).append(" it this turn."); + } + + // Top revealed + if (card.hasKeyword("Play with the top card of your library revealed.") && card.getController() != null + && !card.getController().getZone(Zone.Library).isEmpty()) { + str.append("\r\nTop card: "); + str.append(card.getController().getCardsIn(Zone.Library, 1)); + } + + // Chosen type + if (card.getChosenType() != "") { + if (str.length() != 0) { str.append("\n"); } + str.append("(chosen type: "); + str.append(card.getChosenType()); + str.append(")"); + } + + // Chosen color + if (!card.getChosenColor().isEmpty()) { + if (str.length() != 0) { str.append("\n"); } + str.append("(chosen colors: "); + str.append(card.getChosenColor()); + str.append(")"); + } + + // Named card + if (card.getNamedCard() != "") { + if (str.length() != 0) { str.append("\n"); } + str.append("(named card: "); + str.append(card.getNamedCard()); + str.append(")"); + } + + // Equipping + if (card.getEquipping().size() > 0) { + if (str.length() != 0) { str.append("\n"); } + str.append("=Equipping "); + str.append(card.getEquipping().get(0)); + str.append("="); + } + + // Equipped by + if (card.getEquippedBy().size() > 0) { + if (str.length() != 0) { str.append("\n"); } + str.append("=Equipped by "); + for (Iterator it = card.getEquippedBy().iterator(); it.hasNext();) { + str.append(it.next()); + if (it.hasNext()) { str.append(", "); } + } + str.append("="); + } + + // Enchanting + GameEntity entity = card.getEnchanting(); + if (entity != null) { + if (str.length() != 0) { str.append("\n"); } + str.append("*Enchanting "); + + if (entity instanceof Card) { + Card temp = (Card) entity; + if (temp.isFaceDown() && temp.getController().isComputer()) { + str.append("Morph ("); + str.append(card.getUniqueNumber()); + str.append(")"); + } + else { + str.append(entity); + } + } + else { + str.append(entity); + } + str.append("*"); + } + + // Enchanted by + if (card.getEnchantedBy().size() > 0) { + if (str.length() != 0) { str.append("\n"); } + str.append("*Enchanted by "); + for (Iterator it = card.getEnchantedBy().iterator(); it.hasNext();) { + str.append(it.next()); + if (it.hasNext()) { str.append(", "); } + } + str.append("*"); + } + + // Controlling + if (card.getGainControlTargets().size() > 0) { + if (str.length() != 0) { str.append("\n"); } + str.append("+Controlling: "); + for (Iterator it = card.getGainControlTargets().iterator(); it.hasNext();) { + str.append(it.next()); + if (it.hasNext()) { str.append(", "); } + } + str.append("+"); + } + + // Cloned via + if (card.getCloneOrigin() != null) { + if (str.length() != 0) { str.append("\n"); } + str.append("^Cloned via: "); + str.append(card.getCloneOrigin().getName()); + str.append("^"); + } + + // Imprint + if (!card.getImprinted().isEmpty()) { + if (str.length() != 0) { str.append("\n"); } + str.append("^Imprinting: "); + for (Iterator it = card.getImprinted().iterator(); it.hasNext();) { + str.append(it.next()); + if (it.hasNext()) { str.append(", "); } + } + str.append("^"); + } + + // Uncastable + /*if (card.isUnCastable()) { + if (str.length() != 0) str.append("\n"); + str.append("This card can't be cast."); + }*/ + + if (card.hasAttachedCardsByMindsDesire()) { + if (str.length() != 0) { str.append("\n"); } + Card[] cards = card.getAttachedCardsByMindsDesire(); + str.append("=Attached: "); + for (Card temp : cards) { + str.append(temp.getName()); + str.append(" "); + } + str.append("="); + } + + tarInfo.setText(str.toString()); + } + + /** @return Card */ + public Card getCard() { + return this.card; + } + + /** A brief JLabel to consolidate styling. */ + private class DetailLabel extends JLabel { + public DetailLabel(boolean zebra0) { + super(); + + if (zebra0) { + this.setBackground(zebra); + this.setOpaque(true); + } + + this.setFont(f); + this.setForeground(foreground); + this.setHorizontalAlignment(SwingConstants.CENTER); + } + + public DetailLabel() { + this(false); + } + } +} diff --git a/src/main/java/forge/view/toolbox/CardViewer.java b/src/main/java/forge/view/toolbox/CardViewer.java new file mode 100644 index 00000000000..548a8d72c42 --- /dev/null +++ b/src/main/java/forge/view/toolbox/CardViewer.java @@ -0,0 +1,88 @@ +package forge.view.toolbox; + +import javax.swing.AbstractListModel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import forge.AllZone; +import forge.Card; +import forge.CardUtil; +import forge.gui.game.CardDetailPanel; +import forge.gui.game.CardPicturePanel; +import forge.item.CardPrinted; + +import java.util.List; + +import static java.util.Collections.unmodifiableList; + +/** + * A simple JPanel that shows three columns: card list, pic, and description.. + * + * @author Forge + * @version $Id: ListChooser.java 9708 2011-08-09 19:34:12Z jendave $ + */ +@SuppressWarnings("serial") +public class CardViewer extends JPanel { + + //Data and number of choices for the list + private List list; + + //initialized before; listeners may be added to it + private JList jList; + private CardDetailPanel detail; + private CardPicturePanel picture; + + public CardViewer(List list) { + this.list = unmodifiableList(list); + jList = new JList(new ChooserListModel()); + detail = new CardDetailPanel(null); + picture = new CardPicturePanel(null); + + this.add(new JScrollPane(jList)); + this.add(picture); + this.add(detail); + this.setLayout( new java.awt.GridLayout(1, 3, 6, 0) ); + + // selection is here + jList.getSelectionModel().addListSelectionListener(new SelListener()); + jList.setSelectedIndex(0); + } + + private class ChooserListModel extends AbstractListModel { + + private static final long serialVersionUID = 3871965346333840556L; + + public int getSize() { return list.size(); } + public Object getElementAt(int index) { return list.get(index); } + } + + + private class SelListener implements ListSelectionListener { + private Card[] cache = null; + + public void valueChanged(final ListSelectionEvent e) { + int row = jList.getSelectedIndex(); + // (String) jList.getSelectedValue(); + if (row >= 0 && row < list.size()) { + CardPrinted cp = list.get(row); + ensureCacheHas(row, cp); + detail.setCard(cache[row]); + picture.setCard(cp); + } + } + + private void ensureCacheHas(int row, CardPrinted cp) { + if (cache == null) { cache = new Card[list.size()]; } + if (null == cache[row]) { + Card card = AllZone.getCardFactory().getCard(cp.getName(), null); + card.setCurSetCode(cp.getSet()); + card.setImageFilename(CardUtil.buildFilename(card)); + cache[row] = card; + } + } + } + +} diff --git a/src/main/java/forge/view/toolbox/FOverlay.java b/src/main/java/forge/view/toolbox/FOverlay.java new file mode 100644 index 00000000000..08bac3418d1 --- /dev/null +++ b/src/main/java/forge/view/toolbox/FOverlay.java @@ -0,0 +1,78 @@ +package forge.view.toolbox; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JPanel; + +/** + * Semi-transparent overlay panel. Should be used with layered panes. + * + */ + +// Currently used only once, in top level UI, with layering already in place. +// Getter in AllZone: getOverlay() +@SuppressWarnings("serial") +public class FOverlay extends JPanel { + private JButton btnClose; + + /** + * Semi-transparent overlay panel. Should be used with layered panes. + */ + public FOverlay() { + super(); + btnClose = new JButton("X"); + btnClose.setForeground(Color.white); + btnClose.setBorder(BorderFactory.createLineBorder(Color.white)); + btnClose.setOpaque(false); + btnClose.setBackground(new Color(0, 0, 0)); + btnClose.setFocusPainted(false); + + btnClose.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + hideOverlay(); + } + }); + } + + /** */ + public void showOverlay() { + setVisible(true); + } + + /** */ + public void hideOverlay() { + setVisible(false); + } + + /** + * Gets the close button, which must be added dynamically since + * different overlays have different layouts. The overlay does + * not have the close button by default, but a fully working + * instance is available if required. + * + * @return JButton + */ + public JButton getBtnClose() { + return btnClose; + } + + /** + * For some reason, the alpha channel background doesn't work + * properly on Windows 7, so the paintComponent override is + * required for a semi-transparent overlay. + * + * @param g   Graphics object + */ + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + g.setColor(new Color(0, 0, 0, 200)); + g.fillRect(0, 0, getWidth(), getHeight()); + } +} diff --git a/src/main/java/forge/view/toolbox/FVerticalTabPanel.java b/src/main/java/forge/view/toolbox/FVerticalTabPanel.java new file mode 100644 index 00000000000..2889288ba07 --- /dev/null +++ b/src/main/java/forge/view/toolbox/FVerticalTabPanel.java @@ -0,0 +1,190 @@ +package forge.view.toolbox; + +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.geom.AffineTransform; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JPanel; +import javax.swing.border.Border; +import javax.swing.border.MatteBorder; + +import net.miginfocom.swing.MigLayout; +import forge.AllZone; +import forge.gui.skin.FPanel; +import forge.gui.skin.FSkin; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class FVerticalTabPanel extends FPanel { + private CardLayout cards; + private JPanel pnlContent; + private List allVTabs; + + private FSkin skin; + private int active; + private Color activeColor, inactiveColor, hoverColor; + private Border inactiveBorder, hoverBorder; + + /** + * Assembles vertical tab panel from list of child panels. Tooltip + * on tab is same as tooltip on child panel. Title of tab is same + * as name of child panel. + * + * @param childPanels   JPanels to be placed in tabber + */ + public FVerticalTabPanel(List childPanels) { + // General inits and skin settings + super(); + setLayout(new MigLayout("insets 0, gap 0, wrap 2")); + setOpaque(false); + int size = childPanels.size(); + skin = AllZone.getSkin(); + hoverColor = skin.getClrHover(); + activeColor = skin.getClrActive(); + inactiveColor = skin.getClrInactive(); + hoverBorder = new MatteBorder(1, 0, 1, 1, skin.getClrBorders()); + inactiveBorder = new MatteBorder(1, 0, 1, 1, new Color(0, 0, 0, 0)); + + final int pctTabH = (int) ((100 - 2 - 2) / size); + final int pctTabW = 11; + final int pctInsetH = 3; + final int pctSpacing = 1; + + // Content panel and card layout inits + cards = new CardLayout(); + pnlContent = new JPanel(); + pnlContent.setOpaque(false); + pnlContent.setLayout(cards); + pnlContent.setBorder(new MatteBorder(0, 0, 0, 1, skin.getClrBorders())); + + add(pnlContent, "span 1 " + (size + 2) + ", w " + (100 - pctTabW) + "%!, h 100%!"); + + JPanel topSpacer = new JPanel(); + topSpacer.setOpaque(false); + add(topSpacer, "w " + pctTabW + "%!, h " + pctInsetH + "%!"); + + // Add all tabs + VTab tab; + allVTabs = new ArrayList(); + + for (int i = 0; i < size; i++) { + tab = new VTab(childPanels.get(i).getName(), i); + tab.setToolTipText(childPanels.get(i).getToolTipText()); + + if (i == 0) { + tab.setBackground(activeColor); + active = 0; + } + else { + tab.setBackground(inactiveColor); + } + + add(tab, "w " + pctTabW + "%!, h " + (pctTabH - pctSpacing) + "%!, gapbottom " + pctSpacing + "%!"); + allVTabs.add(tab); + + // Add card to content panel + pnlContent.add(childPanels.get(i), "CARD" + i); + } + + JPanel bottomSpacer = new JPanel(); + bottomSpacer.setOpaque(false); + add(bottomSpacer, "w 10%!, h " + (pctInsetH + pctSpacing) + "%!"); + } + + /** + * Programatically flips tab layout to specified number (without needing + * a mouse event). + * + * @param index   Tab number, starting from 0 + */ + public void showTab(int index) { + if (index >= this.allVTabs.size()) { + return; + } + + allVTabs.get(active).setBackground(inactiveColor); + active = index; + cards.show(pnlContent, "CARD" + index); + allVTabs.get(active).setBackground(activeColor); + } + + /** @return JPanel */ + public JPanel getContentPanel() { + return pnlContent; + } + + /** + * A single instance of a vertical tab, with paintComponent overridden + * to provide vertical-ness. Also manages root level hover and click effects. + * + */ + private class VTab extends JPanel { + private String msg; + private int id, w; + + // ID is used to retrieve this tab from the list of allVTabs. + VTab(String txt, int i) { + super(); + setLayout(new MigLayout("insets 0, gap 0")); + setOpaque(true); + msg = txt; + id = i; + + addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + if (id != active) { + setBorder(hoverBorder); + setBackground(hoverColor); + } + } + + @Override + public void mouseExited(MouseEvent e) { + if (id != active) { + setBorder(inactiveBorder); + setBackground(inactiveColor); + } + } + + @Override + public void mousePressed(MouseEvent e) { + allVTabs.get(active).setBackground(inactiveColor); + active = id; + cards.show(pnlContent, "CARD" + id); + setBackground(activeColor); + } + }); + } + + protected void paintComponent(Graphics g) { + super.paintComponent(g); + w = getWidth(); + + // Careful with this font scale factor; the vertical tabs will be unreadable + // if small window, too big if large window. + g.setFont(skin.getFont1().deriveFont(Font.PLAIN, (int) (w * 0.68))); + + // Rotate, draw string, rotate back (to allow hover border to be painted properly) + Graphics2D g2d = (Graphics2D) g; + AffineTransform at = g2d.getTransform(); + at.rotate(Math.toRadians(90), 0, 0); + g2d.setTransform(at); + g2d.setColor(AllZone.getSkin().getClrText()); + g2d.drawString(msg, 5, -4); + + at.rotate(Math.toRadians(-90), 0, 0); + g2d.setTransform(at); + } + } +}