251 Commits

Author SHA1 Message Date
Kawe Mazidjatari
2887e79bcb CBroswer: fix 'Stop Server' button not appearing when server script error occurs while client is attempting to connect 2022-09-05 22:32:47 +02:00
Kawe Mazidjatari
28ddf2a380 CConsole: fix bug where history scrolling did not work even when input was empty
* Reset when buffer is empty.
* Show suggestions when only 1 character has been entered.
2022-09-05 01:33:40 +02:00
Kawe Mazidjatari
900cc4dd9a CConsole: remove 'ImGuiInputTextFlags_NoUndoRedo' flag
The buffer desync defect has been fixed as of Dear ImGui v1.88.
You can now undo/redo console input.
2022-09-02 02:24:04 +02:00
Kawe Mazidjatari
54fc85e1d3 CConsole: modify input chars using the callback
Light preparation for when the lib gets updated to 1.88 to enable undo/redo again.
2022-09-02 01:18:36 +02:00
Kawe Mazidjatari
13c91c72fa Add 'Reload Banlist' button 2022-09-01 01:20:27 +02:00
Kawe Mazidjatari
41fda3a8ac Clear message when modal is closed with the 'Close' or 'X' button
This does not happen when you connect, because then you can retrieve the name of the server you connected to the next time you open the modal.
2022-08-31 21:49:28 +02:00
Kawe Mazidjatari
66ea9484e9 Hidden server modal sanity check
* Check if the input field isn't empty.
2022-08-31 17:23:23 +02:00
Kawe Mazidjatari
0309d9cd6b Server browser UX improvements
* Use proper method of obtaining content regions for buttons.
* Set min and default size to (928 - 524), this improves the anti-aliasing effect even more.
* Significantly decrease the size of the private server modal.
* Removed extraneous min window size constraint set by 'ImGuiConfig::InitStyle()'.
2022-08-31 15:45:12 +02:00
Kawe Mazidjatari
eca922d3df Fix console autocomplete window not padding elements correctly when size is between the clamped values 2022-08-31 13:00:02 +02:00
Kawe Mazidjatari
a5f71dc4d8 Change default size for browser window
Default size is tested to show the least amount of anti-aliasing effects.
2022-08-31 02:16:40 +02:00
Kawe Mazidjatari
8712f7db81 Fix concurrency of g_svNetKey
* Fix concurrency of g_svNetKey.
* Improve logging.
* Overall code cleanup.
2022-08-30 01:22:53 +02:00
Kawe Mazidjatari
e54c2df621 Light cleanup 2022-08-29 14:00:54 +02:00
Kawe Mazidjatari
ab8fc757c8 Fix concurrent access to 'g_vAllPlaylists' and 'g_vAllMaps' 2022-08-29 11:55:58 +02:00
Kawe Mazidjatari
73ff0bd0c1 Licht cleanup
* Removed unnecessary header files.
* Removed unnecessary c-string cast.
* Use lock_guard for mutex.
2022-08-29 03:03:53 +02:00
Kawe Mazidjatari
e174cb2b1d Turn static var into member 2022-08-29 02:38:19 +02:00
Kawe Mazidjatari
0f488c685c Move simple task to global fixed frame
Avoids having to create threads for tiny little things.
2022-08-29 02:21:32 +02:00
Kawe Mazidjatari
50fceec016 Update error messages 2022-08-29 00:19:11 +02:00
Kawe Mazidjatari
f6d8a966a3 Don't reload level when reparsing weapon scripts 2022-08-28 17:42:58 +02:00
Kawe Mazidjatari
0b49ea1f29 Use 'g_pServer->IsActive()' over 'g_pHostState->m_bActiveGame' 2022-08-28 17:40:03 +02:00
Kawe Mazidjatari
a9aded7fd8 CConsole: Fixed problem where window claims focus over all other windows when summary is painted 2022-08-28 17:28:53 +02:00
Kawe Mazidjatari
532b4125d5 More thread safety improvements
* Run 'CHostState::Think()' in the main thread.
* Construct 'NetGameServer_t' objects in main thread before dispatching (TODO: browser).
* Dispatch the call to 'CBanSystem::AddConnectionRefuse' from 'SV_IsClientBanned' to the main thread if we aren't main.
* Return bool for CBanSystem::AddEntry and CBanSystem::DeleteEntry for future optimizations (next commit).
2022-08-27 23:45:58 +02:00
Kawe Mazidjatari
656b0be3ec Improve threading (work in progress)
* Only run '_DownloadPlaylists_f()' in the main thread, schedule for next frame if we aren't in the main thread. (this should fix crash cases related to disconnecting from the game).

