From a564a966257cbba06c137b49907f2383df082db3 Mon Sep 17 00:00:00 2001 From: Sky Johnson Date: Thu, 10 Oct 2024 13:14:14 -0500 Subject: [PATCH] Nav menu, styling changes, start world map --- database/auth.db | Bin 45056 -> 45056 bytes database/live.db | Bin 188416 -> 188416 bytes public/assets/css/dragon.css | 188 ++++++++++++++++++++--- public/assets/css/forms.css | 7 +- public/assets/img/icons/earth.png | Bin 0 -> 5148 bytes public/assets/img/icons/home.png | Bin 0 -> 4628 bytes public/assets/img/icons/map.png | Bin 0 -> 4976 bytes public/assets/img/icons/settings.png | Bin 0 -> 5126 bytes public/assets/img/icons/shop.png | Bin 0 -> 4642 bytes public/assets/img/icons/world.png | Bin 0 -> 6794 bytes public/index.php | 14 +- src/components.php | 21 +-- src/controllers/char.php | 2 +- src/helpers.php | 8 + templates/components/char_bar.php | 52 ++++--- templates/components/char_select_box.php | 2 +- templates/components/debug_stopwatch.php | 1 + templates/components/left_nav.php | 22 ++- templates/components/world_map.php | 34 ++++ templates/layouts/basic.php | 24 ++- templates/pages/world/base.php | 3 + 21 files changed, 306 insertions(+), 72 deletions(-) create mode 100644 public/assets/img/icons/earth.png create mode 100644 public/assets/img/icons/home.png create mode 100644 public/assets/img/icons/map.png create mode 100644 public/assets/img/icons/settings.png create mode 100644 public/assets/img/icons/shop.png create mode 100644 public/assets/img/icons/world.png create mode 100644 templates/components/world_map.php create mode 100644 templates/pages/world/base.php diff --git a/database/auth.db b/database/auth.db index 26b28c44c1188afa6f619aa16bafaf6be5b1c067..b9667c8a2676e9884a334461e3afa31e6dafeb22 100644 GIT binary patch delta 16 YcmZp8z|`=7X~QL1M&`|zWpyV306nt?$^ZZW delta 16 YcmZp8z|`=7X~QL1MxM==WpyV306pmj(*OVf diff --git a/database/live.db b/database/live.db index dcc54c5420f099ebde312939efcf577de2321cc6..d7abbac70f21ed0c818214a9e0a8546e3cc5a007 100644 GIT binary patch delta 491 zcmb7=K}#D^6oucLF=1xxyz@ktOtNU9RIm<+is)!9f<TrqR9_xTJIJ0!eg;nXp49ACqz#) zR&999dX+2WE$^)GoIW*>CAh^LHl^Pij3bNh*ugh!VXIOcgvidkNVI0A@~`t&ZX%VD zQfusynxOw}xY(H)NuCk|Rf0eGDy6r$#sv=X2?45&@>;k9QC)72HK{t~;&8b)`H~pS zCD_Ia-b!c>`^%2mN9KYtm${YV924%l38j;Z+-ir)JN3pCnbjb9ELlFmZ~Vj$oFl|% z)UXR5d$N7WDna<=j(AL^l=JzpybzYD9hQ}J@{5!@1UI;p-yWcj3f^NKjy%$VBc;=@ zoj^%xaUP?Zrg6I-C_@h<+Tp%L9Z8f&@Jqt3a3*2@((q(L9z5^aS_!rvDeduClcrH_ IA4E#uJ)^Lu{r~^~ delta 493 zcmb7=-z!657{}jp#%bqW-tUw!KW1*o#Ujd;lI9O^Ew$ECgrl?)H;fB$L%np`jUSWb zLNjMKQ##uPB?_m6#QaK;BK`p0Ie&rYbNAHu`{{WmGp@;uYv-q323?ojz8W@5)S?{0 zHRcdT8+&3stc8h{O)_d0@!Zh1qg(a!h2c`Zp_Mo(t)mr0_2d_d);k&*){I-NUaC?N zBzVV^XdA@qOv%_4wf)3v<>W=U9o)@w@F5) z7>_Rx7NC<<^6YY{gL+gRS}Es&71MhnY$<|Iyx|#luyBYB_K>m>wngw%qFlihQ7E0Z z5;Imp(yfHt a { - display: block; - width: 100%; +aside#left nav { + & > *:not(:last-child) { + margin-bottom: 0.25rem; + } + + div.stack { + background-color: rgba(0, 0, 0, 0.2); + border-radius: 0.15rem; + + input[type="checkbox"] { + display: none; + + &:checked ~ div.list { + display: block; + } + + &:checked + label { + background-color: rgba(0, 0, 0, 0.5); + color: white; + } + } + + label { + display: flex; + align-items: center; padding: 0.5rem 1rem; border-radius: 0.15rem; text-decoration: none; color: black; transition: color, background-color 0.2s ease; + cursor: pointer; - &:hover, &.active { - color: white; + img { + height: 18px; + margin-right: 0.25rem; + } + + span.text { + display: block; + width: 100%; } &:hover { + color: white; background-color: rgba(0, 0, 0, 0.3); } - &.active { - background-color: #444c55; - color: #ffffff; - background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.1)); - border: 1px solid; - border-color: #3D444C #2F353B #2C3137; - box-shadow: 0px 1px 0px 0px rgba(255, 255, 255, 0.2) inset; + span.arrow { + position: relative; + top: 5px; } } + + div.list { + display: none; + + & > a { + display: block; + width: 100%; + padding: 0.5rem 1rem 0.5rem 1.35rem; + border-radius: 0.15rem; + text-decoration: none; + color: black; + transition: color, background-color 0.2s ease; + + &:not(:last-child)::before { + content: '├'; + display: inline-block; + margin-right: 0.25rem; + } + + &:last-child::before { + content: '└'; + display: inline-block; + position: relative; + top: 3px; + margin-right: 0.25rem; + } + + &:hover { + background-color: rgba(0, 0, 0, 0.3); + } + + &.active { + background-color: #444c55; + color: #ffffff; + background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.1)); + border: 1px solid; + border-color: #3D444C #2F353B #2C3137; + box-shadow: 0px 1px 0px 0px rgba(255, 255, 255, 0.2) inset; + } + } + } + } + + & > a { + display: block; + width: 100%; + padding: 0.5rem 1rem; + text-decoration: none; + color: black; + transition: color, background-color 0.2s ease; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 0.15rem; + + &:has(img) { + display: flex; + align-items: center; + + img { + height: 18px; + margin-right: 0.25rem; + } + } + + &:hover, &.active { + color: white; + } + + &:hover { + background-color: rgba(0, 0, 0, 0.3); + } + + &.active { + background-color: #444c55; + color: #ffffff; + background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.1)); + border: 1px solid; + border-color: #3D444C #2F353B #2C3137; + box-shadow: 0px 1px 0px 0px rgba(255, 255, 255, 0.2) inset; + } } } @@ -171,19 +288,26 @@ footer { #char-bar { display: flex; align-items: center; + justify-content: space-around; padding: 0 1rem; height: 34px; color: white; gap: 1rem; background-image: url('/assets/img/bar.jpg'); - & > div { + & > div.container { display: flex; align-items: center; + gap: 1rem; - .icon { - width: 18px; - margin-right: 0.5rem; + & > div { + display: flex; + align-items: center; + + .icon { + width: 18px; + margin-right: 0.5rem; + } } } } @@ -325,6 +449,9 @@ h1:has(.badge), h2:has(.badge), h3:has(.badge), h4:has(.badge), h5:has(.badge), transition: opacity .1s ease, color .1s ease, background .1s ease, box-shadow .1s ease; border-radius: .28571429rem; box-shadow: 0 0 0 1px rgba(34, 36, 38, .22) inset, 0 0 0 0 transparent; + display: flex; + align-items: center; + justify-content: space-between; &.success { background-color: #f0f9eb; @@ -355,6 +482,13 @@ h1:has(.badge), h2:has(.badge), h3:has(.badge), h4:has(.badge), h5:has(.badge), color: #2c2c2c; border-color: #b3b3b3; } + + a[alert-close] { + text-decoration: none; + cursor: pointer; + font-size: 2rem; + color: inherit; + } } a { @@ -367,3 +501,19 @@ a { text-decoration: underline; } } + +body::-webkit-scrollbar { + width: 0.5rem; +} + +body::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.1); +} + +body::-webkit-scrollbar-thumb { + background-color: #444c55; + background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.1)); + border: 1px solid; + border-color: #3D444C #2F353B #2C3137; + box-shadow: 0px 1px 0px 0px rgba(255, 255, 255, 0.2) inset; +} diff --git a/public/assets/css/forms.css b/public/assets/css/forms.css index 8e2754e..5b77591 100644 --- a/public/assets/css/forms.css +++ b/public/assets/css/forms.css @@ -52,9 +52,14 @@ } .character-select > .radio-block { + display: inline-block; background-color: rgba(0, 0, 0, 0.2); border-radius: 0.15rem; + &:not(:last-child) { + margin-bottom: 0.25rem; + } + & > input[type="radio"] { display: none; } @@ -81,7 +86,7 @@ & > span.selected { display: none; - margin-left: auto; + margin-left: 1rem; color: #a6e3a1; } } diff --git a/public/assets/img/icons/earth.png b/public/assets/img/icons/earth.png new file mode 100644 index 0000000000000000000000000000000000000000..ac09f832ad70d4ad761fcbc9807158361dc87bbe GIT binary patch literal 5148 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/icons/settings.png b/public/assets/img/icons/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..83ce6c1863302fb5c8bef5f7d109f1c09ea5638a GIT binary patch literal 5126 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/icons/shop.png b/public/assets/img/icons/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..865433ea5b2df04af43b2b41171cba9d29b69ba3 GIT binary patch literal 4642 zcmV+-65Z{IP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000L~NklA6O6~}+~eaxGg_hvk{ld)&Uabi3Eid2D9YCRGctbv>6)T`EdYJlG5PCrwerU)c~+k8o$0MnO<}Neh<6?EY@Cs zGTa3~#C`_&8bUcIv<$gi8YQivrxLvzsR%8D(gL7mGo<2#Jw;PcG&}L5K*Lw*GTXLw z`Fwz)hRD!4hm7ZdZv&gV0Yq*EcuwdRLMT|4PL#?bV-P~%`VK+}6h#0aQzl#4lPV~} zN&E<~J;1O4h!n_KHi}S?LP3Vj=YSvW0YGRE2_=;gGDOG_BP9rgK`4@dj=KSok04q5 z!XQK-rNomUWRil!Rv{EE1_Wf%O@s_Vh7bp78T%)Jxm^I1zvsm-%2I6HqhY(1RaodU&K*)|Z~8VwI>%^e4at>04vs(lX`hsdCTQoqZ>2CVJW z+@b6D0BBZ!aal8qpOm4?$<8LzfBX&d$sL^Ro=Nuo zjVlz@Def*L`pOBDf4qH#)NrC#rhZGG|1LAjAVU|gHhURf-d%)3h?h>EKK;vbxyK|a;hxcaYh=KmW0RWc%HAfghzA``%!Ro>s07s7xkkX*JJV)@s z+l-Bk5r!e2=W+GwRVF7VzbK{r)$UFRQ{{4*!NEa>hK3j&9p%=oTckhwDa=AU{V8ZG z_c7l9wa`w{g8KbMKJoFhRO5D>0F16aVhP!NJJ}QzkN2U3j~E;rB#I&|%VK_hp2^9{ zsXZwG?&`WusZ=7L&r_*X=;-L6qqmQT(!xl=DXTzR6XrvU4Ha^oT~to=vE*175r}L7 zKY~=o!q6ZS7ce?HD3{CB>vbxX3c9WX+}#5}N@-uXaDh0EDHIAAhCwcu<9MYDS%*6f zkZF^VPOzHr{yKPif%ak-*&3(;sD_CbKoo0T*@=|W-j4y6 zmzNnIAE#EUp=pWA(xI3ECxF=oL=r~wiTz(7!HeK#J+U3hLw5%5&CT-a^FKgO z8ECqJrl(NU#O&d7Z*vV(*Qhjleca& zpkzX4Isq}g3566Cbnrc!+{=GQ`NIO*&u8FvEx8@3iQmr7PL`IIuq=yewR$js(a}*R zCnxFY>7mhR0PxU*RVT@7!GMyr17gL6j0V2v&>S&PK3K#4u!($Ug&^=SS^yRo7b%rW zOixd9>eQ)&0bIX+ow2bos?{o{X(mT)3@Z*iXhIl6`(q$hJ=hE&4188UU*N&{quAZB z`D}r}bI@Ae%jGgNGc$~gjBxGRwS#M5e0-eCmoIbv{CU>bcMcCff@MGXJ(^8G0NmFg ze{7JS{`I>Y%fhM)cblN;&~3qqp+TaRX{yyK0|NtGx^#&%XU-f9K-_zaJn*|8zRScD zM|k7SD$l?03IJXVOLkHZ-DUzJZ$N*4Ka*NNRt`Rrhh+zD*^o7$)DA!S$~WmL7kLMm zc;X20orebl*iTdes*(&Zgq3FUtjh#bhnxY$EZnw}=c8?4XmH1cN6vroU2u@-Dx_4l z?}lNVoN`+gp4Ff?2ZoviP3th612Y8=g8vLa5keq@5ED<8PVZ-s)*!1V!_W@54P0${9Fm?H_dFsnY3IT(s6sP+K1hd&JaRR4EWdNeyhtnuI_m zY!tPGjddT^V|WEr0vMe`q2QThOH+#(#SK ztvg=;ngXzZ0#F2ww&q4FEr%sB-~sEvYHQR0N3?c=0i=PVJ`nwT Y0O-RR8s_s;*{<-J$cotS`D&P~0l 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 s^;ZAadB3wcKFbaEXFPsgum2Zd0NQWuG- 'pages/home', 'activeTab' => nav_tabs['home']]); + $GLOBALS['active_nav_tab'] = 'home'; + echo render('layouts/basic', ['view' => 'pages/home']); }); /* @@ -34,6 +35,15 @@ router_get($r, '/character/create-first', 'char_controller_create_first_get'); router_post($r, '/character/create', 'char_controller_create_post'); router_post($r, '/character/delete', 'char_controller_delete_post'); +/* + World +*/ +router_get($r, '/world', function () { + auth_only_and_must_have_character(); + $GLOBALS['active_nav_tab'] = 'world'; + echo page('world/base'); +}); + /* Router */ @@ -42,8 +52,10 @@ stopwatch_start('router'); $l = router_lookup($r, $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']); stopwatch_stop('router'); +stopwatch_start('handler'); if ($l['code'] !== 200) router_error($l['code']); $l['handler'](...$l['params'] ?? []); +stopwatch_stop('handler'); /* Cleanup diff --git a/src/components.php b/src/components.php index 41e64e8..8c3db88 100644 --- a/src/components.php +++ b/src/components.php @@ -1,10 +1,5 @@ 0, - 'chars' => 1, -]; - /** * Render the logout button's form. */ @@ -29,13 +24,7 @@ function c_char_bar() */ function c_left_nav() { - $tab = match ($GLOBALS['active_nav_tab'] ?? '') { - 'home' => 0, - 'chars' => 1, - default => 0 - }; - - return render('components/left_nav', ['ant' => $tab]); + return render('components/left_nav'); } /** @@ -57,9 +46,10 @@ function c_char_select_box($id, $char) /** * Render an alert with a given type and message. */ -function c_alert($t, $m) +function c_alert($type, $message) { - return "

