Commit graph

118 commits

Author SHA1 Message Date
Zach H
186f4289e9
Address /W4 compiler warnings for Windows (#4910) 2023-10-15 20:31:13 -04:00
Basile Clement
55a2f75d16
Make cards rounded (#4765)
* Make cards rounded

Magic cards have rounded corners, and playing cards tend to have rounded
corners as well, but Cockatrice currently displays rectangular cards.

This can cause visual glitches when using image scans where the border
does not extend in the corner, and for this reason Cockatrice always
draws a (rectangular) border around the card to try and make it look a
bit better.

In this patch I take a different approach: rather than try to make
rounded pegs, er, cards, go into a square hole, the hole is now rounded.
More precisely, the AbstractCardItem now has a rounded rectangular shape
(with a corner of 5% of the width of the card, identical to that of
modern M:TG physical cards).

As a side effect, the card drawing gets a bit simplified by getting rid
of transformPainter() when drawing the card outline and using the
QPainter::drawPixmap overloads that takes a target QRectF instead.  This
means we no longer have to bother about card rotation when painting
since that's taken care of by the Graphics View framework (which
transformPainter() undoes).

* format

* Also give PileZone rounded corners

* Forgot untap status + bits of CardDragItem

* fix deckviewcard calculations

* Rounded CardInfoPicture
2023-03-07 01:41:08 +01:00
ebbit1q
45cf08111a
fix crash when a cardmenu becomes an orphan (#4682)
* fix crash when a cardmenu becomes an orphan

when a cardmenu is closed the cursor on that card reverts to the open
hand, this crashed the client when that card would be destroyed or moved
the act of reverting to the open hand now happens as an emitted signal,
this way it just doesn't exist anymore when the card is deleted.

* simplify fix
2022-10-17 16:38:44 -04:00
cajun
b5305aa5e4
Attach and Unattach apply to entire selection (#4651)
* (un)attach applies to entire selection

* additional code formatting, just because it's nicer

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-08-25 21:26:29 -04:00
Danny Piper
689f65b38a
Fix for poor performance with large decks (#4347)
* Fix for #4284

-> The menus have the update menu thing emitted when they get triggered.
| -> works surprising well https://youtu.be/KOOmhxvHA2c is a demo on a 10000ish card deck

* changed my comment to make sense

* fix to the issues that @ebbit1q found

what caued them idk

* Revert "fix to the issues that @ebbit1q found"

This reverts commit 20b1ad9f7a675fd3b0d1be7452f71160ce06de71.

* actual fix for the issues @ebbit1q found

* its dirty but works

* fix cards in zoneviews not having a menu

* deleted isempty check as it is updated after the check

* key binds should work now

-> menus updated on zone change/attach/retranslate UI if selected

* clangify

* remove updateCardMenu from carditem entirely

updateCardMenu is done by the player and having it in carditem led to it
often being run multiple times, I've opted to instead run it in the
player and remove the signal entirely

the new logic updates the cardMenu every time a card is set as the
activeCard in the game tab

additionally a cardmenu can change while selected if the selected card:
moves zone, is flipped, or is attached (it receives the unattach action)

this is done in the player instead now, checking if the card is the
activeCard

this however exposes a flaw in the selection management where if you
unselect a card the activeCard is set to nullptr, this was an existing
bug and causes the action on selected cards to suddenly disappear, even
if there are other cards selected!

* revert null test of aCardMenu

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2021-09-14 16:35:47 -04:00
ebbit1q
00ed5c370c
implement a maximum amount of cardmenus generated for views (#4262) 2021-03-13 14:44:57 -05:00
Zach H
6e00db4ef6
Fix racetime condition with token cloning (#4156)
* Fix #2820 by removing (this->setCursor) as this was null by the time we hit this component due to a racetime condition.

* check if card player pointer is valid before setting cursor

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2020-11-22 20:25:23 -05:00
olegshtch
44297dcd1c
Fix release tests (#4063) 2020-08-13 10:18:01 -04:00
ebbit1q
18a07274d4
clangify everything with the new header sorting (#3908) 2020-03-18 17:36:02 -04:00
ebbit1q
9411396b97 rework pt setting (#3584)
* rework pt setting

save pt as a string serverside
set the pt of cards that enter the battlefield to empty (was -1/0)
implement old behaviour as changePT clientside
display old pt to messagelog
add new keybind for new set behaviour (default ctrl+shift+p)
add flow pt actions and keybinds that increase while decreasing
put more braces everywhere
various refactors like adding consts and for loops
remove a single superfluous semicolon
does not change the way pt is displayed client side
does not fix 3455 fully

* fix drawing of pt

remove search for / in carditem's paint() (crash)
ptstring is now always orange unless it's a faceup card with a pt that
matches the cardinfo pt
set changept to remove the pt if the field is empty
set changept to keep the old value if one side is empty
return in changept for +0/+0
clean up some if statements

* return on change to +0/+0

* change log message for empty original pts

* typo

* remove changept

add parsept to unify reading pt strings
change setpt behavior to be an "upgraded" version of the old setpt
add arbitrary strings as anything that starts with /

* clangify

* remove debug lines

* add tip of the day

* add missing images

* clangify
2019-03-03 16:24:57 -05:00
Rob Blanckaert
ea8201af5c Judge mode (#3531)
* Judge mode

* Use seperate judge icon

* Fix clang init ordering complaint

* Create gavel.svg

* Add judge level

* Adjust judge permissions.

* - Tag events caused by judges
- Allow judges access to card right click menus.

* Allow judges to  change phase / turn.

* Remove gavel from pawn

* Make judge action text black.

* Create scales

* Rename scales to scales.svg

* Use scales

* remove gavel

* - Address PR feedback
- Fix sort order

* Zach

* add option to servatrice.ini
2019-02-21 14:00:00 -05:00
Rob Blanckaert
b065ada633 Fix unbalanced save() restore() in cards (#3571) 2019-02-08 14:24:55 +01:00
ctrlaltca
f70e87c5a0
Fix #3285 (#3299) 2018-06-19 22:55:01 +02:00
Bers
91b3c7343d fixed 2 warning-errors on archlinux(gcc 8.1): implicit fallthrough, ignored qualifiers (#3270) 2018-06-09 10:28:17 +02:00
Vafthrudnir
11ad677fe8 Sending card name to chat on shift+click (#3106) 2018-02-13 02:50:37 -05:00
ctrlaltca
b29bd9e070
Clang-format (#3028)
* 1/3 Add .clang-format file and travis compilation check

* 2/3 Run clang-format

* 3/3 Fix compilation problems due to include reordering

* 3bis/3 AfterControlStatement: false
2018-01-27 10:41:32 +01:00
Zach H
e8dbdc3c6d Add token creation for opponent board items (#2744) 2017-06-28 23:09:10 -04:00
Zach H
99e7458f9b make not set to untap normally more distinct (#2746) 2017-06-04 14:02:35 -04:00
backendr
62681f7f8d contect menu fix (#2719) 2017-05-18 17:03:21 -04:00
backendr
77e0cddbae counter context sensative (#2714) 2017-05-13 11:48:26 +02:00
Zach H
657e1ac9e6 fix c style casting (#2561) 2017-04-05 15:45:58 -04:00
Zach H
cf08d1d267 Revert "Condensed Card Counter Context Menu" (#2433) 2017-03-02 17:47:15 -05:00
poixen
2d216807c7 Condensed counter menu 2017-01-06 19:07:31 +01:00
Fabio Bas
1e3fb6c6e1 Rework "paths" settings loading and card database loading
* 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
2016-03-15 22:27:55 +01:00
Zach
d5adec53a2 Revert "Reimplemented PictureLoader as a singleton" 2015-09-23 03:17:33 -04:00
Fabio Bas
ac16602f08 Fix crash on null pointer dereference 2015-09-22 23:46:41 +02:00
Zach
2bd0133055 Merge pull request #1233 from Fizztastic/fix_340
Play cards only with double left click
2015-07-08 18:09:31 -04:00
Jeff
6470e1fd10 Remove unneeded if 2015-07-08 16:25:25 -04:00
Jeff
438aacb9c4 Play cards only with double left click
Fix #340
2015-07-08 00:55:35 -04:00
Zach H
cf09aeccfd local user sees orange too 2015-07-05 23:21:46 -04:00
Matt Lowe
ff1aec406b Changed pt to orange
After feedback, and also noticing myself, the blue requires a little
more focus than should be nessesarry. I have updated to be orange, which
feels more comfortable. I have polled the community and they also agree
orange > blue.
2015-04-25 23:06:41 +02:00
Matt Lowe
004a952cb4 Colored PT
I compare the card pt, to the card with the same name in the db. if the
card is found, we compare the pt, of the db item and the item in play.
If there is not a match then we change the color of the PT. This is
pretty much the same as mtgo does it.

I looked into having only the P, or the T colored, though this is not
posible, when you set a pen color you can not change it partway through
painting a string. That would require 3 strings painted, one for p, /
and t. Which is more effort than its worth. This does the job pretty
well.

I have also moved the pt slightly to the left so it lines up better. I
have some images to compate.
2015-04-22 15:02:47 +02:00
Matt Lowe
097090ac1c Updated static variable name
+ Updated DELTA variable to more suitable name:
ROTATION_DEGREES_PER_FRAME
2014-11-03 16:33:48 +01:00
Matt Lowe
2193d247d0 Improved card animation performance
+ Cards now animate smoother and faster
+ removed redundant computations performed each frame
2014-10-16 18:06:30 +02:00
Fabio Bas
a6f299b247 fix #203 2014-07-09 17:42:35 +02:00
Matt Kelly
1bc48a7849 Convert rest of source to 4-space indent 2014-02-11 11:14:19 -05:00
skoh-fley
69e6c9ac69 Fixed a cursor bugo
Click-holding on a card then immediately releasing now properly changes the
cursor from a closed hand back to an open hand
2013-04-16 18:12:48 -07:00
Max-Wilhelm Bruker
3edecf98c3 if cards in multiple zones are selected, don't create drag items for the ones you're not supposed to move 2012-04-22 11:19:37 +02:00
Max-Wilhelm Bruker
5ff1fd8ec6 added peeking at facedown cards, fixing issue #7 2012-03-24 18:52:08 +01:00
Max-Wilhelm Bruker
662df6d972 Merge branch 'devel' of git://github.com/mbruker/Cockatrice into devel 2012-03-24 17:50:29 +01:00
Max-Wilhelm Bruker
adbb607700 Revealing a library to a player now grants that player permission to drag cards out of that library onto his own table. This permission is revoked by shuffling the library. The zone view window tracks content changes of the zone for as long as the permission lasts so that card ID changes are kept track of. This hopefully fixes issues #5 and #12. 2012-03-24 17:48:25 +01:00
Max-Wilhelm Bruker
10d958c4ce Merge branch 'master' into devel 2012-03-23 12:18:16 +01:00
Max-Wilhelm Bruker
61b351aa9f fixed client crash that occurred when the game ended with a card tap/untap animation running 2012-03-11 11:26:07 +01:00
Max-Wilhelm Bruker
7cec442694 setDoesntUntap fixed, card menu moved to player to avoid unnecessary allocation of QActions 2012-02-20 17:26:46 +01:00
Max-Wilhelm Bruker
d5c628966f PB: everything compiles except for deck storage 2012-01-01 02:48:24 +01:00
Max-Wilhelm Bruker
c4eb7ba6cf PB: more client files compile 2011-12-30 22:29:57 +01:00
Max-Wilhelm Bruker
ca3a7e69a1 stop card tap/untap animation in CardItem::resetState() to avoid unfinished animation during zone change 2011-12-04 14:51:24 +01:00
Max-Wilhelm Bruker
7efee472ed face down dragging fixed, minor french translation fix 2011-11-17 21:43:32 +01:00
unknown
da467468d5 improved facedown moving 2011-09-15 14:19:29 +02:00
unknown
1047ab08e8 added facedown to ServerInfo_Card 2011-09-15 12:24:33 +02:00