From 7308086139182e58d8553bd3321f2a130c81bafe Mon Sep 17 00:00:00 2001 From: wan-may Date: Tue, 19 Sep 2023 01:31:42 -0300 Subject: [PATCH] Finish moving server and ms back into engine:\n we want the compute shader setup eventually. Hook up options menu for client. --- src/client/client/assets/client-icon.png | Bin 0 -> 25019 bytes src/client/conf.lua | 2 +- src/client/config.lua | 59 +++++++++++++++----- src/client/connecting.lua | 8 +-- src/client/crepuscular.lua | 4 +- src/client/game.lua | 8 +-- src/client/main.lua | 26 +++++---- src/client/ui/browser.lua | 16 +++--- src/client/ui/fonts.lua | 6 +- src/client/ui/mainmenu.lua | 10 ++-- src/client/ui/menu.lua | 2 +- src/client/ui/options.lua | 20 +++---- src/metaserver/conf.lua | 51 +++++++++++++++++ src/metaserver/getip.lua | 3 + src/metaserver/{metaserver.lua => main.lua} | 6 +- src/server/conf.lua | 51 +++++++++++++++++ src/server/main.lua | 31 ++++++---- src/shared/getip.lua | 4 +- src/shared/print.lua | 6 +- src/shared/shared.lua | 10 +++- 20 files changed, 238 insertions(+), 85 deletions(-) create mode 100644 src/client/client/assets/client-icon.png create mode 100644 src/metaserver/conf.lua create mode 100644 src/metaserver/getip.lua rename src/metaserver/{metaserver.lua => main.lua} (96%) create mode 100644 src/server/conf.lua diff --git a/src/client/client/assets/client-icon.png b/src/client/client/assets/client-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0329af96abe4fd232268576059acee1250de77cc GIT binary patch literal 25019 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�$El`g@tSwGwnn0nE40x$%B03JnTt|ZMWeK?-AbN=!peNucyMr_ zCKCAs>df?;cqDCwPlP(n!nGNzehOTzT+`7F&^H?!--*X1e6hre75_F(yUcbPb|UKJ16uG_fu)VUD8;QL zp`;)BpLxIzz5ijN|7bsuU&1%%L0TR|_xOA?x_e~giXIx`Fq!QX9*jRNa z*bJbc+Zo|7XM?3Y27%@pWNhep$YqNmYBUPxpvGxR7C>Z_tbHGM>fttv)m+J1YHwVJ zQ~g;`jEvwwQzJJu#MDJ@Y{sw>pw#d4y==!f+e5Ko~6BC3qzj zxd;}AKs?ZOi#9J;%MNmmUIdj$FB#wLL)^p{?{4$y;jkC){*qE%naqxX{?n6_qvPW< z!C;+YO&bD@(cYd|Bzl26QSbtt#}XSw(9Ldj$C{sx6QHm(d%1RqmEn50D>ZMs1*fZe z6t~VI5!nUSIx@t_j(?#6k`dOsMP%#No$8a4l1?3$o!#Fci9E7UXbz&?d?Z&y^r68&&mZYYpS-sJ)i$lf4?gnCgV>F znO;8@jjn{Y%Dj_ual`g{(RLy(lm{!a3d5bf-l~Elrg`MoI{2StzAX0+*;bb6bCvh~ z8zuf;Uw^XbQ_?Y}MpYKiGxTX}bnYEgnU^~}jq*Li=2%1+9T;OvuY!4a5&Q4J1>*C^9hHr1%OZtd=}JB~mvA++2%%neb#qQ`7!rvKCum zyuIB>CZiaA+c<}vRM7}LhO4l{6};%an~{C2bu<9Z6YY^4f2Ar@0UZS7YHX zhITu!h4;bmR`%kvf|}MLOMi~xaTmA~tV&hxE(*@(79n;@afN7%&+E3VZYf3-d6b;k ziVE4ORC^{9LPqRSDX&UF%qJ5!iM04wGl;PW6Um#y1kXVfNaCarOXNkIdl730O4@Dm z5y*#(K*-xJN#!@b5-dH zSR*-@?nC-CiIRv`$y(w8QTb~Nod3hb7vol&G%r3*|*C5q52dBqrrVgiHBFO&cv-k*dWgHHW%=UK8+)2ddwX1`vaC4QY?A9 zfO9uKsD{(800>g4zc2DhIj5e%0)WRkwaGALr}9HECoUbQs}0YbmZCd*r~0Yp5#FGi3QPfK7Gqv_qfB8Egk0MJh1&{R zIg?Cwqq!T`jF5w>F*qE{7tUt0geMR8_nwMIK2n?l3m{7ovn;zNt_J4U!qcWon(eH> z6bII?mr{Y4rph`f+St`8ahF>zgEya%}dG2E7Az19-`Kxs*nrJ}wp zvVZ~jV#{=8P-61~{NbvU_jYy?zSA0~XV@hrQPuO=Y=3=2O(8F1u{f)>vbW@h_e4*) zu48pBkwEf*0o^t#v{5=)Dw*A}G{r7e6rV9{x55gLg z%RKr-0X9l51F%~K*=^F(@HS1gytkIHb{rKT#+6RbVO;vi3QB%`BHZ6jr8-fT+TisP zHtbQVj~-Pi&altT5)idX$ql8QKvSG++&QA&fLFLC)QsR09|I`w)yjO40IGn=#rYqR W|F&OPD~g{00000