$m
"; + $a = $type !== 'danger' ? ' auto-close="5000"' : ''; + return "
$message
×
"; } /** @@ -71,7 +61,8 @@ function c_form_errors($placement = '') if ($errors === false) return ''; $html = ''; foreach ($errors as $field) - foreach ($field as $message) $html .= "

$message

"; + if (!empty($field)) + foreach ($field as $message) $html .= !empty($message) ? "

$message

" : ''; return c_alert('danger', $html); } diff --git a/src/controllers/char.php b/src/controllers/char.php index b9e5e2e..a957cdf 100644 --- a/src/controllers/char.php +++ b/src/controllers/char.php @@ -48,7 +48,7 @@ function char_controller_list_post() change_user_character($char_id); - flash('alert_character_list_1', ['success', 'Switched to character ' . char('name') . '!']); + flash('alert_character_list_1', ['success', 'Switched to ' . char('name') . '!']); } // If the action is to delete a character, move to the confirmation page. diff --git a/src/helpers.php b/src/helpers.php index 06b3fa7..cda8959 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -223,3 +223,11 @@ function stopwatch_get($key) if (empty($GLOBALS['stopwatch'][$key])) return 0; return number_format($GLOBALS['stopwatch'][$key], 10); } + +/** + * Conditional Echo; if the condition is true, echo the value. If the condition is false, echo the $or value. + */ +function ce($condition, $value, $or = '') +{ + echo $condition ? $value : $or; +} diff --git a/templates/components/char_bar.php b/templates/components/char_bar.php index b826f44..2ec5199 100644 --- a/templates/components/char_bar.php +++ b/templates/components/char_bar.php @@ -1,34 +1,36 @@
-
- User - - 0): ?> - - -
- -
-
-
-
+
+
+ User + + 0): ?> + +
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
- Silver +
+
+
+
+
+
+ +
+ Silver +
diff --git a/templates/components/char_select_box.php b/templates/components/char_select_box.php index 63b24a6..cf59e4c 100644 --- a/templates/components/char_select_box.php +++ b/templates/components/char_select_box.php @@ -3,6 +3,6 @@
diff --git a/templates/components/debug_stopwatch.php b/templates/components/debug_stopwatch.php index 383d6a1..e87ff0f 100644 --- a/templates/components/debug_stopwatch.php +++ b/templates/components/debug_stopwatch.php @@ -3,4 +3,5 @@

