Commit graph

318 commits

Author SHA1 Message Date
Jupeyy fd68cc3a05 Add basic selection support for ui ex edit boxes 2021-10-04 19:58:25 +02:00
Jupeyy 1e07a00c3b Refactor CUIElements 2021-09-14 00:21:20 +02:00
Jupeyy c06edd9aeb Update server list silently 2021-09-13 16:50:40 +02:00
def 20f0078206 Make the country/type selection more intuitive
I watched a live stream where someone struggled with this, not knowing
that right click has different functionality from left click, and had to
manually click on each entry to remove them all except one.
2021-08-05 11:28:33 +02:00
Jupeyy 26c5332dc6 Remove components pointers 2021-07-12 12:14:02 +02:00
Jupeyy 8451775821 Make components member of CGameClient 2021-07-12 12:07:31 +02:00
def 2cb3c575f5 Merge master into pr_use_cpp 2021-07-04 16:09:20 +02:00
def c24060f244 Compare lower case strings respecting utf8 (fixes #3937) 2021-06-28 22:51:14 +02:00
Sefa Eyeoglu 801ebbd161
fix: switch servers after player confirms
When a player wants to switch servers in-game, but needs to confirm the
action because of cl_confirm_disconnect, the game used to not actually
connect to the new server.

This adds a way to still connect to that server, after the player
confirms.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2021-06-26 14:29:06 +02:00
Jupeyy a663799188 uint64 -> uint64_t, int64 -> int64_t 2021-06-24 17:19:17 +02:00
def 3716bece80 masterserver -> master server, serverlist -> server list 2021-05-27 09:03:36 +02:00
heinrich5991 9002c9f9a2 Allow pinging favorites directly, leaking your IP address
This is on by default for favorites added in the LAN tab, otherwise off.
2021-05-14 01:01:09 +02:00
heinrich5991 9eca91de74 Special case China as its own continent for ping estimation
It has an exceptionally bad connection to the outside due to the Great
Firewall of China:
https://en.wikipedia.org/w/index.php?title=Great_Firewall&oldid=1019589632
2021-05-14 01:01:08 +02:00
heinrich5991 436e202cbd Add client-side HTTP server info
Summary
=======

The idea of this is that clients will not have to ping each server for
server infos which takes long, leaks the client's IP address even to
servers the user does not join and is a DoS vector of the game servers
for attackers.

For the Internet, DDNet and KoG tab, the server list is entirely fetched
from the master server, filtering out servers that don't belong into the
list.

The favorites tab is also supposed to work that way, except for servers
that are marked as "also ping this server if it's not in the master
server list".

The LAN tab continues to broadcast the server info packet to find
servers in the LAN.

How does it work?
=================

The client ships with a list of master server list URLs. On first start,
the client checks which of these work and selects the fastest one.
Querying the server list is a HTTP GET request on that URL. The
response is a JSON document that contains server infos, server addresses
as URLs and an approximate location.

It can also contain a legacy server list which is a list of bare IP
addresses similar to the functionality the old master servers provided
via UDP. This allows us to backtrack on the larger update if it won't
work out.

Lost functionality
==================

(also known as user-visible changes)

Since the client doesn't ping each server in the list anymore, it has no
way of knowing its latency to the servers.

This is alleviated a bit by providing an approximate location for each
server (continent) so the client only has to know its own location for
approximating pings.
2021-05-14 01:00:39 +02:00
Jupeyy 75cdd8042c Fix out of list clip clickable/hoverable items 2021-04-01 16:48:38 +02:00
def cbf5aa6e36 Reset filter: Refresh browser in DDNet/KoG tabs
so that countries/types is also updated
2021-01-27 19:24:10 +01:00
Дядя Женя b8ba2b226a Sliders 2021-01-08 11:43:26 +01:00
def ff2d2f6fc4 Fix x of y servers
as reported by louis
2020-12-28 08:56:55 +01:00
def 57b1311b4b Fix localization of version/game type/ping in server details 2020-12-21 12:17:07 +01:00
Дядя Женя e234776de2 Merge branch 'master' into pr_animations_hud 2020-12-13 20:34:53 +03:00
def bb43660cd4 Fix scroll bar (fixes #3347) 2020-11-21 18:30:24 +01:00
def 81bb7e661c Improve list box behaviour, make it more consistent
Make keys work after searching in vote menu

Unify some duplicated code
2020-11-13 08:03:34 +01:00
Jupeyy 06c2e0af50 Fix server browser columns 2020-11-09 21:24:06 +01:00
Jupeyy 6fbb161846 Fix wrong alignment 2020-11-08 01:41:12 +01:00
def 254c970a8e Fix behaviour with cl_confirm_disconnect_time 0 2020-11-07 11:00:30 +01:00
def c478600935 Warn when connecting to new server with high gametime
as suggested by HalfNoob on Discord
2020-11-05 20:19:31 +01:00
def 165857a5a8 Fix variable names manually 2020-11-02 22:40:40 +01:00
def b1f0fd8969 Enable modernize-loop-convert clang-tidy check
and run clang-format afterwards

https://clang.llvm.org/extra/clang-tidy/checks/modernize-loop-convert.html
2020-11-02 22:40:24 +01:00
Дядя Женя 119625d1c3
Merge branch 'master' into pr_animations_hud 2020-10-31 01:48:52 +03:00
bors[bot] a03df3a4d1
Merge #3141
3141: More hours (fixes #3140) r=heinrich5991 a=def-

Will also look into #3140 and fix here.

Co-authored-by: def <dennis@felsin9.de>
2020-10-26 12:00:13 +00:00
Дядя Женя e40539c9fd Settings Tabs Animations 2020-10-26 04:10:55 +03:00
Jupeyy 74515d4b95 UI Elements 2020-10-19 23:52:29 +02:00
def 67178b0ea0 Use str_time/str_time_float everywhere 2020-10-18 23:47:09 +02:00
Jupeyy 5ebabe2ece Text alignment 2020-10-07 04:44:35 +02:00
def 6a0a1ce522 Don't make width depend on localized text
or we end up with totally broken input boxes
2020-10-06 17:55:24 +02:00
def 3a55ff86d6 Make types/countries fit ingame (fixes #2989) 2020-10-03 21:02:36 +02:00
def b6e4626053 Add clear button to server address field
as suggested by Cøke
2020-09-29 22:41:41 +02:00
def 3be8a592e5 Run clang-format
Purely automatic change. In case of conflict with this change, apply the
other change and rerun the formatting to restore it:

$ python scripts/fix_style.py
2020-09-26 21:50:15 +02:00
def f74cc43f4c Remove pure server filters, add space for Countries/Types
Not so relevant anymore
2020-09-26 21:33:25 +02:00
def a99b673042 Some browser improvements
- Increase size of Name and Clan in adding friend fields
- Smaller Search and Exclude fields
- No more duplicate Search - Search - Search text
- Smaller Connect and Refresh buttons
2020-09-20 11:47:04 +02:00
def d5648f5cde Fix localizing in browser
Thanks to gerdoe for noticing
2020-09-17 21:54:24 +02:00
Jupeyy 1fe09f496c Add some decent hover effects and colors 2020-09-17 15:47:13 +02:00
def 2cdc7d0faf Adapt 0.7 start menu
- Working Local Server button (needs fixing for Windows)
- Highlight buttons if server is running, new news is out and editor has
  unsaved changes
2020-09-10 20:13:01 +02:00
def cddfd6836b Add some more space for Countries & Types
Since DDNet has too many locations now
2020-09-10 17:59:40 +02:00
Andrii 701bbab0bd refresh on max ping filter changed 2020-09-03 04:08:34 +03:00
Andrii b1d5538a96
fix style
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-09-03 00:08:33 +03:00
Andrii a215e375db allow empty max ping filter 2020-09-02 19:26:26 +03:00
Andrii 620f67af15 Refresh browser on Indicate map finish click 2020-08-26 20:23:25 +03:00
trml 4abe8caab8 Sort servers by a combination of players and ping as default 2020-08-24 23:25:45 +02:00
def 99cf35d461 Don't bother Steam users with red update text 2020-08-19 13:41:11 +02:00
def 3ca4dadb92 Allow server list key bindings when nothing was selected 2020-08-17 10:14:33 +02:00
Fireball b1c17c3248 Backported fix for TextWidth() parameter mix-up
Fixes #2511 (Stack-buffer-overflows in some UIs).
The original fix was done by @oy for 0.7.4.
2020-07-15 20:48:29 +01:00
def 2d6e56fec8 Translation fixes
- Code didn't work with newlines, get rid of them
- Some stylistic improvements
2020-06-26 18:34:50 +02:00
Learath 979d58f830 Use colors in CTextRender 2019-04-27 01:34:20 +03:00
Learath 6c371a9a57 Even more refactoring 2019-04-27 01:11:15 +03:00
Learath 15058330fa Don't inherit from vector, more cleanup 2019-04-27 00:47:34 +03:00
Learath 93d14a1eca Inconvenience for windows 2019-04-26 22:36:49 +03:00
Learath 65a17599e1 Add ColorHSVA, phase out more vec3's 2019-04-26 15:06:32 +03:00
def 94f3d97ddf Remove unmaintained Android code (fixes #1575) 2019-04-10 19:40:50 +02:00
def 330a99686d Add localization for updating output 2019-04-06 15:18:35 +02:00
def 3248d94ace No checkmark in DDNet/KoG tab (as suggested by Alexander) 2019-03-29 23:08:11 +01:00
def bf576723a3 Add KoG tab in server browser
- As requested by qshar and KoG players
- Similar to DDNet tab
- Info fetched from servers-kog entry from https://info.ddnet.tw/info
- Also supports countries and types
- Doesn't inform whether map has been finished
- Generalized the code a bit but it's still ugly
- Depends on #1533, also shows KoG servers as official/verified
2019-03-24 23:15:40 +01:00
bors[bot] 2209113027 Merge #1505
1505: Add symbol for official servers in server browser (fixes #1501) r=heinrich5991 a=def-

- Also fix favorites checkbox when removing favorite
- Might need a nicer looking symbol

![screenshot-20190319@074729](https://user-images.githubusercontent.com/2335377/54585760-4b55d700-4a1b-11e9-962c-92c1b56659fd.png)

Co-authored-by: def <dennis@felsin9.de>
2019-03-19 07:48:07 +00:00
def 4f515bf67e Add symbol for official servers in server browser (fixes #1501)
- Also fix favorites checkbox when removing favorite
- Might need a nicer looking symbol
2019-03-19 07:46:50 +01:00
Dennis Felsing 7a23baa020
Merge pull request #1502 from fokkonaut/master
Remove AllowTimeScore from browser (fixes #1499)
2019-03-18 13:24:55 +01:00
fokkonaut 55150bb7d6 Remove AllowTimeScore from browser (fixes #1499) 2019-03-18 13:13:37 +01:00
bors[bot] 1d9eb965fa Merge #1485
1485: Browser's scoreboard now shows score based on cl_ddrace_scoreboard r=def- a=fokkonaut



Co-authored-by: fokkonaut <35420825+fokkonaut@users.noreply.github.com>
2019-03-12 22:47:38 +00:00
fokkonaut 8440b051f7
forgot one thing 2019-03-12 19:36:33 +01:00
fokkonaut 3f628de592
Update menus_browser.cpp 2019-03-12 19:33:47 +01:00
def bbec3b1f2f Minor style fixes 2019-03-12 19:29:18 +01:00
jupeyy 619a33a7d5 text kerning fix, add new text render flags for accurate positioning 2019-01-06 06:42:57 +01:00
Dennis Felsing 809afa265f Fix typo 2018-12-05 07:28:29 +01:00
Shengyu Zhang 464ef9e74b Fix crash when auto update is off
Since 2696ac134c, whether to include auto
update related code should only control by macro CONF_AUTOUPDATE.

This commit should fix #1374
2018-12-05 01:06:52 +08:00
def faf388b853 Fix #1350 2018-10-29 22:03:57 +01:00
Dennis Felsing a2e3496005
Merge pull request #1220 from heinrich5991/pr_ddnet_ui_skinprefix
Add some UI for the skin prefix stuff
2018-09-20 08:41:20 +02:00
heinrich5991 9ff8b6e2df Factor out clear button from four different places 2018-09-20 07:43:05 +02:00
Dennis Felsing e2eb4a66dc Add Filter for connecting players (fixes #1263) 2018-08-21 09:03:48 +02:00
yangfl 81a39c229b Fix typo 2018-07-10 17:29:02 +08:00
ZombieToad 7da716e3f0
fix server browser bug
ddnet client has the server browser while online
2018-06-17 03:26:23 +01:00
ZombieToad 13722d849d
fix server browser bug
it loaded favourite servers into ddnet serverlist if you used add_favorite or remove_favorite
2018-06-17 02:47:18 +01:00
Jupeyy c7114e734c more ui text positioning fixes 2018-04-04 02:40:30 +02:00
Jupeyy c1a962b870 add ui fixes to work with new text renderer 2018-03-13 21:59:07 +01:00
heinrich5991 94acac91a0 Overhauled job system
The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-23 15:47:38 +01:00
def c2c453bd45 Make sending name to info.ddnet.tw optional, show dialog at start and some minor fixes 2017-09-07 20:51:46 +02:00
def 89ed22e8d8 Introduce ddnet-info.json
- Single json file containing all information for the client
- Fetched from https://info.ddnet.tw/info?name=deen
- Replaces versionsrv, news, ddnet-maps.json and ddnet-ranks.json
- Servers are sorted by most popular ones for respective player
- Always stays < 100 ms response time, compared to occasional 50 s for
  old ddnet-ranks.json
2017-09-03 17:42:04 +02:00
def 040fc9ca32 Implement right click and middle click on country and type filters
Right click: exclusively activate one
Middle click: reset (reenable all)
2017-08-30 22:36:39 +02:00
def a1d2ecb6de Empty when no rank 2017-08-30 21:50:09 +02:00
def 16f3ddc5a7 Show if user has rank on map in browser (+filter)
UI implementation by timakro
2017-08-30 21:34:04 +02:00
def bcec0f1bb1 ctrl-f to search, ctrl-x to exclude, ctrl-r to reason 2017-07-24 18:05:19 +02:00
def 37a08e8ef0 Support pageup, pagedown, home, end buttons in menus 2017-07-04 22:07:02 +02:00
Learath 9d2fb7dfda Missed one check 2017-04-12 11:13:54 +02:00
heinrich5991 1d81d56850 Introduce new, vanilla-compatible server info protocol
This means that we have a reliable and fast way to query for extended info,
while also not wasting network bandwidth.

The protocol is designed to be extensible, there's four bytes space for
encoding more request types (currently zeroed), and there's one string in each
response packet and one string for each player available (currently the empty
string).

The protocol itself has no problems with more than 64 players, although the
current client implementation will drop the player info after the 64th player,
because it uses a static array for storage.

Also fixes #130, the player list is just sorted each time new player info
arrives.
2017-03-29 12:56:13 +02:00
Learath2 d3bf89d7d3 Handle double click on server browser correctly. Fixes #597 2017-03-22 23:14:09 +01:00
necropotame b8e4e5beea Fix style in several places 2017-03-22 19:45:14 +01:00
def aff85462aa Update messages a bit 2016-05-20 18:36:32 +02:00
Tim Schumacher aeadffa585 calculate type height in ddnet browser type filter 2016-05-15 10:19:15 +02:00
Dennis Felsing f016a0eb1f Merge pull request #436 from timakro/pr_other_gametype_entities_clear
added entities clear for other gametypes
2016-04-30 20:28:27 +02:00
def 4761608329 Input fixes from TW master for mouse wheel 2016-04-30 20:11:26 +02:00
def 644fec7e55 Resize window without restarting client 2016-04-30 17:59:58 +02:00
def 2e0ca0f4b4 Fix SDL2 compilation 2016-04-29 21:58:24 +02:00