* refactor gump pkt creation
* testclient returns buttonid 1 pressed when 'button' is contained in the
commands
* extended test
* cleanup destructor mess a bit
* store gumps as pair to decide if the executor needs to be revived
more refactoring
* disallow copy, if used creates nasty bugs
* helper method to convert imp to character
* gumpevent
* new non-blocking dialog function, sends event instead
* test closegump
* test if serialnumber gets correctly converted and invalid entries get
skipped
* removed unused BApplicPtr class
added BApplicObjBase to impptrIf convert function
* use impptrIf
* CloseGump accepts now also an array of characters
extended tests
* moved deleted copy constructor to the public part
* by default clang tidy will check .inc files, removed this filter
* the last tidy run with modernize-loop wasnt added to the PR check
* keep vector with chr and gumpid per uomod
to prevent growing dont add to the cache if same chr with same id
already exists.
* docs
* core-changes
* use uoexpansion enums for A9, B9 flags
added TOL to uoexpansion
currently unsure where this will end
simplified account initialisation, added errorcheck
* Expansion classes for server and account
fixed flags
* use of AccountExpansion,ServerExpansion
extended tests
splitted unittest file
added missing test for Min/MaxAttackRange
* more micro performance for world saving
use all 4 cores in CI builds
fix compiler flag warning on windows
* save test for weight_multiplier
* enable gothic,rustictiles when using HSA expansion
* removed ancient unused files
* addressed comments
renamed ServerExpansion to ServerFeatures
added method for expansion name
* got rid of client UOExpansionFlag which is the same as the accout
expansion
* updated core-changes and docs
* updated generated ssopt
* test for tooltips
changed method names
removed/clarified comments
* npc hitchance was never saved
added missing npc save tests
* hitchance bug exists also for items...
added missing test for movemode
* added ssopt AllowVisualRangeModification which allows clients to modiy
their LOS via pkt 0xC8
* added ssopt MinimumVisualRange and MaximumVisualRange to limit the range
a client can define.
added r/w script member client.visual_range
if set via script the updaterange can no longer be modified by the
client
* fixed typo
* missing include
* if via script the visual_range is set to 0 use the client given range
remove/add objects when the visual range changes
added test
fixed testclient 0xbf sub clienttype packet
* extra logic to send/remove objects only if they are now/no longer
visible due to range change
script can by pass the VisualRange limit
added docs
* core changes
* moved more members from Character to ClientGameData
reordered a few members to reduce padding
added memsize functions for std containers to simplify code
* few more comments
* POLLOG* macros use the new formatting
removed all old logging functions
* removed old fmt lib from everything except StreamWriter
removed unneeded functions
* fixed review comments
* removed pol_distance/inrange* functions
replaced lastxyz with Pos4d
* replaced WorldIterator::InVisualRange with InMaxVisualRange returning
all objects in maximum update range. Adapted each caller, they now have
to check in_visual_range
Multis should now be send to clients with its footprint in mind.
added testscript for boat moving in/out of range
* removed non pos InRange/InBox functions
gamestate.update_range doesnt need to be a Vector, renamed
* corrected send_action_to_inrange
* replaced clip methods with general numeric type clamp function
* added Range2d constructor with radius
* splitted update_range. chr has now a los_size (how far can it see) and
an object has a visible_size (0 for objects 1/2 footprint for multis)
* use in_range instead of pol_distance
* corrected order of checks
* fixed warnings
* fixed visual size of multis
testclient added wornitems pkt support
added tests for los
* corechanges
* busy flag for DynTaskPool needs to be atomic
client SocketMutex is no more static
replaced Client::Delete with a deconstructor
Client::disconnect needs to be atomic
Multiple threads want to know UOClientListener::login_clients size.
CI action which runs with Thread/AddressSanitizer
updated some github actions
* listener client size getter
corrected sanitizer build name
* ubuntu22
* Jobnames
* jobname fix, workaround for ci link error?
* use dos cmd for workaround
* fix also winnopch ci
* more unique job names
* converted multidef
added to the testsuite a big multi
ListMultisInBox now uses the update range, but since its the only spot
and the chances are low that someone really has such a big multi
corechanges are not really worth it I would say
* Fixed a few grid bugs, one endless loop and changed the range a chr can move while customhouse is active
In summary:
* Make functions in clientthread.cpp depend on ThreadedClient.
* Wrap session, packet logging and cryptengine
* Other small changes to make ThreadedClient private
* Move fpLog up to ThreadedClient
* Extract send_KR_encryption_response() from process_data() into Client
* Change signature of small helper functions to use a ThreadedClient instead:
valid_message_length(), handle_unknown_packet(), handle_undefined_packet(), handle_humongous_packet() and report_weird_packet().
* Change signature of process_data() to take a ThreadedClient
- ThreadedClient now takes a non-const reference to its client
- Extracted has_delayed_packets()/process_delayed_packets() from io-step into ThreadedClient. They will handle speedhack prevention's movementqueue. Movementqueue might be moved later into ThreadedClient.
- Extracted should_check_idle()/warn_idle() from io-step into Client.
- Added Client::handle_msg(). It will call the appropriate packet handler. Used by process_delayed_packets() and process_data().
- Removed an old MSVC warning suppression
* Extract code from threadclient_io_finalize as Client methods:
- on_close, called when the connection is over. Returns the wait time for logoff.
- test_logoff, called by on_close to determine how long chr must wait before logoff
- on_logoff, called when the logoff timer expires
Hoisted the networking members and methods of Client into a new base. Kept the same access levels so the remaining code doesn't have to change yet.
Co-authored-by: Eric Swanson <eric.the.unicorn@gmail.com>
Authors are not forced to use the clang-format setting, but should
atleast be inspired by the style.
The only thing which is now not allowed are tabs for ident/alignment!
changed client class from ref_counted to also hold like the uoexecutor a weakptr, use it in the ClientObjImp.
Renamed NPCRef to NpcRef like its been told since years in a TODO comment
fixed some warnings from VS2015