This change accomplishes two goals. The first is it moves the checking
for if the servers set user limit is reached out of the socket interface
and into the protocol handler portion of the code (were it should live).
It also eleminates the need for a DB query at login to check the user
count. The user account is actually already maintained by the server
and a function already existed to get the user count total.
Added the functionality client side to log users out of servers if they
are idle for more than 1 hour without joining either a game or room.
Sending a message (room/game/private) or performing a game action.
* main.cpp: removed path checking and db loading
* card database: merge card loading methods into a single one
* settings cache: take care of returning safe paths for decks,
replays, etc..
* main window: if db loading fails (eg. first run), propose to run
oracle
NSIS: propose to run cockatrice instead of oracle
Rework card database loading
* Move carddatabase-related method out of deckeditor tab
* Load cards in another thread and render them progressively
* Optimize database reload after enabled sets change
Fix deck editor column width
* removed the noCard hack.
* getCard() no more creates cards instead of just returning existing
ones
* Fix the “edit tokens” dialog.
* PictureLoader: avoid trying to download twice the same card
* PictureLoader: correct return of card background
* AbstractCardItem: avoid recalculating card color at every paint
Use a different file to save custom tokens
Misc required improvements
* Use nullptr;
* Refactor CardInfoWidget to use CardInfoPicture and CardInfoText
instead of duplicating code;
* Added CardInfo::getColorChar()
* Fixed some potential crashes
* removed dead code related to CardInfoWidget
* Don't require a restart after adding a new custom sets file
* Bump CMake requirements to 3.1
That marker is only recognized by pb3-compatible compilers, meaning that
tools which are otherwise compatible with our files break on them.
Notably, this includes hprotoc (for haskell).
With this update a new chat history definition is added on a per
room bases which allows operators to specify the number of chat
messages to store and present to the user on join. Please see
the sample ini for room definitions.
When in none auth mode, registered users don't exist; hence the setting
makes the game impossible to join.
Normally the setting would be greyed out when the user is unregistered,
but commit 475c54bf introduced a new edge case where the stored setting
would apply to the field even if the user is unregistered, making the
setting possible to apply in no-reg mode. Regardless, any client could
have done this, not just the default cockatrice.
The server side fix should prevent all issues in the future.
Changed the default value for the client keep alive variable back to 1 (since that is what the setting is if the value is not found in the configuration ini file).
Stub for registration command handling in server
First draft of handling registration requests
WIP (will be rebased)
clean up bad imports (rebase this later)
Finish checkUserIsBanned method
Add username validity check
Check servatrice registration settings
WIP
Finish(?) server side of registration
Needs testing
Fix switch case compile failure
I have no idea why I have to do this
WIP for registration testing python script
Stub register script initial attempt
Rearrange register script
First try at sending reg
register.py sends commands correctly now
Add more debug to register.py
Pack bytes the right way - servatrice can parse py script sends now
register.py should be working now
Parse xml hack correctly
Log registration enabled settings on server start
Insert gender correctly on register
Show tcpserver error message on failed gameserver listen
Fail startup if db configured and can't be opened.
TIL qt5 comes without mysql by default in homebrew...
Previously if you were to reveal the top card, then look at the top x (x
> 1) cards, then move them to another zone, the top card would stop
being revealed.
The issue was that when moving the cards the first card was being
revealed, then being moved.
I have also fixed an issue too:
+ reveal top card
+ scry 4
+ grab all cards and move to the first column of available space at the
left most of the screen (column 0). Everything is fine.
+ now try with another column (> 0), you will see that the card order
has flipped.
This no longer happens.
This needs some testing before being merged. I will run the build for a
while, right now it feels good though.
Will need @ctrlaltca to confirm this wont mess anything up. I have
removed a option to se set from the cmake file. This option is not
needed.
Windows users, you will need to run cmake to create the sln again.
The issue was that I had set the ctor to set the p/t to 0/0 rather than
-1/-1. This meant that when you join a game in progress (spec or
reconnect) the server would send the card value to the client as 0/0,
instead of -1/-1. The client has been coded so that if the toughness is
<0 then dont show it. 0/0 is instead shown.
We still need to look into cards with no p/t being set to a 0/1 as
@tooomm mentioned in anther issue. As it stands, this is more important
than that.
Mullling through 2 hands will give a flood warning, a user thought this
should not happen. It is very similar to drawing cards, which is in the
white list.
+ Added the ability to see the account age of registered users. Changes
are both in server and client. The server will now send back the
registration date along with the user data. The client will then use
this to calculate the account age and display it in the user details
window.
Running cockatrice in valgrind i didn't found any bad memory leak
(good!), but only a few jumps depending on uninitialized variables.
Even if the possibility of crashes are remote, it's nice to sort them
out.
Some tabs to spaces, and maybe fixed to work with Qt 5.
Conflicts:
cockatrice/src/deckstats_interface.cpp
common/decklist.cpp
common/decklist.h
oracle/src/oracleimporter.cpp
Implemented the ability to set the server to only allow registered
users. Also updated client to reflect the log-in rejection as well as
put a check in place for the server to not start if db connection is not
available yet registration is required.
* Move all cmake-related files in a new “cmake” folder
* move nsis files in there, too, since they are templates parsed by cake
* retrieve git version once when cmake is run, and use it for both
creating version_string.h/cpp and for package naming
* Use automoc instead of a manual list of headers
* Remove Qt4 detection
* Created missing .cpp for .h files (for automoc detection)
* Remove pthread linking
* Forcing -lprotobuf is not needed for mingw; msvc only?