From b7b15bb65587a742270bf8dda052db14bf5df1f3 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sat, 26 Feb 2011 01:16:47 +0000 Subject: [PATCH] Dialogs UI update Lore found is displayed in a parchment like dialog, sometimes with bloodstains! git-svn-id: http://svn.net-core.org/repos/t-engine4@2835 51575b47-30f0-44d4-a5cc-537603b46e54 --- .../engines/default/data/gfx/border_1_sel.png | Bin 249 -> 0 bytes .../engines/default/data/gfx/border_3_sel.png | Bin 227 -> 0 bytes .../engines/default/data/gfx/border_7_sel.png | Bin 205 -> 0 bytes .../engines/default/data/gfx/border_9_sel.png | Bin 255 -> 0 bytes .../default/data/gfx/ui/border_hor_left.png | Bin 0 -> 415 bytes .../default/data/gfx/ui/border_hor_middle.png | Bin 0 -> 225 bytes .../default/data/gfx/ui/border_hor_right.png | Bin 0 -> 351 bytes .../data/gfx/ui/border_vert_bottom.png | Bin 0 -> 431 bytes .../data/gfx/ui/border_vert_middle.png | Bin 0 -> 220 bytes .../default/data/gfx/ui/border_vert_top.png | Bin 0 -> 341 bytes game/engines/default/data/gfx/ui/button1.png | Bin 0 -> 236 bytes game/engines/default/data/gfx/ui/button2.png | Bin 0 -> 185 bytes game/engines/default/data/gfx/ui/button3.png | Bin 0 -> 233 bytes game/engines/default/data/gfx/ui/button4.png | Bin 0 -> 201 bytes game/engines/default/data/gfx/ui/button5.png | Bin 0 -> 167 bytes game/engines/default/data/gfx/ui/button6.png | Bin 0 -> 184 bytes game/engines/default/data/gfx/ui/button7.png | Bin 0 -> 290 bytes game/engines/default/data/gfx/ui/button8.png | Bin 0 -> 212 bytes game/engines/default/data/gfx/ui/button9.png | Bin 0 -> 224 bytes .../default/data/gfx/ui/button_sel1.png | Bin 0 -> 256 bytes .../default/data/gfx/ui/button_sel2.png | Bin 0 -> 185 bytes .../default/data/gfx/ui/button_sel3.png | Bin 0 -> 252 bytes .../default/data/gfx/ui/button_sel4.png | Bin 0 -> 223 bytes .../default/data/gfx/ui/button_sel5.png | Bin 0 -> 167 bytes .../default/data/gfx/ui/button_sel6.png | Bin 0 -> 184 bytes .../default/data/gfx/ui/button_sel7.png | Bin 0 -> 308 bytes .../default/data/gfx/ui/button_sel8.png | Bin 0 -> 223 bytes .../default/data/gfx/ui/button_sel9.png | Bin 0 -> 247 bytes .../default/data/gfx/ui/checkbox-ok.png | Bin 566 -> 1280 bytes game/engines/default/data/gfx/ui/checkbox.png | Bin 0 -> 1101 bytes .../default/data/gfx/ui/dialogueV3_1.png | Bin 0 -> 3494 bytes .../default/data/gfx/ui/dialogueV3_2.png | Bin 0 -> 3828 bytes .../default/data/gfx/ui/dialogueV3_3.png | Bin 0 -> 3747 bytes .../default/data/gfx/ui/dialogueV3_4.png | Bin 0 -> 4106 bytes .../default/data/gfx/ui/dialogueV3_5.png | Bin 0 -> 4362 bytes .../default/data/gfx/ui/dialogueV3_6.png | Bin 0 -> 4153 bytes .../default/data/gfx/ui/dialogueV3_7.png | Bin 0 -> 3714 bytes .../default/data/gfx/ui/dialogueV3_8.png | Bin 0 -> 3769 bytes .../default/data/gfx/ui/dialogueV3_9.png | Bin 0 -> 3371 bytes game/engines/default/data/gfx/ui/minus.png | Bin 365 -> 385 bytes game/engines/default/data/gfx/ui/plus.png | Bin 375 -> 802 bytes .../default/data/gfx/ui/scrollbar-sel.png | Bin 295 -> 1009 bytes .../engines/default/data/gfx/ui/scrollbar.png | Bin 213 -> 159 bytes .../default/data/gfx/ui/scrollbar_bottom.png | Bin 0 -> 221 bytes .../default/data/gfx/ui/scrollbar_top.png | Bin 0 -> 221 bytes .../default/data/gfx/ui/selector-sel1.png | Bin 0 -> 290 bytes .../default/data/gfx/ui/selector-sel2.png | Bin 0 -> 208 bytes .../default/data/gfx/ui/selector-sel3.png | Bin 0 -> 280 bytes .../default/data/gfx/ui/selector-sel4.png | Bin 0 -> 203 bytes .../default/data/gfx/ui/selector-sel5.png | Bin 0 -> 167 bytes .../default/data/gfx/ui/selector-sel6.png | Bin 0 -> 207 bytes .../default/data/gfx/ui/selector-sel7.png | Bin 0 -> 285 bytes .../default/data/gfx/ui/selector-sel8.png | Bin 0 -> 216 bytes .../default/data/gfx/ui/selector-sel9.png | Bin 0 -> 302 bytes .../engines/default/data/gfx/ui/selector1.png | Bin 0 -> 290 bytes .../engines/default/data/gfx/ui/selector2.png | Bin 0 -> 208 bytes .../engines/default/data/gfx/ui/selector3.png | Bin 0 -> 280 bytes .../engines/default/data/gfx/ui/selector4.png | Bin 0 -> 203 bytes .../engines/default/data/gfx/ui/selector5.png | Bin 0 -> 167 bytes .../engines/default/data/gfx/ui/selector6.png | Bin 0 -> 207 bytes .../engines/default/data/gfx/ui/selector7.png | Bin 0 -> 285 bytes .../engines/default/data/gfx/ui/selector8.png | Bin 0 -> 216 bytes .../engines/default/data/gfx/ui/selector9.png | Bin 0 -> 302 bytes game/engines/default/engine/ui/Base.lua | 48 +++++++ game/engines/default/engine/ui/Button.lua | 45 +++--- game/engines/default/engine/ui/Checkbox.lua | 51 ++----- game/engines/default/engine/ui/Dialog.lua | 130 +++++++++++++----- game/engines/default/engine/ui/List.lua | 83 +++-------- .../engines/default/engine/ui/ListColumns.lua | 98 ++++--------- game/engines/default/engine/ui/Separator.lua | 40 +++--- game/engines/default/engine/ui/Slider.lua | 47 +++++++ game/engines/default/engine/ui/Textzone.lua | 20 +-- game/engines/default/engine/ui/TreeList.lua | 104 ++++---------- game/engines/default/engine/utils.lua | 6 +- game/modules/tome/class/Game.lua | 3 +- .../tome/class/interface/PlayerLore.lua | 3 +- .../data/general/objects/boss-artifacts.lua | 2 +- game/modules/tome/data/gfx/ui/parchment1.png | Bin 0 -> 5246 bytes game/modules/tome/data/gfx/ui/parchment2.png | Bin 0 -> 5818 bytes game/modules/tome/data/gfx/ui/parchment3.png | Bin 0 -> 5096 bytes game/modules/tome/data/gfx/ui/parchment4.png | Bin 0 -> 6033 bytes game/modules/tome/data/gfx/ui/parchment5.png | Bin 0 -> 5086 bytes game/modules/tome/data/gfx/ui/parchment6.png | Bin 0 -> 5743 bytes game/modules/tome/data/gfx/ui/parchment7.png | Bin 0 -> 5266 bytes game/modules/tome/data/gfx/ui/parchment8.png | Bin 0 -> 5935 bytes game/modules/tome/data/gfx/ui/parchment9.png | Bin 0 -> 5131 bytes .../tome/data/gfx/ui/parchmentblood1.png | Bin 0 -> 782 bytes .../tome/data/gfx/ui/parchmentblood2.png | Bin 0 -> 671 bytes .../tome/data/gfx/ui/parchmentblood3.png | Bin 0 -> 981 bytes .../tome/data/gfx/ui/parchmentblood4.png | Bin 0 -> 594 bytes .../tome/data/gfx/ui/parchmentblood5.png | Bin 0 -> 1446 bytes game/modules/tome/data/lore/age-allure.lua | 1 + game/modules/tome/data/lore/maze.lua | 1 + game/modules/tome/data/lore/old-forest.lua | 1 + game/modules/tome/data/lore/trollmire.lua | 1 + game/modules/tome/dialogs/LorePopup.lua | 72 ++++++++++ .../modules/tome/dialogs/debug/ChangeZone.lua | 2 +- src/core_lua.c | 20 +++ 98 files changed, 427 insertions(+), 351 deletions(-) delete mode 100644 game/engines/default/data/gfx/border_1_sel.png delete mode 100644 game/engines/default/data/gfx/border_3_sel.png delete mode 100644 game/engines/default/data/gfx/border_7_sel.png delete mode 100644 game/engines/default/data/gfx/border_9_sel.png create mode 100644 game/engines/default/data/gfx/ui/border_hor_left.png create mode 100644 game/engines/default/data/gfx/ui/border_hor_middle.png create mode 100644 game/engines/default/data/gfx/ui/border_hor_right.png create mode 100644 game/engines/default/data/gfx/ui/border_vert_bottom.png create mode 100644 game/engines/default/data/gfx/ui/border_vert_middle.png create mode 100644 game/engines/default/data/gfx/ui/border_vert_top.png create mode 100644 game/engines/default/data/gfx/ui/button1.png create mode 100644 game/engines/default/data/gfx/ui/button2.png create mode 100644 game/engines/default/data/gfx/ui/button3.png create mode 100644 game/engines/default/data/gfx/ui/button4.png create mode 100644 game/engines/default/data/gfx/ui/button5.png create mode 100644 game/engines/default/data/gfx/ui/button6.png create mode 100644 game/engines/default/data/gfx/ui/button7.png create mode 100644 game/engines/default/data/gfx/ui/button8.png create mode 100644 game/engines/default/data/gfx/ui/button9.png create mode 100644 game/engines/default/data/gfx/ui/button_sel1.png create mode 100644 game/engines/default/data/gfx/ui/button_sel2.png create mode 100644 game/engines/default/data/gfx/ui/button_sel3.png create mode 100644 game/engines/default/data/gfx/ui/button_sel4.png create mode 100644 game/engines/default/data/gfx/ui/button_sel5.png create mode 100644 game/engines/default/data/gfx/ui/button_sel6.png create mode 100644 game/engines/default/data/gfx/ui/button_sel7.png create mode 100644 game/engines/default/data/gfx/ui/button_sel8.png create mode 100644 game/engines/default/data/gfx/ui/button_sel9.png create mode 100644 game/engines/default/data/gfx/ui/checkbox.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_1.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_2.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_3.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_4.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_5.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_6.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_7.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_8.png create mode 100644 game/engines/default/data/gfx/ui/dialogueV3_9.png create mode 100644 game/engines/default/data/gfx/ui/scrollbar_bottom.png create mode 100644 game/engines/default/data/gfx/ui/scrollbar_top.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel1.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel2.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel3.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel4.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel5.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel6.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel7.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel8.png create mode 100644 game/engines/default/data/gfx/ui/selector-sel9.png create mode 100644 game/engines/default/data/gfx/ui/selector1.png create mode 100644 game/engines/default/data/gfx/ui/selector2.png create mode 100644 game/engines/default/data/gfx/ui/selector3.png create mode 100644 game/engines/default/data/gfx/ui/selector4.png create mode 100644 game/engines/default/data/gfx/ui/selector5.png create mode 100644 game/engines/default/data/gfx/ui/selector6.png create mode 100644 game/engines/default/data/gfx/ui/selector7.png create mode 100644 game/engines/default/data/gfx/ui/selector8.png create mode 100644 game/engines/default/data/gfx/ui/selector9.png create mode 100644 game/engines/default/engine/ui/Slider.lua create mode 100644 game/modules/tome/data/gfx/ui/parchment1.png create mode 100644 game/modules/tome/data/gfx/ui/parchment2.png create mode 100644 game/modules/tome/data/gfx/ui/parchment3.png create mode 100644 game/modules/tome/data/gfx/ui/parchment4.png create mode 100644 game/modules/tome/data/gfx/ui/parchment5.png create mode 100644 game/modules/tome/data/gfx/ui/parchment6.png create mode 100644 game/modules/tome/data/gfx/ui/parchment7.png create mode 100644 game/modules/tome/data/gfx/ui/parchment8.png create mode 100644 game/modules/tome/data/gfx/ui/parchment9.png create mode 100644 game/modules/tome/data/gfx/ui/parchmentblood1.png create mode 100644 game/modules/tome/data/gfx/ui/parchmentblood2.png create mode 100644 game/modules/tome/data/gfx/ui/parchmentblood3.png create mode 100644 game/modules/tome/data/gfx/ui/parchmentblood4.png create mode 100644 game/modules/tome/data/gfx/ui/parchmentblood5.png create mode 100644 game/modules/tome/dialogs/LorePopup.lua diff --git a/game/engines/default/data/gfx/border_1_sel.png b/game/engines/default/data/gfx/border_1_sel.png deleted file mode 100644 index 99ced49ab8ad309a82057719a9135b4fd7e8df7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO>Svs2G(juA330qWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FM zhJw4NZ$Nk>pEyuanx~6nh{WZoXAJoq3>aD;?tjF^m!MY2pc1y)A|hW|*6Jd&z}(pp zvWu3Lt#JHvS$dz%!l_@Dm#(?(XDzlQwdM=|jHh*tHa+{YSF9Flcx)udv33c&#aiYL n4W<L<FAKz9VtK&G<W<ek*&xZXU8HUz&_)JNS3j3^P6<r_&SguJ diff --git a/game/engines/default/data/gfx/border_3_sel.png b/game/engines/default/data/gfx/border_3_sel.png deleted file mode 100644 index 6872c673de9d862059813e92ad48447483d8dde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO>Su>Ytw`kKlcKKBuiW)N}Tg^b5rw57@Uhz6H8K46v{J8 zG8EiBeFMT9`NV;W0z6$DLnJOIznL%lYd$0Ii<6PYF*~c~Km0JUo5zQTh2bUFmnUlq zwHrL+c2>#j9cx<0tXBEsglh*=%2fk~$uXPXF)(xYH1l0sV|@Sw7#RA5WKz;^&wLFu Oo59o7&t;ucLK6Uq^GE~$ diff --git a/game/engines/default/data/gfx/border_7_sel.png b/game/engines/default/data/gfx/border_7_sel.png deleted file mode 100644 index be00ddc55dc416018cea6f9cbd5bb2667d9976e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfElz%3L(APwztw?4k|nMYCC>S|xv6<249-QVi6yBi3gww4 z84B*6z5(HleBwYwR-P`7ArhC9QyQA~TC4v_Kfok0QFVRH-u{&gv7bIn?AG9l*x(se t-E~OR;Go0}l|Ye%$wvYjcm+Zj7#gNXcID4l;R`f{!PC{xWt~$(69Du7I<Wu% diff --git a/game/engines/default/data/gfx/border_9_sel.png b/game/engines/default/data/gfx/border_9_sel.png deleted file mode 100644 index e5c46af2864ab728971d972dcfb315d2e898e16f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO>Svs2I)q=!djq^WQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FM zhJw4NZ$Nk>pEyuaj;D)bh{WaOJG+Yy)wAgwxVg8X5d;d8;_cd)WOH42D5c5eoojRN zk25;3Vb2_v!>g~$OB^}EBDt^j_rU`xZ#7Rb9OeOn_WqcZ1R&T^^wo|T1cWzTG;lT0 kHV{$JKD3fSRv?6dp*2U|^{r8;70_M=Pgg&ebxsLQ0I2v(x&QzG diff --git a/game/engines/default/data/gfx/ui/border_hor_left.png b/game/engines/default/data/gfx/ui/border_hor_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3130eef84224d32ae885ca5c161255460c1808 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!3HEhFR0}KQk(@Ik;OoHD-dR6R+4K43bLd- z`Z_W&Y@C<q<M<uOS4j2<@?~JC2Wn`|W?*FYWMF9MW?%@|%D~9>pMk;pE(3!MM^V0x z0|Nu2sHcl#NX4x;Q+&M-I|#JR_cXg-!Y!)B^6KjBzrkPKqd!RS2Z;vVQDN(y-q{i~ zDQho>p3a+d?`#h5v9`WcD*K$L-}t!w1966B@f{ruivr@)^JlZYILg4$$kNg9pltKb z{gLZWZpsmQuyQl2*a04oZROEv*Csu;yml+FVf{q$1EL#Po~<jg5jlE&sq+a%g-a*A z6If#yraYC?;Amn<KC^_4(;)o$>3<h?b}hf#w``p|<2)xN1y&=5WS&Bq!0WvExxe>X z3A9-BaUAA2|J}{?O#}Y|R;dGw>y?^{`*!8^vA_7;*s)~Rcdi|B9W&-ddAygZ<hNP1 zHpJGCE#$!Fcky3bn*w{;G%JpKReHTpeBeIc^Iu)?Um1q_sV>?%hYDW<1Czni)z4*} HQ$iB}u)&%0 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/border_hor_middle.png b/game/engines/default/data/gfx/ui/border_hor_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..33f47205854ce4e15fa5c890e4c7d68792b732a4 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^96&6=!3HFc-`pbrq&N#aB8!3YRv^sCtR&Y86l6(v z^mSxl*f=lI$MHLmuaN8!<jcTN&%?mbn$5t-?8(5;(9OUQu$6(4?LPy9^<4%A8IGcS z9S5M=a8DP<kcwMLfByfsXSO?V#DRf_leLG3hsUNu^vrB?{(OfGe|~;$H!|N)^ZOg` z{wDVC?;nSMc=xxO>+Xk#f7zQDO{Ld!0+p9@XzuVh!6kZ1sry@}m;plttK>Whf6<#j PD;PXo{an^LB{Ts5>M24N literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/border_hor_right.png b/game/engines/default/data/gfx/ui/border_hor_right.png new file mode 100644 index 0000000000000000000000000000000000000000..61f0794af30d93ee94a9b90d0ca90f6df142a9bb GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^96&6=!3HFc-`pbrq&N#aB8!3YRv^sCtR&Y86l6(v z^mSxl*f=lI$MHLmuaN8!<jcTN&%?mbn$5t-?8(5;(9OUQu$6(4?LPy9^<4%A8IGcS z9S5M=tDY{7Ar-f-Ogfl#*np?ap4a-6V#}Rt!Ji(q?z!C8>co9B^MYEm!s6M<?-xx? zm3*Dq&e@XsU*3LFuBYb5=sShV|5z0q5=%GD(N&(XB=@$wzS8;PSG$h23WP0MwP@85 ziR-p2v|Ixp>{VadGJ9DjV@hP(cR4}E1G4<>tOfgT#>6t*+4)}FfrC+SVW!lnO-E|q zKTMUWd}GD1YSkg$zZ+&Hy<oSS%X;J1PnJ0id^c`Z6&<+O!2N;8hH>%Rbaoqw4}5!O uRcx#J_ey|w*Nh)*M{f6j{XYL&GQ<A4!O4zp(QQBvGI+ZBxvX<aXaWHKFobCU literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/border_vert_bottom.png b/game/engines/default/data/gfx/ui/border_vert_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5a78bacf717e2c2214bd1313151c7bea3da516aa GIT binary patch literal 431 zcmV;g0Z{&lP)<h;3K|Lk000e1NJLTq000;O000mO1^@s63?#pm00009a7bBm000d- z000d-0Rti)g#Z8m1ZP1_K>z@;o?%Qu_W%F@AY({UO#lFY3;+OyYXAWQNdN$VivR#n zwEzJI{{R3x-2ea_2y$;MKmY&%B}qg<RCwC#)UiurK@bM;-^O<)iiChX5rUmyX`_W# zq)u`FKU^6SiwK(Ni!X^G*=r_;&8Y#c&Vgli_WPJ`c4v1}&KabXj&O=|T!ufrzPkEV zmM5Uw?YjASqby6%ZnyP%z2psR_+tBy1d5`N^Tv2QHk-{pSD+{gtya@wv2;5c84Ly= z7Af8%BuT5)w7=if*lT#IDx={LbUK}#1Tr>QVTl^gDJ6AXTP&7;iPOo{!(;;b{r=kp zzIq3TIK~++!XM)>xHaxE#P9I;Ip_MLJ6K2M74Bl~3C)-<@fcVY@p_jdT4Rofh$lF} zkBC=+SHYR@DzL#zRK3D9k~d!A+y2ahyV<qLtElP)dq^?1cn*9W$@9CnaNFeXzvy4~ ZX8_1XYtcDK!BPMK002ovPDHLkV1kcsv5Noz literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/border_vert_middle.png b/game/engines/default/data/gfx/ui/border_vert_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6ece2a46ef2f2262bad44abc958a515b314705 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^5<tws!3HEBFSJhvQk(@Ik;OoHD-dR6R+4K43bLd- z`Z_W&Y@C<q<M<uOS4j2<@?~JC=V4%I&1PU^_GDma=w@ID*vi1j_Md^l`Yr>53`bGE zjss9_kf)1dNX4x;XBGJl8wfBQ-1*?t8zt{$PgV5_8sjJYuRpGOP%$*JP3KNTc4J4y zf=8X#Z~l7s_rx8??6W_3W^#IIKAZFK(6jUJ4%+^>E6%|1|35Rs6g_rcn-Bd!7cek* My85}Sb4q9e0L6(%W&i*H literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/border_vert_top.png b/game/engines/default/data/gfx/ui/border_vert_top.png new file mode 100644 index 0000000000000000000000000000000000000000..938dd5a32cb9d0f856cbdb0297e1b2b53cfc4084 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^5<tws!3HEBFSJhvQk(@Ik;OoHD-dR6R+4K43bLd- z`Z_W&Y@C<q<M<uOS4j2<@?~JC=V4%I&1PU^_GDma=w@ID*vi1j_Md^l`Yr>53`bGE zjssBbX-^l&kcwMdE*|td6d=;_@O{|&=}{V-+h$C-;XZ-=LFtEus)?P}kyBX8kNO(M zN*tB=cU9$i%Ck8>7IXa+S|%ty;<FTbbh>J9ZJeH{YvPFvlS?MOSF=R_9C+)HzPGYd zQtgEKdg;lVwnXSmN#zXk3i8^u?z8mahS~o<NlKkDw5^lb`?f6JyEIn1|9Dc*x%>ZB z6~0bC|FMNV<2G|yQqQVYLdhad1)Mh>+V?ffT)y|`qfO53=D)w=u9u3>t`{%RvwA4k iT0d#0Q8@n(8HTv+Dy{E2ntOoWV(@hJb6Mw<&;$Up7Jl#m literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button1.png b/game/engines/default/data/gfx/ui/button1.png new file mode 100644 index 0000000000000000000000000000000000000000..00976452efe42bbe87f28e0607393b312c0a5479 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;HW@i(^Q|tttJ6Tn7|Hoab--Zr{JUf;Ii%SN^8k>=W;=JbI}tV_6G}T%jUM@wtb4 zkDqz5cXO8g**TNVbF&RL|8M4AxT=F=>$T?&p_)r46uY^+>o7c)&bi^Zgs0}ksOs86 a9tN2%bDfW+D{cX8WAJqKb6Mw<&;$Uss7rGI literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button2.png b/game/engines/default/data/gfx/ui/button2.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc7816a8b88d7ac1706b2f0286d8566ad75e135 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_4eFi(^Q|t)!UEX=m%%Y#KTn85YDao^It9|De62;-gY(n8B)5s~&w-1FHT1pP8Xp WnlpXog1fFjE`z75pUXO@geCy#WiQMC literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button3.png b/game/engines/default/data/gfx/ui/button3.png new file mode 100644 index 0000000000000000000000000000000000000000..58c2f02f1337da0466a99fe396bf563dd8a590ec GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;I=Yi(^Q|ttGvuIS(j^upB?{xP@=`c8RqP7u5FH#PK<KI4QKB$&74^4fYDu>oI(> zm)YR?kxvKf4_=STZ(XINWbu64g{a+}iY!51M<lj?m=lvdH`2wxGQIZiH@R%x;|x=u V%g%~ocnoqTgQu&X%Q~loCIHJGM*{!= literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button4.png b/game/engines/default/data/gfx/ui/button4.png new file mode 100644 index 0000000000000000000000000000000000000000..877a852cb1854e0ba60cdaa97fc3e53102a16de2 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_4bEi(^Q|tu<#4axy6JIA1*C{9S%|bZOJFc`SmiEcZ3r`4{dM_naZAqNrq$o$TS1 omUOk?qu2x+_Ry~nla}){2rLw0NxAt?0%#P2r>mdKI;Vst0OpD`SpWb4 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button5.png b/game/engines/default/data/gfx/ui/button5.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9caf1b4c781dfad789deff090344bae8b29076 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3+|i(^Q|t)!UEX=m%%Y#KTn86@ODPGI=|pP50XlUcaLK>P@Z@9FC2vd$@?2>?RW BBq#s? literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button6.png b/game/engines/default/data/gfx/ui/button6.png new file mode 100644 index 0000000000000000000000000000000000000000..55e30a5b40567f8cfbf3873aaeefc996d5f9c33e GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3S)i(^Q|t)!UEX=m%%R6e}8sNDAZ`+H*pAh4<XGo!JykwHQZ<R*sy|Ct&3qqzPj S8-CCR@jYGrT-G@yGywq9Kra0N literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button7.png b/game/engines/default/data/gfx/ui/button7.png new file mode 100644 index 0000000000000000000000000000000000000000..99f9414b1a423a7d37be1348335a25b11e6b104c GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0)v)7srr_TRDA(d94NltjF)UUT`@6SKrms+u5~o!=8%0nu}b11}&>ye9`;%w$|N? zSM@yZm>HP;w7q7Y`ehTt^TvXW9R@tiN=+RLEYs&bPmC11R(kY|#?k<<g<IQJX)P5w z(^GqY|7Od})yMA!3MwjfaJ>8d%!2RVq_aI83$A&+pF8DJ`-1nsAH9pY{`KR(@Qk$+ ggMO8>{E%XBI1=&w(Pg#SKsPdYy85}Sb4q9e03a%Cv;Y7A literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button8.png b/game/engines/default/data/gfx/ui/button8.png new file mode 100644 index 0000000000000000000000000000000000000000..98eae90eee50109e3185550e75ba2ed62d7de4b6 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_37zi(^Q|ttDqS@*XhYVLmurA>;qqJx$*y=q}^9bjx+0-2}5^0_{m_j|wvEu%5~3 zP#zrW@qWW>$w@b=KR@hXa1b(lZWCuQ{a<rB!#^2m8GY9-pv?>np00i_>zopr0Epi` AfdBvi literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button9.png b/game/engines/default/data/gfx/ui/button9.png new file mode 100644 index 0000000000000000000000000000000000000000..9a94b8dd11d27a043f83884da189adc940fb441d GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;Ho}i(^Q|ttGu1c@HS?u;@?xKEGWzBjUij2@95QNLi(zsuH?x@AbbEi}~UT%0om8 zzx(zXzSuiC=+U1^OGToxIUHQpyiv_w%h0jv9#`5nl@0MWKka8QGh9tDIp!zz!wYBw NgQu&X%Q~loCIHPzL_Poj literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel1.png b/game/engines/default/data/gfx/ui/button_sel1.png new file mode 100644 index 0000000000000000000000000000000000000000..84024fd45c6d2d7dd45741ce848acb69caa14d27 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;Hr~i(^Q|t(LBXTulxluIG!N8UH!I?_}=on6Hd^QM^HdJ$fw{R;VbgeSRvy?ZcXL zPvvedk)OI<;n*U>3U-b9MS)*#U%t!PvCO$t^~cx51oxF!FFaAbeyG)PE!+E|RgdRg ve`~~ltNnrhY4rx%l<0H2ThgO99x-4@Niddq85VR4=mG{$S3j3^P6<r_Bh*;) literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel2.png b/game/engines/default/data/gfx/ui/button_sel2.png new file mode 100644 index 0000000000000000000000000000000000000000..80490c979142f9be9b4c33d64db8c859edff00e5 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_4eFi(^Q|t)!l)fB)^7<qjNiU<g>(@bu);yFWy2_U~*r(w3+UdHbPC7^wFDe`bcF WY|h+stMjJ<xeT7JelF{r5}E)-1u?7u literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel3.png b/game/engines/default/data/gfx/ui/button_sel3.png new file mode 100644 index 0000000000000000000000000000000000000000..2b36e22ca5c0db56a4aa8044451d30337177f2e6 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;HT?i(^Q|t)!l)fB)^7g(`l(kUBhFeYvCr5Zv3d<LH4S4h#Y78lIk9dRK$#|NsB# zKmPU3Y@GaB-{s)v+0_9e2Ae+{Z1^jf^5dKWLtsPRll$}ICF(XB8yM6iCH(mQou65` of7RXkoU-CgK(UPmh74>Bm3tKHLh|xWfwnVvy85}Sb4q9e0Ee7YR{#J2 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel4.png b/game/engines/default/data/gfx/ui/button_sel4.png new file mode 100644 index 0000000000000000000000000000000000000000..3748d5f7458f207b3b7200d1fe853907f9691d65 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;IEEi(^Q|t(N|cybT5d%;y8SqNKu7&8H<Wmn~pg)UurEV~55%o!=^_rIx4Ma=q^U ziQzPlME{}OPi)6ud9&|{VKtZ_<<QZfbs+LzdQ8ev!;iHL1-uMZ93ro0z1#W#XaR$# LtDnm{r-UW|Tf#tL literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel5.png b/game/engines/default/data/gfx/ui/button_sel5.png new file mode 100644 index 0000000000000000000000000000000000000000..2a03675556a4645a9c1733a02fb967556e09bb4b GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3+|i(^Q|t)!l)fB)^7<qjNiVBq0r1xhgd|If@IeukOfcB<tZ5Z}|)&t;ucLK6U3 CxFqBN literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel6.png b/game/engines/default/data/gfx/ui/button_sel6.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc0d7f740b4bca7e915d05f77d7e8892b4cf3a7 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3S)i(^Q|t)!l)fB)^7g(`l(kUBhFeYvCr5Zv3d<LH4S4h%f}tU#3v|Nk>HOflzX T{XcV_DTwds>gTe~DWM4fq0%kD literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel7.png b/game/engines/default/data/gfx/ui/button_sel7.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb79bd2878b4babe1ac41fc66d0ed68744be32a GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0*#D7srr_TPf$P`I;Og7#{viRJCd1_t7yaE1P#mdPW6v@=I171F=PnEUaab+Q~if zwntCAn{hMz@uIyQ1#2pvvE98=W6^%4{bk2Zuf_<ri3)KI69w+NuE>*{q`Kit;$8tc z4oSZ6OmV6!5>j@?wi>m)70zMcy5O7<8!(Ug+Ltd&539EQW!q3Azv|YatpOP?bUHpb who)z++b%z{)aU2ol5B(43BM0Kv9I7~*iq$J)VOs?4basLp00i_>zopr0Iqv!!vFvP literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel8.png b/game/engines/default/data/gfx/ui/button_sel8.png new file mode 100644 index 0000000000000000000000000000000000000000..8f127091610d7de9fb7d5beedc3c660456cc0e8b GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;IEEi(^Q|tu=jyLJkfBEY;`5+K<TB+*d!b*JatOz5{PLpGd#lu{u5F=J~GXIL!xK z3_?;{dKn@NPZc}=Jv8gNAj>0`SbnDimmKU4@RZ!W!}^DLKgWB9sh7lLYl7bF2U@`3 M>FVdQ&MBb@07Mr<VE_OC literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/button_sel9.png b/game/engines/default/data/gfx/ui/button_sel9.png new file mode 100644 index 0000000000000000000000000000000000000000..3a37a9c601008a1050b148cbc71cf16c19c3ea56 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;IWKi(^Q|t)!UZZ<p)YbRJxmH*2%~enT>1Uw!JK2{oUm&V2YOysS;SI^Dn^ar%>l zilUzehp+ed0~Kf$82|Zw_`rw%_RNRR_w(?C#~C}Q+`pTg00NdJB3E0s_pdvsDk&jh hu-1WniZ%le!v;Q`!^U;VGk_K|c)I$ztaD0e0sv-$PLBWp literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/checkbox-ok.png b/game/engines/default/data/gfx/ui/checkbox-ok.png index ea6255e2c2162c871542fd003bc928c6c992f0e2..cbde8abc763eb2af5b90ac7a2921257359cba6b4 100644 GIT binary patch literal 1280 zcmV+b1^@bqP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000d- z000d-0Rti)g#Z8m1ZP1_K>z@;o?%Qu_W%F@AY({UO#lFY3;+OyYXAWQNdN$VivR#n zwEzJI{{R3x-2ea_2y$;MKmY&)c1c7*RCwC#mRoF8RTPH5bIzPI*S0g$%fNJ+R!d6} zYokUm5u@UTh-g5(ga=U`OhAJ|44R-(fi#8~2?kL>A54@WNF^e{fQ?XE6iCCJhPF^F zl+rt$na)gS=A5&A&?ea6&=v|W{LgD=efhKY`j;exU_hBZh0&A{NYOr15(cttktByx zO3K^}35dsVC>CXgJ4c)Azf)_>@XB^1u-t_9k^}`AW0cv&rRwu{++};fm7Z?dvZf^n zLK|%Wt3cY9U7%Lw6{+{VxHx@sB&f?f*LR!Agjoh8M-yO-qEMArqSZb8l6~={$KCQ@ zr@Q6NpT=mZ*B1aM0Y+;E##=PGspLUNV)At7bC1o;Ryx`)%bQk4X{p!W0X7U2j)nu1 zESh|<u+*M-;uUQ|UV%sMZ13j#Wf58%jTOMED~oTm1J9_Md@#4b#kl+Jnm^a0<WI1$ z`&*rJC-hH%4+lTEkq$g$wJAFSg=zSURi2(}$6plX&+UTWe+U75aJ5G_3Lr~Xq?)n$ zPSU*^xkca(=+y3svSDc-!elC74hKL26u|grjii)IR;13HTnFxK8+T7pm^I%kbRyD` zT@t}g^CMu-|2@9i47enTkSa+l6oYpSLwHg&S0stBH^+uA&w<SWv))c4Awr_zaDvK> zA%K;s=m$ICdiK?^;i9rMVhORZp*D2(#2>-3o=dS+?QLeQCr3e+{sXUPWLohTxUgsv zZ+)#nztw0w9MUU34_cE6@iGuk1u)nF@7|xg*t@+4hbB80l^5Q#@5t0S<H|C(WsOy5 zr<vHVsD0g)p%N%eLs2E>yst9NR$v}G&=GHM)|KNmF@TC|4bNZ)E`)oN)E&A^urtZw z>L3LZt?b`5E%4fVd$;c1+yOD;GhnBx$?F1zX{ega#79i#l@_wIyG3+dG{lY#A;mP9 z@$U?!4vMS9u>{PpsPcAyzKcMSm3yb!c=XA9Y#Antrk~_oeTe+=8Mw2oczp2VS|`mU z%{A*omoJ`?l;6G!ej@}+hLlt(?tv+aB3EYz>}2}vxZD;Nemo9$rjzm|Rm6JIktEo- zH5(sUV)gFR$;!>4$cdVMS6{Cv0h)#akZKdw7>4O=KOdp>T$sMzB&(M;a_B%aZ!9Yz z-J_BnQ1Nk`3p8?cUw`~klP>ytMfp&h4`mTWg+T4?iYKjh3%-DZ+Nv%zo0kR4^LWa? zAAn!0oynus-I3M?-6LSRG>i>4lq}GNz}IytMkJi1wL#{mFMFx4>jvhr<IH4p%NG~J zp)RA%Foa*a_TpkBVbq}~%@<ml`iMt$gb9_KLR2&yqw<%QXxsT@e>^IRky8Kp>j40$ z=#S`co;?*L7SV}E;nbn9d2m-KZqZ~l5jX5W|FG}15nRRdHLLPfahV6zCYf%3U!uAq zrs_!wf#%@?j3f=$CE|wn!r5?nx<`}iYWr<^lC>jgK2iq;G*hw2+YH?-9k}mqHUNMZ q=((<&{YrpaA(>mO+W@x#{vH5QFUA;O?hw5I0000<MNUMnLSTY4t59G7 literal 566 zcmV-60?GY}P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipN3 z5fB8?d^b7(0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~0004v zNkl<ZNXPA!&ntvM7{@=0TohX_#9>OxL2hnJiuUHh#lc=QaWS0y2Z{?dM^jRM<wOz} z?Sadlq#RJn6k(4@%3-<8*7SP!$GiKMi|6#r^UOTo`99A)&%nO`%F4!KzPcEK_W*aw z%JDFNqQ>AUU=L^kK7j!(%tb5=l$G<qu?r562RdV6psXAMGM?!H7}dgD2KP2pNnkdx z?$^TPVyS_$vKzSZ(%Ywnxr+3Pl$A+kWml0i3*NbtQo(<vNLiT%7J&|z<Kck69Y}ko zrE-je49;Ef1Td(qYz_G5fI?GcwJ>Lq0JJdoK-Ob7=H0#-nD(|WS5mXE8ti!bq^HjS zNvB@}hm`;%LJHglJOcHuc?6IHEYR+@O=)4)t74#qc>zv6|Ab>w2>t|YRr;)pHQF|i z^3vpAWK|3ERV%;&@BuUdy`KFQSc}q_p^c`6d3PW|F<O|nngN__gxFT1j+RmYnZSBq z3-cTsfEFh2#=^HV?N&2(OMW<7m`z{=xCM^><WnyvKNVnPGA4%+iU0rr07*qoM6N<$ Eg3{jVI{*Lx diff --git a/game/engines/default/data/gfx/ui/checkbox.png b/game/engines/default/data/gfx/ui/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2c7e9ac0241190ab313510aa48cc90e8abc7eb GIT binary patch literal 1101 zcmV-T1hV^yP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z7CQ*ZKDF@x00YfQL_t(o!|j*NZX8t*g}=J@cF%Y`HfDh!j_v$OF@yzq9VEnSpe({` zus{eQ9tH`-A_6-J3qUL&D2`(mo}cbpRV;3M2pM~f?2)|TN;8XAtL~|)Q>RXgyK|K% zaK-1!0i@F&ZtmRi_wU_fbuhr(5Fn<Cs;&qUQB&L<Q^QO#%cv?MLW~tvU4uJjj=Rz8 z)x5X6%cl<?$hj5RxpmhCI6ORL(llgMrcJ|i+AumEb38g`G9EJ?jTuiyjK?D;;|Xok zVg^myFrADs%QS6+s*+-2xIW~|ufComoV-fHog25^351v!uD`+BaFrJ?4jGM(2_b@j zh;-R?*{cH3>kkMqqM9+ytgNikG!16PySsO}fByq+-q>MnZOF$TeJH25zzhii+;KCW z{qYRd7IDRLMkG++I_?f`q!36cQB{eY%e&&nbbNf0AwNBR%Erb9{az2%e0B>Q$1Kxo z=Ju_dtgR0*Gu#w+!!+ZTF;!f(a3dyCRiU}XRl%&Q(8;?kIZyd<Z=al7%<OCux;qZ2 zX12Gk@y^?C@x|w#U5e$`uW#dKynK1k5!Mz@fgm`}V6ejGwaulCTiX;ux}O8U-M}G8 zD1^K0aR)E05)tZN|7;Ej<-!;v5+kXqmy*4R5L2S6d#nz63pjuiVj{!}5h28Q`O8B< zB!EO>OiUYHPyvzd7YY|%Bg};WAmv{KGbQJIb_E2%-O;u|bDo>o3sC^aO=(+2bH>!p zUq+5&u4rzT!T|@ew&b?KY(WK1q&9S9v?aAby7rnWnsw0_N++`&kg%+6?OnV`s;UJ5 zyj<=lI<N!)-o=bDotn_R6bq!PMq-@l!evPqVgyOhwc&h6B+?;YmR~FvpB8V9gaEm1 zaWnKav==>P36&+M`d=#0ZT%q2wTvOexu&MmbXyQoObk{BOOWD-yE7OJh%wH|`<xQe z$uI&<oB8CyLmoeQLW~t5$jmVn!>MJ(c6w2kmlI>8N|A5A{T^)_L^IplTX<K6bJlSQ z@aTuf92_3;*U=Geo5|V!?Frp*vzb`cb)S6VlBZMpy*@izTm1aXuf(cHuRq}V!69#M zY@B1u-N20fy*>8#_i?<C(tS3^WkL#o5F&M5(O+GsnNCq{(VS<QN=K=K=LbwD;}ZWY zR}8SVwc{X2OtZ^Mmc>|fVu`yWL8$9Kb-#~hLp9^3vyqb!a5LP6Sk<hp4cUA2oh$^< z`8an#B;q&%q*Rp*UfJ^@1X5KKBy?NP3ShT?X5J|y4gC50Z?f>a;Qx=)t2loHic(Oo TnR8+F00000NkvXXu0mjfp=$IJ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_1.png b/game/engines/default/data/gfx/ui/dialogueV3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1304bdf94ef1611a34e595bc445edcb348e63f GIT binary patch literal 3494 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 Up?aR_W&i*H07*qoM6N<$f?d~c7XSbN literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_2.png b/game/engines/default/data/gfx/ui/dialogueV3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9304fd19f9cd9e7addb555238ab01f865e20917 GIT binary patch literal 3828 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 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_3.png b/game/engines/default/data/gfx/ui/dialogueV3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..59a35dd49c4c4c19ed7488842de7208c747d3240 GIT binary patch literal 3747 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 N002ovPDHLkV1oF$3W5Lt literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_4.png b/game/engines/default/data/gfx/ui/dialogueV3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bd251293fde8f59873fba81b97e5e6721536afd8 GIT binary patch literal 4106 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 IM6N<$f<f8Ca{vGU literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_5.png b/game/engines/default/data/gfx/ui/dialogueV3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..20ffaf2e23686b80a8a7da2759b7858e83f0f9d9 GIT binary patch literal 4362 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 Eg7vX)t^fc4 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_6.png b/game/engines/default/data/gfx/ui/dialogueV3_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c5f5eb73fc598cb5f29215fcf0759335ef69b3 GIT binary patch literal 4153 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 D^VsCZ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_7.png b/game/engines/default/data/gfx/ui/dialogueV3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b05f385bee8b43a2b4c6015e72298a20b9d4c444 GIT binary patch literal 3714 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 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_8.png b/game/engines/default/data/gfx/ui/dialogueV3_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7db710a7158edc54385476e9ac31d784d4715d53 GIT binary patch literal 3769 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 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/dialogueV3_9.png b/game/engines/default/data/gfx/ui/dialogueV3_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0edb8bda24dae50cde401536b02bf30da4df21d4 GIT binary patch literal 3371 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 BNkISr literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/minus.png b/game/engines/default/data/gfx/ui/minus.png index 4f6d721d5467bf90eccfa8096af6b25b83a003ec..f7f8bacf5a1b98a6c28f44494eb92e72b7f30a1c 100644 GIT binary patch delta 358 zcmV-s0h#{o0)YdNB!3BTNLh0L01Y|-01Y|;10o)U00004XF*Lt006O`VN5~y0000W zV@Og>004gs004z+009F@004lC002<6009R7002AP000~aa&Ig^0002@Nkl<Zc-rif zJxT*n6otS0ekO4yMn*(O&`N|rzzw9*6}SgikR8~$1^3_zY=7K<T@(ziL2Qhf%+Gt* z!af;DVdLq~xtH^CL{-^FhAs8?0U|K7hLJ+|HWZv7EoLsm)YeyH<ByA+fa~NIRg&VI z=a<jM?F|xtd695)eM&#g&=}X-W58wu%w)>l?SpqQDvz&y&JN!=$s={U;eJrEgM#s7 z!S~k(&Iniot6!>OSq7T*4-i|hs|AD-;~dT!7^cG0dycotrXpj6o^8pF?y*ad-5pmK z``%ZL(2au72BpYKYFr~C%s@uJa5_^2RRQMmzXg5<06<b!{t&nDQ2+n{07*qoM6N<$ Ef_b@=lmGw# delta 338 zcmZo<e#<mLrJk`k$lZxy-8q?;3=9lxN#5=*4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfn zjs#GUy~NYkmHieMlehxgFSo*lKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$MWH;iBtya7 z(>EYRFO?lAe#FzoF~s8Z(#f`5ha3dl>f^)m6>iL8t`L1ZC26{qX3-RpW!r>LABj<A zH(2{X&}DY#8t)V5e<dWar|tV&Hj^{p)TTQOGmi;aPU!aF7RdO_x5KdC!{wDj{=UcV z8C5#VU#-y(T5eX%8ni%S$HoGezGcf3dRCXlN%xoAzfH+h|NU0-fvu82i0>cY820X+ zWp&;%K=!M&WG%b;4N^iLY8*0aJ|BLOQ$EMdMQH8I9e?ak?FyafUaX?DmQi4$6vy1> eJZp<r*w!!{Z`0+toqcQ($g7^NelF{r5}E*kkAJ8D diff --git a/game/engines/default/data/gfx/ui/plus.png b/game/engines/default/data/gfx/ui/plus.png index 8e700c6fa51c5a9fc175a4504223ed343260524e..96659f95d199c1f9b09ec2ef3a5019a2b216e745 100644 GIT binary patch delta 779 zcmV+m1N8j&0-^?xB!3BTNLh0L01Y|-01Y|;10o)U00004XF*Lt006O`VN5~y0000W zV@Og>004gs004z+009F@004lC002<6009R7002AP000~aa&Ig^0007*Nkl<Zc-m}} zJ7`pS6vlt&|G#&f$(@XuBqp;m8X?A@S;0csEMjA2p%AgN5`WjuDrjM8XD8TcXJ@gj z?3Na~g2=9DK-?^2%=p-7VjN61lX>2`|A$3<I|oj4`1sD_`;O2hl#<d!QN{}cX%Pv1 zIIvYp&(;>2wdRP@3cTk{rHc2Spc_FtrFTtDX5`GV?F{eODNLT`{PeZr+-#XBn`UPA z6-#f|Hkx%K(0>YM{>yOZ?`OPxUIyB<>Q$e_9sYV)=1F<!6SnIF0v-`Moi<5a2Ok5T zM{`RoR;piN17II82G|cZ*D+qK6%bIOK+>#M6IrZOr@ok41M@+yN8dd(p`yZY9xEYu z$J*-uqC-O_0B;Qtapc&fO2;p5h)ocIRAGz<|Ex4*+ka5TpF5i3m#Lj(q6p_b&!5gS zQ+mhNK0~fIVsvtf?DitOevDmTMfc`V2d24r;a39ZJU3_4j1HA3<{gOzC6@6Y3>_mh zTMhobb)8VBKnvD5vRevF9H`T%y(3VvarJf_(`;E12Z)f;f(VEg9FEwvaR!Wmpj`*s zLInYVR)3J|5pF-t6KW4YoCxW_aQMd>gE@sw9COP7kC!7_9U-j^(eM>?6Qnm2)C&D! z6eofQoQIxGN=AmWocy`M{yqH^$A04MrF;BwKlWjuFxF9sTEv8npw==6Ym4S98M7Jv z+pc1y@D82nB|3D1#?^{jUVU)<ql|A>(2&drz<;9;`S}+_Jb)H9c2p?_@_oKIwE6ef z-x#T@l>tGZnP}?G4wyPhDfaCyGP-T>J12IHC<T9(`+2yq#wjji)}16tlf7eoSlj01 zQvIXtyFHVXw)BPL&Wjj}&!u9ConDBI8W8~z#Y(k<_n!9y0MsBAhD)<2F#rGn07*qo JL<FuvV1hq`UF84( delta 348 zcmZ3)_MK^hN<Cw7kh>GZx^prw85kJYlDyqr82*Fcg1yTp14TFsJR*x37`TN&n2}-D z90{Nxdx@v7EBh@jCUFG~wFxzOKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$MWH;iBtya7 z(>EYRFO?lAe$LayF~s8Z(qKcrrU0JW`oAC9)YcU-tWzp6$vb0IAi_4|W{>iTP>Y5& zD)Stt*9A+f{;2ev{QuYG>(`g4a@^W>msvyQSpbv9%t{u9NspKtr2jb|I%Dhk-1?Bf zPW@@cg>IR50;J5J?EI4{5~jc&p#5*khZVgiPD&oFYJ9u8>V3?CJN&+8vz8PxC*OQt z+P5oIv0Au&>W>12Qz_Qv&TjizoMdvIvz+5*>3d~sc{8{FRL2B4&wpA+^<RfauG8Yw q@S9Ot!f@b>ZNrHk<MMM8uRLIVon{v5`PR}5<Y`Y=KbLh*2~7ZB2!{6n diff --git a/game/engines/default/data/gfx/ui/scrollbar-sel.png b/game/engines/default/data/gfx/ui/scrollbar-sel.png index 21ebe87149a225adf15a59dd4d1edbd3b6020ae1..65abf84a55ae61d337ca206ad96f9375e8b5838b 100644 GIT binary patch literal 1009 zcmV<N0}lL&P)<h;3K|Lk000e1NJLTq000;O000vR1^@s6im=T)00009a7bBm000d- z000d-0Rti)g#Z8m1ZP1_K>z@;o?%Qu_W%F@AY({UO#lFY3;+OyYXAWQNdN$VivR#n zwEzJI{{R3x-2ea_2y$;MKmY&(XGugsRCwC7l)rBrMHq&knb}|G+p{^_cXr|slE{%G zOi0quQ6Yrr=z~NTA<?-5@dqF(8af(8L67Jt5K2jbB_x7uM_92PU+kRkZtwPXXJ==J z;w~1J>?-7KK27sIdghZ};haMV!GClA!RPM14?kjQsZD7uI?vE~hS52N&M-xRtt?VX zY*}JVK~);0Quuy=a}b6etJf~$O?Sq?@^rGhwaMePJ6u_Nhs79<4!Q`HpgavKWt{F& z7!A$=V2noR8PfAnQd6&m1bz*v{8PX(@By$2kdIUT`TGwZ{_+!7Z@x{SAj>qBHRQt{ z>9~ihDuk4TQ3EM`Y-K2Qf#*SUzRkuLUt!XxXAD+>y8t*x_h_GP=Lw7LOT7Q_2Cp?{ z81*{X$}vt)s7eD!q$kmN#yC0Q%C$FXw=eO-cVCl@4vA-KNY06K6-H~aG@-M%#qYoU zOt+h0stRK?Gxd2^uHPmI0&tGG`4w*5x<{+kA{{)T7AjWSF^xDnH8=|ZtSzzDFdUq) z_2)x$X}G`f8Tlc&%2KZ@T9+5-9CT^U&Qli0Jl}gnZ6-!4g;YMJvF97$9F?_LYq4cP z(mP^%^H+ZS=3Cyq1MBw`(GrYHSiZ49k~}3j-bE>e@_bC`=sX{h4ATn?oTG9M=iCHh zEk!=&;PEC8KK+tr>ne@K>ojJYjQab;HIJ30S?ZBTWlKz<N%}qNHUDA&&LN~gDUTqC z@Pd%il%(m9(rnW|-bG49<s4D1PQTmY_2nk5c8k&!<XMU@FSr3Xq?Aah@Pm+Ay@B$4 zq*O>8p6BBS(Ztjg^iPf$^t&8)V%}O`!xTArmJ)jIe1H&=AdK+*fG~=w)f)&Y0YMN( z_(3pvR}~0>5Q6crPp|uoJWojm1M)1r_=}Y1GdJHRJlJPA95C8S5JJA7Pwgg#&N<4` zV02ENr)>Wvh~qg94?8R_E}RdjDodd?tG8|wgb`slxq&G(#uNlW$V@zk6oR7AWaAO( zXh50_uvN)ivrT_2sKploDh4OdKuBu!7!%DPm4_*EOrcTAV>}ulgrqbDh0f4Aqbv#> zj#2-ZokyFzadRCpZPUBJC#O~Ma@hpFpUzW*5wOGmlbz|l$;qY$XX^STGXgp<Ai_;M f{Z&Qsiu3OP<6E@x$#RSU00000NkvXXu0mjflV81= literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^96-#<!3HENCaw(yQjEnx?oJHr&dIz4a@dl*-CY>0 z7-lo@7i$OJ0E%!HctjR6FmQK*Fr)d&(`$i(>?NMQuI#tC7==tY12nHC0EJ{TLn2C? z^K)}k^GbkR1_tM%)Wnk16ovB4k_-iRPv3wPy;OFfc%7$<V+hCf*j_`fLk=RW&rh2* zhG;W3uMK^-Z2Curc?VCkwB)*|I6Y|h6)6+^BepDHdF4?X3ClRX-9?cm{W7&a%*j$S zHW@u#@vtT<cI&EbFDt*Z&6E7ybM0%?Tm|U~^2`a}J|)y8Mlb~b6A)zOT(|%0?@Qvn gHLB0L%kFNiWv-MooEO}3eFn&hp00i_>zopr0Dk*nYXATM diff --git a/game/engines/default/data/gfx/ui/scrollbar.png b/game/engines/default/data/gfx/ui/scrollbar.png index c20574112f672353bab2e0f58fb4d66fbea4e908..ebb91fdb2b17413c482611dabbadb0ec346c65c0 100644 GIT binary patch delta 125 zcmcc0IG=HXI2Q*88v_Hw5&nJM6BWfW{xbmKg1yTp1I0KCJR*x37<jEfn2}jYt`#WA zUgGKN%6^+kQdGn8x2G3SghAfZ#W6(Ua`K=5|LvKTl^=Vu={)%V|Nk=|9+m?i0vH%B WZeZu_f6Vp?q}J2b&t;ucLK6TCDks<g delta 180 zcmbQwc$IO2I2R)a8v_HwV}|$66BWhktr%uA@E2<b-T;bm7I;J!Gca&>f-s}`$<u3r zg6t)pzOL-IxEO`mtV?`$E&~e5W`;zRIOpf)rskCZxeN@>MX8A;sVNHOnI#zt?w-B@ zDSD~wKye*U7sn8e>x_yF_x>}26i&W+G4#XtU!fnq{SJNj_6x%Y`R~71fB5!m^_i5w Y)uvBHnF0^5_5msMboFyt=akR{07$qz^8f$< diff --git a/game/engines/default/data/gfx/ui/scrollbar_bottom.png b/game/engines/default/data/gfx/ui/scrollbar_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..70772188ba2cb979e9159f70724bfe184b27d286 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^96-#+!3HFS!eXZZDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#X#*=Ak4_DB-aWQWH0gbb!ETJBq^%Fv-Ve?GEgYi)5S4F;_}%E z8+jWXc$nY*Z=ZT&eqSHsjK*19msKV?>Sq*A*07wrC_u<V?}f{ykPj2>nNKZqwUy&e zn}6V%p*ee+vC*ps2c%9hEjU(Fl3-rTd-|*cv!DHpNpb%R7*89C%!$?G-3zpc!PC{x JWt~$(69A!$MWFxy literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/scrollbar_top.png b/game/engines/default/data/gfx/ui/scrollbar_top.png new file mode 100644 index 0000000000000000000000000000000000000000..eb72163c5bd6ad14a8f29104cf604145aacd2fac GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^96-#+!3HFS!eXZZDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#X#*=Ak4_DB-aWQWH0gbb!ETJBq^#P7w7yx8z>a(>Eak7artbY zBUgg~4~zQ2)xTOF-Tc4*`1BH639nn1c5^2xTB~GFGT6+-v7)BvfQoIj&N&Y4gv=8S zFRn7OZ?<6$f3@Job)Gv9yDr-?ss8u9*HEir$#~A`^aK9`+~#S*mwo^FhXE~O@O1Ta JS?83{1OUpTM~VOd literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel1.png b/game/engines/default/data/gfx/ui/selector-sel1.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ddd760d866b7ebd5804f3bdeb22bda476ff6e5 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0)v)7srr_TRHuE1selJT+ZM7-ZTFQhl-J}h6AS?qm@9GqqWwARSxV)miKpSCm0-S zvwnW&P1e?r|7!NWfA?8<Z`}MKuBB{>jvWvD=S*Om&HuopZYl%E9iP9S3cPzVW)w73 zFdeg){EUrhsfQ|8V54KyjyoAMQ@B+owCJoll4!Q-_UY6{fo&7N+zVtq{xaZnp?M_t euKVu&j0|5m?YydE*(L$q$l&Sf=d#Wzp$P#0&R|dg literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel2.png b/game/engines/default/data/gfx/ui/selector-sel2.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1f15423cdb0b46346114be54bfebdd8a8ba1d2 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3J%i(^Q|tt68b`#;QYY;1h^zn*PP1M74ar-Si-v?Bif{ok(Dv~1qf_wV=r@cr@k wyL8xG13m7?$+c^^Boeu{Sg@!)+{|Ra@Fi0swBpWdaiEC|p00i_>zopr0AII1ng9R* literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel3.png b/game/engines/default/data/gfx/ui/selector-sel3.png new file mode 100644 index 0000000000000000000000000000000000000000..a18adda6ba5476883fe44f56357d440dd6ab279c GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;H;5i(^Q|t(-nXKE^}|m;2}UD``c!-)Ot^_Da<A3l@#qI~otks%-jQ>%Vc6i;vOK zlsL8EZNFD9St3*`Bv^8H^0RG=V@=yvElBtjF6^w~{Nq5MgRgMa2_GIqp&v|(xP2}j zyvRQ5M_ZP7|HhCBEt&pN49~XSF`rTxxIkf3T!`1hnA<-;{rDZTV)H4^9edaq+Wlgc U^d=O{0lJLA)78&qol`;+0I9QJg8%>k literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel4.png b/game/engines/default/data/gfx/ui/selector-sel4.png new file mode 100644 index 0000000000000000000000000000000000000000..164fd1ef9bcd9824a77bce82e476856dd0cc7e13 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3h<i(^Q|tt1|=ANLF2{(b-HewVsLMC47$88c@}&WM~LF=K{=q=bZ|<P3=i4T4iS rpDJk{;A0CpSkJ@yKX7J%UIN3@QtsZ>tTX2T4P)?h^>bP0l+XkK`^`5+ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel5.png b/game/engines/default/data/gfx/ui/selector-sel5.png new file mode 100644 index 0000000000000000000000000000000000000000..7d804e9fa0edcee3aa360c99d033cc4270b75746 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3+|i(^Q|tt68b`#;QQ<WERaU}$S+0!lFa|If@Yc@I-x>b1J-Aik%opUXO@geCxT Ct0ubu literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel6.png b/game/engines/default/data/gfx/ui/selector-sel6.png new file mode 100644 index 0000000000000000000000000000000000000000..4d20de19463dd780848e002029e49ed78b4caec9 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3({i(^Q|tt68b`#;Qo_`klb{{KJYKYu^>KYV|GKhOU9|0xN3^A9diJ#p*gkpm#W sakQY}fq|g_LrL(5`4X%eT>>%(7~Efqc|0qe334cdr>mdKI;Vst01)FsKmY&$ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel7.png b/game/engines/default/data/gfx/ui/selector-sel7.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbb01ff4dd216cc0e90e6513c2c8dfb6dee8e34 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0-(-7srr_TQ$A5T!#WASkk}SZsBmcaO#q9MSIKvHSrG%;tpA_=*@62aa=Ut^}zgN zx!Z0ex_`A|SoO|N_Mq|)U%nN6xj9m$K5of6jy22&UlqKbsk>e0l;!0`75#z}8pF8C zmTR9)^^X*}!NlpA!k}2>^@Zj6x}!I5$cf0$F7UHZozpY<!B5r`PKS-nBowk=)K~H{ ZOs!Vi_xpYBETHokJYD@<);T3K0RTAaUN!&# literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel8.png b/game/engines/default/data/gfx/ui/selector-sel8.png new file mode 100644 index 0000000000000000000000000000000000000000..48ad10102b61e0e4cc2d1cb21ac626d4e58d541f GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3V*i(^Q|t)wqqzwBo+@+bT}^vj-oJri?xIZuV?oa&E4`<wXp*FBi__xynahmIU+ z@t@b&+Sxks;s5$KToRHJ5)l$0AXzx$!~8}@1BTNEf-|Lhc4h)iX7F_Nb6Mw<&;$Un CpFes4 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector-sel9.png b/game/engines/default/data/gfx/ui/selector-sel9.png new file mode 100644 index 0000000000000000000000000000000000000000..36ed869166a5d341cc23b90b8be6353a618e3e8a GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0)>=7srr_TP=Ooe2#%449{i0?+sYtk>jj+QPZ@_TVVG_-s%m^(g816I{p8As(UVX zRC~|4E0fQhD0!zXwc>%+mP;+B8#vb=na;qm!#Pj2Unx1DRQzwB&!K`6*Ck?`HYL?t zey)kJcysK_t&=)A{pxpQW$awfz5ROZXl6Ha%EP!6h9eRiFL_*Qh;$KPXj;|86jrVx qmG)`&H3f|YUVoW7%vk<?kYzAQwkuq))8G}*y$qhNelF{r5}E+4eP{dt literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector1.png b/game/engines/default/data/gfx/ui/selector1.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ddd760d866b7ebd5804f3bdeb22bda476ff6e5 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0)v)7srr_TRHuE1selJT+ZM7-ZTFQhl-J}h6AS?qm@9GqqWwARSxV)miKpSCm0-S zvwnW&P1e?r|7!NWfA?8<Z`}MKuBB{>jvWvD=S*Om&HuopZYl%E9iP9S3cPzVW)w73 zFdeg){EUrhsfQ|8V54KyjyoAMQ@B+owCJoll4!Q-_UY6{fo&7N+zVtq{xaZnp?M_t euKVu&j0|5m?YydE*(L$q$l&Sf=d#Wzp$P#0&R|dg literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector2.png b/game/engines/default/data/gfx/ui/selector2.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1f15423cdb0b46346114be54bfebdd8a8ba1d2 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3J%i(^Q|tt68b`#;QYY;1h^zn*PP1M74ar-Si-v?Bif{ok(Dv~1qf_wV=r@cr@k wyL8xG13m7?$+c^^Boeu{Sg@!)+{|Ra@Fi0swBpWdaiEC|p00i_>zopr0AII1ng9R* literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector3.png b/game/engines/default/data/gfx/ui/selector3.png new file mode 100644 index 0000000000000000000000000000000000000000..a18adda6ba5476883fe44f56357d440dd6ab279c GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP;H;5i(^Q|t(-nXKE^}|m;2}UD``c!-)Ot^_Da<A3l@#qI~otks%-jQ>%Vc6i;vOK zlsL8EZNFD9St3*`Bv^8H^0RG=V@=yvElBtjF6^w~{Nq5MgRgMa2_GIqp&v|(xP2}j zyvRQ5M_ZP7|HhCBEt&pN49~XSF`rTxxIkf3T!`1hnA<-;{rDZTV)H4^9edaq+Wlgc U^d=O{0lJLA)78&qol`;+0I9QJg8%>k literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector4.png b/game/engines/default/data/gfx/ui/selector4.png new file mode 100644 index 0000000000000000000000000000000000000000..164fd1ef9bcd9824a77bce82e476856dd0cc7e13 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3h<i(^Q|tt1|=ANLF2{(b-HewVsLMC47$88c@}&WM~LF=K{=q=bZ|<P3=i4T4iS rpDJk{;A0CpSkJ@yKX7J%UIN3@QtsZ>tTX2T4P)?h^>bP0l+XkK`^`5+ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector5.png b/game/engines/default/data/gfx/ui/selector5.png new file mode 100644 index 0000000000000000000000000000000000000000..7d804e9fa0edcee3aa360c99d033cc4270b75746 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3+|i(^Q|tt68b`#;QQ<WERaU}$S+0!lFa|If@Yc@I-x>b1J-Aik%opUXO@geCxT Ct0ubu literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector6.png b/game/engines/default/data/gfx/ui/selector6.png new file mode 100644 index 0000000000000000000000000000000000000000..4d20de19463dd780848e002029e49ed78b4caec9 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3({i(^Q|tt68b`#;Qo_`klb{{KJYKYu^>KYV|GKhOU9|0xN3^A9diJ#p*gkpm#W sakQY}fq|g_LrL(5`4X%eT>>%(7~Efqc|0qe334cdr>mdKI;Vst01)FsKmY&$ literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector7.png b/game/engines/default/data/gfx/ui/selector7.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbb01ff4dd216cc0e90e6513c2c8dfb6dee8e34 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0-(-7srr_TQ$A5T!#WASkk}SZsBmcaO#q9MSIKvHSrG%;tpA_=*@62aa=Ut^}zgN zx!Z0ex_`A|SoO|N_Mq|)U%nN6xj9m$K5of6jy22&UlqKbsk>e0l;!0`75#z}8pF8C zmTR9)^^X*}!NlpA!k}2>^@Zj6x}!I5$cf0$F7UHZozpY<!B5r`PKS-nBowk=)K~H{ ZOs!Vi_xpYBETHokJYD@<);T3K0RTAaUN!&# literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector8.png b/game/engines/default/data/gfx/ui/selector8.png new file mode 100644 index 0000000000000000000000000000000000000000..48ad10102b61e0e4cc2d1cb21ac626d4e58d541f GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zP_3V*i(^Q|t)wqqzwBo+@+bT}^vj-oJri?xIZuV?oa&E4`<wXp*FBi__xynahmIU+ z@t@b&+Sxks;s5$KToRHJ5)l$0AXzx$!~8}@1BTNEf-|Lhc4h)iX7F_Nb6Mw<&;$Un CpFes4 literal 0 HcmV?d00001 diff --git a/game/engines/default/data/gfx/ui/selector9.png b/game/engines/default/data/gfx/ui/selector9.png new file mode 100644 index 0000000000000000000000000000000000000000..36ed869166a5d341cc23b90b8be6353a618e3e8a GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4? zQ0)>=7srr_TP=Ooe2#%449{i0?+sYtk>jj+QPZ@_TVVG_-s%m^(g816I{p8As(UVX zRC~|4E0fQhD0!zXwc>%+mP;+B8#vb=na;qm!#Pj2Unx1DRQzwB&!K`6*Ck?`HYL?t zey)kJcysK_t&=)A{pxpQW$awfz5ROZXl6Ha%EP!6h9eRiFL_*Qh;$KPXj;|86jrVx qmG)`&H3f|YUVoW7%vk<?kYzAQwkuq))8G}*y$qhNelF{r5}E+4eP{dt literal 0 HcmV?d00001 diff --git a/game/engines/default/engine/ui/Base.lua b/game/engines/default/engine/ui/Base.lua index 555d008115..62f0291714 100644 --- a/game/engines/default/engine/ui/Base.lua +++ b/game/engines/default/engine/ui/Base.lua @@ -26,6 +26,7 @@ module(..., package.seeall, class.make) local gfx_prefix = "/data/gfx/" local cache = {} +local tcache = {} -- Default font _M.font = core.display.newFont("/data/font/Vera.ttf", 12) @@ -61,3 +62,50 @@ function _M:getImage(file) cache[file] = {s, s:getSize()} return unpack(cache[file]) end + +function _M:getTexture(file) + if tcache[file] then return tcache[file] end + local i, w, h = self:getImage(file) + if not i then return end + local t, tw, th = i:glTexture() + local r = {t=t, w=w, h=h, tw=tw, th=th} + tcache[file] = r + return r +end + +function _M:makeFrame(base, w, h) + local f = {} + if base then + f.b7 = self:getTexture(base.."7.png") + f.b9 = self:getTexture(base.."9.png") + f.b1 = self:getTexture(base.."1.png") + f.b3 = self:getTexture(base.."3.png") + f.b8 = self:getTexture(base.."8.png") + f.b4 = self:getTexture(base.."4.png") + f.b2 = self:getTexture(base.."2.png") + f.b6 = self:getTexture(base.."6.png") + f.b5 = self:getTexture(base.."5.png") + end + f.w = w + f.h = h + return f +end + +function _M:drawFrame(f, x, y, r, g, b, a) + if not f.b7 then return end + + -- Sides + f.b8.t:toScreenFull(x + f.b7.w, y, f.w - f.b7.w - f.b9.w + 1, f.b8.h, f.b8.tw, f.b8.th, r, g, b, a) + f.b2.t:toScreenFull(x + f.b7.w, y + f.h - f.b3.h, f.w - f.b7.w - f.b9.w + 1, f.b2.h, f.b2.tw, f.b2.th, r, g, b, a) + f.b4.t:toScreenFull(x, y + f.b7.h, f.b4.w, f.h - f.b7.h - f.b1.h + 1, f.b4.tw, f.b4.th, r, g, b, a) + f.b6.t:toScreenFull(x + f.w - f.b9.w, y + f.b7.h, f.b6.w, f.h - f.b7.h - f.b1.h + 1, f.b6.tw, f.b6.th, r, g, b, a) + + -- Body + f.b5.t:toScreenFull(x + f.b7.w, y + f.b7.h, f.w - f.b7.w - f.b3.w + 1, f.h - f.b7.h - f.b3.h + 1, f.b6.tw, f.b6.th, r, g, b, a) + + -- Corners + f.b7.t:toScreenFull(x, y, f.b7.w, f.b7.h, f.b7.tw, f.b7.th, r, g, b, a) + f.b1.t:toScreenFull(x, y + f.h - f.b1.h, f.b1.w, f.b1.h, f.b1.tw, f.b1.th, r, g, b, a) + f.b9.t:toScreenFull(x + f.w - f.b9.w, y, f.b9.w, f.b9.h, f.b9.tw, f.b9.th, r, g, b, a) + f.b3.t:toScreenFull(x + f.w - f.b3.w, y + f.h - f.b3.h, f.b3.w, f.b3.h, f.b3.tw, f.b3.th, r, g, b, a) +end diff --git a/game/engines/default/engine/ui/Button.lua b/game/engines/default/engine/ui/Button.lua index a105864189..9297469b69 100644 --- a/game/engines/default/engine/ui/Button.lua +++ b/game/engines/default/engine/ui/Button.lua @@ -24,6 +24,11 @@ local Focusable = require "engine.ui.Focusable" --- A generic UI button module(..., package.seeall, class.inherit(Base, Focusable)) +frame_ox1 = -5 +frame_ox2 = 5 +frame_oy1 = -5 +frame_oy2 = 5 + function _M:init(t) self.text = assert(t.text, "no button text") self.fct = assert(t.fct, "no button fct") @@ -36,51 +41,37 @@ function _M:generate() self.mouse:reset() self.key:reset() - local ls, ls_w, ls_h = self:getImage("ui/button-left-sel.png") - local ms, ms_w, ms_h = self:getImage("ui/button-middle-sel.png") - local rs, rs_w, rs_h = self:getImage("ui/button-right-sel.png") - local l, l_w, l_h = self:getImage("ui/button-left.png") - local m, m_w, m_h = self:getImage("ui/button-middle.png") - local r, r_w, r_h = self:getImage("ui/button-right.png") - -- Draw UI self.font:setStyle("bold") local w, h = self.font:size(self.text) if self.force_w then w = self.force_w end - local fw, fh = w + ls_w + rs_w, ls_h - local ss = core.display.newSurface(fw, fh) - local s = core.display.newSurface(fw, fh) - - ss:merge(ls, 0, 0) - for i = ls_w, fw - rs_w do ss:merge(ms, i, 0) end - ss:merge(rs, fw - rs_w, 0) - ss:drawColorStringBlended(self.font, self.text, ls_w, (fh - h) / 2, 255, 255, 255) + self.w, self.h = w - frame_ox1 + frame_ox2, h - frame_oy1 + frame_oy2 - s:merge(l, 0, 0) - for i = l_w, fw - r_w do s:merge(m, i, 0) end - s:merge(r, fw - r_w, 0) - s:drawColorStringBlended(self.font, self.text, ls_w, (fh - h) / 2, 255, 255, 255) + local s = core.display.newSurface(w, h) + s:drawColorStringBlended(self.font, self.text, 0, 0, 255, 255, 255, true) + self.tex = {s:glTexture()} self.font:setStyle("normal") -- Add UI controls - self.mouse:registerZone(0, 0, fw, fh, function(button, x, y, xrel, yrel, bx, by, event) if button == "left" and event == "button" then self.fct() end end) + self.mouse:registerZone(0, 0, self.w, self.h, function(button, x, y, xrel, yrel, bx, by, event) if button == "left" and event == "button" then self.fct() end end) self.key:addBind("ACCEPT", function() self.fct() end) - self.tex, self.tex_w, self.tex_h = s:glTexture() - self.stex = ss:glTexture() - self.rw, self.rh = fw, fh - self.w, self.h = fw+10, fh+10 + self.rw, self.rh = w, h + self.frame = self:makeFrame("ui/button", self.w, self.h) + self.frame_sel = self:makeFrame("ui/button_sel", self.w, self.h) end function _M:display(x, y, nb_keyframes) if self.focused then - self.stex:toScreenFull(x+5, y+5, self.rw, self.rh, self.tex_w, self.tex_h) + self:drawFrame(self.frame_sel, x, y) + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3]) else - self.tex:toScreenFull(x+5, y+5, self.rw, self.rh, self.tex_w, self.tex_h) + self:drawFrame(self.frame, x, y) if self.focus_decay then - self.stex:toScreenFull(x+5, y+5, self.rw, self.rh, self.tex_w, self.tex_h, 1, 1, 1, self.focus_decay / self.focus_decay_max_d) + self:drawFrame(self.frame_sel, x, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d) self.focus_decay = self.focus_decay - nb_keyframes if self.focus_decay <= 0 then self.focus_decay = nil end end + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3]) end end diff --git a/game/engines/default/engine/ui/Checkbox.lua b/game/engines/default/engine/ui/Checkbox.lua index 17095f7be3..39bb919c73 100644 --- a/game/engines/default/engine/ui/Checkbox.lua +++ b/game/engines/default/engine/ui/Checkbox.lua @@ -37,44 +37,21 @@ function _M:generate() self.mouse:reset() self.key:reset() - local ls, ls_w, ls_h = self:getImage("ui/textbox-left-sel.png") - local ms, ms_w, ms_h = self:getImage("ui/textbox-middle-sel.png") - local rs, rs_w, rs_h = self:getImage("ui/textbox-right-sel.png") - local l, l_w, l_h = self:getImage("ui/textbox-left.png") - local m, m_w, m_h = self:getImage("ui/textbox-middle.png") - local r, r_w, r_h = self:getImage("ui/textbox-right.png") - local c, c_w, c_h = self:getImage("ui/textbox-cursor.png") - local chk, chk_w, chk_h = self:getImage("ui/checkbox-ok.png") + self.check = self:getTexture("ui/checkbox.png") + self.tick = self:getTexture("ui/checkbox-ok.png") self.h = r_h -- Draw UI - local title_w = self.font:size(self.title) - self.w = title_w + chk_w - local w, h = self.w, r_h - local fw, fh = w - title_w - ls_w - rs_w, self.font_h - self.fw, self.fh = fw, fh - self.text_x = ls_w + title_w - self.text_y = (h - fh) / 2 - self.max_display = math.floor(fw / self.font_mono_w) - local ss = core.display.newSurface(w, h) - local s = core.display.newSurface(w, h) + self.title_w, self.title_h = self.font:size(self.title) + self.w, self.h = self.title_w + self.check.w, math.max(self.font_h, self.check.h) - ss:merge(ls, title_w, 0) - for i = title_w + ls_w, w - rs_w do ss:merge(ms, i, 0) end - ss:merge(rs, w - rs_w, 0) - ss:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true) - - s:merge(l, title_w, 0) - for i = title_w + l_w, w - r_w do s:merge(m, i, 0) end - s:merge(r, w - r_w, 0) - s:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true) - - self.chk_tex, self.chk_tex_w, self.chk_tex_h = chk:glTexture() - self.chk_w, self.chk_h = chk_w, chk_h + local s = core.display.newSurface(self.title_w, self.title_h) + s:drawColorStringBlended(self.font, self.title, 0, 0, 255, 255, 255, true) + self.tex = {s:glTexture()} -- Add UI controls - self.mouse:registerZone(title_w + ls_w, 0, fw, h, function(button, x, y, xrel, yrel, bx, by, event) + self.mouse:registerZone(0, 0, self.w, self.h, function(button, x, y, xrel, yrel, bx, by, event) if event == "button" then self:select() end @@ -83,9 +60,6 @@ function _M:generate() self.key:addCommands{ _SPACE = function() self:select() end, } - - self.tex, self.tex_w, self.tex_h = s:glTexture() - self.stex = ss:glTexture() end function _M:select() @@ -93,17 +67,18 @@ function _M:select() end function _M:display(x, y, nb_keyframes) + self.tex[1]:toScreenFull(x, y + (self.h - self.title_h) / 2, self.title_w, self.title_h, self.tex[2], self.tex[3]) if self.focused then - self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h) + self.check.t:toScreenFull(x + self.title_w, y, self.check.w, self.check.h, self.check.tw, self.check.th) else - self.tex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h) + self.check.t:toScreenFull(x + self.title_w, y, self.check.w, self.check.h, self.check.tw, self.check.th) if self.focus_decay then - self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h, 1, 1, 1, self.focus_decay / self.focus_decay_max_d) +-- self.check.t:toScreenFull(x + self.title_w, y, self.check.w, self.check.h, self.check.tw, self.check.th) self.focus_decay = self.focus_decay - nb_keyframes if self.focus_decay <= 0 then self.focus_decay = nil end end end if self.checked then - self.chk_tex:toScreenFull(x + self.w - self.chk_w, y, self.chk_w, self.chk_h, self.chk_tex_w, self.chk_tex_h) + self.tick.t:toScreenFull(x + self.title_w, y, self.tick.w, self.tick.h, self.tick.tw, self.tick.th) end end diff --git a/game/engines/default/engine/ui/Dialog.lua b/game/engines/default/engine/ui/Dialog.lua index a2dbc4420f..9fd7bb980c 100644 --- a/game/engines/default/engine/ui/Dialog.lua +++ b/game/engines/default/engine/ui/Dialog.lua @@ -128,6 +128,25 @@ function _M:init(title, w, h, x, y, alpha, font, showup) self.__showup = 2 end + self.frame = self.frame or { + b7 = "ui/dialogueV3_7.png", + b9 = "ui/dialogueV3_9.png", + b1 = "ui/dialogueV3_1.png", + b3 = "ui/dialogueV3_3.png", + b4 = "ui/dialogueV3_4.png", + b6 = "ui/dialogueV3_6.png", + b8 = "ui/dialogueV3_8.png", + b2 = "ui/dialogueV3_2.png", + b5 = "ui/dialogueV3_5.png", + shadow = {x=15, y=15, a=0.5}, + a = 1, + } + self.frame.ox1 = self.frame.ox1 or -42 + self.frame.ox2 = self.frame.ox2 or 42 + self.frame.oy1 = self.frame.oy1 or -42 + self.frame.oy2 = self.frame.oy2 or 42 + self.frame.a = self.frame.a or 1 + self.uis = {} self.focus_ui = nil self.focus_ui_id = 0 @@ -153,35 +172,37 @@ end function _M:generate() local gamew, gameh = core.display.size() - local s = core.display.newSurface(self.w, self.h) - s:alpha(true) - s:erase(0, 0, 0, self.alpha) - - local b7, b7_w, b7_h = self:getImage("border_7.png") - local b9, b9_w, b9_h = self:getImage("border_9.png") - local b1, b1_w, b1_h = self:getImage("border_1.png") - local b3, b3_w, b3_h = self:getImage("border_3.png") - local b8, b8_w, b8_h = self:getImage("border_8.png") - local b4, b4_w, b4_h = self:getImage("border_4.png") - - s:merge(b7, 0, 0) - s:merge(b9, self.w - b9_w, 0) - s:merge(b1, 0, self.h - b1_h) - s:merge(b3, self.w - b9_w, self.h - b3_h) - - for i = b7_w, self.w - b9_w do - s:merge(b8, i, 0) - s:merge(b8, i, 20) - s:merge(b8, i, self.h - 3) - end - for i = b7_h, self.h - b1_h do - s:merge(b4, 0, i) - s:merge(b4, self.w - 3, i) + + self.frame.w = self.w - self.frame.ox1 + self.frame.ox2 + self.frame.h = self.h - self.frame.oy1 + self.frame.oy2 + + self.b7 = self:getTexture(self.frame.b7) + self.b9 = self:getTexture(self.frame.b9) + self.b1 = self:getTexture(self.frame.b1) + self.b3 = self:getTexture(self.frame.b3) + self.b8 = self:getTexture(self.frame.b8) + self.b4 = self:getTexture(self.frame.b4) + self.b2 = self:getTexture(self.frame.b2) + self.b6 = self:getTexture(self.frame.b6) + self.b5 = self:getTexture(self.frame.b5) + + self.overs = {} + for i, o in ipairs(self.frame.overlays or {}) do + local ov = self:getTexture(o.image) + if o.gen then + o.gen(ov, self) + else + ov.x = o.x + ov.y = o.y + ov.a = o.a + end + self.overs[#self.overs+1] = ov end +--[[ local tw, th = self.font_bold:size(self.title) s:drawColorStringBlended(self.font_bold, self.title, (self.w - tw) / 2, 4, 255,255,255) - +]] if self.absolute then self.mouse:registerZone(0, 0, gamew, gameh, function(button, x, y, xrel, yrel, bx, by, event) self:mouseEvent(button, x, y, xrel, yrel, bx - self.display_x, by - self.display_y, event) end) else @@ -196,8 +217,6 @@ function _M:generate() MOVE_LEFT = "MOVE_UP", MOVE_RIGHT = "MOVE_DOWN", } - - self.tex, self.tex_w, self.tex_h = s:glTexture() end function _M:loadUI(t) @@ -362,32 +381,67 @@ function _M:makeKeyChar(i) end end +function _M:drawFrame(x, y, r, g, b, a) + x = x + self.frame.ox1 + y = y + self.frame.oy1 + + -- Corners + self.b7.t:toScreenFull(x, y, self.b7.w, self.b7.h, self.b7.tw, self.b7.th, r, g, b, a) + self.b1.t:toScreenFull(x, y + self.frame.h - self.b1.h, self.b1.w, self.b1.h, self.b1.tw, self.b1.th, r, g, b, a) + self.b9.t:toScreenFull(x + self.frame.w - self.b9.w, y, self.b9.w, self.b9.h, self.b9.tw, self.b9.th, r, g, b, a) + self.b3.t:toScreenFull(x + self.frame.w - self.b3.w, y + self.frame.h - self.b3.h, self.b3.w, self.b3.h, self.b3.tw, self.b3.th, r, g, b, a) + + -- Sides + self.b8.t:toScreenFull(x + self.b7.w, y, self.frame.w - self.b7.w - self.b9.w, self.b8.h, self.b8.tw, self.b8.th, r, g, b, a) + self.b2.t:toScreenFull(x + self.b7.w, y + self.frame.h - self.b3.h, self.frame.w - self.b7.w - self.b9.w, self.b2.h, self.b2.tw, self.b2.th, r, g, b, a) + self.b4.t:toScreenFull(x, y + self.b7.h, self.b4.w, self.frame.h - self.b7.h - self.b1.h, self.b4.tw, self.b4.th, r, g, b, a) + self.b6.t:toScreenFull(x + self.frame.w - self.b9.w, y + self.b7.h, self.b6.w, self.frame.h - self.b7.h - self.b1.h, self.b6.tw, self.b6.th, r, g, b, a) + + -- Body + self.b5.t:toScreenFull(x + self.b7.w, y + self.b7.h, self.frame.w - self.b7.w - self.b3.w , self.frame.h - self.b7.h - self.b3.h, self.b6.tw, self.b6.th, r, g, b, a) + + -- Overlays + for i = 1, #self.overs do + local ov = self.overs[i] + ov.t:toScreenFull(x + ov.x, y + ov.y, ov.w , ov.h, ov.tw, ov.th, r, g, b, a * ov.a) + end +end + function _M:toScreen(x, y, nb_keyframes) if self.__hidden then return end - -- Draw with only the texture + local zoom = 1 if self.__showup then local eff = self.__showup_effect or "pop" if eff == "overpop" then - local zoom = self.__showup / 7 + zoom = self.__showup / 7 if self.__showup >= 9 then zoom = (9 - (self.__showup - 9)) / 7 - 1 zoom = 1 + zoom * 0.5 end - self.tex:toScreenFull(x + (self.w - self.w * zoom) / 2, y + (self.h - self.h * zoom) / 2, self.w * zoom, self.h * zoom, self.tex_w * zoom, self.tex_h * zoom) self.__showup = self.__showup + nb_keyframes if self.__showup >= 11 then self.__showup = nil end else - local zoom = self.__showup / 7 - self.tex:toScreenFull(x + (self.w - self.w * zoom) / 2, y + (self.h - self.h * zoom) / 2, self.w * zoom, self.h * zoom, self.tex_w * zoom, self.tex_h * zoom) + zoom = self.__showup / 7 self.__showup = self.__showup + nb_keyframes if self.__showup >= 7 then self.__showup = nil end end - else - self.tex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h) - for i = 1, #self.uis do - local ui = self.uis[i] - ui.ui:display(x + ui.x, y + ui.y, nb_keyframes) - end end + + local ox, oy = x, y + local hw, hh = math.floor(self.w / 2), math.floor(self.h / 2) + local tx, ty = x + hw, y + hh + x, y = -hw, -hh + core.display.glTranslate(tx, ty, 0) + if zoom < 1 then core.display.glScale(zoom, zoom, zoom) end + + if self.frame.shadow then self:drawFrame(x + self.frame.shadow.x, y + self.frame.shadow.y, 0, 0, 0, self.frame.shadow.a) end + self:drawFrame(x, y, 1, 1, 1, self.frame.a) + for i = 1, #self.uis do + local ui = self.uis[i] + ui.ui:display(x + ui.x, y + ui.y, nb_keyframes, ox + ui.x, oy + ui.y) + end + + if zoom < 1 then core.display.glScale() end + core.display.glTranslate(-tx, -ty, 0) end diff --git a/game/engines/default/engine/ui/List.lua b/game/engines/default/engine/ui/List.lua index 0094d55ecf..9577fd556a 100644 --- a/game/engines/default/engine/ui/List.lua +++ b/game/engines/default/engine/ui/List.lua @@ -20,17 +20,12 @@ require "engine.class" local Base = require "engine.ui.Base" local Focusable = require "engine.ui.Focusable" +local Slider = require "engine.ui.Slider" +local Slider = require "engine.ui.Slider" --- A generic UI list module(..., package.seeall, class.inherit(Base, Focusable)) -local ls, ls_w, ls_h = _M:getImage("ui/selection-left-sel.png") -local ms, ms_w, ms_h = _M:getImage("ui/selection-middle-sel.png") -local rs, rs_w, rs_h = _M:getImage("ui/selection-right-sel.png") -local l, l_w, l_h = _M:getImage("ui/selection-left.png") -local m, m_w, m_h = _M:getImage("ui/selection-middle.png") -local r, r_w, r_h = _M:getImage("ui/selection-right.png") - function _M:init(t) self.list = assert(t.list, "no list list") self.w = assert(t.width, "no list width") @@ -42,23 +37,6 @@ function _M:init(t) self.scrollbar = t.scrollbar self.all_clicks = t.all_clicks - self.fh = ls_h - self.default = {} - self.default.surface = core.display.newSurface(self.w, self.fh) - self.default.s = core.display.newSurface(self.w, self.fh) - self.default.ss = core.display.newSurface(self.w, self.fh) - self.default.sus = core.display.newSurface(self.w, self.fh) - - self.default.ss:merge(ls, 0, 0) - for i = ls_w, self.w - rs_w, ms_w do self.default.ss:merge(ms, i, 0) end - self.default.ss:merge(rs, self.w - rs_w, 0) - - self.default.s:erase(0, 0, 0) - - self.default.sus:merge(l, 0, 0) - for i = l_w, self.w - r_w, m_w do self.default.sus:merge(m, i, 0) end - self.default.sus:merge(r, self.w - r_w, 0) - Base.init(self, t) end @@ -70,8 +48,14 @@ function _M:generate() self.scroll = 1 self.max = #self.list - local fw, fh = self.w, ls_h + local fw, fh = self.w, self.font_h + 6 self.fw, self.fh = fw, fh + if not self.surf then self.surf = core.display.newSurface(fw, fh) end + local s = self.surf + + self.frame = self:makeFrame(nil, fw, fh) + self.frame_sel = self:makeFrame("ui/selector-sel", fw, fh) + self.frame_usel = self:makeFrame("ui/selector", fw, fh) if not self.h then self.h = self.nb_items * fh end @@ -79,39 +63,17 @@ function _M:generate() -- Draw the scrollbar if self.scrollbar then - local sb, sb_w, sb_h = self:getImage("ui/scrollbar.png") - local ssb, ssb_w, ssb_h = self:getImage("ui/scrollbar-sel.png") - - self.scrollbar = { bar = {}, sel = {} } - self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.tex, self.scrollbar.sel.texw, self.scrollbar.sel.texh = ssb_w, ssb_h, ssb:glTexture() - local s = core.display.newSurface(sb_w, self.h - fh) - for i = 0, self.h - fh do s:merge(sb, 0, i) end - self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.tex, self.scrollbar.bar.texw, self.scrollbar.bar.texh = ssb_w, self.h - fh, s:glTexture() + self.scrollbar = Slider.new{size=self.h - fh, max=self.max} end -- Draw the list items for i, item in ipairs(self.list) do local color = item.color or {255,255,255} local text = item[self.display_prop] - local src_ss = self.default.ss - local src_sus = self.default.sus - local src_s = self.default.s - local ss = self.default.surface - local sus = self.default.surface - local s = self.default.surface - - ss:erase(0, 0, 0) - ss:merge(src_ss, 0, 0) - ss:drawColorStringBlended(self.font, text, ls_w, (fh - self.font_h) / 2, color[1], color[2], color[3], nil, fw - ls_w - rs_w) - item._stex = ss:glTexture() - - s:merge(src_s, 0, 0) - s:drawColorStringBlended(self.font, text, ls_w, (fh - self.font_h) / 2, color[1], color[2], color[3], nil, fw - ls_w - rs_w) - item._tex, item._tex_w, item._tex_h = s:glTexture() - - sus:merge(src_sus, 0, 0) - sus:drawColorStringBlended(self.font, text, ls_w, (fh - self.font_h) / 2, color[1], color[2], color[3], nil, fw - ls_w - rs_w) - item._sustex = sus:glTexture() + + s:erase(0, 0, 0, 0) + s:drawColorStringBlended(self.font, text, 0, (self.fh - self.font_h) / 2, color[1], color[2], color[3], true, fw) + item._tex = {s:glTexture()} end -- Add UI controls @@ -179,24 +141,23 @@ function _M:display(x, y, nb_keyframes) local item = self.list[i] if not item then break end if self.sel == i then - if self.focused then item._stex:toScreenFull(x, y, self.fw, self.fh, item._tex_w, item._tex_h) - else item._sustex:toScreenFull(x, y, self.fw, self.fh, item._tex_w, item._tex_h) end + if self.focused then self:drawFrame(self.frame_sel, x, y) + else self:drawFrame(self.frame_usel, x, y) end else - item._tex:toScreenFull(x, y, self.fw, self.fh, item._tex_w, item._tex_h) + self:drawFrame(self.frame, x, y) if item.focus_decay then - if self.focused then item._stex:toScreenFull(x, y, self.fw, self.fh, item._tex_w, item._tex_h, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) - else item._sustex:toScreenFull(x, y, self.fw, self.fh, item._tex_w, item._tex_h, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end + if self.focused then self:drawFrame(self.frame_sel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) + else self:drawFrame(self.frame_usel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end item.focus_decay = item.focus_decay - nb_keyframes if item.focus_decay <= 0 then item.focus_decay = nil end end end + item._tex[1]:toScreenFull(x + self.frame_sel.b4.w, y, self.fw, self.fh, item._tex[2], item._tex[3]) y = y + self.fh end if self.focused and self.scrollbar then - local pos = self.sel * (self.h - self.fh) / self.max - - self.scrollbar.bar.tex:toScreenFull(bx + self.w - self.scrollbar.bar.w, by + self.fh, self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.texw, self.scrollbar.bar.texh) - self.scrollbar.sel.tex:toScreenFull(bx + self.w - self.scrollbar.sel.w, by + self.fh + pos, self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.texw, self.scrollbar.sel.texh) + self.scrollbar.pos = self.sel + self.scrollbar:display(bx + self.w - self.scrollbar.w, by) end end diff --git a/game/engines/default/engine/ui/ListColumns.lua b/game/engines/default/engine/ui/ListColumns.lua index 6335070d1e..60df37ca15 100644 --- a/game/engines/default/engine/ui/ListColumns.lua +++ b/game/engines/default/engine/ui/ListColumns.lua @@ -20,24 +20,11 @@ require "engine.class" local Base = require "engine.ui.Base" local Focusable = require "engine.ui.Focusable" +local Slider = require "engine.ui.Slider" --- A generic UI multi columns list module(..., package.seeall, class.inherit(Base, Focusable)) -local ls, ls_w, ls_h = _M:getImage("ui/selection-left-sel.png") -local ms, ms_w, ms_h = _M:getImage("ui/selection-middle-sel.png") -local rs, rs_w, rs_h = _M:getImage("ui/selection-right-sel.png") -local l, l_w, l_h = _M:getImage("ui/selection-left.png") -local m, m_w, m_h = _M:getImage("ui/selection-middle.png") -local r, r_w, r_h = _M:getImage("ui/selection-right.png") - -local cls, cls_w, cls_h = _M:getImage("ui/selection-left-column-sel.png") -local cms, cms_w, cms_h = _M:getImage("ui/selection-middle-column-sel.png") -local crs, crs_w, crs_h = _M:getImage("ui/selection-right-column-sel.png") -local cl, cl_w, cl_h = _M:getImage("ui/selection-left-column.png") -local cm, cm_w, cm_h = _M:getImage("ui/selection-middle-column.png") -local cr, cr_w, cr_h = _M:getImage("ui/selection-right-column.png") - function _M:init(t) self.list = assert(t.list, "no list list") self.columns = assert(t.columns, "no list columns") @@ -54,6 +41,8 @@ function _M:init(t) self.fh = t.item_height or ls_h + self.fh = t.item_height or (self.font_h + 6) + local w = self.w if self.scrollbar then w = w - 10 end for j, col in ipairs(self.columns) do @@ -73,23 +62,11 @@ function _M:init(t) end col.surface = core.display.newSurface(col.width, self.fh) - col.s = core.display.newSurface(col.width, self.fh) - col.ss = core.display.newSurface(col.width, self.fh) - col.sus = core.display.newSurface(col.width, self.fh) - - col.ss:merge(ls, 0, 0) - for i = ls_w, col.width - rs_w, ms_w do col.ss:merge(ms, i, 0) end - col.ss:merge(rs, col.width - rs_w, 0) - - col.s:erase(0, 0, 0) - - col.sus:merge(l, 0, 0) - for i = l_w, col.width - r_w, m_w do col.sus:merge(m, i, 0) end - col.sus:merge(r, col.width - r_w, 0) - - col._istex = {col.ss:glTexture()} - col._itex = {col.s:glTexture()} - col._isustex = {col.sus:glTexture()} + col.frame = self:makeFrame(nil, col.width, self.fh) + col.frame_sel = self:makeFrame("ui/selector-sel", col.width, self.fh) + col.frame_usel = self:makeFrame("ui/selector", col.width, self.fh) + col.frame_col = self:makeFrame("ui/selector", col.width, self.fh) + col.frame_col_sel = self:makeFrame("ui/selector-sel", col.width, self.fh) end Base.init(self, t) @@ -115,7 +92,7 @@ function _M:drawItem(item) s:erase(0, 0, 0, 0) -- We use 1000 and do not cut lines to make sure it draws as much as possible - text:drawOnSurface(s, 10000, nil, self.font, ls_w, (fh - self.font_h) / 2, color[1], color[2], color[3]) + text:drawOnSurface(s, 10000, nil, self.font, col.frame_sel.b4.w, (fh - self.font_h) / 2, color[1], color[2], color[3]) item._tex = item._tex or {} item._tex[j] = {s:glTexture()} end @@ -131,8 +108,7 @@ function _M:generate() self.max = #self.list self:selectColumn(1, true) - local fh = ls_h - self.fh = fh + local fh = self.fh if not self.h then self.h = self.nb_items * fh end @@ -140,14 +116,7 @@ function _M:generate() -- Draw the scrollbar if self.scrollbar then - local sb, sb_w, sb_h = self:getImage("ui/scrollbar.png") - local ssb, ssb_w, ssb_h = self:getImage("ui/scrollbar-sel.png") - - self.scrollbar = { bar = {}, sel = {} } - self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.tex, self.scrollbar.sel.texw, self.scrollbar.sel.texh = ssb_w, ssb_h, ssb:glTexture() - local s = core.display.newSurface(sb_w, self.h - fh) - for i = 0, self.h - fh do s:merge(sb, 0, i) end - self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.tex, self.scrollbar.bar.texw, self.scrollbar.bar.texh = ssb_w, self.h - fh, s:glTexture() + self.scrollbar = Slider.new{size=self.h - fh, max=self.max} end -- Draw the list columns @@ -156,23 +125,14 @@ function _M:generate() local fw = col.width col.fw = fw local text = col.name - local ss = core.display.newSurface(fw, fh) - local s = core.display.newSurface(fw, fh) + local s = col.surface self.font:setStyle("bold") - ss:merge(cls, 0, 0) - for i = cls_w, fw - crs_w do ss:merge(cms, i, 0) end - ss:merge(crs, fw - crs_w, 0) - ss:drawColorStringBlended(self.font, text, cls_w, (fh - self.font_h) / 2, 255, 255, 255, nil, fw - cls_w - crs_w) - - s:merge(cl, 0, 0) - for i = cl_w, fw - cr_w do s:merge(cm, i, 0) end - s:merge(cr, fw - cr_w, 0) - s:drawColorStringBlended(self.font, text, cl_w, (fh - self.font_h) / 2, 255, 255, 255, nil, fw - cl_w - cr_w) + s:erase(0, 0, 0, 0) + s:drawColorStringBlended(self.font, text, col.frame_sel.b4.w, (fh - self.font_h) / 2, 255, 255, 255, true, fw - col.frame_sel.b4.w - col.frame_sel.b6.w) self.font:setStyle("normal") col._tex, col._tex_w, col._tex_h = s:glTexture() - col._stex = ss:glTexture() self.mouse:registerZone(colx, 0, col.width, self.fh, function(button, x, y, xrel, yrel, bx, by, event) if button == "left" and event == "button" then self:selectColumn(j) end @@ -279,17 +239,15 @@ function _M:selectColumn(i, force) end end -function _M:display(x, y, nb_keyframes) +function _M:display(x, y, nb_keyframes, screen_x, screen_y) local bx, by = x, y for j = 1, #self.columns do local col = self.columns[j] local y = y if not self.hide_columns then - if self.cur_col == j then - col._stex:toScreenFull(x, y, col.fw, self.fh, col._tex_w, col._tex_h) - else - col._tex:toScreenFull(x, y, col.fw, self.fh, col._tex_w, col._tex_h) - end + if self.cur_col == j then self:drawFrame(col.frame_col_sel, x, y) + else self:drawFrame(col.frame_col_sel, x, y) end + col._tex:toScreenFull(x, y, col.fw, self.fh, col._tex_w, col._tex_h) y = y + self.fh end @@ -298,13 +256,13 @@ function _M:display(x, y, nb_keyframes) local item = self.list[i] if not item then break end if self.sel == i then - if self.focused then col._istex[1]:toScreenFull(x, y, col.fw, self.fh, col._istex[2], col._istex[3]) - else col._isustex[1]:toScreenFull(x, y, col.fw, self.fh, col._isustex[2], col._isustex[3]) end + if self.focused then self:drawFrame(col.frame_sel, x, y) + else self:drawFrame(col.frame_usel, x, y) end else - col._itex[1]:toScreenFull(x, y, col.fw, self.fh, col._itex[2], col._itex[3]) + self:drawFrame(col.frame, x, y) if item.focus_decay then - if self.focused then col._istex[1]:toScreenFull(x, y, col.fw, self.fh, col._istex[2], col._istex[3], 1, 1, 1, item.focus_decay / self.focus_decay_max_d) - else col._isustex[1]:toScreenFull(x, y, col.fw, self.fh, col._isustex[2], col._isustex[3], 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end + if self.focused then self:drawFrame(col.frame_sel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) + else self:drawFrame(col.frame_usel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end item.focus_decay = item.focus_decay - nb_keyframes if item.focus_decay <= 0 then item.focus_decay = nil end end @@ -314,8 +272,8 @@ function _M:display(x, y, nb_keyframes) else item._tex[j][1]:toScreenFull(x, y, col.fw, self.fh, item._tex[j][2], item._tex[j][3]) end - item.last_display_x = x - item.last_display_y = y + item.last_display_x = screen_x + (x - bx) + item.last_display_y = screen_y + (y - by) y = y + self.fh end @@ -323,9 +281,7 @@ function _M:display(x, y, nb_keyframes) end if self.focused and self.scrollbar then - local pos = self.sel * (self.h - self.fh) / self.max - - self.scrollbar.bar.tex:toScreenFull(bx + self.w - self.scrollbar.bar.w, by + self.fh, self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.texw, self.scrollbar.bar.texh) - self.scrollbar.sel.tex:toScreenFull(bx + self.w - self.scrollbar.sel.w, by + self.fh + pos, self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.texw, self.scrollbar.sel.texh) + self.scrollbar.pos = self.sel + self.scrollbar:display(bx + self.w - self.scrollbar.w, by) end end diff --git a/game/engines/default/engine/ui/Separator.lua b/game/engines/default/engine/ui/Separator.lua index 1bb87ee15f..f930557484 100644 --- a/game/engines/default/engine/ui/Separator.lua +++ b/game/engines/default/engine/ui/Separator.lua @@ -32,28 +32,30 @@ end function _M:generate() if self.dir == "horizontal" then - local b4, b4_w, b4_h = self:getImage("border_4.png") - - -- Draw UI - self.w, self.h = b4_w, self.size - local s = core.display.newSurface(self.w, self.h) - - for i = 0, self.size do s:merge(b4, 0, i) end - - self.tex, self.tex_w, self.tex_h = s:glTexture() + self.top = self:getTexture("ui/border_vert_top.png") + self.middle = self:getTexture("ui/border_vert_middle.png") + self.bottom = self:getTexture("ui/border_vert_bottom.png") + self.w, self.h = self.middle.w, self.size else - local b8, b8_w, b8_h = self:getImage("border_8.png") - - -- Draw UI - self.w, self.h = self.size, b8_h - local s = core.display.newSurface(self.w, self.h) - - for i = 0, self.size do s:merge(b8, i, 0) end - - self.tex, self.tex_w, self.tex_h = s:glTexture() + self.left = self:getTexture("ui/border_hor_left.png") + self.middle = self:getTexture("ui/border_hor_middle.png") + self.right = self:getTexture("ui/border_hor_right.png") + self.w, self.h = self.size, self.middle.h end end function _M:display(x, y) - self.tex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h) + if self.dir == "horizontal" then +-- x = x - math.floor(self.top.w / 2) +-- y = y - math.floor(self.top.h / 2) + self.top.t:toScreenFull(x, y, self.top.w, self.top.h, self.top.tw, self.top.th) + self.bottom.t:toScreenFull(x, y + self.h - self.bottom.h, self.bottom.w, self.bottom.h, self.bottom.tw, self.bottom.th) + self.middle.t:toScreenFull(x, y + self.top.h, self.middle.w, self.h - self.top.h - self.bottom.h, self.middle.tw, self.middle.th) + else +-- x = x - math.floor(self.left.w / 2) +-- y = y - math.floor(self.left.h / 2) + self.left.t:toScreenFull(x, y, self.left.w, self.left.h, self.left.tw, self.left.th) + self.right.t:toScreenFull(x + self.w - self.right.w, y, self.right.w, self.right.h, self.right.tw, self.right.th) + self.middle.t:toScreenFull(x + self.left.w, y, self.w - self.left.w - self.right.w, self.middle.h, self.middle.tw, self.middle.th) + end end diff --git a/game/engines/default/engine/ui/Slider.lua b/game/engines/default/engine/ui/Slider.lua new file mode 100644 index 0000000000..b4147e988d --- /dev/null +++ b/game/engines/default/engine/ui/Slider.lua @@ -0,0 +1,47 @@ +-- TE4 - T-Engine 4 +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +require "engine.class" +local Base = require "engine.ui.Base" + +--- A generic UI slider, usualy used by other UI elements +module(..., package.seeall, class.inherit(Base)) + +function _M:init(t) + self.size = assert(t.size, "no slider size") + self.max = assert(t.max, "no slider max") + self.pos = t.pos or 0 + + Base.init(self, t) +end + +function _M:generate() + self.top = self:getTexture("ui/scrollbar_top.png") + self.middle = self:getTexture("ui/scrollbar.png") + self.bottom = self:getTexture("ui/scrollbar_bottom.png") + self.sel = self:getTexture("ui/scrollbar-sel.png") + self.w, self.h = self.middle.w, self.size +end + +function _M:display(x, y) + self.top.t:toScreenFull(x, y, self.top.w, self.top.h, self.top.tw, self.top.th) + self.bottom.t:toScreenFull(x, y + self.h - self.bottom.h, self.bottom.w, self.bottom.h, self.bottom.tw, self.bottom.th) + self.middle.t:toScreenFull(x, y + self.top.h, self.middle.w, self.h - self.top.h - self.bottom.h, self.middle.tw, self.middle.th) + self.sel.t:toScreenFull(x - (self.sel.w - self.top.w) / 2, y + (self.pos * self.size / self.max) + self.sel.h / 2, self.sel.w, self.sel.h, self.sel.tw, self.sel.th) +end diff --git a/game/engines/default/engine/ui/Textzone.lua b/game/engines/default/engine/ui/Textzone.lua index 45fdc5bb93..8a111e924b 100644 --- a/game/engines/default/engine/ui/Textzone.lua +++ b/game/engines/default/engine/ui/Textzone.lua @@ -20,6 +20,7 @@ require "engine.class" local Base = require "engine.ui.Base" local Focusable = require "engine.ui.Focusable" +local Slider = require "engine.ui.Slider" --- A generic UI list module(..., package.seeall, class.inherit(Base, Focusable)) @@ -34,6 +35,7 @@ function _M:init(t) self.no_color_bleed = t.no_color_bleed self.auto_height = t.auto_height self.auto_width = t.auto_width + self.color = t.color or {r=255, g=255, b=255} if self.auto_width then self.w = 10000 end @@ -64,19 +66,11 @@ function _M:generate() end -- Draw the list items - self.list = tstring.makeLineTextures(text, self.fw, self.font, true) + self.list = tstring.makeLineTextures(text, self.fw, self.font, true, self.color.r, self.color.g, self.color.b) -- Draw the scrollbar if self.scrollbar then - local sb, sb_w, sb_h = self:getImage("ui/scrollbar.png") - local ssb, ssb_w, ssb_h = self:getImage("ui/scrollbar-sel.png") - - self.scrollbar = { bar = {}, sel = {} } - self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.tex, self.scrollbar.sel.texw, self.scrollbar.sel.texh = ssb_w, ssb_h, ssb:glTexture() - local s = core.display.newSurface(sb_w, self.h - fh) - s:erase(200,0,0) - for i = 0, self.h - fh do s:merge(sb, 0, i) end - self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.tex, self.scrollbar.bar.texw, self.scrollbar.bar.texh = ssb_w, self.h - fh, s:glTexture() + self.scrollbar = Slider.new{size=self.h - fh, max=self.max - self.max_display + 1} end -- Add UI controls @@ -109,9 +103,7 @@ function _M:display(x, y) end if self.focused and self.scrollbar then - local pos = self.scroll * (self.h - self.fh) / (self.max - self.max_display + 1) - - self.scrollbar.bar.tex:toScreenFull(bx + self.w - self.scrollbar.bar.w, by + self.fh, self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.texw, self.scrollbar.bar.texh) - self.scrollbar.sel.tex:toScreenFull(bx + self.w - self.scrollbar.sel.w, by + self.fh + pos, self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.texw, self.scrollbar.sel.texh) + self.scrollbar.pos = self.scroll + self.scrollbar:display(bx + self.w - self.scrollbar.w, by) end end diff --git a/game/engines/default/engine/ui/TreeList.lua b/game/engines/default/engine/ui/TreeList.lua index 41a6fdc7a2..c33ed2a24b 100644 --- a/game/engines/default/engine/ui/TreeList.lua +++ b/game/engines/default/engine/ui/TreeList.lua @@ -20,18 +20,13 @@ require "engine.class" local Base = require "engine.ui.Base" local Focusable = require "engine.ui.Focusable" +local Slider = require "engine.ui.Slider" --- A generic UI list module(..., package.seeall, class.inherit(Base, Focusable)) -local ls, ls_w, ls_h = _M:getImage("ui/selection-left-sel.png") -local ms, ms_w, ms_h = _M:getImage("ui/selection-middle-sel.png") -local rs, rs_w, rs_h = _M:getImage("ui/selection-right-sel.png") -local l, l_w, l_h = _M:getImage("ui/selection-left.png") -local m, m_w, m_h = _M:getImage("ui/selection-middle.png") -local r, r_w, r_h = _M:getImage("ui/selection-right.png") -local plus, plus_w, plus_h = _M:getImage("ui/plus.png") -local minus, minus_w, minus_h = _M:getImage("ui/minus.png") +local plus = _M:getTexture("ui/plus.png") +local minus = _M:getTexture("ui/minus.png") function _M:init(t) self.tree = assert(t.tree, "no tree tree") @@ -50,8 +45,7 @@ function _M:init(t) self.key_prop = t.key_prop or "__id" self.sel_by_col = t.sel_by_col and {} or nil - - self.fh = ls_h + self.fh = t.item_height or (self.font_h + 6) local w = self.w if self.scrollbar then w = w - 10 end @@ -78,6 +72,11 @@ function _M:init(t) end col.surface = core.display.newSurface(col.width, self.fh) + col.frame = self:makeFrame(nil, col.width, self.fh) + col.frame_sel = self:makeFrame("ui/selector-sel", col.width, self.fh) + col.frame_usel = self:makeFrame("ui/selector", col.width, self.fh) + col.frame_col = self:makeFrame("ui/selector", col.width, self.fh) + col.frame_col_sel = self:makeFrame("ui/selector-sel", col.width, self.fh) col._backs = {} end @@ -87,46 +86,6 @@ function _M:init(t) Base.init(self, t) end -function _M:getColumnBackground(col, level, sign, shown) - if sign then sign = true else sign = false end - if shown then shown = true else shown = false end - level = (col.id == 1) and level or 0 - if col._backs[level] and col._backs[level][sign] and col._backs[level][sign][shown] then return col._backs[level][sign][shown] end - local backs = {} - col._backs[level] = col._backs[level] or {} - col._backs[level][sign] = col._backs[level][sign] or {} - col._backs[level][sign][shown] = backs - - local s = col.surface - - local offset = 0 - if col.id == 1 then - offset = level * self.level_offset - if sign then offset = offset + plus_w end - end - local startx = ls_w + offset - - s:erase(0, 0, 0) - s:merge(ls, offset, 0) - for i = offset + ls_w, col.width - rs_w, ms_w do s:merge(ms, i, 0) end - s:merge(rs, col.width - rs_w, 0) - if col.id == 1 and sign then s:merge(shown and minus or plus, offset - plus_w, 0) end - backs._stex, backs._stex_w, backs._stex_h = s:glTexture() - - s:erase(0, 0, 0) - if col.id == 1 and sign then s:merge(shown and minus or plus, offset - plus_w, 0) end - backs._tex, backs._tex_w, backs._tex_h = s:glTexture() - - s:erase(0, 0, 0) - s:merge(l, offset, 0) - for i = offset + l_w, col.width - r_w, m_w do s:merge(m, i, 0) end - s:merge(r, col.width - r_w, 0) - if col.id == 1 and sign then s:merge(shown and minus or plus, offset - plus_w, 0) end - backs._sustex, backs._sustex_w, backs._sustex_h = s:glTexture() - - return backs -end - function _M:drawItem(item) item.cols = {} for i, col in ipairs(self.columns) do @@ -147,14 +106,14 @@ function _M:drawItem(item) local offset = 0 if i == 1 then offset = level * self.level_offset - if item.nodes then offset = offset + plus_w end + if item.nodes then offset = offset + plus.w end end - local startx = ls_w + offset + local startx = col.frame_sel.b4.w + offset item.cols[i] = {} s:erase(0, 0, 0, 0) - text:drawOnSurface(s, col.width - startx - rs_w, 1, self.font, startx, (self.fh - self.font_h) / 2, color[1], color[2], color[3]) + text:drawOnSurface(s, col.width - startx - col.frame_sel.b6.w, 1, self.font, startx, (self.fh - self.font_h) / 2, color[1], color[2], color[3]) item.cols[i]._tex, item.cols[i]._tex_w, item.cols[i]._tex_h = s:glTexture() end if self.on_drawitem then self.on_drawitem(item) end @@ -176,7 +135,7 @@ function _M:generate() self.mouse:reset() self.key:reset() - local fw, fh = self.w, ls_h + local fw, fh = self.w, self.fh self.fw, self.fh = fw, fh if not self.h then self.h = self.nb_items * fh end @@ -185,14 +144,7 @@ function _M:generate() -- Draw the scrollbar if self.scrollbar then - local sb, sb_w, sb_h = self:getImage("ui/scrollbar.png") - local ssb, ssb_w, ssb_h = self:getImage("ui/scrollbar-sel.png") - - self.scrollbar = { bar = {}, sel = {} } - self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.tex, self.scrollbar.sel.texw, self.scrollbar.sel.texh = ssb_w, ssb_h, ssb:glTexture() - local s = core.display.newSurface(sb_w, self.h - fh) - for i = 0, self.h - fh do s:merge(sb, 0, i) end - self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.tex, self.scrollbar.bar.texw, self.scrollbar.bar.texh = ssb_w, self.h - fh, s:glTexture() + self.scrollbar = Slider.new{size=self.h - fh, max=1} end -- Draw the tree items @@ -212,7 +164,7 @@ function _M:generate() end end end self:onSelect() - if self.list[self.sel] and self.list[self.sel].nodes and bx <= plus_w and button ~= "wheelup" and button ~= "wheeldown" and event == "button" then + if self.list[self.sel] and self.list[self.sel].nodes and bx <= plus.w and button ~= "wheelup" and button ~= "wheeldown" and event == "button" then self:treeExpand(nil) else if (self.all_clicks or button == "left") and button ~= "wheelup" and button ~= "wheeldown" and event == "button" then self:onUse(button) end @@ -324,21 +276,24 @@ function _M:display(x, y, nb_keyframes) local col = self.columns[j] local item = self.list[i] if not item then break end - local backs = self:getColumnBackground(col, item.level, item.nodes, item.shown) if self.sel == i and (not self.sel_by_col or self.cur_col == j) then - if self.focused then backs._stex:toScreenFull(x, y, col.width, self.fh, backs._stex_w, backs._stex_h) - else backs._sustex:toScreenFull(x, y, col.width, self.fh, backs._sustex_w, backs._sustex_h) end + if self.focused then self:drawFrame(col.frame_sel, x, y) + else self:drawFrame(col.frame_usel, x, y) end elseif (not self.sel_by_col or self.cur_col == j) then - backs._tex:toScreenFull(x, y, col.width, self.fh, backs._tex_w, backs._tex_h) + self:drawFrame(col.frame, x, y) if item.focus_decay then - if self.focused then backs._stex:toScreenFull(x, y, col.width, self.fh, backs._stex_w, backs._stex_h, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) - else backs._sustex:toScreenFull(x, y, col.width, self.fh, backs._sustex_w, backs._sustex_h, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end + if self.focused then self:drawFrame(col.frame_sel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) + else self:drawFrame(col.frame_usel, x, y, 1, 1, 1, item.focus_decay / self.focus_decay_max_d) end item.focus_decay = item.focus_decay - nb_keyframes if item.focus_decay <= 0 then item.focus_decay = nil end end - else - backs._tex:toScreenFull(x, y, col.width, self.fh, backs._tex_w, backs._tex_h) end + + if item.nodes and j == 1 then + local s = item.shown and minus or plus + s.t:toScreenFull(x, y + (self.fh - s.h) / 2, s.w, s.h, s.th, s.th) + end + item.cols[j]._tex:toScreenFull(x, y, col.width, self.fh, item.cols[j]._tex_w, item.cols[j]._tex_h) x = x + col.width end @@ -346,9 +301,8 @@ function _M:display(x, y, nb_keyframes) end if self.focused and self.scrollbar then - local pos = self.sel * (self.h - self.fh) / self.max - - self.scrollbar.bar.tex:toScreenFull(bx + self.w - self.scrollbar.bar.w, by + self.fh, self.scrollbar.bar.w, self.scrollbar.bar.h, self.scrollbar.bar.texw, self.scrollbar.bar.texh) - self.scrollbar.sel.tex:toScreenFull(bx + self.w - self.scrollbar.sel.w, by + self.fh + pos, self.scrollbar.sel.w, self.scrollbar.sel.h, self.scrollbar.sel.texw, self.scrollbar.sel.texh) + self.scrollbar.pos = self.sel + self.scrollbar.max = self.max + self.scrollbar:display(bx + self.w - self.scrollbar.w, by) end end diff --git a/game/engines/default/engine/utils.lua b/game/engines/default/engine/utils.lua index 99f5bd91bf..fdc6c51b10 100644 --- a/game/engines/default/engine/utils.lua +++ b/game/engines/default/engine/utils.lua @@ -647,15 +647,15 @@ function tstring:splitLines(max_width, font) return ret, max_w end -function tstring:makeLineTextures(max_width, font, no_split) +function tstring:makeLineTextures(max_width, font, no_split, r, g, b) local list = no_split and self or self:splitLines(max_width, font) local fh = font:lineSkip() local s = core.display.newSurface(max_width, fh) s:erase(0, 0, 0, 0) local texs = {} local w = 0 - local r, g, b = 255, 255, 255 - local oldr, oldg, oldb = 255, 255, 255 + local r, g, b = r or 255, g or 255, b or 255 + local oldr, oldg, oldb = r, g, b local v, tv for i = 1, #list do v = list[i] diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 716087f729..118179bf0c 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -853,8 +853,7 @@ function _M:setupCommands() end end, [{"_g","ctrl"}] = function() if config.settings.cheat then -- self.nicer_tiles:postProcessLevelTiles(self.level) - local m = game.zone:makeEntity(game.level, "object", {properties={"lore"}}, nil, true) - game.zone:addEntity(game.level, m, "object", game.player.x, game.player.y) + game:registerDialog(require("mod.dialogs.Donation").new()) end end, } diff --git a/game/modules/tome/class/interface/PlayerLore.lua b/game/modules/tome/class/interface/PlayerLore.lua index abfd377ed0..4a7579d4ab 100644 --- a/game/modules/tome/class/interface/PlayerLore.lua +++ b/game/modules/tome/class/interface/PlayerLore.lua @@ -19,6 +19,7 @@ require "engine.class" local Dialog = require "engine.ui.Dialog" +local LorePopup = require "mod.dialogs.LorePopup" module(..., package.seeall, class.make) @@ -75,7 +76,7 @@ end function _M:learnLore(lore) if not self:knownLore(lore) then local l = self:getLore(lore) - Dialog:simpleLongPopup("Lore found: #0080FF#"..l.name, "#ANTIQUE_WHITE#"..util.getval(l.lore), game.w * 0.6, nil, nil, 0.8) + LorePopup.new(l, game.w * 0.6, 0.8) game.logPlayer(self, "Lore found: #0080FF#%s", l.name) game.logPlayer(self, "#ANTIQUE_WHITE#%s", util.getval(l.lore)) game.logPlayer(self, "You can read all your collected lore in the game menu, by pressing Escape.") diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index 89202fa735..12651ce7ff 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -801,7 +801,7 @@ newEntity{ base = "BASE_GEM", define_as = "CRYSTAL_FOCUS", o.unique = o.name o.no_unique_lore = true if o.combat and o.combat.dam then - o.combat.dam = o.combat.dam * 1.5 + o.combat.dam = o.combat.dam * 1.25 o.combat.damtype = engine.DamageType.ARCANE end o.wielder = o.wielder or {} diff --git a/game/modules/tome/data/gfx/ui/parchment1.png b/game/modules/tome/data/gfx/ui/parchment1.png new file mode 100644 index 0000000000000000000000000000000000000000..1204872001b2f74f6ee48d436b08a6f204b5e0fb GIT binary patch literal 5246 zcmaJ_`#%%z`(6=qC=+UOYDHO5hRSlDLd&VKh`g1(3u$s%BW5{<M$}klA#G%3rI@!7 z$+?L_CTob0CZow|jjzu?@crSsuh;$DzdX<Lx?j(AUr&aIo6~m1J&FJTVEY;8Q>ab0 z`yYUEn~@n3F|tVt;m#MLHtQ$<hb=PubW=AMWrOTp?E!$QqRTG!%bWRLj5Ep=03a#@ z0I8vXEiz{SfZKNg0FN5L7P$=oz)}DJXagf}7})^;YKv!1*?Ywd&la9d#|m!ph~k=& zP!UrkX-Et0xU|#W*&(UUHTAAseREm**fWMPCdIsT2skr*_TZ9%vDUs@s#+mWVY~I; zX|x_p?^<n)x+eNV4gFA_Rd;PPj*otn^Lor9{2H$U-mwSsR}Z6|8#QIzyRqWEq3>R+ zCAHYc*m{Y7oCMSEu;-}&p$k12W+vH`&xVn_14-I<9Gtr**IJ{Cf23^@S;G#Xdg$a_ z)H$>U&i?_b-S@87eKxjBGX-SCMT{<A=R5lIf-Ae~;@Kh8-<Ee0CoF=gY2=*<p#F{c z?1{b8-C@QkWJ6Rmp_k24p4i4XHfP}st*X?59wZL}oEc9G<uHdDq8`34A+J>tn}jD> zJSBKg_5`3r6gSLngWmydg|tqHv3wL-L(=$KWC?5Un2hR)5k>S=Vg2AOelj_Mr$StT zMOeRzpL?JNWz3g+<a`l$9|E}c_+Xl|=ZWWBlHfS={n#6a!pK#D@7Hfng>se0aOiKe zC#+Ba8D$_t*Jq?G7vcOv`1yp<3;C&pQ3c3HoDLfO38%wne|zJEJOkVUHQ=)!kM03f z=p#cTSs+9tE!WA8rxG-Lkjb11&t?e~U?!yfBl2^#mI9OT`ZwWqR#jLtTz|N>CBzZ+ z-V2>d-U&76(YeP>0|62T_e_7?UlY}1?wSnRDzb*8?EFfw<r+RFzXOYx0JrT9yB;tT zh@$=7dCSka2)6?41v_9^trkV7F}-8QbPnQvV)^vJvXH6ORVCE>;L1<KB{g>C_l<$} zBvp(uJej<+@)(ri1Z`;i%(I0W1d_hfR1qcQ(vUq&=2}%BAxdGEPhAq23PcxK-hr9l zX-|JrnXE2&KhD~9bI0;M@I#n+$X-UEzc;DkVOhqNq6%i;+d<r8=Cyp>X<)><Ad`F_ z=U+A0$2J~`V=@D^ou1bKA)RnF#9qcJe_kuNqPLG$mI2<6<-aoG@@2va>*H}a|BdF* zJ#wN28^Bn0av2t$t>cLf#)1%+nAG=RP9sqpTq3kY%zvlp`Co*#nSYqXJ~H@dz8#r2 zrqj`E?rJfuYs)id5VboN{)-{yl6Ufi8llGh=6Tm+Lji$6;=$>^Z!T+lx)pH$WQ<v( z(VizhWbDYKnL$q@=40@;L9>HJntd9w3q|b1_8!OxZOb0`F#B6V)1zZ5@M)(ri-dcy zsfG4?Y7q#a%8-zgedPiu2pUpZA*42nMs;uFF3dqv{FGrQu*u8WLa|xTqnu;evo~9U z#ZQ}<Vd;>P>U}G3t=uO~P_K?CL1eQhVzkc}zx=Xn4Qn?uG)7k3Zx3?sgnROiA%Mf| zNsAo~%XD%M%I0SyEA)BItYm%Zz)-XR?@1cP^;9sK9?0S=V=wucUVA*z*EcEiGPvp{ zrr~0j9q%w1b&vDwP9oWKM1C#d67>KI8C<CV@jy?`zo6VQF7DfF24y56=Iv5>y?Hw$ z!5DDbH$u9HKaZ%eQc;E-!k<Mh%yJlV46?cFS%LWg&LKUKb=VLlxMAUqx>;22H0nc1 zWeJ_3HY36P=HF>w*nhUfr2;fM3#V5*)*MN>A=Hn)Y8ZOR9u6xmJjq*kehToNwn6hk zHjQJE8L`x-!nIG|pBq09Et=DoxB(mKizY?0M&WO4RO44y%dh~SscjJb5&0$QTlhxI z1UzUe_Nuni+_EKwn~F1TRz>8X0<}9j3aSV1xqv%Vr@u-T0VT)UU-Gk9!ZTHu#G#KU z)E5em2ljcOEXsE(>zO#dHd2D_?t6ebWb`3e_GP6O_ti)9V`y}4Z?7~ss&Kl1%ka30 z>D~`SLJ>e)N5(RN`0`z?7!Yb}Bqo7=Kaa{#NxX8Trk<rFw0iA#7QOr5n8{fz@6%14 zcCVlhgWX~h?6bp<uVMIE_5(9*r^l_3nAxj(6f70-;LWm1O3dW;jtDEC5>QeIHJHEj zNo7PEAQEg0w9|$CX70TKFCVqGfgJ?ZVC;Vvi*>c%vb0)Eie?@LQ>h`G{-Pl)3Bp(j zKJUse%_<Z64zuB&__yGeMv+R}31vd!r03rlQQbc;3_fBdhKW2b#V)N@ek_u(_GV1V zwGv#IDkz^m3Uhp2dDx?GE}`jDH8vy|l@oPRt7u~B_vQnw@>rbt873Erj3I{Ck%BAF zA-}!Z_$Jal8tw1YZ+@`%1+dvHTgIPf?K8^8`h+S##%L{Z_iC0117lXM8$Dj1iMtUi z3E<n^VfboTcYo{TtyEer;$^p)D<2`pI5zwP5g&L8*(FV|tzUVj`|;ut??J3VN;-M` z-^85|H=APQ`=)W}WF#cz_HuTk2(&d&+1xb?wG*loIe<fZ{U~JQfb@phk{ZdcemvuT z6S!gH_`FAWztoM7Gvd1N{tOWgwx<MKrF%T&9B5D4`@;OQFPDv7B$S2y9G9ne|GFt} zisipSgg4_Mb^owdJgV12p?`y?i3VOHaSh9xha@fh(wu)yoaAk&%pYZPR-NFJ#ClO& zUwaO!RL^nkatYS5ec^X-!U+73Cxl)S;(PnGlQVr_2pcrIBN8dAH$OsAq8a=?6yAV; zE=2U4-df+1>scnc)j9TPdPs%JvEMuN%S}0#!|a0g4}7S9yVrJAsp)>UU@EdHpCydw zS@=D(AL=-_tkoYKbm3|sNoDFF<KLn=x_TA=J-gBZPp-9H8o)_&s)QLP&?^W--wE_q zZ**J4tf9e-q$swi6K;)a^toz=utOK9DH``j6IE;h>tfpt#^YaWO@&eG;@cPV3mQci zc;leF&S*MW6;)*O=rQxG`2B4%=Ou?z7IKLB{^gf_c>z*es4QQBST6{!&!)klk$;dM zbc0LD@8BJcen%)uVyh=!3%hFux9N=BS{;>C2IxNHtfLJkM_===DoSKTg5(u1v}^je z$C9HIrJ06PpUt)F<FtL8ySxJksa7f*KSi+tW4KY3$U_3_l=PgP3|XG=Pd5;EylY(U z4H6S-Oc<q%{gPC;jBb&;6Y;nIP7M*Qh51=_l{0G64#KQKY6I>T70=<xsBUp9JItA3 zv7`f?gc4PfmVN3YXLlJ)I{Zi(s~bHKnEq8X89KiZ(IwFJsef(MW)y3j$p0nxFNZZb zg#Q}xk-Z&-Tp|$T0BoET%J_`)&wuxve(UK;jLT&rF8TagYosgs^LJWK`I9*9rEg=6 zr5&MCT}h(A2z9NxVyM!XbdRK@E7~e-*mBx6|KtlFUJdv-rAplqnF0>xr%@=B2S=J@ zRKh#f#mErpk15CfssD~1U%PB{0|hOcaU&&;=^ziMUAEJ5=&v@sGBlWa*|4$ErZNH| zi`uF=Rbl>-$<pjdjHNnPfsK|7zb1f@t2z=lw+!;WJC+a2Go(Wq5RfOGb(pShpf<AS zHZzO^`Wq6qvM;sfoxFRGLgn_3uuX+{TL63NnK?y!$#-;9#bl}s;o1=W<@D{4@CItp z*2v6ojx!QTCcD&1l6UQXDqDFrRuc<O)2&p;@@ZGGs)4>UwI`Zs;^k+YRUx1AlO_66 zxeWsDIJ_)TLgn98#w4pJjahdzCWGkUio(o^a6`tH1rs>s%7ICeIu*PXr8tNq{E%V= zPYbD_ak%@?Ib=!RJ8%|EqaD0CDX<EiiWQnCvXd7gA?^6!B-j4<2T{mhGeT(Pj3g0c zMG>k&PqW;6Rf0}1I%Deg=Cpb)dZFRZm*<*?+9UMKNg$J>X7z%Z`h0D*`kHG0vuMpE zd{B$$e-n1Vr_VCMiuKQhdqml<i+wn(7Vw8EzjtvS-w3q<G1CL=u=1f?Ak>Faun@@* zIh9GWXqQ)1lM#oye)VTDS#H@m|6M#vS3d(S%_|l9#-|VDHMfsX{~_G*c(o!A{WS2w zAz_(tXVAbB0W|zIX72Gd;?kjH%bO^YIX0R6Q^%^gOj^KXUZ7|~4S>z2t}3=YaBteU z2db%C5n1l&%wbI=)PFKRR$mkJB($^LgLkaQb&+s(^w0I14!|>4%&~q?@-EvdR@_Rs zweLW{^>By>GTfr$<FbWlMxu+qC3EK4oq$b6rIXj`eZKVmfp|jZSEKy@@bbT}yFm@e zNAl0}y$qqTw>YM~W>|jSnODnn@E5iMM4!UFU6VguW=HLl!{{TNi;A7tSc7TjEAQ{d zd{*-3MKq26km!nbRG;^$FSaMf>YeTO`t0Mv-I_cRa<<0b$yON%H9>EiR<|i{jc&>f zEYZ8QB*?$2zfBT$fl{C@gY4?~ahF!nyYQcSQdw9qHIvH-&wA0gcAsl8mTjsil9Von z9o5Ty6>}fi^&kkGjd23>=!i<U4G3>LY<iP>dU`e`C}y`jFOPGiU%Ns*S##dzQmrN8 zP<G3sBd(gonw~IsHCO*)>&NDG<b6=bl+J^a*M^nps<Z4*DmvVFCtz1h-6a<94*EdK zr2-L&a`^kH9#zapqP)wpUpiD3gMemPl-B@y;O%E4un5Eb^ZicxX}84+r!Etk<(~_j zp|85t(Eir*R<guM<?!`Oepfp+Lu&)6N6e6C*jMbkl9u5HDAIRwCv-eJNzyM(JK2_J zJJP1+va#IX;dj#}qFzuzO-lf~vHszRqnjY0>%ugA5hsNBqi?FuyuJ}sXbRam%g+=X z&yPKsrF;j!1!^vCFm=Vt7Q}LP_wV0qcg7baG^5$f{lr}DZn}EwSV(<73tLcbDKy=! z9}^15Z(HY*8Pb&nwGP$2cl+^&AI8VtD#cndInlB8aZ|B}*Z+Q0o3OW49>Se293L8R zEil6SYZB4rAFO-T0*KP>J#mMynG3!=FZ3!kkREbP)@n+I!c7MZvoN(<BlV?Q6f5K7 z0MTf|QO4p8niy&@4|~<EM6fNbKG4?6u8dz>K~YNq24>K0^zPGpI_%OJ;&QOX^R}?V zKzkmpA%4x7#|Bq|*V3v)U)ZT*z31xj<<cbtDN*uEZIGqx;GW5#&$8Fk^?dqkbOsw+ z{{6upT`e^0B<{jQa!-n9CJwf9^FT5;`RTA%dPO&E1V9LE(HMUE2<5QUgr+u@9MMoh zMid5SX?jL92^8_Ysj6&jOKsyH4TS6w-tSn(KppJW<C+Arhi0V#8~ZrKFVJxM+_bLe z0X2shOGR0t$x;3Z__H4uOR*O6g~rVk*yjBtjNc=k?nwmeWBH&Y8QDCji%GlBahJ4Q zso^MpP-9w~IO{k1&i5|r{*@xT^ar!f*)6+TCabwhts0Lm^YYk2x88HMyBH~;9J3kg z>bFEGZ^P@B-g<Y0_Ggpm0oN?N1QW-tn~3+D{0NCz65RJ}FShyzc&=Mf?_qf!#T~!Y z^5DMR`%IOljV<-qp{S={%(wG7R;HKyub$HEd)c#1bx9Ce_m853Mw?$u>}n^s{M~lM zyz<1P&Ok|y?K#cW-6X_dURlL<UU?|Q9IDz7RI5d>4g8r&;Lrb4l2sPwo1%W5`@X^G zx-b!zTZUEWQ4PGrKhI%VpC0fbsfcEJYwM1P>pUL@7rwIkTy4xX#hd`8-|@NjQ_d4T zd-F-y@YbvwCr<sn5sm#Lb`P+5wqOcsIX4yI`{0e!p|<{*Z%e;(&4Z}yizjKxB-2wB z&X8n~g$P8x-c|6*CC|)Pt05|7EQHTWr;?xc9OHm7s+Mz?I89bp<)Nno=e5g|XS1a= zyFAewIDi+rOzEidcBCYDoF5oQ1-beK-{}9n_;(V6h@Z8@+0v4`^S~+%Du$5YJF2yM zZL=;{sv@NSh1V%B60*pdgj!jVW_#83L|PJ8#}X!2ef-`w<Jgm^7o^`Bx|G<YzdQ1W z#A3Ank^MM<$BFH|0r43E#V1OQF<WyMdSC)>f*s7kcrZ+P!udU1Z?4n8Lf-jI`W5<{ zuw9<`hs-ufs|hLEUo#f!-+ey;{IGn}A8rcNm9I9G)7{?SY?$?NA1*S>zNw?A1XMb7 zUXl&_=@q@T!W`uG_(?i6KRdom%*oHaMS`|HOem>Y6+G<2XXB)vDCb9!`YSHL+!kLO zIQQd;y{0!`D^F<Dhk-rWy+1hzCR=~?JJG!^78j>OijsZo{k^9}g9km8qX`?jg{4%< z8yA0;yLaR2nii*VdTAz=88TG+=Ufz`^BoX>mUr(vP0Zy=<vZp!9FgB75PGp$`(KXw zxMi8{PZhmJM`r@7&j4X%rr*-2H#6iP9=4myc{n|NG~-iL>>>M`<xl&3CmjAQ;8w5A ztkzw>ckzhJGCyu;ywD8&C=V4|<PD;ZZV>ez25~uaK5?xHKaxSF3Xnc-Ipw8jq)hz= zY-%(QC6)0+H;IFY3wo0BX`#pvn$RY{QTTl^xly<y&?P-E=~^Y%WpCP_i4%In&<lf2 zyAbOJkj18rl?BYoy!`0*7q;<g_a-_Kz(HJd{o5+}>=xVh-;%Jp(SI^smzNBn;#yi1 zF+y8X{B>FS>O#5MJ|0#p8Na~=OZg+I*6oXCC{48|D~&20M2?le&8+a`ubagQYrEGI zSX8-O2ae6X4H)BZz|x2HSxSJ76pI-sPKT{m_x-F8S=uTKj=L|9h7B+2ozz=j<`|i_ zF6z0UrOX<Z=kVWJihJ!1TU%S{Mc$uYc#vtKY1ytkSZVqp{LXzDF~W`AD=q8J>*=<| lGV^f2{}-GVRySk-K~s6v8rPPnn}3CXGpF57u@IM%{txzgT)F@N literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment2.png b/game/modules/tome/data/gfx/ui/parchment2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c5c23245189ab4f08e099c4e70536acb409728 GIT binary patch literal 5818 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment3.png b/game/modules/tome/data/gfx/ui/parchment3.png new file mode 100644 index 0000000000000000000000000000000000000000..053d56494a64c4b8a957400665b0de14797f8702 GIT binary patch literal 5096 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment4.png b/game/modules/tome/data/gfx/ui/parchment4.png new file mode 100644 index 0000000000000000000000000000000000000000..af534d4a3253cb842a33aa75a5372f9687b17f38 GIT binary patch literal 6033 zcmWlddpy(a|HnT&U|7td%-NC{g%z5T!<00UdnqO7{p7HgQ*zE?B+aN++-^DCS?&^2 z&bMRON*VVp<2ErZRxwixvGCjXkLz<iK8NdZJ>G}w^LoDDx4gYh>`>BC0svsgN%vy} z+3ftk0h5<qpGL+`%O=Gb_Y3i|_lN&CK#<)A*|LYwa2HP(0B9%+Ipwk@yEh`b6FdPR z0}cS$Bme|C2>_Ja0N~vOfaJFU;K&C6(1XQA?{fwKErpZETzrxypQU<S2^)IA)e`GB z7_vFr+__yN$8A0z$TF{tdT&$=4h7&KRAFHR2E1oa3G9}gv2zPloiLW&o-rvb-ONiI z$<@E(6)}kp^YfBUgrDg5TS%2dGx-NIu5Xub9dF=f#;Smw-Q~o3X2jr9VtO3{ml;d< zSAtb~_W_oB$_h;1VL<>=>p2(qN5gh^p}Mro6)i_GVnT&_44uL_FjLcB3rUR8Q!ry9 zb3iC)6~i0v0t2y-i&7OFEGGmY!iC8=ykg$zt^c??0og(=FuP&==8!f9+OhRr8ULmb ze<S_|L5VJKe#7j_Irxcy=(rhgFm2Buc;j!Z8Q{_VNEdYWngJDI&GN>BgnCTP^CS%2 zxMS@(7Yty9%hRr;9V{e+U_|ZlyNv(?e23v-D?p&fz$A%#vw?6uj=eYj4&jwxiyj&H zy!P}b|HR`;x1^i;{<-Z*xJ*n=q)ufHXw*UApvt(5!ro-4^O`f`RXFwl1@W&_0VXuS zmnO(%sB<L8U?3|it8^D6v4Rn*ccLGOfkRlazkY$?eE`vILUIhQhEt-ALZ8S-9K^-k zkZobF1+z3__9vH(_z^FbyQ2jTr=OD!4GRF&r<74WN2oQ+ntsM<nqv<`6~?=9wDC{2 zqeB|GNe%`^RQ`HeW}%^p5570K%#4|K9YnB9a$L%7SX$~be9l%3Kke=20=vNnU(%cH z$ZFcvQly0?RlcW4o~fpFcaQ6E+n3(k1XLe4V&$gKAaFgRRdB5>M?#ISbGpjWreUmE zh4HLrGLo%EMIdl><I{zNS2kk<Kc+K|D_ZwM7p1onK42owBr;+r1pO7ZabB=#B2qr0 zcDDXdV8NemoHi$FqRN8g7CAtA^8EOYw{fm8(89*zj3JTAP)D1{Tqb;ZeLoZWKihmE za%Rlu+{}PEJPgGAVNnvCzKl39Ek6BgwtgEx^!O>;!dtt$`%Y<?F*^^%^n!3kRA(9p zBab8-9V1sod8eC}FDT*Bp|lY{W9Iumcn-r@I;1pSj}1bHMaTG&F7xC`WGgKc6f5jR zDWM#@f#_(l?2{}zBj$sC>j-yr@UR9RU4@iI8UytnM7UBh#-%S2xIn=^0ru-(cL@P! zdIC;dTMT-{ki{M!X-KjUkKxGTi${;Ya)Y6);Seffd0K#_JD$Y~VJKNR;s$-wFUFvZ zn7BbXUi+U6I1t1A=%4~a|At?Bw7B|RNvsb;Eu(&9n=yk+!Vx%Y&olJ`B+)QKnEdg2 zw=vV_#FDMzeDc!vxMQ<iiLh-g|D0oaAmtp9;C`8xQ@p!tdqbbF1Nj4XlwKIs`n51* zCQ*-lgE(`C(9Ze?`Y6GW#2{1^*UkHO7Z8-tCOILL_@%?>@6{z&G~99zljG_%9<RVj z<ZT$A<V9ICm`<LM^keBTOG+#VkLD2Bf-MysWj5-%q~pC#Rn=NH`JzQx1zZ?wL>=ix zprF$0Kh)+s#i|Z)2m$Yn@3p^)z=<JbZp(3HR4`IrW)GdXeW5%MI7l~Q0Mwqc@Q1y9 z07_1tY}6_{eKZ2&?yPG%C1hlxWyfk`Fs<)`vd|n~qc5dm5@?Y}gON5kSg}yfZ=qa= zm%JH>HlYi8Y&<*Hn<7U>h_0FBJ5HUzf&g?B3GbssUMTdSGW1L!!|WqSVlK*P4vsRR zle4%w!$QcYgR3rt2!G#ngh8-oIm2Ag>yrVhC@6z4v9`lr7^t&jZb#q9AG~JrX7~kC z>XUVnW;J8^JK<Y@wHC!XuNd4Rsi5{m<cD~>qtC&w=hrcIGYExv6jYUiG+0Yy+-)FR zWUh@&`l~(<ZP(cqu18Qp;9|;533wRl$HN3p2r{Yw&7=?}PmaXuA#fB7mmOBKDc#(% z#RiwmYq}n@OrQ-Qzoj|!B5PXHW~5fl+)RQJQ{J8FjD`roehYz;?~rF>lN3bHq*72m zX7ehNXujRby1;1@FNv;66-5I`7g%pI8KJcuq5SiUT+);{QLOK+1b|TrF}<j&XH9JT zDjz3LxMAJi$F`yH^v0uxsuQFlU6qMd{ml4h3mQyKngEJAHeld;?;z_3edbzgx+YHc zFD9N+@FAn@h2=q%*pe-Q&5*Fdwj;51M*O<X>t=GY%Ny<K@&9<2o+lcVZaar@)*Yoo z16=c#@$>U?7!%|{FtD_?)|Dml`5<2Nx+Y8I_@KZ)M)2~^K~qTMI8J#GfdA6HpZQA_ z7xAXe8J$f4Qp>Q-B8Z)qJLZNr7)K$_Ac)UyW9jExcG575yqwrl{=*ZrN@Eum5(h)F z6$yCYb9IGiQFLw{r+d3Lym46fcy#|4EZxdE(|&X9t|TZ~ti*&utL~``!hT@6f<?Xg zuqSzigbG@~?ZV})t!uW8gN9Fcc^grw3A==`p)-f77#q6v2;VKL%Ehd!oRw)=77G>8 zCK0t#*e~@xNsBinsE%sJpu-Hmv(Lu&r}_P-KK9TU)N(7m-p)7_c3+%&GqS`PUGvbP zh@*;I?tEDwc>iBW>Ij*)yg7b|CV-Llucp`2{!R79htSp)f4-B@5&|%uXB0ety;L@$ zx*PQ;i_hn&2^?;yJMU0pcM(f3#aQw?vI^BPPy}M1mDRE%5P@hi5FpH}U)u*EO85>U zTU#@Z1OPg^JB?XWcS7&Y`8}~wnu_Xr6JDzY^fZ&poj}|C@?S5H!PZHvr0>%%s_G12 z+I}i9(CXG#XSmvI=5uy~AhtWmFF^D$1z8ySN;D^j-dn{$5cQ+$>#YoT`OD<YnuDRs z*Utoc4;DOLQ&UJ1OZP-5d0SLIJ&-Tk;J#|>Oo0H#d_VA?F;plMB5MKE5}K)sY;+rx zTW<P&0P#Hf2rTUUl|w*N<VogX@o<|Fbpn&lIm>z4O>#!}yx2F<T&w)hb2sU0^n!-x z)kvbmqhdK|Q<yP;x6GLFQ$We#y^z&vGMAKSS#xF|)}&?B<4gr`XHXbC3i&kUD)-Sa zQu;dynZ+Z!;I(;v)q_~NwOiu!NQ$clu8Q%Tdks1DvzL7@R<G%DSFqBjZZ=Z-ma#j2 zm8ug}tAvg<NSy;=#xB|9yJJGUA*<vXof`=3Fa-5DZ-b*T?JFveS25Yyu@+1V{jh2o zVJ9-8QqpHCn{t|(Yn*p1+f-cj-}f^A6h1PW9Yld_WnxwfEc(wbbA0P56@Td3hr8SN zBr6cz`ZX~_$~ah(qrnI(m}i$JUDaKb%G*X@!`05<I2JOe<ATdfKb3Cuozrt^R~UI; zNx)Zk<?9?|Jv~+J!v^7Ut-gS^bK~pot1mD0SL}I*4V|%L_{Ut<jd{}bww8WUc+@P! z3<wMiT28C`DT>}!iL(sQob{&&sV<Qe03CK}G?y?E)=(P1^MX~!X|yOq7a%pwAc>IQ zJPo$5Do%`gp?-dRIIz$X{n{kK)ZIMcPH}^U{dB53N-gv#T?TlsqZkf`iS8G4C%U2w z2_d|ex)rf>I%u>b+iqBx%t|iP%HIMdjE#AZ*}9bvhbtTlIv_6$+xYwKfitxVNy1nI z72dVotgE(m*=)fre*kX*(I9XqJFZIaE+mx{t((TZXK^KM*PK6fE^JMAiDNjk>uIl2 zXMzsFn=*V1f7^uKh;Gs4Nctt~zjO|l64uZ3YX5Vo|9WY~sgEL&idf?SMcjRz9oz14 zxc;YOQpUrwm!ng8zrc-{&Pxwp7C{~P-&zxwWEhH9#KCBSiL?CDgHyJ#p|s-1iX8jm z8n(@=_wEx#=ZPlS|J<akw4qp;<eB9Sk**np$}cXGLqqpT;I#?IFBkc6whV&`2zlu| z1aUwj8nXMr?dUFeENmusnlcFO^Yu+jheJ4R3k9N78CW%~N<5e6c%m`;0%9VvvEL!T z@NQq~?avUbX;N}$B_kJkBeEo9SVI!$3JQKVvC@t-W<`GGhwD`@t=ee#;K%My=WJNI zPqY7QQehmRJ=*#rE$Q1w{TwH))^bK;lu;E;AQ?`TjaW53(0)`w>z&+DU*Fx69E7^^ zl${Vzj{K3!IB53dlsL9qu=+hOwuE0g;NY2y!9A&bJLx&)gAXZrtWs7g`A}1QNrt~5 zR8rB{MaA^Xc|jqx7(58CoauzRPi<M9Y?!PJ3Jg>WZN>glar-j2kAx-NAT{24yEl<D zhVfH+7GE^^H?icg<3<Vct_-Wc$>8EGA>o)%pEDY&=b4ztAbe1dUK%O-3C3|h)Q2dj z#J1TD%{6gD(;eIGH#S5?bwE7Is0yfr^14=zM=FoQ^M&!*1lQ`nZ9h~RQTw~}tyx!H z=jP_*nO_-^nNJum#MeFU+Qh6R>&56*G15>r5aGTDydCT=-#lIL{G2?|ts{M#zSffH zV0d<h*V1HXK?-U7qHN9t6VH0sO!`;sy|z*mPfzE4yV<=yla$*1=+nR1!>pZ+TNrZ> z^hlB9#~n<WaDCmt+Dqdk21m+D(w86?T&o$u<3i@Lk6w)5ZKrinxe-(qe_`$0=>>1a z`_#6Q85^tRUe}oG4=E6;x1KZyVH}4>&|cky;hq{)ST2uQAA<xBxm-C~_50p(UuxZ{ z!Y0#F@*cMzbu}x@9wo&Ey*PXfcg*INjJ|^dd|#_JCz&|GWjvF4+tASfwOsdgvsNa6 z%WS8uZ%P*&QoLTL&gegqr+s}h5`b1hrENjqz1?9SW@gKe6n9=p|LcU65PXonEW?pK zX8H(Xt4$9SwX+cuGk&?6X3V0-mOK|9dG->9!Rcn*Rqm*dNov~<pmR}`n*4$csYRo< zB_r4CUJd$QyW7O47gqNM3epuSp#@UipJ91}%1^m&uY+srxk+9hmUJ4sbOQS;p1w$3 zRNx9VrjI}kQ_heBD<vu|MY@lZk69|Fj7+R)@S1(SjGk^zYw`(rr>&va4<9SCim%+s z*nsvU4glt7ciMgR3ZwEvYWrdj!|aWia29Mn8DzOx5KI4-RU4@P=qW@UuNFXE1AQ;C zVQD%TsJcJlXR+7B(aVm(CGcknvZ4cJ{_FeOmahj-X<&ut$9K+uH>zz)e}yD=g~A8f zQr?kI$7B5NX|uIQ)3O*4jsVcov#MXoKWgPa!`NNHzn1zWWwuLzT`dQzm=sx9G=^Td zQlXiY(JlCPKDKNZ=3HQpoPyAaAFFX9AJd7pTkp70U2o*t9dyM5MK#KyNTs?Qk1@q* zu!&%WXVGtRJ5`MFIzxVdbB3wl{HBf{>TVbpAFzU9t~IxiEeQKyjvpI$;onUEz;n(& zm^0na$I?}bT9o~p9&ebW^h9oU|8mOs$=lvZwB$7>EQudxX`8-#3q>O{6N~4yxn=H{ zb3;zTg`vN1D^t5%_n&AKU2GY6D9Od3=BPY!Z}fGEvYCl@)+=m@WnBy>q*i1gW5%O~ z?@#geR%WDtWaY%B6V+$yOS5R3-1<Eg1Dy)Ya9LJi@D<`OjvHKmcH$fb;g?<T)~%+Y z9d3!`NO}%fAu^3wa80lnA}i^Cb5&Jp;ej97HfjT!?<DWz!JexnLTy%YnGyNaKlW?u za)pF!#K(-ytp#59OYV__I@W=LXlYlkf-1>E?CW~}-NjOFnW-!cVVd@))~r|qg^on6 z+<&kf2=}lx>kgrxe8HM7PgR#0JqWvErCg=i+02`Y&acZhcT)fJfr0b~_*Y-|Phl8R zevrvv$37r`XdoY%?&>xc=80~)_`d1*KWo+zB_getX8iBUV;zR4*7+#oe2fw&atwOM zs`cVahzxeT@vBpOcAA<{Z&>*9_TG(;rYLH?GJb1#`+NOK^ju=rzZooh-$`VWFvjmD zIFk@F5EAK|(NT}f*7-_(-FCHO#`$)9bB%rJ_;C$iLRBOL%~btrokDr4SjF{&_l=l* zvr{Y~{4!ZhLeE*nbGBJ+lHqvEJxm&J!2&7-U}h#e;SUuW?Ix_a;irZ`9UWabb4B#d z(%KjH!aob1>6EXyf4TYh=vQC#Sa{04zQ>VYpVgn_8;%;&Fz)D7^Et^2ENZ(9vpR@1 z6~^|^Akf*LbBAW02P!Qlm!<dbf9oNX;_wdTs#T2MY*~@31ar6aeMQA7DI#P%_Cb&6 zrWusd`e*M4ma)!%ksnW3w5-}PHDBGwZ7UH!UCdLo59?<*pB!4Q;#+?<&u1fCv<G4r zeGQ7&)Pr%9-{?X=tp%9~3mvYnRd@G=Bx09R_SKCwA;8?TM>_Uj9)-HX&Ocz@W9BHx z1YC5j=0yi1AX8B81VAyzkA?SYcmDbO^M9rMqw<ep4NTvi&(G&W=6SW|j>21|%4T6& z_u`A^<)mGGwD}h!{}ePJUR(?@B*);~!|wZ@vt~_<&F#(gxrx8#i4p!<my1}8y0FXr ztTCC_eip)bzt@cUHS>6W-N}ybfKRv1KJrn8#DN}!<@l)EkHh&kUb#=)F3Flz^4ziV zYZ-rm${&Cu(<`&9|2Q)B@8dr2l>w``94~7(6x8*k;`9-3zrG=~+o|!0l=RJ2f!j^~ z=J|0C6+K>8Z<%S8rZ+xta+5-ysjHBHQP8sC6D_?wGt#>{Q53D=60EL0I>?Fs=&i`} zmGp-q(lVNUAg?G4*PGz-H7e9r+pWD4<9Tpt?a2Jxx#$NNy5w2IIg&mh@A)d#j@UWZ zFa>~1!)qgnZi`ZStWHKA%l7Y@<gESbHBC#PFS6XK*f4p44c9{@S>s)_v$ew=re|jB zBTC{8`fRt5_5I;(9}q-pyb56~cfn@Z)`JgeEyNZ;1U_>KaTh|J^vbo_$-x~dgX~4` zKB?!9sOmq*wnW$Z+Uo)gf2C<u^;GQ1ap4vcY1Y0}re?6UapqdEKi8+Nskn%D^9TSU zyh*9<Y4_->(L&4mC;mMb*HG4&Yi+fxpr}y~bjXDV^ffdyz%8hL;n2{zXrvMIhg@Qg z*|Mm}m-eWu*gvaj<;1;(AoTxb<Vz8GQP;a9Dx)?ycSVj|)zcS=xoWd<)X6NdG%)+U zg~Ds3tiYFct=+!6-|jT5S5$%>a=m<S)+6l(&%?yDRJr(VZZ67aj+;tBK*isZI*5S} z2IZ=#M@fhKi`9A+5V+p9R`?y71RK@kXKrSqM*M8swNJTYt@Xo|^y%%0zZR>jB1m^f zZC2)6$QR4y%Pnv4_racYQeLEd@O-UvN0%n=lHWOVrQRLATUesg#0+dncQmM=g#=!C zC}-EZyNDq7uZ6;S(9mzE8Fvj240LrrZs?HD=ZQuy(V}We2ND9hb9R{5-m&TyuP0H0 z4m8`zv(Je)evbrKLKh_eg*D90$*n%)yOZ*zo1Ml-(PvM@mc~zsRXhCe93iq)GM_cc zPLkouJjloPaAH7($?-q-P7KbHS^<1ZyWgSd7SV~G8}Sa}#6k<v`qrvGKC<}9e0tO_ zL?`PE{x#G254H97OT37<4`*+eDyRK*?&9Crf52)IhoFjEiSMkap9KwS%&-expXWc{ z2i~Gx2Mzz3aPu5aSJ3)+mreGi%X*Z|MfH6(d1>~Z0eW&2fde9~)B1^zC(Smt&wf0g zeh$3<#MG67X4d#_JBdSL{MCT*`dRQwmzCTt+ieeRnRv;Vs22$pqnMeUbz|dZ{sRiU zb7ur^<Ffv~Th(-H%wkQ}qw!Di?+V#YF0-12Y+?^RAKR5tCUjJB8c8e_{ui{Jp#X@N X4~)Ip)Y*`=&w-Q2y^hu4f;0ag)iOT} literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment5.png b/game/modules/tome/data/gfx/ui/parchment5.png new file mode 100644 index 0000000000000000000000000000000000000000..c3aee676a26ba0895abc6a564515eb2e6dc52c28 GIT binary patch literal 5086 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 b0wJ(Hq+iFRtKS@aivzHZ$1pXA&n5g1?V++) literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment6.png b/game/modules/tome/data/gfx/ui/parchment6.png new file mode 100644 index 0000000000000000000000000000000000000000..10f0fa0a6af3808498dcf02df56389464e25c2e5 GIT binary patch literal 5743 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 LVOIwBZ1VpAd^zor literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment7.png b/game/modules/tome/data/gfx/ui/parchment7.png new file mode 100644 index 0000000000000000000000000000000000000000..93e2b95813484e9a26a5e3fa4d6489609b39ddad GIT binary patch literal 5266 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment8.png b/game/modules/tome/data/gfx/ui/parchment8.png new file mode 100644 index 0000000000000000000000000000000000000000..9f12823702b6f66592357f7cf3771c8b1063f2a4 GIT binary patch literal 5935 zcmY*ddpr~T_g@KnT(U&w61m0PCy9_+6pJoHF}ILh_AIwnZkt^4C_`nrJ)&gmA?Bf3 z3{znfJ#H)0CM&ANXf#ab^4s^%-yfgPd410L=kq!5^FHT%&YkmTPb({EDF6TfWls+` zgj62?-vY`>_xhNGDXI7)-XkDMYCrnFwL`{0_qJ5IE9!*z2>_tED$MJISb9DX;eqf5 z05X&SfZHg*4jE4X;8s2WaK06=Lv9-YaQXxQ=l~PrERF*J`-q-yCw!AR^A%3d(Sd(I ztj6hy+gESSJ#SKyeSX{qq@)B_?0xm-eDB2Z^Im>xZZ?NT2Il0;%(61o%6`P1zXt<B z8~#~ECJiMBk7OTPci>BuG5h`;j~sSn{)mf<OAAC{^C}Nzlyn<qFuHM8uZCsU+5xT_ zpZPmCf^JnSE+*~x|H^=kv2A|Q7G_GkzftXg&3L@-U!{o6o5T;UDcvF4=TM?ctrs&~ zNy{CuJXc}mUQXHa#)j9XO@HMJUwA$`aF$lZXPa!=TyBWObteq%0G(Wx&^Mb%F<U-) zOFZ+sEhEy}sJKVZVsPW;LtiY5IwmOw8$e7pQpQwdM3Mqf7Ion&@xyjV>9=#0sAKrn z?MUvp>&BT3KJQP!w#aqskR!f0`1@}?e9>$uTCn~%1N>c_Pg)p3Ce6#k&GFD5zc){5 zXEzsC?iI95Yej|Ub(dnddg5F+7I`6|q1{oz+a0eZ40&sIWMt*RZ$VE9W62rQ!^I+p z5qNRZLH@fG9Xs!ASC?_e@dzj^ue*V=wO`m1$~wEv{`YowYn*_m!x+V4w|CzfQ$X8^ zB;Kw{ro@<v5|Q%+6%#+SsSZjB*3cc_8mQ*$?Z{9Xx$)=@bfb$f?Rplvc~EmB#ny$c z|Inz<jb*<kas%G+g+Hx*Q*FX2>wqB!?0Xm4)z#J8;oxW8OE{Mf!h?5^h{kUMkrO8x zfNwT!)MWg@rs7%In1FuB(}LGWnUWPZ?R@)-fUbMf;#T|Zaj@uRm&(tTl`G)WFkr*r zo0L@g=AsOjHsyXF0mbi~k{`X%sKdBGQrpfV%!#*|8EelJ4y-M58Jvt`cvh$vWV%8Q zqRwxAVW|j}n`+WvCj5&wr^N)~Thp=IKKNEJD#1G&q#Du4p|)n=uq8OC9K={a8=>wO zvh!z`F5I9kEN)#6+&3?qLOi^+3`R+B3^8uvYe3v9lMIMgBFvmrPwv_UQ=r&g4<2TV zg&uXuIIJz+5GuEdHRQjeHBf@{K?tpgttTLZjirpO(rvcCsAv@<S(ur4>&RMh;ef-H zbR?PL%!E{e@&&C&Nmp^*Z#8oW4I=zS1^r##Z2j9(m$c^2IOORsuB|FcF}L#`q>;gm zzt=a09K6fO7C5j;;t&}1$JC+WI1csOjD{=d<k!vA@CMoAKu@o#Qz*(<<<{3toGpGY zm#Y8ZtFwz<_gW^OZ!$A;VzFw*A)32SZ$n5yi-iD{8mG-afVz6TiI?gEEqIz~En-dd zI0lJ;dkAz^Y4^c9XY87VPH@yJy06s|;y%P;*(syh3A#?eMg0+~CDb@at(M?Wl+709 ziv_nqJ8y{veKRxK{Mi(j>RPou2v8Q&@iaa&OeY10RrN8*&4bG68+o&C0f<HtY7OPP z^Nk#k2jo6{)Xq{u|GP5DB<D(M`e&`vK%xh?<zKS7Xyf~YeFG|*R#>KL8`a;wJU8o7 z&Fg+j`R=egh_$q_QLA^VmY~DT^i@Dxz&sjSb3j1-5sVDuC<SWgoj+DVux;Y+ty6m~ zPotYK`V(}oe|ojN#%QsKjtKa!$=B+1ZTh5@++F=AH@CU4%$9K!4{alz^tjXd(=3{% zNEK@9@9I>M8c|vtoYXHl_trrE-^<yefV*v0hq%;H6+^fgVSKqK4^z0gehX~i&D{fY z8=#eCVtLT<Cj<jxFYO)ChHM<=Fq{oG>~UzeI1?6JXTvdg2=h3>#YFBHAEWGd%*GUg zc8(wAkeNtkN~OhM7Rm_*jE-2`s*OQT%JNgHVmih|Xm$j?kCrQP_GioTwK!z!8HxZp zZg9c|zn7VCx#20=sg__Nf;k=n%`=CnWPkoO@(5D2py3)HGV^s=x6Te?eBh9aE>K_d znLJ`Z@mHqTDeXZjIelyPX1G@^;g4gBsV?QZJRtM|!l2g;K0Eb=Ig=g1YoE{+Xi?D- z<xvECjcVX`wl;C#YHZ_2@l(oUG12?n@CHt1=PYMm&MR6jTi^*VZ)&oxpgtAI({Qia zsh$32<Ik&0QuKS>Sd`_S<QI)l>SLo*Z)9JB4B>MvGU(xic_1XgJ85M(^PU2~0ujyq z9CY&R9Zaw%#IW`XcR;d=me*fA_PIh1w8mml_6v~7in|>7zjPHs52McvmE$({eEH>k zc4+2GAREO<tu#MEC7TcPHDK@x@{IF2#%yMiG7L`e)nUGN9*&NLXO2H)r6uP2nhdsp ze6G0e9uj?ZP>AJFO>*;4PODgES`k`7WepTf+cJ}4k;);T1O|XQ^eXw8C?tm-mG0~T z`9cmUg1jIHo(S=hg)&C%_CpRP%CV_GaNq#8?2dVEp}iJr&`K-ft$B3geS|uO?=qFf zhzYOazxnFjgPWJ7(l<hUC;OX)Z6rLSrvKOg;r;^x%lJVE*vGD)X5oB{-u&*+rp@Qu zoyehkN$sZvI#Uwc_V72z!4`|<o_;o4gNYlVDD!Yj+O=xQ>HeK67J@8j2|;vtx6Chr zpqQ)|%`Kc=%Iv;j&FB{i@(nOO?!JYX04a&sqCN+gpY|~oyCLd`7=k^p4iL?e=KkjK zQHrI=xj5-+RaCgwt>ZB#xqgW+I(gPP7CG%gZ79PQH(X2=<UxNe{KYd}_-I#4_#wG3 zQcB0s`=cAo+1PGggCJL2MHXCue*&I!)F+PRfF_D&>hV?)=DP?`J9K#|^k5Jx2xPe} zURm)RDvzvMdd++1)XkHY1FY+L&gDk)#(%H%`g`<G*uup#kI_z`EF}+Ozh<Xc`nuNL zMCHMjngYn?Pnl|->wUO-orRGEx40=Wfthj`Pkg_W%`PePwQ>^-ay;PWXx_({U2EC1 zODBN$D{Z+n)rjd$s|Kxz@W3PZ<^#K!xG6?&yByJuv*AD=0HQ`1JG01opqd|lRX)*U zJbz>q?3!3*!kADDE2l2xL6?^D^}x?g>%U`#&RqJ18wT@1u*+7KW2-VvY(=3=_j*!y z-!k~b6~Y)Bqc|zXGVPTiQMqAnz=PCl{d_4}3AgTf5StWl`m+xZ-C_!wcY`JvpPbI; zHCy+cd|dEtCACH91U+aQU&Xh)J|)yB_i{Z;d^rA)WX_(=eKP-!s-I)JiN(Gg-xE>W z5flc@yapc3J5*AcuQ{k@wEJX{uluhm{vGj?ehkX94!`1i)sdReAC_+8axA)|O0?V= z8b`3t0hR0OU3nz|)ci=uF$LMLA|jRfDGv@Q&1B=iK>Zp*O^g$XnGN0>?7H(o)37yY zI_t$1o>&m~0Hn&A$tDcc1o@B(RKA=F!<Q2V{0ANP!rVOWG*jd6-n+i}s>Oox>HJsn zSi>NLilziJZLKw8-J5$Hvk4EB+DKiI!j^_w-?H(tF;$pZ4#8p&-lh}8D~eQ$?QynN zn(=?EZ3sP>+kBiSsrmf~1$av%Q_w0fo8iF^`{>b<nJdAH6>~y_S!dCo+(Pl4ln`?G z-+|`7*vnq!&X7pPQs%v1u#X9b=OMS1o-FfH*7H-0xwyxKQy%VYu|_5K0tPl6l<iyb zZ5lt^bgtKrLW&7^x!)?<N-)&f(8+&ThR~<9&gUd4Lr>XWMz?=qF>BzhujNCpEYnKZ zBsccW%43fyjP??$z=m<p)`1-#bfqfsAkmAbqQgAFUa|9rUK?u9pFf-!d?X#%OGtL6 zC+L`9U2lOL_{rT<y`WLXVk-Uf*eKMEVkQ?0K1Fzcq&P5;vX!7S&mBsUqYWan5A@mk z!85L<OIBqZecDV*|GNigg&G}IGGr#$c<Wh+-dJb+K6A_Ir9+nqBgZ~Btn9!^_R75E zHB~(-P}mrw1;YdN^Pn{gef7))wX9kBHy@G&w6T><%S#2V8uRB!MXEUf_m7^Qz&*m7 z%inepE&PrR7ZV2axK!nw&zn}ikK^xSg7+XUH@ZVG#g7T~2aGfx{CCOJu-3F9qv{Sj ze4QQ@e1t}Rraf@QG+pgHXL6~6(9$ahESzz>_yZN;Fw}CdO!b-At4JjrJ})_&w{&$I z%}sF$jbw!Ge%^j+LfR2P4~E09*pd@A=3e4%6BKe@`JZvc-!e5tA>Z7#No&2R9}?;t z1q7o$QVS~EjZ-m=<QVWXdEf~a)nYI)zrB9V>}X=HG=0&oi80H|Yo9l9>Ukk^mJFH3 zm98_$e6C?F;dnBQZhbW>00gr+%jz53BN+HmuaFq94-a+!>sfM2dOp-RZ~rrS(T1F< z?vx|N-t^%Fby}EY_4We1oUH8u*%#BPQ4rP`$rGDznW+ZWAuLdq`~Xhv!coGQhjBoO zY|6Urn?jMBSqg+!h~}O#c#dhlU;1L;7J~S!7STp}?Vm4p{{%rF&ui%c(&$mC&i$_v zbPw#>v{8!@C{E|79WmgL&Cf1Od@Pa@O+bU<4a@Q3OjdORS1xOM&n=AQ$J@TQ+dAm{ zW!X7$3>p8}bZB!z5xVMPOT>>=fCiEi#-G&EF2CFh(~N}mn~y>sBnMoiqM0G^q3CQx z1(xS{E+h1Pz$M(xK58sc5$fp<k32EhGInFX1ZOj>D8YeXwZhbfr0bV5()6s#b*=gB zpY|G&+<?tFCeNY*#?3(qz+L)oFw@ZxxI2VI7==S9RsnQS){OH<G3;6}JG{~I3kh1u z_q<tNlAyCRB}(s_l@vDd^JBCE*aalWAB8HJmHY6AjUS)C%Sxk>BU}dzWOqg=Z7oyK zX?2IAxzxM^dJ3ma`{;Uh1%`ds_5K7HyV$N4E=!)2Rf!x%Pl-~8y;#@f&4uE0UbS2% zZTF$?zr9(M>%mN#)z_fMeyO598?`5iRq`;xt1mN8<NII6@yLqN6#H+Xc-Jb0K7S+B zkVoAJCuqI9jS5n!^)>Yix(xrFm>(HI7^lEL?YOq00Wt0r_nZH1x+m}|PaJshnOf8A zLq)R&_mE8dq<C}p;oLAIqT7%r>Qk2l9r*6t=(xMwHn3-Bt61`%^RT~Q1o^^ZaDjCj zB<9sxe0_lqyhG_?A_x5q<MplY1Oh2}#50{9Zv`u6t7|Re-(DztvnFvhQyELUo9|5> zCWSU>AW=D>2EpA*5_4tRHUl*<7<qNzzHb5=`8W5Drq6C`GgbKD@{x#A>Q17XP%wD{ zo{~XA+>H!yD9mOHFu(7lTaql}j}_J&C3d#-^v*23rlLDTn)Hfe>&RI*4jY){#CN== zQOSbA%z}03=lkx_YH!O9;Y;J}8Ph>MbfGw(<!-kX&c^cImYaK6YQ!|Xr*cN?7pjN( z3;Pp?O1uAE-i$XiBL>yZV;<E5I>_BO0{5+ul!p#W^%4TeV0{d@B1D#Y$8vw3s%tHb z4EX8&P(W4nF(T!mbdDvHm^muCyOvK5;|Tw}^OxD#@S<1k0&-9I<&dj1y7>!CFc2DF zDGzn0jDAyET5l*bc;*_@v5%-OvNe3@rj1p6rds+^ho7lJH#!1OtYmIhpm`HTkI2G- zT@R<}Q@HtWR~(ZYUUW`bQ?Vyw{49QtJS`wCAg?F6!-+2y152}IhpA`}2$V7DD#i}e zh4>l&p(&c`Q#O4;vbEJo7p8QD)DlLJp#d2eFc6{y`|Z|;NmFjqkB+H8Y%p3sLaE1Q z(&XG=OVGm8rK!@0F475sK@XQ|oO7I|CL$7Olh3XAJJrqLv#KsJNqXUgAad_T*{s>2 zU!hH6bZn>fzZu6uJ?gA9ZrCar>h}uXn-Ko}iinrix3Er!ClitSUzL~mB6s{9tTi@- zV?8Of{4?WmYkQMVRA(!>_6_@}LVF^rfUY;d&jsZ{rHz45EIC+0i(r6BF|<3)22XyD zBxu&$Rl~HuqM1wkel+xAkIg+q4LT68+GX^1m|rY%E+-`(_bDVFS*Ld&&PysJ#r%-y z-h8B^J_PA7&$%41uY%OhwpBXm*yCTqy{_C7?}-lX78tm7TJM>7SY0ra9J$5}zDE}P z%x905AZXUd3TJ}VP?pefiza7d#OY}&+RodjcOb>KaAva~&Mny+#n+M0dFRPV*x*Yv za>vSX7e_b*>b;krQscX1H<hMaB+pNo@@bsvX|W*6DioJap~%T79i~&YqP~ri44V5Z zwX2N(yO4_N6F@Nw-(pdXt);Xxz2KON@2T&I?m;CEIq?PU$vjHZZvLc;+4Fs)NS*<y za$W7|d+Gw3FZ5bM<T>&MYiB2sF!<Y<3x)GnZho6z`97!pS6Cb4%w;Lh+kpDX&bmj! zOCp~Lj&_RQiPAfou)H`#eLR=CP|^eg5)k4UyVgE4XTb(pc6Ew(QS4BtovF@|juZT^ zpGv9@a;-j>8}=$K)W8NJ#3<<B<5E9i19#iZV`UHn+V$#VQ<A`FaD)xRW?1y;nff@q zE)etKQDak+d!t94C8GT?xV{+89YONYBVreHU~THBn8w3J%xtNj)5x4tkiMCvwg+>` zJ;!ohNs~wMQ`O>DchmP(R!?Ab&*!U`zvb663!pEn;wrvBsEpLPNW2t=y!jlq?tHG6 z@Uo#%@t;~`#B&3jLd9HK{hhtA#g&ylJMSL?yEdy9IuCgUKC8QgQG-Jicjkb^*E}J@ zM|J1xN0z5}dJ}fuZ`rW6G*s}VDWP~lbM8NnfN3EnIBvQj><rNOWfL|)F;LQ}8gJYj z2L3_&dCiab-n#~tCwValT}v7KjEqlm0gj8YCoV2@Ra+h9r%STdGg^hYVQa1V>_=n+ z=G5?}+RjD|bkoyWz9?mH<R*S#<3pLZPYOL6oa<CRM<Y-Cc#c89Z|cW3n`!Rui8s8# zrKTO4I~seR6ax!HNeQde6JJ!c{-rh4oGWG<TD9`c1u|l#&?Y9w?CbN6T|e{3-<bNr zhLN2}N=lU`bLrq1ho`=({^r#=oiI(lpXc~2B0s2`y)!*MUG1x1%|F(-W7XmStnt$? zaGycV%I=lpx7$F|CDpGieIoF9_KS=U3m?))z&?d<n=V|s*`0_mZW++TG_UXnF0kxI z#hZ<xxO(q7lHXr{CtcNHrZp0JCf>YJx9XEP4T(Afx>|0m?7(Qf*KN#K)Sq<n)vcTx zNOCFtXAf+05i<l0YQ}J>-~OOb+Zbl)v3l$!r106V^PBAs7vI__vA=jFnOy4Is&`td zk68as7E7@E)7+(`3g|HV$IM;uuBjIBw$>^(pd`@CPxJz<J>w9LeydWSxelGRbn?$G zy-P)U5Z`aorD265cZCF!<;*eTZ0hp|orz~3nSN0FPlRvShDt+J;wS(9;y<smI;MYe z&iEaWh6L27&%^lrdYby_agO$$R^wP9TlRf>s4z+jhwb}dbj5deza6nRK}VeY+_vr7 zsr}7<<rlAws%Jf18T1L6%n`9z6>vA#R<i2{S&UL2IIh??GVzhYO4^5g7;%PKP5sgL zNRgE3q}jrudb0)<__*XB;eEtZNKe`}irO|cNEbTr2LyuTSndPBrI;X?SJLpJ7WP95 z@^IS9D&~tH#W(Lp@Lx3Du0~bL-HQ4hu{(xE7CUD9K7Ua9z}~Q%s{h+>&m?uh#r`2e oJR9du1Wi}@Vx<4Z#cg>2r*3XIjH3}P9c}|W-Osv_VVAT14_`U-8UO$Q literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchment9.png b/game/modules/tome/data/gfx/ui/parchment9.png new file mode 100644 index 0000000000000000000000000000000000000000..25b3ec0a34b91d8e715c11d69223eeac231a6df0 GIT binary patch literal 5131 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 K-tAto7yl20)(ZXr literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchmentblood1.png b/game/modules/tome/data/gfx/ui/parchmentblood1.png new file mode 100644 index 0000000000000000000000000000000000000000..ddda2adc90189b35119fb376f4a7b1f9a16e0406 GIT binary patch literal 782 zcmV+p1M&QcP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z5fLi^eI70V0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~0007I zNkl<ZSi|MlOOFh36b0~K)$}~tYYg#-M93^mEW|4lLP8LH2C=ZVs83Ugt@r{$f|!V% z5V0YVNQk#Vh%iPBX7pIp9k2AX>8c(U{+mvBRrS61+;h&o#s7Yib|1*;Mi0JVDr34z z0<|`SFUB^k!gV~Uia^>%@Lue~K|IH+PPCvl$KVN;Vk@5EcE&^}5=iqu@F1?&F^o~1 z$NNr^Fh$=S?pYQHT*qieqhl(_*%FXW%~Jisfc_y~WPB~5oG$cZ5X*5Nk25A~cy0EI zx-g(f?p4X)bqrxI4q!b-ic6l<vZAkABrt(nS)u!O0w+=RP8^8@`onuRVL?+B<i&5P z!eII^mN8kPy}j6s<JcXotSSEMZG8TkK+Xyr#wT2gewCHmKtR3+i=wFU@Q*Gua?;vw zkPYD&uHa(Eg9-$%N55x+Kf@_pz*<GIqu-q{JpC?C;w(N^RM<PbiJ9>d=Wrs_G=vR) zMj*~>oX(0CR6XOk8i6k3QCRuDXzgWuNzCKPSrR7J7tCL$kn#=O%=nNrk&db(c9s#o zAihoqv8OVolel3<BIA)j!(Tc{*yM09b0o-@qS4HrJAGyh=MA3v5pXqn@)8?Usg*2H zm<iVSn=NQXoV3ETNnRjWn-c;}rq{}_%+Kwj5vyAr+hcXR*NRK&EJ^LhjuK02E#x*C z!N>fefMx+Ea3;*7QG(Q;Vqd&7FYg6SjH?@yWz8!sOTvJAP566H$KMNDkuQP|;%JQ9 zq+<!pQGUJH7&HDFK3B2g-soYYjo$afNd1t-{HT(^p%{;2|H1*k0Tw}?nOgeg8UO$Q M07*qoM6N<$f+90m^Z)<= literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchmentblood2.png b/game/modules/tome/data/gfx/ui/parchmentblood2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc14764296191cff425f9e6e5d16e46361f66b35 GIT binary patch literal 671 zcmV;Q0$}}#P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z5fTmfUC0ms0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~0005@ zNkl<ZSi|kty=zlp6bA5LlD4$5R?#Rb3NC&uB7((1MbKRo^gnR)PW~YdcXx9WoOJA> zgP?<hAby~NR7<PWQrg5OO&#tjgli*hawCX6aJjsB-^+R4=RD^lY}@~CrOri~tw%6{ z-Lc=mH#8F3MFSYhtw(VTS8x{Nn8y^RQl=Bu1_B^%zZW-g3pJEwx1K~357CITiU3p2 ztq<Z{I3J4rAsojgjHL`?KX#?L5cUgTJ^rH`09$8k4M%Ysmr>~#L>|B*zN3{p*9sxF z1Hc9BDIyG=0M@X87ns3nI9$P7Ji{{H;Xa-wzXR<%4XZeX>$r$9Oye=0;B|acMLo%c znNQ(%=kLALfe9SJVN~!1U$KOxZnYrgPzZPquM&Q2xei1;7t)OCkHNq`oWy5*=;FMB zGq{8IxT_Zc9YC6Brdc{(!+AWyy$DkyD&x8Uhl9C^5a(F0bzr0Y6}*h670%l^^|vq^ zq52eI*t!Nbptgzwac(BbbkOZ=4W}cG-z3!kdS^>16;U0x?ccDJ9feOsTXcQ{5AYMK zy*8y%9}J8~Png7W%=H4I+y{HhGA2&MyEHHcx{Y9I*8O&3G07@s@c_a}ElTiw(L-r@ z6F0BnYQ%b^=xo}I2I|q8XJbkl+#i!aurM4Quw~l{wqN>Nf{pv-kz@b>002ovPDHLk FV1hDM703Vp literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchmentblood3.png b/game/modules/tome/data/gfx/ui/parchmentblood3.png new file mode 100644 index 0000000000000000000000000000000000000000..d069932e34e33b9ce8a54b83ae86978ae78f81eb GIT binary patch literal 981 zcmV;`11kK9P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z5fUa;;W1DE0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~0009l zNkl<ZSi{}cOKV(p7zXg)OePm&qiL;LZ><Hfid1S{v?_wMf)XzU1$TmoZo~tw`~c!N zm}PhF1Ql@;6mj83p+@Ni!D^}|XzdN6O-$^hjf?XP9L7k-nd!zC{>+>U=e<48^S(8G zSd$v+xRT#3xD&tNTtRE2Z`A&)qk^^EYsA?ee1o}e9Clj0OXoM?G2GE)IFB~r3A~NR zb8X-OC>`#PqgS!B$q-gCkK-wMtCs*8>t)<7b0x@OjNvJKhhMRb&vShy*Zl>Ma*w6V z%jxMQoWO^8B#!C@m$8u3vki4PpG;q0Kz)kS1(&8+!d$?13=7jG^82>V7F>h-@F=!p zp~*~9W_>bepjPW>!6<g%LEMd>@h<)f%C`m&7qC#2Kpb2El~#=6I$XpGZotC<;WnJY zJ2+bO*@}O#APiW^(JaxwI}|*CkpOcm-bgiiwr+Ib+Th}WP_YrLJcJ$1?!M7|1^(ro zvGjf|y1#-iaDLz|SjU#|H9n5+x1tN5Vxq}dk#<#ZG!%SY?hv(}0$2|Je-AZRF^*?& zFAn3!4kqnPdr#VcDUB`$Q4Na`pc8qtJMCCgDq{QndKmK@KI(~vl~FsIGaL<Q;e0SK zo@y*&z9@B~T7g@YD!Q^kf+Oqcz*s);M*_SJuVv_bnT#h=jWfN1uvs!`Z=<8!6WE8n z_#heIob2Zk(3ObPcAV{FliGsKLzNqwGXq}7({ZpVeE%x_{xeG0!cnYFS1{16O=GJ3 zd!be-$No4!kVWIO%z#69FG0*k14b&iI9~L)j6gle-IkSWU*`Ma45jBosh5K6rBvcY zypopnJ&uQPBkm7{*6=2-58B(*TBuayS)7YDto9qgT7qaVC!;}rEzerX{8WOO$h~9P z1q~vAvzWm>xIH~?PsOEVI-kk+e(>-^QC6Y<eV|#EdRG8=Fq*%F@1qHec&p%(L2pEj zir#;V)8YHeq1+6f#83FmRj~Dxa56)t&HFv+{SnM=B(HrhBt?n#BLUeh0o}oz$w60O z-EAhzW-C?L6_vcGGIXw53p&~{j=PfiY=+OO|C9X<y?5k#^B1gb00000NkvXXu0mjf Dk@>@V literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchmentblood4.png b/game/modules/tome/data/gfx/ui/parchmentblood4.png new file mode 100644 index 0000000000000000000000000000000000000000..959a9c87c680a6022d53e6353ca450b16665e28d GIT binary patch literal 594 zcmV-Y0<HatP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z5fcLj{?t|g0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~00050 zNkl<ZSi|ktKTi}v7zXg)?x7y>Ph+8lgaouBCKM1mD-&a5?|0ZQVK2>Ad;()dp_Q6o zB^7)EjDjJNgb+v|cb<Au>?DME-p+bsw@<Z`op;}7-g(}6W-}2e$uNzps^{Z^?=>-3 zkQemE&C4Q^U&dW5V^%d@!&bp?Ox!d&I4$`7w|P?$1-Ol8cpN_X9{b~xL*2@w2$WUA zTey#1Y~UUCB|=>VhWLzC9AO&=1;0`e$RY)pV>oUvTl}{zh(%fHsf&KW&)B#;QSuIE z@C0*V+^h?N*sg`X?+3N_BEQqc5}xA~R&d<34ZB#x)6i~j@HLV^ADeiAFXD+`*n%5) zfQPsj2t^^B3p;p;^@72_97H{Q!Uw#?w<bCW!aJGdBs{@7ws3&c2?RM+=azr8VF<j0 zL5<60A;FIk?{duJ4nD?^$VZH`2-2N$#Ju9%J2o0uAo5;tGmt!N(4vzQ2&-MdBbCBm zV>g94<&nud;h<R#qz9>-F}4CZ=7P9(u-By5Q<+UxCi0FJEn2ilek(4|U9|DfOP(nC gLb%FZFB>lE3|Sy%<-f}HCIA2c07*qoM6N<$f@q}k-v9sr literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/ui/parchmentblood5.png b/game/modules/tome/data/gfx/ui/parchmentblood5.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6c047bb24fdee9113618af865d9ea126b9ad17 GIT binary patch literal 1446 zcmV;X1zGxuP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01Y|-01Y|;10o)U00007bV*G`2ipP} z5fc^iDq#lz0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000F2 zNkl<Zc-rln%WGU^7{-5diDNQTHP+f#)5b<ci6Y)m5EmliB_f4_6zNI?7sBUX;nvl+ za3SczjSB^}ixCB}qJmPPSglD-Qfq74#I!N#OyYEIF1}|>taCYYIdgi_^TH5@GdbUR z-|xLV&+{FKEV9TVi!8FpdSMn~VSDCSj~pKWhH-y$23D?$0BFZ|0#5+<14F<x@ScIy zFa#jkrSl`e%fNm)|0VD>kPE2%ZUA-zabV8NCM3IDcR=^}7MKDK11Ahr>OG)=s*f=k z03HYS0hfTcfMY!kfNDLXIxku{2fVAr7l5@!PWtRTKmr(4S^oj#{V0Jk;A!A9V8*ye zpKg_!eQ+M2pbVVGrT*ET20%4-J#Y{3o!9^Clk=$T7WDCF3Rt)fxD_~K;9`T{#MOk# z{c^rRscr)<8YudX11`&wZR*4)S}pFA^Kq5xKHwwZ_j*matrD=10!jwT9uQy!2ZRFI zeXW~QFUYrg4zE4n-?VNJ@wC3?jaxhykn<R*T37-;_fm$j7U?{wn-rR4#+|@(z&!AY zMr2UC-?qhDIR6wdVe4dyc788#5O@i=O|v*u7H@K`q#3_V{U(wE9tECPY0Rkvs-X{n zfvP~xFTi|*E}8*u0=5H3fT<w5zOQ7+z~4<S=Y+f}0!A}o)G)dsLj~Yx;1muNT?%6W zy43?}<FV2VY;3szXetZ?Hv`v*cr1o72+0ndPXLbq&q@ti)%?E@#xiJE4~S{jj{&2= zufP|Y7R4=F0@jVY0<b1*y+gbIr&7O6NG;~U`805#mgb$*d5tW!3z96PjYnn2?+obp zLDVq!h$hb(k3`8jk@ZF313!b{`$2|vjvoLfa6;uwvrN!vt%}tR8CP~!BoOjy>uQuo zfU_-}PvNBPzkq_@&i5q)8ub7<TQ-h#)pq`N+!@1%I9<QeMcJhl%oS1eQcxMtsQD%8 zs5Lo_)NTcpjIhcxxHF5dG_iuofPO-2W!o6=8t^Jk!hgfSj~!>g=Emf6rc~(8@r)Fz zaokDOA?^M-&rQ(6wW^&}18ai5BVv44@_}a(xC3|vcu*7PO`KG>+>Ri!8z*tyXC2W= z0=EDownsg~Lfkf2qdKvap7SB8Su4OX<B)2xoiR9s)AxR0BPFNA`g&CYe)OJ#p7U*- zkaN^PS%FSy;#9l@;IwWs&xWj=vk>nU-Svq(lyHZlheXWso2E@l0ScvN5m{tmfWm4v zJ2i*T0H?yB6U2KQ%)5ctaW74!uc{1C77Qy03%FzHQUjuLqx6CE#xcLG5de>HbrhHc z9uwAhUx5guT#|iWFCm=%0`LItSS<<6S~!n8UFxg6o(!Ppq(oZMqO23b>L~%4k1c%K zsD%93k-pjF29!>z50n&)F?}Bg?iG@on}l4pOZaUemhC10782PWaeypTCml|o2afAg zQeVg@Lk59ez$`GA?J^6potA*!wAulTTR6!kRwb4=sx)3w6Z3j1w60n|sZ5xb(@$=? z-!O0&?(}&*s2-389>%>3{Emc$+FRfwqRe}MZ*Voc*oHh-#xb=ba8%s=xPa7eI5G4v zeR%6U*@9gyYlklI-!WCoj$Pv5sSa6T)jFZ&dj%jRDqE2NQw%Zy>%dO}HH(*};ymsh z;qB_&OO4=htC6Pbd3-(riY&6oB8x1t$o^;l0CYuvs(_e7bN~PV07*qoM6N<$f^)oy AZ~y=R literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/lore/age-allure.lua b/game/modules/tome/data/lore/age-allure.lua index e38b646b7c..caf075978e 100644 --- a/game/modules/tome/data/lore/age-allure.lua +++ b/game/modules/tome/data/lore/age-allure.lua @@ -116,6 +116,7 @@ newLore{ id = "halfling-research-note-4", category = "age of allure", name = "research log of halfling mage Hompalan", + bloodstains = 7, lore = [[ #{bold}#Hompalan's Log Entry 9#{normal}# #{italic}#Age of Allure 4549#{normal}# diff --git a/game/modules/tome/data/lore/maze.lua b/game/modules/tome/data/lore/maze.lua index 7cdf247f65..b97d01fb8d 100644 --- a/game/modules/tome/data/lore/maze.lua +++ b/game/modules/tome/data/lore/maze.lua @@ -84,6 +84,7 @@ newLore{ id = "maze-note-7", category = "maze", name = "diary (the maze)", + bloodstains = 2, lore = [[Dear diary, #{italic}#This text is unreadable as it is thoroughly caked in blood.#{normal}#]], diff --git a/game/modules/tome/data/lore/old-forest.lua b/game/modules/tome/data/lore/old-forest.lua index 0fd0b4852d..f360b35dee 100644 --- a/game/modules/tome/data/lore/old-forest.lua +++ b/game/modules/tome/data/lore/old-forest.lua @@ -75,6 +75,7 @@ newLore{ id = "old-forest-note-6", category = "old forest", name = "journal entry (old forest)", + bloodstains = 4, lore = [[#{italic}#From the notes of Darwood Oakton, explorer: #{bold}#CHAPTER SIX: HORR... diff --git a/game/modules/tome/data/lore/trollmire.lua b/game/modules/tome/data/lore/trollmire.lua index 910f22705d..07d1260f3c 100644 --- a/game/modules/tome/data/lore/trollmire.lua +++ b/game/modules/tome/data/lore/trollmire.lua @@ -58,6 +58,7 @@ newLore{ id = "trollmire-note-5", category = "trollmire", name = "tattered paper scrap (trollmire)", + bloodstains = 3, lore = [[You find a tattered page scrap. Perhaps this is part of a diary entry. "...writing this in a tree and he's at the bottom of it. Waiting. His club is the size of a tall dwarf. Don't think I'm going to make it."]], } diff --git a/game/modules/tome/dialogs/LorePopup.lua b/game/modules/tome/dialogs/LorePopup.lua new file mode 100644 index 0000000000..ae39ea07e7 --- /dev/null +++ b/game/modules/tome/dialogs/LorePopup.lua @@ -0,0 +1,72 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +require "engine.class" +local Dialog = require "engine.ui.Dialog" +local ListColumns = require "engine.ui.ListColumns" +local TextzoneList = require "engine.ui.TextzoneList" +local Separator = require "engine.ui.Separator" + +module(..., package.seeall, class.inherit(Dialog)) + +function _M:init(l, w, force_height) + local text = util.getval(l.lore).."\n" + local list = text:splitLines(w - 10, self.font) + + self.frame = { + shadow = {x = 10, y = 10, a = 0.5}, + ox1 = -16, ox2 = 16, + oy1 = -16, oy2 = 16, + b7 = "ui/parchment7.png", + b9 = "ui/parchment9.png", + b1 = "ui/parchment1.png", + b3 = "ui/parchment3.png", + b4 = "ui/parchment4.png", + b6 = "ui/parchment6.png", + b8 = "ui/parchment8.png", + b2 = "ui/parchment2.png", + b5 = "ui/parchment5.png", + } + if l.bloodstains then + local ovs = {} + for i = 1, l.bloodstains do + ovs[#ovs+1] = {image="ui/parchmentblood"..rng.range(1, 5)..".png", gen=function(self, dialog) + self.x = rng.range(30, dialog.w - 60) + self.y = rng.range(30, dialog.h - 60) + self.a = rng.float(0.5, 0.8) + end} + end + self.frame.overlays = ovs + end + + Dialog.init(self, "Lore found: #0080FF#"..l.name, 1, 1) + + local h = math.min(force_height and (force_height * game.h) or 999999999, self.font_h * #list) + self:loadUI{ + {left = 3, top = 3, ui=require("engine.ui.Textzone").new{ + width=w+10, height=h, scrollbar=(h < self.font_h * #list) and true or false, text=text, color={r=0x3a, g=0x35, b=0x33}, + } + } + } + if not no_leave then + self.key:addBind("EXIT", function() game:unregisterDialog(self) if fct then fct() end end) + end + self:setupUI(true, true) + game:registerDialog(self) +end diff --git a/game/modules/tome/dialogs/debug/ChangeZone.lua b/game/modules/tome/dialogs/debug/ChangeZone.lua index e19b23fa0a..0168539ab5 100644 --- a/game/modules/tome/dialogs/debug/ChangeZone.lua +++ b/game/modules/tome/dialogs/debug/ChangeZone.lua @@ -28,7 +28,7 @@ function _M:init() self:generateList() engine.ui.Dialog.init(self, "Debug/Cheat! It's BADDDD!", 1, 1) - local list = List.new{width=400, height=500, list=self.list, fct=function(item) self:use(item) end} + local list = List.new{width=400, height=500, scrollbar=true, list=self.list, fct=function(item) self:use(item) end} self:loadUI{ {left=0, top=0, ui=list}, diff --git a/src/core_lua.c b/src/core_lua.c index ebbf456345..8ad2ed6197 100644 --- a/src/core_lua.c +++ b/src/core_lua.c @@ -1018,6 +1018,24 @@ static int sdl_texture_toscreen_full(lua_State *L) return 0; } +static int gl_scale(lua_State *L) +{ + if (lua_isnumber(L, 1)) + { + glPushMatrix(); + glScalef(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3)); + } + else + glPopMatrix(); + return 0; +} + +static int gl_translate(lua_State *L) +{ + glTranslatef(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3)); + return 0; +} + static int sdl_texture_bind(lua_State *L) { GLuint *t = (GLuint*)auxiliar_checkclass(L, "gl{texture}", 1); @@ -1520,6 +1538,8 @@ static const struct luaL_reg displaylib[] = {"getModesList", sdl_get_modes_list}, {"setMouseCursor", sdl_set_mouse_cursor}, {"setGamma", sdl_set_gamma}, + {"glTranslate", gl_translate}, + {"glScale", gl_scale}, {NULL, NULL}, }; -- GitLab