Page execution took seconds.

Bootstrap: seconds

Router: seconds

+

Handler: seconds

diff --git a/templates/components/left_nav.php b/templates/components/left_nav.php index 0635d67..a7dbb11 100644 --- a/templates/components/left_nav.php +++ b/templates/components/left_nav.php @@ -1,4 +1,18 @@ - + diff --git a/templates/components/world_map.php b/templates/components/world_map.php new file mode 100644 index 0000000..fb0f6e6 --- /dev/null +++ b/templates/components/world_map.php @@ -0,0 +1,34 @@ + + + diff --git a/templates/layouts/basic.php b/templates/layouts/basic.php index fccc412..2fb0e4a 100644 --- a/templates/layouts/basic.php +++ b/templates/layouts/basic.php @@ -27,9 +27,7 @@
@@ -46,8 +44,8 @@

© Dragon Knight

q

-

qt

-

t

+

qt

+

t

v

@@ -61,5 +59,21 @@ import Tooltip from '/assets/scripts/tooltip.js'; Tooltip.init(); + + diff --git a/templates/pages/world/base.php b/templates/pages/world/base.php new file mode 100644 index 0000000..c3160b6 --- /dev/null +++ b/templates/pages/world/base.php @@ -0,0 +1,3 @@ +

World

+ +