* Locked read/write to CBrowser members (thread for obtaining the server list is detached, but once the 'slow' post operation in this thread is complete, mutex lock is acquired (locking the render thread if the browser is active) to set the string members of CBrowser, this operation is very fast as we only set the string and the color after the http post operation (this never caused a crash, but the behavior without any lock mechanism is technically undefined regardless).

* Obtain the host name dynamically from the ConVar 'pylon_matchmaking_hostname' (atomic operation). Initial approach was deleting the whole master server pointer just to construct a new httpclient object..
2022-08-27 18:57:56 +02:00
Kawe Mazidjatari
3414a2cd2c ImGui panel improvements
* Eliminated all forms of concurrency for CConsole logger.
* Used enum for determining which theme user loaded (DEFAULT, LEGACY, MODERN).
* Fixed issue where browser panel doesn't have the same frame padding as the console for the modern theme.
* Fixed issue where the history items count shows number higher than maximum until updated (updates vector before displaying, else this happens in g_pConsole->RunTask which is the operation that happens before we add new elements to the vector, thus showing the wrong count as this size is getting corrected the next frame after we painted, we don't update the summary each frame for performance reasons).
2022-08-22 01:10:18 +02:00
Kawe Mazidjatari
8476d22777 Fix concurrent access to several CConsole members
* Fix concurrent access to CConsole::m_Logger.
* Fix concurrent access to CConsole::m_vHistory.
* Additional DX system cleanup.
2022-08-21 19:35:06 +02:00
Kawe Mazidjatari
52e19e9ad6 Single-thread the game console
Run all task in the same thread used to run the browser/console frame and remove all mutexes.
2022-08-20 01:48:42 +02:00
Marvin D
eeec292238 Don't need to run CBuf_Execute. Game does it itself.
* How did I forget to remember that for almost a year..
* Connect and disconnect commands also fixed now.
2022-08-19 22:25:26 +02:00
Kawe Mazidjatari
6764b5e56e Implement frame tasks
Run all Cbuf_Execute calls in the main thread. This should fix every problem related to (but not only):
* Connecting to server while RUI dialogue is still open.
* Connecting to server while in an active game.
* Running 'weapon_reparse'.
2022-08-19 21:33:31 +02:00
Kawe Mazidjatari
851682ab89 Fix most compiler warnings 2022-08-14 18:35:01 +02:00
Kawe Mazidjatari
c18dbc2270 Update IBrowser.cpp 2022-08-14 15:45:08 +02:00
Kawe Mazidjatari
bf3b7bdace Server browser cleanup
* Moved server utility to dedicated class shared by browser panel and UI script VM.
* Additional code improvements and optimizations.
2022-08-14 15:43:49 +02:00
Kawe Mazidjatari
9f7d4f57d3 CCVarIteratorInternal cleanup
* Improve readability.
* Free allocated iterator memory.
* Enforce FCVAR_HIDDEN ConVar's in ImGui console (there are only 17 ConVar's marked 'hidden', and most of these are stryder/platform related stuff. This is usefull for if we ever wish to create a hidden cvar).
2022-08-14 02:51:15 +02:00
Kawe Mazidjatari
88b3336758 Many small code improvements and optimizations
* Use c++ methods as much as possible.
* Use enum types for accessing NavMesh objects from array.
* Use size_t for for loops when testing against size types.
* Don't compute strlen twice of more on the same string.
* Don't use unnecessary c string casts if there is a method with a std::string overload.
* Don't create string objects from string pointers if we could use them directly.
* Don't initialize RCON password twice on each change, and don't set if the new password equals the old.
2022-08-11 11:07:45 +02:00
Kawe Mazidjatari
329621c6ad Move all public headers into root of 'public' 2022-08-09 17:18:07 +02:00
Kawe Mazidjatari
e92b5d1300 General cleanup
Use c++ methods, remove unnecessary casts, unnecessary use of auto, etc..
2022-08-09 15:19:12 +02:00
Kawe Mazidjatari
f015667f88 Light ImGui cleanup
* CTextLogger: Explicit cast return value of size() to int when testing int value against size_t.
* CBrowser: Run think and request thread on client.dll, but for the request, only the refresh.
2022-08-09 12:13:31 +02:00
Kawe Mazidjatari
9d06a02614 General cleanup
* Use Cbuf functions for executing commands in ImGui panels.
* Use const qualifiers for all vftable indexes.
2022-08-09 02:35:00 +02:00
Kawe Mazidjatari
6cb44740f1 Use MAX_MAP_NAME constant for setting levelname in ServerBrowser 2022-08-08 00:33:07 +02:00
Kawe Mazidjatari
b496327380 Cleanup 2022-08-04 22:51:21 +02:00
Kawe Mazidjatari
c568995d56 Refresh server browser on startup
User gets to see all available servers directly without having to refresh first.
2022-08-04 22:49:30 +02:00
Kawe Mazidjatari
33b588b42e Private server improvements
* Don't clear the token string each time we get a response from the master server (it gets assigned each time anyways, so if the master server decides to change it the user will get the new one, this operation only happens once a second).
* Clear the token message when no longer hosting.
2022-08-04 22:44:23 +02:00
Kawe Mazidjatari
3f8476db88 Logging system light refactor
* Use responceid from server to determine in which context to log.
* Moved all script loggers from combined enums to minus instead (SERVER = -3, CLIENT = -2, UI = -1 SERVER_CODE = 0, etc), this makes it much easier to align stuff in combined systems such as the RUI logger or NetMsg().
* Color log networked RCON messages properly on the client.
* Added dedicated logger for all received RCON messages (net_console.log).
* Log commands submitted through in-game console (allows for easier debugging when going through log files).
2022-08-03 18:34:44 +02:00
Kawe Mazidjatari
f3555104a2 Improve server browser button alignment 2022-07-28 17:41:13 +02:00
Kawe Mazidjatari
e04c165d17 Return size_t for 'con_suggestion_limit' in 'CConsole::FindFromPartial' 2022-07-06 11:42:12 +02:00
Kawe Mazidjatari
cdcc87b54b Renamed master server related stuff 2022-07-01 10:29:27 +02:00
Kawe Mazidjatari
d417b60e69 Near finished master server improvements
* Added working players/maxplayers fields for master server.
* Fixed popstylevar assert in CBrowser (SetStyleVar and the corresponding PopStyleVar where not within the same scope).
2022-07-01 02:20:47 +02:00
Kawe Mazidjatari
a20d6a163e Work-in-progress pylon master server implementation
Still in development.
Implemented new fields provided by pylon-ms.
2022-06-28 00:47:01 +02:00
Kawe Mazidjatari
1d7b32b789 Preparation work for pylon master server implementation 2022-06-27 16:54:40 +02:00
Kawe Mazidjatari
838c183b10 Use highlighted tab bars in server browser 2022-06-27 15:01:39 +02:00
Kawe Mazidjatari
3323c3fadb Small ImGui theme adjustments 2022-06-27 14:48:03 +02:00
Kawe Mazidjatari
98c43fd6c1 Rename CConLog to ConLog_t 2022-06-26 17:40:02 +02:00