Commit graph

396 commits

Author SHA1 Message Date
Alexander Akulich 6d9284adc1 Port some code to str_copy() template 2022-07-09 19:40:58 +03:00
Chairn a69dc599a9 Huge variable naming format
Fix pointer and pointer array variable naming

Huge renaming to match our rules

Used regex: (?!(return|delete)\b)\b\w+ (m_|ms_|g_|gs_|s_)[^a]\w+\[
            (?!(return|delete)\b)\b\w+ (?!(m_|ms_|g_|gs_|s_))[^a]\w+\[

Further format static variables

Format almost all pointer names accordingly

Used regex: (?!(return)\b)\b\w+
\*(?!(m_p|p|s_p|m_ap|s_ap|g_p|g_ap|ap|gs_ap|ms_ap|gs_p|ms_p))\w+\b[^:\(p]

clang-format

Fix CI fail

Fix misnamed non pointer as pointer and non array as array

Used regex: (?!(return|delete)\b)\b\w+ (m_|ms_|g_|gs_|s_)p\w+\b
            (?!return\b)\b\w+ (ms_|m_|g_|gs_|s_)a\w+\b[^\[]

clang-format

Revert to SCREAMING_SNAKE_CASE and reinstate dead code
2022-07-08 18:01:29 +02:00
Robert Müller ffff4435c4 Remove ui_scale:
- remove config variable `ui_scale`
- remove `CUI::Scale`
- remove `CUI::SetScale`
- remove `CUI::DoLabelScaled`
- remove `CUIRect::Scale`
- use `CUI::DoLabel` instead of `CUI::DoLabelScaled`
- remove usages of `CUI::Scale()` and `CUIRect::Scale()`, or use 1.0f instead
2022-06-12 10:40:19 +02:00
Chairn 01edaec628 Format vector variables names (fixes #5209) 2022-06-11 21:38:49 +02:00
Robert Müller 91d2ba1865 Organize game-client includes 2022-05-29 21:24:43 +02:00
Robert Müller b9c52f7e31 Use SetActiveItem(nullptr) instead of SetActiveItem(0) 2022-05-27 11:59:14 +02:00
Robert Müller 2b02bd449b Prevent lock of UI
Co-authored-by: oy <tom_adams@web.de>
2022-05-27 11:53:05 +02:00
Robert Müller de1de5e7bd Use emplace_back for CFriendItem 2022-05-27 00:14:07 +02:00
Robert Müller b24f318450 Use std::vector<CFriendItem> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller fc93ba0539 Remove unused DoButtonLogic pText argument 2022-05-14 00:26:15 +02:00
Robert Müller 60347fde1a Use MouseHovered instead of clipping manually 2022-05-13 21:38:01 +02:00
Dennis Felsing 843acf6a5a Use std::size instead of sizeof(a) / sizeof(a[0]) 2022-03-30 18:55:04 +02:00
bors[bot] 564a59d603
Merge #4845
4845: Enable -Wshadow=local r=Jupeyy a=def-

> Warn when a local variable shadows another local variable or parameter.

Found one actual bug in graphics_threaded.cpp

Should reduce confusion in the future when reading source code

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-03-20 16:45:22 +00:00
def 8134f9fa55 Enable -Wshadow=local
> Warn when a local variable shadows another local variable or parameter.

Found one actual bug in graphics_threaded.cpp

Should reduce confusion in the future when reading source code
2022-03-20 13:24:34 +01:00
Jupeyy daea2feca9 Switch to Font-Awesome 2022-03-19 19:14:30 +01:00
Jupeyy 343a5291e5 Replace browse icons with icon font 2022-03-19 18:35:43 +01:00
Jupeyy cce42d41de Auto select search string on hot key 2022-03-13 19:12:06 +01:00
Jupeyy 95fe457abb Auto font size 2022-03-11 17:34:48 +01:00
Dennis Felsing c7e1cf7d7a More space for players in server browser (fixes #4777) 2022-03-03 20:22:02 +01:00
Robert Müller 6d15f360c1 Delay double click handling one frame after item activation 2022-02-10 17:40:03 +01:00
ChillerDragon b770bc6988 Use ETextAlignment enum for UI
Replaces the magic numbers -1/0/1 for left/center/right

Based on the work done in upstream:

@cinaera added alignment enums
	04ee8b20a1

@TsFreddie renamed them
	67651e8122
2022-01-21 16:26:19 +01:00
heinrich5991 228125df4f Remove compatible version filter
It doesn't do anything right now, all servers advertise a compatible
version.

It might become a compatibility hazard in the future, e.g. DDNet servers
try to advertise a different version string to 0.6 than to 0.7 clients,
because the compatible version filter on 0.6 insists that it starts with
"0.6" and on 0.7 that it starts with "0.7", clearly incompatible.
2021-12-28 15:09:38 +01:00
def bc184b7198 Add margin for ping in server browser
as reported by Izanagi
2021-12-28 01:05:53 +01:00
def acf199835d Support GUI/Cmd key and use it as equivalent to ctrl in default shortcuts
like ctrl-f / cmd-f

On macOS all these system shortcuts are done with cmd while on Windows
ctrl is used. Support both now

Added support for cmd key as modifier for binds
2021-12-18 12:23:20 +01:00
Robert Müller 2fe5464938 remove delegate functions in CMenus, fix variable names 2021-12-03 20:26:26 +01:00
Robert Müller f334b52d94 use UIEx() consistently 2021-12-03 20:26:26 +01:00
Robert Müller 053981ee4c refactor UI scrollbars 2021-11-26 23:03:45 +01:00
def 7464785013 Remove ping filter (fixes #4365)
We had lots of cases of people having ping filter activated. Ping is now
too unreliable to actually filter by it. It can show an old super high
value and then you never see the location again.
2021-11-24 16:04:04 +01:00
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
def 97743b8e70 Also ctrl-r to refresh and in demo browser as well 2016-04-29 20:39:25 +02:00
Tim Schumacher 4a22e762ff added entities clear for other gametypes 2016-04-29 19:29:19 +02:00
def d3a411afa6 Key up/down only change selected server, not friend list 2016-04-27 20:26:33 +02:00
def dc162d02fc F5 to refresh server browser 2016-04-27 20:17:10 +02:00
Tim Schumacher 94f3da4a47 removed localize for search symbol 2016-02-12 21:31:58 +01:00
def 96f2a380f6 Get rid of warning 2015-09-05 04:52:18 +02:00
def 1ed044fe0d Fix up and down keys in server browser 2015-08-27 16:42:21 +02:00
east da17b795c5 progress on column listbox 2015-08-27 15:05:24 +02:00
Chairn f3a82b0c98 Fixed double clicking on friend when friend was on top server. 2015-08-14 19:25:45 +02:00
def d570683b5a TAB in console doesn't influence menu (fixes #239) 2015-07-24 01:28:19 +02:00
def 6e8ada1ac8 Fix whitespaces a bit 2015-07-09 02:12:35 +02:00
timgame 4e33c394b9 improved german language 2015-06-30 18:57:39 +02:00
def 063be1f12e Make TAB always work in serverbrowser 2015-06-28 15:43:34 +02:00
def f6c3586d02 Fix serverbrowser on Android 2015-06-22 02:49:23 +02:00
def 3cedbd5061 Revert "Add key binding for R to refresh serverbrowser"
This reverts commit db60bf6527.
2015-05-12 23:28:10 +02:00
def db60bf6527 Add key binding for R to refresh serverbrowser 2015-05-11 21:57:11 +02:00
def 710a786f88 Rename AutoUpdater to Updater because you have to press a button now 2015-04-18 21:17:27 +02:00
def a852e0da79 Fix spacing in browser menu search 2015-03-22 19:21:41 +01:00
def 4965da940d Fix shift+tab in server browser 2015-03-14 17:30:13 +01:00
def 8ae27f81b6 Improve autoupdater a bit
- Only ask for restart when we're ingame or unsaved changes in editor
- Otherwise restart directly
2015-03-14 16:10:46 +01:00
def ba4f961594 Some more autoupdater changes and a button to check for autoupdates 2015-03-14 10:45:11 +01:00
Learath Lea 6289d174ba Fix graphical glitch with progressbar. 2015-03-14 11:09:04 +02:00