Compare commits

..

4205 Commits

Author SHA1 Message Date
Brübach, Lukas
2c0c8b416a [Oracle] Qt version guard for regexp 2025-12-03 10:57:56 +01:00
Brübach, Lukas
65a3423009 [Oracle] Lint. 2025-12-03 10:53:08 +01:00
Brübach, Lukas
4ddbc8d018 [Oracle] Include QRegularExpression. 2025-12-03 10:51:11 +01:00
Brübach, Lukas
d4bf40694a [Oracle] Correct size and only do this if the user has not set a non-default url. 2025-12-03 10:44:40 +01:00
Brübach, Lukas
ec98bcf95d [Oracle] Add low-memory check (<=4GiB) and use mtgxml url instead. 2025-12-03 10:43:40 +01:00
BruebachL
a799cd097a [PrintingSelector] Sync modified and history state on bulk selection (#6379)
* [PrintingSelector] Emit deckModified when using bulk selection

* [PrintingSelector] Hook up history manager.

* [PrintingSelector] Remember card amount.

* Return early.

Took 18 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-12-03 08:23:34 +01:00
RickyRister
b4e3f2cba9 [Oracle] Support importing tokens and spoilers from local file (#6387) 2025-12-03 00:19:56 -05:00
RickyRister
658ae83157 [DeckList] Make DeckList not a QObject (#6383) 2025-12-03 00:18:46 -05:00
BruebachL
d29e72ce72 [CardInfo] Display set short name and collector number in info widget. (#6378)
* [CardInfo] Display set short name and collector number in info widget.

* Lint.

* Use reference.
2025-12-02 22:24:39 +01:00
BruebachL
30cc8ad6f9 [DeckEditor] Expand DeckDock TreeView when adding card through deck editor (#6388)
* [DeckEditor] Expand DeckDock TreeView when adding card through deck editor

* [DeckEditor] Expand first, then set selection.
2025-12-02 22:19:44 +01:00
BruebachL
f0ebd28148 [VDE] Consolidate statistical analysis into a separate object (#6392)
* [VDE] Consolidate statistical analysis into a separate object so multiple widgets can re-use calculations and calculation is only performed once on data change.

* [VDE] Lint.

* [VDE] Move struct up to not confuse compiler.

* [VDE] NoDiscards

* [VDE] Move variables

* [VDE] Lint.
2025-12-02 13:51:08 +01:00
BruebachL
364d0ca52b [EDHRec] Add background plate and "selection highlight" to card display widgets (#6390) 2025-12-01 09:37:48 +01:00
RickyRister
3ff2df2796 [DeckList] Move metadata into struct (#6380)
* [DeckList] Move metadata into struct

* wipe metadata if preserveMetadata is false
2025-11-30 13:09:09 +01:00
RickyRister
d57bec8ec6 [DeckList] Move decklist node classes into new folder (#6381)
* [DeckList] Move decklist node classes into new folder

* reformat

* fix
2025-11-30 13:05:49 +01:00
BruebachL
2b64e65f45 [CardInfoPictureEnlargedWidget] Fix DPR scaling. (#6382) 2025-11-30 13:03:18 +01:00
BruebachL
eab4d435f8 [Feature] TabArchidekt and Archidekt API integration (#6348)
* TabArchidekt and Archidekt API integration.


Took 37 seconds

Took 4 minutes

Took 40 seconds

Took 4 minutes

* Lint.

* Lont.

* Search bar, fancier display, resolve providerId

* Delegate click to base.

* Be explicit for pedantic compilers.

* Liiint.

* Leave them default I guess

* Leave them default I guess

* Small fixes.

* New utility display widgets.

* New style for deck listing.

* Lint.

* Lont.

* Scale things.

* Delegate paint to base.

* Use default Archidekt preview image for decks without featured.

* Consistent sizes.

* Increase font size, qt version guard.

* More version guards.

* Clean up filter layout, use mana symbols.

* Set content margins.

* Refresh on filter change.

* Lint.

* Better elision.

* Query actual new endpoints, new query parameters.

* Doxygen, reorder fields in constructor, readability.

* Update page size doc to min size.

* Update initial min deck size value.

* Add label to page selection.

* Okay, so, people upload a lot of 1 card decks frequently.

* Whoops.

* Add a selection combobox for sorting logic.

* Debounce and limit searches.

* Include.

* Lint.

* Don't imply that Archidekt supports multiple cards/commander names.

* Let's not lambda it and slot it instead.

* Overload.

* Add button to home tab.

Took 8 minutes

* Adjust to selection model change.

Took 5 minutes

* Cleanup auto-generated comments.

Took 8 minutes

* Remember card sizes.

Took 1 minute

* Initialize with correct size.

Took 3 minutes

* Use correct placeholders.

Took 2 minutes

* Style lint.

Took 16 minutes

* Parse double-faced cards correctly.

* Parse double-faced cards correctly.

* Allow TabArchidekt to use VDE group/sort/display buttons

* Lint.

* Indicate that things are clickable.

* Min treshold for nicer display.

* Lint.

* We have good labels at home.

* We do a little linting.

* Qt version guards.

* Qt5 is the devil.

* Update comments.

* Lint comments.

* More doxys.

* One more doxy.

* Lint.

* Update.

* Small fixes.

Took 7 minutes

Took 13 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-30 08:41:01 +01:00
BruebachL
de13c22552 [Fix-Warnings] Suppress C4100: unreferenced parameter for protobuf files (#6373)
* [Fix-Warnings] Suppress C4100: unreferenced parameter for protobuf files.

* [Fix-Warnings] Compiler specific options.

* [Fix-Warnings] Lint.
2025-11-29 18:58:39 +01:00
BruebachL
8ee7163014 [Printing Selector] Notify deck editor about history changes. (#6364)
Took 44 minutes

Took 2 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-29 18:56:06 +01:00
BruebachL
c5fde071e7 [Cleanup] Unused #includes (#6367)
* [Cleanup] Unused #includes

Took 44 minutes

* [Cleanup] More unused #includes

Took 55 minutes

* [Cleanup] Include QSet

Took 4 minutes

* [Cleanup] Include QDebug in deck_list.cpp

Took 3 minutes

* [Cleanup] Include protocol stuff in servatrice_database_interface.h

Took 3 minutes

* [Cleanup] Include QDialogButtonBox

Took 8 minutes

* [Cleanup] Include QUrl

Took 8 minutes

* [Cleanup] Include QTextOption in header.

Took 3 minutes

* [Cleanup] Include QMap in user_list_manager.h

Took 8 minutes

* [Cleanup] Adjust qjson

Took 8 minutes

* [Cleanup] include button box.

Took 3 minutes

* [Cleanup] Redo fwd declarations.

* [Cleanup] Redo last removed fwd declarations.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-29 18:53:11 +01:00
BruebachL
8abd04dab1 [Fix-Warnings] Remove more redundant empty declarations. (extra semicolons) (#6374) 2025-11-29 14:19:11 +01:00
RickyRister
858361e6d3 [DeckLoader] Refactor last load info into struct (#6366)
* [DeckLoader] Refactor last load info into struct

* Use constant

* [[nodiscard]]

* do discard, I guess.

---------

Co-authored-by: Brübach, Lukas <lukas.bruebach@student.fhws.de>
2025-11-28 23:41:11 +01:00
BruebachL
9ece4bfd9b [Fix-Warnings] Mark const getters as [[nodiscard]] (#6365)
Took 45 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-28 21:38:54 +01:00
BruebachL
a1a3b02d3a Add clearer labeling, more tooltips, condense layout. (#6361)
Took 17 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-28 00:42:46 +01:00
BruebachL
bc2ae6c486 Remember more card sizes. (#6360)
Took 22 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-27 23:41:44 +01:00
BruebachL
587a8bc524 [VDD] Add sorting (#6355)
* [VDD] Add sorting

Took 17 seconds

Took 3 minutes

* Adjust to contents.

Took 13 minutes

* Adjust sort order as well.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-27 23:31:40 +01:00
BruebachL
122926c6cd Deck Editor owns DeckHistoryManager (#6359)
Took 4 minutes
2025-11-27 23:11:43 +01:00
BruebachL
bac6beeb50 [VDE] Allow visual database display to toggle to table based display. (#6357) 2025-11-27 23:03:30 +01:00
BruebachL
c75a483ee6 [VDE] Add selection model (#6354)
Took 22 minutes

Took 1 minute


Took 17 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-27 22:16:12 +01:00
BruebachL
1c5bfdbabe Rebuild tree any time setDeckList is called. (#6353)
Took 2 hours 5 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-27 22:02:27 +01:00
BruebachL
553952132f [Game] Fix CardZoneLogic::clearContents() (#6356)
Took 6 minutes

Took 28 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-27 22:00:35 +01:00
BruebachL
1931eb11a9 [VDD] Change 'filter to most recent sets' default to false (#6358) 2025-11-27 21:56:49 +01:00
ebbit1q
65aef396fb do not allow other players to know which cards are in a player's hand (#6125) 2025-11-26 09:16:50 -05:00
ebbit1q
a21e45ed36 add phase to delete arrows in to protocol (#6159)
* protocol changes

* servatrice changes

* add new setting

* implement client side with static 4 phases

* reading the code explains the code

* add subphases to phase.cpp

* use new subphase definition
2025-11-26 09:16:10 -05:00
dependabot[bot]
adee67115c Bump actions/checkout from 5 to 6 (#6347) 2025-11-24 19:42:21 +01:00
tooomm
aea468bc7f Doxygen: Use newer version (#6345)
* readd properties

* use newer doxygen version + print config update diff

* readd config options

* fix config

* revert cache change

* GITHUB md

* graphviz version

* Add doxygen output to .gitignore
2025-11-23 19:06:00 +01:00
tooomm
621c6a8d73 Doxygen: Improve file structure and includes (#6344) 2025-11-22 19:38:39 +01:00
BruebachL
73591d5d0f [BannerCard] Try to restore by providerId (#6341)
* [BannerCard] Try to restore by providerId

Took 27 minutes

Took 41 seconds

* Style lint.

Took 2 minutes

* Don't look up by providerId if it's empty.

Took 8 minutes

* Add extra name guard to providerId clause.

Took 4 minutes

* Update cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* Update cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* Adjust to comments.

Took 11 minutes

* Extract to helper function.

Took 3 minutes

* Make helper static.

Took 5 minutes

* Remove const qualifier.

Took 3 minutes

* Finally.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-11-20 15:44:35 +01:00
BruebachL
846f16ddaa [DeckEditor] Deck List History Manager. (#6340)
* [DeckEditor] Deck List History Manager.

Took 23 minutes

Took 17 minutes

* Add icons.

Took 2 minutes


Took 3 seconds

* Small fixes.

Took 12 minutes

* Style lint.

Took 48 seconds

* tr() things.

Took 5 minutes

* Add tooltips for buttons.

Took 3 minutes

* Add explanation label to history.

Took 3 minutes

* Refactor to .cpp, delegate undo/redo to manager, don't return memento

Took 8 minutes

* Clear history when setting deck.

Took 6 minutes

* Move to value based stacks.

Took 52 seconds

* Default constructor.

Took 31 seconds

Took 3 minutes

Took 4 minutes

Took 2 minutes

* Have it listen to deck editor additions.

Took 18 minutes

* Don't connect buttons *and* actions.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-20 14:54:32 +01:00
RickyRister
c46f6d1178 Support flavorName in PrintingInfo and cache the altNames in CardInfo (#6335)
* Support flavorName property and cache altNames

* update oracleimporter

* update cards.xsd
2025-11-20 14:54:23 +01:00
BruebachL
ab5d6db8a2 [DeckList] Disable copy constructor (#6339)
* [DeckList] Disable copy constructor

Took 1 hour 44 minutes

Took 1 minute

# Commit time for manual adjustment:
# Took 28 seconds


Took 33 seconds

* Revert member to pointer.

Took 19 minutes

* Revert pulling up setters/getters now that getDeckList is no longer const.

Took 6 minutes

* Revert more.

Took 2 minutes

* One more fix.

Took 1 minute

* Update cockatrice/src/interface/deck_loader/deck_loader.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-11-20 13:20:09 +01:00
BruebachL
9957cb20e2 [Refactor] Move AbstractGraphicsItem and GraphicsItemType to game_graphics/board (#6342)
* [Refactor] Move AbstractGraphicsItem and GraphicsItemType to game_graphics/board folder.

Took 3 minutes

* Update CMakeLists.txt

Took 12 minutes

* Update CMakeLists.txt

Took 12 minutes

Took 2 minutes


Took 16 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-20 12:52:14 +01:00
BruebachL
8788a7aada [DeckLoader] Disable copy constructor (#6338)
Took 1 hour 19 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-19 12:16:39 +01:00
RickyRister
16392c28c5 [DeckLoader] Refactor to make some methods static (#6336)
* Make forEachCard const

* Make some DeckLoader methods static

* Update usages

* Update method param documentation in deck_loader.cpp

---------

Co-authored-by: BruebachL <44814898+BruebachL@users.noreply.github.com>
2025-11-17 03:49:45 -08:00
BruebachL
a8ee0d7648 [Doxygen] PrintingSelector Extra Pages (#6334)
* [Doxygen] PrintingSelector extra pages

Took 46 minutes

* Update Doxyfile

* Subgroup it.

Took 5 minutes

* Update editing_decks_printings.md

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-17 10:19:53 +01:00
tooomm
a405758222 doxygen config changes (#6330) 2025-11-16 23:51:27 +01:00
BruebachL
537e29d937 [Game Selector] Add button to join game as judge as well as convenience filters and doxygen (#6325)
* Add button to join game as judge as well as convenience filters.

Took 1 hour 11 minutes

* Change button to filter to games created by buddies, set default filter settings to be very permissive.

Took 45 minutes

* Remove debug.

Took 3 minutes

* Update game_selector.cpp

* Add spacers, rearrange.

Took 20 minutes


Took 20 seconds

* Add explanation tooltip.

Took 39 seconds

* Try layouting.

Took 14 minutes

* Set min size, set spacing for mac os

Took 3 minutes

* Try without the labels.

Took 3 minutes

* Don't use labels.

Took 5 minutes

* Fine-tune.

Took 2 minutes

* AsJudge

Took 4 minutes

* Clear up comment.

Took 37 seconds

* Remove shift hotkey.

Took 4 minutes

* Spectate as judge.

Took 8 minutes

* Add checkBox to create game as judge.

Took 7 minutes

* Fix crash.

Took 12 minutes

* Rename, fix returns.

Took 19 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-16 18:04:42 +01:00
RickyRister
9a3104c5ac [CardInfo] refactor some fields into a UiAttributes struct (#6322)
* refactor CardInfo

* refactor everything else
2025-11-16 17:56:57 +01:00
BruebachL
722344967f [Home Tab] Don't add connect button with stretch (#6333)
Took 4 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-16 17:35:27 +01:00
tooomm
73ce5e051c Add min os and arch inspection (#6259) 2025-11-16 15:09:26 +01:00
tooomm
b8bbe141a0 Update prebuild.js (#6266) 2025-11-16 03:18:32 -05:00
BruebachL
3285596a93 [Doxygen] VDE: Include new pictures. (#6323)
* Include new pictures.

Took 57 minutes

* Update old pictures.

Took 6 minutes

Took 3 minutes

* Update export documentation.

Took 4 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-16 01:39:43 +01:00
BruebachL
73763b5ee6 Mark more functions as [[nodiscard]] (#6320)
* Fix local variable double declaration.

Took 44 seconds

* Mark functions as [[nodiscard]]

Took 31 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-16 01:39:24 +01:00
BruebachL
27708d5964 Adjust to proxy model indices (#6324)
Took 12 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-16 01:37:07 +01:00
BruebachL
827f22ed37 [Doxygen] Card Picture Loader (#6315)
* [Doxygen] Card Picture Loader

Took 25 minutes

Took 16 minutes

# Commit time for manual adjustment:
# Took 12 seconds


Took 14 seconds

* Remove placeholder file description.

Took 1 minute

* ... but do group PictureLoader again

Took 28 seconds

* Link to methods directly.

Took 6 minutes

* Forward declaration.

Took 49 seconds

* Remove redundant .cpp function documentation.

Took 15 minutes

* More fixes.

Took 7 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-15 17:26:32 +01:00
BruebachL
ace4063371 Helper to query deckList for DecklistCardNodes. (#6242)
* Helper to query deckList for DecklistCardNodes.

Took 30 minutes

Took 6 minutes

Took 2 minutes

* Fix unused.

Took 3 minutes


Took 1 minute

* Convert string to string list.

Took 2 minutes

* Adjust to rebase.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-15 17:21:43 +01:00
BruebachL
f62e29f5d5 Give settings managers default groups instead of manually specifying them everywhere. (#6273)
* Give settings managers default groups instead of manually specifying them everywhere.

Took 1 hour 2 minutes


Took 41 seconds

Took 32 seconds

Took 5 minutes

* Fix dbconverter mock.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-15 15:58:25 +01:00
BruebachL
5df00de246 Avoid repeating type by using auto. (#6321)
Took 19 minutes


Took 22 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-15 14:06:53 +01:00
BruebachL
28dfd62163 [Doxygen] More extra-pages for cards/developer documentation and various fixes (#6316)
* Docu stash

Took 1 hour 53 minutes

Took 5 minutes


Took 16 seconds

Took 33 seconds

* Remove file headers.

Took 8 minutes

* Group to card set.

Took 8 seconds

* More extra pages.

Took 28 seconds

* Small fix for now.

Took 3 minutes

* Expand on picture loading.

Took 44 minutes

* Fix line break breaking link.

Took 2 minutes

* Images and user documentation.

Took 1 hour 49 minutes

* Update doc/doxygen-extra-pages/developer_documentation/primer_cards.md

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-11-15 13:07:15 +01:00
RickyRister
1c1599a9f4 [Oracle] Move page classes to separate file (#6314)
* Move pages to separate file

* Fix shadowing complaint
2025-11-15 11:27:53 +01:00
RickyRister
6dff230e10 [Oracle] Use NoOp setting providers (#6312) 2025-11-15 11:26:39 +01:00
BruebachL
0f60824749 Set DeckList parent when ownership changes (#6317)
* Initialize all deck list member variables in constructor.

Took 10 minutes

* Revert "Initialize all deck list member variables in constructor."

This reverts commit fba2455808.

* setParent

Took 1 hour 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-15 10:28:54 +01:00
RickyRister
84e0732fb1 Fix crash when changing shortcut in game (#6318) 2025-11-14 15:29:05 +01:00
RickyRister
ae123587d7 [Oracle] clean up OracleImporter (#6313)
* Move variable declaration closer to usage

* Leave comments

* inline some constants

* make code easier to understand

* Use structured binding to iterate over maps

* move things around

* static const regex

* remove redundant parens

* Can't use asKeyValueRange because of Qt versions
2025-11-12 16:58:09 +01:00
BruebachL
2efcb48b7e Fix mistyped pointer. (#6310)
Took 25 minutes

Took 25 seconds

Took 22 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-12 06:00:45 +01:00
BruebachL
3d9cae717d Adjust min size. (#6311)
Took 2 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-12 05:56:29 +01:00
BruebachL
cc73a8cc85 Every card is legal for now. (#6309)
Took 28 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 22:57:23 -05:00
ebbit1q
648f028a63 fix use of wrong parent when removing arrows for a player (#6308) 2025-11-12 04:48:26 +01:00
ebbit1q
840ee1379f fix crash on force starting, kicking players (#6307)
* fix crash on force starting, kicking players

* Update server_game.cpp

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-11-12 04:44:58 +01:00
SlightlyCircuitous
3c85ca9cbc Remove Fedora 41 Build and Add Fedora 43 Build (#6305)
* Create Dockerfile

* Update Release Template

* Delete .ci/Fedora41 directory

* remove F41, add F43
2025-11-11 20:18:20 -05:00
BruebachL
8e88749078 A DeckLoader is not a DeckList. (#6306)
* A DeckLoader is not a DeckList.

Took 2 hours 39 minutes

* Explicitly initialize base class in copy constructor?

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 20:16:44 -05:00
tooomm
4c431e98a6 Update Dockerfile (#6268)
* Update Dockerfile

Took 15 minutes

Took 43 seconds

Took 2 minutes

Took 13 seconds

Took 3 minutes

Took 4 minutes

Took 51 seconds

* Update docker-release.yml

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Multi stage build.

Took 11 minutes

* Add more arguments.

Took 8 minutes

* Remove apt cache.

Took 3 minutes

* Add workdir, undo tcp socket include.

Took 10 minutes

* Change runtime deps.

Took 8 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 15:31:12 +01:00
BruebachL
40cf3ced1a [Doxygen] Include libs in Doxyfile (#6302)
* Include libs in Doxyfile

Took 13 minutes

* Update Doxyfile

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2025-11-11 14:48:22 +01:00
ebbit1q
c9ccab8771 Servatrice build failure (#6243)
* attempts to fix the problem

* add test to show the problem

* fix workflow

* move logger to cockatrice

* more attempts

* undo stuff

* mark different libraries as gui

* fix SC2145

* rename servatrice only build
2025-11-11 14:34:39 +01:00
BruebachL
7d2700ca65 Clean up link targets. (#6304)
Took 38 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 14:04:14 +01:00
BruebachL
bfedc12fa8 Deck loader is a gui class. (#6294)
* Deck loader is a gui class.

Took 31 minutes

Took 3 minutes

* Deck Loader is responsible for printing.

Took 8 minutes


Took 2 seconds

* Style proxy.

Took 14 minutes

Took 6 minutes

Took 1 minute

* Don't need to include QBrush anymore.

Took 3 minutes

Took 7 seconds

* Includes for printer.

Took 5 minutes

* Nuke getDeckList()

Took 9 minutes

* Adjust to rebase.

Took 35 seconds

* Lint.

Took 3 minutes

* Braces for one line return statements.

Took 13 minutes

Took 50 seconds

* Enum for model columns.

Took 9 minutes

* One more single line if.

Took 1 minute

* Another style lint on a sunday night

Took 5 minutes

* Move enum to namespace.

Took 3 minutes

* Fix a critical blocker.

Took 5 minutes

* Update docs.

Took 3 minutes

* Doxygen and namespace enums.

Took 2 minutes

Took 15 seconds

* Adjust to namespace.

Took 4 minutes

Took 1 minute

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 11:57:41 +01:00
BruebachL
c16267e60f Doxygen exact_card.h (#6301)
Took 8 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 06:46:30 +01:00
BruebachL
0bd9b84931 Doxygen printing_info.h (#6300)
Took 4 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 06:46:18 +01:00
BruebachL
e9a9475ed7 [Doxygen] Card Database and related (#6303)
Took 29 minutes


Took 24 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-11 06:46:08 +01:00
BruebachL
f00d415dd7 [Doxygen] card_relation.h (#6298)
* Doxygen card_relation.h

Took 31 minutes

* Doxygen card_relation_type.h

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-10 09:12:14 +01:00
BruebachL
1e7ff3dbdf Doxygen card_set.h and card_set_list.h (#6299)
Took 13 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-10 09:11:58 +01:00
BruebachL
eb1c257484 Fix crash on rejoining game when reconnecting. (#6295)
* Fix crash on rejoining game when reconnecting.

Took 2 minutes


Took 13 minutes

* Proper lib include.

Took 1 minute

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-10 09:11:22 +01:00
RickyRister
4d652210dc Support shortcut for hand reveal actions (#6297)
* Support shortcut for hand reveal actions

* add docs
2025-11-09 12:34:09 +01:00
BruebachL
9f2ac78609 Split filters into libraries where applicable. (#6293)
* Split filters into libraries where applicable.

Took 23 minutes

Took 2 minutes

* Include filter string.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-09 12:19:27 +01:00
RickyRister
484e8e64a6 Create "Hand" shortcut group (#6296)
* Add new Hand ShortcutGroup

* Move hand shortcuts
2025-11-09 10:16:30 +01:00
Gauwal
e5d5dfa8d8 UI: highlight pinned printings in Printing Selector (#6252)
* UI: highlight pinned printings in Printing Selector

Fixes #5930.

Signed-off-by: Gauwal <gauwain2611@hotmail.com>

* Fix: adjust pin highlighting behavior + making it sharp/not blurry

* Using qceil

* Isolating pin badge init to it's own method + adding comments

* Cleaning up unnecessary #includes

---------

Signed-off-by: Gauwal <gauwain2611@hotmail.com>
2025-11-09 09:53:27 +01:00
ebbit1q
0ad31fea46 allow oracle to run in background with direct xml downloads (#6241)
Took 5 minutes
2025-11-09 09:52:46 +01:00
Chase Naples
ec2d8f231d Fix horizontal flip of VIP Moderator icon (#6292)
The VIP Moderator (Head Moderator) star icon was flipped horizontally
and did not match the orientation of other moderator icons. Fixed by
inverting the scaleX value in the transform matrix and adjusting the
translateX value to maintain the star's position.

Fixes #6290
2025-11-09 02:17:15 +01:00
BruebachL
aeec56f800 Sync up Visual Deck Editor group by combo box to Deck Editor Dock Widget combo box. (#6291)
Took 21 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-09 01:18:31 +01:00
BruebachL
7e6cad974f [Doxygen] abstract_tab_deck_editor (#6286)
* Doxygen abstract_tab_deck_editor

Took 15 minutes

Took 15 minutes


Took 4 seconds

* Lint.

Took 28 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 23:25:33 +01:00
RickyRister
757e9f3415 Add more sort options to hand sort (#6279)
* Add more sort options to hand sort


Took 14 minutes

* Move defaultOptions up a level

* Directly pass sort order as param

* fix include

* revert

* fallback expandSortOption
2025-11-08 23:03:44 +01:00
BruebachL
6bc2293292 Doxygen tab_deck_editor (#6287)
Took 21 seconds

Took 4 minutes

Took 4 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 22:30:19 +01:00
BruebachL
55aaca0e0d Introduce additional checks for playerMenu shortcut activation for judges (#6275)
* Introduce additional checks for playerMenu shortcut activation when they are accessed by a judge, only activating them if the player is a local player.

Took 2 hours 7 minutes


Took 17 minutes

* Undo example change.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 22:22:02 +01:00
BruebachL
a8a3fca8c9 Clean up inter-library dependencies with interfaces (#6280)
* Have CardDatabase::getPreferredPrintingInfo respect card provider ID overrides (pinned printings)

Took 13 minutes

Took 37 seconds

Took 10 seconds

Took 10 seconds

# Commit time for manual adjustment:
# Took 30 seconds

Took 15 seconds


Took 8 minutes

Took 21 seconds

* Move settings cache and settings card preference provider out of libcockatrice_settings and into cockatrice

Took 52 minutes

Took 9 minutes

Took 1 minute

* Temp cache.

Took 16 minutes

* Dependency Injection for SettingsCache

* Turn SettingsCache into a QSharedPointer.
* Implement interfaces for settings that need it

Took 2 hours 38 minutes

* Adjust oracle.

Took 5 minutes

* Move abstract/noop interfaces to libcockatrice_interfaces so they can be linked against independently.

Took 52 minutes

* Clean up some links.

Took 3 minutes

* Cleanup two includes.

Took 3 minutes

* More fixes.

Took 7 minutes

* More includes that slipped past.

Took 3 minutes

* Stop mocking and start injecting for tests.

Took 15 minutes

* I don't know why remote_client was including main.

Took 4 minutes

* Include.

Took 3 minutes

* Lint.

Took 2 minutes

* Don't use Qt pointers.

Took 1 hour 7 minutes

* Make parser use CardSettingsInterface

Took 13 minutes

* Also adjust constructor lol.

Took 8 minutes

* Lint.

Took 32 minutes

* Revert "Lint."

This reverts commit ecb596c39e.


Took 3 minutes

* Test.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 22:19:40 +01:00
BruebachL
fb30515f72 Doxygen tab_deck_editor_visual (#6288)
Took 15 seconds

Took 3 minutes

Took 3 minutes


Took 45 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 22:14:17 +01:00
BruebachL
9a39af6da0 Doxygen tab_deck_editor_visual_tab_widget (#6289)
Took 29 seconds


Took 3 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 21:23:10 +01:00
ebbit1q
6d75ce4b1c don't close dm tabs when disconnecting (#6285) 2025-11-08 20:06:54 +01:00
BruebachL
dbd1d30ca8 Forward opponent deck view signals to deck view container as well instead of just the player deck view signals. (#6283)
Took 25 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-08 13:25:40 +01:00
Zach H
8f80996515 Strip dashes in Yahoo addresses (#6284) 2025-11-07 13:35:44 -05:00
ebbit1q
d206a70b8a update format.sh (#6240)
* update format.sh

add shellcheck to format.sh
add statement macros to .clang-format
add no clang format to format.sh
add changed file list to format.sh diff
rename --cf-version to --print-version in format.sh
lint files

* enable --shell on ci runs

* remove useless semicolons

removes the semicolons after empty function definitions
these semicolons are optional, they don't do anything
this will have functions be consistently formatted
if we want to keep the option to have these on the same line like they
were before we should use the option AllowShortFunctionsOnASingleLine: None

* fix script

* update echo line in lint_cpp.sh which doesn't lint cpp only at all
2025-11-07 15:00:39 +01:00
Bruno Alexandre Rosa
bbec4d2c7e ci: unify vcpkg jobs (take 2) (#6263)
* ci: unify vcpkg jobs

* use build matrix variables: package_suffix

simplifying some convoluted logic, one variable at a time.  work in progress.

* use build matrix variables: artifact_name

* use build matrix variables: qt stuff

* display cmake flags in builds

* add type to windows builds

* use build matrix variables: cmake stuff

* use build matrix variables: USE_CCACHE

* formatting

* more formatting

* spaces

* address review comments
2025-11-06 23:20:47 +01:00
BruebachL
f24c36d6b1 Core qt module for libs (#6278)
* Move logger and key signals from libcockatrice_utility to Cockatrice.

Took 9 minutes

* Only link Qt::Core instead of COCKATRICE_QT_MODULES to libraries, if possible.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-05 18:51:08 +01:00
BruebachL
adff828415 Move models to lib (#6274)
* Move models to own library.

Took 35 minutes


Took 22 minutes

* Adjust CMakeLists

Took 20 seconds

* Reformat CMakeLists.

Took 2 minutes

* Revert "Reformat CMakeLists."

This reverts commit db5982ad1c.


Took 55 seconds

* Lint an include

Took 17 minutes

Took 9 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-11-05 18:33:40 +01:00
ebbit1q
d914667238 fix qt 6.10 debug build (#6271)
* fix qt 6.10 build

* fix games model parameter order and correct parameter names

* add missing include for qt5
2025-11-05 12:10:36 +01:00
RickyRister
1c209b3320 Fix names in qtlogging.ini (#6265) 2025-11-03 18:55:32 +01:00
tooomm
aa61032cdf Delete servatrice/scripts/mk_pypb.sh (#6267)
See https://github.com/Cockatrice/Cockatrice/pull/6212#issuecomment-3447840864
2025-11-03 18:32:35 +01:00
dependabot[bot]
3ae4a7d8a7 Bump actions/setup-node from 5 to 6 (#6250)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-02 17:11:23 +01:00
dependabot[bot]
9fdecf21f2 Bump actions/upload-artifact from 4 to 5 (#6260)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 19:23:46 +01:00
transifex-integration[bot]
e4d256790f Updates for project Cockatrice and language en@pirate (#6256)
* Translate oracle_en@source.ts in en@pirate [Manual Sync]

7% of minimum 4% translated source file: 'oracle_en@source.ts'
on 'en@pirate'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate cockatrice_en@source.ts in en@pirate [Manual Sync]

8% of minimum 4% translated source file: 'cockatrice_en@source.ts'
on 'en@pirate'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-26 13:46:46 +01:00
transifex-integration[bot]
d9f4faf4ec Translate cockatrice_en@source.ts in tr [Manual Sync] (#6258)
4% of minimum 4% translated source file: 'cockatrice_en@source.ts'
on 'tr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-26 13:46:02 +01:00
transifex-integration[bot]
609a364971 Translate cockatrice_en@source.ts in nb [Manual Sync] (#6257)
7% of minimum 4% translated source file: 'cockatrice_en@source.ts'
on 'nb'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-26 13:44:26 +01:00
github-actions[bot]
2152ddd99b Update translation files (#6255)
Co-authored-by: github-actions <github-actions@github.com>
2025-10-26 13:23:02 +01:00
github-actions[bot]
8caaf8515e Update translation source strings (#6254)
Co-authored-by: github-actions <github-actions@github.com>
2025-10-26 13:11:56 +01:00
github-actions[bot]
ac822fa084 Update translation files (#6244)
Co-authored-by: github-actions <github-actions@github.com>
2025-10-25 14:43:59 +02:00
transifex-integration[bot]
a265b865f6 Translate oracle/oracle_en@source.ts in nl (#6246)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'nl'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-25 14:38:10 +02:00
transifex-integration[bot]
8efc4f4817 Translate cockatrice_en@source.ts in en_US (#6245)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-25 14:35:29 +02:00
Bruno Alexandre Rosa
817a3f979e build: target macos 13 for x86 binaries (#6221)
* build: target older macos

* cleanup

* Align xcode versions

* Simplify --x86-macos

* use cmake flag in compile.sh i.s.o. env var in yml

* more cleanups

* adress initial reviews

* generate triplet file in compile.sh

* fix triplet name

* pass matrix.target as version

* small refactor

* another minor refactor

* ci: fix ccache cleaning

* add more comments

* try passing triplets config as cmake variables

* Revert "try passing triplets config as cmake variables"

This reverts commit 77e83e8590.

* move logic inside runner == macos if

* move logic to env var

* simplify script

* format script

"I just thinks it looks better like this"

* make script work for arm as well, might be useful

* use hyphen

* use DVCPKG_HOST_TRIPLET instead of DVCPKG_TARGET_TRIPLET

* use DVCPKG_HOST_TRIPLET AND DVCPKG_TARGET_TRIPLET

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2025-10-22 01:00:25 +02:00
RickyRister
8ebfc40de5 Consolidate closeReplay action into leaveGame (#6239) 2025-10-09 18:59:53 -07:00
RickyRister
c42e953199 Fix unattach shortcut not working at all in remote games (#6238) 2025-10-09 18:59:10 -07:00
RickyRister
636aa72141 Remove redundant prefix from libcockatrice_card folders (#6237)
Took 28 minutes
2025-10-09 23:09:20 +02:00
github-actions[bot]
14e6e6eff4 Update translation source strings (#6203)
Co-authored-by: github-actions <github-actions@github.com>
2025-10-09 23:05:12 +02:00
BruebachL
474c1d0d89 [Move refactor] Move dialogs to interface/widgets/ (#6234)
* Move dialogs/ underneath interface/widgets since QDialog inherits from QWidget.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-09 15:25:18 +02:00
BruebachL
b8983f27ab [Move refactor] Move tabs to interface/widgets (#6235)
* Move tabs to interface/widgets.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-09 14:51:47 +02:00
BruebachL
d9c65d4ae0 [Move refactor] Reparent orphan classes (#6236)
* Move orphaned classes to their correct parent folders.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-09 14:15:19 +02:00
BruebachL
1ef07309d6 Turn Card, Deck_List, Protocol, RNG, Network (Client, Server), Settings and Utility into libraries and remove cockatrice_common. (#6212)
---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2025-10-09 07:36:12 +02:00
ebbit1q
be1403c920 add hdiutil repeat script (#6231) 2025-10-08 10:10:44 +02:00
transifex-integration[bot]
03e32f0a7c Translate cockatrice/cockatrice_en@source.ts in it (#6228)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-10-08 02:18:33 +02:00
tooomm
f4361d1b43 CI: More workflow paths updates (#6227)
* update trigger paths

* change to include paths trigger pattern

* refine selection

* more paths

* fix

* revert push trigger and add hint
2025-10-08 02:17:02 +02:00
ebbit1q
e1259e67d3 update vcpkg (#6230)
* update vcpkg

* trigger build workflow on vcpkg changes
2025-10-08 01:40:52 +02:00
BruebachL
ca1b9bf75f [PrintingSelector] Sync PrintingSelector availability to OverrideAllCardArtWithPersonalPreference setting. (#6218)
* [PrintingSelector] Clearly warn users about disabling the providerId change, hide and disable the printingSelector, clear the networkCache.

Took 56 minutes

Took 4 seconds

Took 9 minutes

* Defer rollback so the rollback isn't swallowed logically.

Took 7 minutes

* Immediately enable select printing action.

Took 7 minutes

* Remove restart label.

Took 8 seconds

* Clear PixmapCache as well as NetworkCache.

Took 4 minutes

* Lint.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-07 20:59:16 +02:00
ebbit1q
3cff55b0bb add abstract player in expectance of draft players (#6210)
* add abstract player in expectance of draft players
2025-10-07 15:09:30 +02:00
tooomm
c25b153185 CI: Update trigger paths for desktop workflows (#6223)
* update trigger paths

* change to include paths trigger pattern

* refine selection
2025-10-05 16:51:06 +02:00
RickyRister
9c58e6f90f Don't use vcpkg on local macOS (#6225)
* Don't use vcpkg on local macOS

* fix typo
2025-10-05 13:31:46 +02:00
BruebachL
cff16346ef [TabGame] Fix dangling PlayerMenus in gameMenu (#6215)
* Player manager is responsible for deleting players.

Took 21 minutes

* Clean up dangling QAction* wrappers for PlayerMenus in TabGame::processPlayerLeave(Player* leavingPlayer)

Took 37 seconds

* Lint.

Took 11 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-04 01:08:04 +02:00
BruebachL
30e6b52783 [Game] Populate playerLists for menus in their aboutToShow … (#6214)
* Populate playerLists for menus in their aboutToShow so they are always current and do not rely on playerMenu manually tracking them. Also add playerActions for previous playerListActions.

Took 1 hour 35 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-03 15:21:22 +02:00
BruebachL
015570c833 For the automatic card database update process, disconnect signals, terminate and wait for it to finish on window_main destruction. (#6216)
Took 1 minute

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-03 15:03:37 +02:00
BruebachL
7c31197b78 Correctly add filterWidget as a dock widget for VDE, make printingSelector visible in the default layout for DE. (#6217)
Took 18 minutes


Took 24 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-03 14:56:19 +02:00
ebbit1q
a69bfb8cb8 add scroll bar to properties in cardinfotextwidget (#6201)
* add scroll bar to properties in cardinfotextwidget

* remove resizeevent trigger
2025-10-02 22:55:18 -04:00
BruebachL
c5b361e94d [Documentation] Doxygen regroup files and reorder group structure (#6208)
* Regroup a whole bunch of files.

Took 1 hour 38 minutes

* Reorder the structure.

Took 15 minutes

* Link some more things.

Took 18 minutes

* More links.

Took 14 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-02 16:28:08 +02:00
BruebachL
201750c89f Do not log joins on gameStateChanged (resume events) (#6207)
Took 13 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-01 15:13:56 +02:00
BruebachL
89a8d0f6b8 [Refactor] Untangle card_info.cpp and split into individual files. (#6202)
* Untangle the card_info.cpp mess and split into individual files.

Took 53 minutes

* Auto-lint was disabled and my pre-commit hook didn't fire. Oh well.

Took 3 minutes

* Fix oracle.

Took 35 seconds

* Lint!

Took 20 seconds

* Fix tests.

Took 3 minutes

* CMakeLists.txt: The reason why I have to disable auto-lint.

Took 2 minutes

* dbconverter.

Took 3 minutes

* Oracle again.

Took 3 minutes

* dbconverter again.

Took 3 minutes

* dbconverter again again.

Took 2 minutes

* More fixes.

Took 4 minutes

Took 21 seconds

* Everything needs everything.

Took 3 minutes

* Everything means everything.

Took 4 minutes

* All the tests.

Took 4 minutes

* I hate everything about this.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-01 11:49:39 +02:00
BruebachL
835e4af3e4 [Documentation] Add a doxy group for the PictureLoader. (#6204)
* Add a doxy group for the PictureLoader.

Took 26 minutes

* Linting is a fun activity for children and adults of all ages and sizes.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-01 11:45:56 +02:00
BruebachL
c33106eab4 [UI] Remove @ from playerName since only the auto complete list cares about it. (#6205)
Took 5 minutes

Took 37 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-10-01 11:31:16 +02:00
BruebachL
bea8c3dbec Group game scene correctly and replace to-do. (#6199)
Took 35 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-30 22:36:33 +02:00
dependabot[bot]
b51d5d007b Bump peaceiris/actions-gh-pages from 3 to 4 (#6197)
Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peaceiris/actions-gh-pages
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 12:14:01 +02:00
BruebachL
f8c4f774cf [Documentation] Sort *every* file into a doxygen group. (#6198)
* Sort *every* file into a doxygen group.

Took 7 hours 9 minutes

Took 18 seconds

Took 2 minutes

* Lint some ingroup definitions.

Took 10 minutes


Took 2 seconds

* Just include the groups in the Doxyfile in this commit.

Took 3 minutes

* Update some group comments so they link!

Took 14 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-30 12:13:32 +02:00
BruebachL
22c6756ce0 [Doxygen] Layout adjustments (#6196)
* Layout adjustments.

Took 1 hour 54 minutes

Took 2 minutes


Took 6 minutes

* Remove the empty building page.

Took 7 minutes

* Change to @page

Took 11 minutes

* Change to @page again

Took 52 seconds

* Change to @page again again

Took 2 minutes

* Fence the page declaration in CONTRIBUTING.md

Took 8 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-30 11:45:49 +02:00
ebbit1q
e318815025 nullcheck concede action (#6193) 2025-09-28 23:03:13 -04:00
BruebachL
0833f94502 [Doxygen] Add javascript to toggle call/caller graph visibility. (#6195)
Took 49 minutes

Took 26 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-28 21:22:37 +02:00
tooomm
ddbf5e1457 CI: Doxygen Docs workflow adjustments (#6194)
* Manual trigger, branch name fix, rename yml

* Update documentation-build.yml

* Run on changes to file but only deploy on tags

* Update documentation-build.yml
2025-09-28 19:58:32 +02:00
ebbit1q
2a032f3116 remove building docker images on code changes in prs (#6192) 2025-09-28 18:44:35 +02:00
BruebachL
5381562a5e [TabGame/GameEventHandler] Re-emit spectator addition signals in eventGameStateChanged (#6187)
* [TabGame/GameEventHandler] Re-emit spectator addition signals in eventGameStateChanged.

Took 36 minutes

* Check spectators as a whole.

Took 2 minutes

* Lint.

Took 42 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-28 12:39:40 +02:00
BruebachL
f2ce5e9693 [DeckEditor] Properly check if deck is blank. (#6188)
* [DeckEditor] Properly check if deck is blank.

Took 20 minutes

* Rename.

Took 17 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-28 11:56:45 +02:00
BruebachL
ed50fd98cd Add workflow to generate doxygen on tag push (#6189)
* Add workflow to generate doxygen on tag push.

Took 17 minutes

* Publish correct dir.

Took 3 minutes

* Don't include common/libs.

Took 20 minutes

* Update workflow

Took 1 hour 25 minutes

* Style Doxygen output.

Took 55 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-28 00:18:09 +02:00
BruebachL
14991e1f9e [GameScene] Refactor and doxygen (#6180)
* Clean up game scene code.

Took 18 minutes

* Doxygen.

Took 18 minutes

Took 5 seconds

Took 10 minutes

* Move some methods.

Took 6 minutes

* Restore the original warning, I guess.

Took 3 minutes

* Accidentally some methods.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-27 00:31:30 +02:00
Bruno Alexandre Rosa
5fa06746f1 build: use vcpkg for most dependencies on macos (#6170)
* build: use vcpkg for most dependencies on macos

* factor out common params

* refactor: factor out common parameters in macOS matrix

* use env vars instead of matrix

* add comment about jianmingyong/ccache-action

* Remove unused 'qt_tools' param

* Use system python

* Let ccache caches be handled by ccache-action

* Add comment about why we use install-qt-action

* set unique ccache key

* nit

* fix cache prefix

* pass gh-token

* Revert "pass gh-token"

This reverts commit cadfa253c6.

* Reapply "pass gh-token"

This reverts commit bd15e96e18.

* do not cache qt on macos
2025-09-27 00:29:13 +02:00
BruebachL
d31b044529 [Card DB] Split out database loading and querying from main class (#6175)
* Simplify add card.

Took 25 minutes

Took 8 minutes

# Commit time for manual adjustment:
# Took 16 minutes

Took 7 seconds

* Refactor out db loading from card db.

Took 39 minutes

Took 9 minutes

Took 2 minutes


Took 17 seconds

* Refactor out db queries from card db.

Took 42 minutes

* Lint.

Took 3 minutes

* I guess.

Took 7 minutes

* Tests.

Took 15 minutes

* I don't understand this.

Took 9 minutes

* fix linker errors

* Rename to querier and promote to QObject

Took 39 minutes

* Lint.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2025-09-27 00:27:15 +02:00
BruebachL
754dd904d2 [TabRoom] Re-layout game creation dialog. (#6182)
* [TabRoom] Re-layout game creation dialog.

Took 18 minutes

* Don't squish because then they overlap. Use new layout instead.

Took 8 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-27 00:23:26 +02:00
BruebachL
1503394662 [Game/DB] Have landscape cards enter tapped and not untap normally when played to table. (#6183)
Took 16 minutes


Took 12 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-27 00:22:01 +02:00
BruebachL
436d69b710 Reconnect remote player deck selection signals to game event handler. (#6181)
Took 14 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-27 00:20:55 +02:00
BruebachL
891e7bf6e4 [TabGame/PlayerManager] Handle concession properly. (#6178)
* Handle concession properly.

Took 57 minutes

Took 38 seconds

Took 18 seconds

Took 21 seconds

* Set text and enable/disable on game start/stop. (Does not fix the translation issue but at least disables the button.)

Took 51 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-26 19:58:48 +02:00
BruebachL
fad1280185 [Game] Fix game timer starting twice, not stopping and not resetting correctly. (#6177)
* Fix timer starting twice, not stopping and not resetting correctly.

Took 39 minutes

* Don't stop/start, just start.

Took 29 minutes

* Fix build.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-26 19:28:07 +02:00
RickyRister
6187c7268f [Game] Fix double concede in log (#6179) 2025-09-26 19:12:20 +02:00
BruebachL
762ea47b8e [Card DB] Various little fixes and cleanups (#6174)
* Simplify add card.

Took 25 minutes


Took 6 minutes

* Simplify guessCard.

Took 2 minutes

* Simplify loadCardDatabases.

Took 3 minutes

Took 6 seconds

* Clean up mutexes instead of manually locking/unlocking.

Took 5 minutes

* Fix null/empty check.

Took 3 minutes

* Move some stuff around inside the file.

Took 4 minutes

* Move some more things.

Took 2 minutes

* Clean up refreshCachedReverseRelatedCards.

Took 2 minutes

Took 6 seconds

* Clean up getCardFromSameSet.

Took 2 minutes

* Lint.

Took 5 minutes

* Fix compiler warning.

Took 4 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-25 19:36:46 +02:00
BruebachL
23612ba6ec [Card DB Models] Move refactor (#6172)
* Refactor CardDatabaseDisplayModel, TokenDisplayModel and TokenEditModel out of CardDatabaseModel. Move every model into an appropriate folder.

Took 54 minutes

* No folder for database models.

Took 6 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-25 16:35:29 +02:00
BruebachL
217646f031 Fix a bounds check to load the last page of cards in VDD as well. (#6169)
Took 18 minutes

Took 17 seconds

Took 14 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-23 17:05:30 +02:00
Bruno Alexandre Rosa
91667d9ecd build: update vcpkg (#6168) 2025-09-23 15:40:05 +02:00
RickyRister
3501ee9a9d Sort pb cmake and add comments to proto files (#6163)
* sort cmake

* copy over comments

* clean up comments
2025-09-22 01:57:42 +02:00
ebbit1q
f0c3860032 squash #6156 (#6161)
* move common server files

* update includes with move

* create participant, move code

* fix linker errors

* fix regressions

* mark function as override to make clang happy

* split out spectator to new file

* forgot to add to cmakelists

* autocompleter picking wrong casing for var name

* clean up forwards declarations in player

* fix includes in game
2025-09-20 14:37:12 +02:00
ebbit1q
17dcaf9afa squash #6158 (#6160)
* move message_log_widget to game

* move files

* update headers

* fix cmakelists

* oracle fixes

* split implementation out to cpp

* fix recursive import

* fix main file

* format
2025-09-20 14:35:52 +02:00
transifex-integration[bot]
f484c98152 Translate cockatrice/cockatrice_en@source.ts in de (#6157)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-09-18 22:10:29 +02:00
github-actions[bot]
46f68115b2 Update translation source strings (#6155)
Co-authored-by: github-actions <github-actions@github.com>
2025-09-17 12:58:05 +02:00
RickyRister
7ac22a6ce8 Move cards and filters folder out of game (#6145)
* big move

* also move game_specific_terms

* fix imports

* alphabetize cmake

* fix build failure

* create database folder and move files into it

* fix includes

* run formatter
2025-09-16 12:02:57 +02:00
BruebachL
bed79ef89e Remove unused layers from cardback.svg (#6154)
Took 42 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 22:20:12 +02:00
BruebachL
54095b9a89 [Home Tab] Disable random art crop shuffle if frequency is set to 0. (#6153)
* Disable shuffle if frequency is set to 0.

Took 13 minutes


Took 26 seconds

* Set special value text.

Took 12 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 21:34:42 +02:00
BruebachL
4b58060ab6 Don't set opaque paint event. (#6151)
Took 9 minutes


Took 20 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 21:12:58 +02:00
BruebachL
dbbb554735 Only use normal layout cards as a background source. (#6152)
Took 11 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 21:12:09 +02:00
BruebachL
9c3be1b851 check for null zone during card item teardown (#6149)
* check for null zone during card item teardown

Took 1 hour 32 minutes


Took 24 seconds

* Also check for it in the successful branch.

Took 6 minutes

* Comment.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 20:06:20 +02:00
BruebachL
190ab211e3 More player leaving fixes (#6148)
* Remove unnecessary parentheses.

Took 16 minutes

* Reorder player-left signals

Took 11 seconds

* Connect PlayerManager::playerRemoved signal to TabGame::processPlayerLeave.

Took 21 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 20:03:00 +02:00
RickyRister
f4fbe90a72 Fix segfault when creating token of opponent's card (#6144)
* Fix segfault when creating token of opponent's card

* clean up code
2025-09-15 12:18:51 +02:00
RickyRister
a9cbd5a172 Make TabHome a managed tab (#6147)
* Make TabHome a managed tab

* Add shortcut
2025-09-15 12:07:57 +02:00
RickyRister
94ba1c83c6 Removed unused fields in GameMetaInfo and GameState (#6142)
* Removed unused fields in GameMetaInfo and GameState

* revert parent to AbstractGame

* init activePlayer to -1
2025-09-15 10:22:11 +02:00
BruebachL
9b3756e591 Don't setText() in paintEvent() which causes infinite recursion on MacOs. Use a styleOption to paint base class directly instead. (#6146)
Took 18 minutes

Took 5 seconds


Took 19 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 10:19:12 +02:00
BruebachL
aff775f488 Don't get local ID from playerInfo on concession (#6143)
* Don't get local ID from playerInfo.

Took 39 minutes


Took 39 seconds

* Introduce isLocalPlayer convenience method.

Took 21 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-15 01:09:30 +02:00
BruebachL
4de5274996 Check if card has no PT set yet if dropped on table. (#6137)
* Check if card has no PT set yet if dropped on table.

Took 22 minutes

* Use isEmpty() for comparison.

Took 6 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-14 12:38:17 +02:00
dependabot[bot]
4e57868037 Bump actions/setup-node from 4 to 5 (#6111)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 10:50:33 +02:00
BruebachL
ab6b32b8ba Respect default deck editor choice (#6136)
* Respect default deck editor choice.

Took 5 minutes

* Don't force open default deck editor on startup.

Took 1 minute

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 22:03:10 +02:00
BruebachL
46285a499e Add a style for disabled buttons (#6134)
* Disable view card database button until card db is loaded, add a new style for disabled buttons.

Took 4 minutes

Took 21 seconds

* Lint.

Took 8 minutes

* Rename variables, don't disable DB button anymore.

Took 4 minutes

Took 4 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 22:01:49 +02:00
BruebachL
ce6cad5dfe Use a scope disconnect. (#6135)
Took 7 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 16:35:59 +02:00
BruebachL
d5ea86bc81 Guard against not-loaded database by delaying initialization. (#6133)
Took 20 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 15:00:30 +02:00
BruebachL
41ea424359 table_zone_logic now sets the PT of the cardItem to the cardInfos PT, which ensures consistency of this functionality when the card is added from a hidden zone. (#6129)
Took 27 minutes


Took 43 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 13:37:04 +02:00
BruebachL
87b0259b97 Properly delete enlargedPixmapWidget (#6131)
* Properly delete enlargedPixmapWidget.

Took 23 minutes

Took 13 seconds


Took 16 seconds

* Connect to QObject instead of emitting own signal.

Took 12 minutes

Took 7 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 13:35:59 +02:00
BruebachL
2490e97ea0 Switch to replay tab if already open. (#6130)
Took 11 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 12:44:46 +02:00
BruebachL
eecfe9d387 Forward playerActions signals to playerEventHandler (#6126)
Took 54 minutes

Took 7 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 12:44:09 +02:00
BruebachL
9ca5ee52e7 Connect signals correctly. (#6124)
Took 58 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-13 03:31:05 +02:00
BruebachL
fb23cc8c7a Refactor player menus into helper classes (#6121)
* Refactor player menus into helper classes.

Took 2 hours 6 minutes


Took 11 minutes

* Lint.

Took 6 minutes

Took 22 seconds

* Refactor card and move menu.

Took 1 hour 6 minutes

Took 36 seconds

Took 52 seconds

* Set active shortcuts, move player info stuff to card menu.

Took 25 minutes


Took 18 seconds

* Refactor say and utility menu.

Took 54 minutes

Took 2 minutes

Took 5 minutes

Took 11 minutes

* Rename folder.

Took 24 minutes

Took 6 minutes

* Refactor sideboard menu.

Took 26 minutes

* Remove unused variable in constructor.

Took 42 seconds

* Lint.

Took 11 minutes

* Nullptr check

Took 8 minutes

* Use localOrJudge check

Took 6 minutes

* Fix the build.

Took 7 minutes

Took 35 seconds

* PlayerList things.

Took 16 minutes

* Retranslate and set shortcuts for everything.

Took 10 minutes

* Correctly nullptr out sayMenu if not local

Took 3 minutes

* Don't check playerInfo in sbMenu shortcutsActive

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-12 13:52:05 -04:00
RickyRister
ff7ce39841 Fix hand visible (#6122) 2025-09-12 09:46:38 -04:00
RickyRister
0f05d6bd74 Move doc comments to correct place (#6123)
* Move docs for ViewZone

* Update docs

* move docs for updateCardMenu

* Fix link in doc

* format
2025-09-12 09:46:18 -04:00
BruebachL
93c15c8151 Home tab to replace generic deck editor on startup (#6114) 2025-09-11 15:36:34 -04:00
Zach H
22c8268f02 Require min 3.10 for external deps (#6119) 2025-09-11 14:50:31 -04:00
ebbit1q
216cd491cc fix #6115 (#6118)
* fix #6115

* rename all instances of player when relevant
2025-09-11 12:00:49 -04:00
BruebachL
5efc573783 Also nullptr incrementAllCardsCounter (#6117)
Took 34 minutes


Took 41 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-11 11:39:56 -04:00
RickyRister
bca0da6bd4 Fix segfault when drawing arrow (#6116) 2025-09-11 09:49:54 -04:00
BruebachL
9601a1fa4e Player refactor (#6112)
* Player refactor.

Took 1 hour 43 minutes

Took 1 minute


Took 23 seconds

* Tiny lint.

Took 3 minutes

* Hook up tap logic again.

Took 13 minutes

* Fix an include.

Took 3 minutes

* Stuff.

Took 6 minutes

* Fix typo.

Took 7 minutes

* Include.

Took 1 minute

* Reorganize method/variable definitions, remove unused ones.

Took 1 hour 8 minutes


Took 24 seconds

* Clean up some unused imports.

Took 6 minutes

* Player holds the deck, emits deckChanged(), other elements player->getDeck() to respond to changes.

Took 37 minutes

* Connect player->openDeckEditor signal directly in the player constructor

Took 6 minutes

* Emit openDeckEditor signal in player_actions again.

Took 3 minutes

* Do to-do's

Took 3 hours 32 minutes

* Lint.

Took 3 minutes

* Lint again.

Took 2 minutes

* Fix include.

Took 32 minutes

* The stack should ensure card visibility.

Took 21 minutes

* Fine, the game can remember the tab.

Took 10 minutes

Took 21 seconds

Took 9 seconds

* zoneId is a dynamic gameplay property and thus belongs in player.cpp

Took 11 minutes

Took 19 seconds

* Signal view removal, addition.

Took 5 minutes

* Ensure all players are considered local in local game.

Took 10 minutes

* ENSURE they are.

Took 8 minutes

* Bounds check data sent by QAction()

Took 54 minutes

* Move comment.

Took 20 seconds

* Reimplement logging category for game_event_handler.cpp, remove linebreaks.

Took 36 seconds

* PlayerGraphicsItem is responsible for retranslateUi, not Player.


Took 14 seconds

* Set menu for sideboard again, translate some menu titles, reimplement actIncPT action

Took 54 seconds

* Comment spacing.

Took 43 seconds

* Change message_log_widget.cpp slots to take CardZoneLogic parameters as emitted by PlayerEventHandler.

Took 7 minutes

Took 14 seconds

* Remove unused player_logger.cpp

Took 2 minutes

* Query local game state correctly from tab_supervisor again

Took 3 minutes

* Revert Deck legality checker.

Took 3 minutes

* Instantiate menu before graphics item.

Took 1 hour 5 minutes

Took 55 minutes

* Differentiate games and replays.


Took 9 seconds

* Lint.

Took 10 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-10 18:49:33 -04:00
BruebachL
b8e545bfa4 Move game state and event handling out of tab_game and into separate classes (#6090)
* Move game state and event handling out of tab_game and into separate classes.

Took 6 hours 38 minutes

Took 23 seconds

* Meta Info

Took 14 hours 36 minutes

* Properly respond to game started again.

Took 49 minutes

* Hook up the message log widgets to game events again.

Took 33 minutes

Took 7 seconds

* Lint.

Took 4 minutes

* Hook up playerListWidget.

Took 1 hour 2 minutes

Took 10 seconds

* Hook up playerListWidget properly.

Took 1 hour 17 minutes

* Fix regressions.

Took 17 minutes

Took 9 seconds

* Log the local player joining too.

Took 2 minutes

* Connect some player signals unrelated to this refactor again.

Took 5 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-10 18:40:29 -04:00
ebbit1q
5c16f0d027 update the address of the fsf in the license (#6113)
the fsf closed its office in august this year, it's now remote only and
the address has been replaced with its url, the license text can be
found here: https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
2025-09-10 18:18:34 -04:00
ebbit1q
1b4441baac add libqt6sql6-mysql to debian package recommends (#6110) 2025-09-08 09:59:18 -04:00
ebbit1q
0147a1d41f disallow users on your ignore list to get your current games (#6109) 2025-09-07 11:58:52 -04:00
BruebachL
0f11fbe599 Use pinned printing when adding to deck. (#6108) 2025-09-07 00:26:39 -04:00
BruebachL
9c18e99fe2 Correctly reset banner card if none was set but card appears in new deck. (#6107) 2025-09-07 00:26:07 -04:00
BruebachL
6e0a7de9cc Move quick filters from right to left to be closer to the color filters. (#6106) 2025-09-06 18:11:43 -04:00
BruebachL
b141a65838 Refactor page loading so it's uniform, display every printing from every filtered set instead of just one. (#6105) 2025-09-06 18:11:36 -04:00
BruebachL
7f842bb1e8 Sort VDE groups internally (#6102) 2025-09-06 09:06:59 -04:00
RickyRister
bd65aae81e Fix Logs tab close button not working (#6104) 2025-09-06 11:04:50 +02:00
BruebachL
b8dedb568c Use modelReset from new grouping in deck_list_model in VDE (#6100) 2025-09-05 11:12:30 -04:00
dependabot[bot]
ec94c29ed9 Bump actions/attest-build-provenance from 2 to 3 (#6095)
Bumps [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) from 2 to 3.
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest-build-provenance/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/attest-build-provenance
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 22:54:35 -04:00
github-actions[bot]
c77943d01c Update translation files (#6094)
Co-authored-by: github-actions <github-actions@github.com>
2025-09-04 22:54:27 -04:00
BruebachL
fc5fb956df Properly allow resizing the printing selector (#6097)
* Properly allow resizing the printing selector.
* Don't restrict central widget sizing in regular deck editor, don't size hidden widget in visual deck editor.
* Reset layout in VDE properly and introduce new default layout.
* Gives hover signal correct parameters (fix for exact card refactor issue)
2025-09-04 22:54:07 -04:00
BruebachL
2eba126ed7 Modularize and Doxygen decklist.cpp (#6099) 2025-09-04 22:52:46 -04:00
dependabot[bot]
da52d677c7 Bump actions/checkout from 4 to 5 (#6084) 2025-08-31 09:06:26 +02:00
RickyRister
ab4373d025 Implement replay sharing (#6066)
* new protos

* implement commands on server

* add buttons

* icons

* run formatter

* Message on get replay code failure

* Add new commands to switch statement

* Better failure messages

* Fix permission check query

* Change hash method

* Prevent adding duplicate replays

* Clean up TabReplay ui

* Copy over replay name

* base64 encode the hash

* Shorten hash

* Better failure messages

* change icon back to search icon

* check hash before checking if user already has access

* update share icon

* Update label text
2025-08-24 22:40:44 -04:00
Paul Carroll
5e88a0f0cc Fix multi-word type matching in card filters (#6060)
* Fix multi-word type matching in card filters

Add phrase matching to StringValue before word-based fallback.
Enables searches like t:"time lord" for multi-word creature types.

* Use existing typedef

* Don't inline lambda

* update filter func

* Update card type FilterString unit tests

* refactor string matcher

* update card db test

* fix sets count in test

* Add regex cache in string matcher

* Update cockatrice/src/game/filters/filter_string.cpp

* Revert "Add regex cache in string matcher"

---------

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-08-24 12:37:25 -04:00
BruebachL
ba794c2b60 Add a guard in case the printing info is empty for a related card. (#6087)
Took 4 hours 19 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-08-23 23:34:41 -04:00
SlightlyCircuitous
268559d8de Add Debian 13 'Trixie' build (#6068)
* Create Dockerfile

* Add Debian 13 to release template

* Add Debian 13 to desktop-build

* Add ca-certificates package to build

attempting to fix SSL issues
2025-08-23 23:34:07 -04:00
transifex-integration[bot]
473d147333 Translate cockatrice/cockatrice_en@source.ts in it (#6083)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-08-22 23:26:59 -04:00
RickyRister
d5d9f9bedc Refactor: Remove unused fields in InnerDecklistNode (#6086) 2025-08-22 23:26:16 -04:00
RickyRister
f31d30bf84 [PictureLoader] Remove manual multithreading (#6078) 2025-08-16 20:38:49 -04:00
transifex-integration[bot]
03b216a6b4 Translate cockatrice/cockatrice_en@source.ts in it (#6081)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-08-16 20:36:12 -04:00
BruebachL
3e6510b935 Buffer decklists to display until player processing is done instead of reordering player creation. (#6080)
Took 28 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-08-16 20:35:57 -04:00
transifex-integration[bot]
e87b35e0bb Updates for project Cockatrice and language fr (#6079)
* Translate oracle/oracle_en@source.ts in fr

100% translated source file: 'oracle/oracle_en@source.ts'
on 'fr'.

* Translate cockatrice/cockatrice_en@source.ts in fr

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'fr'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-08-16 14:27:37 -04:00
RickyRister
322fdb14de Fix segfault when selecting card in replay (#6077) 2025-08-16 14:27:28 -04:00
BruebachL
09381575a7 Add option to share decklists on load. (#6029)
* Add option to share decklists on load.

Took 1 hour 58 minutes

Took 9 minutes


Took 39 minutes

* Lint.

Took 14 minutes


Took 2 minutes

* Stuffs

Took 39 minutes

Took 4 seconds

Took 43 minutes

* Process local player first.

Took 45 minutes

* Consider if the setting is set on the game info first.

Took 4 minutes

* Save an indent level.

Took 43 seconds

* Don't commit logging config.

Took 3 minutes

* Remove a debug print.

Took 10 seconds


Took 7 seconds

* Add another optional guard.

Took 5 minutes

* Hide the tab bar if only one (own deck) is visible.

Took 9 minutes

* Rename setting label for clarity

Took 2 minutes

* Capitalization.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-08-15 17:31:05 -04:00
RickyRister
881243da6a Refactor TabReplay creation (#6064) 2025-08-15 01:15:02 -04:00
transifex-integration[bot]
851fad3e3f Updates for project Cockatrice and language it (#6065)
* Translate oracle/oracle_en@source.ts in it

100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

* Translate cockatrice/cockatrice_en@source.ts in it

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-08-15 01:14:05 -04:00
RickyRister
46d65f0b7e Refactor: rename and consolidate getSpectator (#6067) 2025-08-15 01:13:53 -04:00
RickyRister
03bebbe4c2 Rework card menu handling (#6069)
* extract cardMenu from CardItem

* move cardMenu saving to TabGame

* delete TabGame::updateCardMenu

* move checking to updateCardMenu

* unset activeCard when all cards are unselected
2025-08-15 01:13:28 -04:00
RickyRister
1649f30389 [PictureLoader] Use thread pool instead of creating new thread (#6072)
* delete threads

* Run reply processing in thread pool
2025-08-15 01:11:39 -04:00
BruebachL
38f76d449a Fix providerId cards getting removed from deckList by convenience replacement function (#6074)
Took 2 hours 25 minutes

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-08-15 01:11:02 -04:00
BruebachL
f2cbdae829 Allow tokens to consider providerIds. (#6075)
Tokens created through Ctrl + T use the pinned printing, if available.
Tokens created through a related card menu use a token from the same set, if available.

Took 2 hours 25 minutes

Took 10 seconds

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-08-15 01:10:36 -04:00
RickyRister
3a42354efd Refactor: Move files in src/client/game_logic (#6070)
* move abstract_client to src/server

* move key_signals to src/utility
2025-08-07 16:47:48 +02:00
Zach H
fe7853a389 Fix a crash case for aIncrementAllCardCounters access (#6063) 2025-08-02 16:43:24 -04:00
Paul Carroll
06738cae93 Add menu option and hotkey to sort hand (#6057)
* Add sort hand shortcut

* add function to sort hand by type and name

* rig up the sort hand to the player

* fix sorting param

* use getShortcut instead of getSingleShortcut

* use correct method

* change default sorting

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-08-02 00:40:17 -04:00
Paul Carroll
d6243a2dd2 Add menu option and shortcut to auto increment counters (#6055)
* Add method to increment all counters on cards on table

* add keyboard shortcut

* register action for menu

* register action for menu

* Change menu text

* Move to Counters submenu

* Change function name

* Change menu, update function to handle selected vs non selected cards

* Use getShortcut instead of getSingleShortcut

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

---------

Co-authored-by: Paul Carroll <paul.x.carroll@questdiagnostics.com>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-08-02 00:25:36 -04:00
RickyRister
04be0fe634 Refactor: Simplify closeRequest and remove closed signal (#6062)
* Refactor: simplify closeRequest and remove closed signal

* clean up closeRequest usages
2025-08-01 22:45:54 -04:00
RickyRister
fd12a1f6be Fix certain game actions only recognizing first shortcut (#6059)
* doc

* Fix non-counter shortcuts

* Fix counter shortcuts
2025-08-01 22:45:26 -04:00
RickyRister
e10dd4ef42 Refactor: Don't call stop in TabSupervisor dtor (#6061) 2025-08-01 08:53:06 -04:00
RickyRister
62c02e3fce Also clear redirect cache when clearing network cache (#6052) 2025-07-29 09:35:09 -04:00
RickyRister
ae2c55c33b Refactor: use ExactCard to represent specific printings (#6049)
* Create new class

* Update CardInfo and CardDatabase

* Use new class instead of CardInfoPtr

* fix cmake
2025-07-28 21:04:45 -04:00
RickyRister
4a2a646943 Fix server crash from out-of-bounds index when players is empty (#6048) 2025-07-19 00:31:50 -04:00
RickyRister
ae47ee802b Refactor: Add PrintingInfo::getUuid (#6046) 2025-07-17 09:06:34 -04:00
RickyRister
4fd2f1f974 Fix turning cards face-up not having correct printing (#6043) 2025-07-16 13:03:05 +02:00
BruebachL
b9f16e8cce Refactor replay code in TabGame to replayManager (#6026)
* Refactor replay code to replayManager

* Lint.

* Refresh shortcuts.

Took 13 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-07-16 06:33:48 -04:00
RickyRister
70b4843bc4 Refactor: clean up CardDatabase pt2 (#6042)
* findPrintingWithId

* remove a param

* cleanup up usage of getCardInfo
2025-07-16 06:33:38 -04:00
RickyRister
95190c321c Refactor: remove second param from CardZone::getCard (#6041) 2025-07-16 05:54:31 -04:00
RickyRister
a9b3be33e0 Refactor: Represent cardName + providerId with CardRef struct (#6039)
* card_ref.h

* update CardDatabase signatures

* make everything compile

* rename methods

* add docs

* mark stuff const

* set cardRef in CardItem

* cleanup

* fix build failure

* Fix builds on mac

---------

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2025-07-15 22:14:02 -04:00
BruebachL
e05dad4267 Add the option to load decklists from Archidekt, Deckstats, Moxfield, TappedOut in deck editor and lobby (#6030)
* Add the option to load decklists from Archidekt, Deckstats, Moxfield, TappedOut in deck editor and lobby.

Took 3 hours 34 minutes

Took 9 seconds


Took 12 seconds

* Properly set quantities.

Took 11 minutes

* Warnings.

Took 5 minutes

* Static regexes.

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* Category loggings and better warnings.

Took 18 minutes


Took 42 seconds

* use loadFromStream_Plain instead of manually adding CardNodes to the DeckList.

Took 30 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-07-14 23:12:25 -04:00
github-actions[bot]
83b90d472f Update translation files (#6037)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-14 23:07:14 -04:00
BruebachL
ee4ff6e732 Allow more naming schemes for custom pictures (#6021)
* Allow more naming schemes for custom pictures.

Order is cardName_providerId, cardName_setName_collectorNumber, setName-collectorNumber-cardName and then just generically cardName, if the user has decided to override every printing. Most-to-least specific.


Took 2 minutes

Took 8 seconds

* Fixups.

Took 2 minutes

* Even more naming schemes.

Took 6 minutes

* Finally yeet the bug warning in PrintingSelector

Took 3 minutes

* Adjust to PrintingInfo change.

Took 5 minutes

* Don't use suffixes.

Took 7 minutes

Took 9 seconds

* Comments.

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-07-14 23:07:03 -04:00
RickyRister
2267d38352 [Refactor] Clean up CardDatabase (#6034)
* Inline getCardFromMap

map.value already returns a default-constructed value if the key is not present

* Use for-each instead of iterator

* Add new method

* clean up method order

* fix build failure

* clean up getPreferredPrinting usage

* early returns
2025-07-12 23:29:02 -04:00
transifex-integration[bot]
4fbb47300e Translate cockatrice/cockatrice_en@source.ts in de (#6028)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-07-09 17:55:54 -04:00
BruebachL
836e168a6c Properly and consistently capitalize EDHRec (#6027)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-07-09 17:55:04 -04:00
RickyRister
a9684f67cc Refactor: rename CardInfoPerSet to PrintingInfo (#6024)
* remove unnecessary consts

* removed unused

* rename class

* rename variables and methods

* rename again

* rename variables again

* rename field

* run formatter
2025-07-07 23:41:19 -04:00
RickyRister
686e90d0ed [PictureLoader] Fix status bar not updating (#6023)
* [PictureLoader] Fix status bar not updating

* rename methods
2025-07-05 23:14:46 -04:00
RickyRister
0b9b39fef7 [PictureLoader] Reduce downtime between load attempts (#6020)
* [PictureLoader] Reduce downtime between load attempts

* rename some stuff

* better comments

* Fix segfault from status bar

Pass just the relevant data through the signals to the status bar, instead of passing the entire Work object.
That way the data is detached from the Work object and we won't segfault when Work self-deletes before status bar tries to use that data.

* Rename method
2025-07-05 22:42:54 -04:00
transifex-integration[bot]
67a3b03b07 Translate oracle/oracle_en@source.ts in de (#6022)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-07-05 11:56:02 -04:00
RickyRister
388db4e995 [PictureLoader] Properly run reply processing on Work's thread (#6016)
* [PictureLoader] Properly run reply processing on Work's thread

* emit cachedImageHit first

* Remove unused fields

* Remove unused fields

* Fix double free requests from cache hit

If we hit a cached url, the request already gets to skip the queue.
By sending another free request once the cached request finishes, we're actually sending two free requests on each cache hit.
2025-07-04 23:01:25 -04:00
RickyRister
a28a1aa601 Fix segfault when filtering card view that have blank cards (#6017) 2025-07-04 10:18:07 -04:00
RickyRister
ed82106359 [PictureLoader] Fix double-queueing bug (#6014) 2025-07-02 23:08:31 -04:00
github-actions[bot]
c57b84cb17 Update translation source strings (#6012)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-01 15:29:57 -04:00
BruebachL
2dfe9fcf45 Add as set instance on subsequent loads as well. (#6013)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-07-01 15:29:48 -04:00
ZeldaZach
51f978ac72 Support GH Token in binary attestation step (pt2) 2025-06-29 23:19:22 -04:00
ZeldaZach
c216677e1e Support GH Token in binary attestation step 2025-06-29 23:09:39 -04:00
ZeldaZach
8a5d275136 Remove Subject Path 2025-06-29 22:55:28 -04:00
Zach H
a36b76ba15 Re-add contents permissino 2025-06-29 22:37:25 -04:00
BruebachL
f3913949b2 Automatic Card Database Updates (#6004)
* Add the option to background the oracle wizard, add an option to automatically launch oracle wizard in background every X days since last launch.

* Mocks and a typo.

* Lint.

* Lint?

* qOverload the spinBox.

* Change to a prompt instead.

* An Label.

* Update window_main.cpp

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-06-29 22:21:52 -04:00
RickyRister
76fdbfaa2f [PictureLoader] Dumb hack to fix segfault (#6010) 2025-06-29 22:21:12 -04:00
RickyRister
6b44b9ae1e Revert changes related to #5999 to unbreak CI (#6011)
* Revert "Attempt to fix Sign MacOS Pt1"

This reverts commit 208f8349a6.

* Revert "fetch logs on error (#6003)"

This reverts commit 32e71b0386.

* Revert "Fix Build Attest pt3"

This reverts commit 1c687e7a45.

* Revert "Fix Build Attest pt2"

This reverts commit 53ed028663.

* Revert "Fix Build Attest"

This reverts commit 2a4ebe1b3e.

* Revert "Add write permissions for `contents` (#6002)"

This reverts commit df863355b7.

* Revert "make script executable (#6000)"

This reverts commit b69091a51a.

* Revert "move signing mac apps to own script (#5999)"

This reverts commit 0fe30ebe49.
2025-06-29 21:49:47 -04:00
RickyRister
8615c4c3b0 [PictureLoader] Refactor PictureLoaderWorkerWork (#6009)
* Extract tryLoadImageFromReply

* Make imageIsBlackListed static

* Make picDownloadFailed private
2025-06-25 09:22:51 -04:00
RickyRister
f976bd3fff Make qtlogging.ini nicer to use (#6008) 2025-06-25 09:21:58 -04:00
RickyRister
db55a2664f Skip cards with empty names when loading xml (#6007) 2025-06-25 09:21:17 -04:00
RickyRister
4f1b4b1283 Log xml parse errors when loading card database (#6006) 2025-06-25 09:20:29 -04:00
ZeldaZach
208f8349a6 Attempt to fix Sign MacOS Pt1 2025-06-23 20:50:22 -04:00
tooomm
32e71b0386 fetch logs on error (#6003) 2025-06-23 19:58:28 -04:00
ZeldaZach
1c687e7a45 Fix Build Attest pt3 2025-06-22 19:08:20 -04:00
ZeldaZach
53ed028663 Fix Build Attest pt2 2025-06-22 19:00:42 -04:00
ZeldaZach
2a4ebe1b3e Fix Build Attest 2025-06-22 18:48:52 -04:00
tooomm
df863355b7 Add write permissions for contents (#6002) 2025-06-22 18:29:43 -04:00
RickyRister
66e44f3448 [PictureLoader] Fix worker leak (#6001) 2025-06-22 18:29:20 -04:00
RickyRister
c1f12f52ae [PictureLoader] Periodically refresh the local images index (#5997) 2025-06-22 18:25:04 -04:00
tooomm
b69091a51a make script executable (#6000) 2025-06-22 17:53:16 -04:00
tooomm
0fe30ebe49 move signing mac apps to own script (#5999) 2025-06-22 16:21:33 -04:00
RickyRister
34f5552c7d [PictureLoader] Remove redundant startNextPicDownload calls; clean up (#5998)
* Add docs

* Remove unused signal

* Remove redundant startNextPicDownload

* explicitly emit signals

* delete reply first if able

* Log download fail at warning
2025-06-22 16:19:20 -04:00
BruebachL
53e27ff4d3 Printing Selector Bulk Editor (#5993)
* Bulk editing dialog.

* Bulk editing dialog functionality.

* Performance fixes, hide sets which can't offer any new cards, better dragging indicators.

* Update count label.

* Add a display for modified cards.

* Include long setName in checkbox label

* Fix drag & drop.

* New layout updating?

* Re-layout, add instruction label.

* Qt version check.

* Add buttons to clear and set all to preferred printing.

* tr UI

* Add the button to the print selector instead.

* Qt5 compatibility stuff.

* Qt5 compatibility stuff again.

* Toggled works, I guess.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-21 21:15:48 -04:00
tooomm
f4569c513f CI: Move and clarify macOS signing certificate step (#5996)
* Update compile.sh

* Update desktop-build.yml
2025-06-21 21:14:51 -04:00
RickyRister
90ce5f2c57 [GDE] Fix add card always grouping by type (#5995) 2025-06-21 21:12:24 -04:00
RickyRister
6f3a07b756 [PictureLoader] Fix freezes from local image search (#5994)
* [PictureLoader] Fix freezes/crashes from parallel folder search

* fix build failure
2025-06-21 21:10:29 -04:00
RickyRister
d42bfa88e1 Fix QString missing arg warning in logMoveCard (#5992) 2025-06-14 11:11:00 -04:00
RickyRister
61a6b32137 Game filter for games created by buddy (#5991) 2025-06-14 11:10:24 -04:00
RickyRister
6cb4e203f1 Move "show status bar" action under Help menu (#5989) 2025-06-14 11:08:39 -04:00
tooomm
2d27a721f8 Fix workflow permissions for attestations (#5987) 2025-06-13 19:11:33 -04:00
BruebachL
867a8e855b Sort after addition again. (#5988)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-13 19:11:17 -04:00
BruebachL
d5dc70ccee More granular decklist signals (#5981)
* Performance stuffs.

* Actually make widgets track their indices.

* Functional stuff.

* More display stuff.

* Determine where we will insert the card before actually inserting it in the model.

* Allow overlap layouts to insert widgets at specific positions.

* Modified signals.

* Raise trailing widgets on overlap layout widget insertion.

* Nix the logging config changes.

* Lint.

* Address comments.

* Address comments.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-13 13:21:34 -04:00
BruebachL
18d9c1d609 Default show status bar to false. (#5986)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-13 13:21:09 -04:00
BruebachL
c388cee1fe Add a new dialog that allows editing the default suggested tags. (#5979)
* Add a new dialog that allows editing the default suggested tags.

* Lint.

* Actually hand linting, lol.

* Fix Build

* Add dialog.

* Use show() instead of exec(), properly size hint list item widgets.

* Fix... something to do with the build?

* Cast to abstract tab deck editor instead of regular.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2025-06-13 09:16:57 -04:00
RickyRister
da2488f7d8 Add option to hide status bar (#5983)
* reorganize actions

* add setting to settingsCache

* use setting

* add shortcut

* fix typo
2025-06-13 08:55:04 -04:00
BruebachL
f059643187 [Picture Loader] Consider local images, remove some unused variables. (#5985)
* Consider local images, remove some unused variables.

* Move checking for local card images outside of card download loop, add NOT found debug line.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-13 08:54:43 -04:00
RickyRister
30730fe632 Fix crash due to null mCardCounters (#5984) 2025-06-13 08:48:39 -04:00
RickyRister
39df168891 Fix picDownloadFinished not being called on failure (#5982) 2025-06-13 08:46:58 -04:00
Basile Clement
33946e61bb feat: Configurable colors for card counter (#5882)
* feat: Configurable colors for card counter

This patch adds support for:

 - User-defined colors for card counters;
 - 3 additional types of card counters.

The colors used for counters is stored locally and not shared with other
users. This is intentional as the feature is likely to be used for
improved accessibility.

In order to preserve backwards-compatibility, and because I don't have a
better idea, counters keep their existing color-based names (Red, Green,
Yellow) in menus and in the message log. For consistency, the new
counters also get assigned color-based names (Cyan, Purple, Magenta).

This choice is a compromise, as allowing user-defined names for counters
raises many additional (UI/UX) questions that I don't know how to
answer. A good long-term solution would be to include counter names as
part of a game definition system and hence would be in scope for #1740.

The choice of adding 3 additional types of counters and the Cyan, Purple
and Magenta names are not random. The existing code for determining
counter colors goes: Red, Green, Yellow, Cyan, Purple, Magenta, Black
(unreadable) and thus 6 is the maximum number of counters that existing
versions of Cockatrice are able to support. This way, released clients
get a degraded experience (cannot interact with the new counters,
messages in the server log say "Player X places 1 on Card (now 1)"
without specifying 1 of what), but do see the counters properly.

Fixes #2020

* Do not use %n

* Use SettingsManager

* Use qSin instead of sin

Fix build failures with old GCC.

* Use letters for card counter names

* Place card counter actions in separate menu

* Remove copy-paste error

* include QtMath

* Do not color whole settings page

* derp

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-06-12 22:12:46 -04:00
SlightlyCircuitous
0b34d20716 Add "landscapeOrientation" as a valid element (#5966) 2025-06-12 21:53:07 -04:00
RickyRister
8d0b36d2d4 [VDS] add deck search query options for name, filename, and path (#5975)
* implement search expressions

* update syntax help
2025-06-12 21:16:35 -04:00
RickyRister
7e08f7df67 [VDS] Remove searchFolderName setting (#5970)
* [VDS] Remove searchFolderName setting

* rename property in ExtraDeckSearchInfo
2025-06-12 20:45:01 -04:00
BruebachL
a688a5fe72 [VDD] Filter performance (#5974)
* Sort saved filters by name.

* Optimize performance, allow loading name filters from clipboard.

* Fix include.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-12 19:47:03 -04:00
BruebachL
fe57efb1a8 Parallel picture loader (#5977)
* Parallelize picture loader.

* Queue requests instead.

* Include a status bar for the picture loader.

* Save redirect cache on destruction.

* Address comments.

* Let's not overwrite an ambigious variable name.

* Lint.

* Oracle needs the status bar too.

* We actually get a free request if we hit a cached image.

* Fix cmake list.

* toString() the url.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-12 19:44:38 -04:00
BruebachL
9af3fbc35f Propagate display type from visual deck editor to card group display widget correctly on initialization. (#5978)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-06-12 19:37:57 -04:00
RickyRister
7495d2dc65 [VDS] Use display name for generic search expression (#5976) 2025-06-12 19:32:24 -04:00
RickyRister
456da93465 Support regex in card search (#5971) 2025-06-12 19:30:43 -04:00
justross
e7a6126fbd Web client: Updated packages with vulnerabilities using npm audit fix (#5955) 2025-06-08 22:29:57 -04:00
tooomm
aa41eb5da4 Add build attestations for releases (#5967) 2025-06-08 22:29:49 -04:00
RickyRister
87767be4a6 Put mutex around returning cards on concede (#5964) 2025-06-08 22:28:59 -04:00
tooomm
1e0a356cd2 fix transifex link (#5969) 2025-06-09 02:05:24 +02:00
tooomm
1b40c9e692 CI: Some cleanup (#5959)
* Update desktop-build.yml

* Update desktop-build.yml

* use CMAKE_GENERATOR in docker.sh

* revert to mtime
2025-06-06 18:42:55 -04:00
tooomm
2cc7565841 Only sign & notarize on master or tags (#5958) 2025-06-06 18:41:31 -04:00
Bruno Alexandre Rosa
cee67f4301 ci: use ccache on macos (#5952) 2025-05-24 15:24:15 +02:00
Bruno Alexandre Rosa
452bf61ef9 FIX: re-add CMAKE_GENERATOR_PLATFORM: 'x64' (#5954) 2025-05-22 19:01:53 -04:00
RickyRister
50d3dfb98b Load deck from clipboard in Game Lobby (#5950) 2025-05-20 10:36:17 -04:00
RickyRister
d729df5cba Add missing shortcuts for Game Lobby buttons (#5951) 2025-05-19 08:09:03 -04:00
RickyRister
a5638ccc3b Parent the "new sets found" dialog (#5948) 2025-05-18 22:06:32 -04:00
RickyRister
46643065ef Refactor banner card ComboBox (#5947) 2025-05-18 22:06:18 -04:00
RickyRister
b270562a44 Fix wrong Message Dock widget order from #5942 (#5946)
* fix

* refactor
2025-05-18 22:05:27 -04:00
BruebachL
cfbe59868b [VDS] Add prompt before overwriting existing files when converting to .cod (#5926)
* Add prompt before overwriting existing files.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-17 22:25:13 -04:00
tooomm
207211facc CI: Tweak ccache for Linux builds (#5938)
* rework ccache

* use branch name
2025-05-17 22:25:01 -04:00
Bruno Alexandre Rosa
269523a034 ci: use Ninja on Linux and macOS builds (#5939)
* ci: use Ninja on linux and macos

* ci: simplify parallelism
2025-05-17 22:24:14 -04:00
RickyRister
1eee314d17 [VDS] Add ability to search by deck contents (#5943)
* [VDS] Add ability to search by deck contents

* add deck search syntax help

* fix build failure
2025-05-17 22:23:54 -04:00
RickyRister
8cc64bf44e Refactor TabGame: inline some QLayout and QWidget class fields (#5942)
* inline layouts

* inline widgets
2025-05-17 22:23:30 -04:00
RickyRister
5dd027ad63 [VDS] Deselect tag if clicked while already selected (#5944) 2025-05-16 14:39:33 -04:00
RickyRister
d51620640b [VDS] Add setting to show deck filepath in tooltip (#5899)
* [VDS] Show deck filepath in tooltip

* Make tooltip type into a setting

* Fix build failure
2025-05-12 17:39:58 -04:00
BruebachL
17c767fa42 [GDE] Add a group criteria to the deck list model (#5931)
* Add a group criteria to the deck list model and a combo box to the deck dock widget to change it.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-12 17:36:55 -04:00
tooomm
b2749a0c4e Add debug log (#5937) 2025-05-11 17:40:04 -04:00
tooomm
3b0c7a3a30 Re-add vcpkg binary caching (#5933) 2025-05-11 17:39:45 -04:00
tooomm
797681883b CI: Remove Ubuntu 20.04 (EOL May 31st) (#5849)
* ubuntu 20.04 eol

* Update release_template.md

* [skip ci] Delete .ci/Ubuntu20.04 directory
2025-05-11 17:38:13 -04:00
ebbit1q
48b6e1590c increase cache size for ccache on linux ci (#5935) 2025-05-11 11:48:58 +02:00
RickyRister
b423edf2b5 Fix segfault when multiple cards are dragged from view zone (#5934) 2025-05-11 01:44:32 +02:00
BruebachL
9cf979d154 [GDE/VDE] More granular modification signals. (#5927)
* More granular modification signals.

* Bruh.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-08 21:32:00 -04:00
RickyRister
033c8b269d [VDS] Refactor: move quick settings to separate class (#5905) 2025-05-06 23:00:11 -04:00
RickyRister
c4e42b94f9 Refactor CardSizeWidget: don't update setting directly (#5903) 2025-05-06 21:31:01 -04:00
tooomm
5b9cb4fc8d Small changes related to docker image build+upload (#5907)
* ci label

* naming

* downloads

* run

* fix toc
2025-05-06 21:29:09 -04:00
BruebachL
99d9ce10c3 [GDE, VDS & VDE] Tooltips and labels (#5916)
* Add correct inversion for isHidden() on bannerCardLabel.

* Add tooltips to VDS buttons.

* Add tooltip to GDE button.

* Add tooltips to visual deck editor buttons.

* Add tooltips to visual database display buttons.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-06 21:28:50 -04:00
BruebachL
34400c7f60 [VDE] Sample Hand Improvements (#5917)
* Actually call retranslateUi, add spinBox to change sample hand size, add card size slider.

* Lint.

* Fix include.

* Fix include again.

* Fix overloads.

* Update visual_deck_editor_sample_hand_widget.cpp

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-05-06 21:28:03 -04:00
transifex-integration[bot]
05914e38f0 Translate oracle/oracle_en@source.ts in pt_BR (#5918)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-05-06 21:26:27 -04:00
BruebachL
bddb54ef4c [VDE] Deck analytics visibility (#5919)
* Add scrollArea, I guess.

* Set mana curve bar color to grey for visibility.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-06 21:24:24 -04:00
BruebachL
46e146b34a [VDS] Allow tags to toggle to a NOT state to hide non-matching decks (#5920)
* Allow excluding tags.

* Lint.

* My linter is broken, don't ask.

* Zzz.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-06 21:23:49 -04:00
BruebachL
f16ba6861b Forward scroll event to scrollable parents if possible in NoScrollFilter. (#5921)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-06 21:22:37 -04:00
BruebachL
fb6af544e2 Set Banner Card again when restoring index on deckList data changes. (#5922)
* Set Banner Card again when restoring index on deckList data changes.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-06 21:20:38 -04:00
Bruno Alexandre Rosa
4c3cfc8c2d fix: fix qt5 builds on macos 15 (#5923)
Although this config is not built on CI, while trying to compile locally, the build failed due to warnings and -Werror.
Some qt functions were actually deprecated (but not removed) before version 6.0.0 and clang (righfully) complains about comparison between different types of enums.
2025-05-06 21:18:59 -04:00
Basile Clement
286a7494d3 client: Support arbitrary game zones (#5877)
* Remove `isView` flag from CardZone

This flag is used for two purposes:

 1. It is used as a check for casting to a zone to a `ZoneViewZone`;

 2. Non-view zones are added to the player's zones on construction

This patch removes the `isView` flag and instead:

 1. We directly cast zones to `ZoneViewZone` using a dynamic (qobject)
    cast and use the result of the cast instead of the `isView` flag to
    detect if we are a view zone or not;

 2. The player records its own zones when they are created, simplifying
    control flow.

* Review

* client: Support arbitrary game zones

Currently, the client ignores cards in unknown zones, as there is an
implicit assumption that the set of zones known by the server and the
client are the same.

This patch makes it so that the client accept "custom zones" from the
server (zones outside the builtin deck, graveyard, exile, sideboard,
table, stack and hand zones) using the information from the
ServerInfo_CardZone. Moving cards from/into these zones happens
through a "View custom zone" action in the Game > Player menu and
properly appears in the chat.

Note that this patch intentionally does not introduce any support for
having the server actually create such zones. Instead, this patch aims
to improve backwards compatibility for when we do get to adding this
capability in the future, by making sure that current clients will be
able to interact with future new zones (even if suboptimally).
2025-05-06 21:18:08 -04:00
RickyRister
a07c1badd8 Add "copy to clipboard" button to Debug Log window (#5913) 2025-05-05 11:45:22 -04:00
RickyRister
29d93fb9c1 Delete CardDragItem when referenced CardItem is destroyed (#5911) 2025-05-05 09:50:34 -04:00
RickyRister
4a54412d47 Pass log messages by const ref (#5914)
* Pass log messages by const ref

* Rename method
2025-05-05 09:46:29 -04:00
RickyRister
bd8306bd33 Strip color escape codes in Debug Log window (#5915) 2025-05-05 09:38:46 -04:00
RickyRister
69107f79e3 Add setting to auto focus search bar when opening card view window (#5906)
* add new setting

* implement thing

* Rename setting

* fix build failure
2025-05-04 20:09:11 -04:00
Bruno Alexandre Rosa
2687a34019 ci: temporarily remove run-vcpkg step (#5902)
There is an issue with run-vcpkg GHA not caching properly. This ends up wasting 20 minutes of redundant vcpkg depency compilation.
See https://github.com/lukka/run-vcpkg/issues/243
2025-05-04 15:02:11 +02:00
BruebachL
9ae6357c34 Properly manage hover-zoom child widget in CardInfoPictureWidget destructor. (#5900)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-03 20:03:53 -04:00
Sebastian Di Luzio
baa7e25e30 feat: build and release docker images using github actions and container registry (#5807)
* feat: build and release docker images using github cicd

* fix: attempt to publish to specific image name

* fix: typo in pipeline step

* typo

* typo

* limit to certain paths for PRs & naming

* ci: configure image title and url

* docker: include only necessary files and directories

this should make caching more powerful

* docker: reorder COPY with best guess of what changes least

* build(docker): remove seemingly unnecessary files

* fix: clean up docker metadata

remove annotations, it seems they're applied from the labels already, add description

* fix(ci): add back docker image annotations

* Update desktop-build.yml

* Update desktop-lint.yml

* Update desktop-build.yml

* Update docker-release.yml

* fix: remove run on master and add affected files to PR trigger

* metadata

* ci: run pipeline on main

this will ensure the container can always build and keep caches ready for release. push should only happen on tag triggers

It also removes some files from the PR trigger that should never break the build, and would just invalidate cache.

* Update docker-release.yml

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2025-05-02 18:10:09 -04:00
BruebachL
700feb68af Don't require .svg for mana symbols. (#5897)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-05-02 14:34:41 -04:00
RickyRister
57c6f2716f Add setting for which deck editor tab to open deck in (#5895)
* Create new setting

* Update settings dlg

* implement functionality

* Make setting into an enum
2025-05-02 13:00:32 -04:00
Basile Clement
24e27d3c31 fix: Prevent dragged cards getting stuck (#5896)
* fix: Prevent dragged cards getting stuck

Update the position of the card even if it is not above any zone.

* Also update the currentZone
2025-05-02 12:58:21 -04:00
SlightlyCircuitous
77d13090b5 Remove Fedora 40 build and Add Fedora 42 build (#5893)
* Create Fedora 42 Dockerfile

* Delete .ci/Fedora40 directory

* Update Fedora releases

* Update Fedora builds
2025-04-29 22:18:18 -04:00
tooomm
fc40fea97a Fix install Qt step (#5883) 2025-04-28 00:31:00 -04:00
RickyRister
bb8213deb5 Support creating face-down tokens (#5800)
* add new fields to proto

* update token dlg

* send facedown in command

* update server to get it to work

* disable certain edits when face down

* update client event processing

* log face-down token creation

* Don't support colors on face-down tokens

The other client doesn't know about the color, so it causes a desync

* Update wording

Co-authored-by: Basile Clement <Elarnon@users.noreply.github.com>

* Allow annotations on face-down tokens

---------

Co-authored-by: Basile Clement <Elarnon@users.noreply.github.com>
2025-04-28 00:30:23 -04:00
RickyRister
e3465be8c1 Allow cards to transform directly on stack (#5888) 2025-04-28 00:27:22 -04:00
RickyRister
42ce9f4d89 Allow tokens on the stack (#5886) 2025-04-26 19:59:59 -04:00
Basile Clement
1409dcc2e8 Remove isView flag from CardZone (#5728)
* Remove `isView` flag from CardZone

This flag is used for two purposes:

 1. It is used as a check for casting to a zone to a `ZoneViewZone`;

 2. Non-view zones are added to the player's zones on construction

This patch removes the `isView` flag and instead:

 1. We directly cast zones to `ZoneViewZone` using a dynamic (qobject)
    cast and use the result of the cast instead of the `isView` flag to
    detect if we are a view zone or not;

 2. The player records its own zones when they are created, simplifying
    control flow.

* Review
2025-04-26 19:55:54 -04:00
dependabot[bot]
6fd1e9a4c4 Bump serialize-javascript from 6.0.0 to 6.0.2 in /webclient (#5878)
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 6.0.0 to 6.0.2.
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.2)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 6.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 22:42:18 -04:00
transifex-integration[bot]
95a86703b3 Updates for project Cockatrice and language it (#5876)
* Translate cockatrice/cockatrice_en@source.ts in it

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

* Translate cockatrice/cockatrice_en@source.ts in it

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-04-24 22:39:35 -04:00
RickyRister
bcaa6c6b8a Refactor files in common to new Qt Slot/Signal syntax (#5872) 2025-04-21 16:30:40 -04:00
RickyRister
ffe02e59c7 Refactor: clean up OracleImporter (#5871)
* remove unused dataDir variable

* inline setsMap

* join declaration and assignment

* make the protected methods static

* make getSetPriority static

* inline mainCardTypes list and make the method static

* pass by const ref when able

* rename param to match
2025-04-21 16:29:42 -04:00
RickyRister
f7152befec Refactor: clean up MessageLogWidget (#5870)
* use constants instead of static methods

* make static methods static

* remove unused variables
2025-04-21 16:28:45 -04:00
RickyRister
ca73033aea Refactor files in oracle to new Qt Slot/Signal syntax (#5869)
* Refactor files in oracle to new Qt Slot/Signal syntax

* fix build failure
2025-04-20 23:53:37 -04:00
RickyRister
a1499854f9 Make OracleImporter not extend CardDatabase (#5868)
* Move TOKENS_SETNAME to CardSet

* make OracleImporter no longer extend CardDatabase
2025-04-21 01:48:13 +00:00
BruebachL
873e0d346e Make a setting for filtering to the most recent sets. (#5865)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 14:39:20 +00:00
RickyRister
44ac782978 Move card_item and related to src/game/board (#5867)
* move files

* update includes

* update cmake
2025-04-20 14:37:52 +00:00
ebbit1q
6b39f6f6fa fix indenting in test cards.xml (#5866) 2025-04-20 14:36:38 +00:00
BruebachL
dcbb8bab75 [VDD] Defer filter tree assignment (#5864)
* RetranslateUi instead of updating filter mode.

* Defer setting the filter tree on the database display model until AFTER all the filter widgets are initialized.

* Update visual_database_display_set_filter_widget.cpp

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-04-20 04:17:25 +00:00
BruebachL
acd9a163f0 [VDD] Saner and more performant color filtering, allow deleting specific filter from filterTree (#5863)
* Saner and more performant color filtering.

* Update visual_database_display_color_filter_widget.cpp

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-04-20 04:15:28 +00:00
BruebachL
795149e776 Don't force size unnecessarily, correctly parent scrollArea. (#5862)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:12:46 +00:00
BruebachL
55bff6b52f Make sample hand flow widget a scrollbar one until we figure out why non-scrollbar ones don't resize correctly. (#5861)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:12:30 +00:00
BruebachL
82be0a8898 Propagate display updates to found widgets. (#5860)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:12:16 +00:00
BruebachL
f98aad57d3 Add filter connection after toggling buttons and emit on end. (#5858)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:11:52 +00:00
BruebachL
81a911dc11 Add the option to hide banner card and tags in deck editor. (#5857)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:11:32 +00:00
RickyRister
39f87a5e78 VDS: Optimize refreshTags in VisualDeckStorageTagFilterWidget (#5856)
* make methods const

* remove redundant calls to gatherAllTags

* make methods private

* use QSet instead of QStringList
2025-04-20 04:10:32 +00:00
BruebachL
aff4ffdf83 [GDE] Disable add tag button until text is entered. (#5855)
* Disable add tag button until text is entered.

* Reduce capture scope.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-20 04:09:25 +00:00
lilyhuang-github
574ea01e08 update handling of keywords: AND, OR, NOT in card search (#5788)
* update hnadling of keywords: AND, OR, NOT in card search

* added and

* update test

* update test

* update OR to not be [oO][rR] and just look for OR

* keyword testing

* adjusted new test

* implement test case for cards with keyword in name

* implement test case to cards with keyword in name

* format

* update test case

* change test cas

* update truth test case

* changed test card search from real cards to fake and added cards

* Update tests/carddatabase/data/cards.xml

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* Update tests/carddatabase/filter_string_test.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* Update tests/carddatabase/filter_string_test.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

* update formatting

* update cardatabase_test to include +2 cards

* update test case +1 set + 1 type

---------

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-04-20 04:08:00 +00:00
RickyRister
26dcb015ce Refactor function structs into lambdas (#5675)
* change signature to use lambda

* reuse comparator

* inline structs in forEachCard

* inline structs

* Refactor exportDeckToDecklist

* fix unit test
2025-04-20 04:07:22 +00:00
BruebachL
1d259a86c1 Don't add duplicate CardInfos to set. (#5852)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 19:27:50 -04:00
BruebachL
0c02d15e0d Allow empty collectorNumber. (#5853)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 19:26:17 -04:00
BruebachL
1e01c684c4 Display cards as set variants if only a single set is selected. (#5854)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 19:25:39 -04:00
BruebachL
3b1d6e394d [EDHRec] Display name above card, add bars for inclusion and synergy instead of coloring the whole label, card size slider (#5851)
* Display name above card, add bars for inclusion and synergy instead of coloring the whole label.

* Re-add commander label.

* Add a card size slider.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 22:28:44 +00:00
BruebachL
2fe639676b VDS performance fixes (#5848)
* Block updates, don't validate cardInfo and use ItemModel instead of looped addItem.

* Change to QVariant map directly.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 22:15:33 +00:00
tooomm
a35707ae18 Overhaul README (#5806)
* Update README.md

* Update README.md
2025-04-18 09:27:32 -04:00
tooomm
b1cf8ff0bb Update issue templates (#5824) 2025-04-18 09:26:23 -04:00
BruebachL
adaa31b34d Only emit cardClicked if it wasn't a right click. (#5838)
* Only emit cardClicked if it wasn't a right click.

* Oh.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 03:32:16 +00:00
BruebachL
00095cb71c Delete later where possible. (#5842)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 03:32:01 +00:00
BruebachL
8af1f2b6d9 Implement a little "raise on enter" animation for deck preview widgets. (#5844)
* Implement a little "raise on enter" animation for deck preview widgets.

* Why does the linter need to be run twice?

* Fix build.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 03:31:47 +00:00
RickyRister
2dc1b875d2 Refactor files in src/dialogs to new Qt Slot/Signal syntax (#5846)
* Refactor to use new signal/slot syntax in src/dialogs

* add todo comment

* fix build failure

* fix build failure
2025-04-18 03:30:26 +00:00
BruebachL
653362567b Refactor Tab EDHRec into folders, add navigation for budget and GC, add card prices (#5845)
* Refactor things into more sensible folders.

* Add navigation widget for budget and game changers.

* Lint.

* Add a card price display widget.

* Qt version check.

* Lint some thangs.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-18 03:28:04 +00:00
BruebachL
ca538399f6 Improved EDHrec tab (#5840) 2025-04-17 10:10:38 -04:00
RickyRister
36f9f65798 Fix intermittent segfault in VDS sort (#5843) 2025-04-17 10:10:08 -04:00
RickyRister
2189fc0a96 Include card_info.h over card_database.h if able (#5841)
* Move a typedef to card_info.h

* Include card_info.h over card_database.h if able
2025-04-17 00:38:57 -04:00
BruebachL
854208ea0a Implement deck analytics widgets. (#5837)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-16 14:23:13 +00:00
BruebachL
67db245aea Add a button to quickly clear all filters, correctly emit signals in filter tree when clearing. (#5835)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-16 12:32:57 +00:00
BruebachL
42c56898d5 Visual Deck Editor Base (#5834)
* Visual Deck Editor.

* Lint.

* Address comments.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-16 12:02:53 +00:00
BruebachL
a55a287a9d Pull the subfilters out. (#5836)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-15 22:16:19 +00:00
RickyRister
b4024ee552 Refactor DeckViewContainer (#5830) 2025-04-15 22:10:24 +00:00
RickyRister
181bef0057 Use the common search syntax window method in visual database display (#5829) 2025-04-15 22:09:36 +00:00
github-actions[bot]
e9d05e6271 Update translation files (#5828)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-15 22:08:52 +00:00
RickyRister
15415afa9a Refactor files in src/server to new Qt Slot/Signal syntax (#5831)
* Refactor files in src/server to new Qt Slot/Signal syntax

* fix deprecation warning
2025-04-15 22:08:02 +00:00
RickyRister
728c87589f Refactor files in src/client/ui to new Qt Slot/Signal syntax (#5832) 2025-04-15 22:06:56 +00:00
RickyRister
686717e544 Refactor files in src/client/tabs to new Qt Slot/Signal syntax (#5833)
* Refactor files in src/client/tabs to new Qt Slot/Signal syntax

* Refactor DeckEditorMenu to use new signal/slot syntax

Add DeckEditorMenu as friend class to AbstractTabDeckEditor since the slots are protected

* fix build failure
2025-04-15 22:05:52 +00:00
BruebachL
c4d0921a15 Visual Database Display Tab. (#5822)
* Visual Database Display Tab.

* Address comments.

* Readd dropped method.

* Update filterTree properly in case the filter is empty after modification.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-15 01:25:49 +00:00
RickyRister
ae90b6c93f Add logging to LocalClient (#5827) 2025-04-15 01:25:17 +00:00
transifex-integration[bot]
ac1ae4fed5 Translate oracle/oracle_en@source.ts in it (#5826)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-04-14 05:32:55 +00:00
transifex-integration[bot]
a1f2617931 Translate oracle/oracle_en@source.ts in de (#5825)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-04-13 04:16:33 +02:00
ebbit1q
300a37a199 change settings entry of the cod conversion prompt to a combobox (#5801)
* change settings entry of the cod conversion prompt to a combobox

replace the two checkboxes of which one state is ignored if one is
checked with a three state combobox for better user experience

* Update dlg_settings.cpp

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-04-11 23:12:34 -04:00
ebbit1q
351c77182c put multiple printings of the same dual face/split cards in the xml (#5823) 2025-04-11 23:02:48 -04:00
Basile Clement
b214933da9 fix: Disable HTTP compression when downloading pictures (#5793)
This causes Qt to leak file descriptors and causes the "Too many open
file descriptors" error that we sporadically see, see
https://bugreports.qt.io/browse/QTBUG-135641
2025-04-11 23:01:35 -04:00
ebbit1q
9463390e80 fix client crash when server goes down during registration (#5787) 2025-04-11 23:01:14 -04:00
RickyRister
3b758962e4 Add search filter to card view window (#5791)
* refactor out search syntax help window

* add search bar to ZoneViewWidget

* implement filter logic
2025-04-11 23:00:46 -04:00
RickyRister
ad06814ac7 Fix game phases not being translated in game log (#5798) 2025-04-11 22:58:23 -04:00
BruebachL
13d18986b2 Set fixed width instead of maximum width for symbols. (#5821)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 22:38:07 -04:00
BruebachL
6171658c0c Add main and sub type as filter options, add helper functions to remove or get specific and all filters. (#5820)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 22:37:52 -04:00
BruebachL
9b5f5595b0 Add modelDirty signal, add helper functions to gather all main and sub card types. (#5819)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 22:21:02 -04:00
RickyRister
676ea0d5a7 Sort cockatrice sources alphabetically (#5818) 2025-04-09 22:20:55 -04:00
BruebachL
80b6d6a31f Properly calculate a lot of things related to these layouts. (#5817)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 12:09:04 -04:00
BruebachL
6661a5d946 Fix some display issues with settings button widget. (#5816)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 12:08:59 -04:00
BruebachL
53e9a91dc6 Emit more signals when data is changed and add utility functions to interact with a decklist in the context of cardinfoptrs. (#5815)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 12:08:54 -04:00
RickyRister
56bbd8a172 Refactor: move last token info into struct (#5808)
* add override

* refactor token info into struct

* correct default destroy value
2025-04-09 11:26:14 -04:00
BruebachL
0bd53d6dc7 Try to find the card again without providerId when searching fails during swap card. (#5814)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 11:19:21 -04:00
BruebachL
61cb3d1d7c Remove unnecessary parent argument from deck_editor_menu (#5813)
* Remove unnecessary parent argument.

* Correctly invoke new instance now.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 11:16:56 -04:00
BruebachL
e808d030db Correctly size hint card_info_picture_widget, adjust scaleFactor default and correctly parent hover-to-zoom scaled picture. (#5812)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-09 11:16:34 -04:00
RickyRister
4a68d9d3ea Use QMessageBox::question for force start confirmation (#5811) 2025-04-08 10:24:05 +02:00
BruebachL
730305f4d2 Revert source file globbing (#5799)
* Revert "Add CONFIGURE_DEPENDS to the cmake (#5739)"

This reverts commit 57b9f0e54c.

* Revert "Automatically find all files for cockatrice_SOURCES (#5716)"

This reverts commit 4a0e0ed954.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-04-07 19:32:57 +00:00
RickyRister
d17523ff17 Add confirmation dialog for force start (#5797) 2025-04-06 12:39:08 +02:00
RickyRister
195116d1de Bump to 2.11.0 for beta releases (#5796) 2025-04-06 12:27:11 +02:00
transifex-integration[bot]
92d7828a77 Translate webclient/src/i18n-default.json in it (#5790)
100% translated source file: 'webclient/src/i18n-default.json'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-04-05 13:31:46 +02:00
RickyRister
2a3b9a9a5e Fix QImage::mirrored deprecation warning (#5792) 2025-04-05 12:21:11 +02:00
transifex-integration[bot]
0e7d7ffcb2 Translate oracle/oracle_en@source.ts in it (#5786)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-04-04 03:40:14 +00:00
RickyRister
b1fca404b7 Bump to 2.10.2 for hotfix release (#5785) 2025-04-03 00:24:11 -04:00
HypersonicWalrus
b6e6328e6a Modified setup_addfirstadmin script to bring it up to date to current cockatrice_users table (#5784)
Co-authored-by: Ben Boelens <bboelens@pop-os.tailc0350.ts.net>
2025-04-03 00:18:31 -04:00
tooomm
ecf0327378 Improve list of release binaries (#5783) 2025-04-03 00:17:44 -04:00
github-actions[bot]
787c551f5f Update translation source strings (#5781)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-03 00:17:25 -04:00
RickyRister
d662152088 Change default log level to info (#5779)
* update qtlogging.ini

* bump some qCDebug to qCInfo and qCWarning
2025-04-03 00:17:10 -04:00
Basile Clement
2fcdb52157 fix: Use isRebalanced to detect Arena cards (#5778)
* fix: Use isRebalanced to detect Arena cards

In #5759 we introduced a setting (off by default) to disable the use of
Arena cards. This was done by checking the `isOnlineOnly` property of
the card, which accidentally also disabled online *printings* of cards
that otherwise exist in paper (e.g. Vintage Masters).

This PR does the same thing but uses the `isRebalanced` property
instead, which is `true` for Arena cards only and should have been used
from the start. This setting does not impact online-only printings such
as Vintage Masters. The settings is still on by default.

* Update setting to mention Alchemy rather than Arena
2025-04-03 00:16:38 -04:00
ZeldaZach
70f2a32fad Bump to 2.11.0 for beta releases 2025-03-27 21:34:03 -04:00
github-actions[bot]
37356317a4 Update translation files (#5775)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-27 21:31:05 -04:00
RickyRister
08f3a56285 Fix crash when right click floating card info window (#5773) 2025-03-27 00:54:34 +00:00
RickyRister
5af71d1c2e Hardcode default log level for FlowWidget/FlowLayout (#5769) 2025-03-26 01:23:23 +00:00
Basile Clement
1ada5ea424 fix: Always prefer local cards if available (#5762)
* Try to better reproduce pre-provider ID behavior

If "override all card art with personal preference" setting is set, look
for custom art for all sets instead of just the most preferred set.

* Warning when using both custom art and the printing selector

* QDirIterator::nextFileInfo is Qt 6.3+

* Translation
2025-03-26 01:23:09 +00:00
transifex-integration[bot]
91ee6097d2 Translate oracle/oracle_en@source.ts in it (#5770)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-03-24 22:11:47 +00:00
Zach H
a4b0cddcf8 Revert "Disable CardMenu iff no items selected (#5376)" (#5768)
This reverts commit b4036c8671.
2025-03-23 19:04:24 -04:00
RickyRister
9bc6ae1567 Fix delete action in filters not working (#5765)
* Fix delete action in filters not working

* move filterRemove under slots
2025-03-23 12:03:56 -04:00
Basile Clement
c71685b261 Add option to disable card rounding (#5760)
* Add option to disable card rounding

* Effing mocks

* format

* Get rid of cardCornerRadius property
2025-03-22 01:07:52 -04:00
Basile Clement
0ae7d01234 Hide arena only cards (#5759)
* Add settings (default: true) to ignore online-only cards

* Use QAbstractButton::toggled

Also, fix dbconverter build

* Mocks mocks mocks

* Update dlg_manage_sets.cpp

* translations

* Update dlg_manage_sets.cpp

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-03-22 01:07:42 -04:00
RickyRister
345606846f Enable shortcuts for the remaining export deck actions (#5761) 2025-03-21 02:49:02 +00:00
RickyRister
9decf78d2d Fix typo in comment about accepted decklist file formats (#5754) 2025-03-21 00:31:38 +00:00
Basile Clement
a6f2e69e1a vds: Allow editing tags more than once (#5752)
`refreshTags` is not connecting the signal to open the dialog to edit
the tags, so tags can only be edited once for a given deck.

Fix by only having the logic for creating the "Edit tags" button once
and call it from `connectDeckList`.
2025-03-21 00:31:25 +00:00
Basile Clement
76fa87c63e Fix StackZone crash when divideCardSpaceInZone overflows (#5751)
The divideCardSpaceInZone function introduced in #4930 is buggy and
sometimes returns an index that is too large for the current zone, which
causes us to call `cards.at(index)` with an `index` that's bigger than
the amount of cards.

This is the bug that #5609 intended to fix but was improperly diagnosed.
Remove part of #5609 as the cases it is guarding against (e.g. null card
pointer) cannot actually happen.
2025-03-21 00:30:46 +00:00
RickyRister
2e01dfd23a Remember past entries in "reveal card until X" window (#5755) 2025-03-21 00:29:59 +00:00
RickyRister
99376e75d6 Support exporting to decklist.xyz website (#5756)
* Support exporting to decklist.xyz

* fix typo
2025-03-21 00:28:15 +00:00
Basile Clement
be28d50997 Revert "Use native hover events (#5722)" (#5757)
This reverts commit e4f40a82a2.

This change had unintended consequences in the hover behavior, reverting
for now.
2025-03-21 00:25:20 +00:00
Basile Clement
d03f5388d4 Update translations (#5758) 2025-03-21 00:23:26 +00:00
Zach H
48123c8822 Revert "Display visual feedback of where cards will go (#5737)" (#5750)
This reverts commit a7641a571f.
2025-03-19 01:53:35 +00:00
RickyRister
0fa744f6ec Consolidate accepted decklist file extensions (#5749)
* Consolidate accepted decklist file extensions

* rename the other const
2025-03-19 01:53:14 +00:00
RickyRister
42301d4f1a Filter out non-deck files when building VDS (#5748) 2025-03-18 22:22:36 +00:00
RickyRister
6c19254abd Fix AttachTo tokens not having card info (#5747) 2025-03-18 22:22:16 +00:00
RickyRister
b5c5d221c4 Remove redundant "show unused color identities" settings (#5745)
* move setting to vds settings menu

* emit signal on change

* rename setting
2025-03-18 22:21:28 +00:00
Basile Clement
c219d8bdbb hotfix: Remove menus when closing game (#5744)
Version of #5740 that doesn't leave freed `QMenu`s lying around.
2025-03-17 22:54:16 -04:00
Basile Clement
4812508afc DeckEditor: Initialize the modified flag (#5743)
C++ does not require compilers to zero-initialize value types, so
depending on the platform (here: Linux), the deck editor starts up with
an uninitialized value in the `modified` flag, which is usually not
zero.
2025-03-17 21:43:14 -04:00
RickyRister
57b9f0e54c Add CONFIGURE_DEPENDS to the cmake (#5739) 2025-03-17 02:43:11 +00:00
RickyRister
0d2061365c Fix edit deck in clipboard clearing values (#5732)
* Fix edit deck in clipboard clearing values

* fix build failures
2025-03-16 23:30:12 +00:00
RickyRister
4d8a124822 Rename save to clipboard actions in DeckPreviewWidget (#5738) 2025-03-16 23:19:57 +00:00
Basile Clement
a7641a571f Display visual feedback of where cards will go (#5737)
This is part of the code from #4974, including an improved drag-and-drop
API and its use to display visual feedback of card destination on the
board.

It does not include the improved logic for pushing cards around as I
still need to figure out edge cases there - the logic for choosing where
cards go is not changed, so some of the artifacts described in #4817
and #4975 (particularly around multi-card) are still present.
2025-03-16 23:19:39 +00:00
BruebachL
bd28e04635 Reintroduce unused color identity opacity (#5733)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-16 23:05:38 +00:00
Basile Clement
37382dea44 Close the TabGames when closing the TabSupervisor (#5735)
* Close the `TabGame`s when closing the `TabSupervisor`

This ensures that we go through the same code path (in terms of Qt
events) when closing the whole supervisor as when closing a single tab.
Also, use the `close` event instead of the `hide` event to detect when
we are closing a game.

Fixes #5697

* Compat with old Qt versions

* Old Qt, reloaded

* Review: use hideEvent and call super
2025-03-16 23:05:04 +00:00
Basile Clement
57a8960841 Add declaration for setAttrRecur (#5734) 2025-03-16 23:02:31 +00:00
RickyRister
6b4ae8308a Reduce tag display widget spacing (#5731)
* Reduce tag display widget spacing

* Reduce bottom margin in deck dock
2025-03-16 23:02:06 +00:00
Basile Clement
2739550087 Use enum for ThemeManager brushes (#5730)
* Use enum for ThemeManager brushes

This patch introduces an enum to distinguish the different brushes that
can be set by the theme (hand, stack, etc.) and generic functions taking
the enum rather than having one copy of each function for each brush.

This is preliminary work before merging StackZone and HandZone to
simplify #4974.

* Include <array> header

* Header spacing
2025-03-16 23:01:25 +00:00
Basile Clement
4ada011632 game: Automatic update of arrow position (#5729)
Currently, zones must keep track of which cards they move in order to
manually call `updatePath` on arrows.

This patch sets the `ItemSendsScenePositionChanges` flag on
`ArrowTarget`s to automatically update arrow positions without requiring
zones to keep track of that information.
2025-03-16 22:58:06 +00:00
RickyRister
c99afe7956 Optimize cipt parsing by early returning (#5727) 2025-03-15 21:23:41 +00:00
RickyRister
b58b85dc0f Re-add old names for mana value property to oracle (#5711) 2025-03-15 19:13:13 +00:00
BruebachL
a407c8b956 Reintroduce ability to display unused mana symbol widgets. (#5726)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-15 19:11:46 +00:00
Basile Clement
1851f71850 Remove revealedCard flag from CardItem (#5723)
It is no longer used since #5254.
2025-03-15 19:09:14 +00:00
Basile Clement
e4f40a82a2 Use native hover events (#5722)
* Use native hover events

* Update cockatrice/src/game/cards/abstract_card_item.cpp

* Reorder

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-03-15 19:07:51 +00:00
Basile Clement
b9900e67a6 nix: Add development utilities to shell.nix (#5725)
- Remove hardening flags to allow debug builds (otherwise GCC complains
   because nix adds the FORTIFY_SOURCE flag, which is not compatible
   with -O0)

 - Allow ninja as build system

 - Add clang-tools dependency for LSP support
2025-03-15 19:03:26 +00:00
RickyRister
7d558edb3e Fix banner and tags not resetting on blank new deck (#5721)
* Fix bannerWidget not resetting when opening new blank deck

* also reset tags
2025-03-15 18:44:51 +00:00
RickyRister
eb4b1c2a07 Fix extra .cod in "save deck as" default name (#5720) 2025-03-15 18:44:03 +00:00
RickyRister
087f88146d Make internal updater failure message more user-friendly (#5718) 2025-03-15 05:19:07 +00:00
RickyRister
3a11ccb854 Update cipt parsing (#5712)
* refactor

* move thing out

* write unit tests

* get thing to work

* optimization?

* fix build failure
2025-03-14 21:44:13 -04:00
tooomm
068465143b Update CONTRIBUTING file (#5701)
* Update CONTRIBUTING.md

* cleanup

* Update CONTRIBUTING.md
2025-03-14 21:43:43 -04:00
tooomm
1f0846297f websocket is our default port/connection (#5679) 2025-03-14 21:43:11 -04:00
RickyRister
4a0e0ed954 Automatically find all files for cockatrice_SOURCES (#5716)
* Use GLOB_RECURSIVE to find all source files

* fix code style

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-03-14 21:42:56 -04:00
RickyRister
4b7d1ebb59 Refactor: split card_database into two files (#5715)
* make the duplicate

* restore original

* Refactor: split card_database into two files
2025-03-14 00:02:10 +00:00
RickyRister
ec536126b9 Compute deck hashes lazily (#5707)
* Calculate deck hashes lazily

* rename
2025-03-11 21:43:21 -04:00
Zach H
9b00bdcaea Merge pull request #5710 from lilyhuang-github/i18n
Change prebuild.js to allow i18n-default.json indentation to exist
2025-03-11 21:00:53 -04:00
Lily
da17c68830 Change prebuild.js to allow i18n-default.json indentation to exist 2025-03-11 19:59:20 -04:00
Zach H
badfb483b2 Merge pull request #5703 from RickyRister/5699-fix-printing
Show correct printing for top card of library
2025-03-10 20:45:05 -04:00
Zach H
fafe636b7c Merge pull request #5702 from RickyRister/rename-export-actions
Rename some save to clipboard actions
2025-03-10 20:44:33 -04:00
RickyRister
ef15aa2dcd Show correct printing for top card of library 2025-03-09 05:40:03 -07:00
RickyRister
2d44c9ad2f Rename some save to clipboard actions 2025-03-08 20:02:32 -08:00
RickyRister
0a1d0f650f Enable shortcuts for new save to clipboard actions (#5700)
* Enable shortcuts for new save to clipboard actions

* rename shortcut
2025-03-08 22:41:58 -05:00
RickyRister
2ba7c1ff9a Fix incorrect deck modified state (#5698) 2025-03-08 02:16:59 +00:00
RickyRister
0ecf6298a3 Add actions for shuffle top/bottom X cards (#5695)
* Add actions for shuffle top/bottom X cards

* fix typo

* move shuffle actions into existing menus
2025-03-08 01:48:48 +00:00
RickyRister
1d11bb19b8 Fix view bottom cards using the wrong default (#5696) 2025-03-07 16:17:40 -05:00
RickyRister
ff7f31ca33 add "Set Banner Card" action to VDS right-click menu (#5692) 2025-03-05 21:05:34 -05:00
RickyRister
6bb9ae92bf Update recently opened decks regardless of where the deck is opened from (#5691) 2025-03-05 21:04:53 -05:00
ZeldaZach
5238087ddf Parent bannerCardLabel to avoid popups 2025-03-04 22:45:53 -05:00
RickyRister
08bb18cefe Fix VDS filters not applying after refresh (#5662)
* reapply sort and filters after each reset

* fix unflatten folder still not applying afterwards
2025-03-05 00:57:28 +00:00
RickyRister
ecbdd32a2d Reduce redundant recursion in VDS (#5664)
* remove recursion from flattenFolderStructure

findChildren is already recursive by default

* only trigger the top-level updateVisibility on filter update

Every folder widget was connecting the filter update signals to their updateVisibility, but updateVisibility is already recursive.
That means a bunch of redundant updateVisibility calls happen every time a filter update signal is emitted

* reduce redundant recursion in updateVisibility

findChildren is recursive by default, so only the top-level updateVisibility needs to loop through the found children

* delete now-unused signals
2025-03-05 00:56:31 +00:00
RickyRister
2f415dcc6e Add action to Edit Deck via Clipboard (#5681)
* implement functionality in dlg

* add action to deck editor

* refactor and comments

* is this refactor even a good idea?

* remove the friend class stuff

* reorder

* add option for not annotated
2025-03-05 00:55:05 +00:00
BruebachL
8fc1b22889 Use the new mana symbols. (#5687)
* Use the new mana symbols.

* Fixup some thangs.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-05 00:53:42 +00:00
BruebachL
85a50ce9d5 Generic mana symbols. (#5685)
* Generic mana symbols.

* Update black mana symbol skull and symbol color.

* Update white mana symbol contrast.

* Update black mana symbol contrast.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-03 13:12:09 -05:00
BruebachL
b706e26a32 Fix image quality when fractional scaling is applied. (#5684)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-03 08:40:12 -05:00
BruebachL
15725c67c7 Fix banner widget buddy being uninitialized. (#5686)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-03 08:38:27 -05:00
RickyRister
d8da4473e2 add rename and delete actions to VDS right-click menu (#5683) 2025-03-03 08:35:50 -05:00
RickyRister
e1964f21de Fix memory leaks from DeckLoader usage (#5665)
* add comment

* stack allocate DeckLoader for loading tags

* deckModel now takes ownership of DeckLoader

* fix remaining

* add comment
2025-03-02 18:57:30 -05:00
RickyRister
87c5d07807 Switch current tab when opening a single-instance tab (#5651) 2025-03-02 09:30:55 -05:00
lilyhuang-github
3d0f4868df Focus tab for quit game dialog (#5670) 2025-03-02 09:29:17 -05:00
BruebachL
56bd11794e Set modification state correctly. (#5678)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-02 09:28:16 -05:00
BruebachL
e541b9d572 Silence picture loader warnings for null pixmaps by introducing checks. (#5677)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-02 09:27:52 -05:00
RickyRister
a7e8c1f59b Make BannerWidget's dropdown icon more robust (#5676)
* Make BannerWidget's dropdown icon more robust

* use isHidden

Otherwise, it doesn't work correctly if the BannerWidget is offscreen

* don't show icon if there's no buddy
2025-03-02 09:26:03 -05:00
BruebachL
ec452aabe2 Fallback to regular card name search in case the providerId one fails for the database display widget. (#5673)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-03-01 09:22:00 -05:00
RickyRister
2a9599eed8 refactor saveDeckToClipboard in AbstractTabDeckEditor (#5671)
* refactor saveDeckToClipboard in AbstractTabDeckEditor

* make deckloader functions const

* use const

* move method into DeckLoader
2025-03-01 09:21:31 -05:00
RickyRister
58a2b7ff39 Fix move to top of library shuffling an extra card (#5672)
* Fix move to top of library shuffling an extra card

* Update cockatrice/src/game/player/player.cpp

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2025-03-01 13:32:07 +01:00
RickyRister
448903efe3 Add tip of the day for Expand Card View Window (#5666) 2025-02-28 11:29:09 -05:00
BruebachL
d76e8f9146 Clamp all DeckPreviewWidget children to the card size on resize. (#5669)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-28 11:10:40 -05:00
BruebachL
3620664a9f Cache correct providerId cards on deck load (#5668)
* Implement new method for DeckList to return cardlist with providerId, a new carddatabase method to fetch a cardlist with name and providerId and changed PictureLoader to use providerId versions of cards for caching.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-28 11:10:06 -05:00
lilyhuang-github
7ff43f15fc Add hint on version downloading (#5663) 2025-02-27 23:34:32 -05:00
lilyhuang-github
e271e6ecf8 Implement advertisement to FAQ page align right (#5657) 2025-02-27 23:34:06 -05:00
BruebachL
93d28717e0 Abstract deck editor (#5646)
* Generify TabDeckEditor.

* Connect dockTopLevelChanged signals.

* Connect eventFilters.

* Remove comments.

* Fix ze build (accidentally deleted a line)

* Fix some pointer chaining.

* Be a lot saner about some signals/slots, as in, individual Deck Editor widgets now internally determine their CardInfo and then simply communicate this to the DeckEditor

* Lint.

* DeckDock can handle its own menu.

* DeckDock can handle its own decrement.

* DeckDock now notifies the deck editor on deck change, instead of individually modifying menu items and modification status.

* Rename.

* Include pixelmap generator for icon.

* Directly use an AbstractTabDeckEditor as parent.

* Move clearing database filter into signal/slot relation.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-27 10:57:58 -05:00
RickyRister
6df97a156f Change "include folder name in VDS search" into a setting (#5659)
* add new setting

* implement thing
2025-02-26 12:01:30 -05:00
BruebachL
05d06f9016 Sort Tags in TagFilterWidget (#5660)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-26 11:59:59 -05:00
RickyRister
e8574641b0 use new rename icon in replays tab (#5658) 2025-02-26 00:14:27 -05:00
RickyRister
9ac13018c6 include folder name in VDS search when folders are enabled (#5637) 2025-02-25 18:39:34 -05:00
RickyRister
06b25f1cfc add "edit tags" to VDS right-click menu (#5631)
* refactor: move openTagEditDlg up a level

* add edit tags to menu

* set DeleteOnClose attribute on menu

* fix build failure
2025-02-25 18:38:55 -05:00
RickyRister
6f5d369416 Add folder dropdown icons to VDS (#5632)
* add svg

* update pixmap cache

* get icon to work

* hide icon when not clickable

* use consistent naming

* use expandOnly because apparently that leads to higher image quality
2025-02-25 18:36:48 -05:00
RickyRister
4543038fd8 add "open in deck editor" to VDS right-click menu (#5634) 2025-02-25 18:35:56 -05:00
RickyRister
345f8b772c show error message when open deck fails in VDS (#5642) 2025-02-25 18:33:16 -05:00
RickyRister
47311b1dfd Expand/shrink card view window on double click (#5652) 2025-02-25 18:32:45 -05:00
RickyRister
21e22ed5fb Destroy VDS in game lobby once game starts (#5643)
* push back setting change

* rename method and make it public

* destroy vds on game start
2025-02-25 18:31:44 -05:00
RickyRister
0d6497fcdc Fix banner card changing when opening deck in new tab (#5649) 2025-02-25 18:30:53 -05:00
RickyRister
bfaeeb5aea fix transform from non-table zones not moving card (#5648) 2025-02-25 18:30:38 -05:00
RickyRister
b46667f6db Fix memory leak when refreshing VDS (#5647)
* parent deckLoader

* leave comment
2025-02-25 18:30:20 -05:00
RickyRister
49932ee6f8 Fix segfault when oracle reads card without "num" field (#5654) 2025-02-25 18:29:43 -05:00
RickyRister
57e37e8f4d Allow loading local xml file in oracle (#5655) 2025-02-25 18:29:27 -05:00
RickyRister
af68a95964 Add rename action to deck storage tab (#5656)
* add icon

* add rename action
2025-02-25 18:29:07 -05:00
RickyRister
959a268f91 Mark deck as modified when banner card is changed (#5641)
* Mark deck as modified when banner card is changed

* set modified inside setBannerCard
2025-02-22 13:56:48 +00:00
RickyRister
77a3515470 Always download macOS 13 version on intel macs (#5630)
* Always download macOS 13 version for intel macs

* use contains instead of regex
2025-02-18 22:27:17 +00:00
BruebachL
6a008acb2b Enhance card update error description. (#5638)
* Enhance card update error description.

* Enhance card update error description.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-18 22:20:06 +00:00
RickyRister
247e1aff83 Also parse "colors" field in xml (#5635) 2025-02-18 20:04:59 +00:00
RickyRister
3df4efebaa Revert file watcher in VDS (#5636) 2025-02-18 20:04:37 +00:00
RickyRister
5c8d1f3cff Make AttachTo tokens work from non-table zones (#5629)
* move card to play before creating attached token

* leave comment

* hardcode createCard target zone to table

To get attached token from graveyard/exile to work
2025-02-16 17:02:45 -05:00
Zach H
01d5e58a5f Change Sorting Order of User List (#5626)
* 1) Online Users > Offline Users
* 2) Admins, judge/vip/donator status ignored
* 3) Moderators, judge/vip/donator status ignored
* 4) Judges
* 5) VIPs
* 6) Donators
* 7) Everyone else
2025-02-16 04:35:28 +00:00
RickyRister
a28300ac42 add "save deck to clipboard" to VDS right click menu (#5625) 2025-02-16 04:18:47 +00:00
RickyRister
0666483756 refactor saveDeckToClipboard in TabDeckEditor (#5623) 2025-02-16 02:43:44 +00:00
RickyRister
abca5514af support right-click menu in VDS (#5622)
* support right-click menu in VDS

* move methods around
2025-02-16 02:43:20 +00:00
RickyRister
2247c66ea6 refactor how double click signal gets passed up in VDS (#5621) 2025-02-15 19:06:11 -05:00
RickyRister
3b638598ad fix load remote deck window being empty (#5613) 2025-02-15 21:05:33 +00:00
RickyRister
63e3e3ceb1 refactor and add missing log categories to ReleaseChannel (#5615)
* adding missing log categories

* refactor version lookup

* refactor OS checking code
2025-02-15 21:05:12 +00:00
BruebachL
23f4c9c4e4 Tags in deck editor (#5608) 2025-02-12 03:18:00 +00:00
Zach H
356b00e8c7 Fix Ricky Crash (#5609) 2025-02-12 01:39:41 +00:00
RickyRister
8916e049bd fix printing selector dropdown not working on mac (#5606) 2025-02-11 04:42:31 +00:00
ZeldaZach
287b4a5597 Bump to 2.10.1 2025-02-10 23:26:35 -05:00
RickyRister
d77ee00e70 Fix crash when VDS show tags is unchecked (#5605)
* Fix crash when VDS show tags is unchecked

* revert the refactor since I don't know if there's a reason they did it that way
2025-02-11 04:24:08 +00:00
ZeldaZach
18ac4c2bd4 Set Release Name: Omenpath 2025-02-10 16:41:18 -05:00
Zach H
2dc614c6b7 Add new Tips of the Day (#5603)
- Thanks WargiCorgi!
2025-02-10 21:22:26 +00:00
BruebachL
7c9bf75393 Overhaul quick settings for VDS and PrintingSelector (#5602)
* Move show folders option next to the search bar.

* Add a new settings button and settings popup, move the folder visibility checkbox there and the ability to hide tags.

* Make popup not close when interacting with child widgets.

* Fix mocks.

* Include cog icon.

* Move PrintingSelector Display options to new quick settings widget.

* Adjust size before first show so as to not overflow.

* Add option to hide card size slider in VDS.

* Qt5 support.

* Fix some warnings by containerizing layouts because addChildLayout is silly.

* Fix an incorrect slot/signal assignment.

* Correct sub-categories for settings to persist them.

* Shuffle some slots and signals around to distinguish between the tag filter and the tags on the deck preview widgets.

* Add a quick setting to draw unused color identities and center them.

* Respect the setting on startup.

* Move card size slider to the quick settings menu.

* Move PrintingSelector card size slider to quick menu, adjust other layout from other options.

* Improve layout, add a gray border.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-10 16:50:08 +00:00
transifex-integration[bot]
d1102939a2 Translate cockatrice_en@source.ts in pt_BR (#5601)
100% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-02-09 22:12:38 +00:00
Zach H
cb060f43b5 Prevent server crash if DB is down and game is attempted to be created (#5600) 2025-02-09 22:11:00 +00:00
transifex-integration[bot]
80bd783d54 Updates for project Cockatrice and language de (#5595)
* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-02-09 19:16:27 +01:00
tooomm
82b147d235 uniform artifact naming (#5592) 2025-02-09 12:40:07 +00:00
Zach H
6944f5f81c Put Logging config on MacOS (#5591) 2025-02-09 12:39:09 +00:00
danbopes
8cbfe85ed4 Fix db reconnecting issues (#5590)
See:

c1b0d50237 (diff-02a32f437187bd4cbfab74877100fee0cfc669dab2c05418681a3557c2cf73f2R109)

We should be checking to see if the query is notActive. In this case, we're literally closing and reopening the connection to the database every time `checkSql()` is called, which is called in numerous places.
2025-02-09 12:12:16 +00:00
Zach H
eb2c71d381 Fix MacOS Finding releases (#5589) 2025-02-09 02:26:04 -05:00
RickyRister
86161185d9 Use local-aware compare in VDS file name sort (#5588) 2025-02-09 04:38:48 +00:00
RickyRister
79bf3adb2a Re-sort decks in VDS after toggling show folders (#5587) 2025-02-09 04:38:22 +00:00
Zach H
07ca243d48 Update QT_LOGGING_CONF if not set (#5578) 2025-02-08 16:10:45 +00:00
Zach H
edaca772c5 Support logging config on install (#5577)
* Support logging config on install

* Support logging config on install
2025-02-08 16:10:37 +00:00
ZeldaZach
b30b72b7c3 Fix building & logging out 2025-02-07 14:19:53 -05:00
RickyRister
57eab3d48a turn off flow_widget logger (#5576) 2025-02-07 15:36:41 +00:00
RickyRister
2c6e7d4d3a Add option to hide folder structure in Visual Deck Storage (#5575) 2025-02-07 15:36:24 +00:00
RickyRister
9ec621a1ae fix wrong size flag bounding rect on linux (#5573)
* fix flag bounding box on linux

* use the non-deprecated macro
2025-02-07 06:21:56 +00:00
RickyRister
23223e10b5 actually delete VDS when hiding it in game lobby (#5572) 2025-02-07 05:20:42 +00:00
github-actions[bot]
94129607e5 Update translation source strings (#5571)
Co-authored-by: github-actions <github-actions@github.com>
2025-02-07 04:59:23 +00:00
RickyRister
d951b082c4 Add setting to hide visual deck storage in game lobby (#5570) 2025-02-06 13:44:33 +00:00
RickyRister
1ee0e87ba7 remove debug log that was accidentally left in (#5569) 2025-02-06 13:43:37 +00:00
Zach H
67091fff9c Fixup custom theme image loading (#5568) 2025-02-06 13:40:10 +00:00
Zach H
9b4f51d1e4 Increase Icon Size in User Lists (#5567) 2025-02-06 05:51:19 +00:00
Zach H
a6649d5401 Add Judge Pawns (+ Resize Donator Pawns) (#5566) 2025-02-06 05:51:01 +00:00
RickyRister
b509eed3e0 support shortcuts for tab menu actions (#5564)
* support shortcuts for tab menu actions

* refactor

* add migration
2025-02-06 04:00:43 +00:00
RickyRister
12ae7a9eeb Ignore unknown shortcut names in settings (#5565) 2025-02-06 04:00:31 +00:00
fluidvanadium
e6e3333673 Deck limit (#5559)
* increased MAX_FILE_LENGTH

* set MAX_FILE_LENGTH to about 2 megabytes
2025-02-04 22:22:15 +00:00
RickyRister
218ed726b6 Fix wrong position and scaling of svg pixmaps when zoomed out (#5563)
* fix scaling for player icon profile pic

* fix scaling for other svgs
2025-02-04 22:22:05 +00:00
RickyRister
0503fe589c fix playericon missing in local games (#5562) 2025-02-04 05:53:52 +00:00
Zach H
e599c6bdac Mods/Admins/PrivLevels not subject to server idle timeout policy (#5561) 2025-02-04 05:20:20 +00:00
Zach H
c2292c11a6 Support Purple Heart for Donators (#5560) 2025-02-04 05:06:05 +00:00
RickyRister
ec9feb9f50 fix wrong size flag bounding rect on windows (#5556)
* fix wrong size flag bounding rect on windows

* fix the values
2025-02-03 05:43:58 +00:00
RickyRister
9680e47bbc Deprecate userlevels icons (#5555)
* map old info to colors

* move caching up a level

* delete userlevels folder

* remove default vip color
2025-02-03 05:43:48 +00:00
RickyRister
f782bd709a preserve image quality when scaling svg (#5554)
* preserve image quality when scaling svg

* fix missing colorless counter

* do it in a way that doesn't cause warnings to be logged
2025-02-03 02:50:21 +00:00
RickyRister
c00b41f3bd add logging category for remote_client (#5553)
* add logging category for remote_client

* remove ifdef QT_DEBUG
2025-02-03 01:57:34 +00:00
BruebachL
94e2d64e55 Update sort order on VDS load. (#5552)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-02 20:16:38 +00:00
Zach H
4535a70b57 Define qtlogging.ini location (#5551) 2025-02-02 19:27:14 +00:00
BruebachL
6c1b7c83ec Debounce writing the setting to cache when adjusting card sizes. (#5550)
* Debounce writing the setting to cache when adjusting card sizes.

* Lint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-02 18:45:26 +00:00
Zach H
f0adafb275 Reconnect Servatrice if DB Connection Dies (#5548) 2025-02-02 18:25:01 +00:00
BruebachL
9dd60d74d1 Hotfix VDS sizing scrollArea widget incorrectly when created while not visible by setting size in showEvent (#5547)
* Only resize on folder widget to make sure it doesn't squish the loading indicator.

* Clamp scrollArea widget to viewport width on showEvent to prevent widget being instantiated with wrong width when not visible.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-02-02 17:36:56 +00:00
RickyRister
1de09deb59 Fix size and image quality issues with new user icons (#5546) 2025-02-02 15:08:23 +00:00
BruebachL
a0b52ce450 Implement folder support for VDS. (#5545) 2025-02-02 15:08:04 +00:00
RickyRister
95cea0f191 Add custom server-side pawn colors (#5543) 2025-02-02 03:25:25 +00:00
RickyRister
0fc05e15cd pass ServerInfo_User down the chain (#5542) 2025-02-02 01:04:49 +00:00
RickyRister
26c0cdc072 Make settings window scrollable (#5539) 2025-02-01 05:03:30 +00:00
RickyRister
b1b48d50f3 move deck conversion settings into deck settings group (#5538) 2025-02-01 04:32:12 +00:00
Zach H
349c18aa6a Fix Crash with "c:" in deck editor (#5537) 2025-02-01 04:32:01 +00:00
Zach H
b956fd4bac Fix windows deck searching (#5536) 2025-02-01 04:13:46 +00:00
RickyRister
34e0130b90 fix view transform button disappearing on click (#5535) 2025-02-01 03:31:09 +00:00
BruebachL
33d8edeb9a Get file format from name. (#5532)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-27 19:41:29 -05:00
RickyRister
5d1e905255 remove refreshTree call in remote model's constructors (#5533) 2025-01-27 19:40:59 -05:00
RickyRister
51c542aa04 Disable add to deck submenu if no deck editor tabs are open (#5530)
* refactor

* just have the deck name

* clean up submenu parenting

* disable add to deck menu if no deck editor tabs are open
2025-01-26 10:24:09 -05:00
BruebachL
4d791f4d7a Edhrec tab (#5512)
---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-01-25 22:29:27 +00:00
RickyRister
aee68f8b00 add missing override and explicit specifiers in common (#5527) 2025-01-25 14:06:03 +00:00
RickyRister
b911ea6e28 add missing override and explicit specifiers in src/server (#5526) 2025-01-25 14:05:25 +00:00
RickyRister
a41e7c75c1 add missing override and explicit specifiers in src/deck and src/utility (#5525)
* add missing override and explicit specifiers in src/deck

* add missing override and explicit specifiers in src/utility
2025-01-25 14:05:00 +00:00
RickyRister
9f729bf636 add missing override and explicit specifiers in src/dialogs (#5524) 2025-01-25 14:04:26 +00:00
RickyRister
42e4c14a82 add missing override and explicit specifiers in src/client (#5523) 2025-01-25 14:03:54 +00:00
Zach H
37a0c00b3f Support right-click on game list menu (#5522) 2025-01-25 14:03:29 +00:00
Zach H
f6c31bf901 Invert "Show" games, so all games are visible by default (#5521) 2025-01-25 07:03:36 +00:00
Zach H
b48fe8b99c Better capitalization & Deck open first (#5520) 2025-01-25 05:45:44 +00:00
RickyRister
19b758591b Allow offline Replays tab (#5519) 2025-01-25 05:44:48 +00:00
Zach H
ec6a23de56 Support more indices (#5505)
* Support more indices

* Support more indices
2025-01-25 04:16:41 +00:00
BruebachL
ce416df3fb Add a dialog to prompt user to convert to .cod format if trying to apply tags to a .txt deck. (#5514)
* Add a dialog to prompt user to convert to .cod format if trying to apply tags to a .txt deck.

* Lint mocks.

* Address comments, move dialog to appropriate folder.

* Unlint.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-25 03:20:30 +00:00
BruebachL
4e96157091 Flow Layout fixes (#5515)
* Flow Layout fixes.

* Remove some comments.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-25 03:17:39 +00:00
RickyRister
f428148f64 Allow offline Deck Storage tab (#5518)
* make deck storage tab no longer close on disconnect

* add method for clearing remote decklist model

* handle connect/disconnect in deck storage tab
2025-01-25 03:16:40 +00:00
RickyRister
e8b1e3ef0c don't autoclose card view if single card gets dragged into same zone (#5517)
* rename canResize param to toNewZone

* pass toNewZone down

* don't autoclose card view if card gets dragged into same zone
2025-01-25 02:08:28 +00:00
RickyRister
085f0dd26c reduce unnecessary CardItem creation in ViewZone addCard process (#5513) 2025-01-24 05:13:08 +00:00
BruebachL
1d2ab8d3d3 Convert lastLoaded timestamp into proper QDateTime for correct comparison. (#5506)
* Convert lastLoaded timestamp into proper QDateTime for correct comparison.

* Reintroduce null check.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-22 12:58:19 +00:00
RickyRister
66e2e7a473 add missing override and explicit specifiers to all classes in src/game (#5511) 2025-01-22 12:57:56 +00:00
RickyRister
af161f00b7 Remove spacing in CardInfoWidget caused by invisible view transformation button (#5510) 2025-01-22 12:55:21 +00:00
RickyRister
420cca2402 fix after merge to use ZoneView::close (#5509) 2025-01-20 22:43:05 -05:00
RickyRister
97fdf11c8f Add setting to auto close card view when empty (#5502) 2025-01-21 03:08:01 +00:00
RickyRister
aeb1b9fb4f Fix segfault when game is closed while card view window is open (#5507) 2025-01-21 03:06:55 +00:00
RickyRister
b004e91aa4 fix segfault when bottoming card in deck view (#5508) 2025-01-21 03:06:00 +00:00
Zach H
090cc8c144 Support more indices (#5503) 2025-01-20 01:42:24 -05:00
tooomm
0467fae51b Add label to swap button (#5501) 2025-01-19 17:26:25 +00:00
BruebachL
aa24502129 Move logging from QDebug to QCDebug and introduce LoggingCategories. (#5491)
* Move logging from QDebug to QCDebug and introduce LoggingCategories.

* Lint.

* Unlint like one change.

* Remove .debug category since this is autofilled by Qt and used to differentiate between QCDebug and QCWarning and QCError.

* Uncomment defaults, include main category.

* Make PictureLoader logging a bit more useful.

* Lint...?

* Address comments.

* Clean up some unnecessary classes in logging statements.

* Add a new message format to the logging handler.

* Lint.

* Lint.

* Support Windows in Regex

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2025-01-19 13:14:23 +00:00
BruebachL
e752578d15 Add a button to easily view the transformed version of a card. (#5498)
* Add a button to easily view the transformed version of a card.

* Minor reword

* Minor fix

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2025-01-19 12:59:53 +00:00
BruebachL
724db755af Hide load from remote button in local games (#5499)
* Hide load from remote button in local games.

* Minor fix

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2025-01-19 12:59:33 +00:00
BruebachL
ec0caaf421 Give deckList a signal to emit when the tags change and hook up the display widget to that. (#5497)
* Give deckList a signal to emit when the tags change and hook up the display widget to that.

* Reload from file when loading a visual deck to ensure latest changes propagate to the decklist.

* Eliminate loadVisualDeck and use loadDeckFromFile instead.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-19 12:32:39 +00:00
Zach H
55b490ade0 Generate PDBs for Windows Builds (#5494) 2025-01-18 07:54:01 +00:00
ZeldaZach
1392bdd258 Fix Windows 7 Crash Dump 2025-01-18 00:33:30 -05:00
Zach H
648c96ac3d Allow Moderators to Grant Replay & Activate in TabAdmin (#5492) 2025-01-18 02:23:24 +00:00
Zach H
d3a1538af3 Fix Windows Crash Reporter (#5493)
* Fix Windows Crash Reporter

* Fix NSIS template
2025-01-18 02:23:05 +00:00
RickyRister
2bc71095dd get UserListProxy from TabSupervisor instead of passing it in the constructor (#5490) 2025-01-17 15:27:52 +00:00
RickyRister
92a903b035 fix chat messages not showing in the client (#5489) 2025-01-17 03:11:13 -05:00
transifex-integration[bot]
cd373edf3d Translate cockatrice_en@source.ts in pt_BR (#5487)
100% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-17 07:41:59 +00:00
RickyRister
ca2d438cda fix sideboard not being re-locked on load deck (#5486) 2025-01-17 05:25:01 +00:00
RickyRister
c148c8df7f replace foreach macro with standard for each loop (#5485) 2025-01-17 05:18:15 +00:00
Zach H
0cbad25385 General Cleanup of Unused Assets (#5484) 2025-01-17 05:08:53 +00:00
ZeldaZach
7b94d5d501 Better sanitization of pointers 2025-01-17 00:05:08 -05:00
RickyRister
ee938342f3 Change visible buttons in game lobby depending on if deck is loaded (#5480)
* rename method

* delete unused method

* refactor

* increase margins

* change visible buttons depending on if deck is loaded

* correctly send the ReadyStart command on unload

* fix force start button still being visible
2025-01-17 04:52:33 +00:00
Zach H
cb64a5eea0 Populate TabAccount if reopened (#5483) 2025-01-17 04:28:18 +00:00
BruebachL
80165c28a9 Add options to include/exclude set name and collector number during clipboard import/export. (#5482)
* Add options to include/exclude set name and collector number during clipboard import/export.

* Missing parentheses in action label.

* Revert the silliest lint in the world.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-17 02:38:01 +00:00
ZeldaZach
315c224f24 Fix crash on add/edit tags 2025-01-16 00:54:34 -05:00
ZeldaZach
55f624b634 Hide Loading Msg in VDE when not relevant 2025-01-16 00:06:25 -05:00
ZeldaZach
82b257b589 Fix index 0 tab not functioning 2025-01-15 23:55:51 -05:00
RickyRister
a51ca9f9cb fix incorrect values in deck editor tab's views menu on init (#5479) 2025-01-16 04:06:56 +00:00
RickyRister
7e19b52926 fix tab-specific menus not present when tab is opened on startup (#5478) 2025-01-16 04:04:15 +00:00
RickyRister
2d02955f8b delete overloaded signal in PendingCommand (#5477)
* remove overloaded signal since no one was using it

* remove usages of qOverload

* turns out new slot/signal syntax can ignore extra params
2025-01-15 13:16:06 +00:00
RickyRister
3a740f0bde group printings together when sorting in card reveal window (#5476) 2025-01-15 13:14:47 +00:00
RickyRister
455d68f9ea Move UserlistProxy to src/server/user and fix capitalization (#5475)
* move file

* fix capitalization
2025-01-15 13:14:16 +00:00
RickyRister
2def02e140 Remember which tabs are open between sessions (#5467) 2025-01-15 06:10:24 +00:00
RickyRister
23bd18a04c fix segfault that happens when account tab is closed (#5474) 2025-01-15 06:10:03 +00:00
RickyRister
d09b9eb533 Rename UserList class to UserListWidget (#5473) 2025-01-15 03:07:36 +00:00
github-actions[bot]
25caae6d0f Update translation files (#5472)
Co-authored-by: github-actions <github-actions@github.com>
2025-01-14 20:28:36 -05:00
BruebachL
a717e715b6 Introduce null checks, add setShortName and collectorNumber to deckList export. (#5471)
* Introduce null checks, add setShortName and collectorNumber to deckList export.

* Lint.

* Lint again.

* Lint AGAIN.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 10:54:15 -05:00
BruebachL
c079715c46 Properly check if a duplicate already exists in the list, no longer break loop. (#5470)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 10:12:53 -05:00
BruebachL
f6c1253e84 Add a placeholder label to indicate database is still loading. (#5469)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 14:19:32 +00:00
BruebachL
8462b6e906 Minor fix to sorted list reconstruction to fix duplication of cards in printing selector. (#5468)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 13:59:53 +00:00
RickyRister
cca82f59eb Don't re-sort VisualDeckStorage every time it gets tabbed to (#5466)
* remove showEvent

* refresh cards on init

* fix sort order not immediately being set
2025-01-14 13:58:44 +00:00
RickyRister
81662b7fec Reduce spacing in visual deck storage (#5465)
* move thing

* reduce spacing
2025-01-14 13:52:46 +00:00
RickyRister
d2c2128e9b Rename TabUserLists to TabAccount (#5464)
* rename class

* rename variables
2025-01-14 13:50:08 +00:00
RickyRister
686645c1e4 refactor DeckViewContainer into own file (#5455)
* cut-and-paste

* remove some includes

* move refreshShortcuts

* move deck_view into src/game/deckview

* move deck_view_container to src/game/deckview

* fix build failure
2025-01-14 07:00:09 +00:00
ZeldaZach
9df71fe1e8 Update VCPkg 2025-01-14 01:47:05 -05:00
Zach H
6309e7e318 Fix Windows FlowWidget duplication (#5460)
- Delete the item widget right away, as the delay is too great with deleteLater
2025-01-14 04:33:21 +00:00
Zach H
767e83c879 Disable Force Start for host on load (#5462)
- Fix #5444
2025-01-14 04:33:04 +00:00
RickyRister
78d54b0ef2 Remove unnecessary deck_view.h includes (#5461)
* remove unnecessary deck_view imports

* remove some more imports
2025-01-14 04:32:53 +00:00
BruebachL
497e4f1be0 Add loadFromFileAsync to deckLoader and connect VisualDeckStorageWidget to it. (#5456)
* Add loadFromFileAsync to deckLoader and connect VisualDeckStorageWidget to it.

* Address comments.

* Lint.

* Unlint something.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 03:02:33 +00:00
BruebachL
6072df3522 .txt decks reportedly don't get saved when they're loaded. (#5459)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-14 01:51:41 +00:00
BruebachL
ba89495dc0 Refactor Picture Loader (#5457) 2025-01-13 18:52:54 +00:00
RickyRister
a417b049da Make Visual Deck Storage tab be managed by TabSupervisor (#5453)
* remove closeRequest override

* remove visualDeckStorage from WindowMain

* manage visual deck storage in TabSupervisor

* open on startup

* refresh vds on db load finish

* open deck editor tab first on startup
2025-01-13 18:42:58 +00:00
github-actions[bot]
883f1a5c11 Update translation source strings (#5454)
Co-authored-by: github-actions <github-actions@github.com>
2025-01-13 11:08:32 -05:00
BruebachL
dd8ac14f99 Visual deck storage v2 (#5427)
* Restore some button states (ready/sideboard locked) to sensible defaults when unloading a deck.

* Update last loaded timestamp in decklist file and then restore original last modified timestamp if a user requests a deck load.

* Add some todos.

* Loading a deck from local file dialog should swap out scenes, enable unload button.

* Lint.

* Shuffle some classes and signals around.

* More sort options, sort widgets directly.

* Banner cards should respect providerIds.

* Properly updateSortOrder on load.

* Add the color identity to the Deck Preview Widget.

* Properly set sort indices.

* Change replace visualDeckStorageWidget with deckView to be in deckSelectFinished so that it also works on remote deck load.

* Include settings for unused color identities display.

* Change opacity scaling.

* Overload for Qt.

* Lint.

* Lint.

* Include QMouseEvent

* Template because MacOs.

* Include a quick filter for color identities.

* Include a quick filter for color identities.

* Save some space.

* Refactor DeckPreviewWidgets to reside in their own folder.

* Add Deck Loader logging category.

* Introduce a tagging system.

* Add some more default tags.

* Even more default tags.

* Lint.

* Lint a comma.

* Remove extra set of braces.

* Lint some stuff.

* Refresh banner cards when tags are added.

* Lint.

* Wrestle with Qt Checkboxes.

* Lint.

* Adjust some sizes, relayout.

* Address comments.

* Lint.

* Reorder kindred types.

* Add a search bar for tags.

* Remove close button (for now) and change "Add tags ..." to "Edit tags ..."

* Retranslate window title for Deck Tag Manager Dialog.

* Style tag addition widget to be consistent.

* Lint.

* Override paintEvent.

* Override sizeHint

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-12 17:46:22 -05:00
RickyRister
9bd024d39f Make all tabs closable; add tabs menu (#5451)
* make closeRequest call close by default

* make all tabs closable by default

* closeRequest instead of deleteLater on stop

* null out pointer on destroy

* no need to manually null out the tabs anymore

* comment

* pass tabsMenu into ctor

* comment

* implement tabs menu

* fix segfault on close (again)

* remove deck editor action from WindowMain
2025-01-12 16:15:19 -05:00
transifex-integration[bot]
e4611a8616 Translate cockatrice_en@source.ts in en_US (#5452)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-12 12:41:05 -05:00
RickyRister
3f41e5dd77 don't close replay tabs and do close message tabs on disconnect (#5450) 2025-01-12 02:47:36 -05:00
RickyRister
a6fc88c79a Always set TabSupervisor as parent in Tab subclasses (#5449)
* refactor closeTab

* always set tab parent to tabSupervisor

* set tabSupervisor parent

* use close instead of deleteLater

* be more clear about overloads
2025-01-12 02:34:11 -05:00
transifex-integration[bot]
3a4ec1062b Translate cockatrice_en@source.ts in pt_BR (#5448)
100% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-11 23:41:57 -05:00
RickyRister
7347ba88ac fix segfault on disconnect (#5447)
* add new param to closeRequest

* don't emit signals in dtors

* send closeRequest

* fix build failure

* fix build failure

* see if we can get away with the overloaded triggered

* fix build failure
2025-01-11 22:19:45 -05:00
tooomm
3b544a36a8 Fix button label (#5441) 2025-01-11 21:28:23 -05:00
RickyRister
2851d0c7e6 add override specifier to tab subclasses (#5445) 2025-01-11 21:28:02 -05:00
transifex-integration[bot]
2b296badea Translate cockatrice_en@source.ts in zh-Hans (#5446)
100% translated source file: 'cockatrice_en@source.ts'
on 'zh-Hans'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-11 21:27:00 -05:00
ZeldaZach
a12c4ee909 Fix MacOS Builds for Non-Main Repo PRs 2025-01-11 21:21:11 -05:00
ZeldaZach
7db9c9115e Fix SoundEngine on Windows (again) 2025-01-11 00:19:00 -05:00
ZeldaZach
503985a080 Initialize audioOutput for SoundEngine 2025-01-11 00:12:32 -05:00
RickyRister
9f466162b0 disable starting life total edit in game information window (#5440) 2025-01-10 23:14:46 -05:00
Zach H
8bea3f8997 Fix sounds on Qt6 (#5439) 2025-01-10 23:10:47 -05:00
RickyRister
1a3df84f0a fix segfault on exit if any closable tabs were open (#5435) 2025-01-10 17:27:26 -05:00
Zach H
2b3c47148e GHA MacOS Only Sign/Notarize if self repo (#5437) 2025-01-10 16:46:05 -05:00
transifex-integration[bot]
59ca4397e2 Translate oracle/oracle_en@source.ts in zh-Hans (#5436)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'zh-Hans'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-10 08:22:58 -05:00
transifex-integration[bot]
98266b0739 Translate oracle/oracle_en@source.ts in yue (#5434)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'yue'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-10 08:22:48 -05:00
Zach H
5a82ff106d Update VCPkg (#5433) 2025-01-09 23:23:00 -05:00
Zach H
2194430019 Sign macOS Releases (#5396) 2025-01-09 22:32:53 -05:00
RickyRister
1f11015a2f Refactor files in src/utility and src/deck to new Qt Slot/Signal syntax (#5432)
* refactor in src/utility

* refactor in src/deck

* fix build failure
2025-01-09 06:33:20 -05:00
RickyRister
c3421669d5 Refactor files in src/game to new Qt Slot/Signal syntax (#5431)
* fix signals in CardDatabaseParser

* update remaining signals

* cleanup

* wait this was always just broken

* fix build failure

* fix build failure

* fix build failure
2025-01-09 06:32:25 -05:00
RickyRister
6e8adddc6d Refactor tab_supervisor to new Qt Slot/Signal syntax (#5430)
* Refactor tab_supervisor to new Qt Slot/Signal syntax

* fix build failure
2025-01-09 06:26:42 -05:00
RickyRister
22a6ded4f0 reduce vertical spacing in visual deck storage (#5422) 2025-01-09 06:25:40 -05:00
transifex-integration[bot]
0d7669db2c Translate cockatrice_en@source.ts in yue (#5428)
100% translated source file: 'cockatrice_en@source.ts'
on 'yue'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-08 19:23:49 -05:00
transifex-integration[bot]
9526bca168 Translate cockatrice/cockatrice_en@source.ts in de (#5429)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-08 19:23:38 -05:00
transifex-integration[bot]
0683431f35 Translate cockatrice_en@source.ts in en_US (#5426)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-06 17:31:14 -05:00
github-actions[bot]
70790264b8 Update translation source strings (#5425)
Co-authored-by: github-actions <github-actions@github.com>
2025-01-06 12:42:46 -05:00
transifex-integration[bot]
c8a68c83e3 Translate cockatrice_en@source.ts in yue (#5424)
100% translated source file: 'cockatrice_en@source.ts'
on 'yue'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-06 12:38:58 -05:00
RickyRister
23171f79d0 Refactor window_main to new Qt Slot/Signal syntax (#5423) 2025-01-06 12:38:44 -05:00
RickyRister
b7f05a12a3 get swap cards button to work with multi-selections (#5421) 2025-01-05 22:44:40 -05:00
Zach H
6078dd092a Support viewing the bottom X cards of library (#5410)
* Get cardIds to update properly in bottom view (#5414)

* Get bottom view to update properly when card is inserted into known portion (#5415)

---------

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2025-01-05 21:17:18 -05:00
BruebachL
81b85e97df Extend decklist parsing (#5316)
* Extend the decklist parsing from clipboard to also support SetName, CollectorNumber and Foil Status.

* Q_UNUSED foil for now but keep parsing logic for future PR's/compatibility.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-05 21:07:17 -05:00
RickyRister
cc16b8779c improve shortcut search to split by word (#5416) 2025-01-05 19:19:00 -05:00
BruebachL
62f7c7f9ce New visual deck storage (#5290)
* Add TabDeckStorageVisual

* Visual Deck Storage

* Add BannerCard to .cod format, use it in the visual deck storage widget.

* Show filename instead of deckname if deck name is empty.

* Lint.

* Don't delint cmake list through hooks.

* Add deck loading functionality.

* Open Decks on double click, not single click.

* Void event for now.

* Fix build issue with overload?

* Fix build issue with overload?

* Include QDebug.

* Turn the tab into a widget.

* Move the signals down to the widget, move the connections and slots up to the parent widgets.

* No banner card equals an empty CardInfoPtr.

* Add an option to sort by filename or last modified.

* Flip last modified comparison.

* Lint.

* Don't open decks twice in the storage tab.

* Fix unload deck not working by showing/hiding widgets instead of adding/removing to layout.

* Add a search bar.

* Add a card size slider.

* Lint.

* Lint.

* Lint.

* Fix settings mocks.

* No need to QDebug.

* No need to QDebug.

* Member variable.

* Member variable.

* Non-lambda.

* Change set to list conversion.

* Specify overload.

* Include MouseEvent

* Adjust font size dynamically.

* Add an option to show the visual deck storage on database load.

* Fix the close button not working on the tab, add an option to launch the visual deck storage tab to Cockatrice menu.

* Override virtual functions.

* Correct tab text.

* Add a setting to remember last used sorting order for visual deck storage widget.

* Update banner card combo box correctly.

* Fix mocks.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2025-01-05 18:12:20 -05:00
BruebachL
7496e79e8c Add a button to swap the card between mainboard and sideboard to the DeckEditor (#5175)
* Add a button to swap the card between mainboard and sideboard to the deck editor.

* Add new icon to cockatrice.qrc and force update.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-05 17:57:37 -05:00
RickyRister
b8cf3e2cab add ctrl enter as shortcut for ok in load deck from clipboard (#5417) 2025-01-05 17:41:03 -05:00
RickyRister
93fab3d78f Remember last opened directory when loading decks (#5418)
* remember last directory when loading deck

* move shared code into new dlg class
2025-01-05 17:40:20 -05:00
BruebachL
9c38c9ed1b Differentiate logging in order to silence certain modules. (#5419)
* Differentiate logging in order to silence certain modules.

* Lint cmake.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-01-05 17:38:51 -05:00
RickyRister
38e99f2e87 implement /card command (#5413) 2025-01-04 02:07:43 +00:00
RickyRister
68226786a2 don't redraw PrintingSelector's FlowWidget unless cards actually changed (#5392) 2025-01-04 01:49:54 +00:00
RickyRister
455cd9717a add menu action to open settings folder (#5412) 2025-01-04 01:49:41 +00:00
RickyRister
fa79c5c36a populate default debug.ini with more values (#5411)
* populate default debug.ini with more values

* move the default debug.ini to a resource
2025-01-03 20:50:30 +00:00
RickyRister
0402d4b853 add debug setting to load deck and ready on join (#5409)
* new property

* refactor deck loading to new method

* another new method

* works now
2025-01-02 17:08:51 -05:00
RickyRister
8a427955e7 Add debug setting to start local game on startup (#5408)
* new properties

* refactor

* start local game on startup

* disable autoconnect
2025-01-02 09:51:59 -05:00
RickyRister
bb4214e28a Make SettingsManager params const ref (#5405)
* pass settingsPath by const ref

* pass params by const ref

* cleanup
2025-01-02 00:33:37 -05:00
RickyRister
f924b04efd add debug settings; option to show cardIds (#5404)
* add debug settings; option to show cardIds

* pass param by const ref

* change group structure again

* create debug.ini if not exists
2025-01-02 00:32:58 -05:00
transifex-integration[bot]
62f60867a9 Translate cockatrice_en@source.ts in pt_BR (#5407)
100% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-02 00:32:29 -05:00
transifex-integration[bot]
b5844f1244 Translate cockatrice/cockatrice_en@source.ts in it (#5406)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2025-01-01 22:28:42 -05:00
ryder052
8c0093d453 Crashfix for opening Deck editor (#5403)
* CardDatabase::getCards() no longer copies the whole database

---------

Co-authored-by: Jakub Mrowinski <ryder052@outlook.com>
2025-01-01 19:25:04 -05:00
RickyRister
34df4cd060 support multi-select in deck editor (#5397)
* support multiselect in deck editor

* fix crash

* don't reset selection after each action

* maintain old reselecting behavior when changing cards from left side

* fix crash for real (probably)

* maintain reselection behavior when deleting single selection
2025-01-01 00:43:47 -05:00
Zach H
99eea3a662 Improve Database Backup Speed (#5400)
* Support better indexes for Servatrice

- Prevent searching only on msg for logs
2025-01-01 00:28:57 -05:00
Zach H
6e1047032d Keep card annotations on stack (#5399) 2024-12-31 14:08:25 -05:00
transifex-integration[bot]
b2a8748bc6 Translate cockatrice/cockatrice_en@source.ts in it (#5398)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-31 13:57:14 -05:00
transifex-integration[bot]
ded6d5b8eb Translate cockatrice/cockatrice_en@source.ts in de (#5395)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-30 19:18:00 +00:00
transifex-integration[bot]
832842c20c Translate cockatrice_en@source.ts in en_US (#5394)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-30 17:42:32 +00:00
github-actions[bot]
b43e4ae469 Update translation source strings (#5393)
Co-authored-by: github-actions <github-actions@github.com>
2024-12-30 12:38:30 +00:00
Zach H
026afeb885 Support auto-reconnect for Servatrice (#5391)
- Fix #5022
2024-12-30 04:35:32 +00:00
RickyRister
b6793a5e01 fix cards having the wrong printing if rejoin game before card db finishes loading (#5390)
* rename cardInfoUpdated to refreshCardInfo and make it public

* refresh card infos when db finishes loading
2024-12-30 03:25:11 +00:00
moryall
d231264a16 Update Dockerfile Ubuntu version to newest LTS (#5108)
* Update Dockerfile to non-outdated Ubuntu version

1. Updated image to jammy as it is still in it's LTS window. Didn't go with 24.04/Noble as it released after latest version of cockatrice released.
2. Had to add new ARG
3. No qt5-default library, so replaced with qt5-qmake

* Update Dockerfile

Upped from Jammy -> Noble
Upped from Qt5 -> Tt6

* Update Dockerfile - new port

Added Port 4748 for new features

* Update Dockerfile

Changed Noble - > 24.04

* indentation

* remove unused dependencies

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2024-12-30 01:54:18 +00:00
ryder052
6e02bdec2e Fix crash on replay list sorting, fix error popups on win debug (#5388)
* Fix annoying popups on start

* Fix replay list item parent index calculation #5311

---------

Co-authored-by: Jakub Mrowinski <ryder052@outlook.com>
2024-12-30 01:10:12 +00:00
transifex-integration[bot]
cfaadc40b1 Translate cockatrice_en@source.ts in pt_BR (#5386)
100% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-30 00:57:51 +00:00
transifex-integration[bot]
93475b43a5 Updates for project Cockatrice and language it (#5387)
* Translate cockatrice/cockatrice_en@source.ts in it

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

* Translate webclient/src/i18n-default.json in it

100% translated source file: 'webclient/src/i18n-default.json'
on 'it'.

* Translate oracle/oracle_en@source.ts in it

100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-30 00:57:43 +00:00
RickyRister
3348e051a1 update recently opened decks when saving a new deck (#5389) 2024-12-30 00:57:31 +00:00
Zach H
dad1aea128 Show correct art on middle mouse popup (#5385) 2024-12-29 23:24:32 +00:00
Zach H
dec001114a Clone now clones the exact printing, when possible (#5384) 2024-12-29 23:24:20 +00:00
ZeldaZach
1ce7b9f7de Update number when 'Reveal top cards of library' used 2024-12-29 16:31:13 -05:00
Zach H
2ff99f12d8 Require Admin Permissions to install Cockatrice Windows (#5383)
Fix #5382
2024-12-29 16:22:39 +00:00
tooomm
6679705254 Simpler naming (#5381) 2024-12-29 15:41:30 +00:00
transifex-integration[bot]
7eafac5b1a Translate cockatrice_en@source.ts in en_US (#5377)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-29 07:11:02 +00:00
RickyRister
ac3aa949ad add "view related cards" right click menu to card info widget (#5375) 2024-12-29 06:11:12 +00:00
Zach H
b4036c8671 Disable CardMenu iff no items selected (#5376)
- Fix #4372
2024-12-29 06:10:27 +00:00
github-actions[bot]
4e0de1c066 Update translation source strings (#5373)
Co-authored-by: github-actions <github-actions@github.com>
2024-12-29 03:37:53 +00:00
RickyRister
f32890916d don't disable autoconnect on disconnect (#5372)
* don't disable autoconnect on disconnect

* update autoConnect on clicking the checkbox
2024-12-29 03:07:00 +00:00
Zach H
24a0dac420 Fix Windows Portable Crash (#5371) 2024-12-29 03:02:52 +00:00
RickyRister
716bc00533 fix "forgot password" closing connection dialogue on cancel (#5369) 2024-12-29 02:23:58 +00:00
Zach H
32dd18998d Combine card legalities in Oracle (#5370)
- Some printings have different legalities, which cause Oracle to bug out
- Fix #4783
2024-12-29 02:23:39 +00:00
ZeldaZach
5e62069444 Fix Windows Crash due to nullptr 2024-12-28 21:02:10 -05:00
Zach H
bf63dc4ab7 Add option to remove saved sever (#5368)
* Add option to remove saved sever

- Fix #4099
- Removes old method that didn't work
2024-12-29 00:37:49 +00:00
Danny Piper
7679546e30 Add Nix shell (#5362) 2024-12-28 23:52:57 +00:00
Zach H
45b11dc984 Add password reset button label (#5367) 2024-12-28 23:52:14 +00:00
RickyRister
25d21a3da6 refactor: remove ReleaseChannel keeping track of its own indexes (#5366) 2024-12-28 23:51:37 +00:00
Zach H
c8d49b5bf9 Support macOS-15 Builds (#5364) 2024-12-28 23:09:01 +00:00
RickyRister
f737d9a794 fix bug with release channel setting not being remembered (#5365) 2024-12-28 23:08:07 +00:00
RickyRister
df9c5ae53c Check for client updates on startup (#5359) 2024-12-28 21:29:59 +00:00
transifex-integration[bot]
e0829a75d2 Translate cockatrice/cockatrice_en@source.ts in it (#5363)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-28 21:01:34 +00:00
Zach H
1f58f7e93d Support Mod/Admin Notes Section (#5361) 2024-12-28 18:05:49 +00:00
transifex-integration[bot]
14807ba036 Translate oracle/oracle_en@source.ts in pl (#5360)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'pl'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-28 15:31:16 +00:00
transifex-integration[bot]
75fb3894a6 Translate oracle/oracle_en@source.ts in pt_BR (#5358)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-28 12:08:58 +00:00
github-actions[bot]
18119bd11b Update translation source strings (#5357)
Co-authored-by: github-actions <github-actions@github.com>
2024-12-28 06:33:57 +00:00
RickyRister
4c7796537f Support folder download in deck storage tab (#5356)
* refactor

* support folder download
2024-12-28 06:31:18 +00:00
RickyRister
3452cb01d0 fix replay download not working if replay folder is empty (#5355)
* fix downloading single replays

* fix downloading replay folder
2024-12-28 06:15:25 +00:00
RickyRister
6a151ef97a Add button to open decks folder (#5354) 2024-12-28 05:09:46 +00:00
RickyRister
e3d651668c Add button to open replays folder (#5352) 2024-12-28 05:06:26 +00:00
Zach H
7a5704beaa Support Moderator/Admin force activating users (#5353) 2024-12-28 05:01:31 +00:00
RickyRister
37b78a9a4c change action's text to "unconcede" when player is conceded (#5351) 2024-12-28 00:01:36 +00:00
Zach H
8bc5a9d581 Merge pull request #5350 from Cockatrice/fix_1953
Allow Moderators/Admins to Grant Replay Access
2024-12-27 18:51:11 -05:00
ZeldaZach
57ed162b79 Fix Linter 2024-12-27 18:35:52 -05:00
ZeldaZach
3524231500 Allow Moderators/Admins to Grant Replay Access
- Only to themselves, at this time
- Automatically refreshes feed, no need to re-login
2024-12-27 18:32:39 -05:00
Zach H
5cfe2b4762 Merge pull request #5348 from Cockatrice/set_owner
Establish Card Ownership & Return on Player Leave
2024-12-27 18:26:45 -05:00
ZeldaZach
a8bac1e468 Return Tagged Cards to Owner, if possible, on concede/leave 2024-12-27 18:23:39 -05:00
ZeldaZach
4f798286af Establish Card Ownership Tag 2024-12-27 18:23:09 -05:00
transifex-integration[bot]
8a04b2d69d Translate cockatrice/cockatrice_en@source.ts in de (#5349)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-27 22:26:03 +00:00
transifex-integration[bot]
17893d9747 Translate oracle/oracle_en@source.ts in it (#5347)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-27 20:13:57 +00:00
ZeldaZach
8af49406cd Un-translate 'ms' 2024-12-27 14:18:44 -05:00
transifex-integration[bot]
3b068b79fe Translate webclient/src/i18n-default.json in fr (#5346)
100% translated source file: 'webclient/src/i18n-default.json'
on 'fr'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-27 08:36:06 +00:00
transifex-integration[bot]
ce14e83e78 Translate webclient/src/i18n-default.json in es (#5345)
100% translated source file: 'webclient/src/i18n-default.json'
on 'es'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-27 08:35:58 +00:00
transifex-integration[bot]
f213d6fda7 Translate cockatrice_en@source.ts in en_US (#5344)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-27 08:35:48 +00:00
RickyRister
83db00d7a3 reduce vertical spacing in PrintingSelector (#5342) 2024-12-27 08:35:38 +00:00
ZeldaZach
7e9bd88eb4 Fix Shutdown Server 2024-12-27 01:38:21 -05:00
github-actions[bot]
ea716ca440 Update translation source strings (#5343)
Co-authored-by: github-actions <github-actions@github.com>
2024-12-27 06:19:12 +00:00
ZeldaZach
3cd7a04002 Change Settings from Min to Base Size 2024-12-26 23:54:24 -05:00
RickyRister
914002f846 use grid instead of FlowWidget for PrintingSelector display options (#5341)
* use grid instead of FlowWidget for PrintingSelector display options

* remove one level of nesting
2024-12-27 02:08:07 +00:00
Zach H
17b82a186f Add QSet for faster lookups in CardDatabase (#5332) 2024-12-26 19:52:18 -05:00
RickyRister
7a8e957476 allow playing cards directly transformed from hand (#5339) 2024-12-26 19:51:58 -05:00
Zach H
6dfd354973 Support starting games with fewer than max players (#5338) 2024-12-26 18:32:20 -05:00
RickyRister
956c12eb32 remove shortcut workaround; always add card menu to player (#5337)
* remove workaround

* make aCardMenu less innocuous

* make card menus active for all players
2024-12-26 16:49:17 -05:00
RickyRister
d5ae4eed26 Ctrl drag now adds/removes to selection (#5336)
* refactor: clean up to use for-each loop

* track cards in rect so far and toggle isSelected on change

* only clear selection if ctrl isn't held

* fix build errors
2024-12-26 15:08:20 -05:00
RickyRister
ca486e5ed9 Don't display unusable actions in opponent's card menus (#5335) 2024-12-26 10:23:54 -05:00
RickyRister
de63066b0b fix deck storage open deck not working at all when folder is in selection (#5333) 2024-12-26 00:25:30 -05:00
Zach H
c7ca55ceb5 Support Picking Select Art per Card Basis (#5329) 2024-12-25 23:12:06 -05:00
RickyRister
024bef7ded add local rename button to replays tab (#5331) 2024-12-25 22:34:24 -05:00
RickyRister
34d3d60f95 fix text missing from chat macro list's buttons when hidden (#5330)
* fix text missing from chat macro list's buttons when hidden

* turns out you don't need to set tooltip if you already set text
2024-12-25 22:32:53 -05:00
RickyRister
ed907d7c6f Support downloading replay folders (#5325)
* rename old get replay match method to get enclosing

* creat raw getReplayMatch method

* implement thing
2024-12-25 07:33:36 -05:00
RickyRister
9d7fd66546 fix text missing from download url list's buttons when hidden (#5326) 2024-12-25 07:29:55 -05:00
RickyRister
9934841950 make better use of space in download url settings window (#5327) 2024-12-25 07:29:27 -05:00
RickyRister
432fe1100b gitignore all cmake-build folders (#5328) 2024-12-25 07:28:41 -05:00
Zach H
d987628935 Reorder String options for Filtering (#5324) 2024-12-25 00:58:59 -05:00
RickyRister
4c3ceae0e4 open replays on double-click in replays tab (#5323) 2024-12-25 00:34:43 -05:00
RickyRister
2b9d7538bf open decks on double-click in deck storage tab (#5322) 2024-12-25 00:33:48 -05:00
RickyRister
4ca1fc083d add "open recent" menu option to deck editor tab (#5319)
* add "open recent" menu option to deck editor tab

* change texts

* also get it to work with loading from deck storage tab

* add error message when fail to open

* only update recents on successful open

* only update recents on successful open

* reword to "Clear"
2024-12-24 19:55:04 -05:00
BruebachL
e7585271fb The printingSelector should set the deckEditor modified flag on adding/removing cards. (#5321)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-12-24 10:28:58 -05:00
RickyRister
6e6824117d add new folder button to local deck storage tab (#5318)
* add new folder button to local deck storage tab

* allow delete button to delete folders
2024-12-24 00:26:11 -05:00
RickyRister
3e5f2fd8b2 add new folder button to game replays tab (#5317) 2024-12-24 00:23:13 -05:00
RickyRister
6e470d788e Support multi-select for remote decks in deck storage tab (#5315)
* enable multiselection

* support multi open deck

* support multi download

* support multi delete
2024-12-24 00:05:49 -05:00
RickyRister
a40d8092ce support multi-select for local decks in deck storage tab (#5314)
* allow multi-select

* support multi upload

* support multi open deck

* support multi delete deck
2024-12-23 20:41:15 -05:00
RickyRister
0234a70bfd fix bug with uploading unnamed decks ignoring the prompt (#5313) 2024-12-23 20:39:57 -05:00
RickyRister
705b1e0c2b support multi-select for remote replays in game replays tab (#5310) 2024-12-23 20:38:47 -05:00
RickyRister
69379334f9 support multi-select for local replay tab (#5309) 2024-12-23 20:31:58 -05:00
transifex-integration[bot]
12e50a1f2f Translate cockatrice_en@source.ts in en_US (#5308)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-23 20:30:17 -05:00
RickyRister
ec17a477be shortcut search now displays all rows in section (#5307) 2024-12-23 20:29:52 -05:00
github-actions[bot]
205e1c7a59 Update translation source strings (#5305)
Co-authored-by: github-actions <github-actions@github.com>
2024-12-22 18:35:34 -05:00
transifex-integration[bot]
ffb60c06cb Translate oracle_en@source.ts in en@pirate [Manual Sync] (#5295)
4% of minimum 3% translated source file: 'oracle_en@source.ts'
on 'en@pirate'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:01:02 -05:00
transifex-integration[bot]
2280f59ee6 Translate i18n-default.json in nl [Manual Sync] (#5297)
19% of minimum 3% translated source file: 'i18n-default.json'
on 'nl'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:44 -05:00
transifex-integration[bot]
0d4dd63edc Translate i18n-default.json in es [Manual Sync] (#5299)
99% of minimum 3% translated source file: 'i18n-default.json'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:39 -05:00
transifex-integration[bot]
69f1f4c1a5 Translate i18n-default.json in fi [Manual Sync] (#5301)
13% of minimum 3% translated source file: 'i18n-default.json'
on 'fi'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:35 -05:00
transifex-integration[bot]
d930d9c237 Updates for project Cockatrice and language tr (#5296)
* Translate oracle_en@source.ts in tr [Manual Sync]

36% of minimum 3% translated source file: 'oracle_en@source.ts'
on 'tr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate cockatrice_en@source.ts in tr [Manual Sync]

6% of minimum 3% translated source file: 'cockatrice_en@source.ts'
on 'tr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:31 -05:00
transifex-integration[bot]
9c782d130f Translate i18n-default.json in pt_BR [Manual Sync] (#5298)
100% translated source file: 'i18n-default.json'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:13 -05:00
transifex-integration[bot]
f12053f39d Translate i18n-default.json in de [Manual Sync] (#5300)
100% translated source file: 'i18n-default.json'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 18:00:05 -05:00
transifex-integration[bot]
bcf6ca4f87 Translate i18n-default.json in fr [Manual Sync] (#5302)
99% of minimum 3% translated source file: 'i18n-default.json'
on 'fr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 17:59:55 -05:00
transifex-integration[bot]
46619bb425 Translate i18n-default.json in ru [Manual Sync] (#5303)
14% of minimum 3% translated source file: 'i18n-default.json'
on 'ru'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 17:59:46 -05:00
transifex-integration[bot]
cdd870a129 Translate i18n-default.json in en_US [Manual Sync] (#5304)
100% translated source file: 'i18n-default.json'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 17:59:35 -05:00
transifex-integration[bot]
7a1b7b9438 Updates for project Cockatrice and language it (#5294)
* Translate cockatrice_en@source.ts in it [Manual Sync]

99% of minimum 3% translated source file: 'cockatrice_en@source.ts'
on 'it'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate i18n-default.json in it [Manual Sync]

100% translated source file: 'i18n-default.json'
on 'it'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 17:59:24 -05:00
transifex-integration[bot]
2183ada1f2 Translate oracle_en@source.ts in cs [Manual Sync] (#5293)
3% of minimum 3% translated source file: 'oracle_en@source.ts'
on 'cs'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-22 17:58:35 -05:00
Zach H
1d9e64ec73 Fix settings dialog tr (#5292) 2024-12-22 17:39:43 -05:00
Zach H
5339be318e Fix "ghosting" of cards sticking on invalid moves (#5289) 2024-12-22 17:35:44 -05:00
Zach H
e1ba39c437 Fix multiple "Selected Cards" in Menu on MacOS (#5288) 2024-12-22 04:33:09 +00:00
BruebachL
07ee271478 Refactor codebase to new Qt Slot/Signal syntax - Pt1 (#5202)
---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-12-22 02:01:17 +00:00
RickyRister
4823cce622 Show conflicting shortcut in error message (#5287) 2024-12-22 01:58:55 +00:00
Zach H
23099f7e8b Fix token name highlight on open (#5286) 2024-12-22 01:43:00 +00:00
RickyRister
5bdbd51fa8 implement search bar in shortcuts menu (#5285)
* implement search bar in shortcuts menu

* remove unneeded imports

* use expandAll
2024-12-22 00:21:53 +00:00
BruebachL
a0e5871c6e Fix the image shrinking due to repeated scaling and FP precision loss. (#5284)
* Fix the image shrinking due to repeated scaling and FP precision loss.

* Add a setting for auto-rotating sideways layout cards.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-12-21 22:47:43 +00:00
RickyRister
3cf0904651 add action to select all cards in table row (#5280) 2024-12-21 18:52:19 +00:00
Zach H
2bd06ff0fd Add CrashDump support for Windows OS (#5282) 2024-12-21 18:52:07 +00:00
RickyRister
6ea333d0f1 move SearchLineEdit into custom_line_edit file (#5281) 2024-12-21 05:12:14 +00:00
Zach H
91d2485940 Update PegLib, Fix Database Searching CFG (#5244)
* Support C++20 Standard

* Update peglib.h

* Fix lambdas

* Move from for loops to std::any/all_of

* Support fixed CFG

* Fix Rarity Search to be more accurate
2024-12-21 03:37:08 +00:00
RickyRister
0d99b2bcf4 make unattach shortcut always active (#5278) 2024-12-20 05:56:48 +00:00
RickyRister
a54a424f84 add action to select all cards in column (#5277)
* add action to select all cards in column

* change default shortcut to Ctrl+Shift+C
2024-12-20 03:39:17 +00:00
RickyRister
3514699f5b check that target card is in play before attaching (#5275) 2024-12-19 23:55:04 +00:00
RickyRister
d196988cab allow attached cards to be moved to other zones (#5276) 2024-12-19 23:53:48 +00:00
BruebachL
03aff83135 Add the ability to define starting life total during game creation. (#5174)
* Have the server respect gameType info when setting up zones.

* ServerPlayer::setupZones is now passed the room->getGameTypes();
* ServerPlayer::setupZones now checks if the GameType String includes "Commander" and then sets the life total to 40 instead.

* Formatting.

* Remove debug logging imports.

* Move game option value declarations to dlg_create_game.

* Lint.

* Fix mocks.

* Add a default for backwards compatibility.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-12-19 23:52:47 +00:00
RickyRister
17e6bfaca6 fix bug with multi-attach sometimes only attaching one card (#5272) 2024-12-19 13:38:57 +00:00
Zach H
90281262be Revert "Revert "Rotate split cards (#5264)" (#5269)" (#5273)
This reverts commit d41aa30e10.
2024-12-19 13:25:54 +00:00
RickyRister
5bbc118920 fix bug introduced in #5267 (#5270)
* fix bug introduced in #5267

* remove default args to prevent similar bugs in the future

* add newInstance overload with default properties
2024-12-19 13:17:09 +00:00
ZeldaZach
dde2f8b9ad Bump Win Qt6 6.5.3->6.6.*
- Fix #4968
2024-12-19 01:09:04 -05:00
Zach H
d41aa30e10 Revert "Rotate split cards (#5264)" (#5269)
This reverts commit a5c509981b.
2024-12-19 06:03:48 +00:00
RickyRister
231d0380a7 reword "open deck in new tab" setting (#5268) 2024-12-19 05:52:40 +00:00
BruebachL
a5c509981b Rotate split cards (#5264) 2024-12-19 04:13:45 +00:00
Zach H
71b01e6110 ADD landscapeOrientation field (#5267) 2024-12-19 03:52:34 +00:00
RickyRister
c716f85962 refactor: remove cipt param from Player::playCard (#5266) 2024-12-19 02:46:14 +00:00
BruebachL
245d51caea New printing selector (#5182)
* Squashed Commits

Lint things.

Set focus back to deckView after selecting a card to enable keyboard navigation.

Bump scrollbar to top when selecting a new card.

Update card info on hover.

Layout cleanups

Add +- to buttons.

Merge buttons into card picture.

Cleanup size, min 2 cards by default in rows

Support layout settings config and set min to 525 so two cols are visible by default for printings, when opened

Move Printing Selector to before Deck, and visible true

Null safety for setCard.

Turn down the dropshadow a little.

Make PrintingSelector dockable, don't duplicate sets when bumping them to the front of the list.

When swapping cards between mainboard and sideboard, use preferred printing if no uuid is available (i.e. null).

Reorder includes...

Unwonk an include.

Give the card widget a snazzy drop shadow, appease the linter gods.

Handle jumping between segments

Remember scale factor when initializing new widgets.

Cleanup

Select Card works (Not M->SB tho)

Resize word-wrapped label properly.

Fix the layouting, mostly.

remove tx

Build Fix

Squashed Commits

Load and store redirects properly.

Layouting is fun :)

* Group PrintingSelectorCardDisplayWidgets into distinct containers for alignment purposes.

Override resizeEvent() properly.

Word wrap properly.

Keep widget sizes uniform for aesthetic reasons (grid pattern).

Label stuff, center card picture widget, allow cardSizeSlider to scale down.

Replace cards which have no uuid in the decklist when first selecting a printing.

Add buttons for previous and next card in DeckList.

Add a card size slider.

Move sort options initialization to implementation file.

Explicitly nullptr the parent for the PrintingSelector.

Address PR comments (minor cleanups).

Hook up to the rows removed signal to update card counts properly.

Include QDebug.

Add labels to the mainboard/sideboard button boxes.

Implement a search bar.

Expand node recursively when we add a new card.

Only create image widgets for the printing selector if it is visible in order to not slow down image loading.

Minor Tweaks

Invert decklist export logic to write out setName, collectorNumber, providerId value if it is NOT empty.

Linting.

Update CardCounts properly, update PrintingSelector on Database selection.

Initialize sideboard card count label properly.

Split mainboard/sideboard display and increment/decrement buttons.

Add button to sort all sortOptions by ascending or descending order.

Add option to sort by release date in ascending or descending order.

Add PrintingSelector to database view.

Display placeholder image before loading.

Fix deckEditor crash on mainboard/sideboard swap by correcting column index to providerId instead of shortName.

Include currentZoneName, fix the column when updating from DeckView indexChanged to be UUID and not setShortName so cards are properly fetched again.

The most minor linter change you've ever seen.

Null checks are important.

Linter again.

Linter and refactor to providerId.

Sort properly, (We don't need a map, we need a list, a map won't be ordered right [i.e. 1, 10, 11, 2, 3, 4, ..., 9])

Sort alphabetically or by preference.

Hook printingSelector up to the CardInfoFrameWidget.

Allow info from CardFrame to be retrieved, properly initialize PrintingSelector again.

Refactors to reflect CardInfoPicture becoming CardInfoPictureWidget.

Make PrintingSelector re-usable by introducing setCard().

Make PrintingSelector use the CardFrame, not the database index.

Add a new selector widget for printings.

* Support multiple <set> tags per card within the database

This will allow us to show off all different printings for cards that might appear multiple times in a set (alt arts, Secret Lairs, etc.)

* Support Flip Cards with related art

* Minor Cleanup

* Minor Cleanup

* Release Date DESC default

* Load widgets in batches.

* Refactor local batch variables to be class variables/defines.

* Clear timer on updateDisplay.

* Fix Timer & Builds on Qt5

* Not Override

* Yes Override

* Yes Override

* Lint

* Can't override in function definition.

* Resize setName to picture width on initialization.

Also add a new signal to card_info_picture_widget to emit when the scale factor changes.

Hook this up to the setName resizing method to ensure card size updates trigger it appropriately after initialization.

Clean up unused enter and resize methods that just delegated to base-class.

* Add ability to force preferred set art to be loaded for every card.

* Show related cards from printing selector by right-clicking card image.

* fix build

* Fix UST cards

* Inc QDebug

* Fix Qt5 Builds

* Fix Qt5 Builds

* Fix Qt5 Builds

* Fix Qt5 Builds

* Fix Qt5 Builds

* Fix cards being able to jump between side and mainboard

* Don't hide PrintingSelector button widgets if the deck contains a card from the set.

* Update PrintingSelector properly on DeckListModel::dataChanged

* Add option to disable bumping sets to the front of the list if the deck contains cards from the set.

* Linter behave.

* Linter behave.

* Fix mocks.

* Fix cards without providerIds being counted for all cards.

* Flip preference sort so descending means "Most to least preferred".

* Set the index correctly when removing a non-providerId printing for a providerId printing to avoid jumping to the next card.

* Move the "Next/Previous" card buttons to their own widget.

* Move the card size slider to its own widget.

* Lint the makelist.

* Linter

* Crash fix

* Move the sorting options to their own widget.

* Move the search bar to its own widget.

* Minor cleanup

* Minor cleanup

* Minor cleanup

* Only overwrite card in deck if UUID _and_ Number missing

* Adjust font size when adjusting card size.

* Clean up some imports.

* Pivot to a view options toolbar.

* Persist sort options and change default to 'preference'.

* Lint.

* Remember how many cards were originally in deck when replacing with uuid version.

* Relabel buttons for clarity.

* Fix tests.

* Fix tests properly.

* Fix dbconverter mock.

* Try to wrangle font sizes.

* Update mainboard/sideboard labels correctly.

* Initialize button sizes correctly.

* Label texts are supposed to be white.

* Adjust another deckModel->findCard call to include number parameter.

* Style buttons again.

* Negative currentSize means we don't render the widget yet, return a default value.

* Clean up debug statements.

* Boop the mainboard/sideboard label and the cardCount after a little bit of delay to make sure they initialize at the right size.

* Persist card size slider selection in SettingsCache.

* Good Lint Inc.

* updateCardCount to get white color in initializer

* Make the view display options functional.

* Comment ALL the things.

* Lint the things.

* Brief accidentally nuked some constants.

* Proper Qt slot for checkboxes.

* Don't use timers, Qt provides ShowEvent for anything necessary before the widget is shown.

* Cleanup from Reading

* Cleanup Lints

* Minor

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: Zach Halpern <zahalpern+github@gmail.com>
2024-12-19 02:40:34 +00:00
RickyRister
e588917f6c don't snap already-expanded cardview windows (#5265) 2024-12-19 02:27:40 +00:00
RickyRister
27e5d21b6b fix bug with scrollbar resizing (#5263) 2024-12-18 05:16:47 +00:00
RickyRister
b894b75e6a add clone action to card menu in all zones that it functions in (#5259) 2024-12-18 04:48:06 +00:00
RickyRister
116397cdb3 add option to auto-play "put top card on stack until" hits (#5258)
* rename variables

* implement feature

* readd null check
2024-12-18 04:47:49 +00:00
RickyRister
a6b5abf271 clicking to play can now play all selected (#5254)
* play action now applies to all selected cards

* check card zone before applying action

* fix bug with wonky play from deck

* refactor

* don't play card if it's already on table

* add new setting

* make actPlay and friends public

* implement thing

* refactor card_item
2024-12-18 04:43:17 +00:00
RickyRister
fd5a649246 fix clone shortcut not working on opponent's cards (#5251)
* implement fix

* fix nullptr bug

* also add the selectAll action to the always active shortcuts
2024-12-18 04:41:12 +00:00
RickyRister
e8e57989ba Reload card database action now also reloads the download urls (#5262)
* add sync method to SettingsManager

* sync download urls on reload card database
2024-12-18 04:39:58 +00:00
RickyRister
03db4ccce6 ability to directly attach from other zones (#5250)
* add attach and draw arrow actions to more card menus

* implement attaching from other zones

* disallow attaching from deck

* do nothing if target is already attached

* add null check
2024-12-18 04:38:22 +00:00
RickyRister
c9d5d5609c Double click to untap works when multi-zone select (#5253) 2024-12-17 03:58:25 +00:00
RickyRister
ac16206ddb Add action to select all cards in zone (#5246)
* rip shortcut for aDrawArrow

* implement thing

* add separator below hide

* shorten text by 1 word

* move shortcut to under Playing_Area

* rebind draw arrow shortcut to Alt+A

* remove auto hotkey

* shorten to "Select All"

* add back auto-hotkey
2024-12-16 03:55:47 +00:00
RickyRister
5f8bcbd02d Add keyboard shortcut for "hide" action (#5248)
* implement hide shortcut

* remove parens
2024-12-15 20:34:33 +00:00
RickyRister
a0f74134bb make card view window max initial height configurable (#5236) 2024-12-14 03:02:00 +00:00
Zach H
0463a6fd70 Support Windows Debug Builds (#5242) 2024-12-13 21:58:46 +00:00
RickyRister
a5de633c64 warn if "play top card until" filter expression doesn't match any card in database (#5243)
* make FilterString::check const

* implement thing
2024-12-13 21:58:29 +00:00
RickyRister
b2ad2acff3 improve FilterString validation error message (#5240) 2024-12-13 06:26:58 +00:00
dependabot[bot]
4ee6ff73e0 Bump nanoid from 3.3.4 to 3.3.8 in /webclient (#5239)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.4 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.4...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 04:45:05 +00:00
RickyRister
628bdde939 hide action now applies to all selected cards (#5233)
* hide action now applies to all selected cards

* check card zone before applying action

so that we don't nuke cards from existence when we select across multiple zones

* small fixes

* remove redundant loop

* nullcheck view
2024-12-13 04:42:53 +00:00
RickyRister
e9b78c1c59 "Play top cards until" action now has option for number of hits (#5229)
* create new dlg window

* get thing to work

* move validation into dlg

* remove nodiscard

I'll revert this if someone else complains
2024-12-12 14:03:42 +01:00
RickyRister
315cbc0925 fix remaining wonkiness with rewind buffering in replays (#5235) 2024-12-11 10:54:36 +01:00
ebbit1q
69741d858c fix crash using uninitialised memory from #5228 (#5237) 2024-12-11 01:19:53 +00:00
tooomm
20d99a78b6 pretty print translation files (#5234) 2024-12-09 23:46:57 +00:00
RickyRister
2d68393e07 dynamically resize scrollbar when zone view window is resized (#5228) 2024-12-09 19:01:37 +00:00
RickyRister
8cb1470643 add option to show keyboard shortcuts in right click menu (#5225) 2024-12-09 18:58:37 +00:00
dependabot[bot]
8d9b27bf47 Bump path-to-regexp and express in /webclient (#5226)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `path-to-regexp` from 0.1.10 to 0.1.12
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.10...v0.1.12)

Updates `express` from 4.21.0 to 4.21.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.2)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 18:54:47 +00:00
transifex-integration[bot]
0c5d9f1a7d Translate webclient/src/i18n-default.json in de (#5222)
100% translated source file: 'webclient/src/i18n-default.json'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-09 18:54:32 +00:00
transifex-integration[bot]
a7d88c06c1 Translate webclient/src/i18n-default.json in it (#5223)
100% translated source file: 'webclient/src/i18n-default.json'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-09 18:54:24 +00:00
transifex-integration[bot]
2735000fcf Translate webclient/src/i18n-default.json in pt_BR (#5224)
100% translated source file: 'webclient/src/i18n-default.json'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-09 18:54:15 +00:00
RickyRister
a39de270cd make rewind buffering timeout configurable (#5227)
* update settingsCache

* implement thing

* add new setting to window

* rename setting

* make it compile on qt5

* fix typo

* somehow changing the order here fixes a bug?

The loaded value was getting clamped to 99
2024-12-09 02:25:10 +00:00
tooomm
10f11213d3 fix indentation again (#5230) 2024-12-09 01:23:45 +00:00
tooomm
3b49cbf73b Rename label (#5232) 2024-12-09 01:23:27 +00:00
Zach H
e4cfe08113 Address weird crash case (#5221)
* Address weird crash case

* Address weird crash case

* remove const
2024-12-05 12:18:41 +01:00
transifex-integration[bot]
fa02cb885c Updates for project Cockatrice and language nl (#5220)
* Translate cockatrice/cockatrice_en@source.ts in nl

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'nl'.

* Translate oracle/oracle_en@source.ts in nl

100% translated source file: 'oracle/oracle_en@source.ts'
on 'nl'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-03 16:17:54 +01:00
transifex-integration[bot]
69b864fa02 Translate cockatrice_en@source.ts in en_US (#5217)
100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-12-01 19:59:19 -05:00
J. Cameron McDonald
b9ed9a6c0b feat: set prioritization by set type (#5097)
* feat: prefer 'Core' and 'Expansion' sets for prioritization

* rework set prioritization

* clean up priority enum

* formatting

* revert changes to CockatriceXml3Parser

* re-add missing null check

* remove priority fallback ternary from CardSet model

* make defaultSort logic easier to follow

* revert changes to v3 card database xsd

* remove unused invisible priority col from sets dialog

* move draft innovation and duel deck sets to secondary prio

* minor fixes

* change PriorityFallback to 1

* make priority optional in xml

* remove PriorityUndefined and set PriorityFallback to 0

* set priority when not found to PriorityOther

in case a new set type is added it's unlikey we want it sorted first,
it'll probably be a new product so it's probably best to sort it with
the funny things

* simplify sort function

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2024-12-01 19:59:00 -05:00
RickyRister
5156495b47 add more sort options (#5214)
* distinguish between groupBy and sortBy options

* add more sort options
2024-11-30 22:32:39 -05:00
RickyRister
b92047bc3f rename and refactor some stuff in ZoneViewWidget (#5213)
* fix QComboBox creation order in retranslateUi

* move bottom row creation closer to where it's used

* rename QGraphicsLinearLayout variables

hFilterbox and hPilebox don't make much sense now

* add comment about #5204
2024-11-30 18:54:55 -05:00
RickyRister
70559d32df fix bug where card view window with single card is too short (#5211)
It was a divide by 0 bug lol
2024-11-30 08:53:30 -05:00
RickyRister
bb84b75db9 fix bug where card view window with pile view is too short (#5212) 2024-11-30 08:53:10 -05:00
transifex-integration[bot]
f634177973 Updates for project Cockatrice and language nl (#5170)
* Translate cockatrice/cockatrice_en@source.ts in nl

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'nl'.

* Translate cockatrice/cockatrice_en@source.ts in nl

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'nl'.

* Translate cockatrice/cockatrice_en@source.ts in nl

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'nl'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-11-30 12:55:06 +01:00
Zach H
e33ff37c82 Pass QTime objects instead of references (#5209)
- References seem to go to 0 in newer Qt versions(?)

https://doc.qt.io/qt-6/qtime.html

> QTime objects should be passed by value rather than by reference to const; they simply package int.
2024-11-30 01:36:38 -05:00
RickyRister
d2bc7f6ac0 get retranslateUi to work with sort options (#5208) 2024-11-30 00:13:17 -05:00
RickyRister
5ef1ca06f5 store sort option in settings as QComboBox index instead of enum value (#5207)
* rename config property

* change default

* functional changes
2024-11-29 22:46:16 -05:00
Zach H
1d8651bc00 Fix Deck Popup Glitchy Rendering (#5204)
- QLabel sizes weren't taken into account until the widget is rendered
- Long QLabels can cause exacerbated issues
- Force refresh after 1ms to take QLabels into account
2024-11-29 12:53:19 -05:00
RickyRister
17eabf2004 add sort options to card view window (#5206)
* refactor to allow for sorting by property of choice

* implement thing

* prevent overlapping sort properties

* enable/disable pile view checkbox if groupBy is off

* fix compiler warnings

* check to disable pile view checkbox on init

* Fix builds on Qt5

* Fix builds on Qt5

---------

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-11-29 12:53:06 -05:00
RickyRister
37bb1367db refactor method for positioning cards in ZoneViewZone (#5203)
* refactor out method for positioning cards in zone view

* rename some variables

* use max/min

* some small formatting stuff
2024-11-28 14:59:31 -05:00
RickyRister
24b5dab456 leave some documentation on Zone classes (#5199)
* leave some documentation on Zone classes

* small refactor

* undo functional change from refactor and clean up comments

* move variables into if block
2024-11-28 14:40:49 -05:00
Zach H
c6bfc8b8ea Fix Qt5 Slot/Signals for QCheckBoxes (#5201) 2024-11-27 22:11:55 +00:00
RickyRister
f2b0fa164e add padding to right side of card reveal window (#5198) 2024-11-27 00:17:37 -05:00
RickyRister
0ca8bdb3a8 refactor CardList (#5197) 2024-11-27 00:15:35 -05:00
RickyRister
a8471f62bc clean up DownloadSettings (#5194)
* refactor DownloadSettings

* only reset to default on first run

* use c++ foreach

* use addItems

* move default urls to static const
2024-11-26 02:12:56 +00:00
tooomm
5f1c03682f macOS version fix + wording (#5189) 2024-11-26 00:05:09 +01:00
RickyRister
3255ed3ffb add menu option to reload card db (#5196) 2024-11-25 07:43:08 +00:00
RickyRister
c51b54c0c5 rename variables for url list layout (#5195) 2024-11-25 06:27:21 +00:00
RickyRister
a3f0807d47 fix error message (#5192)
`QObject::connect: No such slot UserInterfaceSettingsPage::setNotificationEnabled(Qt::CheckState) in /Users/Ricky/GitHub/Cockatrice/cockatrice/src/dialogs/dlg_settings.cpp:448`
2024-11-24 14:52:56 +00:00
RickyRister
27055944df skip tap animation when rewinding (#5168) 2024-11-23 10:40:37 -05:00
Zach H
7b1653034b Bump macos14 XCode to 15.4 (#5188) 2024-11-22 22:52:42 -05:00
dependabot[bot]
39d8ca050f Bump cross-spawn from 7.0.3 to 7.0.6 in /webclient (#5181)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 22:22:36 -05:00
Zach H
50274cb66d Change 'custom(VER)' to 'custom-VER' because Fedora mad (#5180) 2024-11-22 22:22:22 -05:00
RickyRister
bd60a9fd2e don't blink highlighted phase when backwards skipping in replays (#5185) 2024-11-22 22:21:54 -05:00
BruebachL
83409c32c4 Cache redirects properly by implementing our own QSettings cache for urls. (#5186)
* Cache redirects properly by implementing our own QSettings cache for urls.

* Load and store redirects properly.

* Set the maximum network cache size from settings value on PictureLoaderWorker instantiation.

* Address comments.

* Lint.

* Adjust debug statements to be in line with existing ones.

* Minor Tweaks

* Make redirect cache ttl a user-adjustable setting.

* Fix Build

* Minor Cleanup

* Minor Cleanup

* Build Fix

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-11-22 22:21:26 -05:00
RickyRister
1bc92623dc add "open in new tab" button to decklist confirmation dialogue (#5183)
* refactor to use confirmOpen

* implement extra button in confirmation

* use brackets in one-liner if statements

* refactor save confirmation window into function
2024-11-21 23:24:50 +01:00
BruebachL
f73196841a Multiple Printings per Deck (#5171)
* Refactor CardInfo Widgets to reside in their appropriate folder and to have a clearer naming structure.

* Added Zach's work on storing printing information in the DeckList (#1)

* Change CardInfo's PixmapCacheKey to be the UUID of the preferred set after database loading has finished. Otherwise, and if no UUID of a preferred set is available, default to the card name.

* Refactor CardDatabase *db global variable to singleton CardDatabaseManager.

This commit refactors the global variable CardDatabase *db into a singleton encapsulated by the DatabaseManager class, accessible via DatabaseManager::getInstance(). This change centralizes access to the database instance, improving code modularity and encapsulation, resolving dependencies on main.h for code that requires access to the database instance.

- Added DatabaseManager class with getInstance() method returning a pointer to the singleton CardDatabase.
- Removed global db variable and updated references across the codebase.
 - Thread-safe static initialization for the singleton.

Impact: This refactor should have no functional impact on the application, as it maintains the same interface for accessing the CardDatabase instance. However, the codebase now benefits from improved encapsulation, lifetime management, and thread-safety.

* fixed db issue an renamed sets to set in picture loader

* canibalized zach work and added it to the decklist builder

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>

* Reintroduce some changes lost in the merge.

* Introduce UUID attribute to abstract_card_item, card_item, deck_view_card, server_card and serverinfo_card.

* Have various game events respect the new UUID attribute on instantiation.

* Correct some calls to default to preferred printing.

* DeckList now tries to assign reasonable defaults for UUID and collectorNumber if none are found in loaded DeckLists.
Rename overloaded DeckListModel findChild() function to findCardChildByNameAndUUID() for clarity.

* canibalized zach work and added it to the decklist builder

* Change getPreferredPrintingForCard to getPreferredSetForCard to reflect refactor.

* Properly update and set the DeckEditor's CardFrame to fetch by name and UUID if a card was selected from the decklist.

* Mainboard/Sideboard swaps should respect the UUID from the old zone instead of just blindly adding preferredPrinting.

* If the card info is null, there's no point in trying to look for the sets.

* Don't define methods twice.

* Convenience method to fetch a specific CardInfoPerSet instance for a cardName and a UUID.

* Check if the uuid starts with card_ when comparing.

* Address pull request comments (nullptr checks and additional comments, mostly.)

* Reformat code so the linter will stop yelling at me.

* DeckList no longer pre-populates uuids.

* Update Event_MoveCard to include the card UUID.

* Update Player::MoveCard to include the card UUID.

* Set the uuid when we set the cardName, in terms of hidden zones.

* [TEST/RevertMe] Set the uuid everywhere to test.

* Don't inline setUUID and mimic setName for AbstractCardItem.

* Revert blindly setting uuid for testing.

* Address PR comments (AbstractCardItem).

* Combine if-statement.

* Re-order uuid to visually align with its field number.

* Remove unnecessary new uuid field from event_move_card.

* Remove unused imports.

* Include cardName in the PixmapCacheKey in order to not break double-faced cards.

* Refactor setCode to cardUUID and introduce new cardSetShortName field.

* Override

* Refactor UUID to be providerId and change QString comparisons with empty string to isEmpty().

* Update translations.

* Change parent to be the first argument.

* Pull Parent argument up for CardItem.

* Pull Parent argument up for CardItem.

* Linter.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: LunaticCat <39006478+LunyaticCat@users.noreply.github.com>
Co-authored-by: luna <yannbrun1507@outlook.fr>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-11-18 21:56:44 -05:00
RickyRister
86a4b130ff don't open deck in new tab if current tab is blank (#5169) 2024-11-18 11:59:34 +01:00
tooomm
f4e2f117c3 Readme: Remove last Gitter hint (#5178) 2024-11-18 00:27:33 +01:00
BruebachL
8ef92d26c5 Add Utility Layouts and corresponding Widgets (#5177)
* Add FlowWidget class with flexible layout and scroll handling

- Implemented FlowWidget class to organize widgets in a flow layout with scrollable options.
- Integrated QScrollArea to handle overflow with configurable horizontal and vertical scroll policies.
- Incorporated dynamic layout selection (FlowLayout, HorizontalFlowLayout, VerticalFlowLayout) based on scroll policy.

* Add OverlapWidget and OverlapLayout for managing overlapping child widgets

- Implemented the OverlapWidget class to manage child widgets in an overlapping manner, supporting configurable overlap percentage, maximum columns, maximum rows, and layout direction.
- Introduced the OverlapLayout class, which arranges widgets with overlapping positions, allowing flexible stacking based on specified parameters.

* Add OverlapControlWidget.

* Delete FlowLayout items later to allow them to finish their event loop.

* Allow OverlapWidgets to adjust their rows/columns on resize.

* Clamp vertical FlowLayout to any available parent scrollAreas.

* Implement margins and spacing for FlowLayouts.

* Adjust/revert some things.

* Address pull request comments (nullptr checks and additional comments, mostly.)

* Reformat code so the linter will stop yelling at me.

* Remove undefined methods from FlowLayouts.

* Fix the build.

* Revert FlowLayout::takeAt to index check.

* Commits will continue until linter morale improves.

* Fix various warnings in FlowLayout.

* Fix various warnings in FlowLayout.h.

* Fix various warnings in the FlowLayout classes.

* Fix [[nodiscard]] warning.

* Fix more warnings.

* Final round of yellow squiggle fixing.

* Linter formatting.

* Refactor column/row calculation to be more readable.

* Code style.

* Address PR comments.

* Combine if-statements.

* Replace std::math functions with Qt equivalents.

* Fix non-consts and QtMath.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-11-17 13:32:31 -05:00
BruebachL
c8336df49d Refactor Card Info Widgets (#5176)
* Refactor CardInfo Widgets to reside in their appropriate folder and to have a clearer naming structure.

* Add optional HoverToZoom functionality to CardInfoPictureWidget (default: disabled) and utility class to display text over a CardInfoPictureWidget.

* Patch CardInfoWidgets to use the new CardDatabaseManager.

* Add HoverToZoom to CardInfoPictureWithTextOverlayWidget

* Refactors and new signals for CardInfoPictureWidgets.

* Address pull request comments (nullptr checks and additional comments, mostly.)

* Reformat code so the linter will stop yelling at me.

* Linting.

* Fix the build.

* Fix warnings.

* Formatting, const qualifiers.

* Sensibly call the base class's (QWidget) paint event.

* Address PR comments (card picture).

* QT Version check because enterEvent signature changed.

* Linting.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-11-17 10:49:22 -05:00
RickyRister
c2fe3cda35 Add option to open deck in new tab by default (#5143)
* add comments

* add new setting for openDeckInNewTab

* implement open deck in new tab

* rename setting

* fix typo

* set default to false
2024-11-10 18:16:50 -05:00
BruebachL
c54f47efbf Change CardInfo's PixmapCacheKey to be the UUID of the card in the preferred set after database loading has finished. Otherwise, and if no UUID of a preferred set is available, default to the card name. (#5158)
* Change CardInfo's PixmapCacheKey to be the UUID of the preferred set after database loading has finished. Otherwise, and if no UUID of a preferred set is available, default to the card name.

* Clean up some variable names, clarify preferred Set insertion for PictureLoader, use the new CardDatabaseManager.

* Code formatting.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-11-10 17:49:11 -05:00
lumadd
3c40cc4b7d [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player group (#5079)
* [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family

* [4191] fix: fix formatting

* Revert "[4191] fix: fix formatting"

This reverts commit 86a4a675f3bc8118d4ba8dd45f408c4e8c348f33.

* Revert "[4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family"

This reverts commit 3ec183628df81c48123a8a248d0416c529ee0c8e.

* [4191] fix: Textbox and tab_game shortcut groups cannot conflict with Player group

* Revert "[4191] fix: Textbox and tab_game shortcut groups cannot conflict with Player group"

This reverts commit 36800393339d997df1a932bb798f95d2d387399a.

* [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family

* [4191] fix: Migrate shortcuts if new version is detected

* [4191] fix: formatting

* [4191] fix: Maybe fix build issue on Windows7, Debian11, UbuntuBionic and UbuntuFocal
2024-11-09 19:56:42 +01:00
RickyRister
f0fb77bade move replay-related constants into ReplayTimelineWidget (#5166)
* move constants

* make the existing static const into a constexpr
2024-11-09 11:18:51 +01:00
RickyRister
e894e78346 Do not open card reveal windows when skipping in replays (#5157)
* create EventProcessingOption QFlag

* pass EventProcessingOption all the way down

* implement reveal skipping logic
2024-11-09 02:06:23 +01:00
SlightlyCircuitous
dd04c610ec Remove Fedora 39 Build and Add Fedora 41 Build (#5151)
* Remove Fedora 39 docker file

EOL

* Add Fedora 41 Dockerfile

new release

* Remove Fedora 39, Add Fedora 41 to release template

* Remove Fedora 39, Add Fedora 41 to desktop build

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2024-11-08 11:32:54 +01:00
tooomm
2e674efe50 Pretty print translation source (#5107) 2024-11-05 22:26:54 +01:00
ebbit1q
4d394c31f9 fix the timezones used for the user info box and add comments (#5162) 2024-11-05 14:54:38 -05:00
tooomm
11d58abbc3 CI: Update build matrix & clean naming (#5040)
---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-11-05 14:38:33 -05:00
BruebachL
5f4ad87a47 Refactor CardDatabase *db global variable to singleton CardDatabaseManager. (#5159)
* Refactor CardDatabase *db global variable to singleton CardDatabaseManager.

This commit refactors the global variable CardDatabase *db into a singleton encapsulated by the DatabaseManager class, accessible via DatabaseManager::getInstance(). This change centralizes access to the database instance, improving code modularity and encapsulation, resolving dependencies on main.h for code that requires access to the database instance.

- Added DatabaseManager class with getInstance() method returning a pointer to the singleton CardDatabase.
- Removed global db variable and updated references across the codebase.
 - Thread-safe static initialization for the singleton.

Impact: This refactor should have no functional impact on the application, as it maintains the same interface for accessing the CardDatabase instance. However, the codebase now benefits from improved encapsulation, lifetime management, and thread-safety.

* Refactor CardDatabase *db global variable to singleton CardDatabaseManager.

This commit refactors the global variable CardDatabase *db into a singleton encapsulated by the DatabaseManager class, accessible via DatabaseManager::getInstance(). This change centralizes access to the database instance, improving code modularity and encapsulation, resolving dependencies on main.h for code that requires access to the database instance.

- Added DatabaseManager class with getInstance() method returning a pointer to the singleton CardDatabase.
- Removed global db variable and updated references across the codebase.
 - Thread-safe static initialization for the singleton.

Impact: This refactor should have no functional impact on the application, as it maintains the same interface for accessing the CardDatabase instance. However, the codebase now benefits from improved encapsulation, lifetime management, and thread-safety.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-11-05 19:32:59 +01:00
RickyRister
e43a21866c Buffer rewinds from backward skips in replays (#5141)
* split event processing to own method

* implement rewind throttling

* don't throttle backward skips from clicks

* use the term 'buffering' instead

* remove initial backup logic; just always buffer shortcut backward skips

* prevent segfault

* turns out you can just reuse the same one-shot timer

* try scaling timeout based on event count

* rewrite timeout calculation code

* fix linker error
2024-11-05 18:45:42 +01:00
RickyRister
6652012f4c fix bug with phase highlighting in replays (#5161)
* fix bug with incorrectly highlighted phases

* fix new bug with phases continuously darkening

* use preincrement instead of postincrement

* simplify conditional
2024-11-05 18:23:01 +01:00
BruebachL
0c4e8ca290 CardDatabase gains a new signal void cardDatabaseLoadingFinished(), which (#5156)
it will emit in loadCardDatabases(), mirroring the else branch where cardDatabaseLoadingFailed() is emitted.

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2024-11-03 23:45:19 +01:00
ebbit1q
230a2c5c62 fix crashes in local games because of using uninitialised pointers (#5147) 2024-10-26 21:03:32 +00:00
ebbit1q
590fb7f533 fix row colors swapping when using back button in replays (#5148)
only happens when there is an uneven amount of rows in the chat
2024-10-26 21:02:51 +00:00
github-actions[bot]
e8b88248f2 Update translation files (#5146) 2024-10-26 19:11:24 +02:00
transifex-integration[bot]
c6ba1b6a4e Translate cockatrice/cockatrice_en@source.ts in de (#5145)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-10-26 14:11:18 +02:00
RickyRister
c4c52bd8c0 Add keyboard shortcuts for skipping forward/backward in replays (#5140)
* split skipToTime into own function

* implement shortcut

* fix shortcut warning bug

* check boundary conditions in skipToTime

* change default fast forward shortcut to .

* implement big skip shortcuts

* remove unnecessary arg in lambda

* change default fast forward shortcut to Ctrl+F

* rename constants

* change default fast forward shortcut to Ctrl+P

* use static const
2024-10-23 14:00:23 +02:00
tooomm
c633a792f5 bump version (#5099) 2024-10-21 18:57:47 -04:00
Zach H
8d5421d9da Add backwards support Qt6.7's checkStateChanged on QCheckBoxes (#5137) 2024-10-20 23:35:34 -04:00
github-actions[bot]
b041f4ace2 Update translation source strings (#5117)
Co-authored-by: github-actions <github-actions@github.com>
2024-10-20 16:18:32 -04:00
RickyRister
d26f96db9e Add keyboard shortcuts for replays (#5136)
* add keyboard shortcut for play/pause

* add keyboard shortcut for fast-forward

* make shortcuts rebindable

* run formatter
2024-10-20 16:41:59 +02:00
LunaticCat
fa999880ee Major Directory Refactoring (#5118)
* refactored cardzone.cpp, added doc and changed if to switch case

* started moving every files into different folders

* remove undercase to match with other files naming convention

* refactored dialog files

* ran format.sh

* refactored client/tabs folder

* refactored client/tabs folder

* refactored client/tabs folder

* refactored client folder

* refactored carddbparser

* refactored dialogs

* Create sonar-project.properties

temporary file for lint

* Create build.yml

temporary file for lint

* removed all files from root directory

* removed all files from root directory

* added current branch to workflow

* fixed most broken import

* fixed issues while renaming files

* fixed oracle importer

* fixed dbconverter

* updated translations

* made sub-folders for client

* removed linter

* removed linter folder

* fixed oracle import

* revert card_zone documentation

* renamed db parser files name and deck_view imports

* fixed dlg file issue

* ran format file and fixed test file

* fixed carddb test files

* moved player folder in game

* updated translations and format files

* fixed peglib import

* format cmake files

* removing vcpkg to try to add it back later

* tried fixing vcpkg file

* renamed filter to filters and moved database parser to cards folder

* reverted translation files

* reverted oracle translated

* Update cockatrice/src/dialogs/dlg_register.cpp

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

* Update cockatrice/src/client/ui/window_main.cpp

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

* removed empty line at file start

* removed useless include from tab_supervisor.cpp

* refactored cardzone.cpp, added doc and changed if to switch case

* started moving every files into different folders

* remove undercase to match with other files naming convention

* refactored dialog files

* ran format.sh

* refactored client/tabs folder

* refactored client folder

* refactored carddbparser

* refactored dialogs

* removed all files from root directory

* Create sonar-project.properties

temporary file for lint

* Create build.yml

temporary file for lint

* added current branch to workflow

* fixed most broken import

* fixed issues while renaming files

* fixed oracle importer

* fixed dbconverter

* updated translations

* made sub-folders for client

* removed linter

* removed linter folder

* fixed oracle import

* revert card_zone documentation

* renamed db parser files name and deck_view imports

* fixed dlg file issue

* ran format file and fixed test file

* fixed carddb test files

* moved player folder in game

* updated translations and format files

* fixed peglib import

* reverted translation files

* format cmake files

* removing vcpkg to try to add it back later

* tried fixing vcpkg file

* pre-updating of cockatrice changes

* removed empty line at file start

* reverted oracle translated

* Update cockatrice/src/dialogs/dlg_register.cpp

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

* Update cockatrice/src/client/ui/window_main.cpp

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

* removed useless include from tab_supervisor.cpp

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2024-10-20 10:11:35 -04:00
RickyRister
d1e0f9dfc5 fix bug (#5133) 2024-10-19 20:18:35 -04:00
RickyRister
2d86938375 Consolidate play/pause buttons in replays (#5131)
* Consolidate play/pause buttons in replays

* always enable fast forward button

* run formatter
2024-10-19 20:18:01 -04:00
ebbit1q
4865269a73 don't delete "" (#5135) 2024-10-19 13:06:18 +02:00
dependabot[bot]
038ce3dcec Bump send and express in /webclient (#5123)
Bumps [send](https://github.com/pillarjs/send) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `send` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-11 04:28:41 +00:00
RickyRister
43b997fe40 follow symlinks when iterating through the custom image folder (#5126) 2024-10-11 04:27:24 +00:00
Polty
44e92f61ca #3945 deck list: Navigation keys (PageUp/Down, Home/End) (#5103)
* #3945 deck list: Navigation keys (PageUp/Down, Home/End) interact with the deck list.

* make Home/End work normally when there is text in the search textbox

* fix debug build, explicit cast from int to Qt::Key enum
2024-10-09 23:11:12 +02:00
Alexander Choi
b4bfa17cee In-game message macros available immediately in active games (#5113)
* In-game message macros available immediately in active games

* fix formatting

* init sayMenu actions with sayMenu as parent
2024-10-09 23:08:57 +02:00
tooomm
500b694cc6 CI: Fix logic in translation action after dependency update (#5124)
* Update translations-pull.yml

* Update translations-push.yml
2024-10-07 18:48:43 +00:00
dependabot[bot]
b998282304 Bump peter-evans/create-pull-request from 6 to 7 (#5110)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 20:05:44 +02:00
Alexander Choi
b704216553 fix macro shortcuts so that Ctrl+1 is not double-assigned (#5112) 2024-09-15 16:55:30 -04:00
transifex-integration[bot]
03ec02a749 Translate oracle/oracle_en@source.ts in fi (#5100) 2024-08-30 13:16:22 +02:00
Zach H
248ea82573 Support Game Events (#5087) 2024-08-25 00:31:20 +00:00
ebbit1q
bbe125beee replace cipt check with regex (#5094) 2024-08-25 00:31:01 +00:00
tooomm
95cd1c6f87 CI: Update install-qt-action (#5096) 2024-08-22 01:22:57 +02:00
J. Cameron McDonald
1c2107ae8f docs: fix readme "get involved" links (#5098) 2024-08-17 23:46:16 +02:00
ebbit1q
e826e17c6c add qtimageformats module (#5092)
* add qtimageformats module

* add qt6-image-formats-plugins to apt depends in cmakelists

* too many quotes

* add qt6-qtimageformats to rpm deps
2024-08-16 22:32:22 -04:00
Joseph Insalaco
b111f0921c Admin persistence changes (#5086) 2024-08-16 22:31:57 -04:00
transifex-integration[bot]
090a48515c Updates for project Cockatrice and language en_US (#5088)
* Translate cockatrice_en@source.ts in en_US

100% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

* Translate oracle/oracle_en@source.ts in en_US

100% translated source file: 'oracle/oracle_en@source.ts'
on 'en_US'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-08-03 14:29:28 +02:00
transifex-integration[bot]
b8555d8c42 Translate cockatrice/cockatrice_en@source.ts in nl (#5089)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'nl'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-08-03 14:16:42 +02:00
Joseph Insalaco
cf1f4f12a9 Updating Session Persistence with all valid persistence calls (#5085)
* Updating Session Persistence with all valid persistence calls

* Spacing fixes

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2024-07-29 17:25:33 +00:00
ebbit1q
ef4413633a fix regression in #4762 to _fill_with_ template (#5083)
fixes #5062
2024-07-29 01:20:50 +00:00
Zach H
c5bb38e907 Add types for Moderator commands (#5084)
* Add types for Moderator commands

* Support User Priv Level & userLevel
2024-07-29 01:16:29 +00:00
github-actions[bot]
9f515fc804 Update translation files (#5080) 2024-07-23 11:53:07 +02:00
Zach H
245edcefdd Add openssl to windows reqs (#5074) 2024-07-13 12:38:43 -04:00
transifex-integration[bot]
153f73c308 Translate cockatrice/cockatrice_en@source.ts in de (#5073)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-07-13 13:11:03 +00:00
github-actions[bot]
315837b267 Update translation source strings (#5069)
Co-authored-by: github-actions <github-actions@github.com>
2024-07-01 19:04:16 +02:00
Joseph Insalaco
ea8da24215 Webatrice: Adding joined game to persistence layer (#5068)
* Adding joined game to persistence layer

* Linting fixes
2024-06-27 02:06:47 +00:00
Joseph Insalaco
1ab723ca64 Webatrice: Adding game created to persistence layer (#5067) 2024-06-27 01:03:21 +00:00
Joseph Insalaco
f8bc6cf998 Adding remove messages to persistence layer (#5066) 2024-06-27 00:44:40 +00:00
Zach H
8687163cca Add few more interfaces (#5063) 2024-06-25 05:00:45 +00:00
Zach H
e261e16d99 Re-Add ability to share editable deck views (#5060)
- Rolls back 6811819161
- Follow up to adbb607700
2024-06-24 21:52:11 +00:00
Jeremy Letto
bdcd083eea refactor imports (#5058) 2024-06-17 01:00:23 -04:00
Zach H
c4bf9eb61c Cleanup (#5057)
* Add Types

* Add Types
2024-06-17 00:32:36 -04:00
Zach H
0994d10410 More stuff (#5056)
* Skeleton + RemoveMessages

* GameJoinedData
2024-06-16 23:26:03 -04:00
Zach H
291c535edb More web stuff (#5055)
* Add Response.gamesOfuser

* Cleanup and confirm all
2024-06-16 22:48:07 -04:00
ZeldaZach
f04702fdd1 Backwards Compatibility for rolling dice 2024-06-16 21:10:07 -04:00
Zach H
b7fbc12ac0 Allow Judges to see all information, regardless of room settings (#5053) 2024-06-16 19:12:37 -04:00
Zach H
e2ab8db958 Add some sessions (#5052)
* Add AccountEdit

* Add PasswordChange

* Cleanup

* Add SessionService.accountImage

* Add SessionService.message

* Add SessionService.getUserInfo

* Lint
2024-06-14 23:06:50 -04:00
Zach H
34d70980e8 Webatrice admin commands (#5051)
* Add AdminCommand.updateServerMessage

* Add AdminCommand.shutdownServer

* Add AdminCommand.reloadConfig

* Cleanup

* Add AdminCommand.adjustMod

* Lint

* Lint
2024-06-13 02:52:40 +00:00
Zach H
e45c4042fe Webatrice: Add all ModeratorCommands (#5049)
* Move viewLogHistory to Moderator commands

* Add Moderator.banFromServer

* Add Moderator.getBanHistory

* Add Moderator.getWarnHistory

* Add Moderator.warnUser

* Add Moderator.getWarnList
2024-06-13 02:15:14 +00:00
Zach H
ce8092318e Allow up to 100 dice to be rolled at a time (#5047)
* Allow up to 100 dice to be rolled at a time
- Fix #4276
2024-06-12 08:37:04 -04:00
transifex-integration[bot]
c95cc1dd9d Translate webclient/src/i18n-default.json in it (#5045)
100% translated source file: 'webclient/src/i18n-default.json'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2024-06-06 23:53:15 +00:00
Zach H
1f72877728 Drop MacOS 10.15/11 Support :( (#5033) 2024-05-31 09:10:54 -04:00
tooomm
93b40343d9 EnableCIServerMode (#5034) 2024-05-25 12:40:40 -04:00
transifex-integration[bot]
ba10108207 Translate cockatrice/cockatrice_en@source.ts in de (#5038) 2024-05-24 19:05:11 +02:00
github-actions[bot]
c28f66d673 Update translation source strings (#4973)
Co-authored-by: github-actions <github-actions@github.com>
2024-05-18 22:11:07 +02:00
Zach H
59f327f97a Pin XCode versions for Mac Builds (#5032) 2024-05-13 18:57:33 -04:00
tooomm
872c92a244 CI: Use windows-2022 image with Visual Studio 17 2022 (#4999)
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2024-05-13 17:41:50 -04:00
dependabot[bot]
2303880b87 Bump ejs from 3.1.8 to 3.1.10 in /webclient (#5027)
Bumps [ejs](https://github.com/mde/ejs) from 3.1.8 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.8...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 11:48:57 +00:00
github-actions[bot]
0e97cc1712 Update translation files (#5021)
Co-authored-by: github-actions <github-actions@github.com>
2024-04-24 19:37:31 -04:00
SlightlyCircuitous
d550e42441 Remove Fedora 38 Build and Add Fedora 40 Build (#5024)
* Remove Fedora 38 docker image

* Add Fedora 40 Dockerfile

* Remove Fedora 38, Add Fedora 40 to release template

* Remove Fedora 38, add Fedora 40 to desktop-build
2024-04-24 19:37:23 -04:00
SlightlyCircuitous
4279753030 Add Ubuntu 24.04 "Noble Numbat" Build (#5023)
* Create Ubuntu Noble Numbat dockerfile

* Add Noble Numbat to desktop_build

* Add Noble Numbat to release_template
2024-04-24 15:13:20 +02:00
Jeremy Letto
2f6c018b7a untangle updateStatus (#5018)
* untangle updateStatus

* fix test
2024-04-05 04:56:12 +00:00
Jeremy Letto
be5d42baba WebClient: refactor protobuf method structure (#5014) 2024-04-01 17:32:08 +00:00
ebbit1q
f174614496 assign new arrow id when arrow is moved to transformed card (#5012)
* add timeout to settingscache

* assign new arrow id when arrow is moved to transformed card

fixes bug introduced in #4907
fixes #5008
2024-03-27 14:47:00 +01:00
dependabot[bot]
e8c7fba8b0 Bump peter-evans/create-pull-request from 5 to 6 (#4997) 2024-03-19 19:42:08 +01:00
SlightlyCircuitous
5c49283023 Remove Ubuntu 23.04 Lunar Lobster Build (#5002)
* Delete .ci/UbuntuLunar directory

EOL

* Update release_template.md

Lunar is EOL

* Update desktop-build.yml

Lunar is EOL
2024-02-27 21:07:18 +01:00
ebbit1q
ad56b431a3 increase version number so we can create a beta (#5001) 2024-02-27 20:55:28 +01:00
SlightlyCircuitous
b0d8a33d5f Remove Fedora 37 Build, Add Fedora 39 Build (#5003) 2024-02-26 08:37:28 +01:00
dependabot[bot]
1715bcb216 Bump microsoft/setup-msbuild from 1 to 2 (#4996)
Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 1 to 2.
- [Release notes](https://github.com/microsoft/setup-msbuild/releases)
- [Changelog](https://github.com/microsoft/setup-msbuild/blob/main/building-release.md)
- [Commits](https://github.com/microsoft/setup-msbuild/compare/v1...v2)

---
updated-dependencies:
- dependency-name: microsoft/setup-msbuild
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-10 15:31:13 -05:00
tooomm
96caeaca72 Enable MTT over parallel flag (#4998) 2024-02-10 15:30:43 -05:00
tooomm
c8723ae935 Remove Gitter chat (#4995) 2024-02-01 18:25:04 +01:00
tooomm
94e39c044c update mv mapping (#4896) 2024-01-30 00:27:45 -05:00
ebbit1q
9776ea53c9 make translation update script more specific in line selection (#4993) 2024-01-25 23:28:23 +01:00
github-actions[bot]
675d07dac0 Update translation files (#4991)
Co-authored-by: github-actions <github-actions@github.com>
2024-01-23 22:29:40 +01:00
tooomm
1217820288 CI: GitHub Job Summary for Translation PRs (#4992) 2024-01-23 22:21:35 +01:00
tooomm
90e1a3cb76 Utilize new CPUs with more cores (#4988) 2024-01-22 23:15:20 +01:00
tooomm
7c1095ea50 CI: Fix ignore pattern & highlight status of translation automations (#4977)
* Add result of run to GHA summary

* Fix `paths-ignore`
2024-01-22 22:07:21 +01:00
dependabot[bot]
203e916a07 Bump actions/cache from 3 to 4 (#4990) 2024-01-22 19:32:27 +01:00
github-actions[bot]
7201e34b38 Update translation files (#4984)
Co-authored-by: github-actions <github-actions@github.com>
2024-01-18 20:50:28 +01:00
Basile Clement
6d032c378f Improve drag & drop behavior (#4963)
* Improve drag & drop behavior

This patch tweaks the drag & drop behavior (in particular, the grid
placement) to be more intuitive. More precisely, with this patch the
drag & drop will:

 - Only use the "hot spot" (i.e. position of the cursor on the card)
   for zones where the card is actually displayed around the cursor (in
   particular, not on the table where the card snaps to the grid).

 - Use better boundaries computed with respect to the center of the
   card (rather than its top left corner) for determining which grid
   cell a card should go to

 - Align behavior of the preview and the actual effect when overflow of
   the 3-card stacks occurs

 - Avoid visual glitches where the cursor ends up outside of the card or
   at incorrect offsets when moving the mouse too fast (which translates
   to overflows of the hot spot computation)

* Address review comments

 - Use simpler computation for restricting hotSpot range
 - Prevent dropping cards onto full 3-card slots
2024-01-01 16:51:36 -05:00
dependabot[bot]
badd8952f5 Bump @babel/traverse from 7.20.0 to 7.23.2 in /webclient (#4917)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.20.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 21:31:12 -05:00
dependabot[bot]
7209eddb2d Bump crypto-js from 4.1.1 to 4.2.0 in /webclient (#4926)
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 21:31:04 -05:00
dependabot[bot]
a7ffd43b29 Bump actions/upload-artifact from 3 to 4 (#4969)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 23:58:37 +01:00
tooomm
724ba69483 macOS 12 --> 13 (#4966) 2023-12-17 13:39:06 -05:00
ebbit1q
1716801437 make package on macos 13 (#4961) 2023-12-15 21:15:57 -05:00
ebbit1q
fa727524dc make cards on the stack slightly overlap to stress order (#4930)
* make cards on the stack slightly overlap to stress order

dragging cards to the stack now places the card at the location it is
dropped

* make default play action append to stack

* add vertical overlap to settings and vertical hand

* Update cockatrice/src/dlg_settings.cpp

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

* Fix format

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2023-12-15 14:00:58 -05:00
ebbit1q
28f80e18a0 add ctrl enter as shortcut for ok when setting annotation (#4929) 2023-12-15 13:55:11 -05:00
ebbit1q
4acc8bfe80 put cards on top in a random order (#4960) 2023-12-15 13:51:21 -05:00
Zach H
9f86ed7887 Fix Fedora Builds (#4964) 2023-12-15 13:49:32 -05:00
Basile Clement
cb18a55338 Support fractional scaling when scaling card images (#4962)
Fixes #4880
2023-12-14 14:24:35 +01:00
dependabot[bot]
78a928464c Bump @adobe/css-tools from 4.0.1 to 4.3.2 in /webclient (#4953)
Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.0.1 to 4.3.2.
- [Changelog](https://github.com/adobe/css-tools/blob/main/History.md)
- [Commits](https://github.com/adobe/css-tools/commits)

---
updated-dependencies:
- dependency-name: "@adobe/css-tools"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-09 00:53:10 -05:00
Zach H
07a8cd0a5f Fix #4903: Parse Email Addresses whenever used (#4932) 2023-12-09 00:52:47 -05:00
Zach H
b73ef58567 Support WebP format for Card Images (#4950)
- Fix #4939
2023-12-09 00:52:14 -05:00
Zach H
519531f3a0 Support escaping single and double quotes in Deck Editor Search Regex Strings (#4948)
- Fix #4946
2023-12-09 00:51:54 -05:00
tooomm
4b8e47d079 Update default theme name (#4944) 2023-11-20 01:01:42 +01:00
transifex-integration[bot]
ed170f7e07 Updates for project Cockatrice and language de (#4942)
* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

* Translate oracle/oracle_en@source.ts in de

100% translated source file: 'oracle/oracle_en@source.ts'
on 'de'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-11-18 12:10:11 +01:00
transifex-integration[bot]
6bb559874c Translate cockatrice/cockatrice_en@source.ts in it (#4941)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'it'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-11-18 08:44:10 +01:00
transifex-integration[bot]
9cd68e25b3 Translate cockatrice/cockatrice_en@source.ts in de (#4937)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-11-12 19:22:58 +01:00
transifex-integration[bot]
72ac441598 Updates for project Cockatrice and language de (#4934)
* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-11-05 19:15:48 +01:00
dependabot[bot]
f5fe56c85d Bump actions/setup-node from 3 to 4 (#4928)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-31 00:48:39 +01:00
tooomm
d4fc1be2cc CI: Cleanup & updates (#4921)
* simplify ci after 64bit only

* hint on macos 10.15 with qt6.2

* Update desktop-build.yml

* Update desktop-build.yml

* update xcode

* 14.3 finds 14.3.1, but 14.0 doesn't find 14.0.1

* Update desktop-build.yml
2023-10-28 14:36:50 -04:00
ebbit1q
7b3617a273 clean up #4904 for consistency (#4927)
note, this is not a racetime issue, see #4907
2023-10-28 14:35:15 -04:00
tooomm
3e8adae3de Rename "stack until found" feature (#4871)
* Rename "stack until found" feature

* lint
2023-10-25 18:43:57 +02:00
tooomm
9943133d6d TOTD: Exchange Gitter for Discord, Fix date format (#4920)
* Update tips_of_the_day.xml

* Delete cockatrice/resources/tips/images/gitter.png

* Add Discord icon

* Update cockatrice.qrc

* date format
2023-10-24 14:26:38 +02:00
tooomm
a5706a47af Include missing strings for translation (#4919) 2023-10-19 21:58:38 +02:00
github-actions[bot]
b3b911c64d Update translation files (#4913)
Co-authored-by: github-actions <github-actions@github.com>
2023-10-18 20:41:14 +02:00
github-actions[bot]
05beb4fcaf Update translation source strings (#4918) 2023-10-18 00:29:56 +02:00
tooomm
324b50e381 Improve Transifex pull action (#4916) 2023-10-16 22:51:08 +02:00
Zach H
186f4289e9 Address /W4 compiler warnings for Windows (#4910) 2023-10-15 20:31:13 -04:00
Zach H
cb90a8356b Use proto21 on macos11 (#4914) 2023-10-15 20:30:50 -04:00
tooomm
e9c502ab32 CI: Add action for pulling new translations (#4911)
* Update and rename translations.yml to translations-push.yml

* Rename update_translations.sh to update_translation_source_strings.sh

* Update and rename update_translations_template.md to update_translation_source_strings_template.md

* Add translations-pull.yml

* Update config

* Update desktop-lint.yml

* Update desktop-build.yml

* correct env var naming

* names
2023-10-15 18:47:15 -04:00
tooomm
f728520e97 Update release_template.md (#4909) 2023-10-13 22:52:08 -04:00
Zach H
c1b0d50237 Handle Qt6.6 Deprecations (#4908) 2023-10-13 20:53:47 -04:00
tooomm
b9cfc29059 CI: Use concurrency group (#4902) 2023-10-13 19:01:37 -04:00
ebbit1q
6bf7c79891 copy arrows on transform (#4907) 2023-10-13 19:01:08 -04:00
Zach H
2bd0e58354 HotFix: Prevent crashing if a Zone is null with an arrow while a player concedes race time (#4904) 2023-10-13 19:00:53 -04:00
Zach H
ee674cb0cf Support MacOS 12 & 13. Support Protobuf 23. Deprecate MacOS 11. (#4884) 2023-10-13 14:45:22 -04:00
transifex-integration[bot]
dd1b354d48 Translate webclient/src/i18n-default.json in de (#4906)
100% translated source file: 'webclient/src/i18n-default.json'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-13 14:26:05 -04:00
tooomm
d3e96f4a99 Switch to rolling release (#4905) 2023-10-13 14:25:40 -04:00
tooomm
90e2eb3db9 Webclient: Fix translation file names (#4897) 2023-10-09 18:05:43 +02:00
transifex-integration[bot]
102be6a350 Translate cockatrice_en@source.ts in en_US [Manual Sync] (#4893)
98% of minimum 80% translated source file: 'cockatrice_en@source.ts'
on 'en_US'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-06 22:56:03 +02:00
transifex-integration[bot]
be6152948c Updates for project Cockatrice and lanuage es on branch master (#4886)
* Translate i18n-default.json in es [Manual Sync]

99% of minimum 80% translated source file: 'i18n-default.json'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate cockatrice_en@source.ts in es [Manual Sync]

98% of minimum 80% translated source file: 'cockatrice_en@source.ts'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate i18n-default.json in es [Manual Sync]

99% of minimum 95% translated source file: 'i18n-default.json'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate cockatrice_en@source.ts in es [Manual Sync]

98% of minimum 95% translated source file: 'cockatrice_en@source.ts'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-06 22:52:37 +02:00
transifex-integration[bot]
f14bf4b205 Updates for project Cockatrice and lanuage it on branch master (#4887)
* Translate i18n-default.json in it [Manual Sync]

99% of minimum 80% translated source file: 'i18n-default.json'
on 'it'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate cockatrice_en@source.ts in it [Manual Sync]

98% of minimum 80% translated source file: 'cockatrice_en@source.ts'
on 'it'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate i18n-default.json in it [Manual Sync]

99% of minimum 95% translated source file: 'i18n-default.json'
on 'it'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-06 21:37:59 +02:00
transifex-integration[bot]
123ac2ca25 Updates for project Cockatrice and lanuage fr on branch master (#4888)
* Translate cockatrice_en@source.ts in fr [Manual Sync]

98% of minimum 80% translated source file: 'cockatrice_en@source.ts'
on 'fr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate i18n-default.json in fr [Manual Sync]

99% of minimum 80% translated source file: 'i18n-default.json'
on 'fr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate i18n-default.json in fr [Manual Sync]

99% of minimum 95% translated source file: 'i18n-default.json'
on 'fr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-06 21:36:56 +02:00
transifex-integration[bot]
7216b976ec Updates for project Cockatrice and lanuage pt_BR on branch master (#4890)
* Translate cockatrice_en@source.ts in pt_BR [Manual Sync]

98% of minimum 80% translated source file: 'cockatrice_en@source.ts'
on 'pt_BR'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate webclient/src/i18n-default.json in pt_BR

100% translated source file: 'webclient/src/i18n-default.json'
on 'pt_BR'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-10-06 21:36:16 +02:00
ebbit1q
7fb698cfbf update release template with #4883 deprecating 32 bit (#4885) 2023-10-02 14:09:19 -04:00
Zach H
b0470ab678 Move to OpenSSLv3 (& Drop 32-bit) (#4883) 2023-10-01 17:19:31 -04:00
Zach H
0deb037035 Address connect errors in logs (#4882) 2023-10-01 15:30:54 -04:00
ZeldaZach
064b362d60 Bump to 2.9.0 :) 2023-09-14 22:14:22 -04:00
tooomm
6bbe228a84 README: Cleanup translations widget and links (#4870)
* Fix translations widget and links

* Name webatrice
2023-09-11 22:13:52 -04:00
transifex-integration[bot]
a8ba8b6ab5 Updates for project Cockatrice and lanuage de on branch master (#4867)
* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

* Translate cockatrice/cockatrice_en@source.ts in de

100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-09-11 21:24:57 +02:00
dependabot[bot]
e850f6c2a5 Bump actions/checkout from 3 to 4 (#4866) 2023-09-07 23:11:19 +02:00
github-actions[bot]
e9eb7d6db1 Update translation source strings (#4865)
Co-authored-by: github-actions <github-actions@github.com>
2023-09-01 20:20:19 -04:00
tooomm
56d21321d0 remove translation string (#4860) 2023-08-18 12:34:54 -04:00
transifex-integration[bot]
3888a74212 Translate oracle/oracle_en@source.ts in de (#4862)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-08-18 12:34:39 -04:00
transifex-integration[bot]
0035e29f9e Translate webclient/src/i18n-default.json in pt_BR (#4863)
100% translated source file: 'webclient/src/i18n-default.json'
on 'pt_BR'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-08-18 12:34:30 -04:00
ebbit1q
90679d5669 fix issues with #4648 (#4864) 2023-08-18 12:34:17 -04:00
transifex-integration[bot]
ac5dc2578a Translate cockatrice/cockatrice_en@source.ts in de (#4861)
100% translated source file: 'cockatrice/cockatrice_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-08-13 20:51:02 +02:00
tooomm
671e6823be cleanup vcpkg.json (#4859) 2023-08-11 13:35:59 +02:00
github-actions[bot]
0d76662311 Update translation source strings (#4843)
Co-authored-by: github-actions <github-actions@github.com>
2023-08-10 22:37:17 +02:00
tooomm
8dd59cf3cf CI: Bump GitHub actions + submodule (#4852)
* Bump used actions

* Update vcpkg submodule (#4857)

* Pause npm updates for webclient (#4853)

* Bump peter-evans/create-pull-request from 4 to 5 (#4846)

Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update vcpkg

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump vcpkg action to v11

* Update vcpkg cache setting

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 12:28:16 +02:00
dependabot[bot]
332d25dc00 Bump peter-evans/create-pull-request from 4 to 5 (#4846)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-08 23:21:26 +02:00
tooomm
0fa81a77dc Pause npm updates for webclient (#4853) 2023-08-08 13:17:28 +02:00
tooomm
9a74d8f72d update link (#4845) 2023-08-06 22:46:02 -04:00
Zach H
8c539351e3 Fix Mac Builds (#4844) 2023-08-06 22:45:45 -04:00
ebbit1q
e3552fc0ae add more default shortcuts (#4349)
* add more default shortcuts

replace the ctrl a look at top of library shortcut with ctrl shift n
use ctl a for draw arrow
replace ctrl shift b for toggle sideboard lock
use ctrl b for move card to bottom of library
use ctrl shift l for start local game
add keyboard shortcuts for all 3 counter colors using , . / keys
use ctrl [ ] \ for the "other" counter
add ctrl = as an easy alternative to ctrl + for people without keypads
( on linux ctrl alt keypad + is a special key that is reserved in x
  it produces the XF86_Next_VMode keyboard event which isn't bindable )
use alt u for toggling untapping
use alt l for peeking at cards
use ctrl alt u for unattaching cards
use alt n for set annotation
use alt y for milling one card

* use alt f for flipping cards
2023-08-06 17:56:24 -04:00
tooomm
ca308636c3 CI: Add automatic PR creation for source string updates (#4544)
* wording

* add pr creation

* Update translations.yml

* Update translations.yml

* update translation workflow

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* skip ci update

* skip ci update

* update conditions

* remove empty line

* typo

* tee test

* cleanup

* pass data between steps

* opt for step output over env variable

* remove space

* create script

* wording

* fix fork protection, re-add pr run

* updates

* Update translations.yml

* adjust for new source paths

* update comment

* wording

Co-authored-by: ebbit1q <ebbit1q@gmail.com>

* wording

* reorder

* reorder

* fix deprecation of set-output

* fix version

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2023-08-06 17:55:50 -04:00
ebbit1q
244cb847fb replace trayicon activation with menu actions (#4632) 2023-08-06 17:55:02 -04:00
tooomm
176c52daf2 Enable Dependabot (#4795)
* add dependabot file

* disable submodules for now
2023-08-06 17:54:17 -04:00
tooomm
ee3525ec64 Webclient: Brazilian translations are doubled (#4809)
* cleanup old brazilian translations

* pt-br --> pt_br

* pt-br --> pt_br

* pt-br --> pt_br
2023-08-06 17:53:55 -04:00
dependabot[bot]
adce921be7 Bump protobufjs from 7.1.2 to 7.2.4 in /webclient (#4827)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.1.2 to 7.2.4.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.1.2...protobufjs-v7.2.4)

---
updated-dependencies:
- dependency-name: protobufjs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-06 17:53:41 -04:00
dependabot[bot]
20ceb1c284 Bump semver from 6.3.0 to 6.3.1 in /webclient (#4829)
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-06 17:53:32 -04:00
dependabot[bot]
db4364b8f8 Bump tough-cookie from 4.1.2 to 4.1.3 in /webclient (#4828)
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-06 17:53:25 -04:00
dependabot[bot]
48d6435e09 Bump word-wrap from 1.2.3 to 1.2.4 in /webclient (#4831)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-06 17:53:18 -04:00
ebbit1q
7c20e9ab34 add move cards from top of library until dialog (#4648)
a bit of a hack, the client will use the play top card action and then
compare it with the propmpted expression, as if you were cascading
normally but really fast

the new keybind for this is ctrl shift y

I have ratelimited the action to 10 cards a second
2023-08-06 17:53:07 -04:00
ebbit1q
cb52605928 use a regex to remove all reserved characters from file names (#4804) 2023-08-06 17:46:22 -04:00
Guangcong Luo
bd3100dcda Update macOS Monterey app icon (#4805) 2023-08-06 17:46:03 -04:00
ebbit1q
afb7c35cfd add a way to replace the user facing list of disallowed words (#4807) 2023-08-06 17:45:37 -04:00
tooomm
5b694a55d2 CI: Remove fedora 36 (#4799)
* remove fedora 36

* remove fedora 36

* remove fedora 36
2023-08-04 02:02:44 +02:00
SlightlyCircuitous
f750a4cd72 Remove Ubuntu 22.10 Kinetic Kudu Build (#4826) 2023-07-25 21:34:18 -04:00
SlightlyCircuitous
eddeaaf52a Add Debian 12 "Bookworm" Build (#4812) 2023-06-14 20:28:12 -04:00
tooomm
2b42bee424 Webclient: lint (#4810)
* lint

* lint
2023-05-14 00:09:40 +02:00
SlightlyCircuitous
b9706c0cc1 Add indentation (#4806)
Improves readability
2023-05-09 17:08:06 -04:00
transifex-integration[bot]
800b21b000 Apply translations in pt_BR (#4801)
100% translated for the source file 'cockatrice/cockatrice_en@source.ts'
on the 'pt_BR' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-05-09 17:07:23 -04:00
transifex-integration[bot]
d1736a25bb Translate webclient/src/i18n-default.json in pt_BR (#4800)
100% translated for the source file 'webclient/src/i18n-default.json'
on the 'pt_BR' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-05-09 17:06:40 -04:00
ebbit1q
f269e5fe58 add fedora 38, scheduled to release next week (#4785) 2023-04-30 14:21:13 +02:00
tooomm
45a5296013 CI: Fix versions before deprecation (#4798)
* fix deprecation warning

* fix deprecation warning
2023-04-30 13:51:09 +02:00
SlightlyCircuitous
5f0ab2a177 CPack DMG Installer with Background Image (#4787)
* Set some CPack variables

WIP for DMG background image

* Use a .tif for background

* Add Background image and DS_Store script

Script is from https://www.kitware.com//creating-mac-os-x-packages-with-cmake/ with cmake.app changed to cockatrice.app

* Add position for all icons

* Adjust background size and icon position

This draws dbconverter off the screen as a hack to hide it, so hopefully it doesn't break.

* Add files via upload

* Change Icon Position

Icon position is probably relative to the window edge, not the edge of the screen so the numbers should be lower.

* Adjust Icon Position and Window Boundaries

Applescript seems to use the center of the icon rather than the left corner so the coordinates need to be adjusted by 64 px. 

The finder window counts the 22 px of the title bar in the window size so 22 must be added to the fourth coord of position to fit the entire image.

* Fix spelling of Servatrice

* Satifsfy Code Style

* Use vector format (eps)

* Delete background.tif

* Use vector format (eps)

* Use the right file extention in the script

* Point to svg

* Use svg

* Add svg for background image

* Delete background.eps

* Use plain SVG, adjust text

* Move applescript to /cmake

* Move background to /cmake

* Point CPack to /cmake

background and applescript now reside there

* Revert to .tif

* Use compressed .tif

* Use more specific file name

* Script expects .background:background.tif
2023-04-29 23:13:01 -04:00
ebbit1q
70ab02987a save sets dialog size (#4791)
* save sets dialog size

* reset sorting when restoring

* add to gitignore
2023-04-29 23:10:59 -04:00
ebbit1q
421da882d8 qt 6.5 compatibility (#4796)
* remove metatypes definitions

* deprecation of QApplication::setActiveWindow
2023-04-29 23:09:26 -04:00
SlightlyCircuitous
1a40102f71 Remove Debian 10 "Buster" Build (#4789)
* Drop Debian 10 Support

EOL September 10 2022

* Drop Debian 10 Support

EOL September 10, 2022

* Drop Debian 10 Support

EOL September 10, 2022
2023-04-19 23:04:35 +02:00
SlightlyCircuitous
1fbc10cd77 Add Ubuntu 23.04 Lunar Lobster Build (#4784)
* Create Lunar Dockerfile

Note that qt6-svg-dev and qt6-websockets-dev are renamed replacements for libqt6svg6-dev and libqt6websockets6-dev, respectively.

* Add Ubuntu Lunar

* Add Ubuntu Lunar to Template
2023-04-12 22:31:39 +02:00
skwerlman
87462398d8 show deck hash even when its invalid (#4595)
* show deck hash even when its invalid

* remove invalid deck hashes entirely

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2023-04-10 22:29:29 +02:00
dependabot[bot]
b33246b29f Bump loader-utils from 2.0.3 to 2.0.4 in /webclient (#4707)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-01 22:31:44 -04:00
transifex-integration[bot]
dbffe30f63 Translate /webclient/src/i18n-default.json in es (#4657)
translation completed for the source file '/webclient/src/i18n-default.json'
on the 'es' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-04-01 22:30:59 -04:00
ebbit1q
9ce450d0b0 add _substr_[pos]_[len] to picture download templates (#4762) 2023-04-01 22:29:57 -04:00
ebbit1q
f5f8acf1fd save downloaded xmls (#4736) 2023-04-01 22:19:57 -04:00
tooomm
304ed3cd60 UI: User info dialog updates (#4533) 2023-04-01 21:50:49 -04:00
dependabot[bot]
07248692ce Bump webpack from 5.74.0 to 5.76.1 in /webclient (#4774)
Bumps [webpack](https://github.com/webpack/webpack) from 5.74.0 to 5.76.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.74.0...v5.76.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 23:46:50 -04:00
Brent Clark
cef99cba71 Add left nav (#4705)
* Automated translation update ( bf08a04cda )

* Add Layout component wip

* finish layout implementation

* convert header to left nav

* better nav item spacing

* return source files to original glory

* lint fix

* Remove height limit on login screen

* fix top spacing on 3-panel layout

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Brent Clark <brent@backboneiq.com>
2023-03-15 23:45:55 -04:00
SlightlyCircuitous
cab5f29b57 Add 'persistent' as valid attribute of related (#4771) 2023-03-10 02:36:17 +01: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
a416ee8f2b set target to sha in release creation (#4763) 2023-03-03 11:40:16 -05:00
Basile Clement
c14936c63c PictureLoader: Replace downloadedPics cache with QNetworkCache (#4756)
* PictureLoader: Replace downloadedPics cache with QNetworkCache

Currently when the "Download card pictures on the fly" option is
enabled, Cockatrice stores downloaded pictures into a downloadedPics
sub-folder, keyed on set and card name. If a picture is found in that
folder, we never try to download a picture for that card ever again
(until it is reprinted in a more recent set, I guess).

This has the unfortunate consequence that if you change the URLs for
downloading card images, the changes are not applied to cards that
already have their picture downloaded. In particular, if you use
localized card pictures (through !sflang!), you get a mix of cards in
different languages depending on the currently configured language at
the time each card was downloaded.

This patch removes that mechanism in favor of setting a
QNetworkDiskCache on the QNetworkAccessManager used by the PictureLoader
to download pictures. The QNetworkDiskCache caches the picture keyed on
their URL: if the URL changes, a new request will be made. In
particular, if you use picture URLs with !sflang! and change the
language, pictures for the current language will be downloaded even for
cards that already have a picture. The QNetworkDiskCache is configured
with a maximum size of 4GB, which should be enough to hold one
high-quality JPEG for each M:TG card in existence.

Note that this does not affect the existing mechanism for defining
custom card art, either through the CUSTOM directory or the set-based
one.  Cockatrice will still read existing cards in the downloadedPics
directory as before, it will just no longer write into that directory
(since pictures are cached by the QNetworkDiskCache instead). To fully
switch to the new cache, users should use the "Delete Downloaded Images"
button in the settings: it will clear the QNetworkDiskCache but also
remove the downloadedPics directory.

* Do not use system cache dir for portable installs

* Add settings for network cache size

* Delete corrupted cache entries

* Use old-style connect() syntax (Qt5 build failure)

* Add setNetworkCacheSizeInMB to test mocks

* setTransferTimeout was added in Qt 5.15

* Improve logging messages

We now have the following messages

 - "Trying to download picture from url: URL" before loading a picture
   when picture download is enabled
 - "Trying to load picture from cache: URL" before loading a picture
   when picture download is disabled (i.e. cache-only offline mode)
 - "Removing corrupted cache file for url URL and retrying (ERR)" when
   when we fail to load a picture from the cache. Usually, this should
   be due to the timeout, in which case ERR will be "Operation
   Canceled".
 - "Download failed for url URL (ERR)" when there was an error
   downloading a picture from the network (ERR is the error message)
 - "Following redirect to URL" and "Following cached redirect to URL"
   when following a redirect (from network/from cache)
 - "Image successfully downloaded from URL" and "Image successfully
   loaded from cached url at URL" on success
 - "Possible cached/downloaded picture at URL could not be loaded" on
   ImageReader error

* Clarify that network cache is on disk

Also migrate "Delete Downloaded Image" to a "Clear" button right next to
the network cache size.

* Remove qPrintable

* Move pixmap cache settings to card sources

* qDebug().nospace()

* some formatting on debug messages

* format

* inverted condition

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2023-03-03 16:55:17 +01:00
Basile Clement
42e7a8b423 Better support Double-Faced Cards (#4753)
* Better support Double-Faced Cards

This patch allows cards to be (virtually) transformed into other cards
while preserving their state, essentially implemeting the MTG mechanic
of the same name.

On the server side, this is implemented by allowing cards to be "stashed
away". A card that is stashed away is not in any zone, but is instead
owned by another card. When a token is destroyed due to a zone change,
if it had a card stashed away, that card is placed in the target zone
instead of the token.

On the database side, `attach="transform"` is used on `<reverse>` and
`<reverse-related>` to indicate that the created token should be
transformed this way.

Old servers ignore the new field in `Command_CreateToken` and will
perform a regular attachment, as currently.

* Address review comments

* Prevent tokens from being stashed

* format.sh
2023-03-03 16:54:51 +01:00
ebbit1q
4558b1c7ef set the target in the created release (#4758)
the target needs to be the current short commit hash because it is being
compared to by the updater, the default is "master" which breaks the
updater.
2023-02-23 01:11:41 +01:00
SlightlyCircuitous
f444ba9665 Corrected edition search syntax (#4752)
* Replaced "e:lea,leb" with "e:lea or e:leb"
* Removed "e:lea,leb -(e:lea e:leb) (Cards that appear in Alpha or Beta but not in both editions)" as this does not produce results in Cockatrice (even when using "or" instead of "," as above)
2023-02-16 12:08:00 +01:00
ebbit1q
787c8d740b replace github release actions with the gh tool in bash (#4746)
* replace github release actions with the gh tool in bash

* set macos 10.15 qt version to 6.2 LTS
2023-02-10 03:33:48 -05:00
Basile Clement
ef38a8bb2b Re-add missing '/' separator in <pt> after b282df2e27 (#4747)
In b282df2e27 (#4728) the logic for
creating <pt> values was updated to avoid adding a final slash after an
existing power value and missing toughness value. This works by setting
the ptSeparator to an empty string when either the power or the
toughness is undefined. However, due to the ptSeparator variable being
scoped out of the `for` loop, this causes all remaining cards to have an
empty string as a separator, ending up with <pt> values of e.g. 21
instead of 2/1.

Moreover, the implementation from #4728 is ambiguous in the case of a
card having a toughness value but no power value: in that situation, it
creates a <pt> entry with the toughness value and no separator, which is
not a good idea since it is not possible to know if <pt>2</pt> means
power 2 and no toughness, or no power and toughness 2 (Cockatrice takes
the first interpretation).

To avoid ambiguities, the <pt> value is now one of:

 1. A regular P/T value when the card has power and toughness
 2. A simplified P value when the card has power but no toughness
 3. A simplified /T value when the card has toughness but no power
 4. Absent when the card has neither power nor toughness

Note that, as far as I can tell, Cockatrice seems to (incorrectly, IMO)
ignore the initial slash if present in Player::parsePT, and treat /T as
a power value. However that is a separate issue: this patch is concerned
with Oracle and ensuring proper values in cards.xml, not with how
Cockatrice interprets those values.
2023-02-08 19:59:14 +01:00
Jeremy Letto
b5d35d346a Add architecture image to webclient README (#4745) 2023-02-08 18:04:23 +01:00
Basile Clement
9a7b15d19b Allow revealing specific cards from hand and library (#4743)
Currently Cockatrice allows revealing the whole hand, or one card at
random from the hand. Sometimes, a player needs to reveal a specific
card from their hand instead, which is not supported. To achieve a
similar effect, players usually move the corresponding card (or cards)
to a public zone, then back to their hand. While this works, it is
unsatisfactory (compared to a regular reveal, you can't keep the
"revealed" window around, for one) and somewhat unintuitive.

This patch adds a "Reveal to..." menu to cards and card selections in
the player's hand or in custom zones (this includes looking at the
player's library). This menu allows revealing a card or set of cards to
any given player, or to all players.

To implement this functionality at the protocol level, the existing
RevealCards command is extended to support revealing multiple specific
cards. This is done by making `card_id` a non-packed repeated field in
the `Command_RevealCards` and `Event_RevealCards` protobufs.  Using a
non-packed repeated fields allows maintaining backwards compatibility:
an empty optional field is encoded the same way as an empty non-packed
list, an optional field with a value is encoded the same way as a
one-element non-packed list, and when decoding a multi-elements
non-packed list as an optional, only the last item in the list is read.

Since the RevealCards command already exists, and due to the compatible
encodings, a new client connecting to an old server can reveal a single
specific card from their hand. When trying to reveal multiple cards at
once, the old server will only see the request for one of the cards to
be revealed, and the player will have to reveal each card separately.

On the other hand, `Event_RevealedCards` already has an explicit list of
cards revealed by the server, and the `card_id` field is only used when
exactly one card has been revealed: thus, old and new clients will
behave identically when receiving a new `Event_RevealedCards`. In
particular, if a player using a new client reveals multiple cards from
their hand on a new server, another player using an old client will
correctly see all the revealed cards.

The approach used to build the "Reveal to..." menu is slightly different
from the approach used to build other player selection menus. Because
the "Reveal to..." menu is specific to each card, but must also be
updated whenever a player is added to or removed from the game, I chose
to re-create it on the fly whenever a card is clicked, as that seemed
the safest way to avoid both memory leaks and inconsistent state given
my understanding of the code.
2023-02-07 17:12:04 -05:00
Zach H
ba35a11e82 Find OpenSSL on Windows (#4730) 2023-02-07 16:47:50 -05:00
Basile Clement
00c9efe541 Enable buttons for current game when receiving server response (#4737)
* Enable buttons for current game when receiving server response

Previously, upon joining a game, we were unconditionally re-enabling the
"Join" button in the lobby, even if it was not enabled in the first
place, causing #4698. This could also lead to issues where if the user
selects a different game after joining (which they can do in case of
e.g. network connectivity issues), the "Join as spectator" button could
get incorrectly disabled.

This fixes #4698 by re-enabling the buttons based on the state of the
currently selected game at the time the response is received. This also
avoids inconsistencies if a different game has been selected in between
joining and receiving a response from the server.

* Typo: enable gameButton in enableButtons

The "create game" button was incorrectly being disabled in enableButtons
whereas (as the name indicates) it should have been enabled

* Remove misleading comment about race conditions
2023-02-06 13:49:45 +01:00
cajun
44d1ab348b Add Oracle support for persistent & Fix persistent on reverse-related (#4742)
* fix persistent reverse-related

* create relations from spellbook property

* run format.sh
2023-02-06 07:00:54 -05:00
Zach H
f25e4785ae FIX #4665: Address missing sound on Qt5 Builds (#4733)
* FIX #4665: Address missing sound on Qt5 Builds

* FIX #4665: Address missing sound on Qt5 Builds

* Include both engines
2023-02-05 22:05:47 -05:00
Zach H
4c290aec57 Fix #4706: don't replace ampersands when loading from plain text (#4734)
* Fix #4706: Exit linting early if a card with the exact name is found first

* Remove ampersand conversion

* put back

* Update tests

* Format

* don't use qsizetype

---------

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2023-01-30 00:37:28 +01:00
tooomm
42d1d66d9b CI: macOS-10.15 environment is deprecated (#4664)
* macOS-10.15 environment is deprecated

Build for 10.14 has to be dropped.
Build for 10.15 can be preserved via 11.

* update xcode versions

* Xcode 13.0 doesn't work for us on Big Sur

* [skip ci] update list of binaries
2023-01-29 12:47:42 -05:00
ebbit1q
06c25301a5 update build dockerfiles (#4732) 2023-01-23 18:14:35 -05:00
transifex-integration[bot]
43dbb45cc6 Translate /webclient/src/i18n-default.json in it (#4718)
translation completed updated for the source file '/webclient/src/i18n-default.json'
on the 'it' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-01-23 02:26:24 -05:00
dependabot[bot]
9fb62de5cb Bump json5 from 1.0.1 to 1.0.2 in /webclient (#4729)
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 02:26:12 -05:00
PakhomCh
b282df2e27 Fixed ptSeparation oracle issue (#4728)
* Fixed psTeparation oracle issue

* Update oracle/src/oracleimporter.cpp

Co-authored-by: PakhomCh <pakhomch@gmail.com>
2023-01-16 13:30:19 -05:00
ebbit1q
da8f57f397 remove link to google doc roadmap from readme (#4727) 2023-01-02 22:07:18 -05:00
SlightlyCircuitous
e9f1992c7f Add URL to explain message macros (#4712)
* Add URL Link to Explain Message Macros

* Add URL Link to Explain Message Macros

* Revert custom shortcuts wiki link

* Conform to formatting guidelines
2022-12-11 23:54:06 +01:00
transifex-integration[bot]
2c94a6a64e Apply translations in it (#4714)
translation completed for the source file '/cockatrice/cockatrice_en@source.ts'
on the 'it' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2022-12-11 23:42:51 +01:00
SlightlyCircuitous
6a5e0a8501 Display Welcome Message as Most Recent Message (#4720)
* Move Join Message Block

- Moves Join Message code block to after the for loop that gets old chat message, which makes the Join Message the most recent message in the chat box instead of the oldest
-Only the rc.enqueuePostResponseItem() line really needs to move for functionality, but I have moved the whole block for readability

* Comply with formatting guide

-Remove offending white space
2022-12-11 23:40:47 +01:00
Jeremy Letto
26d7fe2ff0 Webatrice: update deps (#4700)
* save work

* fix reset styling

* fix toast reducer

* update non-react deps

* update react libraries

* remove jquery, use sanitize-html instead

* add missing change

* fix deps and dev deps

* update workflow to target Node 16

* run @mui/codemod to remove @mui/styles

* add default body font size

* update react 17 to 18

* declare enum before use

* add rel attr to links

* fix font sizing issue

* trailing commas

* refactor deep destructuring

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-11-01 12:41:42 -05:00
ebbit1q
5854a635ca fix deprecated usage of set-output (#4699) 2022-10-31 23:26:26 +01:00
ebbit1q
3d4858b840 use qt6 in arch builds (#4691)
* use qt6 in arch builds

* fix 6.4.0 deprecations
2022-10-31 23:26:13 +01:00
ebbit1q
dec2a252fa remove dependency on deprecated qt5 libraries for qt6 (#4692)
* remove dependency on deprecated qt5 libraries for qt6

removes the use of qt6-5compat for builds
replaces use of QRegExp with QRegularExpression
fixes incorrect usage of QRegExp
removes use of QTextCodec
fixes incorrect usage of QTextCodec
sets qtlinguist as a required component for qt6

* fix anchoredPattern not existing in qt 5.11
2022-10-31 23:24:11 +01:00
Jeremy Letto
f619ef23fd Upgrade to MUI 5 (#4606)
* save work

* fix perf issue on i18n rollup

* fix reset styling

* move body line-height from reset

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-10-29 20:17:03 -05:00
Antoine Dahan
72743e834e Selecting game already open in a tab brings user to that tab. (#4653)
* When trying to join a game from GameSelector that's already been joined by you, navigate to its game tab.

* return immediately, do not change button states

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-10-29 15:46:50 +02:00
Tobyclark
8e4ddf366c Added hint when drawing 0 cards (#4697)
* Logging a player drawing 0 cards will now result in the message "player had no cards left to draw."

* Added hint when drawing when deck is empty

* Added hint when drawing when deck is empty

* Added hint when drawing when deck is empty

* Update cockatrice/src/messagelogwidget.cpp

update log message to present tense

Co-authored-by: ebbit1q <ebbit1q@gmail.com>

* added deckIsEmpty parameter to messagelogwidget::logDrawCards

* run format

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-10-29 15:46:29 +02:00
ebbit1q
b99bd0176a update deprecated workflow actions (#4690) 2022-10-17 23:55:07 -04:00
ebbit1q
a68b98b245 update vcpkg submodule (#4689) 2022-10-17 18:23:39 -04:00
transifex-integration[bot]
a69d6ff1b4 Translate /oracle/oracle_en@source.ts in it (#4688)
translation completed for the source file '/oracle/oracle_en@source.ts'
on the 'it' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2022-10-17 16:43:31 -04:00
transifex-integration[bot]
ec679e95fd Translate /webclient/src/i18n-default.json in fr (#4678)
translation completed updated for the source file '/webclient/src/i18n-default.json'
on the 'fr' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2022-10-17 16:43:14 -04:00
ebbit1q
3f78235a74 fix updater with changes in release name (#4666)
* fix updater with changes in release name

* clangify
2022-10-17 16:42:08 -04:00
ebbit1q
c8a2fd78b0 fix crash when right clicking a user's name in a replay (#4681)
this happened when viewing a replay with the "view replay" option in the
top menu, instead of using the replays tab while connected to a server.
this uses the local game player instead of the online one which does not
initialize the player info of the local spectating player, this causes a
crash when opening the context menu on another player in the replay from
one of their chat messages as it tries to check if you're a registered
user and could add them as a friend etc.
it now regards the uninitialized player info as an unregistered user and
will not show these options.
2022-10-17 16:40:27 -04: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
ebbit1q
527ac36129 update card menu immediately on card counter event (#4686)
fixes #4658
2022-10-17 16:37:32 -04:00
ebbit1q
a7232513a7 remove cards being looked at from the count on drawing (#4671) 2022-10-17 16:35:54 -04:00
ebbit1q
90f187e885 fix 4679 (#4680) 2022-10-02 13:23:35 -04:00
ebbit1q
235adbbdf1 fix sound slider on qt6 (#4642) 2022-09-01 19:01:20 +02:00
cajun
40c88fe385 Conjured tokens xml attribute (#4646)
* Conjured xml attr

Add conjured attribute to related xml tags that makes those cards not be destroyed when they leave the battlefield.

* fix build errors, add sarkhan to test

* update oracle importer to support spellbooks from json

* debugging

* fix weird spacing

* fix oracle spacing too

* simplify if/else

Co-authored-by: Zach H <zahalpern+github@gmail.com>

* rename, remove oracle update

* remove extra linebreak

* run format.sh again
2022-09-01 08:45:04 +02:00
tooomm
54b7943d17 CI: Update Qt setup on Windows (#4654)
* use new internal caching

* Update desktop-build.yml

* Update desktop-build.yml

* Update desktop-build.yml

* use newest patch version

jurplel/install-qt-action#version

* python not needed

* Update desktop-build.yml

* Update desktop-build.yml

* Update desktop-build.yml

* Update desktop-build.yml

* Update desktop-build.yml

* install openssl via tools

* add $RUNNER_WORKSPACE location

Source: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/environment-variables-full-list-github-actions

* Update FindWin32SslRuntime.cmake

* Update FindWin32SslRuntime.cmake

* Update FindWin32SslRuntime.cmake

* Update FindWin32SslRuntime.cmake

* Delete download_openssl.sh

* cleanup

* [skip ci] improve short-circuit evaluation comment

* restructure
2022-09-01 02:38:25 +02:00
ebbit1q
2f100f2ba3 fix keepalive being multiplied in server timeout (#4663)
* fix keepalive being multiplied in server timeout

a timeout happened after the client not receiving anything for
keepalive * keepalive * maxtimeout (5 * 5 * 10) seconds instead of what
you'd expect, it now only uses keepalive once instead of twice this
means it should now take 50 seconds to time out when disconnected

* change timeout to 15 seconds instead

change time between pings to 3 from 5 seconds
change timout to 5 from 10 repeats
2022-09-01 02:38:10 +02: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
Gian Furrer
a2624e36f3 fix broken link in readme (#4659) 2022-08-11 23:21:30 +02:00
transifex-integration[bot]
540511befd Apply translations in es (#4656)
translation completed for the source file '/cockatrice/cockatrice_en@source.ts'
on the 'es' language.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2022-08-10 16:35:09 +02:00
tooomm
014e73d569 CI: Remove EOL builds (Fedora 34 and Ubuntu 21.10) (#4628)
* Fedora 34 EOL

* Delete .ci/Fedora34 directory

* update fedora

* Ubuntu 21.10 EOL

* Ubuntu 21.10 EOL

* Delete .ci/UbuntuImpish directory
2022-08-09 20:56:27 +02:00
ebbit1q
e2c256db5b fix typo in format.sh (#4647) 2022-07-05 15:49:19 -04:00
ebbit1q
28aa473362 rework formatting with cmake-format (#4627)
* merge clangify and cmakify into format.sh

update desktop lint workflow to 22.04

print cmake-format version as well

um, rename things?

add extra examples to format.sh --help
add option to not run clang-format
fix version display in .ci/lint_cpp.sh
fix relative paths in format.sh

fix formatting dirs

* run ./format.sh --cmake --branch ""

* revert formatting of cmake comments
2022-06-08 21:14:26 -04:00
ebbit1q
b79506fbcf add a windows 7 specific build to ci (#4639) 2022-06-08 21:09:35 -04:00
ebbit1q
afbd7252ac remove stopping sounds from interrupting each other (#4640) 2022-06-08 21:06:44 -04:00
ebbit1q
3e5b7cd392 remove unused variables (#4636) 2022-06-08 00:32:11 +02:00
Dawid Skórzewski
77622095d5 Fixed typos in Qt6_FOUND function reference (#4638) 2022-06-04 22:33:02 -04:00
dependabot[bot]
8ee71300a2 Bump protobufjs from 6.11.2 to 6.11.3 in /webclient (#4637)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 6.11.2 to 6.11.3.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/v6.11.3/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/v6.11.2...v6.11.3)

---
updated-dependencies:
- dependency-name: protobufjs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 01:21:37 -04:00
dependabot[bot]
d79971edbc Bump dexie from 3.2.1 to 3.2.2 in /webclient (#4629)
Bumps [dexie](https://github.com/dfahlander/Dexie.js) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/dfahlander/Dexie.js/releases)
- [Commits](https://github.com/dfahlander/Dexie.js/compare/v3.2.1...v3.2.2)

---
updated-dependencies:
- dependency-name: dexie
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 17:32:23 -04:00
Impyrical
273ebb22e4 Tackling #4041 (#4625)
Copy contents of selected cell from card database when ctrl-c is
pressed, mimicking the behavior of ctrl-c in the deck editor.
2022-05-21 01:22:08 +02:00
Zach H
6b86e4d463 Update configuration path to be backwards compatible (#4620)
* Update configuration path to be backwards compatible
Windows users have used AppData/Local/Cockatrice, whereas the new system was using AppData/Roaming/Cockatrice. This reverts the behavior in a Qt5/6 way.
2022-05-12 18:13:49 -04:00
ZeldaZach
a8e1dc3b18 Re-Run cmakeify 2022-05-09 18:01:30 -04:00
Zach H
a95b338c80 Add cmake format (#4618)
* Support CMakeify operation

* Run Cmakeify

* Update cmakeify.sh

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-05-08 21:22:43 +02:00
Zach H
3e90f109a2 Prevent bad access potential for removals by checking bounds (#4617)
* Prevent bad access potential for removals by checking bounds
Fix #4616

Switch to removeOne instead of bound checking removeAt

* Revert server cardzone check
2022-05-08 20:26:50 +02:00
ZeldaZach
b02adccf87 Support Qt6, Min Qt5.8, Fix Win32, Fix Servatrice
Add lock around deleting arrows for commanding cards

Add support for Qt6 w/ Backwards Qt5

Handle Qt5/6 cross compilation better

Last cleanups

caps matter

Fix serv

Prevent crash on 6.3.0 Linux & bump to 5.8 min

Prevent out of bounds indexing

Delete shutdown timer if it exists

Fixup ticket comments, remove unneeded guards

Try to add support for missing OSes

Update .ci/release_template.md

Update PR based on comments

Update XML name after done and remove Hirsute

Address local game crash

Address comments from PR (again)
Tests don't work on mac, will see if a problem on other OSes

make soundengine more consistent across qt versions

disable tests on distros that are covered by others

Fix Oracle Crash due to bad memory access

Update Oracle to use new Qt6 way of adding translations

Add support for Qt5/Qt6 compiling of Cockatrice

Remove unneeded calls to QtMath/cmath/math.h

Update how we handle bitwise comparisons for enums with Tray Icon

Change header guards to not duplicate function

Leave comment & Fix Path for GHA Qt

Update common/server.h

Update cockatrice/src/window_main.cpp

Rollback change on cmake module path for NSIS

check docker image requirements

add size limit to ccache

put variables in quotes

properly set build type on mac

avoid names used in cmake

fix up cmake module path

cmake 3.10 does not recognize prepend

Support Tests in FindQtRuntime

set ccache size on non debug builds as well

immediately return when removing non existing client

handle incTxBytes with a signal instead

don't set common link libraries in cockatrice/CMakeLists.txt

add comments

set macos qt version to 6

Try upgrading XCode versions to latest they can be supported on

Ensure Qt gets linked

add tmate so i can see what's going on

Qt6 points two directories further down than Qt5 with regard to the top lib path, so we need to account for this

Establish Plugins directory for Qt6

Establish TLS plugins for Qt6 services

Minor change for release channel network manager

Let windows build in parallel cores

Wrong symbols

Qt6 patch up for signal

add missing qt6 package on deb builds

boolean expressions are hard

negative indexes should go to the end

Intentionally fail cache

move size checks to individual zone types

Hardcode libs needed for building on Windows, as the regex was annoying

Update wording

use the --parallel option in all builds

clean up the .ci scripts some more

tweak fedora build

add os parameter to compile.sh

I don't really like this but it seems the easiest way
I'd prefer if these types of quirks would live in the main configuration
file, the yml

fixup yml

readd appended cache key to vcpkg step

fix windows 32 quirk

the json hash is already added to the key as well

remove os parameter and clean up ci files

set name_build.sh to output relative paths

set backwards compatible version of xcode and qt on mac

set QTDIR for mac builds on qt5

has no effect for qt6

export BUILD_DIR to name_build.sh

merge mac build steps

merge homebrew steps, set package suffix

link qt5

remove brew link

set qtdir to qt5 only

compile.sh vars need to be empty not 0

fix sets manager search bar on qt 5.12/15

fix oracle subprocess errors being ignored on qt 5

clean up translation loading

move en@source translation file so it will not get included in packages
NOTE: this needs to be done at transifex as well!

Use generator platform over osname

Short circuit if not Win defined
2022-05-06 17:31:08 -04:00
dependabot[bot]
accd5e4df7 Bump async from 2.6.3 to 2.6.4 in /webclient (#4614)
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-06 17:31:08 -04:00
dependabot[bot]
d007196059 Bump ejs from 3.1.6 to 3.1.7 in /webclient (#4613)
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-06 17:31:08 -04:00
ebbit1q
79501a4af7 fix the uid and gid of the user in the docker container (#4610)
* fix the uid and gid of the user in the container

this fixes this error:
unsafe repository ('/src' is owned by someone else)
this caused the hash to go missing in the version number

* add --interactive option to .ci/docker.sh

* add --dir to .ci/compile.sh

* fix up the comments on the ci scripts

* add extra comment to docker.sh
2022-04-18 19:04:49 -04:00
ebbit1q
64c6611ea5 env vars don't go into docker containers like that (#4609)
reverts a bit of #4580 92ed53e13a
2022-04-17 22:11:55 -04:00
Zach H
a532a63403 Change actions to use Windows 2019
Windows 2022 isn't stable yet with the Qt installer, and we need to cut releases so this unblocks us
2022-04-02 00:55:05 -04:00
tooomm
c10c69d0a9 fix if condition on ci translations (#4603) 2022-04-01 11:24:51 +02:00
dependabot[bot]
191d5a83a9 Bump minimist from 1.2.5 to 1.2.6 in /webclient (#4601)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-26 21:50:52 -04:00
dependabot[bot]
de69e2c41f Bump node-forge from 1.2.1 to 1.3.0 in /webclient (#4600)
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-26 21:49:27 -04:00
Jeremy Letto
6d200d17b7 close previous testConnect attempts (#4598)
* close previous testConnect attempts

* remove onerror handler when canceling previous attempt

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-22 17:42:58 -05:00
Jeremy Letto
4899b6cfef add kosovo flag (#4597)
* add kosovo flag

* add xk and eu flags to cockatrice

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-03-19 20:07:40 -05:00
Jeremy Letto
0ff59e6d1e test connection UI (#4596)
* test connection UI

* cleanup

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-19 19:22:00 -05:00
Jeremy Letto
00a2a8ab71 update pr-bt translation file (#4593)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-13 15:59:36 -04:00
Jeremy Letto
2c702d3579 Webatrice: husky (#4591) 2022-03-13 13:44:51 -04:00
ebbit1q
b464fa8d99 actualise country names (#4592)
see wikipedia here:
https://en.m.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
2022-03-07 21:46:09 -06:00
ZeldaZach
2b330940e1 ncu update 2022-03-07 13:46:43 -05:00
Jeremy Letto
0d0337f091 Webatrice: update package.json (#4590)
* update package.json

* cleanup

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-07 13:43:01 -05:00
Jeremy Letto
533045445a Webatrice: improve language dropdown (#4589)
* useLocaleSort hook, translate language dropdown

* add pt-BR translation

* fix pt-BR flag

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-06 20:12:27 -06:00
Jeremy Letto
21f7dd5eba add fr and nl translations (#4587)
* add fr and nl translations

* update fr

* fix password label translation

* translate country strings

* fix double accents

* fix Ivory Coast

* sort countries

* use more performant Collator over localeCompare

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-06 17:19:51 -06:00
Jeremy Letto
f5b973e15c Webatrice: i18n login screen (#4584)
* i18n: login container and form

* i18n: activate, host, and register forms

* i18n: reset password forms

* i18n: login dialogs, ICU formatting

* i18n: login containers and components

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-03-02 22:34:57 -06:00
ebbit1q
baaf261116 use utf8 instead of the system encoding (#4582)
* use utf8 instead of the system preference

* found another toLocal8Bit
2022-02-27 22:33:36 +01:00
ebbit1q
92ed53e13a update workflow to use windows 2022 image (#4580)
* update workflow to use windows 2022 image

* return the version of the run vcpkg action

the action has been changed to now use a vcpkg.json file instead of the
txt file we use now, we should try to find a way to update it to the new
workflow in case the current one becomes obsolete

* clean up a bit for consistency

* run ctest directly instead of relying on the makefile

* set -C flag for ctest

* set config option for cmake --build

this option is ignored for other platforms
2022-02-27 22:32:54 +01:00
Jeremy Letto
2a54e9d7d1 Webatrice: fix saved password (#4563)
* fix saved label, and fix using hashedPassword when Save is unchecked

* update host only after successful login

* cleanup

* fix ability to deselect saved password on successful login

* cleanup

* clear options after connection

* fix registration saved username

* cleanup

* change label

* fix tests

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-27 10:12:38 -06:00
Jeremy Letto
9577ada171 Webatrice: i18n (#4562)
* implement i18n capability

* reset package.lock file

* remove custom fallback

* fix relative path for i18n files

* check for language support before fetch request

* add LanguageDropdown component, es translation file to prove functionality

* remove boilerplate

* bundle default english translation with app

* add missing file

* rollup component-level i18n files

* cleanup

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-26 21:36:53 -06:00
ebbit1q
217dc09c0f fix image downscaling (#4567) 2022-02-23 23:46:53 +01:00
ebbit1q
7108eb42c8 implement custom protobuf debug string creation (#4532)
* implement custom protobuf debug log string creation

* add version guards

* add missing header

* debian10 repository misses headers

* clean up logging messages a bit

* fix some more formatting on debug messages
2022-02-23 23:46:23 +01:00
ebbit1q
eb3ce1fd7e hide revealed cards when they are shuffled (#4570) 2022-02-23 23:46:07 +01:00
dependabot[bot]
c88d44e16c Bump url-parse from 1.5.3 to 1.5.7 in /webclient (#4578)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.7.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.7)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 23:44:27 -05:00
dependabot[bot]
ec2ad4c713 Bump follow-redirects from 1.14.7 to 1.14.8 in /webclient (#4574)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 23:44:16 -05:00
Brent Clark
4c04b4ef5a Webatrice: Registration toasts (#4566)
* wip

* Registration Success Toast

* remove debugging code

* remove unused field

* Show toast on successful password reset

* Toast on account activation success

* lint and PR feedback

* Rework interface names to avoid collision

* Move CssBaseline to sibling of ToastProvider

Co-authored-by: Brent Clark <brent@backboneiq.com>
2022-02-16 02:40:30 +01:00
Jeremy Letto
88b861d632 Webatrice: improve prebuild steps and add .env configs (#4564)
* create .env file for server configuration

* render client version

* automate env file

* add prestart command

* create server-props.json instead of using .env

* automate master proto file

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-13 00:58:47 +01:00
ebbit1q
408a13c937 remove unused include in pb file (#4572)
shows as warning on compile:
session_commands.proto:2:1: warning: Import serverinfo_user.proto is unused.
2022-02-12 23:40:47 +01:00
ebbit1q
7d0a255a49 add database migration from blob to mediumblob (#4568) 2022-02-09 20:11:13 +01:00
ebbit1q
252883f67e set rx and txBytes to zero on initialization (#4569) 2022-02-09 17:57:35 +01:00
Jeremy Letto
bf08a04cda Webatrice: tech debt (#4560)
* turn autocomplete off by default on inputs

* trim input fields onSubmit

* move trim to form submit

* cleanup

* remove dead code

* protect trim against null values

* make password optional on Login for servers that allow unregisted logins

* cleanup

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-06 17:41:02 +01:00
Jeremy Letto
6928a2bd98 Webatrice: show loading screen until protobuf initializes (#4559)
* show loading screen until protobuf initializes

* cleanup

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-04 17:03:39 -05:00
Jeremy Letto
bb16ae09ef Webatrice: fix login bugs (#4557)
* fix login after failed connection attempts, limit connection attempt time

* fix register hashed password and salt

* add feature detection and Unsupported Browser screen

* nit

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-04 14:07:15 -05:00
Brent Clark
81d031ca0f Webclient: Add Toasts component and show on known host CUD operations (#4556)
* Add Toasts component and show on known host CUD operations

* add slide transition

* NIT

Co-authored-by: Brent Clark <brent@backboneiq.com>
2022-02-01 12:08:05 -06:00
Jeremy Letto
8203a2fdeb fix failed saltRequest (#4554)
* fix failed saltRequest

* improve requestSalt error handling

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-02-01 04:03:31 +01:00
tooomm
75f0d60dff Webclient: Update script (#4553)
* Update package.json

* introduce linting error

* Revert "introduce linting error"

This reverts commit 0a622bcb2e.
2022-01-31 15:14:22 +01:00
Jeremy Letto
992e28797f Webatrice: support hashed passwords in register and resetPassword (#4549)
* support hashed passwords in register and resetPassword

* lint

* support hashedPasswords for accountActivation

* use salt in post-register login step

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-01-30 22:09:16 -06:00
Jeremy Letto
92f941a54c renable login after fail attempt (#4552)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-01-30 22:06:30 -06:00
Jeremy Letto
4c31527832 implement password length requirements (#4551)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-01-31 03:51:01 +01:00
Jeremy Letto
febe029ed4 use CompanyDropdown component in registration form (#4548)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-01-30 19:47:10 -06:00
Jeremy Letto
1d780058c8 Webatrice: Add account validation dialog/form (#4547)
* Add account validation dialog/form

* clean up

* close registration dialog on token request

* remove dupe code

* add subtitle styling

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-01-30 19:42:34 -06:00
Brent Clark
513fcb0908 Webclient: Handle firing an event once (#4499)
* draft: handle firing an event once

* lint

* Prevent rapid double-click on sending messages

* no rest spread on single primative when sibling components exist

* clear message instead of using a fireOnce handler.

* fix tests

* remove unnecessary validate mock
2022-01-30 12:14:28 -05:00
dependabot[bot]
4bb13677c8 Bump nanoid from 3.1.30 to 3.2.0 in /webclient (#4542)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-24 00:15:46 -05:00
ebbit1q
a5baf4303c create workflow for automatically updating the translation sources (#4543)
* create workflow for automatically updating the translation sources

* change to once per month
2022-01-23 23:14:48 +01:00
ZeldaZach
7aba404f2e Add i18n for Oracle and fix Transifex 2022-01-22 00:17:29 -05:00
Zach H
1b7e8f3a16 Re-add handling of i18n for Oracle (since it was manual before) (#4541)
Removes en@source from options menu intentionally
2022-01-21 23:35:04 -05:00
ZeldaZach
5cf93ad61c Remove empty languages 2022-01-21 22:59:47 -05:00
ZeldaZach
5a52e085a7 Translation Dump! 2022-01-21 22:28:07 -05:00
ebbit1q
5d31b70406 [WIP] add english translation (#4120)
* move en.ts to en@source.ts

* run lupdate

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2022-01-21 21:35:26 -05:00
tooomm
2885f93fdf run ci not only on pr's to master (#4537) 2022-01-20 18:27:26 +01:00
tooomm
d225f55e5a CI: Uniform job ordering and naming (#4534)
* remove xcode string in file name

* alphabetical ordering + newest to the top

* remove not needed entries

* append -bit to name

* chronological

* spaces
2022-01-20 02:51:42 +01:00
tooomm
69edc73585 cleanup (#4530) 2022-01-18 16:40:05 +01:00
tooomm
ead1143f2e Prettier settings dialog (#4357)
* prevent stretched layout in settings

* restore layout of settings pages with already expanding elements

* Support full screen resolution and set a minimum that works well no matter the screen size

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2022-01-16 21:06:52 -05:00
ebbit1q
2fc85e0c08 use hashed passwords in all commands (#4493)
* protocol changes

* server changes

* client changes for password reset and registration

* add hashed password to change password in client

* always use hashed password to log in

* add warning to client when using plain text password

* require real password for changing email on server

this is backwards compatible as users logged in with a real password on
older clients will not need this, only users logged in with a hashed
password

* implement password dialog when changing email

* require min password length

* use qstringlist to build query instead

* use clear instead of = ""

* add max to password dialog

* use proper const ness in abstractclient

* reject too long passwords instead of trimming
2022-01-16 20:32:30 -05:00
ebbit1q
fcafcb340a remove all instances of the type long (#4519)
the long type has different sizes across operating systems and should
not be used

in the timeline an overflow could occur if the width in pixels
multiplied by the total amount of milliseconds in the replay is larger
than 2^31 which is easy enough considering with only 500 pixels width
you'll reach this number with only 1.2 hours of replay (about 4 million
millis), note that this would be windows exclusive as *nix uses 64 bits

~~qt-json's own repo suggests using qt5's implementation instead, testing
revealed this is quite a bit faster, contrary to #3480~~ testing proved
this to not be compatible with older qt versions

servatrice uses the qthread usleep function which used to be protected
but is now public

cockatrice is not compatible with qt4 and hasn't been for a while
2022-01-16 18:05:24 -05:00
ebbit1q
ae9b8b8f34 miscellaneous refactors (#4521) 2022-01-16 17:58:53 -05:00
ebbit1q
994704d353 implement max lengths for input dialogs that are sent to the server (#4522)
* implement max lengths for input dialogs that are sent to the server

* missed a double setMaxLength

* implement max string lengths server side

* add custom getText dialog with max length

* fix deck storage tab and miscellaneous server side

* add max size for deck uploads

* final pass on client side limits
2022-01-16 17:57:01 -05:00
Zach H
d61c604bf4 Address macOS issue where right-clicking a username in the main chat (#4523)
* Address macOS issue where right-clicking a username in the main chat (or game chat) areas would pop up a seemingly empty user profile. This is because the resize event is overridden and doesn't actually attempt to resize based on the size hint of the dialog. Now that we're explicit with the call, this resize should be forced and have comparable results to popping up user profile from the user list.

* use datetime for calculating account age (#4526)

* use datetime for calculating account age

make translating easier by using tr multiples
automatically account for leap days

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-01-16 16:51:13 -05:00
tooomm
baaf22d0c4 UI: Improve alignment in user info (#4524)
* fix alignment

* tweaking

* lint

* limit flag to one column

* lint

* cleanup

* Update userinfobox.cpp

* re-add manual window resizing

* Update cockatrice/src/userinfobox.cpp

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2022-01-16 22:49:41 +01:00
tooomm
368ff1793f CI: Add Debian 11 (#4525)
* add debian 11

* rename debian10

* fix space

* Update Dockerfile
2022-01-16 16:46:04 -05:00
dependabot[bot]
3253ad64fd Bump follow-redirects from 1.14.5 to 1.14.7 in /webclient (#4527)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.5 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.5...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-16 16:32:22 -05:00
ebbit1q
1e70989f38 add password hash test (#4528)
* clangify tests

* add password hash test

* properly use googletest semantics
2022-01-16 16:32:11 -05:00
ebbit1q
f6634de18d replace fixed size of criteria in log tab (#4515)
it's now a max size with expanding policy, looks fine I guess
fixes #4510
2022-01-11 21:35:18 -05:00
ebbit1q
7903cd520a perform restartLayout conditionally (#4513)
* Revert "Fixed layout on Deck Editor not using last layout. It was reseting layout on ctor. (#4420)"

This reverts commit 3bc90003b3.

* restart layout on fresh installs
2022-01-08 16:03:53 -05:00
ebbit1q
26d1fcc944 simplify search string (#4516) 2022-01-08 16:02:54 -05:00
ebbit1q
59d4e64a8d use multiline input dialog for annotations (#4517) 2022-01-08 16:02:25 -05:00
ebbit1q
1347d88ddb also forgot this in #4496 (#4514) 2022-01-08 16:01:54 -05:00
ebbit1q
6981cca2ae use qt round for better cross platform consistency (#4518)
* use qt round for better cross platform consistency

* remove unnecessary casts
2022-01-08 16:01:15 -05:00
ebbit1q
4d6c9ede8c missed this in #4496 (#4512) 2022-01-07 00:34:56 -05:00
ebbit1q
e845c95816 remove ccache from mac builds (#4505) 2021-12-27 22:23:11 -05:00
ebbit1q
a9f2fc427b allow servatrice to exit early based on commandline options (#4504) 2021-12-26 16:47:37 +01:00
ebbit1q
07e6aadbbe deprecate the gender property from the protocol entirely (#4496)
* deprecate the gender property from the protocol entirely

* use obsolete instead of deprecated

* add the database migration

* update internal database version as well
2021-12-14 01:51:57 -05:00
tooomm
86881bbbc3 CI: Little tweaks to web (#4488) 2021-12-07 23:01:46 -05:00
Jeremy Letto
1f15445c69 connect reset password to login view (#4489) 2021-12-07 22:57:12 -05:00
ebbit1q
811ee54c76 Fix move (#4491)
* wip fix card moving on server

* fix flipped cards being moved as -1

* fix cards from hand being moved as -1
2021-12-07 22:56:58 -05:00
ebbit1q
d1a40fd36e fix regression in local games (#4490) 2021-12-07 22:54:36 -05:00
ebbit1q
a3d3aaaca8 fix server crash on receiving email without @ (#4492) 2021-11-30 19:44:20 -08:00
tooomm
c5aaa0bc2e CI: Add webclient (#4478) 2021-11-26 16:55:53 -05:00
Jeremy Letto
6dc9f004ce fix tests, add golden command (#4486)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-11-26 16:55:12 -05:00
Jeremy Letto
6ce346af4a Webatrice: KnownHosts component (#4456)
* refactor dexie services for future schema updates

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-11-25 22:12:23 -05:00
ZeldaZach
37879c4255 Re-lint on linux 2021-11-23 02:49:11 -05:00
Zach H
0683d1aced Support Server requests for MFA, Render failed UI statuses to user, C… (#4483)
* Support Server requests for MFA, Render failed UI statuses to user, Connect to KnownHosts component
2021-11-23 02:45:08 -05:00
Joseph Chamish
73c5956ece Dev/jchamish/forgotpassword (#4481)
* Implementation of Forgotten Password Reset

* Update webclient/src/hooks/useReduxEffect.tsx

Co-authored-by: Zach H <zahalpern+github@gmail.com>
2021-11-19 21:00:05 -05:00
Zach H
7c27e955d5 Support all OS development for linters and prevent linting while in dev mode (#4480) 2021-11-19 20:59:55 -05:00
Jeremy Letto
6ef394000b fix file line returns (#4482)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-11-18 19:46:49 -05:00
Aren Kasner
755a09bd83 country dropdown (#4479) 2021-11-16 16:55:30 -05:00
ZeldaZach
8b1daa21ef Revert "fix card moving on server (#4413)"
This reverts commit c25bf491e4.
2021-11-15 00:54:21 -05:00
ebbit1q
691bcb9338 comment out new feature from feature list (#4477)
we don't have an official release for a version that has this feature
yet
2021-11-15 00:44:16 -05:00
Joseph Chamish
911a303326 Fix the additional line endings (#4476) 2021-11-14 22:16:13 -05:00
Johannes
5652b56b45 Respect device pixel ratio when scaling card imgs (#4467) 2021-11-13 17:01:27 -05:00
Zach H
26acfd5102 Update packages & cleanup (#4475) 2021-11-13 15:30:49 -05:00
Zach H
f789e02096 Add ESLint & Run it against the system (#4470) 2021-11-13 14:56:15 -05:00
Zach H
43eee6b32e Support HashedPassword workflow for logins (#4469)
* Support HashedPassword workflow for logins

* Address comments in PR
2021-11-13 10:37:13 -06:00
ebbit1q
45d86e7ab7 allow login using hashed passwords (#4464)
* Support getting a user's password salt via initial websocket connection (added to Event_ServerIdentification)

* Nonsense stuff to figure out later

* move passwordhasher to correct location

* protobuf changes

* add ext to protobuf

* implement request password salt server side

* add supportspasswordhash to server identification

* check backwards compatibility

* reset some changes to master

* implement get password salt client side

* implement checking hashed passwords on server login

* check for registration requirement on getting password salt

* properly check password salt response and show errors

* remove unused property

* add password salt to list of response types

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
2021-11-09 20:00:41 -05:00
ebbit1q
b0845837c2 add extra null check to set active card (#4460) 2021-11-04 22:20:20 -04:00
ebbit1q
a10226d096 finalise fedora support (#4461) 2021-11-04 22:20:00 -04:00
ParkTandem
5e3a524401 add eslint config (#4457) 2021-11-02 19:01:06 -05:00
gus
b095d9b82f Fixed issue #4332 - changed error message for replay folder download (#4455) 2021-11-02 02:08:41 +01:00
Jeremy Letto
4cb7240f9a small improvements (#4452)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-31 22:21:24 -04:00
Zach H
a87c66885c Webatrice: Account Registration form (pt2) (#4454)
Co-authored-by: ParkTandem <93353951+ParkTandem@users.noreply.github.com>
2021-10-31 22:15:51 -04:00
Zach H
ac300b0b6d Support password reset workflow on Webatrice (#4445)
* Support password reset workflow. Also fix issue where a user would be disconnected "randomly" if they had a failed login, then successful one. Refactored a bit on Status Labels since they weren't really necessary and added complexity.

* Disconnect in default cases where we don't know what to do, but shouldn't stay connected to the server
2021-10-31 22:03:38 -04:00
ebbit1q
013bb8269f set fedora 35 to be allowed failure (#4448)
it currently doesn't build at all yet
2021-10-31 17:55:10 -04:00
ebbit1q
7712862036 add ubuntu 21.10 to ci (#4446)
* add ubuntu 21.10 to ci

remove ubuntu 20.10

* forgot to update dockerfile

* add googletest from repos

* update downloaded gtest

ideally this should just grab the master version

* fix hash

* fix cmake issue
2021-10-30 22:15:50 -04:00
tooomm
656e3230de CI: Xcode update, fix Big Sur build (#4449)
* xcode update

* 12.5.1 --> 13.0

* Revert "12.5.1 --> 13.0"

This reverts commit 671ee2afe4.
2021-10-30 16:00:52 +02:00
ebbit1q
915c14f6cf add fedora 35 to ci (#4447)
remove fedora 33
2021-10-29 22:15:08 -04:00
Aren Kasner
ed32e72dc1 login page created (#4444)
login page html and css created with Seavor
2021-10-25 23:36:20 -04:00
Jeremy Letto
d684a9c5fc new login design (#4442)
* new login design

* remove effects file (wrong direction)

* add Known Hosts dropdown component

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-25 14:28:43 -04:00
ebbit1q
6f360374cc change the order in which the password challenge is performed (#4439)
this will force the user to always perform the challenge, meaning no
information on the account is leaked in case of failures
2021-10-23 20:18:08 -04:00
ebbit1q
bbbf3e2a65 don't reset pt if there is nothing to reset (#4438)
* don't reset pt if there is nothing to reset

when the client resets the pt of a card it intentionally does not
include cards that already have the correct pt, this can lead to the
client sending an empty command to the server, which will be rejected

* clangify
2021-10-23 20:04:52 -04:00
Zach H
b1ef8220ee Support Registration on Webatrice with a baseline of handling. (#4436)
* Support Registration on Webatrice with a baseline of handling. Still needs to support activation tokens & unit testing.

* Add support for account activation with token

* Activate Account refactor

* Fix typo

* Add Unit Testing for Commands/Events

* Changes based on review feedback
2021-10-20 21:07:35 -05:00
Jeremy Letto
ebebb9c4bb add Material UI theme support (#4437)
* add Material UI theme support

* add primary color palette

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-20 20:03:05 -04:00
Jeremy Letto
586f23cfa9 Webatrice websocket refactor (#4435)
* add unit tests for websocket events

* add unit tests for KeepAliveService, clean up keepAlive termination flow

* put keepAlive command in protobuf service and expose thru webClient

* secure wss

* rename files tsx to ts

* add localhost support for ws/wss connection

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-17 20:52:59 -04:00
Jeremy Letto
f75ff2a7c8 cleanup and unit tests (#4434)
* put socket.updateHistory behind SessionCommand

* rename /websocket files from .tsx to .ts

* add unit tests to websocket commands

* complete unit tests for webClient commands

* secure wss

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-17 16:15:09 -04:00
Jeremy Letto
e9ba195d7d Refactor websocket into separate services, clean up socket status communication (#4433)
* Refactor websocket into separate services, clean up socket status communication

* cleanup

* add EOF lines

* fix keepalive logged in check

* undo change

* fix keepalive connection check

* cleanup

* add typings

* secure connection

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-17 01:07:30 -04:00
Jeremy Letto
19333c53f6 secure webclient socket (#4432)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-10-14 21:58:34 -04:00
Jeremy Letto
36e5a399d5 Webatrice: card import wizard (#4397) 2021-10-14 21:42:35 -04:00
Bruno Mendes
dde0f568d9 Show country flag in user list of webclient (#4431) 2021-10-14 20:59:06 -04:00
Rafael Ritzel Tischler
3bc90003b3 Fixed layout on Deck Editor not using last layout. It was reseting layout on ctor. (#4420) 2021-09-14 16:41:04 -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 20b1ad9f7a.

* 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
tooomm
154e1084ba CI: Separate C++ linting (#4400)
* separate cpp lint

* made executable
2021-09-14 16:11:56 -04:00
tooomm
6df5cece04 CI: Update Qt version (Windows) (#4407)
* qt patch update

* qt 5.15

* fix qtdir export

* cleanup
2021-09-14 16:11:29 -04:00
ebbit1q
c8bb8b0aae add reset paths button to settings (#4384) 2021-09-14 16:10:40 -04:00
ebbit1q
1e995cd97c add option to delete a user's messages (#4362)
* add option to delete a user's messages

add optional parameter remove_messages to the ban and warn commands
add event for clients to redact messages
implement server side command and message handling
implement server history removal
todo: client side implementation

add option to remove messages to moderator action dialogs

add storage of message beginnings to chatview

add redactMessage command
handle Event_RemoveMessages on rooms

this approach is favored over parsing the chatroom after the fact but
will use additional memory to store the block indexes

this also leaves a problem in that user messages from the chat backlog
are not removed in the same way because they don't have a user
associated with them

add workaround for old qt versions

add action for users to remove messages from users in chats

add chat history to userMessagePositions with regex

proper const usage for userName

allow removing the messages of unregistered users

add menus to usernames in chat history

this allows you to remove user messages on chat history as well
this also allows moderators to take actions on users in chat history

Apply suggestions from code review

* readd missing call to handler
2021-09-14 16:05:20 -04:00
ebbit1q
c25bf491e4 fix card moving on server (#4413)
* wip fix card moving on server

* fix flipped cards being moved as -1
2021-09-14 15:48:46 -04:00
ZeldaZach
affc288144 Use gmail over googlemail in all cases, as they're the same alias 2021-08-27 23:17:26 -04:00
Zach H
051be37419 Server Config Whitelist Email Providers (#4416)
* Support registration domain whitelist (registration/emailproviderwhitelist) that, if set, will require a user to have an email with one of the specified domain providers. Will require client updates to see the Whitelist message, otherwise they'll be greeted with a default alert.

This also works to remove the pain of Google Email addresses and their infinite combination of usernames for the same account (i.e. remove periods and everything after the first plus sign).

* Make blacklist response show custom dialog
2021-08-18 21:18:53 -04:00
Aren Kasner
c0bd49cf13 Fixed VCPKG folder for windows (#4406)
update vcpkg submodule
2021-08-04 03:23:42 +02:00
tooomm
2fe572c398 CI: Update Xcode versions (#4403) 2021-07-27 18:42:54 +02:00
Michael Stanaszak
904e740460 #4316: Wording change: CMC --> MV (#4388)
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2021-07-27 17:30:55 +02:00
ebbit1q
00add2a527 add gtest from arch repos so it doesn't have to download it (#4378) 2021-07-27 16:42:28 +02:00
Zach H
bbe43d4246 Prevent users from being able to upload super large files via Sockets, which could inadvertently deny access to the server (#4398) 2021-07-25 20:28:14 -04:00
ebbit1q
0280fea3e6 apply chat flood prevention in games next to rooms (#4387)
* apply chat flood prevention in games next to rooms

* add limit to private messages as well
2021-06-28 01:57:46 -04:00
Joseph Chamish
a65ce8694c selection of known hosts to form (#4379) 2021-06-15 03:12:17 -04:00
Jeremy Letto
c9ddd042fc Webatrice: Update nav (#4380)
* wip: subnav debug

* nav redesign

* remove unnecessary code

* remove subnav

* add leaveRoom button

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-06-15 03:12:04 -04:00
ebbit1q
da9222929b add werror flags when making a debug build using llvm (#4344)
* add werror flags when making a debug build using llvm

this would get bugs like
https://github.com/Cockatrice/Cockatrice/pull/4337
get signalled earlier to us

* fix error: 'Servatrice_DatabaseInterface::registerUser' hides overloaded virtual function

* remove unused field

* mac machines have 3 cores

see
https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources

* typo
2021-06-01 21:57:37 -04:00
marsnicholas
b858e36183 Closes all library views when shuffled (#4261) (#4324) 2021-06-01 21:53:43 -04:00
ebbit1q
ebe2c494aa remove the stop dump zone command from the protocol (#4326)
the stop dump zone command was implemented as a courtesy to other
players in order to take into account when they would stop looking at
unknown information

however, this can be abused, a malicious client can send this command
whenever they would like

cockatrice is not a physical tabletop nor does it aim to be, if you can
take a screenshot of your deck and then close the view, you are not
cheating as you have been given this information

in order to prevent anyone from abusing this we should remove the
command from the protocol, this means servers will ignore this message
and clients will get a little invalid command reply in their debug log

the extension id will remain reserved

shuffling your deck will always invalidate any card view looking at
those cards

if players wish to signal that they stopped looking at their deck for
whatever reason they should just use the chat instead, optionally using
one of the chat macros
2021-06-01 21:52:20 -04:00
Jeremy Letto
fac7bfaa92 Webatrice: Nav Update (#4367) 2021-06-01 20:47:19 -04:00
Jeremy Letto
0d05f9097d Webatrice updates (#4366) 2021-05-21 21:23:30 -04:00
Jeremy Letto
8db9475804 Cleanup and refactor (#4361)
* fix three panel layout height issue

* rename websocket/services to websocket/persistence, implement LeaveRoom

* cleanup

* add new line eof

* move route components from /components to /containers

* remove duplicate style

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-05-18 23:06:41 -04:00
ebbit1q
294229622d tell the filter widget that games can have 0 players now (#4359) 2021-05-18 23:03:58 -04:00
Jeremy Letto
5cf9023a21 move and rename src/websocket/instanceServices to src/api (#4360)
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-05-17 21:59:32 -04:00
ebbit1q
66d24f086e properly enable notification checkboxes (#4356) 2021-05-17 02:37:12 +02:00
tooomm
19a7c4092c Update ci-builds.yml (#4358) 2021-05-16 23:12:49 +02:00
ebbit1q
b27cb58727 it is not possible to add a link to the wiki to this description (#4354) 2021-05-14 22:44:02 -04:00
tooomm
472f401590 Templates: Add Transifex link (#4351) 2021-05-14 19:29:11 +02:00
tooomm
744099277a Readme: Improve CI badge (#4352)
* Improve CI badge

* fix toc
2021-05-14 18:00:30 +02:00
ebbit1q
dff25a175b fix status badge (#4350) 2021-05-13 12:51:50 -04:00
ebbit1q
61f1141fe8 fix #3840 (#4348) 2021-05-13 12:51:34 -04:00
tooomm
0a73162bcf Beta releases: collapsable list of changes (#4339)
* add collapsable list

* make it show commit count

* why not have it also know the release type and name

* update the template as well

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2021-05-12 17:27:20 +02:00
ebbit1q
5f32892e75 check if player is null when updating card menu (#4346) 2021-05-12 09:51:56 -04:00
ebbit1q
ae7437750b do not edit the zone currently iterated on (#4345)
this can cause the iterator to become invalidated which will crash but
because of the data not always being moved it will often still work as
intended, giving the idea that it is random
2021-05-10 13:21:12 -04:00
Zach H
046a3649ed Revert "add werror flags when making a debug build using llvm (#4338)" (#4343)
This reverts commit 890810f5b9.

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2021-05-10 11:32:23 -04:00
ebbit1q
890810f5b9 add werror flags when making a debug build using llvm (#4338)
this would get bugs like
https://github.com/Cockatrice/Cockatrice/pull/4337
get signalled earlier to us
2021-05-10 02:11:40 -04:00
Zach H
8fb561b4c4 Fix regression from #4281 which caused crash with QList and GCC race time (#4341) 2021-05-09 14:50:48 -04:00
Zach H
b9c4b496e4 Fix regression from #4281 which caused crash if card was null (#4340) 2021-05-09 13:10:13 -04:00
ebbit1q
ff6f28390a fix macos update logic (#4337) 2021-05-08 23:16:52 -04:00
ebbit1q
e034de9083 don't log in users while giving them an error for missing the clientid (#4335) 2021-05-08 18:12:05 -04:00
ebbit1q
ecf57b4226 add fedora 34 and ubuntu 21.04 (#4331)
* add fedora 34 and ubuntu 21.04

* remove qt5-default from ubuntu 21.04

apparently it's not required?

* disable tests on fedora 34
2021-05-08 00:24:38 -04:00
ebbit1q
63fe34437a fix deprecation of QMutex::Recursive in favor of QRecursiveMutex (#4328) 2021-05-01 18:51:17 -04:00
ebbit1q
1062894397 change number dialog defaults (#4318) 2021-04-18 14:50:24 -04:00
ebbit1q
5969656429 check multiple file extension inclusions for custom cards (#4308) 2021-04-16 11:23:46 -04:00
ebbit1q
ad0f313c9d add menus for top and bottom actions (#4314)
* add menus for top and bottom actions

* style points

* github online editor is literally the worst

* add moving cards from bottom of deck to hand

fix getting multiple cards from the bottom
note that moving cards from the bottom of the deck does not get
remembered by or disrupt undoing draws

* Apply suggestions from code review

Co-authored-by: tooomm <tooomm@users.noreply.github.com>

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2021-04-16 11:23:28 -04:00
ebbit1q
6c004155ff fix local games no longer working (#4315) 2021-04-15 01:00:41 -04:00
tooomm
88a8ee09bd pass reset Small fixes (#4310) 2021-04-12 13:28:47 -04:00
ebbit1q
7d1f082b27 add _fill_with_ template notation to picture loader (#4287) 2021-04-01 23:37:11 -04:00
ebbit1q
1c48656623 fix #4249 (#4285)
ignore "deck" at start of a list
add tests
add tests to clangify.sh
2021-04-01 23:35:36 -04:00
ebbit1q
b940e17fe7 catch nullptr on websocket connections (#4300)
* catch nullptr on websocket connections

* clangify
2021-04-01 23:34:49 -04:00
ebbit1q
8e954b10e6 add more info to dialogs (#4293)
* add more info to dialogs

adds descriptive strings to the register, password reset request,
password reset challenge request, password reset token dialogs
adds tip to set manager to use ctrl a to select all sets
change sizes in set manager
moves default server info to settings instead of having it hardcoded in
each dialog

* make sets manager smaller

* clangify

* cleanup
2021-04-01 23:34:25 -04:00
ebbit1q
1b4543aa11 Fix 4294 (#4302)
* save forgot password settings when opening dialog

* add restore password menu item
2021-04-01 01:46:53 -04:00
ebbit1q
406c0b17ae remove arch workaround (#4295) 2021-03-25 22:36:01 -04:00
ebbit1q
09de56ac87 send hidden info to judge instead of player (#4297) 2021-03-25 22:35:46 -04:00
ebbit1q
07ea2d4334 add button to open themes location to settings (#4289)
* add button to open themes location to settings

botton creates directory if it doesn't exist yet
themes path is no longer hardcoded but included in settings
themes now default to None  the default theme is no longer required
themes set to None  will not look for empty directories anymore
this is backwards compatible
users with a nonexistant theme (Default) set will get the new None  theme

* remove default theme from install instructions
2021-03-21 13:11:34 -04:00
Zach Reizner
c5fac2ee35 fix off-by-one maxUsers check on session init (#4292)
The returned number of users from `getUsersWithAddress` will include the already connected user. The predicate `>= maxUsers` is incorrectly assuming that the new user is not already counted by `getUsersWithAddress`. This change corrects this off-by-one error by only closing connections after their are strictly too many users.
2021-03-21 13:08:36 -04:00
mix irving
a5b8245227 [webclient] remove duplicate services files (#4269) 2021-03-13 14:54:36 -05:00
omegaula
073349fd05 Always look at top card (#4238)
* Add option to always look at top card of deck

Similar to "always reveal", but reveals card only to the owner,
not all players.

* Add option to always look at top card of deck

Similar to "always reveal", but reveals card only to the owner,
not all players.

* Update bug_report.md (#4246)

* Update bug_report.md

* reproduction steps

* Update to address review comments

* Clangify

* set playerId on dumpEvent

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
2021-03-13 14:54:13 -05:00
ebbit1q
00ed5c370c implement a maximum amount of cardmenus generated for views (#4262) 2021-03-13 14:44:57 -05:00
ebbit1q
8e1d7d12e0 allow multiple zoneviews (#4263) 2021-03-13 14:43:50 -05:00
ebbit1q
1811f7305e only invalidate undoDrawList up to moved card (#4280) 2021-03-13 14:41:09 -05:00
ebbit1q
06bfc0291a Create game as spectator (#4281)
* refactoring

* allow for creation of games as spectator

allow setting the amount of games per user to none
remove limit on amount of games when creating a game as judge as
spectator

* refactor common/server_player.cpp

* do not close games with spectating host automatically

* remove check that filters out 0 player games

this check didn't really do anything, deleted games are removed before
it would be reached

* don't transfer host to spectators

this seems to cause a bug, also present on master
2021-03-13 14:39:25 -05:00
tooomm
b722864caf fix qt (#4279) 2021-03-09 11:17:07 -05:00
ebbit1q
18e27ef932 temporary workaround for arch libc version requiring upgraded host (#4258)
see https://bugs.archlinux.org/task/69563#comment196582
2021-03-08 12:18:58 -05:00
ebbit1q
7e3a669af0 use correct settings group for command interval settings (#4257)
the settings command_counting_interval and
max_command_count_per_interval are now in the [security] group as hinted
by their location in servatrice.ini.example

check values of comand interval settings before use
2021-03-08 12:18:22 -05:00
ebbit1q
aa6a0313e9 don't sort split card halves alphabetically (#4244)
* don't sort split card halves alphabetically

fixes #4241
introduces new issue: aftermath cards are now switched upside down

* use list instead of multimap to enforce preservation of a given order
2021-03-08 12:14:43 -05:00
ebbit1q
9bbe2f36bc disallow rich text in deck comments (#4273) 2021-02-26 11:17:25 -05:00
tooomm
0c7830b53c exclude webclient (#4270) 2021-02-25 13:15:48 -05:00
mix irving
2b0a9975be [webclient] add postinstall script for copy_shared_files (#4268) 2021-02-24 19:14:02 -05:00
ebbit1q
df0b867d9e fix my mistake in meld regex (#4266) 2021-02-24 18:45:09 -05:00
ebbit1q
d27f108cbd typo (#4260) 2021-02-20 01:32:31 -05:00
tooomm
fd0076e920 Improve release template (#4250)
* Update release_template.md

* reworks and adding highlights

* prep

* adjust according to script

* comment over placeholder

* remove tags, uniform style

* tweak

* Update .ci/release_template.md

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2021-02-17 02:33:14 +01:00
tooomm
db5f6e01c9 template: screenshot hint (#4256)
* screenshot hint

* better wording
2021-02-15 20:55:30 +01:00
tooomm
f3255180ec skip .md only changes (#4251) 2021-02-10 14:29:12 -05:00
tooomm
039d058770 Update bug_report.md (#4246)
* Update bug_report.md

* reproduction steps
2021-02-07 12:26:22 -05:00
ebbit1q
401fdcaf7a move changing x coord to after check for token deletion (#4236)
fixes #4235
reverts #4216
2021-01-30 16:44:12 -05:00
ctrlaltca
1bfcca91be add window icons in wayland (#4232)
Co-authored-by: Fabio Bas <fabio.bas@officineinformatiche.net>
2021-01-28 15:21:11 -05:00
ebbit1q
3edb862561 update version number to 2.8.1 (#4229) 2021-01-27 20:49:13 -05:00
ZeldaZach
00c0162da3 Change release name/number for 2.8.0 and make it a forced update 2021-01-26 14:56:29 -05:00
ZeldaZach
6fa5f4f9a5 Translations from Transifex 2021-01-26 14:50:05 -05:00
ebbit1q
db528c6762 Release templates (#4226)
* add creation of release templates to ci and update guide

* touchups to markdown

* correct create release property

* correctly set fetch-depth and release body

* fix replacements, remove arrows

* check if there are no betas

* add extra output

* typo
2021-01-25 19:53:34 -05:00
ebbit1q
0c54cdf6bc set release upload_url correctly during configure (#4225)
correctly set prerelease flag
set prerelease names to their tag instead of full release name
detect version for use in release name during configuration
2021-01-24 16:52:19 -05:00
ebbit1q
b63145c0a1 merge build workflows (#4197)
* merge build workflows

* fix mac version comparisons
2021-01-24 15:20:06 -05:00
Joseph Chamish
1ddc9cc929 Structure change (#4220)
* Structure change

* Remove duplicate folders from previous structure

* Cleanup websocket protocol

* Updating from based off PR

* Fixup - remove wrong files during conflict and get the websocket working

* renaming tsx to ts

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2021-01-20 18:50:18 -05:00
knitknit
a0deb73df6 Fix #2771: Do not change x coordinates of moved card if it will be destroyed when it leaves the table (#4216) 2021-01-02 22:45:11 -05:00
Jeremy Letto
0457e65751 Webatrice P.O.C. (#3854)
* port webclient POC into react shell

* Abstract websocket messaging behind redux store

* refactor architecture

* add rooms store

* introduce application service layer and login form

* display room messages

* implement roomSay

* improve Room view styling

* display room games

* improve gameList update logic

* hide protected games

* improve game update logic

* move mapping to earlier lifecycle hook

* add autoscroll to bottom

* tabs to spaces, refresh guard

* implement server joins/leaves

* show users in room

* add material-ui to build

* refactor, add room joins/leaves to store and render

* begin using Material UI components

* fix spectatorsCount

* remove unused package

* improve Server and Room styling

* fix scroll context

* route on room join

* refactor room path

* add auth guard

* refactor authGuard export

* add missing files

* clear store on disconnect, add logout button to Account view

* fix disconnect handling

* Safari fixes

* organize current todos

* improve login page and server status tracking

* improve login page

* introduce sorting arch, refine reducers, begin viewLogHistory

* audit fix for handlebars

* implement moderator log view

* comply with code style rules

* remove original POC from codebase

* add missing semi

* minor improvements, begin registration functionality

* retry as ws when wss fails

additionally, dont mutate the default options when connecting

* retain user/pass in WebClient.options for login

* take protocol off of options, make it a connect param that defaults to wss

* cleanup server page styling

* match wss logic with desktop client

* add virtual scroll component, add context menu to UserDisplay

* revert VirtualTable on messages

* improve styling for Room view

* add routing to Player view

* increase tooltip delay

* begin implementing Account view

* disable app level contextMenu

* implement buddy/ignore list management

* fix gitignore

Co-authored-by: Jay Letto <jeremy.letto@merrillcorp.com>
Co-authored-by: skwerlman <skwerlman@users.noreply.github.com>
Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2020-12-31 17:08:15 -05:00
saadbruno
d5b36e8b8a Disabled strict mode for MySQL on the docker-compose file (#4214) 2020-12-28 16:43:45 -05:00
ebbit1q
f595a61d50 fix #4198 (#4209) 2020-12-09 02:08:00 -05:00
Joel Bethke
dbf6cd745e cmake: Minor updates (#4204) 2020-12-07 11:50:32 -05:00
ebbit1q
0ce813b826 restore saved previous server (#4206)
fix #3617
2020-12-05 21:36:27 -05:00
tooomm
77be6a120c fix broken image (#4202) 2020-12-01 16:57:27 -05:00
tooomm
37053cc909 Remove AppVeyor config (#4200)
* readability

* update ci badge for windows

* Delete .appveyor.yml
2020-12-01 22:38:50 +01:00
Zach H
34e951298f Address a handful of warnings from #6095 (#4199) 2020-12-01 11:30:22 -05:00
Joel Bethke
8845a23d5d CI: Fix up Windows builds and add GitHub Actions for Windows (#4193)
* ci: Add vcpkg submodule

* cmake: Fix NSIS not detecting platform arch

* cmake: Add QTDIR(64|32)

This change adds a new var for QTDIR(32|64) which makes it easier
to specify a specific directory for Qt, rather than having to edit
the prefix path directly, which can get pretty messy. Functionally,
this shouldn't affect any builds that are already finding Qt as
part of path, and should not affect Linux/macOS.

* cmake: Bump min cmake version

* ci: Add GitHub Actions for Windows
2020-11-30 23:54:50 -05:00
Derek Chiang
38606bdb87 Display a system tray notification when a player joins your game (#4194)
* Display a system tray notification when a player joins your game

* Display game ID in join message
2020-11-29 21:11:35 -05:00
Joel Bethke
56a51c7834 ui: Fix Qt depreaction warnings (#4195) 2020-11-29 02:33:13 -05:00
tooomm
402c09e028 Update CONTRIBUTING and more travis removing (#4179) 2020-11-28 03:14:15 -05:00
ebbit1q
9e702ec358 update link to master builds on appveyor (#4180) 2020-11-28 03:13:42 -05:00
Joel Bethke
c047a8ae3c ui: Add shortcut for "Save deck as..." (#4188)
Fixes: #4174
2020-11-26 22:22:44 +01:00
tooomm
b4740ad395 Update README.md (#4189)
* Update README.md

* don't run on .md-only changes
2020-11-26 13:14:00 -05:00
tooomm
99b0abe7fe GitHub Actions: don't run on .md only changes (#4183) 2020-11-25 21:14:05 -05:00
leiftw
b0239c11ab Fix typo in #L135 to conform with #L138 (#4182) 2020-11-24 14:58:28 -05:00
ebbit1q
46cf50d468 add ubuntu 20.10 Groovy Gorilla (#4178) 2020-11-23 18:09:02 -05:00
Zach H
9f9581c2be Support MTGJSONv5 format in Oracle downloader (#4162)
* Fix #4043, Support MTGJSONv5 format in Oracle downloader

* Auto redirect V4 downloads to V5, as we won't support V4 after this change

* clangify >_>

* Remove null values and account for IDs missing

* fix split cards and double faced cards somewhat

* do not consider double faced cards duplicates

* fix promo double sided cards

* typo

* fix alternative versions of cards with (letter)

* zach says this is more readable

* pre qt 5.10 compatibility

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2020-11-23 16:12:41 -05:00
tooomm
f3cf1f0dde pin badge to master (#4177) 2020-11-23 13:23:47 -05:00
tooomm
2f62671d8a More changes to GitHub Actions (#4175) 2020-11-23 12:27:35 -05:00
tooomm
589fbcdcd5 clearify wording (#4173) 2020-11-23 12:24:49 -05:00
ebbit1q
51b24bb92c refactor getting game age (#4095) 2020-11-22 20:28:56 -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
ebbit1q
0d842b5a35 Resurrect 2655 (#4136)
* fix #2640

* clangify

Co-authored-by: Fabio Bas <ctrlaltca@gmail.com>
2020-11-22 20:23:18 -05:00
ebbit1q
8441cb7ba9 refactor pingClockTimeout (#4169)
* refactor pingClockTimeout

try to see if it changes #3954

* use lcoks and unlocks again
2020-11-22 20:21:43 -05:00
ebbit1q
4aaedf64d2 add github actions (#4164) 2020-11-22 20:20:48 -05:00
Zach H
45d838a0b3 Search full subdirectory for custom databases (#4137)
* Fix #2324 by allowing for iteration & symlinks

* Ensure alphabetical sorting
2020-11-22 20:06:25 -05:00
ebbit1q
ca5f1dd434 do some guesswork if cards can't be found (#4131)
modify up the simplifyCardName function to ignore right halves
add guessCard function that prioritises full card names the simple ones
fix imports for misformatted split cards or double faced cards
introduces a small concession: not completely formatted names with a
shared name on the left side will get mixed up, eg "bind" but not "Bind"
this should be fine considering how this would fix a lot more cards
2020-11-22 19:57:51 -05:00
tooomm
d07bf1211a Improve dialogs (#4153) 2020-11-13 16:01:44 -05:00
Zach H
0966a8e90f Fix #566 by allowing for DeckName/Comments to be resized to the max, and even hidden! (#4157) 2020-11-13 15:36:20 -05:00
ebbit1q
68074b0f74 check if node is a dir before deletion (#4165) 2020-11-13 14:55:01 -05:00
ebbit1q
f11f072e0a add missing mysql connector dependencies to docker images (#4160) 2020-11-08 19:35:54 -05:00
tooomm
3064621a7e Add exclude term to search hints (#4038) 2020-11-02 18:44:19 -05:00
tooomm
0405c82cb2 File name cleanup (#4154) 2020-11-01 19:03:08 -05:00
knitknit
8e9d4e3a67 Retain lastDrawList if a card is being moved within hand, e.g. hand reordering only. (#4152) 2020-11-01 15:02:17 -05:00
tooomm
ef78fdf342 Fix resizing for game filter dialog (#4149) 2020-10-29 20:21:01 -04:00
Kaitlin
a49c4865bb Add game filtering for spectator attributes (#4127) 2020-10-27 15:49:02 -04:00
fdipilla
1a94261490 Multiple background images on all zones (#4144) 2020-10-23 15:36:02 -04:00
Zach H
e10446f5b8 Remove annoying spectator log messages (#4138) 2020-10-22 16:46:50 +02:00
rivten
2081639970 fix infinite loop when card file save fails, instead stop the execution just like the other errors in the call (#4143) 2020-10-21 10:31:57 -04:00
ebbit1q
8cbc4c91f6 free qprocess on oracle update fail (#4134)
* free qprocess on oracle update fail

reload the database whenever oracle exits
search for oracle in ../oracle so you can use it from the build dir

* only ask for the db updater once
2020-10-21 10:31:18 -04:00
tooomm
b8cd3af21f CONTRIBUTING: little changes (#4141) 2020-10-14 11:19:37 -04:00
tooomm
1e8464c1d4 README: add discord badge and adjust downloads (#4142) 2020-10-14 11:18:59 -04:00
tooomm
5df069ab19 userlists --> account (#4139) 2020-10-12 17:18:11 -04:00
ebbit1q
752ba7d905 add face down to the string if the card is face down (#4130) 2020-10-06 16:51:20 -04:00
ebbit1q
9cf7621102 rename selected card menu (#4132) 2020-10-06 16:49:29 -04:00
Zach H
9330774632 Add Gitter/Discord info to Contributing (#4126) 2020-10-02 14:53:21 -04:00
ebbit1q
e33f802ae8 update CONTRIBUTING.md (#4125) 2020-10-02 13:54:12 -04:00
ebbit1q
48c6458766 remove nonfunctional mana artifact detection code (#4121)
mana artifacts will use the stack and be placed in the normal tablerow
if you want to put it with your lands you're free to do so, as long as
you promise to not say oh this should not be here three turns after
shatterstorm resolved
2020-10-02 12:14:44 -04:00
ebbit1q
35fe6f624c apply clang format to proto files (#4123)
* add proto files to clangify

* apply clangify to proto files

* remove blocksonsingleline, it didn't actually do anything

also add missing space to the travis warning, emoji are monospace too
2020-10-02 12:14:05 -04:00
ebbit1q
e2251fe06b update sfmt to version 1.5.1 from 1.4.1 (#4124) 2020-10-02 12:13:12 -04:00
ebbit1q
a5511190a3 add missing cardlink for the flip messages in the message log (#4122) 2020-10-02 12:12:13 -04:00
Kaitlin
eba9c097f6 Add dropdown for game age filtering (#4092)
* Part 1 for #3067: Basic combo box (dropdown) filtering mechanism for game age.

* Apply suggestions from draft review

# Conflicts:
#	cockatrice/src/gamesmodel.cpp
#	cockatrice/src/gamesmodel.h

* switch to using QTime

* check for games older than a day

* formatting for casts and more unnecessary cosmetic changes

* ebbit1q fixes

Co-authored-by: ebbit1q <ebbit1q@gmail.com>
2020-09-30 23:46:10 -04:00
tooomm
58d024d067 fix update message (#4116) 2020-09-29 22:00:09 -04:00
ebbit1q
be7b172e55 skip misprints marked with † (#4107) 2020-09-26 21:56:45 -04:00
Kaitlin
a8b79fd020 Fix show-buddies-only filter loading, and add handling for creator name filter storage/loading. (#4105) 2020-09-26 21:55:13 -04:00
ebbit1q
14fcb2e5d7 skip duplicate nonpromos (#4097)
* consider cards with frameEffects promos

* skip duplicates entirely

all cards that are not "promo" or something like it will only retain the first copy instead of parsing all of them and keeping the last
2020-09-22 16:09:59 -04:00
ebbit1q
02935be14f fix QByteArray::append(QString) deprecation in qt 5.15.1 (#4102) 2020-09-22 16:09:48 -04:00
Zach H
bec02b4952 Judges can talk in games (#4091) 2020-09-09 13:20:59 -04:00
Kaitlin
79f590c99a Fix #3957: Properly set filters to defaults on initial load and disable "Clear filters" button if filters are set to defaults. (#4088)
* Fix #3957: Properly set filters to defaults on initial load and disable "Clear filters" button if filters are set to defaults

* Reuse resetFilterParameters() in GamesProxyModel constructor, and remove "off" designation for player min/max (as a default of 1/99 is enforced by the UI).
2020-09-09 11:24:54 -04:00
Kaitlin
ade3e81682 Move "Games shown" text to top, to match user count list. (#4089)
Fixes last part of #3068 that isn't already handled by #4088.
2020-09-08 14:34:36 -04:00
ebbit1q
45cbdad5fb bump version to 2.7.6 (#4076)
fixes #4075
2020-08-24 14:04:56 -04:00
Zach H
3536fa8a75 Fix #4072 by changing outdated HTTP to HTTPS calls within the codebase (#4073) 2020-08-23 17:24:26 -04:00
fdipilla
b0c7b9078d Multiple bg images zone (#4005) 2020-08-23 15:55:53 -04:00
ebbit1q
964207d04f make custom sets directory configurable (#4047) 2020-08-23 13:24:30 -04:00
ebbit1q
feee9cc328 fix #4070 (#4071) 2020-08-22 20:30:56 -04:00
olegshtch
4a563a131b Update test card database to v4 (#4064) 2020-08-21 18:18:53 -04:00
ZeldaZach
69f035f017 translation updates 2020-08-16 15:18:21 -04:00
olegshtch
daa89a9fb4 Run tests on WIndows CI (#4056)
* Run tests on Windows CI.

* Add message logger

* Skip tests that cannot be linked.

* Fix test call

* Fix mock link issue on MSVC

* Fix PATH variable to find libraries for tests

* Fail test step on test errors
2020-08-14 12:45:15 -04:00
olegshtch
44297dcd1c Fix release tests (#4063) 2020-08-13 10:18:01 -04:00
tooomm
80f613a77a travis: update macos 10.15 images (#4059) 2020-08-06 10:43:54 -04:00
olegshtch
776aa5c0ff Enable parallel compilation. (#4057) 2020-08-03 01:30:03 -04:00
olegshtch
446f9be24d Fix unresolved symbols when link tests to system libgtest-dev (#4055) 2020-07-30 14:52:44 -04:00
awlangham
5d9d91262b Added horizontal layout and stretch for player icon (#4052) 2020-07-28 01:22:02 -04:00
awlangham
fe63dfa762 Made user information window resizable (#4009) 2020-07-23 18:04:15 -04:00
ebbit1q
a76a3e5db6 Change method of opening directories to be the same for all oses, including linux (#4046)
* add opening directory in file browser to linux

this uses QDesktopServices to open the url "file://[location]"
by default this is
"file://$HOME/.local/share/Cockatrice/Cockatrice/pics/CUSTOM"

any distro that has a file browser should have an accompanying mime type
specifying the file handler for the file:// protocol using the
inode/directory mime type

see https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

if a user were to have removed their mime database this will not work and
it will fail with nothing but a log message, this would be rare and not
worth checking in my opinion

* make opening directories the same for all oses

* sort headers
2020-07-16 11:22:24 +02:00
Lee Tran
faecfd65fe fix message when moving cards to bottom of library (#4006) 2020-07-09 17:25:25 -04:00
tooomm
0063493066 Remove gitlab config (#4037)
* revert #2345

* remove gitlab yml
2020-07-01 17:36:04 +02:00
tooomm
2a7268c088 move db udpate (#4015) 2020-06-29 10:25:17 +02:00
ebbit1q
7fa1936d0f qt 5.15 compatibility (#4027) 2020-06-19 10:50:09 -04:00
ebbit1q
0f0e0193c1 update fedora 31 to 32 (#4024) 2020-06-09 03:07:34 -04:00
ebbit1q
0337f58088 add extra exceptions to plaintext imports (#4018)
this specifically to support imports from mtg arena that have a set code
and then a collectors number like (ABC) 123 at the end, this pr strips
that from the card name (we don't use it anyway)

fixes #4011
2020-06-02 10:56:01 -04:00
ebbit1q
53c6440cac make sure no //es are added to maintypes (#4017) 2020-06-02 10:55:05 -04:00
tooomm
28f3229a0e remove storm phrasing (#4001) 2020-05-18 15:27:53 -04:00
ZeldaZach
3dff63069e translation updates 2020-05-17 18:25:55 -04:00
kopcion
1eea8e9a37 Refactor messagelogwidget (#3875) 2020-05-17 18:15:30 -04:00
Rocangus
2de863f645 Spell Out Entire Counter Names With First Letter Capitalized (#3997) 2020-05-17 17:24:17 -04:00
tooomm
dc8603596d fix outdated version number (#3999) 2020-05-17 13:39:30 +02:00
fdipilla
fd0620445c Different backgrounds per player (#3990) 2020-05-14 20:31:12 -04:00
ebbit1q
04274d2497 add ubuntu 20.04 to travis (#3989) 2020-05-13 13:42:08 -04:00
Mikael Palmujoki
c69e77f330 Docker-Compose support for Windows (#3974)
* Add docker-compose document that works out of the box for Windows, and a storage location for the mysql-database.

* Documented Windows support in Readme file
2020-05-08 15:22:39 -04:00
Kaitlin
1988e4558f Change filter hint text to "Games shown: X / Y" and fix user-game segfault (#3973) 2020-05-08 15:15:54 -04:00
Zach H
9246c190fa Enhance Shortcut Menu (#3987) 2020-05-08 15:10:36 -04:00
ctrlaltca
d30691559a Some improvements to Servatice network code (#3969)
* Some improvements to Servatice network code

1. fix crash on fuzzy connection (tcp server only)
2. ensure websockets are parent()ed to avoid leaking them
3. quick catch disconnect()ed sockets instead of waiting for a socket error to happen
4. supporto mulltiple connection pools on the websocket server; they are still bound to the same thread due to a qt5 limitation.
2020-04-24 16:26:59 -04:00
Olxinos
46fe0cd725 prevent checkboxes' labels from being clipped in settings (#3968)
Merged, thank you
2020-04-24 18:33:26 +02:00
ebbit1q
45d62b6880 skip all duplicate promos instead of just stars (#3965) 2020-04-23 11:24:39 -04:00
Olxinos
db85ec48c7 Minor fixes to some std::sort calls (#3967) 2020-04-23 11:23:59 -04:00
ctrlaltca
1976c4caed macOS: test a simple way to bypass apptranslocation (#3944) 2020-04-08 17:34:57 -04:00
Kaitlin
2c3eab9b0c Fix #3068: Add hint text about game list filters (#3946)
Kaitlin Huben <kaitlin.huben+gitlab@gmail.com>
2020-04-07 17:55:36 -04:00
ctrlaltca
27b7ebe208 Oracle / card xml improvements (#3934)
* fix #1610

* fix #2679; partially fix #3647

* Fix tests

* Remove debug code
2020-03-30 21:56:03 +02:00
Zach H
a135ad064a Handle Release Channels better as we host more packages now (#3922) 2020-03-26 13:41:38 -04:00
ebbit1q
e8d5715f7a More OS support (#3915) 2020-03-20 15:32:12 -04:00
Zach H
9cec0852bb Remove force update appveyor (#3920)
According to https://help.appveyor.com/discussions/questions/16192-build-tag-annotation-overwritten, we don't need force_update to push the files up. This will preserve name/description of the release
2020-03-20 14:04:17 -04:00
ctrlaltca
ca618c6cc1 Travis: skip cleanup before deploy (#3919) 2020-03-20 12:23:49 -04:00
ctrlaltca
c5e0b08800 Cmake: get release name from github page instead of using APIs (#3916)
APIs are limited
2020-03-19 15:59:48 -04:00
ZeldaZach
568a4973fa make sh executable 2020-03-19 11:52:09 -04:00
ctrlaltca
5508699e92 Fix openssl name for windows x64 (#3914) 2020-03-19 10:09:29 -04:00
ZeldaZach
71dd6b8a30 Fix missing QDate
Signed-off-by: ZeldaZach <zahalpern+github@gmail.com>
2020-03-18 17:57:40 -04:00
ebbit1q
18a07274d4 clangify everything with the new header sorting (#3908) 2020-03-18 17:36:02 -04:00
ctrlaltca
1eb766b9d8 Fix dynamic loading of openssl libraries on windows (#3912) 2020-03-18 17:22:49 -04:00
ZeldaZach
e84409c0cf Translation Updates 2020-03-16 22:01:57 -04:00
Phillip Wheatley
91dc8b3b08 Add configuration option to send desktop notification on buddy presence (#3886) 2020-03-16 21:49:11 -04:00
Xenos6666
63b4f9b2f0 Add keyboard shorcuts to focus and unfocus chat (#3898)
* Added keyboard shorcuts to focus and unfocus chat

* Fixed format

* Changed the Esc behavior to work on any QLineEdit in the main Window and ignore shortcut conflicts

* Fixed a conflict with shortcuts

* Configurable unfocus shortcut and format fixes

* minor style fix
2020-03-16 21:48:05 -04:00
Phillip Wheatley
7285f24a29 Docker-compose setup for Servatrice (#3887)
* Docker compose for servatrice

* Update README.md

* Clean up docker-compose specific configuration
2020-03-16 21:40:58 -04:00
ebbit1q
17efe8c003 add pauper to the list of checked formats in search (#3901)
* add pauper to the list of checked formats without a short form

l:p remains reserved for pioneer

* throw out weird hardcoded formats

this will at least still work whenever a format gets added
the shorthands are still kept
2020-03-16 20:56:30 -04:00
ebbit1q
1815094249 Keep stars but only sometimes, add scheme cards back (#3904)
* ignore stars and promos but only sometimes

this will correct #3706 and #3715 being a bit overzealous in removing
cards and thus fix scheme cards being removed in entirety
fix #3845
note that this causes a lot more cards to be added that are in promo
sets, if these promo sets should prove to be problematic they should be
disabled somehow as having them as an option is still nice.

* remove debug lines
2020-03-16 20:42:27 -04:00
ebbit1q
a80c756dcb update deprecated methods in qt5.14 and protobuf 3.4 (#3906) 2020-03-16 20:41:41 -04:00
tooomm
361833e023 clarify language setting (#3897) 2020-02-19 10:54:55 -05:00
ctrlaltca
632e44b0b7 Fix missing languages in oracle dropdown (#3896) 2020-02-18 22:33:41 +01:00
skwerlman
8dd1e39ea9 support mtgo .dek files (#3889)
* support mtgo .dek files

they use plain text internally so we just need to reveal them in the load dialog

* formatting
2020-02-04 08:11:24 -05:00
Phillip Wheatley
0f18fa9546 Hide games created/hosted by people on your Ignore List (#3883)
* Implement filter for games created by ignored users.
2020-01-13 10:13:36 -05:00
ebbit1q
7bfefee073 add deck hash copying functions (#3882) 2020-01-13 10:11:19 -05:00
skwerlman
0ff7472ce5 fix password length checks (#3884)
unit testing when
2020-01-13 09:54:55 -05:00
Zach H
8fb0baa449 Trim tokens as this is our most common issue (#3870)
Signed-off-by: ZeldaZach <zahalpern+github@gmail.com>
2019-11-23 14:18:28 -05:00
skwerlman
57c02dcd5a GitHub: Switch to new issue template system (#3862) 2019-11-22 23:54:28 -05:00
tooomm
b072b540a2 Travis: more appealing thank you message (#3858) 2019-11-22 23:53:47 -05:00
kopcion
cd431594e2 Issue 3015 - store timestamp when password is reset (#3863)
* Added few unsigned to ints in order to get rid of warnings.
Added column to users table, for when password is changed(issue#3015).
Moved password length check to separate method, to make it cleaner.
* Added migration file and changed schema version to 27 due to servatrice.sql schema modification.
* Make password length configurable.
2019-11-22 23:52:45 -05:00
tooomm
e4c98e2ab8 Travis: update config for dpl v2 (#3853) 2019-11-05 17:39:00 -05:00
tooomm
32b557b862 readme: fix toc link (#3859)
* fix toc link

* adjust order
2019-11-03 23:15:08 -05:00
Zach H
e690b45f27 Create FUNDING.yml 2019-11-02 23:52:14 -04:00
tooomm
eadcdc6f7c link to new AllPrintings file (#3851) 2019-11-02 23:51:10 -04:00
ebbit1q
b187fb52e0 add pioneer (#3856) 2019-11-02 23:48:17 -04:00
tooomm
7e89933552 bump version number (#3857) 2019-11-02 23:47:55 -04:00
ZeldaZach
096a472ed0 translations 2019-10-21 19:09:28 -04:00
tooomm
365b0a31ed Travis: add Mojave deploy target and release a zipped .dmg (#3819)
* add osx mojave build+deploy

* add job names, change variables

* add zipping to packaging step

* see #3814

* update to high sierra

* update homebrew

* xcode 11.1

* [skip ci] add link to config explorer
2019-10-21 19:06:40 -04:00
skwerlman
e8fd2ce2aa add support for adventures to oracle (#3836)
* add support for adventures to oracle

this causes cockatrice to correctly fetch the front of the card for the adventure portion rather than sending lots of bad requests to scryfall

* treat adventures more like split cards

* dont hardcode `maintype: creature`
2019-10-09 01:05:30 -04:00
ebbit1q
a3fc9b6ee5 add move top card to stack keybind (#3827) 2019-10-09 00:10:23 -04:00
ebbit1q
9eebc590c1 [WIP] add shortcuts for readying and sideboarding in the lobby (#3832)
* add shortcuts for readying and sideboarding in the lobby

* clangify
2019-10-08 23:59:48 -04:00
ebbit1q
f840dcbd66 Increase macos version, drop sierra support (#3837)
800b0f4b2f homebrew no longer provides a bottle for protobuf, which is so big we can't do without a precompiled version. This means we can no longer support sierra 10.12 and have to use high sierra 10.13, this does not seems like a very painful grade however as there are no differences in hardware requirements between the two and any user on sierra can upgrade to high sierra if they wanted to.
2019-10-08 23:55:47 -04:00
ebbit1q
8879fc2e39 fix compiling on gcc 9 (#3830) 2019-10-02 15:48:49 -04:00
ebbit1q
cd29e2f252 add disable tearoffmenu option (#3826) 2019-10-02 14:58:22 -04:00
ctrlaltca
bcf505c98b Oracle: fix crash on no card type; fix #3815 (#3816) 2019-10-02 14:54:51 -04:00
tooomm
933f3e1392 update os name (#3814) 2019-10-02 14:54:10 -04:00
Ashley Davis
ba0462b24f Update Dockerfile to include missing lib, not build dbconv, and use ENTRYPOINT (#3808) 2019-09-09 17:06:28 +02:00
ctrlaltca
7e8a63cd62 Settings: default to current chosen directory while opening file dialogs (#3810) 2019-09-09 09:23:38 +02:00
tooomm
03e109ef12 wait > sleep (#3806) 2019-09-05 15:44:14 +02:00
ebbit1q
257f2eb34c warning message is way too scary (#3805)
People keep complaining they can't compile on ubuntu 16.04 because of this warning message, while it just disables 2 "prettyness" warnings and only in the automatically generated code by protobuf which should never be a problem anyway!
original pr: #3432
2019-09-05 15:43:51 +02:00
Zach H
53728598fe translation updates (#3804) 2019-08-31 21:36:13 -04:00
ctrlaltca
3b98eb77f5 Close all player-associated zoneviews when he quits; fix #3799 (#3800) 2019-08-27 20:07:33 -04:00
ctrlaltca
b6df5a4ac3 Deal with recent Qt methods deprecation (#3801)
* Deal with recent Qt methods deprecation

 * Use std::sort, std::less instead of qSort/qLess
 * Use QFontMetrics::horizontalAdvance instead of ::width
 * Use qApp->primaryScreen() instead of QDesktopWidget
 * use lambas instead of QSignalMapper
 * Use QTreeWidgetItem::setForeground instead of ::setTextColor
 * Use QDir::setPath instead of operator=(QString)
 * Use QList::swapItemsAt instead of ::swap

* fix error
2019-08-27 20:06:54 -04:00
ctrlaltca
f54165025e Add a new command to reverse turn order (#3802) 2019-08-27 20:04:27 -04:00
ctrlaltca
013137c418 Fix #3783 (#3785) 2019-07-17 10:05:00 -04:00
ebbit1q
faf02100a5 add 4BB to nonenglish sets (#3786) 2019-07-17 10:04:19 -04:00
tooomm
a8b34d51a5 travis: separate lint build (#3778)
* Create travis-lint.sh

* separate lint

* Update travis-lint.sh

* Update travis-lint.sh

* use default image

* call lint externally

* add xenial again for tests

* Update .travis.yml

* fix path

* move test to docker build

* remove --format argument test / passed

* add test label

* use bash command

* source > execute
2019-07-13 15:39:51 -04:00
Rob Blanckaert
2ef3e6fc93 Enable tear-off on menus. (#3772) 2019-07-11 22:53:43 -04:00
ebbit1q
a3a1e20074 replace old mulligan with new behavior (#3773) 2019-07-11 22:53:09 -04:00
tooomm
ce54aa6813 remove fedora package support (#3752) 2019-07-11 16:05:42 -04:00
ebbit1q
5139039402 add homebrew cache to cache (#3776)
* add homebrew cache to cache

* use same image

* ruuun travis, ruunn

* remove extra space

* do these dashes do this?

* trigger ci

* these dashes confuse me, consistency is like woosh
2019-07-11 09:21:35 -04:00
ctrlaltca
f4adf79ad9 Message log: remove all workarounds; fix #3553 (#3760)
* Remove workarounds in messagelog
2019-07-07 22:27:50 -04:00
ebbit1q
f10f9ada3a properly capitalize set types like Duel Deck and From the Vault (#3770)
* properly capitalize set types like Duel Deck and From the Vault

* add more tiny words

* update macos for travis (slower build times)
2019-06-30 12:08:07 -04:00
ctrlaltca
965a6cdde7 fix #3755 (#3756) 2019-06-12 14:50:26 +02:00
tooomm
62c0825874 fix grammar (#3754) 2019-06-09 19:01:32 +02:00
tooomm
4e918f0f5d move brackets out of link tags (#3753) 2019-06-09 19:00:53 +02:00
tooomm
3e3154a58c version bump to 2.7.2 (#3751) 2019-06-09 19:00:04 +02:00
Zach H
22e2e442f5 updated translations for 2.7.1 (#3750) 2019-06-08 12:38:59 -04:00
ctrlaltca
c0c4a6df50 Fix card database load after update (#3748) 2019-06-08 14:48:34 +02:00
ctrlaltca
36ba9c2d94 fix #2786 (#3747) 2019-06-08 10:15:33 +02:00
ctrlaltca
1288795de9 fix #3735 (#3746) 2019-06-08 10:14:58 +02:00
Zach H
0380de9571 add trans strings for upstream (#3745) 2019-06-04 17:41:58 -04:00
ebbit1q
6ac3852995 grammar fixes (#3727) 2019-06-04 17:33:36 -04:00
ctrlaltca
1d8fb79e11 Misc startup improvement (#3740)
* Misc startup improvement

* fix paths

* clangiftw

* reworked save sets dialog

* Unified load and save steps for tokens and spoilers; added "finished" page

* linting1

* linting2

* wording

* undo layout change

* wording

* fix spoiler path again

* simplify phrase

* lint

* lint fix

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-06-02 21:47:37 -04:00
tooomm
e084bd18a9 fix aftermath (#3742) 2019-06-02 12:05:54 +02:00
ctrlaltca
7c3cc527f6 fix windows style (#3739) 2019-06-01 16:08:44 +02:00
ctrlaltca
218aec07f8 Split buttons in the deck editor (#3709) 2019-05-31 11:54:32 -04:00
ctrlaltca
ada13f6578 Card Database converter (#3694)
* Database converter

* Fix win compilation and NSIS installer

* Maybe fix windows again

* Re-fix windows
2019-05-31 11:48:30 -04:00
Rob Blanckaert
8682367b52 View hand window (#3731)
* Roar

* Add View Hand menu to player

* Add shortcut

* reorder right click menu
2019-05-31 16:53:24 +02:00
tooomm
a80f3b77da use Qt 5.12 LTS (#3732) 2019-05-30 12:02:10 +02:00
tooomm
fd8bf66acd style (#3728) 2019-05-27 21:17:57 +02:00
ctrlaltca
115ed78059 Update Translations (#3717)
* Extract new strings from translations

* fetch new translations
2019-05-10 23:13:34 +02:00
ctrlaltca
00ca69fced Add v4 xsd (#3710) 2019-05-09 09:38:52 +02:00
ctrlaltca
6c21855f98 Token dialog fixes (#3711)
* Token dialog fixes

* clangify

* edit custom tokens

* Fix in-game token dialog
2019-05-09 09:37:27 +02:00
ebbit1q
3830c85ce6 skip more cards (#3715)
closes #3713
2019-05-09 09:37:04 +02:00
ctrlaltca
0dc4cc7e03 propose to save deck before loading a new one; fix #3699 (#3707) 2019-05-05 22:38:53 +02:00
ctrlaltca
8f5bfd1f87 Oracle: skip cards with a star in the collectors' number (#3706)
* Oracle: skip cards with a star in the collectors' number

* clangify
2019-05-05 22:38:31 +02:00
ctrlaltca
95d6efcdbf Dont create dummy card infos for unkown cards (#3708) 2019-05-05 22:37:48 +02:00
skwerlman
63cf0ae764 Fail cmake if protoc doesn't exist (#3705)
fix #3704
2019-05-04 23:33:38 -04:00
tooomm
f1e79707e8 work around confusing new default badge label (#3701) 2019-05-01 17:29:15 -04:00
ebbit1q
9073cb53a8 add !sflang! property for card image urls (#3670)
update translations
add translation for the sflang property to supported languages
2019-04-18 13:01:50 -04:00
skwerlman
d018070891 Fix cipt check for shock lands (#3678)
* Fix #3410

The oracle text for shock lands has changed such that they no longer get `cipt`. This fixes that.

* fix whitespace

* use shorter check
2019-04-09 13:12:15 -04:00
tooomm
837924b819 reword (#3682) 2019-04-06 23:12:21 -04:00
tooomm
00cfb1347a Update ISSUE_TEMPLATE.md (#3679) 2019-04-04 14:52:48 -04:00
ctrlaltca
0ce2e61db9 Fix filters (#3676) 2019-04-02 23:02:34 -04:00
ebbit1q
1854e3440b add ci: filter for color identity to help page (#3673) 2019-03-27 22:57:12 -04:00
ebbit1q
a0260eb0b2 add italian renaissance to nonenglish sets (#3672) 2019-03-27 22:56:52 -04:00
ebbit1q
c874f201c3 add a bunch of parents to dialogs (#3658)
* add a bunch of parents to dialogs

works on #3651

* use game as parent instead

* add more parents

* fix create token dialog modality

* add parent to game information window

* replace a bunch of nullptrs with the magic of sed

* add parent to tip of the day and counters

* reorder game ptr

* set parent for life counter

* clangify
2019-03-26 14:54:47 -04:00
tooomm
7072f24103 update link (#3665)
repo got moved
2019-03-22 16:11:36 -04:00
ebbit1q
eb4914d36f include a list of priorities for maincardtypes in oracle (#3663)
fix #3662
2019-03-16 15:00:34 -04:00
James Le Cuirot
6d27631764 Add USE_CCACHE option to CMake so that ccache can be forcibly disabled (#3661) 2019-03-14 16:19:55 -04:00
Rob Blanckaert
a522255baf - Chnage some hard-coded colors to take into account their background. (#3654)
- Change some SVGs from black to white if their background is too dark.
2019-03-13 16:11:30 -07:00
ebbit1q
7eb2e36740 workaround for foreign card arts getting priority by default (#3652)
fixes #3623
2019-03-12 10:12:31 +01:00
ctrlaltca
2d8f01b2e9 Show current counter value on "set counter" dialog (#3650)
* fix point 10 of issue #655

* clanfigyism
2019-03-11 00:33:19 +01:00
ctrlaltca
6f95556632 Fix related cards menu in deck editor (#3649) 2019-03-10 23:15:24 +01:00
ctrlaltca
0326f0d4c9 Permit use of up/down keys to increment/decrement counter value; Fix #3618 (#3646)
* Fix #3618

* clanfigy me softly

* fix unused var and params

* Frce the dialog being modal; ensure self deletion

* More qt-like behavior

* Restore dialogSemaphore logic
2019-03-10 22:22:19 +01:00
ctrlaltca
389f7fdc25 Shortcuts preference pane (#3641)
* Shortcuts preference pane

* Honor and glory to the hypnoclangifier

* clanfigy: exclude deleted files from being checked

* keep the olf translation context to be able to reuse old translations

* Fix gcc; extract translations

* Moved generic buttons after the groupbox

* Update current item on "clear/reset all"

* Sequenceedit: make buttons larger and translatable, add text

* Event filter

* Don't filter arrow keys; added placeholder text

* group counters
2019-03-10 21:49:33 +01:00
ebbit1q
11b2942d09 try to use fabs instead of abs to see if flatpack cares (#3638) 2019-03-10 18:49:18 +01:00
ctrlaltca
52cc725de4 Fix crash on card relation to inexistent card; fix #3637 (#3640)
* Fix crash on card relation to inexistent card; fix #3637

But that whole loop is a logic mess

* Check if related cards exists before creating the menu entry

* honor and glory to the hypnoclanfigier
2019-03-10 18:47:24 +01:00
Rob Blanckaert
a304d4235d Fix #3614 (#3633) 2019-03-07 22:48:03 -05:00
tooomm
4d7024e066 version bump to 2.7.1 (#3635) 2019-03-07 22:47:41 -05:00
Rob Blanckaert
4ce928eb41 Allow more characters in bare searches (#3632) 2019-03-07 12:21:30 +01:00
Rob Blanckaert
b172172be1 Fix #3587 (#3634) 2019-03-07 12:21:08 +01:00
ctrlaltca
5fd86954d6 fix #3621 (#3628) 2019-03-06 19:18:19 -05:00
Rob Blanckaert
55c4207182 Fix related cards popup (#3613) 2019-03-04 02:19:37 -05:00
ebbit1q
440311c939 set word wrapping (#3612)
fix #3605
2019-03-04 02:17:33 -05:00
Zach Halpern
81059fa3d8 translations 2019-03-04 01:49:43 -05:00
Zach Halpern
9f856acba0 revert
Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-03-04 01:34:13 -05:00
Zach Halpern
69474bad22 revision version 2019-03-04 01:33:49 -05:00
ebbit1q
fafdb65453 prioritize creature on maincardtype (#3611) 2019-03-04 01:32:19 -05:00
Rob Blanckaert
477faafb84 Adjust fontsize up on highdpi displays (#3610) 2019-03-04 01:32:09 -05:00
ebbit1q
abe4f5ca60 don't remove pt! 🔥🔥🔥🔥 (#3606)
* don't remove pt! 🔥🔥🔥🔥

* apply water to burns

* clangify

* fix clientside

* clangify

* missed qdebug

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-03-04 00:55:54 -05:00
Rob Blanckaert
a86aeb00c5 Fix 3598 (#3607)
* Fix 3598

* spelling
2019-03-03 22:03:35 -05:00
Zach H
754b9bdc5a Won't change if autoconnect enabled (#3602)
* Only will auto-select RR if autoconnect is not checked off.

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Only will auto-select RR if autoconnect is not checked off.

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* On disconnect, un-check autoconnect. Better naming.

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-03-03 21:57:48 -05:00
Rob Blanckaert
5a3f2fcff7 Allow /\ in simple searches. (#3604) 2019-03-03 21:48:20 -05: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
Zach Halpern
18ad3cf4a5 Disable auto connect when updating 2019-03-03 16:14:08 -05:00
Rob Blanckaert
a7f19f7848 Fix some dark mode colors. (#3596)
* Pick a link color that looks good in both light and dark mode

* Fix up chat log colors
2019-03-03 05:24:10 -05:00
Rob Blanckaert
63839eb464 Fixes #3590 (#3595) 2019-03-01 18:11:09 -05:00
Rob Blanckaert
eb60fec8e2 Filter Strings for Deck Editor search (#3582)
* Add MagicCards.info like fitler parser.

* Use FilterString whenever one of [:=<>] is in the edit box.

* Opts

* Opt

* - Capture errors
- Allow querying any property by full name

* clang format

* Update cockatrice/src/filter_string.cpp

Co-Authored-By: basicer <basicer@basicer.com>

* - Some refactoring for clarity
- More filters
- Add filter help

* Clangify

* Add icon

* Fix test name

* Remove stay debug

* - Add Rarity filter
- Make " trigger filter string mode

* You have to pass both filter types

* clangify

* - Allow filtering by legality
- Import legality into card.xml

* Add format filter to filtertree

* More color search options

* RIP extended

* More fixes

* Fix c:m

* set syntax help parent

* Fix warning

* add additional explanations to syntax help

* Allow multiple ands/ors to be chained

* Cleanup and refactor

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Move utility into guards

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* I heard you like refactors so I put a refactor inside your refactor (#3594)

* I heard you like refactors so I put a refactor inside your refactor

so you can refactor while you refactor

* clangify

* Update tab_deck_editor.h
2019-03-01 14:30:32 -05:00
Zach Halpern
4427ad1451 Don't use hardcoded index
Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-28 00:34:12 -05:00
Zach H
e77e439c4b Minor cleanup & set RR default for new clients (#3591)
* Minor cleanup & set RR default for new clients

* Handle case of no entries

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Use RR as default on rebuilds

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-28 00:10:10 -05:00
Rob Blanckaert
45b16ba78d macOS: Fix qt5.12 scale issues and dark mode (#3588)
* Maybe fix QT 5.12 scale.

* Use Palette colors
2019-02-24 10:05:09 -08:00
Rob Blanckaert
e68305d7bf - CardItems have dummy CardInfos if they arent in the database (#3589)
- If a CardInfo has no sets, add a dummy one to try to download it by non-set specific templates.
2019-02-23 19:52:38 -05:00
Zach Halpern
c2150fd9bd Update translations
Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-22 16:49:06 -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
9d27b36704 Make v4 Cockatrice XML importer convert picURL to picurl to match v3 behavior and allow picURL images to load. (#3585) 2019-02-21 03:48:03 -08:00
Rob Blanckaert
d519f992d2 Updater for websockets (#3581)
* Dont clobber password when pulling down server list.
* Force download server list on client update.
2019-02-19 00:24:35 -08:00
Rob Blanckaert
1b3da22dd7 Merge pull request #3579 from basicer/messagelog-tweaks
Tweaks to message log.
2019-02-11 16:42:51 -08:00
tooomm
317f29b321 update appveyor badge (#3576) 2019-02-11 22:32:11 +01:00
Rob Blanckaert
c32f2190bd - Mill cards in correct order
- Roll up shuffles into bottom message
- Remove unused variable
2019-02-11 02:12:56 -08:00
Rob Blanckaert
d49ec0088f Fix shuffle (#3578) 2019-02-10 21:06:30 -05:00
tooomm
5b197c072e Git clone depth 15 (#3577) 2019-02-10 20:54:47 -05:00
Zach H
294b4332cc zach deployment key (#3575) 2019-02-10 15:57:53 -05:00
Zach H
6d6b7b4537 Merge pull request #3574 from Cockatrice/tooomm-patch-2 2019-02-10 14:46:30 -05:00
tooomm
b3fd5857f8 bump app version to 2.7.0 2019-02-10 13:29:12 +01:00
Zach H
78c18b7db6 new translations (#3573) 2019-02-08 21:03:03 -05:00
ctrlaltca
099d524a42 Smoother trice (#3566) 2019-02-08 20:57:17 -05:00
Rob Blanckaert
612edae5f6 Click replay timeline to seek. (#3570)
* Click replay timeline to seek.

* Fix seek for long games

* Erase log when rewinding

* zach cleanup

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-08 20:32:56 -05:00
Rob Blanckaert
b065ada633 Fix unbalanced save() restore() in cards (#3571) 2019-02-08 14:24:55 +01:00
ctrlaltca
e4bac025dd remove debug (#3572) 2019-02-08 11:57:24 +01:00
ctrlaltca
923b4acdbc Make the xml parser less strict about xml problems (#3567)
* Make the xml parser less strict about xml problems

* clanfigy me harder
2019-02-08 01:50:54 -05:00
ctrlaltca
2703db75d0 Update card menu when its counters change (#3565) 2019-02-08 01:50:34 -05:00
Rob Blanckaert
d932581f4a Move to bottom of library in random order. (#3549)
* - Allow shuffling a subset of a zone
- When moving cards to the bottom of library, shuffle them after
- Process events in the correct order serverside

* Zach fixes

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Comments + additional guard
2019-02-07 14:08:44 -05:00
ctrlaltca
6e3fd30fcb Add install mode to logger; fix #3558 (#3563)
## Related Ticket(s)
- Fixes #3558

![schermata 2019-02-06 alle 08 45 25](https://user-images.githubusercontent.com/1631111/52327211-98419900-29eb-11e9-9d15-69f59fc9d379.png)
2019-02-06 12:27:32 +01:00
ctrlaltca
46b34d6515 Add websocket feature (#3562)
* add websocket feature

* Added 2.7.0_min_version
2019-02-06 03:08:59 -05:00
Rob Blanckaert
073c531855 Connect from commandline (#3556)
* - Use Qt argument parser
- Add --connect command line option.

* Better version info
2019-02-06 03:08:24 -05:00
ctrlaltca
9118871afb Fix mistyped signal name; (#3561) 2019-02-06 02:39:31 -05:00
tooomm
a7d485d6f5 keep wrong project domain for proper settings storage (#3560)
* update project domain

* revert + comment/hint

* better wording
2019-02-05 23:57:35 -05:00
Rob Blanckaert
a719e3b306 Log number of cards revealed to other players. (#3555) 2019-02-05 02:33:11 -05:00
Rob Blanckaert
2bf444e4b7 Add shortcut for next phase with action (#3548)
* Add shortcut for next phase with action

* zach cleanup

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* cleanup and niceties

* clangify

* rename cleanup

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-03 22:57:41 +01:00
Rob Blanckaert
c1d25bf58b Add /servatrice to websocket URL to help out reverse proxies. (#3551)
Remove unused define
Use websocket port from default servers if given.
2019-02-03 22:50:19 +01:00
Rob Blanckaert
544c66edde Make server 12-factor compatible. (#3546)
* Docker

* Herokuize

* Use mysql method with database_url

* cleanup
2019-02-03 21:58:54 +01:00
Zach H
5a4f020196 Merge pull request #3550 from ctrlaltca/fix_hghlight 2019-02-03 13:35:30 -05:00
Fabio Bas
ec081b8b03 Fix active player game area highlightning 2019-02-03 19:15:30 +01:00
Rob Blanckaert
9a8c81cf5e Client Websockets (#3545)
* Websockets

* Add setting to get websocket IP from header

* Add QT version guard

* Minor cleanup

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* - Make QWebSocket required
- Remove QWEBSOCEKT_LIB guards
- Only TCP on port 4747
- Fix peerName lookup

* fix check

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Update CMakeLists.txt

* Update CMakeLists.txt
2019-02-03 11:43:22 +01:00
Rob Blanckaert
5e38214675 Playing a tableRow 3 card from the stack puts it to grave. (#3547)
* Playing a tableRow 3 card from the stack puts it to grave.

* move to top by resetting pos

* Zach touch

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-02-03 11:33:38 +01:00
ebbit1q
ba985f97e5 removes the pt of face down cards (#3542)
* removes the pt of face down cards

Instead of setting the pt of a hidden card to the value only known to
you, it's reset to nothing.
Resetting a card while it's already reset does nothing.
Removing the pt of a card is logged as "player removes the pt of card."
instead of "player sets the pt of card to ." (note the missing value).

* reset unknown cards to nothing instead

* replace cardname with card id for unknown cards

fixes #3543

* prefix #
2019-02-02 20:33:29 -05:00
Rob Blanckaert
c9c0fb28ee Counter expressions (#3534)
* Add peglib

* - Add expression engine
- Take an expression when setting a counter

* Shift + Click = Middleclick for counters

* minor cleanup for clangify

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Added tip entry
2019-02-02 13:56:49 -05:00
Filip Sufitchi
6e1b0a7590 Fix up Dockerfile to use ubuntu:bionic and actually build (#3540)
* Fix up Dockerfile to use ubuntu:bionic and actually build

* Remove commented PPA

* Fix up Dockerfile to use ubuntu:bionic and actually build

* cleanup

* fixup merge
2019-01-31 19:01:17 -05:00
ebbit1q
3562a48984 Merge pull request #3536 from ebbit1q/fix_3500
fix #3500
2019-01-30 18:01:11 +01:00
ebbit1q
bb4ca4db4a set default minumum player count for multi column layout to 4 (#3535)
fixes #3533
does not change existing settings
2019-01-30 15:29:24 +01:00
ebbit1q
c51377ca2a fix #3500 2019-01-30 15:13:27 +01:00
ctrlaltca
c3d94a51ec fix #3498 (#3527) 2019-01-27 12:51:03 -05:00
Rob Blanckaert
7cd9b9c0c8 Unconcede (#3515) 2019-01-27 12:50:41 -05:00
ctrlaltca
0dcf97d29d Bump version to 2.6.3 (#3525)
## Short roundup of the initial problem
A beta release for 2.6.3 has been relesed, but the codebase is still at 2.6.2

## What will change with this Pull Request?
Bumped version to 2.6.3
2019-01-27 12:11:22 +01:00
ctrlaltca
ebc881fa1c fix #3523 (#3524) 2019-01-27 11:42:22 +01:00
ebbit1q
37f9f62f03 correctly report exit code in clangify (#3520) 2019-01-25 21:41:39 +01:00
Zach H
1ace060e34 zach's turn to run the show (#3521) 2019-01-25 13:36:43 -05:00
ebbit1q
495e232c22 add the amount of cards logged to the reveal cards event (#3516)
* add the amount of cards logged to the reveal cards event

sets cardname to the amount for the call if not 1 for the fromstr only
add braces for single line statements

* zach cleanup
2019-01-24 08:53:05 +01:00
ctrlaltca
ed70099e36 Rework of the card database, xml format and oracle parser (#3511)
* CardDB: merge all card properties in a new structure

* Pre Json parser changes

 * Cockatrice: use qt's builtin json support
 * Move qt-json src dir from cockatrice to oracle
 * Add dummy cockatricexml4 parser (yet to be implemented)

* Implement a new parser and xml format

 * cockatricexml4: new xml parser following the "generic properties hash" pattern;
 * oracleimporter: refactor the parsing code to better adapt to cockatricexml4; rewrote split cards parsing
 * carddb: change "colors" from a stringlist to a string
 * carddb: move the getMainCardType() method to the cockatricexml3 parser
 *

* CardInfo: show all properties (stil missing: nice name + translation)

* Rework the "add related card" feature so that it doesn't change the card name in the carddb

Also, fix token count display

* Picture loader: Added support for transform cards

* Fix side information for flip cards

Mtgjson uses side a/b for flip cards, while scryfall doesn't

* Pictureloader: dynamic tag resolution from card properties

Examples old => new
* !cardid! => !set:muid!
* !uuid!   => !set:uuid!
* !collectornumber! => !set:num!
New examples:
 * !prop:type!
 * !prop:manacost!

* Start moving mtg-related property names to a specific file

* Clangify

* Fix tests

* Make gcc an happy puppy

* Revert "Make gcc an happy puppy"

This reverts commit 446ec5f27516c4d3b32dbfc79557f4827c5c5bdf.

* Some gcc fixes

* Share set list between different db parsers, so they won't overwrite one each other

* All glory to the hypnoclangifier!

* Fix test compilation

* Cleanup edited files in the prior PR. (#3519)

* Cleanup edited files in the prior PR.

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Fix includes

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Update carddatabase.h
2019-01-23 18:17:10 -05:00
ctrlaltca
19180243aa Workaround fedora compilation problem on Travis; fix #3508 (#3512)
* attempt fix fedora by downgrading qt

* fix
2019-01-22 10:28:20 +01:00
Rob Blanckaert
a08cf9379b Disable darkmode on MacOS (#3513) 2019-01-22 10:28:06 +01:00
ebbit1q
1c6b43c545 fix typo in shortcut name (#3509)
In #3439 the shortcuts got some overhaul but this shortcut wasn't
correctly renamed.
This fix will clear users' original shortcut for increasing toughness.
An improvement over the current state of it not working at all and being
unable to set to the default shortcut.
Fixes #3506
2019-01-19 05:15:22 -05:00
Zach H
41bfbf2e83 Force Oracle run on new install/update (#3497)
* Force Oracle run on new install/update

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Add settings option to disable such a check

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-01-14 01:11:05 -05:00
ctrlaltca
273d5d89b7 Fix shortcuts on mac; fix #3482 (#3491)
* hopefully fix #3482

* Travis:uUse the most recent osx_image; use homebrew support in travis
2019-01-08 15:20:29 -05:00
Zach H
b0e643ecc0 Several download URLs have arrived! (#3494)
* Cockatrice Picture loader uses better defined URLs now
URLs are defined on the Card Management tab
Instead of Primary/Backup, you can now define a list of URLs
List of URLs can be drag/dropped for priority ordering
Oracle now uses scryfallId > mtgjsonUUID for !uuid!

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Simplify to QStringList and remove metacall

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* fix issues brought up by Dae. Also fix how the defaults load to account for first time users.

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* clangify

* Fix save settings on row moved (#3495)

* merge model fix, and reclangify

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>

* Sources > Resources

Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2019-01-08 15:18:06 -05:00
ctrlaltca
4eda7cda9e Make deck editor filter translatable ; extracted new translations; Fix #3488 (#3490)
* Fix #3488 ; extracted new translations

* Make operators translatable, too
2019-01-07 21:50:36 -05:00
ctrlaltca
463ef13fe0 Update version to 2.6.2 (#3492)
## Short roundup of the initial problem
We released 2.6.2, but CMake still thinks it's 2.6.1

## What will change with this Pull Request?
Update CMake version to 2.6.2
2019-01-07 09:12:27 -05:00
Caledor
ce140041e3 Switch from (s) to plural form whenever possible in message log (#3487)
* Use plural form whenever possible

Change for "%1 draws %2 card(s)" is self explanatory

Change for "look top X" switches var %2 and %3 so i can skip %3 for singular and translate as "top card", as explained in tr comment

For "counter(s)" i just moved it into %3 (each color) since plural form is already used there.

* clangify

* manual clangify attempt

* Add missing tr

* More missing tr
2019-01-06 20:48:20 +01:00
ebbit1q
84f6da103f remove all dos line endings (#3489) 2019-01-06 13:46:18 -05:00
ctrlaltca
2621cc09ac Optimize json parsing (#3480) 2018-12-30 19:05:40 -05:00
ebbit1q
40f787be14 add an ignore button to sort warning (#3463)
* add an ignore button to sort warning

* change warning message

* formatting
2018-12-30 18:51:03 -05:00
Caledor
59300e61fc Minor translation issue fix (#3481) 2018-12-28 15:59:11 -05:00
Zach H
ab1c4cb1d7 Use scryfall urls (#3474) 2018-12-20 18:49:53 -05:00
Zach Halpern
4616dd47bc preferences sym not dir 2018-12-20 18:26:46 -05:00
Zach H
94fe64c6c1 Update translations (#3475)
Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com>
2018-12-20 18:26:00 -05:00
ctrlaltca
65f41e520e [WIP] Basic mtgjsonv4 support (#3458)
* Basic mtgjsonv4 support

* Fix set type

* [WIP] Oracle: use zx instead of zip

* clanfigy fixes

* Fix reading last block of xz

* Added back zip support

* [WIP] adding xz on ci + fixes

* typo

* resolve conflict

* Make gcc an happy puppy

* test appveyor build

* appveyor maybe

* Appveyor: add  xz bindir

* Update ssl version (the old one is not available anymore)

* Windows is a really shitty platform to code on.

* test vcpkg

* again

* gosh

* nowarn

* warning 2

* static

* Maybe

* cmake fix

* fsck this pain

* FindWin32SslRuntime: add vcpkg path

* Appveyor: cache support, force usable of openssl from vcpkg

* updated as suggested

* ouch

* Import card uuids and expose this property as !uuid! for card image download

* Minor style fixes

* address changed URL
2018-12-20 18:05:03 -05:00
ebbit1q
cee69705d8 fix rpm builds in travis (#3472)
* add rpm build option to travis compile

* better argument parsing
2018-12-12 13:26:13 +01:00
tooomm
3a05bcfb29 fix deployment on travis (#3468)
## Short roundup of the initial problem
Deployment conditions weren't met, because the $BUILDTYPE variable doesn't exist anymore.
@ebbit1q changed that, and there is a flag now that you pass to the compile script instead.

## What will change with this Pull Request?
- Remove that condition
It's not needed because we make sure via the build config itself that on tags no debug builds are run. This was a double check basically to prevent debug builds beeing deployed.
2018-12-07 11:48:06 -05:00
ebbit1q
e921cf88f9 place the os nametag after the version (#3465)
When i added the appended os nametags I didn't account for the dots inside the version, this will place the nametag before the last dot instead of after the first dot.
2018-12-05 19:34:56 -05:00
ebbit1q
952f13dec4 update macos (#3461)
Set travis image to xcode9.2: this image uses sierra instead of
el_capitan, el_capitan no longer builds.
Disable homebrew autoupdates, this gives a major speedup.
2018-11-28 15:51:36 -05:00
ebbit1q
ed2a3f92e0 fix travis format checking again (#3451)
Set the exit code properly, "$?" does not work after "if !".
Move "set -e" to after format checks.
2018-11-25 19:29:24 -05:00
ebbit1q
f1563c5604 add fedora docker image to travis compilation (#3447)
* add fedora docker image to travis compilation

fixes #1746

* add dockerfile

* would you like to please install for me? [y/n]

* remove bc dependency

* save cache separately for different docker builds

* add development packages to fedora dockerfile

* add package names

* use env values to make these all look the same

* set docker image name correctly

* add missing dependency

* minor oversight, add %% to remove all braces in check schema
2018-11-25 11:25:47 +01:00
ebbit1q
06081bd940 add keybinds to mill cards (#3439)
* add keybinds to mill cards

Add functions to move single card from top of deck to the graveyard and
exile.
Add keybinds to move single or multiple cards from top of deck to exile
or graveyard.
Add new keybinds to settings menu.
Move settings menu items around for a better fit.
Rename a few of the items in the settings menu.
Add default keybinds: ctrl alt d/e for single/multiple cards from top of
deck to the graveyard. No defaults are set for moving to exile.

* fix shortcut menu

* fix missing tag

* rename mismatched functions

* fixed your typos

* refactor shortcutsettings

correct a lot of typos
optimize a lot of functions
this could merit a pr on its own

* set mill keybinds

* refactor add related card actions

I found a function that was completely unintelligible so I made it
remotely legible and removed the duplication.

* shorten line by 17 characters

replace a lot of function calls with just a single reference

* add brackets

add brackets to all single line if statements etc.
readability improvements
2018-11-23 22:21:20 -05:00
ebbit1q
843b9df939 fix a bug from #3412 (#3454)
check if the card returned any info at all
2018-11-23 22:19:06 -05:00
ebbit1q
c7b8f3e923 Corrections to 3438 (#3452)
* correct previous misstake in #3438

wrong, this fixes that.

* add checking for second argument to --package

nice to have

* split find result into path and file
2018-11-22 17:32:18 -05:00
ebbit1q
964bb0974c add more clang-format focus to CONTRIBUTING.md (#3442)
* add more clang-format focus to CONTRIBUTING.md

Add more clang-format instructions and instructions on clangify.sh.
Move clang-format instructions to the section Formatting and make other format topics a subheader of it to articulate focus on it.
Add section about our ci formatting for people that look at this file after their test failed.
fixes #3065
also fixes #3340

* grammar

* grammar
2018-11-21 23:00:35 +01:00
ebbit1q
3f40a51cdb move package files to unique name (#3438) 2018-11-21 22:59:46 +01:00
tooomm
d9b11858fb exclude mac debug on tagged release (#3443)
leftover from #3433
2018-11-21 22:57:16 +01:00
ebbit1q
ec61d1f012 travis ci format check hotfix (#3449)
* set error message to be conditional

#3443 fails on the git merge base for "some reason" but at least this error message should be clearer.

* fix issues created earlier in #3433

split version from actual diff
remove --color-diff argument as apparently it isn't supported
2018-11-21 21:18:01 +01:00
Zach H
af2bce7141 add token creations from graveyard/exile (#3445) 2018-11-21 03:53:35 -05:00
ebbit1q
6b6c6c71ca add ccache to docker compilation (#3446)
* add ccache to docker image

* test commit please ignore
2018-11-20 14:55:20 +01:00
ebbit1q
57f15a9e98 fix building packages on travis-docker (#3441)
* add docker compilation to travis

add new matrix entry in .travis.yml for compiling on 18.04
add Dockerfile in .ci to build ubuntu 18.04 inside docker
remove release entry for uvuntu 16.04 to not conflict
refactor .travis.yml
refactor travis-comile.sh
merge travis-dependencies.sh into the travis.yml
remove travis-dependencies.sh

* enable debugging on travis-compile.sh

* set ubuntu16 buildtype to "Debug"

set buildtype Debug for as requirement for "test"
add --debug and --release flags to travis-compile.sh

* make output prettier

edit the format warning message and clangify.sh output

* fix clangify.sh

fix --cf-version flag
fix directory argument parsing
add directory parsing details to --help
add examples to --help

* test making packages

move dockerfile for bionic to make room for possibly other files
add missing file dependency
set macos brew to use protobuf --without-python@2

* remove test

* rm old Dockerfile
2018-11-16 18:32:00 +01:00
ebbit1q
72ed98e404 add docker compilation to travis (#3433)
* add docker compilation to travis

add new matrix entry in .travis.yml for compiling on 18.04
add Dockerfile in .ci to build ubuntu 18.04 inside docker
remove release entry for uvuntu 16.04 to not conflict
refactor .travis.yml
refactor travis-comile.sh
merge travis-dependencies.sh into the travis.yml
remove travis-dependencies.sh

* enable debugging on travis-compile.sh

* set ubuntu16 buildtype to "Debug"

set buildtype Debug for as requirement for "test"
add --debug and --release flags to travis-compile.sh

* make output prettier

edit the format warning message and clangify.sh output

* fix clangify.sh

fix --cf-version flag
fix directory argument parsing
add directory parsing details to --help
add examples to --help
2018-11-16 15:44:22 +01:00
ebbit1q
f70699d3de Improve clangify.sh (#3435)
* Improve clangify.sh

Separated from #3433 merge this branch first!

* fix error codes on -n and -t

fix output on -n
format -h message

* separate color diff from diff
2018-11-13 09:21:08 +01:00
ctrlaltca
638ee1af4a This should fix appveyor compilation (#3434) 2018-11-12 18:50:38 +01:00
ebbit1q
8028bad7b1 set common protobuf files to compile with other tags in debug (#3432)
* set common protobuf files to compile with other tags in debug

force the same flags as release on debug builds
fixes #3431

* check for version first

* use Protobuf_VERSION instead of calling protoc --version

* lower verion requirement

* set tags to disable certain warnings instead of removing all
2018-11-09 11:05:11 +01:00
ebbit1q
e1e9caf0ef Load plain improvements (#3422)
* improve loading from plain text

Fixes the loadFromStream_Plain function that is used to load plain text
decklists.
The rewritten function uses more regexes and is a bit cleaner.
This fixes multiple bugs with loading the various sources of decklists.
Note that the new function still has a few issues that are shared with
the original version like creating duplicate cards.

* clang format comments

apparently clang-format even complains about the spacing in your
comments

* refactor loading_from_clipboard tests

Remove all heap allocation and use references.
Use std::pair and std::string so gtest will show the cardnames in error messages.
(note that using QPair or QString does not work with gtest)
Improve the last two testcases to include weird names; and name and
comments testing.
Remove empty header file.

* fix compatibility with more formats

skip "sideboard" line
include everything in mainboard when there are multiple empty lines
add removal of the mwdeck cardversion selector in round braces
add replacal of lowercase ae combination that should never occur
Set cardname to lowercase as apparently our checks are hardcoded to only
accept lowercase.

* remove bugged test

The current load from plain is simply broken, removed checking the
comments for correct contents.

* rework load_from_clipboard tests again

rework the test to have less code duplication
add more tests and more special cases
note that text is still all lowercase

* improve loading from plain text

Fixes the loadFromStream_Plain function that is used to load plain text
decklists.
The rewritten function uses more regexes and is a bit cleaner.
This fixes multiple bugs with loading the various sources of decklists.
Note that the new function still has a few issues that are shared with
the original version like creating duplicate cards.

* clang format comments

apparently clang-format even complains about the spacing in your
comments

* refactor loading_from_clipboard tests

Remove all heap allocation and use references.
Use std::pair and std::string so gtest will show the cardnames in error messages.
(note that using QPair or QString does not work with gtest)
Improve the last two testcases to include weird names; and name and
comments testing.
Remove empty header file.

* fix compatibility with more formats

skip "sideboard" line
include everything in mainboard when there are multiple empty lines
add removal of the mwdeck cardversion selector in round braces
add replacal of lowercase ae combination that should never occur
Set cardname to lowercase as apparently our checks are hardcoded to only
accept lowercase.

* remove bugged test

The current load from plain is simply broken, removed checking the
comments for correct contents.

* rework load_from_clipboard tests again

rework the test to have less code duplication
add more tests and more special cases
note that text is still all lowercase

* remove forcing of lowercase cardnames

Cardnames in DeckList::loadFromStream_Plain will no longer be forced
lowercase if they aren't found in the database.
Empty lines in the comments of plaintext decklists will not be skipped.
The loading_from_clipboard_test gets its functions declared in a
separate header "clipboard_testing.h".
Add more edgecase tests.
Refactor code.

* add old QHash version support

QT 5.5 does not support using initializer lists for QHash.
Implement a preprocessor version check for conditionally using inserts
instead of a const with initializer list.

* add old QHash version support

QT 5.5 does not support using initializer lists for QHash.
Implement a preprocessor version check for conditionally using [] access
instead of a const with initializer list.

* add qHash on QRegularExpression below QT 5.6

Apparently QRegularExpression can't be hashed in lower QT versions,
so we add our own hash function, and everyone lived happily ever after,
and none the wiser.

* add header guards to clipboard_testing.h
2018-11-07 06:05:25 -05:00
tooomm
8b7a287b44 clarify min req (#3426) 2018-11-07 08:32:20 +01:00
tooomm
0cd671c022 Improve hints for manage sets dialog (#3419) 2018-10-31 21:14:47 -04:00
ebbit1q
051fcff284 add more precise rules to CONTRIBUTING.md (#3423)
Add extra rules that clang-format enforces, like the order of includes and the way single line comments should be formatted.
Correct some grammar ( what is up with the translation section ordering steps out of order?? ).
This is a web edit.
2018-10-31 21:14:05 -04:00
ebbit1q
4e3d499162 improve translating section of CONTRIBUTING.md (#3424)
Remove the weird out of order numbering and replace it with just chapters for specific users.
Add a bit of explanation to adding translations as a developer.

This is just a recommendation for an improvement, jumplist could be added and/or #3423 merged with this. (it fixes the typos)
2018-10-30 17:45:04 -04:00
tooomm
7e6c4d8a6c fix appveyor dependencies (#3420)
ty @ctrlaltca
2018-10-28 13:11:51 -04:00
ebbit1q
986e405ca7 add new brace guidelines and clang-format info (#3414)
Add new brace guidelines, correct code sample.
Add detail to indentation guidelines.
Add basic clang-format information and a link to the documentation on llvm.

closes #3413 
A quick edit to the contributing guide from the web ui, hope it comes out right.
2018-10-25 09:54:17 -04:00
ebbit1q
75203cf385 add reset power and toughness option #3402 (#3412)
* add reset power and toughness function on cards

Add actResetPT to set the power and toughness in the same way as
actSetPT but instead of prompting the user it will fetch the original
pt from the card info for each card.
Add the new command to the card rmb list, keybinds and settings.

* changed style to .clang-format

Please change the contributing guidelines to use this style instead.
2018-10-20 23:33:35 -04:00
Dane Johnson
bc2cb59c50 Fix blank line between comments issue (#3407)
* Added failing test to demonstrate issue with dec loading

* Prevents empty lines between comments from being interpreted as the start of the sideboard
2018-10-08 11:26:08 -04:00
Henry Lancelle
cf9fdcd09e Translate curly apostrophe to ASCII apostrophe (#3395) (#3401)
* Translate curly apostrophe to ASCII apostrophe (#3395)

Treats the curly apostrophe as a straight apostrophe when searching in
the deck editor search bar.

* Moved logic for handeling translation to CardDatabaseDisplayModel.

This implementation was done with strings instead of characters because
the curly apostrophes and quotes are considered multi-characters.
Thus, the method of iterating through the string and replacing
the characters with the proper translations was difficult to cleanly
implement.

* clang-tidy modifications

* Implemented faster algorithm for string translation.

Optimized the algorithm for string translation, before it would compute
in O(N*M) time where N is the size of the string and M is the size of
the translation table.  Now it will compute in O(N) time where N is the
length of the string.

* Renaming variables and methods.

* Fixed character literal type, was unicode, is now wide.
2018-10-03 09:15:02 +02:00
Lee Tran
eb4b1e74f1 Disable saving of decks when the deck is empty (#3384)
* Disable saving of decks when the deck is empty

* Replace tabs with spaces to conform with coding conventions

* Remove whitespace at end of line to satisfy the CI robot overlords

* Improve logic to check if deck is empty, fix functionality when a deck is loaded

* Fix code style issues

* Disable more menus when the deck is empty

* Streamline code for disabling save menus when the deck is empty

* Fix save-disabling when loading a deck from the clipboard

* Enable saving deck directly after loading deck
2018-09-21 10:46:31 -04:00
Lee Tran
70005a6f1d Enable the creation and using of shortcuts to move cards from the top of the library to play face down. (#3388) 2018-09-07 09:14:34 +02:00
ctrlaltca
1415a4dafa Fix servatrice linking under FreeBSD - fix #3376 (#3377)
Fix servatrice linking under FreeBSD - fix #3376
2018-09-06 12:20:20 +02:00
tooomm
8b567427c2 update proto links (#3380)
repo moved, see https://github.com/protocolbuffers/protobuf/issues/4796
2018-09-01 13:27:41 -04:00
tooomm
3605a2ca0e bump min qt requirement (#3375) 2018-08-30 02:08:48 -04:00
Alessandro Marzialetti
c58abadff1 fix: cockatrice quits properly when the window is closed (#3329) 2018-08-27 15:01:53 +02:00
tooomm
135c02ea41 travis: more cleanup (#3336)
* add links to build image update history

* remove cmake from apt

* remove bc from apt

* remove clang-format from apt

* test clang-format

* Revert "test clang-format"

This reverts commit b2f12da427.

* remove protobuf from apt

* Revert "remove protobuf from apt"

This reverts commit 9162c8800c.

* remove qt from apt

* test with versions which differ from what xenial provides

* Revert "test with versions which differ from what xenial provides"

This reverts commit 6192e58169.

* Revert "remove qt from apt"

This reverts commit 0d9aff1c4c.

* conditions v1 are the default now

https://blog.travis-ci.com/2018-07-18-build-stages-officially-released

* add new job names

https://docs.travis-ci.com/user/customizing-the-build/?utm_source=blog&utm_medium=web&utm_campaign=build_stages_ga#Naming-Jobs-within-Matrices

* disable mail

* clang-format version

* remove clang source

* cmake version

* macOS: remove clang-format

formatting only checked on linux build

* add compiler info

* cmake version2

* remove fast_finish

only useful if allowed failures are configured in the matrix:
https://docs.travis-ci.com/user/customizing-the-build/#fast-finishing
2018-08-27 10:50:55 +02:00
Andrew Zwicky
ed01752cb4 [WIP] Card image loading: Fallback on 404 (#3367)
* 2479: Running clang-format

Reformatting files to be in line with style guidelines.

* 2479: Updates to remove set/url indices

This change removes set and Url indices in favor
of check for empty lists and removing items from them
instead.

* 2479: TransformUrl will now error on missing fields

If transformUrl is called with a template, and the card/set
is missing something required by that template, it will now
return an empty string, instead of the template with an empty
string substituted in.

* 2479: clang-format updates

* 2479: Fixing omission of ! from two properties

* 2479: Adding prefix on debug messages

Adding PictureLoader: to the front of each debug message
from this file, so that it can be more easily filtered out
by grep in the log of a running application.

* 2479: Remove outdated comment

* 2479: Remove unused method from intermediate work

* 2479: Updating QDebug messages to be more consistent

* 2479: clang-format updates

* 2479: Remove repeated code, replace with call to nextUrl

This removes some redundant code that is better replaced with a call
to nextUrl, in case the code needed to populate the nextUrl changes
significantly.

* 2479: Adding more detailed comments

* 2479: Refactor transformUrl

Refactor transformUrl to do everything in a single loop instead
of two almost identical loops.  set information is populated if
present, but is added with empty strings if absent.
2018-08-22 09:52:38 +02:00
Zach H
e341337ce0 Revert "[WIP] Fallback on 404" (#3364) 2018-08-11 09:06:18 -04:00
Zach H
e09ea1e683 Merge pull request #3363 from andrewzwicky/fallback_on_404 2018-08-11 09:05:21 -04:00
Andrew Zwicky
cbd430555f 2479: Working Url traversal
Url checking is now working as expected.  In set order,
starting with custom sets, then going in priority
order by url template order, Urls will checked, and the
first successful one will be used.
2018-08-09 23:50:01 -05:00
Andrew Zwicky
8239539946 2479:
Initial work on downloading cards through fallback URLs.

This change will add in the ability to proceed to the next URL
should the first one fail.  First trial shows that it's working,
but needs more refinement.
2018-08-08 22:42:22 -05:00
Andrew Zwicky
e467698d72 2497: Forgot to check in .h file 2018-08-05 17:43:28 -05:00
Andrew Zwicky
846b426a7c 2497: Start to implement fallback on card image urls
Return a list instead of a single url.  This is the start
of getting many possible urls instead of one.  Functionally
identical except that the primary url will be attempted for
cards without a muid.
2018-08-05 16:21:53 -05:00
tooomm
f1eab4e26a remove unused beta file endings (#3338) 2018-08-02 21:31:32 +02:00
David Szabo
283ce23111 Manage sets window: "Enable all/selected" button toggling never disabled (#3337)
## Related Ticket(s)
- Fixes #3314 

## Short roundup of the initial problem
When the view was sorted in the manage sets window, the "Enable/Disable All" buttons never toggled to "Enable/Disable selected" buttons, even when more sets were selected.

## What will change with this Pull Request?
- Selected sets can be enabled/disabled in sorted view as well
2018-07-25 14:39:42 +02:00
tooomm
451e1874a7 UI dialog tweaks: filter + create game(s) (#3351)
* vbox --> grid layout
2018-07-25 08:21:29 +02:00
tooomm
69c103ede3 missing features dlg: better update hint (#3352)
## Short roundup of the initial problem
People missed the hint on how to resolve missing features on their own, because update hint was hidden behind the `Show details` label.

## What will change with this Pull Request?
- Update hint is more prominently placed and not hidden behind a label
- It's translatable now
- Wording update to reflect UI change

## Screenshots
<!-- simply drag & drop image files directly into this description! -->
- before
![missing_features](https://user-images.githubusercontent.com/9874850/43153756-74cfd9f0-8f72-11e8-9e0f-fbf47b13f324.png)
- after
![missing_features_new](https://user-images.githubusercontent.com/9874850/43153761-78bec4e0-8f72-11e8-9853-ccc1ecb7f558.png)
2018-07-24 21:05:42 +02:00
tooomm
ac0f92bac6 bump to 2.6.1 (#3342) 2018-07-21 10:56:39 -04:00
Zach H
aa308717de translation pulls (#3335) 2018-07-17 20:19:40 -04:00
tooomm
2d0d29fb5c appveyor: version updates + tweaks (#3334)
* version updates

- qt to 5.11.x
- openssl to 1.0.2o
- protobuf to 3.6

* undo protobuf change

* reapply with proper semver

* only qt latest

* combined env, protobuf 3.6

* slim build matrix config down

* fix env

* test

* fix env -eq

* test if script changes work

* /2

* enable cache again

* fix

* final
2018-07-17 20:12:39 -04:00
tooomm
cba1ca8d5b remove Qt guards (#3328)
* remove version guards

* clangify

* [skip ci] README wording

* add cmake requirement to readme

* remove return

* remove min req from README
2018-07-17 20:08:42 -04:00
tooomm
c12c3c071f NSIS: Show hint when user installs 32bit Cockatrice on 64bit Windows (#3331)
* hint for 32bit

* final wording
2018-07-17 07:40:45 +02:00
tooomm
d37d73017f nsis: add sleep timer to ensure unlocking of vc_redist (#3325)
* add 3s sleep + log hint
2018-07-14 15:49:41 +02:00
tooomm
a766aa7d8a appveyor: reduce version string to basic info (#3324)
## Short roundup of the initial problem
It was mostly out of date because we have to manually update it with our current version number.
The use of that is suspect anyway, since it only displays in the appveyor build overview.
It also had a redundant info about the branch.

## What will change with this Pull Request?
- remove hard coded version number
- remove branch
- cleanup build trigger from [#3300](https://github.com/Cockatrice/Cockatrice/pull/3300/files#diff-11c909939117928998b102a1fff7d363)
- more readable style

## Screenshots
I did some tests, so don't be confused about the different styles displayed in the history:
<!-- simply drag & drop image files directly into this description! -->
![version](https://user-images.githubusercontent.com/9874850/42664150-876175ac-8639-11e8-9df5-3fdd775440ed.png)
2018-07-13 17:29:16 +02:00
ctrlaltca
b61c07a205 Check for both 32 and 64bit cockatrice when uninstalling (#3323) 2018-07-12 23:58:56 +02:00
ctrlaltca
c01aad6767 Travis: minor changes (#3321)
Use the xenial version of llvm's toolchain for clang-format
Add qt5.5's websocket library for servatrice
2018-07-11 17:43:33 +02:00
tooomm
d0d662f73a switch to xenial (#3320) 2018-07-11 14:52:19 +02:00
Zach H
3ae363cf4b force 2.6.1 (#3316) 2018-07-02 21:49:24 -04:00
tooomm
4796110afb updates (#3311) 2018-06-29 16:06:55 -04:00
ctrlaltca
dc727cb620 NSIS: misc fixes [wip] (#3300)
NSIS: misc fixes
2018-06-25 18:34:58 +02:00
David Szabo
87eb132af1 Tips close with the main window (#3305)
* tips close with main window

* null verification added
2018-06-24 19:37:30 -04:00
ctrlaltca
2354a6f89d Fix cards loading bug (#3307) 2018-06-24 17:49:26 -04:00
tooomm
1618e89c41 travis: remove unneeded debug builds on tags for faster release deployment (#3266)
* add hint

* enable condition for debug

* enable new conditions
2018-06-21 19:40:12 -04:00
ctrlaltca
e223f07462 fix #3235 (#3302) 2018-06-21 18:56:53 -04:00
ctrlaltca
f70e87c5a0 Fix #3285 (#3299) 2018-06-19 22:55:01 +02:00
ctrlaltca
0b3e86e307 Fix "reinstall" button in updater, fix #3293 (#3297) 2018-06-19 19:57:44 +02:00
ctrlaltca
a5ea4f7da2 Add ability to edit chat macros, Fix #3296 (#3298) 2018-06-19 19:15:13 +02:00
tooomm
4e75a74bfd readme: fix linebreaks (#3292)
## Short roundup of the initial problem
Everything was mixed in one single line.

## What will change with this Pull Request?
- introduce line brakes to keep the wanted look

## Screenshots
<!-- simply drag & drop image files directly into this description! -->
before: https://github.com/Cockatrice/Cockatrice/tree/2018-06-17-Release-2.6.0#run
after: https://github.com/Cockatrice/Cockatrice/tree/tooomm-patch-2#run

---

Should the `webatrice` webclient be listed there as well?
2018-06-18 07:58:04 -04:00
Zach H
c7072cd543 translations push (#3291) 2018-06-17 18:23:05 -04:00
Zach H
5e0bfc3193 translations (#3290) 2018-06-17 18:13:02 -04:00
tooomm
b316a5d541 new icons (#3289) 2018-06-17 18:09:58 -04:00
Zach H
e147bd6cea add feature list requirement (#3287)
* add feature list requirement

* version update

* version bump
2018-06-17 18:06:12 -04:00
David Szabo
d36f86c523 Duplicate cards & empty setlist (#3283)
* Card duplicates handled

* clangify

* kinda works, some cards are still duplicated

* separate card entries grouped together

* clangify
2018-06-16 22:42:22 -04:00
David Szabo
81803e2612 Search in "Manage sets" window (#3229)
* search field added; sortfilterproxy displayed in treeview

* searching works properly

* moving with filter on works; view isnt't updated yet

* clangify & view updating figured out

* moving disabled when sorting is active

* drag&drop disabled when view sorted

* clangified

* foreach replaced

* button rename & SORT_RESET defined

* changed variable names

* 'x' button added & searchlabel text modified

* 'enabled' column won't grow anymore

* column resize improvement

* button hint & restore original order added

* moving with filter on works; view isnt't updated yet

* sort disable build in column headers (3 clicks)

* codacy fix

* typo + wording

* background color for warning

* buttons moved down a bit

* clicking "default order" button will hide the warning text
2018-06-10 11:00:42 -04: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
ctrlaltca
1276c8dd46 Add -DWARNING_AS_ERROR=1 option to cmake script (#3275) 2018-06-06 08:43:04 +02:00
ctrlaltca
89ab7f1f67 Fix #3252 (#3269) 2018-06-02 02:41:10 -04:00
tooomm
664d717e17 skip branches with open pull requests (#3265)
See https://www.appveyor.com/docs/appveyor-yml/
2018-05-28 19:29:19 -04:00
tooomm
494dfc2f4b actCancel remove (#3261) 2018-05-25 21:59:52 -04:00
tooomm
3a05d063af connect dialog: button reworks (#3243) 2018-05-25 21:59:42 -04:00
ctrlaltca
f97959febc fix #3257 (#3258) 2018-05-24 15:46:02 +02:00
David Szabo
b3df71ae41 0 values in power/toughness filters won't match non-zero values anymore (#3250)
## Related Ticket(s)
- Fixes #3212 

## What will change with this Pull Request?
- `0` input on power/toughness filters will only return `0` values
- `relationCheck` method will only get called after simple string comparison failed
- due to their similar structure `acceptPower` and `acceptToughness` methods has been merged
2018-05-24 00:18:53 +02:00
tooomm
ec4a99e47b remove empty languages (#3253)
## What will change with this Pull Request?
- cleanup of empty and unused languages files (catalan, lithuanian, hebrew, ukrainian)
- reflect language removing on transifex
2018-05-23 10:32:41 +02:00
skwerlman
ad66a48b8e ensure column ordering is consistent (#3249) 2018-05-18 18:07:39 -04:00
David Szabo
7a2558d834 vs version number increased for appveyor build (#3251) 2018-05-18 18:06:33 -04:00
Bers
3b3f5a639c Hide non-existent card values in infowidget and cardframe (#3239) 2018-05-15 01:53:53 -04:00
tooomm
9acf606e93 settings dialog: fewer space (#3245) 2018-05-15 01:53:01 -04:00
ctrlaltca
4cdd17945d Servatrice: make listening host configurable; fix #3241 (#3242)
* fix #3241

* clangify
2018-05-12 23:54:03 +02:00
ctrlaltca
c06fc562a1 Cmake scripts refactoring; fix #3225 (#3230)
* fix #3225

* Servatrice: use websockets as an optional component (for qt < 5.3)

* Attempt++
2018-05-12 23:28:22 +02:00
tooomm
73fb9ee03e update file rules (#3232) 2018-05-10 22:07:22 +02:00
tooomm
4e10ce7473 smaller clear pic button (#3220) 2018-05-04 03:48:53 -04:00
ctrlaltca
a7f4aace9c Extract the xml parser from carddatabase (#3223) 2018-05-04 03:46:08 -04:00
David Szabo
9727699e26 braces are only left for split cards (#3217)
* braces are only left for split cards

* condition for braces modified
2018-05-02 21:20:58 -04:00
Zach H
2520d07ef2 log moderation stats in the uptime table (#3215) 2018-05-02 17:31:54 -04:00
tooomm
661e00f563 log cleanup (#3207) 2018-05-02 16:07:43 -04:00
ctrlaltca
2780270911 macOS: fix qt plugin installation (#3216)
* Osx: fix qt plugin installation

* Add make install step to travis debug build

* only install under osx

* Add "styles" plugins (for native look'n'feel)

* Osx: upgrade qt from 5.5 to current (5.10.1)

* Fix osx on travis

The qt homebrew formula now installs three qt* symlinks (qt, qt5, qt5@5.x) so we can't use/don't need bash globbing anymore
2018-05-02 15:57:35 -04:00
tooomm
8a5baa4637 connect dialog tweaks (#3211) 2018-04-23 14:30:46 -04:00
tooomm
f5eb05b682 bump version number (#3205)
* bump version number

* bump
2018-04-18 19:50:26 -04:00
tooomm
f309ddf28a README updates (#3203) 2018-04-16 20:08:26 -04:00
David Szabo
67a2a8cf08 datetime display fixed for OSs with non-English localization (#3204) 2018-04-16 20:07:30 -04:00
Zach H
1fbdea0f35 translation updates (#3200) 2018-04-16 02:42:58 -04:00
David Szabo
cc2a0fa0d0 server site added to connect window (#3190) 2018-04-10 19:05:13 -04:00
tooomm
034e79dd36 typo (#3187) 2018-04-10 12:51:57 -04:00
tooomm
5c03f18c72 add hint about how to contact server admins (#3186) 2018-04-10 12:40:24 -04:00
Zach H
61e509585f Server List from JSON (#3165) 2018-04-09 22:38:21 -04:00
tooomm
0c10b66a2d prettify spoiler settings (#3180) 2018-04-09 17:15:37 -04:00
tooomm
7758145e71 comment explanation out (#3181) 2018-04-09 16:47:44 -04:00
ctrlaltca
37ab7b8fb1 Add a note about bug #3135 (#3184) 2018-04-09 16:47:08 -04:00
tooomm
42d15c39a0 change vcredist install option from "/quiet" to "/passive" (#3175) 2018-04-07 12:32:20 -04:00
tooomm
a0d84114de fix space (#3172) 2018-04-06 15:01:04 -04:00
tooomm
706054ea96 readme: link update (#3173) 2018-04-06 15:00:46 -04:00
tooomm
7d5a33b12c bump version number (#3174) 2018-04-06 15:00:32 -04:00
tooomm
a056a882c3 flip rename (client side) (#3149) 2018-04-05 22:42:54 -04:00
tooomm
f89f6438c9 Update ISSUE_TEMPLATE.md (#3171) 2018-04-05 22:42:36 -04:00
tooomm
e25b7e9eb8 button label wording (#3168) 2018-04-04 04:45:28 -04:00
Zach H
ca2e05952e add rooster ranges, remove woogerworks (#3163) 2018-04-03 18:41:10 -04:00
David Szabo
2fcb02cadd untranslated string comparison fixed (#3164) 2018-04-02 23:04:52 -04:00
David Szabo
e1394bd851 Feature/3139 new features for tips (#3152)
* "Tip of the Day" option added to Help menu

* Tip of the Day setting moved

* If no new tips are availabe, don't show tip of the day again

* list storing try #1

* first unseen tip shown first

* lastShownTip removed

* fixed next/previous buttons

* spaces > tab

* "Show this window on startup" is not checked by default
2018-04-01 04:52:26 -04:00
ctrlaltca
6374d157fc Fix Appveyor builds (#3151)
* fix appveyor builds
2018-03-24 16:05:08 +01:00
tooomm
5df547ee53 update template (#3150) 2018-03-23 23:37:11 -04:00
David Szabo
2a9d76f090 Colors on split cards sorted in WUBRG order (#3128) 2018-03-07 20:26:47 -05:00
Zach H
5859fa2f20 translation updates (#3124) 2018-03-02 16:50:10 -05:00
David Szabo
312caae062 Tip of the Day (#3118)
* Basic tip of the day with sample widget added

* "Show tips on startup" option added to settings

* tip cycling implemented

* Structure of the tipOfTheDay class and resource created

* tip getter function modified

* Resources added, feature works properly

* clangified

* accidental modification rolled back

* zach cleanup

* tips to spaces; cmake list combined

* cleanup img

* fix copy

* remove TOTD as QObject so we can copy construct it

* prevent mem leaks in dlg

* changed order of 'next' and 'previous' buttons

* Date and tip numbers added; content wraps around

* useless sizepolicy removed

* link support added & clangified

* Initial tips & memory management updates
2018-03-02 03:11:18 -05:00
David Szabo
281e52eaa9 power and toughness values displayed after card flip (#3120) 2018-03-01 12:28:30 -05:00
Zach H
66958b5975 clangify only the different files (#3122) 2018-02-28 13:20:53 -05:00
David Szabo
941a06e107 Custom image file path corrected (#3119) 2018-02-25 23:22:41 -05:00
David Szabo
7cfbf114b7 "Show related card" option added to ingame context menu (#3115) 2018-02-19 01:12:25 -05:00
David Szabo
2409eae940 left, right, and S shortcuts modified to use shift (#3116) 2018-02-19 00:38:51 -05:00
Vafthrudnir
3d2c7b6670 Right-click menu added for card database view (#3113) 2018-02-15 03:25:44 -05:00
Vafthrudnir
65ef66cfa7 Braces left in for split mana costs in xml (#3108) 2018-02-13 22:37:24 -05:00
Zach H
019295931a Merge pull request #3109 from Vafthrudnir/hotfix/oracle_button_text_correction 2018-02-13 20:50:30 -05:00
Vafthrudnir
c8a10a9997 Mnemonic created 2018-02-14 02:40:46 +01:00
Vafthrudnir
4e8a09517c Button text changed to "Save" from "Next" 2018-02-14 02:36:54 +01:00
Vafthrudnir
f302154df7 Hotfix/2950 delete filters with keyboard (#3097)
* Shortcut setting checks for invalid keys

* Different message shown for invalid keys and used keys; warning message is displayed on start if conflic is detected

* Only shortcuts related to deck-builder are checked
2018-02-13 02:51:14 -05:00
Vafthrudnir
11ad677fe8 Sending card name to chat on shift+click (#3106) 2018-02-13 02:50:37 -05:00
Vafthrudnir
8084ab605f Tablerow fixed for non-mana generating artifacts (#3104) 2018-02-12 18:04:11 -05:00
Vafthrudnir
af5a04abf1 "Comment" field made resizable in deck builder window (#3105)
* solution with splitter

* Made prettier

* Useless parameter removed

* clangified

* c++11 cleanup
2018-02-11 13:49:58 -05:00
Vafthrudnir
3426a6b201 'Rarity' property added to split cards in xml (#3102) 2018-02-09 23:45:59 +01:00
Vafthrudnir
51eeac0541 Mana cost filtering for split cards (#3098) 2018-02-08 14:15:42 -05:00
Nick Beeuwsaert
2206328406 Add custom QStyle class to tab bar to fix render issue on macOS. (#3095)
* Add custom QStyle class to tab bar to fix render issue on macOS. fixes #3070

* clangify
2018-02-08 15:39:29 +01:00
Vafthrudnir
501e82f712 Split card handling added to cmc filter (#3090) 2018-02-07 11:37:10 -05:00
tooomm
ab3989aeba Consistent use of 'beta' tag across the project (#3089) 2018-02-07 11:33:14 -05:00
Vafthrudnir
a0d6a342d3 Loyalty filter added (#3087) 2018-02-07 11:33:01 -05:00
Zach H
35159ef61a Clang script (#3085) 2018-02-06 08:45:13 -05:00
Zach H
fcfb2b12b7 remove extra copies (#3081) 2018-02-06 05:06:51 -05:00
Vafthrudnir
4cbec71882 Relation checks added to relevant fields in card filter (#3080)
* comments and <=, >=, == support added
2018-02-06 05:05:30 -05:00
Zach H
b58aa459a4 change file names to end with win32/64 instead of x86/x86_64 (#3079) 2018-02-05 23:39:55 +01:00
Zach H
8a8b580501 translations (#3078) 2018-02-05 12:22:49 -05:00
Zach H
c9525af624 this is backwards (#3077) 2018-02-05 11:39:10 -05:00
tooomm
aba47719b2 properly display logical connectors (#3072)
they should not get transalted as well
2018-02-04 13:47:12 -05:00
Vafthrudnir
b6b4d7e4a0 Automatic focus change after filter selection (#3074) 2018-02-04 13:46:35 -05:00
Vafthrudnir
63d0f5af43 Start in maximized window on first start (#3075) 2018-02-04 13:07:37 -05:00
ctrlaltca
517420cccb Replace CardInfo* and Carset* with smart pointers (#3053)
* Replace CardInfo* and Carset* with smart pointers

* fixes to help memory & c++11 stuff
2018-02-02 12:52:47 -05:00
tooomm
3e418ba3c6 travis: temporary downgrade mac builds to qt5.5 (#3066)
`qt@5.7` is no longer available: https://github.com/Homebrew/homebrew-core/pull/23165#issuecomment-362270835
2018-02-01 19:09:46 +01:00
dino572
c1bd50f186 Fix mwDeck edition tag parsing on deck load (#3057)
* Update decklist.cpp

Changed parsing code, line 565 and 567
2018-01-31 23:29:18 +01:00
tooomm
d13cf65a10 contributing: add toc + little tweaks (#3030) 2018-01-27 13:45:27 -05:00
ctrlaltca
994a643d9c Travis: enable ccache usage under macOS; halves compilation time (#3052) 2018-01-27 13:43:48 -05:00
ctrlaltca
e127cb74b6 Fixed most issues from codacy (#3050) 2018-01-27 13:31:44 -05:00
Dave
3c3e6ae68a Domain change (#3051)
.es es no mas

Server and database from .es is now active on cockatrice.dr4ft.com
2018-01-27 17:30:40 +01: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
tooomm
8dbdd24c8e fix cmake 3.10 (#3048) 2018-01-25 20:39:10 +01:00
tooomm
04ab3d7f13 fix release run on tags (#3046) 2018-01-23 12:58:56 -05:00
tooomm
03d0a84ef5 "edit sets" --> "manage sets" rename (#3044) 2018-01-22 12:42:10 -05:00
tooomm
14a0c53fc1 travis update (osx + linux) (#3041) 2018-01-21 17:07:25 -05:00
woogerboy21
da7c7c1f83 Update Servatrice MySQL Search Path (#3039)
Removed the older versions of the mysql library install paths and updated to reflect the 5.7 product paths.
2018-01-21 11:05:13 -05:00
Zach H
261d3ac591 better null check (#3036) 2018-01-20 14:54:34 -05:00
ctrlaltca
55029b6b68 Travis: remove sudo (#3037) 2018-01-20 16:50:06 +01:00
Zach H
bc52882ac4 Fix Bad Gameplay (#3034) 2018-01-19 20:34:14 -05:00
Zach H
d1b95aad16 move to slot (#3032) 2018-01-19 19:04:48 -05:00
Zach H
691bf36fbe Disable sideboard button w/o deck (#3025) 2018-01-19 10:50:18 -05:00
Zach H
5a823becf1 Contributing Doc Updates (#3009) 2018-01-19 08:38:37 -05:00
Zach H
feeaba1d62 2.4.1 beta -> 2.5.0 beta (#3024)
Big changes so we will go to 2.5.0 for next release
2018-01-18 19:28:51 -05:00
Zach H
ebec30dd1c Add No annotations export option w/ shortcut (#3013) 2018-01-18 19:25:30 -05:00
Zach H
5757d60b1d Smarter Mana Cost sorting & small cleanup (#3008) 2018-01-18 19:25:10 -05:00
skwerlman
81fcc3c11a remove builds for 1610 and 1704 (#3023)
ubuntu turned off the repo servers :(
2018-01-18 19:24:43 -05:00
Zach H
34bec90193 Fix deck loader with spaces (#3007) 2018-01-18 19:23:13 -05:00
Zach H
dcc632e0d4 Fix a crash (#3011) 2018-01-18 11:53:57 -05:00
Zach H
7a150c558d Trim all inputs (except password) (#3018)
* Trim all inputs (except password)

* missed )
2018-01-17 18:57:13 +01:00
ctrlaltca
3a11aebb21 windows/appveyor compilation updates (#3020) 2018-01-17 18:20:05 +01:00
Zach H
8825e2932a fix linux crash (#3014) 2018-01-13 04:20:12 -05:00
ctrlaltca
cd558a9722 Even out db collation to utfmb4_unicode_ci; fix #2835 ; fix #2218 (#2915) 2018-01-13 04:02:22 -05:00
tooomm
cc822dd8df card filter: add clear button and placeholder text (#3003) 2018-01-11 16:43:08 -05:00
Kyle Grammer
6fc1aaef90 Add comp architecture (#2968) 2018-01-10 22:19:07 -05:00
tooomm
c8122c94ef adjust custom naming, clickable commit hash in brackets (#2981) 2018-01-10 13:38:51 -05:00
tooomm
e6e6932dbb card filter: alphabetical ordering for keywords (#2987) 2018-01-10 13:37:39 -05:00
tooomm
d124e6ac22 deck editor: add placeholder text to search (#3000) 2018-01-10 13:33:37 -05:00
tooomm
7efab80d9b token creation context menu improvements (#2999) 2018-01-10 13:32:29 -05:00
Zach H
d19744236e Automatic Spoiler Season (#2991)
* oracle now can be run in spoiler or normal mode

* tests for travis

* only run on relaunch

* spoilers in client (not oracle now) and tray icon shows when done

* spoiler status will be checked before downloading spoiler file

* only download if they care about spoilers

* reload db on spoiler download

* manual update button, code cleanup, and fix enabling sets when new

* cleanup, nullchecks, and fixes to spoiler

* reload DB even if not in spoiler season; necessary as we have a check elsewhere to prevent the reload if spoiler check happens

* Implement changes from 2991#issuecomment-356169374

* Change implicit nullptrs, alert on file deletion, minor changes

* make reload thread safe and minor changes from 2991#issuecomment-356450302

* Fix locking

* Disable update now button while process running
2018-01-10 13:27:43 -05:00
tooomm
51ec593759 fix space (#2990) 2018-01-02 22:57:23 -05:00
Zach H
87c978937d replace beta semvar correctly (#2980) 2017-12-28 21:30:17 -05:00
tooomm
dfaa85847c add tag (#2979) 2017-12-28 20:02:30 -05:00
tooomm
74dbf75c5b fix var call (#2978) 2017-12-28 19:21:42 -05:00
tooomm
f0f73c8f77 ci: deployment config for beta+stable (#2976) 2017-12-28 18:33:16 -05:00
ctrlaltca
3af2be4539 removed win xp support; update qt to 5.9 for win 32bit (#2975) 2017-12-19 09:09:20 +01:00
tooomm
5b8e0dc8ec add group key (#2967)
as announced here: https://blog.travis-ci.com/2017-12-01-new-update-schedule-for-linux-build-images
2017-12-18 18:17:31 -05:00
Zach H
b75882b6b9 Allow non-db cards to be moved around (#2960) 2017-12-18 14:17:54 -05:00
Zach H
2abfd3b4a9 Update Rarity Filters & Refactoring (#2962) 2017-12-17 19:42:54 -05:00
Zach H
014b9947fe clear search bar if all filters cleared (#2961) 2017-12-17 17:48:57 -05:00
Zach H
ec4e6d53df allow backspace button to remove a filter (#2959) 2017-12-17 17:39:41 -05:00
Zach H
0eae4dbe54 add checkbox option to clear log (#2963) 2017-12-17 17:32:31 -05:00
Zach H
297f1f2555 remove untap option, combine w/ tap (#2964) 2017-12-17 17:31:31 -05:00
tooomm
7e80f4b4ae oracle: fix wording for token download (#2946) 2017-12-15 15:42:30 -05:00
Kyle Grammer
6e24f59826 Fixing split card from UNH with wrong name in database (fix #2947) (#2949) 2017-12-15 15:37:32 -05:00
Kyle Grammer
5e00faed5d Fix for Aftermath and Split Cards when sending to Tappedout; fix #2942 (#2944) 2017-12-10 17:56:49 -05:00
John Robe
6c038a91e4 Deck export (#2938)
* Added “export deck” option to export deck to decklist.org for viewing/printing. Implemented using a new menu item, added shortcut ability, and functionality to parse the deck correctly and add main/sideboard cards to decklist. Per issue #2931
2017-12-05 22:34:19 -05:00
tooomm
4d641eb0e7 version number bump to next patch (#2920) 2017-11-19 20:22:12 -05:00
tooomm
59824cf4dd update finish (#2923) 2017-11-19 20:22:02 -05:00
tooomm
b615b5b33e Translation Updates (#2918) 2017-11-19 15:11:37 -05:00
tooomm
3dc2526f0a update download wording (#2912) 2017-11-04 20:17:18 -04:00
tooomm
6bc39a4f6f yml config documentation (#2899)
* little fix

* add config hints

* doc link
2017-11-04 20:16:41 -04:00
John Hill
422c899cdb Sorting by P/T numerically (#2901) 2017-11-04 13:11:46 -04:00
Gavin Bisesi
e96a250bf1 Fix easy changes link in readme (#2897)
Using these two labels because github tells contributors to look for them.
2017-11-02 15:17:29 +01:00
TaylorShiells
563e96e051 Update Readme.md (Style Guide) / FMRM feedback (#2905)
This change establishes the Google Developer Documentation Style Guide as the official style guide for the ReadMe. This will provide a starting point for editors or writers looking to work on documentation. This edit also does an initial patch on the readme based on that style guide
2017-11-01 13:08:17 -04:00
ctrlaltca
4baaf978f5 Deck editor: force default file extension on file save; fix #2829 (#2910) 2017-10-31 15:34:56 -04:00
ctrlaltca
6b6ba9a8f1 Update translations (#2890)
* Translations

* update and test codacy change
2017-10-09 19:16:23 +02:00
tooomm
fcb0daf80f more ignore for appveyor (#2892)
* add dockerfile and license to ignorelist

* fixed space
2017-10-09 19:15:36 +02:00
tooomm
a3ca459526 exclude translation files from codacy (#2891)
* exclude translation files from codacy

* update appveyor ignore config

add codacy.yml
2017-10-09 16:40:05 +02:00
tooomm
17202e8dba AppVeyor: prevent unnecessary builds (#2888)
* prevent unnecessarybuilds

* readd qt5 string

sadly this is needed as of now:
ff6b0f86ec/cockatrice/src/releasechannel.cpp (L59-L68)

* wrap asterisks

* fixed with validator

https://ci.appveyor.com/tools/validate-yaml

* complete link

* add helpful links

this should not trigger a appveyor build

* add space in readme

this should not trigger a appveyor build

* highlight c++ types

this should not trigger a appveyor build

* remove empty line

this should not trigger a appveyor build

* declutter dockerignore

this should not trigger a appveyor build
2017-10-09 11:19:56 +02:00
ctrlaltca
ff6b0f86ec Appveyor updates (#2885)
* Appveyor updates

Remove unused stuff (mysql, choco)
Use MSVC 2015
Upgrade Qt to 5.9, protobuf to 3.4.1

* stick qith qt 5.6 for winxp 32bit compatibility; zlib test

* Appveyor is using a randmon clone path for pulls, get it from an env variable
2017-10-05 08:38:09 +02:00
Zach H
96b30da492 fix deckstats.net regex (#2886) 2017-10-04 23:36:42 -04:00
tooomm
9cbdc4195e change to https (#2863) 2017-10-04 12:46:43 -04:00
tooomm
ada262b826 betaXYZ to betaX (#2882) 2017-10-04 12:45:28 -04:00
Alessandro Marzialetti
78e299fdfd Fixed life points not showing (#2868) (#2881) 2017-10-04 12:44:36 -04:00
skwerlman
cf5cd21c50 Update .gitlab-ci.yml (#2876)
Remove support for Fedora 22 (been EOL for a while)
Add support for Ubuntu 17.04 and 17.10

Note that debug builds for 17.04 and 17.10 are still affected by issue #2343, and so always fail.
2017-10-03 15:28:47 +02:00
woogerboy21
b684c12964 Correct VS2017 Compile Issue (#2878)
A line in the servatrice CMAKE file was removed in a prior commit causing a compile error in newer versions of visual studio.  This returns the line.
2017-10-03 09:23:33 -04:00
tooomm
df8c38b649 add link to project roadmap (#2872) 2017-10-01 00:23:06 -04:00
tooomm
1424de2c54 remove old TODO file (#2870) 2017-09-29 20:51:41 -04:00
ctrlaltca
7875407795 servatrice: case-insensitve check for email and token challenge; fix #2857 (#2860) 2017-09-28 15:34:35 -04:00
tooomm
ef89104503 add colourless keyword to deck filter (#2858)
extends #2737 for missing term (add colourless)
2017-09-27 14:03:58 +02:00
ctrlaltca
ccee0aa3fd Cmake: remove old unneeded POLICIES (fix Appveyor) (#2859) 2017-09-22 17:47:05 +02:00
John Hill
a6d3229e74 If playing online, don't change your life/mana counters if you click on your opponent's (#2839) 2017-08-19 00:43:18 -06:00
tooomm
93d8ac10ff Fix broken README links after #2826
copying --> license
2017-08-14 08:25:20 -04:00
tooomm
04d84f9d9a repo cleanup (#2826) 2017-08-11 21:42:45 -04:00
tooomm
2557a2183d .travis folder (#2805) 2017-08-06 23:56:31 -04:00
John Hill
e694cbe854 add ability to clone from stack (#2824) 2017-08-06 23:56:17 -04:00
John Hill
3963570838 Mana counter shortcut (#2821) 2017-08-06 21:09:25 -04:00
John Hill
dd05b86bc9 initial way of getting rid of warning (#2817) 2017-08-06 21:04:03 -04:00
tooomm
af3423e67d split up string and argument (#2822) 2017-08-06 20:51:54 -04:00
John Hill
7c8daf68ea Add version label to Oracle Importer (#2818) 2017-08-06 14:03:19 -04:00
John Hill
6b1ea9186a Double click token (#2815) 2017-07-31 22:50:32 -04:00
tooomm
e90c389212 remove mention-bot config file (#2814) 2017-07-31 18:08:25 -04:00
John Hill
556d19ff70 Clone in exile and graveyard (#2813) 2017-07-31 00:34:24 -04:00
Lee Matos
838ab888db clarify docker build happens inside of the repo folder (#2807)
I intuited that this was the case, but being more explicit might help other docker newbies to understand what's happening.
2017-07-15 13:51:02 -04:00
tooomm
1cb3d88e35 flag updates (#2804) 2017-07-14 21:30:27 -04:00
ctrlaltca
1366e5970e Portable mode for windows (#2794)
* Portable mode for windows

* fix start menu in portable mode

* Make gcc an happy puppy

* Clean old installation if we are installing over an old portable mode installation

* Default to Desktop\CockatricePortable

* Settings dialog fixes

* wording
2017-07-08 11:22:29 +02:00
tooomm
1565309146 enable caching for ci (#2799)
* enable cache

* caching on mac

* fix ci caching on mac

* fix

* add mac cache

* added homebrew cache and pretty print yaml (+ structural ordering)

* cleanup

* fix ccache on mac

* testing workaround

https://github.com/travis-ci/travis-ci/issues/7456#issuecomment-296505058

* try xcode7.3 instead of workaround

* cache timout value

more time for cache to upload
2017-07-07 16:17:18 +02:00
Psithief
b05ed0376a Fixes #2712 (#2797)
When checking unknown sets, consider sets with an empty long name, 
set type and release date as 'incomplete'/'partial' sets.
Do not mark partial sets as known, or ask the user to enable them.
Instead, silently enable partial sets.
When a partial set becomes complete, the user is prompted to enable the
set as before. If they choose not to enable, those partial sets are 
disabled, as we can no longer assume they are disabled by default.
2017-07-07 00:45:46 -04:00
Psithief
61893faf3b Slightly more accurate XSD. (#2787)
XML 1.0 does not provide a method that allows elements with minimum
occurances and variable occurances in any order, so we are stuck
with xs:sequence.
2017-06-29 20:52:44 -04:00
Zach H
e8dbdc3c6d Add token creation for opponent board items (#2744) 2017-06-28 23:09:10 -04:00
tritoch
5abfda49be Import spoiler.xml as spoiler.xml and overwrite existing (#2784) 2017-06-28 22:54:09 -04:00
tritoch
bcda502b46 Loyalty now string, xsd fix (#2785)
Card with `X` loyalty was printed, loyalty now string
2017-06-28 21:42:08 -04:00
Psithief
03bb02f75b Improved XSD (#2781) 2017-06-26 14:42:13 -04:00
Psithief
bfcc48f5bf Check for .xlhq (CCGHQ naming scheme) files (#2778) 2017-06-22 22:59:33 -04:00
Psithief
ae15f5df06 Handling of tokens/related cards improved. (#2773) 2017-06-20 18:35:06 -04:00
tooomm
029a4a39ad readme: https link + layout tweak (#2768) 2017-06-13 15:34:50 +02:00
Zach H
9ddb18a35e Make deck list appear if deck loaded (#2745) 2017-06-12 12:25:52 +02:00
woogerboy21
2094910b7a More descriptive reason for "to many requests" when registering (#2760)
* More descriptive reason for "to many requests" when registering

Currently the only way for a user to get a response of "to many registration attempts"  is by the servers configuration to restrict the number of registration attempts but the error message presented to the user is very vague as to why they have been denied.  This PR updates the reasoning.  I'm open for suggestions on any clarity recommendations.

* Added more clarity

Updated error message to include email address information for even greater clarity.
2017-06-12 12:12:36 +02:00
tooomm
b36c349f9b remove unused define (#2757) 2017-06-11 00:42:09 -04:00
Zach H
99e7458f9b make not set to untap normally more distinct (#2746) 2017-06-04 14:02:35 -04:00
Zach H
0a57229886 keep client version persistant (#2750) 2017-06-04 13:59:37 -04:00
Zach H
f3f83882e0 Model col widths off deck editor & disable button if no tokens in deck (#2751) 2017-06-04 13:58:34 -04:00
Zach H
d970b9e50f fix card not showing correctly in games (#2752) 2017-06-04 13:57:47 -04:00
Zach H
b0d8a31a2e remove invalid connect (#2753) 2017-06-04 13:57:21 -04:00
ctrlaltca
03a7a9fafb Webclient: fix some bugs (#2742)
* Handle room join and leave events + case sensitive userlist sort; fix #2307

* Webclient: add autoscroll, but only if already at the bottom; fix #2306
2017-05-31 23:04:59 -04:00
tooomm
4c953acebc exchange dl stat page (#2743) 2017-05-30 08:32:58 +02:00
tritoch
c5ac61c797 Colorless for color filter (#2737)
* Colorless for color filter

Add 'colorless' as an option for color filter in deck editor / card list.

* Remove empty quote check

Empty quote does not work here. Add 'none' as optional string instead.

* Add C to colorless filters
2017-05-30 08:19:11 +02:00
ctrlaltca
f75caa7245 Webclient overhaul (#2735)
Migrate from protobuf.js 5.x to 6.x (remove long.js and bytebuffer.js)
Upgrade jQuery from 1.x to 3.x
Upgrade jQueryUI to 1.12.x
Use minimized version of js libraries
Disable debug messages
Fix default value for Event_RoomSay’s RoomMessageType field
2017-05-29 14:12:36 +02:00
tooomm
87060dc5c7 created_at to published_at (#2723) 2017-05-22 16:00:38 +02:00
backendr
62681f7f8d contect menu fix (#2719) 2017-05-18 17:03:21 -04:00
Zach H
b53cd33eed Smarter Clipboard Pasting/Parsing (#2706) 2017-05-14 14:35:40 -04:00
backendr
405a719412 Better scrolling in reveal zones (#2716) 2017-05-14 19:01:50 +02:00
Zach H
aca6917d42 Merge pull request #2672 from Cockatrice/tooomm-update_msg_rework
update msg rework
2017-05-13 16:06:53 -04:00
tooomm
73e2c3d32f Publish --> Release 2017-05-13 14:49:35 +02:00
tooomm
7f273b547b add missing tr() 2017-05-13 13:24:04 +02:00
backendr
77e0cddbae counter context sensative (#2714) 2017-05-13 11:48:26 +02:00
backendr
d9230d6c6b Message Log Widget changes (#2709)
* Message Log Widget changes

* Gravard now logs as before

* removed redundant QString()
2017-05-13 11:47:43 +02:00
Zach H
f00bcc9179 Merge pull request #2691 from Cockatrice/tooomm-dl_badges
github dl badges in README
2017-05-10 14:23:33 -04:00
skwerlman
b47e262e7f limit gitlab builds to master (#2711) 2017-05-10 08:53:11 +02:00
woogerboy21
1811bad835 Fix room chat history (#2698)
Looks like an addition to the table shifted things.  We probably  should look into some how use the actual column names (if it can be done).  But for now this should fix the server room chat history.
2017-05-09 23:22:48 -04:00
tooomm
41ebf7a9ad space 2017-05-09 12:47:19 +02:00
tooomm
7f01f921f7 added dl count for latest release 2017-05-09 12:46:41 +02:00
Zach H
d347e54526 Merge pull request #2688 from backendr/ignore_first_server_message
Prevent emitting initial server message event
2017-05-08 19:46:17 -04:00
tooomm
256e40a9ee Merge branch 'master' into tooomm-dl_badges 2017-05-08 10:05:24 +02:00
Zach H
5f4490ec4e Merge pull request #2695 from Cockatrice/tooomm-hq_badges
updated badges (gitter+licence)
2017-05-07 18:54:45 -04:00
tooomm
2fb2481211 updated badges 2017-05-07 12:45:53 +02:00
tooomm
d585b9f1d6 http --> https 2017-05-06 21:47:22 +02:00
Zach H
c745f41cb9 Merge pull request #2692 from Cockatrice/tooomm-cmake_2.3.18
cmake - bump version number
2017-05-06 12:54:50 -04:00
tooomm
5b07f6d6d8 bump version number 2017-05-06 18:21:31 +02:00
tooomm
39779be7bb add alltime dl count 2017-05-06 16:03:27 +02:00
tooomm
70f1c97a27 github dl badges 2017-05-06 15:46:11 +02:00
Zach H
a49373eded Merge pull request #2686 from backendr/log_changes
Log Colors
2017-05-05 21:48:02 -04:00
backendr
55dcf4a845 Log refresh 2017-05-06 00:40:41 +02:00
backendr
b140721d50 Add flag for checking inital server message 2017-05-06 00:18:49 +02:00
Zach H
c96f234b6d Merge pull request #2683 from ctrlaltca/fix_2682
Remove unneeded debug
2017-05-05 13:42:02 -04:00
Fabio Bas
a4e78bbfa2 remove debug 2017-05-05 15:23:59 +02:00
Zach H
fd3d62284d Merge pull request #2670 from ctrlaltca/load_tokens
Improved token loading, removed card price code
2017-05-05 00:24:48 -04:00
Zach H
16bc8b764b remove all of pricing 2017-05-04 23:29:43 -04:00
Fabio Bas
36f6907fa3 Improved token loading 2017-05-04 23:28:51 -04:00
tooomm
339945e089 fix custom build + displaying name (#2668)
* fix custom build name

* remove html and argument from tr()
2017-04-30 16:20:29 +02:00
tooomm
faeb3f8daf fix 2017-04-30 15:17:03 +02:00
tooomm
e04010f00b further tweaks and uniform style 2017-04-30 15:06:32 +02:00
tooomm
cbd9d2c4fc better wording (#2674) 2017-04-29 22:15:43 -04:00
tooomm
fdc82708c6 extend updater description in menu (#2673) 2017-04-29 20:13:33 -04:00
tooomm
8f7691b47a next round 2017-04-29 22:55:49 +02:00
tooomm
ca2e3e5eab trial_error 2017-04-29 22:45:25 +02:00
tooomm
da42d9e049 fix 2017-04-29 22:32:07 +02:00
tooomm
f18679bfff fix attempt 2017-04-29 22:06:53 +02:00
tooomm
970b67cdb6 update message rework 2017-04-29 20:57:52 +02:00
ctrlaltca
3c5e38bd14 Hide some icons for spectators; fix #2589 (#2656)
* fix #2589

* Additional fix
2017-04-29 15:06:30 +02:00
ctrlaltca
b20c60e603 fix #2332 (#2650) 2017-04-29 12:21:37 +02:00
Zach H
12c9e4b81a allow placement below top X cards (#2666)
Close #2666
2017-04-27 20:32:24 -04:00
Zach H
7c1a18da5e Add "Random card from graveyard" (#2652) 2017-04-26 18:12:56 -04:00
ctrlaltca
df211748ca Add clear button to deck editor (#2654) 2017-04-26 15:20:35 -04:00
ctrlaltca
ce77d51a8f Fix crash on logger; make log window modalless (#2659) 2017-04-26 15:05:24 -04:00
tooomm
9dd3a04a08 improve provided info in "edit sets" (#2641) 2017-04-25 15:46:37 -04:00
Zach H
62d8f5a039 change cards from sb<->mb with double-click (#2606) 2017-04-25 14:05:25 -04:00
Fabio Bas
2c551bdd35 Revert "fix #2332"
This reverts commit 0fd77346df.
2017-04-25 19:35:07 +02:00
Fabio Bas
0fd77346df fix #2332 2017-04-25 18:58:01 +02:00
ctrlaltca
a46c7156dd fix_crash (#2649) 2017-04-25 18:13:45 +02:00
ctrlaltca
3c54499a40 sort edit sets better (#2648) 2017-04-25 11:40:47 -04:00
ctrlaltca
160d66d890 show tokens all sets (#2646) 2017-04-25 11:32:51 -04:00
ctrlaltca
3f3839d70a fix deck card backs (#2645) 2017-04-25 11:32:00 -04:00
ctrlaltca
ab94d2c91d Token Dialog Revamp (#2639) 2017-04-25 00:29:57 -04:00
ctrlaltca
8ad448a23c fix #2600 (#2638) 2017-04-25 00:29:32 -04:00
ctrlaltca
acb40bc738 Fix #2608; fix #2609; fix #2611 (#2636) 2017-04-24 22:20:44 +02:00
ctrlaltca
f2a887a6a4 fix #2623 (#2634) 2017-04-24 22:20:19 +02:00
ctrlaltca
29904c49da Specify reason when on game leave; fix #2624 (#2633)
* fix #2624

* feedback++
2017-04-24 22:20:08 +02:00
Fabio Bas
38ad71b06a fix ox compilation 2017-04-24 21:59:09 +02:00
Fabio Bas
7f057612bf possibily fix osx shortcut problem 2017-04-24 20:39:11 +02:00
ctrlaltca
9d2494e6e2 Update README.md adding link to guidelines; fix #2627 (#2635) 2017-04-24 15:52:30 +02:00
tritoch
23d27cff77 Handle 'aftermath' cards like 'split' cards (#2626) 2017-04-22 14:36:22 -04:00
Zach H
176ea444ba revert clear focus (#2619) 2017-04-21 17:52:14 +02:00
ctrlaltca
3e12a5f67f Update CONTRIBUTING.md (#2613)
* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

"wait for CI upload" should be "wait for CI to upload"
"update again the version number" should be "update the version number again"
2017-04-21 14:26:55 +02:00
ctrlaltca
3356b2ede7 Change version in about window and installer name (#2570)
* Change version in about window and installer name

* Change version in about window and installer name

* Cmake get version updates

* dev snapshot format changed

* alignment changes
2017-04-20 13:41:18 +02:00
Zach H
5f3a3f535a clear focus only if needed (#2604) 2017-04-20 05:21:30 -04:00
Zach H
e2e9c5ab96 disable join if spec disabled (#2605) 2017-04-20 03:01:28 -04:00
skwerlman
dd36187864 fix header markdown in TODO.md (#2592) 2017-04-16 21:38:55 -04:00
Zach H
dc6c375220 clear focus when changing phases (#2583) 2017-04-15 14:37:01 -04:00
tritoch
2e9a0bdd4d Fix Pre-release / Dev build link (#2584) 2017-04-11 18:06:13 -04:00
Zach H
1413337b24 Add CONTRIBUTING note on making prereleases (#2576) 2017-04-07 20:59:06 -04:00
Zach H
3b7990b569 fix travis build (#2575)
* fix travis build

* rename dir
2017-04-07 14:41:33 +02:00
Zach H
657e1ac9e6 fix c style casting (#2561) 2017-04-05 15:45:58 -04:00
tooomm
ee154da598 clean transifex translations up (#2566) 2017-04-03 16:35:10 -04:00
Zach H
b3c1a87f60 better bool checking (#2564) 2017-04-01 21:29:23 -04:00
Mark McDonald
9cbae8c707 Decklist testing (#2537) 2017-04-01 01:24:16 -04:00
Zach H
ef7670a1e6 translation file updates (#2559)
* translation file updates

* translation updates
2017-03-31 15:29:43 -04:00
Zach H
d7e5b29d41 Dev channel to GitHub (#2557) 2017-03-31 14:47:49 -04:00
skwerlman
6d07709174 add .gitlab-ci.yml (#2345)
* add .gitlab-ci.yml

* Update to fix issues

fix artifact selection
fix rpm builds
mostly fix debian builds (still have cmake issue)
update to conform with #2373
combined rc and debug stages (more efficient as one stage)
add unused deploy section (can be finished/configured later)

* remove old bintray bits

* fix issues

simplify `mkdir` command
remove bintray deploy
2017-03-31 09:53:00 +02:00
Zach H
51230ade1a correct key (#2553) 2017-03-30 03:35:48 -04:00
tooomm
0e6c3c9561 better description for issue template (#2541)
* more general description for issue template

* fix

* rephrase

* remove part about filename

* fix typos
2017-03-29 11:12:31 -04:00
Zach H
56ec219808 appveyor key change (#2551) 2017-03-28 15:02:34 -04:00
Zach H
fab3d24757 Travis/Appveyor publish to GitHub Releases (#2550) 2017-03-28 13:37:59 -04:00
Zach H
87ebea7b0f fix memory leak (#2549) 2017-03-28 13:13:42 -04:00
tooomm
a273f55b6f exchange tr() for QString() (#2547) 2017-03-27 15:07:17 -04:00
Zach H
06c3edf4c6 cancel downloads from updater (#2534)
* cancel downloads from updater - fix #2534

* fix double popup
2017-03-25 16:35:43 -04:00
Gavin Bisesi
6f30304271 Change stable channel downloads to use only github api and links (#2515)
* Change stable channel downloads to use only github api and links

Ref #2502
2017-03-25 16:35:04 -04:00
tooomm
3374576831 fix toc (#2538) 2017-03-25 16:17:47 -04:00
Gavin Bisesi
54911eebc1 Merge pull request #2536 from Cockatrice/ReadmeUpdate-ZZ
Update README.md

[skip ci]
2017-03-24 16:42:22 -04:00
Zach H
b3563a897e Update README.md
Remove bintray
2017-03-24 16:40:08 -04:00
Gavin Bisesi
1879b906e5 Merge pull request #2532 from ZeldaZach/listover
Temp fix for crash on logging - QList instead of QVector hides whatever double-free bug we're causing
2017-03-24 15:51:26 -04:00
Zach H
559d4bd47f use list over vector 2017-03-23 00:45:52 -04:00
Gavin Bisesi
b99ae7f463 Merge pull request #2501 from Cockatrice/refactor-chatview
Remove direct usages of TabSupervisor from Chatview
2017-03-22 22:22:19 -04:00
Gavin Bisesi
f5a5ea0434 ChatView: Initialize fields in declared order 2017-03-22 21:52:15 -04:00
woogerboy21
2f23a9cb2f Smarter rooms (#2484)
* Added VIP only room

* Added DONATOR room.

* Extended Room to include privilege level.

* Updated room join logic

* Updated server tab permissions column display based on perm+privlevel definitions

* Fixed new client -> old server blank permissions column on server tab

Added the ability for registered user - VIP/DONATOR/PRIVILEGED room.
2017-03-22 21:45:16 -04:00
Zach H
317ac05919 logbuffer crash fix (#2524) 2017-03-22 21:39:16 -04:00
Zach H
f688c046ab Size constraints for Settings Dialog (#2513) 2017-03-22 21:25:40 -04:00
Zach H
141e6df50a Updater dialog changes (#2504) 2017-03-22 21:23:25 -04:00
Gavin Bisesi
8ac2a5870d Un-const non-pointer return types 2017-03-22 21:12:42 -04:00
Gavin Bisesi
a3f4012d1a Reduce TabSupervisor direct usage in UserContextMenu 2017-03-22 20:44:05 -04:00
Gavin Bisesi
c5aa75d4d1 Reduce data dependency for GamesProxyModel 2017-03-22 20:44:05 -04:00
Gavin Bisesi
d65a444ac5 Remove direct usages of TabSupervisor from Chatview
- There still might be inherited usages
- It's still used in the ctor

Areas to test
- Mentions
- Chat notifications
- Username clickable links
2017-03-22 20:44:05 -04:00
tooomm
2c3b85aed3 fix translators link (#1987) 2017-03-22 16:26:59 -04:00
Zach H
85985a9433 Add support for multi-selection in set editor (#2441) 2017-03-22 15:49:38 -04:00
woogerboy21
33e8a2ea95 Fix mysql appveyor (#2529) 2017-03-21 16:42:14 -04:00
Zach H
5ebc9ca360 allow auto connect (#2522) 2017-03-20 18:21:20 -04:00
Zach H
4feb43cdcc changes to connection dialog (#2503) 2017-03-19 20:24:58 -04:00
Zach H
b5b9527c13 Font size defaults (#2521) 2017-03-19 20:20:06 -04:00
Zach H
a2a7561613 allow max font size to be defined by user (#2488) 2017-03-19 14:13:20 -04:00
tooomm
1cc50b2793 remove travis deployment to bintray (#2516) 2017-03-19 12:58:31 -04:00
Zach H
2d401e4aba remove bintray deploy (#2511) 2017-03-19 12:56:16 -04:00
Zach H
0da2bdd7aa additional null checks in player, gameselector, remoteclient, log (#2514) 2017-03-19 12:55:55 -04:00
Zach H
212a7d00db better null checking decklist (#2510) 2017-03-18 20:56:49 -04:00
Zach H
3b2eff2551 file filenames so window updater works (#2500)
* file filenames so window updater works
2017-03-18 18:48:40 -04:00
Zach H
fb194db766 additional null checks & parsing (#2506)
* additional null checks & parsing
2017-03-18 18:48:23 -04:00
Zach H
127a91147c rename from update to check (#2505) 2017-03-18 18:46:19 -04:00
Zach H
2048aac387 STDout debugging (#2499) 2017-03-17 20:45:13 -04:00
Zach H
a8a4557738 auto_connect toggle fix (#2485) 2017-03-16 16:59:48 -04:00
Zach H
a7dbc2e1f6 Fix token window resize (#2480) 2017-03-15 15:53:57 -04:00
Zach H
4cfcca33db Server Connect Remade (#2452)
* Save multiple server configurations
* Each server has its own password/port storage

Close #2452
2017-03-14 17:51:51 -04:00
Zach H
37b43f9916 make settings size vary based on sizeHint() (#2472) 2017-03-14 17:48:02 -04:00
ctrlaltca
6e723b2a99 translations (#2469) 2017-03-14 00:04:26 +01:00
ctrlaltca
2817f54c96 Fix issues with new updater; fix #2465 (#2468)
* fix #2465
2017-03-13 23:21:15 +01:00
ctrlaltca
f9a025081a fix #2445 (#2458) 2017-03-12 18:23:58 +01:00
ctrlaltca
877a5ca3b1 fix_2449 (#2459) 2017-03-12 18:21:49 +01:00
ctrlaltca
0d34fc5df2 fix_2424 (#2461) 2017-03-12 18:21:30 +01:00
tooomm
72825c43ec rephrase missing feature setting (#2462) 2017-03-12 13:20:15 -04:00
woogerboy21
bf154559eb Reset idle timer when a message is sent. (#2456) 2017-03-12 11:52:43 +01:00
Zach H
bd850fa3ff create related token if you press the 'Token:' button (#2455)
* create related token if you press the 'Token:' button

* function set
2017-03-12 11:51:59 +01:00
Zach H
b2f2e9db8a make sure xml file is uploaded (#2440) 2017-03-07 12:48:07 -05:00
tooomm
88b4e768c4 Create pr template (#2447) 2017-03-05 16:44:29 -05:00
Zach H
638c5e25fa temp fix to downloading folders (#2442) 2017-03-04 22:36:35 -05:00
Mark McDonald
ba0029f448 Add note about opening issue before PR (#2443) 2017-03-04 13:45:16 -05:00
Zach H
c850ae98d8 add player numbers to in game (#2435) 2017-03-04 11:03:39 -05:00
Zach H
12539026c5 Webtrice set targets (#2439) 2017-03-04 11:03:22 -05:00
Zach H
18b8a0ef5c fix folder names (#2432) 2017-03-04 00:49:09 -05:00
tritoch
ab19a89cd2 Enable "Show Games" for Self Context Menu (#2437) 2017-03-04 00:48:35 -05:00
Zach H
6619612c30 fix buddy checkbox bug (#2434) 2017-03-04 00:48:16 -05:00
Zach H
b8334d0cd5 fix incorrect pawn icons (#2436)
* fix incorrect pawn icons
2017-03-02 22:26:10 -05:00
Zach H
cf08d1d267 Revert "Condensed Card Counter Context Menu" (#2433) 2017-03-02 17:47:15 -05:00
Zach H
2bad56f6b6 removal of p server (#2438) 2017-03-02 16:41:08 -05:00
ctrlaltca
160c4cea6b Translations (#2430) 2017-03-01 10:18:56 +01:00
ctrlaltca
7373819c32 Add release channels for autoupdater (#2362)
Fetch releases from github and find corresponding installers on bintray
2017-03-01 09:43:09 +01:00
Mark McDonald
b9cd942308 Add keybaord shortcut for creating related cards (#2426)
* Extract createCard from actCreateRelatedCard

* Merge related cards and reverse related cards before handling

* Add "Create all related cards" action to a card

* Stop displaying all related tokens if only one token is available

* Add shortcut for Creating all tokens related to selected card

* Extract method for adding related card actions

* Prefer foreach to index based iteration

* Guard against null cards, card menus, or cardInfos

* Remove QRegExp dependency from commonly depended header
2017-02-27 08:50:10 +01:00
Name Temporarily Hidden
c0e7d0c7c7 Removed font-size cap for on-card text (fixes bug: #2368) (#2427) 2017-02-26 23:20:54 -05:00
woogerboy21
d0088f6a18 Server audit table (#2423)
* Creating of server side audit table for auditing actions such as password resets, account registrations and log queries.

* Add migration script

Add migration script for database

* Update database script

Update database script to reflect new audit table

* Creating of server side audit table for auditing actions such as password resets, account registrations and log queries.

* Add migration script

Add migration script for database

* Update database script

Update database script to reflect new audit table

* Corrected results column possible value(s).

* Fixed migration script.

* Added boolean audit logic

Added enable/disable audit options
Added audit functionality for forgot password

* Added registration auditing

Added registration auditing

* Updated ActivateAccount Function

Created clientid variable and used it in preporation for future
potential protocol expansion.

* Extended activation protocol

Added clientid to activation command protocol

* Typo correction

Fix typo's

* Missed type fix

Found the infamous E!

* Updated database function syntax

Updated if/else syntax in db add audit function

* Untabify content

Untab files changed in PR
2017-02-25 13:48:31 -05:00
tritoch
3c2063df40 Update Custom PIcture URL to match wiki (#2422)
Wiki page was moved, link in settings points to old page.
2017-02-24 01:13:26 -05:00
Zach H
47cafde521 fix lowercase (#2419)
* fix lowercase

* fix changes

* fix .desktop

* servatrice .desktop
2017-02-23 08:53:18 +01:00
tritoch
884e604909 Reverse wording on logfilters description (#2421)
The `logfilters` setting was inverted.
Previously said it logged everything *except* listed strings,
but it actually logs *only* listed strings.
2017-02-21 14:39:00 -05:00
Mitchell Rosen
9ba3f21730 Fix indentation (and Debug build) (#2418)
* Fix indentation (and Debug build)

* More indentation fixes
2017-02-20 08:48:12 +01:00
skwerlman
24c95e00ed add RPM support to make package (#2373)
use like `cmake .. -DPACKAGE_GENERATOR=RPM`
defaults to DEB
2017-02-19 15:08:25 +01:00
ctrlaltca
651128257f Webclient: make account fields more user friendly (#2363)
* fix_2310

* Remove Gender

Removes gender
2017-02-19 15:07:51 +01:00
Zach H
172fc79327 fix crash if no trayicon found (#2415) 2017-02-19 14:52:44 +01:00
tritoch
90c62c8ab8 Add cockatric.es server (#2414) 2017-02-16 15:06:30 -05:00
woogerboy21
0cfa6863d5 Simpler forgot password functionality (#2393)
* Simpler forgot password functionality (Server/Client)
2017-02-15 17:41:40 -05:00
woogerboy21
b64eab204c Added custom notify user event (#2398)
* Added custom notify user event.

* Untabbify
2017-02-08 18:00:53 -05:00
woogerboy21
0fdb9b7c83 Added registration email blacklist (#2352)
* Added registration email blacklist

Added the ability to define email blacklist for user registration.  Now
server operators can prevent users from registering accounts that
contain providers they do not wish users to use.

* Update ini option for clarity

Updated servatrice ini option name for clarity.

* Updated description for clarity

Added implicit explination
2017-02-08 15:25:27 -05:00
tooomm
dab731656d updated mac wording (#2359) 2017-01-19 23:36:37 -05:00
ctrlaltca
ae5fc1fe2c Fix use of uninitalized value (#2364) 2017-01-16 21:06:35 +01:00
ctrlaltca
d45293489f Git: Force short commit hash length to 7 chars (#2361) 2017-01-15 08:12:05 -05:00
tritoch
bdb8e931b4 Registered + VIP + Buddy Gummy Update (#2336)
* Reg + Buddy + VIP

* Registered VIP Gold de-Star

Removed the star from VIP.  Changed gummy to all-gold.
2017-01-14 13:17:03 -05:00
poixen
784a75db02 Merge pull request #2349 from Cockatrice/priv_level
Added privlevel to User Details
2017-01-11 19:33:35 +01:00
poixen
cdeb1a7f9a Merge branch 'master' into priv_level 2017-01-08 09:40:21 +01:00
woogerboy21
a85b0dcbba Add email registration restriction (#2350)
* Add ability to limit number of account registrations with same email address

This commit adds server side functionality that will allow operators to
limit the number of accounts that can be registered to the server with
the same email address.

* Updated ini wording

Updated configuration file wording for better description.
2017-01-07 11:26:23 -05:00
poixen
93c7b1b846 Added priv level to user details
added priv level to user details

Fix #1881
This change allows the server operator to enable or disable the internal
SMTP client that sends activation emails.  With this new configuration
option server operators can choose to require email activation yet use
an external method of account verification and/or account token
notification.
2017-01-07 08:16:21 +01:00
woogerboy21
3e39432ccc Add configuration to enable/disable internal smtp client (#2337)
Fix #1881
This change allows the server operator to enable or disable the internal
SMTP client that sends activation emails.  With this new configuration
option server operators can choose to require email activation yet use
an external method of account verification and/or account token
notification.
2017-01-06 17:02:52 -05:00
woogerboy21
dbf7d7f748 Fix replay chatview with new gummys (#2340)
Fix #2334
This update fixes the violation that happens when watching replays to
determin the proper user privlevel in order to generate the correct
gummy.
2017-01-06 15:28:30 -05:00
poixen
847d959326 Merge pull request #2348 from Cockatrice/counters
Condensed Card Counter Context Menu
2017-01-06 20:07:52 +01:00
poixen
2d216807c7 Condensed counter menu 2017-01-06 19:07:31 +01:00
woogerboy21
f7c8651d51 Added privilege level start/end columns (#2328)
* Added privilege level start/end columns

Added 2 new columns to the users table to indicate when a users
privilege level date / time was recognised and when the privilege level
should end.

* Updated database header

Always forget about the database header file...

* Added priv level maintenance script

Added a bash maintenance script that can be run on a scheduled basis
that will demote privileged users that have the end times on the
accounts that are prior to the date/time the script is executed.

* Added donations table

Added donations table to db for tracking user donations
2016-12-30 16:45:28 -08:00
tooomm
62dc6dcb86 move docker instructions to 'running' (#2323) 2016-12-21 21:02:09 +01:00
woogerboy21
36e6da2abd Fix idle timeout warning on registration / login (#2322)
Fix #2319
This should resolve the issue of users getting the popup immediately when logging in and the time out value is set to 0.
This needs tested, its a quick fix put in with the web editor.
2016-12-20 16:15:16 -08:00
Zach H
3d0600b516 Tokens in sub menu (#2320) 2016-12-17 13:05:29 -05:00
Zach H
04779c2a77 protobuf warnings fixed (#2313) 2016-12-11 19:22:39 +01:00
tritoch
42fb17bdd2 Document '--config' parameter (#2311)
servatrice.ini can be passed to servatrice via the --config parameter.  I don't think this is documented anywhere.
2016-12-10 01:11:44 +01:00
woogerboy21
960ecaaeda New privuser gummys (#2305)
* New user gummys based on account privilege level

This change add's new user gummy icons for vip/donator priv levels that
are now available.

YaY for Zach!
2016-12-08 22:52:25 -05:00
Zach H
e0636db60d Recursively search CUSTOM folder for images (i.e. subdirectories) (#2251) 2016-12-08 11:00:44 +01:00
woogerboy21
c9a8dafd01 Update sessions table columns for consistency (#2299)
* Update sessions table columns for consistency

Fix #2276
This update changes two columns in the sessions table to match the
column declartations in the users table.

* Update servatrice.sql

Update servatrice.sql to reflect new db schema version
2016-12-08 10:43:11 +01:00
woogerboy21
c78eed576f Fix store replays (#2301)
* Fix Store Replays Functionality

For whatever reason we have a variable in the servers ini to
enable/disable the storing of replays but there is no code that uses
that variable.  At one time there was but in light of it being removed
some were along the line this add's the ability back in for server
owners to disable the storing of game replay data.

* Added code

* Moved store replay check

Moved the check for storing replay information into existing routine.

* Updated Per Request

Combined lines per request
2016-12-07 07:52:39 -05:00
woogerboy21
f86b9e0be7 Remedy connection type query at every login (#2298)
Fix #2285
This change adds an internal counter for each tcp/web socket connection
that the server makes and queries the stored memory count at login
rather than the previous way that quired the database during each login.
Each login that quired the DB put a significant load on the server as
the user base grew.
2016-12-07 01:35:35 -05:00
woogerboy21
a6f1f4c01d Add enable/disable log query functionality (#2294)
* Add enable/disable log query functionality

This change adds the ability for server owners to allow log querying
from inside the client.  In the event the functionality is not allowed a
result is returned indicating the functionality is disabled.

* Added translation

Added the ability for the disabled messages to be translated.
2016-12-06 15:37:36 -05:00
skwerlman
c90c4ea41f Delete aps file (#2296)
* Delete aps file

This is a VS cache file, and was probably committed accidentally.

* add aps to gitignore
2016-12-06 02:52:23 -05:00
woogerboy21
d039c9b6bd Add missing feature rememberance to client (#2275)
Fix #2249
Add the ability for the client to remember the missing features that it
received from the server it last connected to and not display the
"missing/optional feature" message at every login.
2016-11-29 15:50:00 -05:00
woogerboy21
f6e4ee9a4a Fix #2270 (#2271)
Fix #2270
Check userinfo first before trying to use it.
2016-11-09 14:40:18 +01:00
woogerboy21
6962777ded Rework idle timeout, now server side (#2259)
* Server side idle timeout

Initial commit for server side idle timeout counter.  This adds a new
int value that is updated when room/game/mod/admin commands occur and is
checked during the regular ping timout function that if the users new
"idle" value exceeds the idleclienttimeout value defined in the servers
configuration file the user is logged out.  The user will receive a
warning at the 90% time frame mark about being idle.

* Use round instead of ceil

Travis fix for older xcode issue's.

* Fixed requested items

Mis-spelleed function, added header, added warning message sent check
value.  Also corrected the protobuf declaration file for
event_notifyuser

* Moved bool to protected

* Re-Ordered Declarations

* Removed most stylistic items

Resolved most noted things.

* Remove client side idle timeout

Removed client side idle timeout functionality
2016-11-08 22:18:12 -05:00
woogerboy21
1cebe030f6 Fix one to many zero's (#2260)
Looks like I typo'd the default value for the number of seconds in 1
hour for the default client side idle time out.  This fixes it.
2016-11-02 01:26:00 -04:00
Jeff
a2f4fa916e Adds !corrected_name! and !corrected_name_lower! to customURL (#2255) 2016-11-01 00:13:39 -04:00
Zach H
9ebbd0c3ca travis osx 10.10 min (#2252) 2016-10-31 10:45:52 +01:00
woogerboy21
21a34eaaa1 Cleanup server running variable information (#2239)
* Created first round of helper functions

Started to go through server init function and move statically defined
variables that the server uses into helper functions to allow for
dynamic changing while the server is up rather than requiring a restart.

* Completed Helper Function Creation

Completed adding all the helper functions along with updated the virtual
server function calls and renamed helper functions to match settings
cached ini value names for clarity.

* Comment Cleanup

Removed lines commented out throughout previous changes as well as
cleaned up variable declarations that are no longer needed with helper
functions that query the settingsCache

* Added featureset dynamic refreshing

Added slots/functions/calls for updating the required feature sets
dynamically.

* Created first round of helper functions

Started to go through server init function and move statically defined
variables that the server uses into helper functions to allow for
dynamic changing while the server is up rather than requiring a restart.
2016-10-31 10:30:12 +01:00
Zach H
3498b16e01 update wordings (#2246) 2016-10-30 03:54:43 -04:00
ctrlaltca
a1840ea9d3 translations galore (#2245) 2016-10-29 11:31:35 +02:00
woogerboy21
63a4f147f4 Add client UI setting for idleclientdisconnect (#2244)
* Add client UI setting for idleclientdisconnect

Added disabled option in client UI for client disconnect.

* Updated settings text

Updated settings text for clarity.

* Updated descripton text (again)

Per request for clarity
2016-10-29 04:24:18 -04:00
Gavin Bisesi
dfc4d9937b Merge pull request #2243 from Cockatrice/remote-client-timer-from-featureset
Remove client idle timer flag from feature set
2016-10-28 18:08:07 -04:00
Gavin Bisesi
e67dfe05db Remove client idle timer flag from feature set
There's no protocol item at hand here so this isn't a protocol 'feature'
2016-10-28 18:04:29 -04:00
woogerboy21
f17a0da434 Added user privilege level (#2228)
* Update log path example when running under windows

Added example of log path syntax when running servatrice under windows.

* Missed example bra cket

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* don't use corrected name when downloading card (#2164)

* Fix dynamic user limit settings

PR #2220 removed the ability to be able to change the max user limit
count while the server is running requiring a restart to make the
settings change.  This PR reverts the behavior back to how it operated
prior to the PR.

* Call class functions for consistency

Updated code to call functions for consistency.

* don't use corrected name when downloading card (#2164)

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* Corrected Typo

Corrected typo in DB Migration Script

* Git fuckup?

* Added word column

Added the word column to migration script for backwards compatibility
2016-10-26 02:07:42 -04:00
woogerboy21
1197c10a70 Merge pull request #2236 from woogerboy21/fix_dynamic_user_limit
Fix dynamic user limit settings
2016-10-25 18:04:56 -04:00
woogerboy21
b060f4ea6b Call class functions for consistency
Updated code to call functions for consistency.
2016-10-24 08:05:33 -04:00
woogerboy21
749bc5d6f5 Fix dynamic user limit settings
PR #2220 removed the ability to be able to change the max user limit
count while the server is running requiring a restart to make the
settings change.  This PR reverts the behavior back to how it operated
prior to the PR.
2016-10-24 00:30:58 -04:00
ctrlaltca
b808d3824b don't use corrected name when downloading card (#2164) 2016-10-22 19:07:58 -04:00
woogerboy21
2dd7158802 Merge pull request #2227 from Cockatrice/servatricelogpathsyntaxexample
Update log path example when running under windows
2016-10-19 23:34:27 -04:00
woogerboy21
32d2fa13f6 Missed example bra cket 2016-10-19 19:26:06 -04:00
woogerboy21
05f90a74a4 Update log path example when running under windows
Added example of log path syntax when running servatrice under windows.
2016-10-19 19:24:44 -04:00
ctrlaltca
989c91f1d1 [ci skip] Don't send connection form when enter is pressed on the host autocompleter (#2225) 2016-10-18 14:47:54 +02:00
ctrlaltca
c3ef53d6fd Removed unused class (#2222) 2016-10-18 14:34:11 +02:00
woogerboy21
632a2db18e Merge pull request #2220 from woogerboy21/CleanupMaxUserCheck
Cleanup max user check at login
2016-10-17 09:38:30 -04:00
ctrlaltca
40468a79ea Merge branch 'master' into CleanupMaxUserCheck 2016-10-17 12:27:20 +02:00
Kevin Boxhoorn
0b7f4c134c Disallow usernames that contain certain words and RegExp (#2200)
* Add `disallowedwords` setting and perform check

Check if any of the words in `disallowedwords` are contained in the username. If
so, return false like other checks.

NOTE: Needs testing for advanced bugs.

* Remove "administrator" from `disallowedwords`

"administrator" contains "admin" anyway, so it is not needed.

* Add error message if username contains a disallowed word

* Add `disallowedregexp` setting and perform check

Check if each expression in `disallowedregexp` exactly matches the username. If
so, return false.

TODO: Add specific error to dialog in `window_main.cpp`.

* Add error message for username matching RegExp

* Fix indentation

* Compile `disallowedregexp` into a QList upon initialization

Reduces system load with each registration request.

* Clean up `isUsernameValid` function

* Fix indentation

* Add backwards compatibility to client

Client can accept either 7 or 9 rules to maintain compatibility with older
versions of server.

* Add examples and warnings to `servatrice.ini`
2016-10-17 12:24:42 +02:00
woogerboy21
10b677acdf Cleanup max user check at login
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.
2016-10-16 12:48:39 -04:00
ctrlaltca
f20e2ce2bd Merge pull request #2185 from tritoch/pending-mtgjson-Ae
Pending mtgjson/gatherer Æ-->Ae conversion
2016-10-14 14:07:19 +02:00
tritoch
696b11475e Merge pull request #2 from Cockatrice/master
Bring current
2016-10-13 16:05:40 -05:00
woogerboy21
a4b1a79cd4 Merge pull request #2195 from wincinderith/login-error-fix
Prevent login error handler being incorrectly called
2016-10-11 11:33:48 -04:00
Kevin Boxhoorn
1cbf67ab57 Merge branch 'master' of https://github.com/Cockatrice/Cockatrice into login-error-fix 2016-10-10 20:52:58 +11:00
woogerboy21
89ceb889e0 Merge pull request #2209 from woogerboy21/inactivetimeout
Idle Client Timeout Functionality
2016-10-09 14:40:53 -04:00
woogerboy21
7af2f3f057 Idle Client Timeout Functionality
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.
2016-10-09 13:55:07 -04:00
Kevin Boxhoorn
000f6ea2c0 Merge branch 'master' into login-error-fix 2016-10-06 20:39:46 +11:00
ctrlaltca
e4127fead3 Merge pull request #2199 from wincinderith/load-remote-fix
Disable "Load remote deck..." button in local game
2016-10-05 14:25:50 +02:00
ctrlaltca
d8f7c57eff Fixed travis build on osx 2016-10-05 14:24:50 +02:00
Kevin Boxhoorn
2376a7dbc0 Make isLocalGame const 2016-10-05 09:43:22 +11:00
Kevin Boxhoorn
c1aebc1af5 Fix member variable initialization order 2016-10-03 13:16:16 +11:00
Kevin Boxhoorn
3680f40981 Disable "Load remote deck..." button in local game 2016-10-03 12:36:18 +11:00
Kevin Boxhoorn
2a7fc827f4 Add getIsLocalGame to TabGame 2016-10-03 12:33:40 +11:00
Kevin Boxhoorn
6825486776 Prevent login error handler being incorrectly called (#2176)
In some situations, when the server disconnects the client during a login,
multiple dialogs will be shown. This is undesirable behavior, and hence
`loginError` should only be called when the client is actually connected
(`response.response_code() != Response::RespNotConnected`).
2016-09-29 12:21:06 +10:00
tooomm
a7a0ea23ca removed tr() for URLs (#2190) 2016-09-25 19:28:34 -04:00
tritoch
85063859e0 Pending mtgjson/gatherer Æ-->Ae conversion
This is to prepare for when mtgjson converts all Æ cards to 'Ae'.  Formerly it was 'AE'.
2016-09-23 09:23:47 -05:00
tritoch
b23a53eb1e No "Ae" --> "AE" translate (#2182) 2016-09-23 00:03:38 -04:00
Zach H
6c7ba06930 add pow/toughness filters (#2169) 2016-09-20 18:17:53 -04:00
ctrlaltca
65c98c8422 Merge pull request #2179 from ctrlaltca/fix_gtest
fix google tests
2016-09-20 22:39:35 +02:00
ctrlaltca
c4bb16e74b Merge pull request #2175 from Cockatrice/add_new_pub_server
add mtg.tetrarch.co server
2016-09-20 22:28:54 +02:00
ctrlaltca
54cc0c2af6 Merge pull request #2178 from ctrlaltca/translations
Updated translations
2016-09-20 22:27:17 +02:00
Fabio Bas
0e8206a36f Updates translations 2016-09-20 22:23:36 +02:00
Fabio Bas
018a4736c6 fix google tests 2016-09-20 21:50:32 +02:00
tooomm
8b1aaea79d add mtg.tetrarch.co server
added `mtg.tetrarch.co` server hosted by @skwerlman to the in-client default list
2016-09-20 21:18:58 +02:00
ctrlaltca
7f28a7e844 Fix #601; Fix #725 (#2126)
Analyze deck on tappedout
Fix small bug in deckstats interface
2016-09-02 01:34:56 -04:00
ctrlaltca
680277ad6a fix #2129 (#2132)
Remove selection move at all
2016-08-31 14:13:30 -04:00
Gavin Bisesi
bf4fba6bc5 Readme: Reference "easy" changes issue tickets (#2157) 2016-08-31 14:13:13 -04:00
ctrlaltca
8571815cbd Merge pull request #2134 from ctrlaltca/fix_1992
Renamed !setnumber! to !collectornumber!
2016-08-27 10:02:58 +02:00
Fabio Bas
ae456a5bc3 Renamed !setnumber! to !collectornumber! 2016-08-20 10:27:23 +02:00
ctrlaltca
da2eb97c7b Merge pull request #2125 from ctrlaltca/fix_1762
Fix clipboard behavior in deck editor and game
2016-08-10 09:23:33 +02:00
ctrlaltca
ac841ee2c6 Merge pull request #2117 from ctrlaltca/fix_2088
Webclient: misc improvements (was: parse html in server message)
2016-08-09 11:14:01 +02:00
Fabio Bas
c321227fa7 Fix clipboard behavior in deck editor and game 2016-08-09 11:13:36 +02:00
Fabio Bas
a68df3611b Fix #2088
Add an autocomplete with known server names to the connect dialog;
Added support for server messages (identification, shutdown, user
warning and promotion)
Connection dialog’s inputs are now wider
Only declare implemented client features
Added check for protocol version on connect before login
Avoid listbox being rendered as dropdown on mobiles
2016-08-09 10:39:03 +02:00
ctrlaltca
0f0f9a1246 fix #2118 (#2119) 2016-08-02 21:58:56 -04:00
ctrlaltca
1834e09c0f Merge pull request #2115 from Cockatrice/single_game_types
Radio buttons for game types
2016-07-30 10:31:04 +02:00
poixen
0df4b34fe4 radio buttons for game types 2016-07-27 21:21:28 +02:00
ctrlaltca
8644016d3c Merge pull request #2114 from ctrlaltca/fix_2107
Webclient: Fix room closing on disconnect
2016-07-26 12:50:39 +02:00
Fabio Bas
8eb36fa2f1 fix #2107 2016-07-26 12:49:07 +02:00
woogerboy21
deb6d4dec6 Merge pull request #2111 from woogerboy21/fix_serv_sql_file
Corrected servatrice.sql file room table entries that were missed
2016-07-25 01:19:14 -04:00
woogerboy21
5002c293c7 Corrected servatrice.sql file room table entries that were missed 2016-07-25 01:01:35 -04:00
ctrlaltca
2cbfc5a8e6 Merge pull request #2096 from ctrlaltca/fix_2091
Fix infinite loop on local game close
2016-07-24 12:29:03 +02:00
mlowe
f87f677cad Merge pull request #2103 from Cockatrice/space
More screen space
2016-07-22 15:07:54 +02:00
woogerboy21
569ae87cbe Merge pull request #2101 from woogerboy21/remove_news_table
Remove news table (cleanup)
2016-07-21 23:29:53 -04:00
poixen
f2cd276e5f more screen space 2016-07-21 20:06:45 +02:00
woogerboy21
1c1192c525 Update maint script files 2016-07-21 10:38:46 -04:00
woogerboy21
b39a18b446 Remove unused news database table 2016-07-21 10:30:38 -04:00
woogerboy21
c04298fb43 Merge pull request #2087 from woogerboy21/client_id_nametoip_fix
Client id nametoip fix
2016-07-21 10:20:16 -04:00
woogerboy21
8060c8f37b Merge pull request #2099 from woogerboy21/serverid_roomdbgtable_fix
Servatrice rooms table respect Server ID
2016-07-21 09:54:20 -04:00
woogerboy21
63bf0029aa Updated client id generation to use host ip rather than name 2016-07-21 09:20:28 -04:00
woogerboy21
600a8e8c60 Update servatrice to respect server id when doing room information lookups 2016-07-21 09:09:06 -04:00
mlowe
a83816f858 Merge pull request #2100 from Cockatrice/connect_dlg
Updated connect dlg
2016-07-21 14:35:34 +02:00
poixen
8d989ca7fb updated connect dlg 2016-07-21 11:45:11 +02:00
Fabio Bas
d61d9c98a0 Avoid locking on local server shutdown 2016-07-20 16:53:57 +02:00
ctrlaltca
b28b174056 Merge pull request #2097 from ctrlaltca/fix_shutdown
Remove additional minute in server shutdown
2016-07-19 13:21:33 +02:00
Fabio Bas
36e62df67d Remove additional minute 2016-07-19 11:57:11 +02:00
Zach H
d82564d84c Shutdown timer changes (#2084)
* change msg popup time from 10min to 30min

* countdown at half time

* simplify math

* move shutdown after checks
2016-07-15 14:02:40 -04:00
mlowe
3365e0461c Merge pull request #2083 from Cockatrice/connect_dlg
updated login
2016-07-15 16:46:39 +02:00
poixen
69e8db441c updated login 2016-07-15 15:41:51 +02:00
ctrlaltca
0939cd8b21 Merge pull request #2082 from ctrlaltca/fix_2081
Remove newlines from Deck name in TabDeckEditor
2016-07-15 11:14:13 +02:00
Fabio Bas
b0efcf9f89 Remove newlines from Deck name in TabDeckEditor 2016-07-15 10:57:42 +02:00
Zach
81006d5342 Merge pull request #2080 from ZeldaZach/fix_reset
show buddyOnly on filter clear
2016-07-14 17:39:25 -04:00
Zach H
edd50a7571 show buddyOnly on filter clear 2016-07-14 16:56:17 -04:00
ctrlaltca
cbff59ae59 Merge pull request #2078 from skwerlman/patch-1
fix typo in sample servatrice ini
2016-07-14 09:06:47 +02:00
skwerlman
deb8a2c954 fix typo in sample servatrice ini 2016-07-14 03:01:11 -04:00
ctrlaltca
0c731e378a Merge pull request #2077 from ctrlaltca/webclient_ui
Some web client UI fixes
2016-07-13 09:01:33 +02:00
Fabio Bas
1a38e4ef98 Some web client UI fixes 2016-07-12 23:15:42 +02:00
mlowe
8cd5803556 Merge pull request #2071 from Cockatrice/game_view_time
Game Viewer Update
2016-07-12 11:34:44 +02:00
poixen
a729b1c966 updated game created coloumn text 2016-07-12 09:31:27 +02:00
tooomm
8ac1469fdb typo fix 2016-07-10 11:05:54 +02:00
ctrlaltca
a11e57503e CONTRIBUTING: Syntax highlight, protobuf 2016-07-10 11:01:15 +02:00
ctrlaltca
35df6485ab CONTRIBUTING: C++11, nullptr, Database migrations 2016-07-10 10:47:19 +02:00
ctrlaltca
d4ced6f6af Merge pull request #2067 from ctrlaltca/fix_2066
Fix compilation warning
2016-07-09 10:31:55 +02:00
Fabio Bas
430f1baf2f make gcc an happy puppy 2016-07-09 10:18:12 +02:00
tooomm
e29230953d Changes to recommended DL + chat link (#2064)
* Changes to recommended DL + chat link
* wording update
2016-07-08 21:07:41 +02:00
ctrlaltca
6a152ffbac Merge pull request #1991 from ctrlaltca/websockets
Implementation of websockets in servatrice and test js client
2016-07-05 14:45:31 +02:00
ctrlaltca
07bc215b3e Merge pull request #2021 from ZeldaZach/color_list
Colors to deck editor
2016-07-05 14:45:09 +02:00
mlowe
b64ff6f930 Merge pull request #2052 from Cockatrice/metion_fix
Fixed mention bug
2016-07-04 21:06:19 +02:00
poixen
3717c7440a Fixed mention bug 2016-07-04 20:23:32 +02:00
ctrlaltca
066aff96d7 Merge pull request #2049 from Cockatrice/filterBuddiesOnly
filter buddies only
2016-07-03 23:08:44 +02:00
poixen
089edc53d0 filter buddies only 2016-07-03 21:48:21 +02:00
Gavin Bisesi
e038534a51 Merge pull request #2045 from Cockatrice/timestamps
added additional timestamps in game
2016-07-02 19:49:34 -04:00
Gavin Bisesi
b61e023267 Merge pull request #2047 from Cockatrice/autoadmin
Enable admin features on login and remove "are you sure" prompt
2016-07-02 19:49:02 -04:00
poixen
2a11466779 auto admin 2016-07-02 22:34:45 +02:00
poixen
60f457827f added more in game timestamps 2016-07-02 21:45:38 +02:00
Zach
277d7e2173 Merge pull request #2039 from Cockatrice/tooomm-log_dlg_title
log ui window: title change
2016-06-30 11:32:28 -04:00
tooomm
c095daa282 log ui window title change
While translating I realized that `View Debug Log` for the menu is perfectly fine, the dialog window should just say `Debug Log` though...
2016-06-30 17:15:37 +02:00
ctrlaltca
7f2e39500e Merge pull request #2038 from ctrlaltca/translations
Translations update
2016-06-30 15:27:55 +02:00
Fabio Bas
670f55bc28 Translations update 2016-06-30 15:26:52 +02:00
ctrlaltca
a045cf1c41 Merge pull request #2037 from Cockatrice/tooomm-tx_charts
readme: fix transifex charts
2016-06-30 11:22:38 +02:00
tooomm
b032f71b22 fix transifex charts 2016-06-30 10:33:48 +02:00
ctrlaltca
9807bcb48f Merge pull request #2025 from ctrlaltca/logui
Log UI
2016-06-29 13:56:46 +02:00
ctrlaltca
60ada0c278 Merge pull request #2036 from ctrlaltca/fix_2031
Fix openssl detection on win64
2016-06-29 13:54:59 +02:00
Fabio Bas
204f351a61 Fix openssl detection on win64 2016-06-29 09:53:50 +02:00
Fabio Bas
8db10be892 Log UI 2016-06-27 22:18:39 +02:00
Fabio Bas
5b21dc8cde Implementation of websockets in servatrice and test js client 2016-06-26 19:38:53 +02:00
ctrlaltca
c19f225806 Merge pull request #2015 from Cockatrice/tooomm-tr_tags
fix hardcoded strings
2016-06-26 18:52:37 +02:00
ctrlaltca
7282aa7eea Merge pull request #2014 from Cockatrice/tooomm-patch-1
properly differentiate between singular and plural
2016-06-26 18:52:17 +02:00
Gavin Bisesi
e81a6d497b Don't mention-bot Psithief
per request
2016-06-21 08:49:32 -04:00
Zach H
79fc24769a Colors to list 2016-06-21 00:48:03 -04:00
ctrlaltca
287bed7e6d Merge pull request #2016 from Cockatrice/tooomm-fix_travis_compile
fix travis debug error
2016-06-17 18:12:16 +02:00
tooomm
85c6bcdfa7 fix travis debug error
introduced in https://github.com/Cockatrice/Cockatrice/pull/2011
2016-06-17 17:34:07 +02:00
tooomm
57f9b2c200 add tr() tags 2016-06-17 17:03:42 +02:00
tooomm
1782096805 add tr() tags 2016-06-17 16:56:08 +02:00
tooomm
bfbbedd604 pluralisation 2016-06-17 16:12:41 +02:00
ctrlaltca
f6a3551168 Merge pull request #2011 from ctrlaltca/fix_2010
Fix some translation issues
2016-06-15 22:18:34 +02:00
Fabio Bas
1bc56e1c86 Fix some translation issues
Fix #2010
2016-06-15 22:17:31 +02:00
ctrlaltca
b40d9da01d Merge pull request #2002 from Cockatrice/1977-version-check
Check for x86/x86_64 update version on windows.
2016-06-13 08:49:35 +02:00
Gavin Bisesi
82742bbd47 Require Qt >= 5.4 on Windows 2016-06-11 15:53:52 -04:00
Gavin Bisesi
f7d1802390 Check for x86/x86_64 update version on windows.
Fix #1977
2016-06-08 18:13:01 -04:00
Gavin Bisesi
0baccd3c00 Merge pull request #2000 from ZeldaZach/fix_1946
Add set names to dialog
2016-06-04 16:36:10 -04:00
ctrlaltca
d51a6c1ae7 Merge pull request #2003 from ctrlaltca/appveyor_nsis
Appveyor updates
2016-06-04 17:26:46 +02:00
Fabio Bas
016601bdc2 Appveyor updates 2016-06-04 15:24:17 +02:00
tooomm
4e198bdf70 Merge pull request #2001 from tooomm/tooomm-patch-1
typo fix
2016-06-03 21:25:29 +02:00
tooomm
32f8eb308a typo fix
`Toogle untap` --> `Toggle untap`
2016-06-03 20:22:03 +02:00
Zach
47de7beac1 Merge pull request #1999 from ZeldaZach/fix_1476
Prevent no games from showing
2016-06-01 02:25:41 -04:00
Zach H
1ff98cfcb4 Add set names to dialog 2016-05-31 20:29:00 -04:00
Zach H
c25eae9d23 Prevent no games from showing 2016-05-31 19:16:05 -04:00
Zach
e50c2014d1 Merge pull request #1998 from ZeldaZach/rarity_filter
Add rarity filter to deck editor
2016-05-31 10:10:23 -04:00
Zach H
829c96673b Add rarity filter to deck editor 2016-05-31 03:33:56 -04:00
Gavin Bisesi
4ffec331dc Merge pull request #1995 from tooomm/tx_logo
new tx logo
2016-05-28 12:27:38 -04:00
tooomm
dff5d89beb new tx logo
overall redesign of the page and their logo and colors
see https://www.transifex.com/blog/2016/new-transifex/
2016-05-28 17:28:23 +02:00
ctrlaltca
cf3e172d25 Merge pull request #1981 from MarkyMarkMcDonald/feature/create-token-dialog-uses-name-as-search
Create token dialog uses name as search
2016-05-17 21:49:49 +02:00
ctrlaltca
575376403f Merge pull request #1985 from ctrlaltca/p_1405
Use QCommandLineParser instead of by-hand parsing.
2016-05-16 22:09:22 +02:00
Gavin Bisesi
089acfd84a Use QCommandLineParser instead of by-hand parsing.
This will be more flexible for future CLI options
2016-05-16 22:07:29 +02:00
ctrlaltca
36470c5061 Merge pull request #1979 from ctrlaltca/make_qt5_great_again
Drop Qt4 and other dependencies
2016-05-16 21:48:24 +02:00
Gavin Bisesi
fffc3e7e00 Merge pull request #1982 from Cockatrice/mention-bot-config
Update mention-bot config to remove comments
2016-05-12 10:14:46 -04:00
Gavin Bisesi
114537445d Update mention-bot config to remove comments
It doesn't seem to be respecting the `userBlacklist` field, judging by https://github.com/Cockatrice/Cockatrice/pull/1981#issuecomment-218639352

Ref https://github.com/facebook/mention-bot/issues/117
2016-05-12 10:12:22 -04:00
Mark McDonald
8dd8b434b2 Make "create token" dialog's card name a filter
* There is a circular update loop I had to cut off where the name field
  updates the filter and then the currentRowChanged signal is firing without a row.

* I chose to make a private method to show intent instead of relying on
  other QLineEdit methods (textEdited) that don't fire signals.

* Some other shenanigans may be at hand that are causing this
  workaround, but my familiarity with Qt is pretty low.
2016-05-11 21:42:52 -04:00
Mark McDonald
7bc14b594d Include card name criteria when filtering token database model. 2016-05-11 21:42:52 -04:00
Mark McDonald
d12c86d89c Separate search's card name matching out from token filter check
* Trying to eventually reuse card name filtering in "create token"
  dialog
2016-05-11 21:42:52 -04:00
Fabio Bas
bb5292aa8d Drop Qt4, libgcrypt, qtmobility dependencies 2016-05-11 12:45:58 +02:00
Zach
e3fb308ea1 Merge pull request #1974 from ZeldaZach/fix_updater
fix updater from bintray api issue
2016-05-08 15:08:50 -04:00
Zach H
0163d7af99 fix if/else 2016-05-08 03:35:18 -04:00
Zach H
449982553a remove qt4 check, not needed 2016-05-07 21:51:37 -04:00
Zach H
d46cdd8044 fix updater from bintray api issue 2016-05-07 21:28:45 -04:00
ctrlaltca
2ab320923f Merge pull request #1970 from ctrlaltca/translationz
Updated translations
2016-05-06 13:19:43 +02:00
Fabio Bas
01e467fa98 Updated translations 2016-05-06 13:17:20 +02:00
Zach
7d0d0f4ea9 Merge pull request #1969 from tooomm/patch-3
remove numbers from the dice roll translatable strings
2016-05-05 02:10:20 -04:00
tooomm
a42ef63ec4 removed bracket leftovers 2016-05-04 23:41:09 +02:00
tooomm
a93bef1de5 fix #1833
remove numbers from the dice roll translatable strings
2016-05-04 23:21:52 +02:00
Gavin Bisesi
ff1091ac02 Merge pull request #1962 from Cockatrice/mention-bot-config
Create .mention-bot
2016-04-27 14:50:49 -04:00
Gavin Bisesi
a4359244bc Create .mention-bot
Don't tag brukie for code review
2016-04-27 14:48:40 -04:00
ctrlaltca
c213b67fc4 Merge pull request #1959 from ctrlaltca/translations
Update translations
2016-04-25 18:47:08 +02:00
Fabio Bas
af3b4ded22 Update translations 2016-04-25 18:45:24 +02:00
ctrlaltca
6bebbf284f Merge pull request #1955 from leematos/gender-neutral
Make client gender neutral
2016-04-25 17:18:25 +02:00
Lee Matos
c01d526161 make client gender neutral 2016-04-21 03:44:39 -04:00
Zach
2e3966afce Merge pull request #1949 from tooomm/patch-3
changed issue link + new user explanation
2016-04-16 19:59:15 -04:00
tooomm
5b4a774725 changed issue link + new user explanation 2016-04-16 10:40:57 +02:00
Zach
11dfee404d Merge pull request #1948 from ctrlaltca/deb_svg 2016-04-15 12:39:16 -04:00
Fabio Bas
a92b2ba600 CMake: add Qt-Svg to dependencies 2016-04-15 17:56:04 +02:00
Zach
d75d69400f Merge pull request #1944 from ctrlaltca/fix_1942 2016-04-14 15:10:52 -04:00
Fabio Bas
a340d25077 Fix #1942 2016-04-14 14:36:46 +02:00
ctrlaltca
768a1c5fb4 Merge pull request #1939 from ctrlaltca/fix_appveyor
Appveyor: stick with a known working nsis version
2016-04-12 23:08:49 +02:00
Fabio Bas
993cbf5ae9 Appveyor: stick with a known working nsis version 2016-04-12 22:05:30 +02:00
ctrlaltca
6f84f921f3 Merge pull request #1933 from tooomm/patch-3
docker - tweaks and link to wiki
2016-04-11 19:46:49 +02:00
tooomm
44d34673f4 docker - tweaks and link to wiki
added paragraphs for better readability
link to wiki on how to use docker

(also reordered the running part, call it alphabetically or most important part on top... both apply :P )
2016-04-11 19:38:45 +02:00
ctrlaltca
03af9afe17 Merge pull request #1930 from ctrlaltca/fix_1929
Fix calculation of card info popup size
2016-04-11 19:22:20 +02:00
ctrlaltca
cb29e0a057 Merge pull request #1931 from ctrlaltca/docker
Updated Dockerfile and doc
2016-04-11 19:04:06 +02:00
Fabio Bas
a72f9af984 Updated Dockerfile and doc 2016-04-11 18:51:44 +02:00
Fabio Bas
14d731da98 fix calculation of card info popup size 2016-04-11 17:07:07 +02:00
ctrlaltca
4f30b5cd31 Merge pull request #1921 from ctrlaltca/number
Implemented !setnumber!
2016-04-11 15:16:25 +02:00
ctrlaltca
73da10e485 Merge pull request #1919 from ctrlaltca/fix_1918
Fix english language in options
2016-04-11 15:16:02 +02:00
Gavin Bisesi
b4d572158d Merge pull request #1926 from tooomm/issue_template
Update ISSUE_TEMPLATE.md
2016-04-09 21:56:36 -04:00
tooomm
963e5d7f33 Update ISSUE_TEMPLATE.md
see https://github.com/Cockatrice/Cockatrice/pull/1914
2016-04-09 20:54:51 +02:00
Fabio Bas
8c17e2d12a Implemented !setnumber!
fix #1741
2016-04-08 22:22:22 +02:00
ctrlaltca
8d67c75028 Merge pull request #1920 from ctrlaltca/fix_1915
Fix card mention in chat
2016-04-08 21:54:22 +02:00
Fabio Bas
c7061523e6 fix #1915 2016-04-08 19:48:29 +02:00
Fabio Bas
2e7298d064 Fix english language in options 2016-04-08 19:34:28 +02:00
ctrlaltca
948a5c62ef Merge pull request #1910 from ctrlaltca/translations
Translations update
2016-04-05 19:36:24 +02:00
Fabio Bas
e9736d298e Translations update 2016-04-05 19:35:24 +02:00
ctrlaltca
4691f3e2c5 Merge pull request #1906 from ctrlaltca/fix_1903
Token dialog: disable progressive loading
2016-04-05 08:30:32 +02:00
ctrlaltca
2b138cce93 Merge pull request #1900 from ctrlaltca/dbview
Save deck editor's database view columns state
2016-04-05 08:29:46 +02:00
ctrlaltca
ef62261e43 Merge pull request #1901 from ctrlaltca/carddb_loading
CardDb: be permissive when loading xmls
2016-04-05 08:29:06 +02:00
Fabio Bas
2a3701b036 fix #1903 2016-04-03 18:33:10 +02:00
Fabio Bas
ce56e5f1a4 CardDb: be permissive when loading xmls 2016-04-03 11:15:16 +02:00
Fabio Bas
58f85e7ebd Save deck editor's database view columns state 2016-04-02 09:38:34 +02:00
ctrlaltca
f217551f5f Merge pull request #1877 from Psithief/patch-2
Prevent PTColumn from being the last column shown.
2016-03-30 22:55:49 +02:00
ctrlaltca
55f3e9314b Merge pull request #1859 from ctrlaltca/carddb
Rework some parts of the card database
2016-03-30 22:55:36 +02:00
ctrlaltca
830a4c2f56 Merge pull request #1894 from woogerboy21/clientid_update
Updated ClientID Functionality
2016-03-30 22:55:17 +02:00
woogerboy21
44123b9b0b Untabify
Yay!  Figured out how to do this in VS2015!
2016-03-30 15:30:58 -04:00
woogerboy21
506ad91b03 Privatized Function
Moved the updated hashing function out of the settingscache and into the
remoteclient and privatized the function for proper use.
2016-03-29 22:00:42 -04:00
woogerboy21
ee849f6379 Updated ClientID Functionality
ClientID is now generated on startup and stored in settings cache.  Then
upon connect there is a new SrvClientID generated from the ClientID +
servername being connected to
2016-03-29 17:05:25 -04:00
Fabio Bas
e94f59d7c2 Crash fix 2016-03-22 17:07:45 +01:00
Gavin Bisesi
3c58003a3d Merge pull request #1880 from leematos/patch-1
Remove "Ghost" Toolbar
2016-03-22 08:14:36 -04:00
Lee Matos
9f3b50086d Remove "Ghost" Toolbar
I'm working on a theme and realized we have a toolbar that used to be used for price, which we no longer display. I removed the code (and the unused price code action) as we weren't using either.
2016-03-21 21:27:38 -04:00
Fabio Bas
2d2958e931 cmake: Enable c++11 for all targets 2016-03-21 13:09:56 +01:00
Fabio Bas
a55b3784eb cmake: Enable c++11 for all targets 2016-03-21 11:42:38 +01:00
Fabio Bas
18993b397b First test for card database: loading and clear 2016-03-21 11:08:14 +01:00
Psithief
ba3a9f83bc Prevent PTColumn from being the last column shown.
P/T column is really narrow. It should go before Card Type, so Card Type can expand into the remaining space.

Improves #1671, assuming I got this correct.

Untested!
2016-03-19 19:55:57 +08:00
Fabio Bas
df393638ed Small Fix 2016-03-18 21:18:48 +01:00
ctrlaltca
535e19f8b8 Merge pull request #1866 from ZeldaZach/fix_1860
Prevent trayIcon Null Crash
2016-03-18 21:03:54 +01:00
Zach H
27969b6752 prevent null crash 2016-03-18 14:25:29 -04:00
ctrlaltca
41494b49dd Merge pull request #1873 from ctrlaltca/serva_emailz
Servatrice: Split requireemail into requireemail and requireemailaction
2016-03-18 18:59:17 +01:00
Fabio Bas
68e2fb912f Servatrice: Split requireemail into requireemail and requireemailactivation 2016-03-17 16:22:42 +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
ctrlaltca
cbea43267e Merge pull request #1850 from ctrlaltca/fix_win_mysql
Fix mysql plugin deploy on windows
2016-03-08 16:12:22 +01:00
Fabio Bas
62cb89d224 Fix mysql plugin deploy on windows 2016-03-08 12:54:04 +01:00
woogerboy21
0b8f52e084 Merge pull request #1836 from Cockatrice/mysql57update
Added MySQL 5.7 lib path to servatrice CMAKE
2016-02-28 17:48:09 -05:00
woogerboy21
3ba3f1e2a7 Added MySQL 5.7 lib path to servatrice CMAKE
Added default search path for most recent version of MySQL
2016-02-27 15:13:59 -05:00
ctrlaltca
49c22f3810 Merge pull request #1834 from ctrlaltca/fix_server
Warning/ban notifications: null check userInfo pointer before dereferencing it
2016-02-25 00:47:13 +01:00
Fabio Bas
b462f95343 Warning/ban notifications: null check userInfo pointer before dereferencing it 2016-02-24 23:47:35 +01:00
ctrlaltca
f31a89ebbb Merge pull request #1828 from ctrlaltca/fix_mysqlconnector
Fix libmysqlclient detection on 64-bit linux
2016-02-24 21:38:37 +01:00
ctrlaltca
b2c1ae264b Merge pull request #1832 from tooomm/restructure
move sounds+themes folder inside cockatrice
2016-02-24 21:38:09 +01:00
tooomm
754e666eaa updated to new folder locations
- `sounds` and `themes` moved into `cockatrice/`

moved subdirectory reference
`/cmakelists` to `/cockatrice/cmakelists`
2016-02-24 15:41:04 +01:00
Gavin Bisesi
bc79d9e2f8 Merge pull request #1796 from zebington/feat/custom-set-import
Add "Import custom set" function
2016-02-24 09:12:31 -05:00
Fabio Bas
ac06544849 Added 64bit libraries each path for libmysqlclient 2016-02-23 08:56:47 +01:00
ctrlaltca
66634c9b3d Merge pull request #1808 from ctrlaltca/innodb
Move schema to Innodb and add FKs
2016-02-22 16:39:03 +01:00
woogerboy21
108ec145b7 Merge pull request #1604 from woogerboy21/mod_notify_onbanwarn
Re-Implemented the moderator notification upon user warning/ban
2016-02-22 09:02:39 -05:00
woogerboy21
4e78d6ec95 Merge remote-tracking branch 'refs/remotes/origin/master' into mod_notify_onbanwarn 2016-02-21 16:36:20 -05:00
Gavin Bisesi
bf42319296 Merge pull request #1820 from tooomm/patch-2
add template for issues
2016-02-20 07:45:08 -05:00
Gavin Bisesi
4f1d3c3269 Merge pull request #1821 from tooomm/patch-3
todo file - removed usermanual part
2016-02-20 07:44:26 -05:00
tooomm
e3064727c3 add template for issues
https://github.com/blog/2111-issue-and-pull-request-templates

move to .github folder + prompt for date
2016-02-18 19:23:35 +01:00
tooomm
2418b8017d moved usermanual part to wiki 2016-02-18 18:32:17 +01:00
ctrlaltca
2d43ab9f50 Merge pull request #1819 from ctrlaltca/fix_xp
Cmake: build Windows Xp compatible packages
2016-02-17 21:25:46 +01:00
Fabio Bas
aac2d09f48 Move schema to Innodb and add FKs
Fix #1805
2016-02-17 21:24:28 +01:00
Fabio Bas
195ab9a150 Try to build windowsxp compatible packages 2016-02-17 15:08:56 +01:00
Zach
5b22187a3d Merge pull request #1794 from zebington/master
Fixes for create game dialogue.
2016-02-16 17:07:28 -05:00
Zach
36f1536b09 Merge pull request #1807 from ctrlaltca/game_sizes
Correctly save and retrieve docks size in game tabs
2016-02-14 20:46:29 -05:00
Fabio Bas
a8c723326d Game tab: use short title for undocked wdgets
fix #1777
2016-02-12 14:49:37 +01:00
Fabio Bas
ae8296a50e Game tab: reset docks sizes on "reset layout" 2016-02-11 18:29:50 +01:00
woogerboy21
93d4f78715 Merge pull request #1803 from Cockatrice/replay-maint-update
Update replay maintenance script
2016-02-10 15:16:41 -05:00
woogerboy21
8f819dfa66 Update replay maintenance script
Update the replay maintenance script to allow for rolling replay maintenance along with cleanup of the two associated db tables (replay access and games).  This updated script will now allow players to see the past X days (8 by default) of replays rather than loosing all replays from the point in the the script gets run.
2016-02-10 10:53:18 -05:00
Ira Aspen
aa658f95f6 Gave error dlg a description of the error for the user. 2016-02-09 03:10:57 +00:00
Ira Aspen
d078cf52c9 Removed unnecessary confirmClose() call. 2016-02-09 02:57:23 +00:00
Ira Aspen
96fbad1f0c Moved get next set index code to own function 2016-02-09 02:55:52 +00:00
Ira Aspen
829f84fe50 Moved from using hex QT version checks to QT_VERSION_CHECK(). 2016-02-09 01:56:24 +00:00
Ira Aspen
0ef2b48902 Refactored DlgAddSet class/functions to DlgAddSetResult 2016-02-09 01:52:09 +00:00
Ira Aspen
5a975831d4 Renamed "dlg_add_set.*" to "dlg_add_set_result.*" and updated references. 2016-02-09 01:40:21 +00:00
Fabio Bas
058b913455 Game: save and restore dock sizes 2016-02-07 21:58:51 +01:00
Zach
cddb45085c Merge pull request #1799 from tooomm/patch-2
shortcut tab adjustments (settings)
2016-02-07 01:40:08 -05:00
Ira Aspen
9d3c4f20a1 Changed strings referencing a set to say sets/cards. 2016-02-07 01:41:35 +00:00
tooomm
802ccd7f14 shortcut tabs adjustments
- typo fix
- improved description of some shortcuts
2016-02-06 19:29:57 +01:00
Ira Aspen
b5363f47ab Updated message. 2016-02-06 12:42:45 +00:00
Ira Aspen
927226633d Moved menu item decleration to work on all OSs. 2016-02-06 02:37:34 +00:00
Ira Aspen
de388a74bd Moved exec statement. 2016-02-06 02:32:04 +00:00
Ira Aspen
54a759497f Added confirmation dialogue when set added. 2016-02-06 02:29:09 +00:00
Ira Aspen
c914395236 Finished add set functionality. 2016-02-06 01:33:43 +00:00
Ira Aspen
2960cba12b Added a file picker to the add set menu item. 2016-02-05 21:09:24 +00:00
Ira Aspen
646c4b4197 Added functionless menu button for adding a set. 2016-02-05 20:32:40 +00:00
Ira Aspen
9846fb1d8e Made reseting the create game dialogue box only select 'Only regeistered users' if player is a registered user. 2016-02-05 19:32:27 +00:00
Ira Aspen
154da4452d Made create game box prevent only buddies can join being selected for unregistered users. 2016-02-05 19:29:19 +00:00
ctrlaltca
323fc06885 Merge pull request #1787 from ctrlaltca/speak_this
Some updated translations from transfix
2016-02-02 22:05:30 +01:00
Fabio Bas
50dde5dde1 Some updated translations from transfix 2016-02-02 22:04:49 +01:00
woogerboy21
54ebb6a508 Merge branch 'master' into mod_notify_onbanwarn 2016-01-31 18:43:24 -05:00
ctrlaltca
f35c047dee Merge pull request #1779 from ctrlaltca/translations
Updated translations
2016-01-29 00:31:19 +01:00
Fabio Bas
7c128f69b0 Updated translations 2016-01-29 00:30:54 +01:00
Gavin Bisesi
7de8e8a6a7 Merge pull request #1747 from tooomm/about_url
[WAIT] added webpage to about window
2016-01-28 18:02:37 -05:00
ctrlaltca
5dd20181fd Merge pull request #1753 from ctrlaltca/pr_1544
Re-Dockified the game & replay review areas
2016-01-28 22:44:32 +01:00
ctrlaltca
14e94f1f8b Merge pull request #1767 from Fizztastic/fix_1764
Sounds on buddy login & logout.
2016-01-28 22:33:10 +01:00
ctrlaltca
5fcd8a73ff Merge pull request #1776 from ctrlaltca/button_fix
Updater: Disable download button when download starts
2016-01-28 22:27:49 +01:00
Fabio Bas
ee42d547bf Disable downlod button when download starts 2016-01-28 22:27:14 +01:00
ctrlaltca
5577d618bd Merge pull request #1727 from TMiguelT/target
Client update implementation
2016-01-28 22:25:54 +01:00
ctrlaltca
b6f3630cbf Merge pull request #1774 from ctrlaltca/fix_1773
Remove unneeded debug in servatrice
2016-01-24 23:03:08 +01:00
Fabio Bas
d79d65797f Remove unneeded debug 2016-01-24 23:02:25 +01:00
ctrlaltca
7ec3968c02 Merge pull request #1770 from ctrlaltca/fix_pixmaps
Fix pixmap usage in pictureloader
2016-01-23 18:23:55 +01:00
Fabio Bas
133693d9ce Fix pixmap usage in pictureloader
fix #1765
2016-01-23 11:00:10 +01:00
Jeff
9767b1f69d Fix #1764
Add Sounds on buddy login & logout.
Add Files: buddy_join.wav; buddy_leave.wav
2016-01-22 15:03:01 -05:00
Gavin Bisesi
d2e731bb2b Merge pull request #1766 from tooomm/patch-2
new description (match io page)
2016-01-20 21:05:28 -05:00
Michael Milton
66fda086c3 Client update implementation 2016-01-20 22:26:17 +01:00
tooomm
f0be9f7f9b Update README.md
match new description wording from io page
2016-01-19 17:01:42 +01:00
woogerboy21
00afe74a3b Merge remote-tracking branch 'refs/remotes/Cockatrice/master' into mod_notify_onbanwarn 2016-01-16 12:50:19 -05:00
woogerboy21
f57e0454bb Dockified the game & replay review areas 2016-01-16 00:54:14 +01:00
Zach
36c3536e0c Merge pull request #1721 from ctrlaltca/speedup
Misc speedups in card database
2016-01-15 18:43:01 -05:00
ctrlaltca
2789e0df19 Merge pull request #1756 from tooomm/patch-2
reworked parts of readme
2016-01-16 00:11:49 +01:00
Zach
5146db7a17 Merge pull request #1763 from ctrlaltca/oracle_redirects
Oracle: follow redirects
2016-01-15 17:10:25 -05:00
Fabio Bas
bacb289eff Oracle: follow redirects 2016-01-15 16:07:26 +01:00
ctrlaltca
f7f9827b91 Merge pull request #1761 from ZeldaZach/oracle_secure
mtgjson now secure
2016-01-15 09:27:57 +01:00
ctrlaltca
0318ae8087 Merge pull request #1758 from ctrlaltca/replay_overflow
fix replay progress bar
2016-01-15 09:01:32 +01:00
Zach H
ad0334e734 mtgjson now secure 2016-01-14 17:32:25 -05:00
Gavin Bisesi
fc59a33b84 Merge pull request #1760 from Cockatrice/proto-syntax-marker-removal
Remove 'syntax = proto2' from .proto files.
2016-01-14 15:20:00 -05:00
tooomm
e337775d72 Update README.md
- added small 'new user guide' at top
- reworked 'downloads' part
- changed layout of 'translation' part
- removed server list in favor of gh pages link (server list can be found there)
- switched to https everywhere (zlib not supported yet --> added hint)
2016-01-14 16:59:43 +01:00
Gavin Bisesi
0734b81e6e Remove 'syntax = proto2' from .proto files.
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).
2016-01-14 08:09:40 -05:00
Fabio Bas
3605cc55b7 fix replay progress bar 2016-01-13 00:17:02 +01:00
Gavin Bisesi
5350302969 Merge pull request #1755 from tooomm/patch-2
Updated ToC with 'Downloads'
2016-01-11 08:27:57 -05:00
tooomm
c415d4d70e Updated ToC with 'Downloads' 2016-01-11 00:17:08 +01:00
tooomm
953b183dab added url to about
added gh pages url
2016-01-09 22:53:54 +01:00
woogerboy21
3ed3919349 Merge branch 'master' into mod_notify_onbanwarn 2015-12-30 12:58:29 -05:00
Zach
924bbb2245 Merge pull request #1736 from ZeldaZach/token_loc
Token coordinates
2015-12-30 11:54:59 -05:00
Zach H
e0a25e74ac fix merge issues 2015-12-30 11:54:30 -05:00
Zach H
f568a4e865 todo 2015-12-30 11:51:53 -05:00
Zach
9efa9cda71 Merge pull request #1734 from ZeldaZach/tokenpt
Token PT shown in create related dialog
2015-12-30 11:44:10 -05:00
Zach H
703ff7905c token coordinates 2015-12-29 23:43:03 -05:00
Zach H
da0e3292d3 Token PT shown in create related dialog 2015-12-29 18:28:41 -05:00
Gavin Bisesi
2bf998b7d3 Merge pull request #1728 from Cockatrice/leematos-hidpi-support
Enable HiDpiPixmaps for Qt5
2015-12-28 22:12:12 -05:00
Lee Matos
8a6d63265f Enable HiDpiPixmaps for Qt5 2015-12-28 22:03:38 -05:00
Fabio Bas
fddcbb8296 Lazy loading of card database view => faster startup times 2015-12-28 15:26:10 +01:00
ctrlaltca
c917a6c272 Merge pull request #1722 from ctrlaltca/rev-related
Implement reverse-related tag for cards
2015-12-27 18:44:05 +01:00
Zach
c4508cd055 Merge pull request #1723 from ZeldaZach/fix_1710
Coin Flips
2015-12-27 12:38:06 -05:00
Zach H
137d7328b5 coin flip
remove male/female as it's same

male/female fixes

translate
2015-12-27 12:34:11 -05:00
ctrlaltca
04797eaf48 Merge pull request #1724 from ctrlaltca/windows_merda
Fix win32 package creation
2015-12-27 18:04:10 +01:00
Fabio Bas
49b22b7d2f Try to fix package creation 2015-12-27 16:03:32 +01:00
Fabio Bas
4b1c59424e Implement reverse-related tag for cards 2015-12-26 19:57:20 +01:00
ctrlaltca
f03051b6cf Merge pull request #1642 from ctrlaltca/dont_merge_this_yet
Split PictureLoader out of CardDatabase
2015-12-26 17:13:21 +01:00
Fabio Bas
e721280bc0 Implemented proposed changes 2015-12-26 16:40:17 +01:00
Fabio Bas
4d7795ca3a Split pictuloader out of carddatabase 2015-12-26 16:40:17 +01:00
ctrlaltca
aebc18fc3f Merge pull request #1717 from ctrlaltca/fix_1716
Possibly fix server crash #1716
2015-12-26 16:24:10 +01:00
ctrlaltca
4e17014ebf Merge pull request #1714 from ctrlaltca/fix_1598
Possible fix for server crash
2015-12-20 14:45:06 +01:00
Fabio Bas
81cad7cefd Possibly fix #1716 2015-12-20 14:38:27 +01:00
ctrlaltca
0e1c26a071 Merge pull request #1715 from ctrlaltca/pr_1668
Add gear icon to settings menu entry
2015-12-19 14:21:32 +01:00
Fabio Bas
696ae7e85f Add gear icon to settings menu entry 2015-12-19 11:48:54 +01:00
Fabio Bas
25d77fb64a Possibly fix #1598 2015-12-15 16:58:44 +01:00
ctrlaltca
7e6972a358 Merge pull request #1713 from ctrlaltca/translations
Small typos + reextracted strings
2015-12-15 16:32:16 +01:00
Fabio Bas
5093ea4170 Small typos + reextracted strings 2015-12-15 16:31:58 +01:00
ctrlaltca
f5749886ee Merge pull request #1712 from ctrlaltca/translations
Extracted new translation strings
2015-12-15 15:59:39 +01:00
Fabio Bas
2712dd4248 Extracted new translation strings 2015-12-15 15:59:20 +01:00
ctrlaltca
ade0a4b7e2 Merge pull request #1708 from ctrlaltca/appveyor_deploy
Deploy from Appveyor to Bintray
2015-12-14 16:29:36 +01:00
Fabio Bas
5636b43e67 Test appveyor deploy 2015-12-14 15:06:16 +01:00
ctrlaltca
db8548521c Merge pull request #1707 from ctrlaltca/fix_1703
Add correct encrypted api key to deploy to bintray
2015-12-14 09:53:21 +01:00
Fabio Bas
1a6a1171e6 Add bintray badges 2015-12-14 09:47:03 +01:00
Fabio Bas
a637ff7cfa Add correct encrypted api key to deploy to bintray 2015-12-14 09:32:31 +01:00
ctrlaltca
0e229ad1fd Merge pull request #1705 from ctrlaltca/fix_1683
Add .txt to the common deck file types
2015-12-13 12:10:15 +01:00
Fabio Bas
ed4149fa7b Add .txt to the common deck file types
fix #1683
2015-12-13 12:00:39 +01:00
ctrlaltca
ea7db15597 Merge pull request #1704 from ctrlaltca/fix_1670
Whoops: Fix db schema number
2015-12-13 11:54:07 +01:00
Fabio Bas
53191fcb99 Whoops: Fix db schema number 2015-12-13 11:53:30 +01:00
ctrlaltca
ce6c97bcef Merge pull request #1670 from jedinerd/sql_fix_for_token_disabled_option
Having token set to not null breaks the use of requireemail=false
2015-12-13 11:46:23 +01:00
ctrlaltca
a17c300a41 Merge pull request #1688 from Cockatrice/check-schema-ver
Add script to validate schema changes.
2015-12-13 11:04:02 +01:00
Fabio Bas
93566840b9 install bc package on linux for the check_schema_version script 2015-12-13 10:48:45 +01:00
Gavin Bisesi
3aac8930cc Add script to validate schema changes.
Basic assertions about version updates
2015-12-13 10:47:39 +01:00
ctrlaltca
586d580864 Merge pull request #1650 from ctrlaltca/test_travis_deploy
Travis updates
2015-12-13 10:39:10 +01:00
ctrlaltca
8167448284 Merge pull request #1654 from ctrlaltca/facedown
Server-size fixes for card stacking
2015-12-13 10:37:47 +01:00
ctrlaltca
0c137e8a10 Merge pull request #1662 from BrandonGriffin/SetFocusOnDescriptionWhenLoadingGameDialog
Added set focus to description anytime a create dialog is opened
2015-12-12 18:17:12 +01:00
ctrlaltca
de6235f69c Merge pull request #1698 from ctrlaltca/fix_1694
Improved login error message
2015-12-12 09:15:01 +01:00
ctrlaltca
a07b72a031 Merge pull request #1699 from ctrlaltca/fix_1687
Fix column widths in rooms list
2015-12-12 09:14:51 +01:00
ctrlaltca
7e63f44c04 Merge pull request #1700 from ctrlaltca/fix_1675
Avoid crash on dereferencing null pointer
2015-12-12 09:14:24 +01:00
Fabio Bas
deec7cdc14 Avoid crash on dereferencing null pointer 2015-12-11 19:32:08 +01:00
Fabio Bas
803589264d Fix column widths in rooms list 2015-12-11 18:51:40 +01:00
Fabio Bas
beecc0f970 Improved login error message 2015-12-11 18:42:29 +01:00
ctrlaltca
0286cd3df0 Merge pull request #1697 from ctrlaltca/fix_1695
Fix velvet marble theme
2015-12-11 17:55:13 +01:00
Fabio Bas
91bb2b2954 Fix velvet marble theme
fix #1695
2015-12-11 16:34:46 +01:00
Gavin Bisesi
a6ff54ae0e Merge pull request #1682 from tooomm/patch-2
link renaming
2015-11-22 10:01:05 -05:00
tooomm
bc44f8ce2a link renaming
-`Linking FAQ` --> `How to set a custom picture url`
-updated define accordingly
2015-11-17 16:04:29 +01:00
Michael Hogg
d9c0c97ae7 Updating schema version to 12 and adding migration script. 2015-11-08 03:05:12 -08:00
Michael Hogg
9963e9dfe7 Having token set to not null breaks the use of requireemail=false in the servatrice.ini as token will be null in this use case. 2015-11-07 12:57:58 -08:00
Brandon Griffin
813a0c2070 Added set focus to description anytime a create dialong is opened 2015-10-27 08:58:29 -04:00
Zach
77b9aa7c36 Merge pull request #1658 from BrandonGriffin/PlayToStackDefault
Changed the default setting to play cards to the stack
2015-10-24 12:01:23 -04:00
Brandon Griffin
64c15d1fdc Changed the default setting to play cards to the stack 2015-10-23 20:11:13 -04:00
Fabio Bas
ea5666c443 fix #1652 ; fix #467 2015-10-20 19:29:04 +02:00
Fabio Bas
fc8aa32d7f Bintray package updates 2015-10-19 22:09:24 +02:00
Fabio Bas
8001b05ce7 Travis - deploy to bintray 2015-10-18 16:58:07 +02:00
ctrlaltca
613f712974 Merge pull request #1646 from ctrlaltca/debian_package
CPack: Debian package
2015-10-17 09:33:06 +02:00
ctrlaltca
75eb779826 Merge pull request #1637 from ctrlaltca/cmdjoin_handler
Handle more Command_JoinRoom return values
2015-10-16 11:48:40 +02:00
Fabio Bas
23e84273ed If the user request to join a room and we are already in, just focus the correct tab
Also, handle all the Command_JoinRoom return values
2015-10-15 19:17:02 +02:00
Fabio Bas
8f674bd18c Updated to qt 5.4.2 2015-10-14 18:45:10 +02:00
Fabio Bas
4dba476ab6 modernize bash dialect 2015-10-14 15:45:54 +02:00
Fabio Bas
bab4a51ebb CPack: Debian package 2015-10-13 22:16:00 +02:00
ctrlaltca
0c67cb6cb3 Merge pull request #1641 from ctrlaltca/pr_1600
CMake: Add "test" target
2015-10-09 18:53:01 +02:00
Fabio Bas
5fed8d04d6 Updated docs 2015-10-09 18:51:30 +02:00
Fabio Bas
b63475829b Revert option from WITH_TESTS to TEST 2015-10-09 15:47:34 +02:00
Fabio Bas
7fe60279de Fix PR #1600 2015-10-09 14:59:42 +02:00
Gavin Bisesi
3ebe42c400 Add dummy googletest
Uses the built in cmake -Dtest=ON

It should download googletest on the fly if needed.

Adds a new make target, `make test`

Ref #167
2015-10-09 14:58:46 +02:00
woogerboy21
cd02df78a1 Merge pull request #1627 from ctrlaltca/no_jom_no_cry
Fix appveyor builds
2015-10-05 15:13:43 -04:00
Fabio Bas
784148e158 try fixing appveyor
dropping jom and using plain nmake
2015-10-02 18:14:54 +02:00
ctrlaltca
43262b294d Merge pull request #1620 from ctrlaltca/fix_rpath
Fix qt libraries bundling on osx
2015-10-02 17:54:10 +02:00
ctrlaltca
b0e9e0fb3a Merge pull request #1603 from ctrlaltca/fix_audio
Fix volume control
2015-10-02 14:46:30 +02:00
Fabio Bas
74c58cc2b0 fix qt libraries bundling on osx
fix #1547
2015-10-01 23:35:54 +02:00
Zach
d09b75a3c0 Merge pull request #1608 from ctrlaltca/travis_package
Travis changes for package creation
2015-10-01 14:32:24 -04:00
Zach
30531683f4 Merge pull request #1615 from Psithief/patch-1
Revert focus policy change
2015-10-01 14:17:06 -04:00
Zach
56f8ddc1f6 Merge pull request #1619 from tooomm/patch-2
added appveyor badge to README
2015-10-01 14:11:33 -04:00
tooomm
ab2a6867b5 added appveyor badge
badge for master branch
2015-10-01 18:37:11 +02:00
ctrlaltca
9d4882415a Merge pull request #1618 from ctrlaltca/fix_artifacts
Appveyor: fix artifact names
2015-10-01 15:08:45 +02:00
Fabio Bas
3e9610a084 Fix artifact names 2015-10-01 10:14:50 +02:00
Psithief
ca9bfc9ff2 Revert focus policy change in tab_game
Fixes #1529.

Completely untested, because I don't think this could possibly interfere with anything. It's a straight revert.
2015-10-01 12:00:30 +08:00
ctrlaltca
6a869906d9 Merge pull request #1589 from ctrlaltca/appveyor
Added appveyor script
2015-09-30 09:46:35 +02:00
Fabio Bas
35815a894a Make travis build a package 2015-09-29 23:38:30 +02:00
woogerboy21
acbe2b0b3c Re-Implemented the moderator notification upon user warning/ban 2015-09-28 18:21:39 -04:00
Fabio Bas
a9f2cd73de Fix volume control
fix #1528
2015-09-28 12:24:22 +02:00
Fabio Bas
8e348455f9 Added appveyor script 2015-09-27 10:36:53 +02:00
woogerboy21
9c4bd8ebed Merge pull request #1593 from woogerboy21/remove_mod_notify
Crash Fix: Removed mod notification code that causes crashes
2015-09-26 23:36:50 -04:00
woogerboy21
7d7151135e Removed mod notification code that causes crashes 2015-09-26 23:19:49 -04:00
woogerboy21
c1663d578a Merge pull request #1588 from Cockatrice/servatrice.sql_warntable_syntaxfix
Corrected mod_name column syntax in warnings table
2015-09-25 18:40:09 -04:00
woogerboy21
7a4cabaf67 Corrected mod_name column syntax in warnings table
It was missing a comma at the end of the line.
2015-09-25 18:19:44 -04:00
woogerboy21
291b262b64 Merge pull request #1569 from woogerboy21/correct_warn_schema
Updated cockatrice_warnings table to use id column as primary key
2015-09-25 08:09:56 -04:00
woogerboy21
b65882f7ce Updated cockatrice_warnings table to use id column as primary key 2015-09-25 07:35:23 -04:00
Zach
d55e44ea60 Merge pull request #1558 from Cockatrice/revert-1556-carddatabase_changes
Revert "Reimplemented PictureLoader as a singleton"
2015-09-23 03:17:49 -04:00
Zach
d5adec53a2 Revert "Reimplemented PictureLoader as a singleton" 2015-09-23 03:17:33 -04:00
Zach
064c89ba5c Merge pull request #1556 from ctrlaltca/carddatabase_changes
Reimplemented PictureLoader as a singleton
2015-09-23 01:21:37 -04:00
Zach
ad55c3e198 Merge pull request #1541 from woogerboy21/log_tab
Added logs tab to allow moderators the ability to review log history
2015-09-23 01:01:20 -04:00
woogerboy21
62ffcde6bd Added logs tab to allow moderators the ability to review log history/details 2015-09-23 00:50:01 -04:00
Zach
e68b8b314a Merge pull request #1522 from woogerboy21/offical_warnings
Added official warning messages moderators can use to inform users
2015-09-22 23:29:12 -04:00
woogerboy21
6ad2a59367 Added official warning messages moderators can use to inform users 2015-09-22 22:27:46 -04:00
Fabio Bas
e0383af6dd workaround "Signals are protected in qt4" 2015-09-22 23:57:39 +02:00
Fabio Bas
ac16602f08 Fix crash on null pointer dereference 2015-09-22 23:46:41 +02:00
Fabio Bas
f6c7f3355f Reimplemented PictureLoader as a singleton
* Removed remaining picture handling from card database and cardinfo
 * removed the “noCard object” hack
2015-09-22 23:09:53 +02:00
Zach
3f70513096 Merge pull request #1555 from ctrlaltca/cards_crash
Fix crash on loading invalid cards.xml
2015-09-22 16:19:12 -04:00
Zach
8125358052 Merge pull request #1523 from marcofernandezheras/Restore-Shortcuts
Restore shortcuts
2015-09-22 16:00:49 -04:00
Fabio Bas
7a4bf9a313 Fix crash on loading invalid cards.xml
Additionally, move the custom database load after the LoadStatus check,
so that they don't bring up the “fix your card database path” settings
dialog
2015-09-22 21:56:02 +02:00
Zach
aacbe93d04 Merge pull request #1540 from ctrlaltca/remove_unused_sounds
Removed unused sound names
2015-09-22 15:51:05 -04:00
Zach
b8732a54bb Merge pull request #1550 from Cockatrice/server_mess_i_pm
Fix #1542
2015-09-22 15:50:26 -04:00
woogerboy21
cd7b25f712 Fix #1542
This should fix #1542 (please test)
2015-09-22 01:19:31 -04:00
Fabio Bas
2df50f5766 Removed unused sound names 2015-09-20 12:08:55 +02:00
marco
599ef0ae62 Confirmation to clear/restore shortcuts 2015-09-20 00:21:07 +02:00
Zach
1409b97490 Merge pull request #1530 from ZeldaZach/fix_1527
Minors Fixes for #1527
2015-09-18 10:18:12 -04:00
Zach
1182ee191c Merge pull request #1516 from ctrlaltca/default_shortcuts
Changed problematic shortcuts
2015-09-18 10:05:24 -04:00
Zach H
ccc8ac4826 minor fixes 2015-09-18 09:56:32 -04:00
Fabio Bas
2a20b6028e Changed problematic shortcuts 2015-09-18 08:38:54 +02:00
Zach
ead6ab3ad6 Merge pull request #1527 from woogerboy21/ban_mod_notify
Moderator ban notifications + Server PM functionality
2015-09-17 22:53:07 -04:00
woogerboy21
b0693299c7 Added server private message functionality to allow server based PM notifications.
Ban based notification to other online moderators is the first form implemented by this PR.
2015-09-17 22:40:29 -04:00
Zach
afc425e6a5 Merge pull request #1524 from tooomm/Update-README.md
readme / added license badge + link
2015-09-16 08:49:38 -04:00
tooomm
0dc8fe9e73 added licence badge + link 2015-09-16 13:35:40 +02:00
marco
0ce38ea88e Reset & Clear all shortcuts
This closes #1517
2015-09-16 13:35:26 +02:00
marco
8eacd85d68 Link to wiki: how to set shortcuts 2015-09-16 12:30:32 +02:00
ctrlaltca
c7c84bca8f Merge pull request #1521 from tooomm/patch-2
remove debug code; fix #1520
2015-09-16 08:42:48 +02:00
Zach
04a96e96bb Merge pull request #1492 from tooomm/patch-1
shortcut text adjustments
2015-09-15 13:11:16 -04:00
tooomm
1bec6dc37a shortcut tabs adjustments
- `|` over `/` to make `P/T` better readable
- Game play --> Gameplay
- Player - Playing Area
2015-09-15 18:56:53 +02:00
tooomm
814553dae6 remove debug code
fixes #1520
2015-09-15 18:53:06 +02:00
Zach
385455e77c Merge pull request #1510 from woogerboy21/room_message_history
Added chat history to a room that is displayed on join
2015-09-15 12:10:37 -04:00
woogerboy21
87a64da1bc Added chat history to a room that is displayed on join.
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.
2015-09-14 17:54:04 -04:00
Zach
3412ce2f7d Merge pull request #1501 from marcofernandezheras/Fix-Shortcut-Detection
Fix shortcuts detection on settings & game
2015-09-14 16:02:45 -04:00
marco
4c6b543cbe Fix shortcuts detection on settings & game
Fix #1499, Fix #1493, Fix #1477
Fix typo
2015-09-14 16:56:51 +02:00
Zach
f97a7e8370 Merge pull request #1512 from ctrlaltca/sound_themes
sound themes
2015-09-13 15:37:00 -04:00
Fabio Bas
6257ea701e Revert "remove qtmobility from apt packages"
This reverts commit 669568b918.
2015-09-13 19:44:37 +02:00
Fabio Bas
a6bc709583 merged master 2015-09-13 19:39:42 +02:00
Fabio Bas
5aaae5279c revert to using QAudioOutput 2015-09-13 19:37:49 +02:00
Zach
f2864ce569 Merge pull request #1511 from ctrlaltca/theme_extensions
Themes: don't use hardcoded extensions on images
2015-09-13 13:26:12 -04:00
Fabio Bas
f78c01fa88 Avoid multiple sounds playing at the same time 2015-09-13 17:22:58 +02:00
Zach
59da62d240 Merge pull request #1502 from woogerboy21/fix_ban_crash
Fix server crash on banning
2015-09-13 01:12:29 -04:00
woogerboy21
46f78fcead Fix server crash on banning 2015-09-13 00:52:52 -04:00
Fabio Bas
85aa866e02 sound themes 2015-09-13 02:01:50 +02:00
Fabio Bas
28df389ea6 Fixed flags size: they're not squared 2015-09-13 00:53:11 +02:00
Fabio Bas
dfe9719637 Removed unused parameter 2015-09-13 00:26:28 +02:00
Fabio Bas
00e3e63f41 Themes: remove all hardcoded extensions 2015-09-13 00:14:36 +02:00
ctrlaltca
d5afd97ff4 Merge pull request #1509 from Fizztastic/1505_fix
Fix library, grave, exile crash on windows
2015-09-12 23:38:22 +02:00
Jeff
32df2c29ed Fix library, grave, exile crash on windows 2015-09-12 17:24:36 -04:00
Jeff
73677e16f6 Merge remote-tracking branch 'Cockatrice/master' into 1505_fix 2015-09-12 17:23:40 -04:00
Zach
226a8cc017 Merge pull request #1498 from ctrlaltca/sound_whatever
Reworked SoundEngine overhaul
2015-09-12 00:35:20 -04:00
Zach
4c9555bb59 Merge pull request #1496 from ctrlaltca/clamp_zoneview
Clamp zone view widget's titlebar inside the viewable area
2015-09-12 00:34:12 -04:00
Zach
29446d80d4 Merge pull request #1469 from woogerboy21/request_ban
Added the ability or moderation staff to request user ban history
2015-09-10 21:34:16 -04:00
Zach
e4470acb84 Merge pull request #1497 from ctrlaltca/settings_icons
fix settings icon spacing
2015-09-10 21:33:43 -04:00
Fabio Bas
669568b918 remove qtmobility from apt packages 2015-09-11 00:45:35 +02:00
Fabio Bas
a06c7b2f9d Rework the sound engine to use QSound
plus misc fixes
2015-09-11 00:43:22 +02:00
Fabio Bas
6d56e0dfd6 fix wav file names 2015-09-11 00:42:50 +02:00
Fabio Bas
0b072e2d60 Remove dependency to qt multimedia/mobility under qt4 and unused phonon plugins 2015-09-11 00:42:37 +02:00
Fabio Bas
b2f855aeb0 fix settings icon spacing 2015-09-10 23:37:16 +02:00
Fabio Bas
a7616835e3 Clamp zone view widget's titlebar inside the viewable area 2015-09-10 23:29:01 +02:00
woogerboy21
90cb890cc2 Added the ability or moderation staff to request user ban history 2015-09-10 16:02:45 -04:00
Jeff
badbcf2753 Fix sound test button 2015-09-09 16:47:09 -04:00
Zach
3bc61eb2e9 Merge pull request #1473 from woogerboy21/user_stats_table
Added user analytics table to database
2015-09-09 08:46:52 -04:00
Jeff
d6398477ae SoundEngine overhaul 2015-09-09 02:24:02 -04:00
Zach
05aa8b2c92 Merge pull request #1474 from woogerboy21/no_tab_close
Do not close message tabs on disconnect
2015-09-09 00:04:06 -04:00
woogerboy21
d7d50def51 Added user analytics table to database 2015-09-08 14:56:10 -04:00
woogerboy21
7bfea03af8 Do not close message tabs on disconnect 2015-09-08 14:38:48 -04:00
ctrlaltca
c984a7c962 Merge pull request #1488 from ctrlaltca/translations
Translations update
2015-09-08 19:25:34 +02:00
Fabio Bas
fcc5370082 Fetched new translations 2015-09-08 19:12:41 +02:00
Fabio Bas
5951c95e81 extracted new translatable strings 2015-09-08 19:10:57 +02:00
Fabio Bas
c214234bb2 fix typo 2015-09-08 19:08:34 +02:00
Fabio Bas
09b926a7ac Added transifex cli configuration 2015-09-08 19:08:04 +02:00
Zach
aac980a8cb Merge pull request #1485 from ctrlaltca/fix_notification_click
Don't change window maximized state when clicking a notification
2015-09-08 12:49:00 -04:00
Zach
601ada8473 Merge pull request #1484 from ctrlaltca/fix_f12
Fix loading of "increase life counter" shortcut in settings
2015-09-08 12:43:27 -04:00
Zach
b47aa86c84 Merge pull request #1483 from ctrlaltca/deckeditor_filter_buttons
Add back "remove" buttons to deck editor's filter
2015-09-08 12:33:15 -04:00
Zach
73f2d2b0e5 Merge pull request #1478 from ctrlaltca/fix_replay_crash
Fix replay crash due to completer
2015-09-08 12:31:59 -04:00
Zach
433c5703e7 Merge pull request #1479 from ctrlaltca/fix_autoconnect
Fix autoconnect
2015-09-08 12:29:53 -04:00
Fabio Bas
4ee12f0b69 Don't change window maximized state when clicking a notification 2015-09-08 17:49:31 +02:00
Fabio Bas
db18c7da10 Fix loading of "increase life counter" shortcut in settings 2015-09-08 17:13:47 +02:00
Fabio Bas
3be1bcd356 Add back "remove" buttons to deck editor's filter 2015-09-08 10:25:33 +02:00
Fabio Bas
50aa6e3a4d Fix autoconnect 2015-09-08 08:37:19 +02:00
Fabio Bas
f14ebb0028 Fix replay crash due to completer 2015-09-08 08:12:00 +02:00
Zach
2a83f6dd4b Merge pull request #1472 from marcofernandezheras/Fix-Portable-Paths
Fix thememanager on portable build
2015-09-07 18:03:46 -04:00
marco
36f19be06a Fix thememanager on portable build 2015-09-06 18:29:48 +02:00
woogerboy21
dd4900b038 Merge pull request #1471 from ctrlaltca/deckeditor_theme_cardback
get cardback image from theme
2015-09-06 08:25:48 -04:00
Fabio Bas
e50d0c6db2 get cardback image from theme 2015-09-06 11:44:19 +02:00
woogerboy21
15e8121cf2 Merge pull request #1468 from woogerboy21/fix_old_gcc
Fix older gcc nested pre-def with portable builds
2015-09-05 18:01:31 -04:00
woogerboy21
9dc77d674f Fix older gcc nested pre-def with portable builds 2015-09-05 17:44:51 -04:00
Zach
60ed9fd1ff Add slash 2015-09-03 14:56:23 -04:00
Zach
4eb708c3b0 Merge pull request #1458 from marcofernandezheras/Fix-Portable
fix Decks, Pics replays & sounds paths on Portable build
2015-09-03 14:52:17 -04:00
marco
44fefc20c2 Fix portable on OSX 2015-09-03 19:47:07 +02:00
Zach
d97a9bdb15 Merge pull request #1459 from Cockatrice/portable_readme
Add portable info
2015-09-03 13:32:46 -04:00
Zach
48f68343a2 Add portable info
Portable info
2015-09-03 13:11:42 -04:00
marco
b4c5729bf5 fix Decks, Pics replays & sounds paths on Portable build 2015-09-03 18:31:11 +02:00
Gavin Bisesi
dbbfa82977 Merge pull request #1456 from Cockatrice/restore-python-register-script
Restore register.py script removed in 5ace0dd892
2015-09-03 09:14:54 -04:00
Gavin Bisesi
ebc4011559 Restore register.py script removed in 5ace0dd892
This is intended to be an example of using the protocol from something
other than C++ and to be a building block for future test clients.
2015-09-03 09:13:31 -04:00
Zach
f4ae08f8b1 Merge pull request #1439 from woogerboy21/feature_check
Added server/client feature set communication
2015-09-02 23:38:53 -04:00
woogerboy21
044c2356ff Added server/client feature set communication 2015-09-02 17:54:06 -04:00
Zach
3188ef4cde Merge pull request #1444 from woogerboy21/fix_blank_ban
Detect if a use is trying to place an invalid ban
2015-09-01 22:20:05 -04:00
marco
baa61d0571 Merge branch 'master' into Refactor-settings
Conflicts:
	oracle/CMakeLists.txt
2015-09-01 21:28:53 +02:00
ctrlaltca
0a9057d1b8 Merge pull request #1451 from ctrlaltca/fix_1449
Let git track the empty dir "themes/Default"
2015-09-01 10:29:35 +02:00
Fabio Bas
d9ecb5db8b Let git track this empty dir 2015-09-01 08:57:30 +02:00
Zach
f5f5074023 Merge pull request #1081 from ctrlaltca/themes_clean
Theme manager
2015-08-31 18:50:36 -04:00
Fabio Bas
6d7baec37b Merge with master 2015-08-31 22:55:46 +02:00
Fabio Bas
5cfb034452 merged with master 2015-08-31 22:48:14 +02:00
ctrlaltca
949b0183c8 Merge pull request #1448 from woogerboy21/log_session_mismatch
Log inconsistent session / session table situation
2015-08-31 21:45:55 +02:00
woogerboy21
de073a51d6 Log inconsistent session / session table situation 2015-08-31 08:29:26 -04:00
woogerboy21
66c19ab727 Detect if a use is trying to place an invalid ban 2015-08-31 01:00:13 -04:00
woogerboy21
13e536013e Merge pull request #1442 from woogerboy21/fix_oldsession
Fix bug that crashes server when old session is logged out during login
2015-08-30 23:51:33 -04:00
woogerboy21
66dce1bf46 Fix bug that crashes server when old session is logged out during login 2015-08-30 23:33:11 -04:00
woogerboy21
8bb6bb04d7 Merge pull request #1441 from woogerboy21/fix_check
Fix ban issue
2015-08-30 19:45:04 -04:00
woogerboy21
d8b53f9345 Update ban check to exclude empty client id's 2015-08-30 18:48:57 -04:00
Gavin Bisesi
c0a0775323 Merge pull request #1434 from Cockatrice/restore-xsd
Restore xsd files removed in #1428
2015-08-28 18:25:14 -04:00
Gavin Bisesi
3c1a7bc760 Restore xsd files removed in #1428
ಠ_ಠ
2015-08-28 18:24:25 -04:00
Zach
6a64e4a2e1 Merge pull request #1432 from ZeldaZach/fix_1427
Remove docs in favor of wiki
2015-08-28 15:39:00 -04:00
Zach H
854e0a764c remove docs in favor of wiki 2015-08-28 14:59:49 -04:00
Zach
e6a8fa59e3 Merge pull request #1428 from tooomm/patch-1
text adjustments in oracle
2015-08-27 12:39:00 -04:00
ctrlaltca
885edc8953 Merge pull request #1429 from ctrlaltca/translations
Fetched new translations. Arrr!
2015-08-27 18:32:54 +02:00
Fabio Bas
fcff6301ed Fetched new translations. Arrr! 2015-08-27 18:32:14 +02:00
tooomm
5d8d2f277c oxford compliance
@ZeldaZach grammar nazi :) 👍
2015-08-27 15:55:22 +02:00
tooomm
17665aad60 fixed alignment
nice alignment over strict tabbing
2015-08-27 14:55:19 +02:00
tooomm
f18f136d2b text adjustments
- removed some info text since oracle imports all cards now and no longer offers sets selection
- added info about token
- `<br/>` --> `\n`
- capitalized `URL` --> http://www.oxforddictionaries.com/definition/english/URL
2015-08-27 14:43:34 +02:00
Zach
311536d1aa Merge pull request #1423 from tooomm/patch-1 2015-08-26 10:26:57 -04:00
tooomm
83e9f9deba typos resolved
@marcofernandezheras ok?
2015-08-26 15:33:05 +02:00
woogerboy21
fdea69cfed Merge pull request #1421 from woogerboy21/fix_proto_warnings
Corrected proto warnings & spacing
2015-08-26 08:22:50 -04:00
woogerboy21
cfebd53d5d Corrected proto warnings 2015-08-25 23:40:08 -04:00
marco
0b94b47f72 Servatrice portable + cmake options
Use -DPORTABLE=1 to build a portable version
2015-08-25 21:25:13 +02:00
marco
4125d690fa Fix merge & relative path for portable build 2015-08-25 20:22:31 +02:00
woogerboy21
7453385903 Merge pull request #1417 from woogerboy21/send_clientver
Extend the login protocol to send the client version (as optional)
2015-08-24 11:54:04 -04:00
woogerboy21
364df4daf0 Extend the login protocol to send the client id (as optional) 2015-08-24 11:38:24 -04:00
Zach
324ddda4dd Merge pull request #1416 from ZeldaZach/fix_1411
Define URLs
2015-08-23 23:00:22 -04:00
Zach
14da4efe6d Merge pull request #1414 from ZeldaZach/fix_1412
Prevent bad flags
2015-08-23 17:59:52 -04:00
Zach H
a8727d5a50 define URLs 2015-08-23 17:57:26 -04:00
Zach
4d2fdaec08 Merge pull request #1407 from Fizztastic/fix_1396
Option to opt-out of remember game settings
2015-08-23 16:28:01 -04:00
Zach H
8ffe310855 prevent bad flags 2015-08-23 16:27:18 -04:00
ctrlaltca
ab33258ce9 Merge pull request #1415 from ctrlaltca/translations
Translations: extracted new strings
2015-08-23 20:54:50 +02:00
Fabio Bas
b335bc5e7d Translations: extracted new strings 2015-08-23 20:54:11 +02:00
marco
be7efa98cf Fix relative path for image download & settings 2015-08-23 15:54:52 +02:00
marco
1e2d5b0693 Fix translate setting + Mod oracle to portable build 2015-08-23 14:14:11 +02:00
Jeff
ca82fd867a Option to opt-out of remember game settings 2015-08-22 15:52:03 -04:00
Zach
432c856f0d Merge pull request #1400 from woogerboy21/logout_old_session
Log old session out of server if logging in from a second location
2015-08-22 15:37:50 -04:00
woogerboy21
b0630b81ca Log old session out of server if logging in from a second location 2015-08-22 13:41:02 -04:00
Gavin Bisesi
0c0413f056 Merge pull request #1404 from Cockatrice/docker-tweak
Use servatrice as docker entrypoint
2015-08-22 09:57:10 -04:00
Gavin Bisesi
34c78b3113 Use servatrice as docker entrypoint
This lets you "docker run servatrice" and pass command line arguments
2015-08-22 08:43:44 -04:00
ctrlaltca
18ec8e20b6 Merge pull request #1381 from ZeldaZach/flags_to_lower
Country to lower (fix win bug)
2015-08-22 11:53:22 +02:00
Zach
e9156ecd62 Merge pull request #1391 from woogerboy21/admin_adjustmods
Allows admins to promote users to mod and demote mod to user
2015-08-22 00:03:46 -04:00
woogerboy21
2a0197a7ab Merge pull request #2 from Cockatrice/admin_adjustmods
Address PR feedback
2015-08-21 23:08:29 -04:00
Gavin Bisesi
66f14c1168 Address PR feedback 2015-08-21 23:03:15 -04:00
Zach
a6a62b3334 Merge pull request #1354 from Cockatrice/fix-1351
Fix #1351 - Server ignores only-reg if in "none" auth mode.
2015-08-21 22:15:32 -04:00
Daenyth
6170c9037f Fix #1351 - Server ignores only-reg if in "none" auth mode.
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.
2015-08-21 20:30:46 -04:00
Zach H
41b10308ba country to lower (fix win bug) 2015-08-21 20:05:49 -04:00
marco
c8d59eec5e Refactred settings to use settingscache & ini files 2015-08-22 01:05:15 +02:00
Zach
9c28cdd1f5 Merge pull request #1394 from Fizztastic/fix_1387
Add LineEditCompleter to Tab_Game
2015-08-20 23:46:19 -04:00
Jeff
50e0b6dd35 Merge lines 2015-08-20 23:33:06 -04:00
Jeff
97d0cfa3d9 Fix first word completion 2015-08-20 23:01:32 -04:00
woogerboy21
39fcabe921 Allows moderators to promote users to mod and demote mod to user 2015-08-20 22:42:10 -04:00
Jeff
05f2bc8392 Fix Conflicts 2015-08-20 22:27:46 -04:00
Jeff
e9bad2cacb Merge branch 'master' into fix_1387
Conflicts:
	cockatrice/CMakeLists.txt
	cockatrice/src/tab_game.h
	cockatrice/src/tab_room.cpp
2015-08-20 22:23:47 -04:00
Jeff
b3d96cc5da Merge remote-tracking branch 'Cockatrice/master' into fix_1387 2015-08-20 22:17:06 -04:00
Zach
b2ab2c6eba Merge pull request #1382 from marcofernandezheras/Customizable-shortcuts
Customizable shortcuts
2015-08-20 21:44:05 -04:00
marco
c6aba5a6d0 Renamed file + reduced window size + resfresh on change 2015-08-20 20:23:08 +02:00
Jeff
a64ea17357 Add LineEditCompleter to Tab_Game 2015-08-19 18:46:08 -04:00
woogerboy21
1ef9041815 Merge pull request #1389 from Cockatrice/schema_level_correction
Corrected miss-matched schema versions
2015-08-18 08:04:29 -04:00
woogerboy21
65635bcdd8 Corrected miss-matched schema versions
Schema version should be 7 (not 6) for current commit level.  Not sure exactly why it wasn't updated.
2015-08-18 07:40:12 -04:00
Zach
8c0722953f Merge pull request #1386 from Fizztastic/fix_1383
Fix linked cardwidget not showing PT/Loyalty
2015-08-17 17:14:30 -04:00
Jeff
f3c43cb50f Fix linked cardwidget not showing PT/Loyalty 2015-08-16 19:02:55 -04:00
marco
d3d6f70496 Removed 2nd arg from ShortcutsSettings::getShortcut 2015-08-16 21:53:59 +02:00
marco
1ca89e0b09 Moved counters to a new tab 2015-08-16 15:38:23 +02:00
woogerboy21
487cbb23cb Merge pull request #1379 from woogerboy21/room_userlevel
Add permission levels to rooms
2015-08-16 08:57:34 -04:00
marco
713a8148d3 Customizable shorcuts 2015-08-16 14:24:04 +02:00
marco
be82472f35 Merge branch 'master' into Customizable-shortcuts 2015-08-16 14:01:48 +02:00
marco
4cb53ccaed Merge branch 'master' into Customizable-shortcuts 2015-08-16 13:52:34 +02:00
marco
beaa4e9383 Configurable shortcuts 2015-08-16 13:46:57 +02:00
woogerboy21
702f949196 Updated response block to look better 2015-08-15 21:17:32 -04:00
woogerboy21
3e94c9d283 Define permission levels for rooms 2015-08-15 21:00:51 -04:00
woogerboy21
5634b564e8 Merge pull request #1378 from woogerboy21/last_login
Add last_login column to user table and populate upon login
2015-08-15 20:24:18 -04:00
Zach
98fa9eb159 Merge pull request #1356 from Fizztastic/ChatRoomCompleter
Username Completer in server room
2015-08-15 20:08:34 -04:00
woogerboy21
bb0b626cee Add last_login column to user table and populate upon login 2015-08-15 03:00:34 -04:00
woogerboy21
0f4dc18074 Merge pull request #1374 from woogerboy21/ban_by_clientid
Ban by client ID
2015-08-14 11:25:01 -04:00
Zach
4b0ccc30ec Merge pull request #1376 from Fizztastic/customsets_option 2015-08-14 11:04:06 -04:00
woogerboy21
b102a05a36 Add ability to ban by client id 2015-08-14 00:06:37 -04:00
Jeff
386716b8db Add option to open customsets folder 2015-08-13 23:52:38 -04:00
Jeff
50d67467dc Username Completer in server room
Adds QCompleter in server room and a setting to enable/disable it.
2015-08-13 23:51:39 -04:00
Zach
26e63a9a3a Merge pull request #1343 from tooomm/readme-toc-change
readme adjustments
2015-08-13 21:17:07 -04:00
tooomm
d5c00b0cb5 remove arrows with link to top 2015-08-13 16:21:10 +02:00
woogerboy21
8bf58af727 Merge pull request #1365 from woogerboy21/add_clientid_tosessions
Add clientid field to sessions table.
2015-08-12 08:07:01 -04:00
poixen
9bf3178b2f Merge pull request #1307 from poixen/hostselection
Previous server connection history
2015-08-12 12:59:23 +02:00
Zach
54ff4ef417 Merge pull request #1369 from ZeldaZach/fix_1360
remove max screen default
2015-08-11 17:41:13 -04:00
Zach H
b57a316bfd remove max screen default 2015-08-11 17:10:05 -04:00
Zach
1c3e13109f Merge pull request #1361 from woogerboy21/servatrice_disable_replaystorage
Add option to servatrice to disable replay storage.
2015-08-11 16:32:37 -04:00
Zach
26b9560753 Merge pull request #1367 from woogerboy21/add_script_maintcountrycodes
Added lower case country code on correction.
2015-08-11 16:05:56 -04:00
woogerboy21
7c81f8a610 Added lower case country code on correction. 2015-08-11 15:46:59 -04:00
Zach
bf230f2c86 Merge pull request #1366 from woogerboy21/add_script_maintcountrycodes
Add script to validate/clear invalid country codes in the DB.
2015-08-11 15:18:11 -04:00
woogerboy21
f636c0ee19 Add script to validate/clear invalid country codes in the DB. 2015-08-11 14:20:40 -04:00
woogerboy21
d52cf379ee Updated servatrice.sql to reflect new sessions table field. 2015-08-11 12:53:56 -04:00
woogerboy21
eb5833609a Add clientid field to sessions table. 2015-08-11 12:45:04 -04:00
Zach
e9478ff99c Merge pull request #1362 from woogerboy21/rem_clientid_protoreq
Removed clientid requirements from the protocol handler.
2015-08-10 17:36:31 -04:00
woogerboy21
fa77cdf3b5 Removed clientid requirements from the protocol handler. 2015-08-10 16:07:20 -04:00
woogerboy21
fefceac2c6 Add option to servatrice to disable replay storage. 2015-08-10 15:29:30 -04:00
Gavin Bisesi
ea9e966330 Merge pull request #1353 from Cockatrice/revert-1352-nonreg_nodbserver_fix
Revert "#1351 Fix"
2015-08-09 15:52:42 -04:00
Gavin Bisesi
59568bf13c Revert "#1351 Fix" 2015-08-09 15:52:32 -04:00
woogerboy21
de1b925b7d Merge pull request #1352 from Cockatrice/nonreg_nodbserver_fix
#1351 Fix
2015-08-09 15:25:14 -04:00
woogerboy21
5fc0da6ab9 #1351 Fix
This update address's the issue were a server with no db has only non-registered users but when creating a game will cause the dialogue to only allow the check box of "registered users only" resulting in a game that no user will ever be able to join.
2015-08-09 15:07:30 -04:00
woogerboy21
90381aa38f Merge pull request #1350 from woogerboy21/showmoreinfo_logincontexterror
Update Error 11 Clarity
2015-08-09 14:02:34 -04:00
woogerboy21
f4942d1ea7 Merge pull request #1346 from woogerboy21/regonly_server_refactor
Reg only server cleanup
2015-08-09 13:57:17 -04:00
Zach
ff41e69a30 Merge pull request #1349 from ctrlaltca/fix_server_msvc 2015-08-09 13:49:53 -04:00
woogerboy21
3f78e0bec3 Update Error 11 Clarity 2015-08-09 12:56:09 -04:00
Fabio Bas
76ba3b557d Fix compilation of servatrice with mdvc
Should fix #1336
2015-08-09 18:17:10 +02:00
woogerboy21
1f22f1743c Merge pull request #1348 from woogerboy21/fix_clientid_dbmigration
Add database migration script for client id
2015-08-09 09:19:12 -04:00
woogerboy21
b4e0c00cca Add database migration script for client id 2015-08-09 08:47:21 -04:00
marco
b0bf94e378 Shorcut read from settings 2015-08-09 12:16:52 +02:00
woogerboy21
644ea0482f Merge pull request #1347 from woogerboy21/fix_clientid_localgame
Fix local game not starting properly.
2015-08-08 17:33:34 -04:00
woogerboy21
afa2c67e87 Actually pass the generated client id. 2015-08-08 17:22:59 -04:00
woogerboy21
567c1a148d Fix local game due to clientid check in response container. 2015-08-08 17:08:43 -04:00
woogerboy21
17392f1ae5 Moved the RegOnlyRequirement functions out of the Database interface into the proper Server block of code. 2015-08-08 16:24:37 -04:00
woogerboy21
129a6983ed Merge pull request #1345 from Cockatrice/login-error-message
Add more informative message on unrecognized login response
2015-08-08 11:12:50 -04:00
Gavin Bisesi
481a57edf6 Show more informative error on registration failure 2015-08-08 09:55:23 -04:00
Gavin Bisesi
bf7cf61b85 Add more informative message on unrecognized login response
When logging in and receiving a reply that isn't understood, show a more informative error message.

`tr() + tr()` for better translation flexibility.
2015-08-08 09:48:18 -04:00
woogerboy21
c64bc3fb81 Merge pull request #1344 from woogerboy21/clientid_commit_res
Commit to resolve requests made by @Daenyth discussed after the commit.
2015-08-08 09:23:21 -04:00
woogerboy21
b53bd08175 Merge branch 'clientid_commit_res' of ssh://github.com/woogerboy21/Cockatrice into clientid_commit_res 2015-08-08 08:52:47 -04:00
woogerboy21
af237c7d07 Fixed space/tabing issues. 2015-08-08 08:52:19 -04:00
woogerboy21
bc99024e4f Added server side setting to allow the requirement of a client id from clients. 2015-08-08 08:52:19 -04:00
woogerboy21
94942e1a92 Commit to resolve requests made by @Daenyth discussed after the commit.
See https://github.com/Cockatrice/Cockatrice/pull/1340 for details.
2015-08-08 08:52:19 -04:00
woogerboy21
62dc3a7ca3 Merge pull request #1342 from marcofernandezheras/CardInfoLayout
Deck Editor layout
2015-08-08 08:28:12 -04:00
woogerboy21
2211a8de4a Fixed space/tabing issues. 2015-08-07 22:32:39 -04:00
marco
e9e75961f4 Redesigning deck editor to work with docks
Moved setting files & Added code for a future portable build
2015-08-07 23:44:40 +02:00
woogerboy21
b62ffdeb0b Added server side setting to allow the requirement of a client id from clients. 2015-08-07 15:52:55 -04:00
woogerboy21
95cc10a278 Commit to resolve requests made by @Daenyth discussed after the commit.
See https://github.com/Cockatrice/Cockatrice/pull/1340 for details.
2015-08-07 13:21:31 -04:00
tooomm
8ebd8532d6 readme adjustments
- toc changed (removed DocToc)
- relinks to the toc on top under every category
- image included on top
- added other servers in community ressources
2015-08-06 23:21:51 +02:00
woogerboy21
ba90d84a13 Merge pull request #1340 from woogerboy21/clientid
Client ID Generation
2015-08-06 14:17:06 -04:00
poixen
5a541d6248 Merge pull request #1341 from tooomm/patch-2
removed space
2015-08-06 11:34:04 +02:00
tooomm
94d4ff8c1b removed space 2015-08-06 10:11:00 +02:00
woogerboy21
52db13a1ca Initial release of client ID generation. 2015-08-05 10:15:49 -04:00
Zach
44d757f691 Merge pull request #1328 from marcofernandezheras/FixBug#1296
Ctrl + Double Click: Add card to SB
2015-08-03 22:47:32 -04:00
marco
0d10d6f85d Fixes issue #1296 2015-08-04 00:17:44 +02:00
woogerboy21
13011180f7 Merge pull request #1313 from woogerboy21/update_pingtime
Update Client & Server ping time
2015-08-03 12:31:20 -04:00
Zach
dfb7847dab Update README.md 2015-08-01 21:45:14 -04:00
Zach
c28da9f066 Merge pull request #1321 from ZeldaZach/readme
README fix
2015-08-01 21:35:41 -04:00
Zach H
ee6020ab8c url fix 2015-08-01 21:35:21 -04:00
ctrlaltca
4b5fb30248 Merge pull request #1318 from ctrlaltca/fix_linking_faq_url
Fix "Linking FAQ" url
2015-08-01 11:18:16 +02:00
ctrlaltca
622e018cd4 Merge pull request #1320 from ctrlaltca/translations
Updated translations
2015-08-01 11:18:04 +02:00
Fabio Bas
7e7c0ef4d2 Updated translations 2015-08-01 10:55:06 +02:00
Fabio Bas
6dfd2e65f6 Fix "Linking FAQ" url 2015-08-01 08:07:47 +02:00
ctrlaltca
8d2cd29a3f Merge pull request #1308 from ZeldaZach/fix_1301
Allow URL redirects for card images
2015-08-01 07:59:58 +02:00
Zach
da48b71442 Merge pull request #1310 from ctrlaltca/emails
Servatrice: do not disclose user emails to clients
2015-07-31 10:57:52 -04:00
woogerboy21
eb9ca58fd0 Updated pingClockTimeout to account for adjustments in client keep alive settings value.
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).
2015-07-30 16:38:02 -04:00
woogerboy21
8c7301b19f Updated server and client ping to 5 seconds. Also changed hard set 1 second value on the ping timers to read values from the settings cache. 2015-07-29 23:44:00 -04:00
Fabio Bas
8d325b9e19 Servatrice: do not disclose user emails to clients 2015-07-28 22:20:40 +02:00
Matt Lowe
1ca24b2597 Previous server connection history
This adds the ability to select previous servers from a list to connect
to.

You can remove items from the drop down by selecting them and pressing
delete.

If you connect to a new host it will be added to the previous hosts.

It will remember the last host connected to in the dropdown.
2015-07-28 20:04:01 +02:00
Zach H
8a86165890 allow URL redirects 2015-07-28 02:41:08 -04:00
Zach
183fbd2805 Merge pull request #1305 from poixen/appname
Changed app title when logged in
2015-07-27 19:51:24 -04:00
Matt Lowe
46f28f92b6 Changed app title when logged in
As seen in this image, you cant see where you are logged in.

How it looks now:
2015-07-27 16:19:19 +02:00
Zach
c0bb640a37 Merge pull request #1295 from ctrlaltca/servatrice_email_v2
Refactor servatrice email send
2015-07-26 21:13:58 -07:00
Zach
9aa161575d Merge pull request #1303 from ZeldaZach/fix_1069
fix 1032 merge conflicts
2015-07-26 21:12:50 -07:00
Zach H
475c54bfe1 fix 1032 merge conflicts 2015-07-27 00:01:05 -04:00
Zach
e318b70329 Merge pull request #1286 from ctrlaltca/disabled_sets
Prefer enabled sets when loading images
2015-07-26 12:10:00 -07:00
Zach
bd92f18e9d Merge pull request #1293 from ctrlaltca/fix_1289
Force black text color on deck list
2015-07-26 12:05:52 -07:00
Fabio Bas
a001238b74 Force cache clear on sets database save. 2015-07-26 11:46:09 +02:00
Zach
ac4c745521 Merge pull request #1294 from mildmongrel/tablezone_refactor_001
tablezone refactor and cleanup
2015-07-25 22:45:06 -07:00
Zach
387137fbc7 Merge pull request #1292 from ctrlaltca/fix_compile_debug
fix compilation with gcc in paranoic mode
2015-07-25 22:37:18 -07:00
Zach
f3ee1eac12 Merge pull request #1287 from ctrlaltca/servatrice_db_version
Fix misleading error message in servatrice; fix #1275
2015-07-25 22:36:01 -07:00
Zach
f1b7a422ee Merge pull request #1284 from ctrlaltca/fix_1283
Fix calculation of ban expiration
2015-07-25 22:19:58 -07:00
Zach
c675cf4010 Merge pull request #1272 from Fizztastic/fix_577
Joining a full game joins you as spectator
2015-07-25 22:16:00 -07:00
Fabio Bas
9c38b08407 Again on the same problem 2015-07-25 19:51:32 +02:00
Fabio Bas
c714932e25 Fix compilation under OSX with homebrew's qt5.5 2015-07-25 19:28:30 +02:00
Fabio Bas
1ffc9b4561 Refactor servatrice email send 2015-07-25 18:48:34 +02:00
mildmongrel
ba50025e80 tablezone refactor and cleanup 2015-07-24 16:15:08 -07:00
Fabio Bas
800a17e483 Force black text color on deck list; fix #1289 2015-07-24 19:35:31 +02:00
Fabio Bas
119871d114 fix compilation with gcc in paranoic mode
deckview.cpp:244:6: warning: no previous declaration for 'bool
sortCardsByName(DeckViewCard*, DeckViewCard*)' [-Wmissing-declarations]
2015-07-24 19:29:06 +02:00
ctrlaltca
903292ad3b Merge pull request #1288 from ctrlaltca/travis_qt5_homebrew
Hack to make travis always detect the installed qt5 version
2015-07-22 21:30:15 +02:00
Fabio Bas
713fa92c65 Hack to make travis always detect the installed qt5 version 2015-07-22 18:04:56 +02:00
Fabio Bas
946410de2b Fix misleading error message in servatrice; fix #1275 2015-07-22 17:51:30 +02:00
Fabio Bas
90655ff631 Prefer enabled sets when loading images; fix #1235 2015-07-22 17:35:44 +02:00
Fabio Bas
7f358d289e Fix calculation of ban expiration; fix #1283 2015-07-21 22:32:31 +02:00
Jeff
3f22024281 Joining a full game joins you as spectator 2015-07-18 01:33:15 -04:00
ctrlaltca
0d5e169648 Merge pull request #1270 from ctrlaltca/fix_1269
Fix change flag in edit account; Fix #1269
2015-07-16 18:01:40 +02:00
Fabio Bas
c9e1585322 Fix change flag in edit account; Fix #1269 2015-07-16 17:59:28 +02:00
ctrlaltca
61b2b46b79 Merge pull request #1267 from Cockatrice/revert-1261-fix_982
Revert "Confirmation dialog on close"
2015-07-16 12:30:37 +02:00
ctrlaltca
9b9db297b3 Revert "Confirmation dialog on close" 2015-07-16 14:30:12 +02:00
Zach
e0b71d3b05 Merge pull request #1257 from ctrlaltca/messageparser
Chatview: split message parser and add "highlight words"
2015-07-15 20:00:08 -04:00
Zach
1d425f5b66 Merge pull request #1261 from ZeldaZach/fix_982
Confirmation dialog on close
2015-07-15 18:57:03 -04:00
Zach H
ebd516fbf3 confirmation dialog on close 2015-07-15 18:34:21 -04:00
Zach
da3ade3205 Merge pull request #1264 from ZeldaZach/color_popup
Add colors to popup
2015-07-15 16:55:17 -04:00
Fabio Bas
ef831d2749 Reworded settings sentence 2015-07-15 22:44:24 +02:00
Zach H
d956a1d309 add colors to popup 2015-07-15 16:38:29 -04:00
Zach
97acbbfd41 Merge pull request #1262 from ctrlaltca/servatrice_mail
Merge memory leak fix for smtp client
2015-07-15 12:24:23 -04:00
Fabio Bas
5dc7c60b4d reorder parameters 2015-07-15 15:17:23 +02:00
Fabio Bas
056edd8570 Merge memory leak fix for smtp client
source:
https://github.com/bluetiger9/SmtpClient-for-Qt/commit/c12f70b721a80dfbb
fd4feb5c0f17ddef93d5a56
2015-07-15 12:42:56 +02:00
Fabio Bas
efe388bddd Fix server message color; try to detect words inside parentheses, punctuation, etc.. 2015-07-15 11:52:04 +02:00
woogerboy21
51d12f3ed6 Merge pull request #1259 from woogerboy21/update_servatrice_scripts
Script Cleanup
2015-07-14 15:33:11 -04:00
woogerboy21
d2af7ff99e Merge pull request #1254 from ZeldaZach/fix_1248
require pass & email confirmation
2015-07-14 15:21:35 -04:00
woogerboy21
795c05257f Inactive accounts script description update
Updated description in script to clarify things.
2015-07-14 15:10:25 -04:00
woogerboy21
44025c667e Script Cleanup
Added the ability to specify custom database name.
Added the ability to specify custom table prefix.
Created sub folders for operating systems.
2015-07-14 15:05:02 -04:00
Zach H
c29bf1ae17 require pass & email confirmation 2015-07-14 14:12:49 -04:00
woogerboy21
f1cafa0609 Merge pull request #1258 from woogerboy21/servatrice_remove_pcconsoleecho
Removed Player Count Debug Line
2015-07-14 09:57:24 -04:00
woogerboy21
d91bbcfbce Removed Player Count Debug Line
Removed the output put to console for every logged in user.  It just cluttered things up.
2015-07-14 08:54:05 -04:00
Fabio Bas
2e3e6c55ff Updated with latest changes from #1243 2015-07-14 09:19:07 +02:00
woogerboy21
8a0fdd2089 Merge pull request #1252 from woogerboy21/max_player_limit
Servatrice: Restrict the total number of users able to connect (Max User Limit)
2015-07-13 18:20:19 -04:00
woogerboy21
a9acb3f1cc Total Max User Restriction
Syntax correction.
2015-07-13 17:54:03 -04:00
woogerboy21
aa540f7968 Merge pull request #1240 from woogerboy21/db_backup_scripts
Update DB Scripts
2015-07-13 13:51:08 -04:00
Zach
7ebf817b17 Merge pull request #1197 from Cockatrice/cpp11 2015-07-13 13:23:18 -04:00
woogerboy21
ea40db972d Merge pull request #1244 from woogerboy21/multi_server_sessions_update
Multi Server Session Functionality
2015-07-13 13:12:27 -04:00
Zach
acaeadfcb3 Merge pull request #1241 from ZeldaZach/fix_719 2015-07-13 12:52:18 -04:00
Zach H
29aecc4eb8 Green kick msg 2015-07-13 03:05:03 -04:00
Fabio Bas
87c70466a4 Rework message parser 2015-07-12 23:56:32 +02:00
Zach H
97f298452e first fixes 2015-07-12 11:00:11 -04:00
woogerboy21
217d8fa165 Multi Server Session Functionality
Fix #1130
Adds the server id in the SQL query for userSessionExists function.
2015-07-11 23:18:37 -04:00
Zach H
dc05a14f4c Highlight Custom Words 2015-07-11 22:46:00 -04:00
woogerboy21
ff5ea7fc1f Added log maint script
Added log maint script
2015-07-11 17:03:37 -04:00
woogerboy21
9338e7e71f Added -e option
Added -e option by request
Updated process checking method to allow -e option
2015-07-11 16:35:12 -04:00
woogerboy21
10019bf985 Cleanup
Added -u options by request.
Removed line for running log cleanup prior to backup.
Added abort warning.
2015-07-11 15:41:59 -04:00
woogerboy21
04c09647d7 Update DB Scripts
Added backup / restore scripts.
Added table size script
Updated existing scripts to use variable location for mysql.cnf file
2015-07-11 11:22:54 -04:00
Zach
9edacd7b3e Merge pull request #1236 from Fizztastic/fix_574
Double Click to open replays
2015-07-09 23:36:33 -04:00
Zach
f437dabfbb Merge pull request #1227 from ctrlaltca/oracle_tokens
Oracle: download tokens
2015-07-09 23:34:37 -04:00
Jeff
8bc885c3f1 Double Click to open replays 2015-07-09 00:42:02 -04:00
Zach
f733daf18a Merge pull request #1179 from mildmongrel/feature-player-rotation
Added ability to rotate player positions in the local game view.
2015-07-08 18:23:10 -04:00
Zach
091ca9fc12 Merge pull request #1230 from ZeldaZach/fix_97
add shortcut for filter delete
2015-07-08 18:11:08 -04:00
Zach
2837a4c010 Merge pull request #1232 from ZeldaZach/fix_242
show colors of cards
2015-07-08 18:10:23 -04: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
Fabio Bas
a65b2e6c94 Changed url to cockatrice's tokens repo + minor fix 2015-07-08 19:31:04 +02:00
mildmongrel
124788d217 Added ability to rotate player positions in the local game view. 2015-07-08 09:16:37 -07:00
Fabio Bas
eda55679da Implemented suggested improvements 2015-07-08 10:19:05 +02:00
Jeff
438aacb9c4 Play cards only with double left click
Fix #340
2015-07-08 00:55:35 -04:00
Zach H
afa8b53870 show colors of cards 2015-07-07 23:50:37 -04:00
Zach H
ce42d56a2d add shortcut for filter delete 2015-07-07 22:42:05 -04:00
Zach
f199e20740 Merge pull request #1216 from ZeldaZach/fix_morphs
Fix Morphs from Sharing Information
2015-07-07 22:00:32 -04:00
Zach
955cc3920f Merge pull request #1189 from mildmongrel/fix_col_layout
Fixed horizontal positioning in multicolumn layout.
2015-07-07 21:40:17 -04:00
Zach
f0efab5142 Merge pull request #1226 from ctrlaltca/fix_241
Add an option to annotate tokens from card text (default off)
2015-07-07 21:12:59 -04:00
Zach
9b87f9e7e7 Merge pull request #1225 from ctrlaltca/fix_247
Order cards by name in deck-load screen
2015-07-07 20:42:44 -04:00
poixen
4a46bd697f Merge pull request #1228 from poixen/formated_db_interface
Refactored tabs to spaces
2015-07-07 21:26:09 +02:00
Matt Lowe
894d6c8d2d Refactored tabs to spaces
Removed tabs in favour of 4 spaces.
2015-07-07 21:01:19 +02:00
Fabio Bas
24aabc4cfe Oracle: download tokens; fix #915 2015-07-07 20:06:14 +02:00
Zach
db604bce03 Merge pull request #1219 from poixen/pic_fix 2015-07-07 13:41:06 -04:00
Fabio Bas
68e176cc00 Add an option to annotate tokens from card text (default off); fix #241 2015-07-07 19:19:58 +02:00
Fabio Bas
1c2ddccb46 Order cards by name in deck-load screen; fix #247 2015-07-07 17:56:11 +02:00
Zach
685aa99ad6 Merge pull request #1224 from ctrlaltca/profile_edit
Integrate #1210 changing "Gender" to "Pronouns"
2015-07-07 10:47:37 -04:00
Fabio Bas
6013974b5e Gender => Pronouns 2015-07-07 14:10:15 +02:00
Zach
1c69288f0e Merge pull request #1222 from Fizztastic/fix_740
Added 2 shortcuts to game deck screen
2015-07-07 02:43:04 -04:00
Zach
6bf421cc31 Merge pull request #1210 from ctrlaltca/profile_edit
Profile management
2015-07-07 02:01:27 -04:00
Fizztastic
4d6a405d01 Added 2 shortcuts to game deck screen
- Ctrl+O (Load Deck)
- Ctrl+Alt+O (Load Remote Deck)
2015-07-07 01:14:06 -04:00
Zach
2b484aa9ee Merge pull request #1221 from Fizztastic/fix_818
Load .cod files from clipboard in deck editor
2015-07-07 00:36:49 -04:00
Zach
e76c109f2d Merge pull request #1217 from ZeldaZach/fix_cheat
Prevent Hash Collision
2015-07-06 23:49:48 -04:00
Zach
29b83c3700 Merge pull request #1215 from ZeldaZach/fix_1208
Mod Global Messaging
2015-07-06 23:48:46 -04:00
Fizztastic
0b8fab4721 Load .cod files from clipboard 2015-07-06 23:46:11 -04:00
Zach
4cf92de44d Merge pull request #1220 from Fizztastic/fix_1011
Add Move to Hand in card menu
2015-07-06 22:42:01 -04:00
Fizztastic
680332a708 keep consistent ordering 2015-07-06 19:18:27 -04:00
Fizztastic
19bd6cc381 Adds Move To... Hand context menu for cards 2015-07-06 19:10:13 -04:00
Zach H
339db24b56 efficency loop 2015-07-06 17:52:20 -04:00
Matt Lowe
c260a8a1d4 Fixed image centering 2015-07-06 20:34:38 +02:00
Zach H
ae4436ade7 mod global msg overrides settings 2015-07-06 12:45:08 -04:00
Zach H
9e2da24629 use QSet for zones 2015-07-06 11:02:43 -04:00
Zach
bfa002e50a Merge pull request #1213 from ZeldaZach/fix_1057
Link FAQ pages
2015-07-06 09:00:55 -04:00
Fabio Bas
14bce93c7a make gcc an happy puppy 2015-07-06 09:14:29 +02:00
Zach H
8e4f0c50af remove breaks 2015-07-06 01:31:24 -04:00
Zach H
ef268d79c3 prevent cheating with hashes 2015-07-06 00:30:17 -04:00
Zach H
cf09aeccfd local user sees orange too 2015-07-05 23:21:46 -04:00
Zach H
8221d37bbe don't share PT 2015-07-05 23:11:26 -04:00
Zach H
1bda6e53b2 allow mod global msg 2015-07-05 22:06:35 -04:00
Zach H
e20c06b639 troubleshooting&faq 2015-07-05 20:11:42 -04:00
Fabio Bas
68f1358f54 rebased on master 2015-07-05 22:48:09 +02:00
Fabio Bas
15998fb3e6 Misc fixes 2015-07-05 22:44:35 +02:00
Fabio Bas
7f5f290c93 Profile management 2015-07-05 22:44:35 +02:00
Fabio Bas
960cb04286 Misc fixes 2015-07-05 21:13:39 +02:00
mildmongrel
75d0d5f66b Fixed horizontal positioning in multicolumn layout. 2015-07-05 10:12:01 -07:00
Fabio Bas
26f317ee75 Profile management 2015-07-05 16:39:55 +02:00
Zach
31890450dc Merge pull request #1205 from ZeldaZach/fix_1173
Server Name Rules Information
2015-07-04 19:37:50 -04:00
Zach H
1f9b3ed28f minor fix 2015-07-04 18:52:50 -04:00
Zach
c148994ac7 Merge pull request #1206 from ZeldaZach/fix_at_space
Fix Crash on Mention Bug
2015-07-04 18:38:24 -04:00
Zach H
24e54fd291 fix crash on mention 2015-07-04 18:26:54 -04:00
Zach H
1d210e57bd show all rules 2015-07-03 23:54:14 -04:00
Zach
360498c83f Merge pull request #1194 from ZeldaZach/fix_1192
Fix local mention crash
2015-07-03 18:41:48 -04:00
Gavin Bisesi
bd63315752 Merge pull request #1193 from Cockatrice/doctoc
Add ToC to README
2015-07-03 17:29:42 -04:00
woogerboy21
a14a642b2b Merge pull request #1181 from ctrlaltca/servatrice_reload_config
Servatrice: refactor signal handling and permit config reloading
2015-07-03 12:29:12 -04:00
Gavin Bises
8ed9d35724 Update project to C++11 compilation. 2015-07-03 10:02:31 -04:00
Fabio Bas
f5be6f836e Improved logging of SIGHUP and cmdReloadConfig 2015-07-03 09:09:41 +02:00
Gavin Bises
9159958c78 Change RUN to CMD
oops
2015-07-03 01:09:27 -04:00
Gavin Bises
434d756b2a Fix typo in Dockerfile 2015-07-03 01:04:30 -04:00
Gavin Bises
a4be8e88d0 Set expose/cmd for Dockerfile 2015-07-03 00:54:32 -04:00
Zach H
cc3e4edfd9 rename function 2015-07-03 00:37:30 -04:00
Zach H
e2be1cd897 fix local mention crash 2015-07-03 00:30:59 -04:00
Gavin Bises
0f81af55d7 Add ToC to README
using doctoc

TOC entries with images need to be manually repaired,
https://github.com/thlorenz/doctoc/issues/73
2015-07-03 00:16:15 -04:00
Gavin Bisesi
dfd5c5e050 Merge pull request #1191 from Cockatrice/docker
Dockerfile for servatrice
2015-07-03 00:02:18 -04:00
Gavin Bises
7ac3201811 Dockerfile for servatrice
Compile & install servatrice

Unhandled currently:
servatrice.ini modification
mysql setup/config/connection
2015-07-02 23:58:25 -04:00
Zach
14e8fcdd44 Merge pull request #1190 from ctrlaltca/fix_1188
oracle: fix broken import of sets; fix #1188
2015-07-02 17:53:36 -04:00
Fabio Bas
5e1566046e removed debug 2015-07-02 15:31:14 +02:00
Fabio Bas
5f28dff30e Fix #1188 2015-07-02 09:22:05 +02:00
Fabio Bas
af9140d8c4 make gcc an happy puppy 2015-07-01 20:13:38 +02:00
Fabio Bas
8cac72158a MSVC fixes 2015-06-30 22:33:29 +02:00
Fabio Bas
6cf3db7e6b Servatrice: refactor signal handling and permit config reloading 2015-06-30 22:21:26 +02:00
Fabio Bas
6b54d8cbfd Fixed issues 2015-06-30 21:40:39 +02:00
Fabio Bas
02dcaff356 Publish username rules in login failure, too 2015-06-30 18:44:40 +02:00
Fabio Bas
4c27304047 publish username rules in registration failure 2015-06-29 23:35:27 +02:00
Zach
8407d7cc36 Merge pull request #1178 from Cockatrice/woogerboy21-servtriceini_activation_misspelling
Activation Email Misspelling
2015-06-29 17:32:47 -04:00
woogerboy21
304835c526 Activation Email Misspelling
Corrected the misspelling of the word "activating' in the servatrice.ini example file.
2015-06-29 17:05:48 -04:00
Zach
6fd1e839df Merge pull request #1168 from ctrlaltca/oracle_hidpi
Enable HiDpi on oracle too
2015-06-28 09:41:38 -04:00
ctrlaltca
9947af7be9 Merge pull request #1172 from ctrlaltca/translations
Updated translations
2015-06-28 15:18:15 +02:00
Fabio Bas
56db6cd060 Updated translations 2015-06-28 15:17:46 +02:00
ctrlaltca
4f972848a5 Merge pull request #1162 from ctrlaltca/oracle_fixes
Oracle fixes
2015-06-28 15:00:37 +02:00
Zach
36d0a13fc9 Merge pull request #1153 from ctrlaltca/issue_1144
Fix windows size growing out of screen; fix #1144
2015-06-27 21:20:57 -04:00
Zach
d2b71a15fa Merge pull request #1166 from ctrlaltca/fix_232
Support <tablerow> for tokens; fix #232
2015-06-27 20:49:14 -04:00
ctrlaltca
08d7f8e950 Merge pull request #1169 from ctrlaltca/nsis_fix
NSIS: Add components sections on uninstall.
2015-06-27 00:14:39 +02:00
Fabio Bas
74fef04a57 NSIS: Add components sections on uninstall. 2015-06-25 17:43:33 +02:00
Fabio Bas
a8de6d5c67 Enable HiDpi on oracle too 2015-06-25 16:02:26 +02:00
Fabio Bas
f84d6fec1b Never send wrong row numbers 2015-06-25 15:39:03 +02:00
ctrlaltca
816c01e6dd Merge pull request #1159 from poixen/server_usernames
Moved username formatting to INI file
2015-06-24 13:28:07 +02:00
ctrlaltca
a311678153 Merge pull request #1167 from ctrlaltca/translations
Updated translations
2015-06-24 13:26:57 +02:00
Fabio Bas
fa6e9c7344 updated translations 2015-06-24 13:26:02 +02:00
Matt Lowe
23b163341e Escaped additional punctuation 2015-06-24 13:08:38 +02:00
Fabio Bas
d0c0531bfc extracted new translatable strings 2015-06-24 13:01:23 +02:00
ctrlaltca
78a53f0691 Merge pull request #1151 from ZeldaZach/fix_1050
Fix False Notifications
2015-06-24 12:55:13 +02:00
Fabio Bas
ed24b38add support <tablerow> for tokens; fix #232 2015-06-24 10:31:00 +02:00
ctrlaltca
9f24728301 Merge pull request #1160 from ctrlaltca/image_blacklist
Small improvements to card image downloading
2015-06-24 09:57:30 +02:00
Fabio Bas
aed20324da reverted #163 2015-06-23 21:45:08 +02:00
Fabio Bas
f95fe57c1b Import split cards of any size; fix #181 2015-06-23 21:42:25 +02:00
Fabio Bas
6afc6cc4fd Cleaned and commented code 2015-06-23 19:36:40 +02:00
Fabio Bas
a1d28736d7 Oracle remove old code handling split cards; fix #382 2015-06-23 19:23:07 +02:00
Fabio Bas
872177a5ed Card images blacklist; changed fallback urls 2015-06-23 15:44:43 +02:00
Zach H
27fa6eb642 Fix False Notifications 2015-06-22 22:43:59 -04:00
Matt Lowe
d76073cdd1 Added default values 2015-06-22 22:02:36 +02:00
Fabio Bas
ec45a099e1 Made items not collapsible; changed players widget's min height from 60 to 40 px 2015-06-22 18:24:05 +02:00
ctrlaltca
0c24f48aa2 Merge pull request #1145 from ZeldaZach/fix_182
Fix Moved From Error
2015-06-22 17:29:15 +02:00
ctrlaltca
2415ba2605 Merge pull request #1134 from ctrlaltca/related_cards
Related cards
2015-06-22 17:22:47 +02:00
poixen
d7c81a07c6 Merge pull request #1155 from poixen/solid_counters
Solid counters
2015-06-21 08:39:38 +02:00
poixen
325c96dcd6 Merge pull request #1156 from poixen/table_ratio
Reduced min table width
2015-06-21 08:38:07 +02:00
Matt Lowe
a795d7d884 Moved username formatting to INI file
Rather than having the username limitations hard coded, I have moved it
into the ini file. I have added some examples to the code and also to
the ini.

This is only and example and can be expanded on by others.
2015-06-20 23:14:45 +02:00
Matt Lowe
4cc959396f Reduced min table width
The initial table width is too high. The table starts to scale down far
too soon, meaning you have to play in a letterbox ratio.
2015-06-19 23:40:55 +02:00
Matt Lowe
5c526f6c07 Solid counters
Removed gradient to give counters a more solid look
2015-06-19 23:26:36 +02:00
ctrlaltca
e581ef77e5 Merge pull request #1150 from ctrlaltca/deckeditor_fix2
Fix deckeditor jitter problem; fix #1143
2015-06-19 14:57:44 +02:00
Fabio Bas
c400d6d4ec use the new card frame in game; mitigates #1144 2015-06-19 14:57:20 +02:00
Fabio Bas
1ae79fbcaa Removed double margin around chatbox in game 2015-06-19 14:42:13 +02:00
Fabio Bas
1251338619 enforce max size for user avatar on userinfobox; refs #1144 2015-06-19 14:33:23 +02:00
Fabio Bas
d6ce1852a1 Fix deckeditor jitter problem; fix #1143 2015-06-18 23:13:12 +02:00
Zach H
045da30546 fix wording 2015-06-18 00:16:09 -04:00
Zach
853342463a Merge pull request #1138 from ZeldaZach/chatview_www
Fix WWW link error
2015-06-16 20:57:46 -04:00
ctrlaltca
8cf0c3beed Merge pull request #1141 from ZeldaZach/hq_options2
Allow Custom Download URL
2015-06-16 09:02:20 +02:00
Zach H
89f1298a48 change wording 2015-06-15 16:47:02 -04:00
Fabio Bas
38486b2248 updated 2015-06-15 15:01:17 +02:00
Fabio Bas
166d8db4ca rebased 2015-06-15 14:40:54 +02:00
Fabio Bas
f17dec29f6 Reorganized images in subfolders
As per @daenyth’s comment:
https://github.com/Cockatrice/Cockatrice/pull/792#issuecomment-76593730
2015-06-15 14:37:19 +02:00
Fabio Bas
092b0eaed6 removed empty version.txt files 2015-06-15 14:35:58 +02:00
Fabio Bas
6b8ebe54e9 Theme manager
This is the first implementation of a theme manager. It’s a rebased and
revisited version of #792.
2015-06-15 14:35:58 +02:00
ctrlaltca
48c3e64ef5 Merge pull request #1137 from ctrlaltca/deck_editor
Reworked deck editor
2015-06-15 12:51:51 +02:00
Fabio Bas
fac44966fd Reworked to use a qtabwidget: better cross-os look 2015-06-15 12:27:54 +02:00
Zach H
45c2e6f646 Allow Custom HQ URL 2015-06-15 01:03:41 -04:00
Zach
4c8e83f789 Merge pull request #1140 from ZeldaZach/prevent_clear
Remove Autoclear Issue
2015-06-14 21:22:20 -04:00
Zach H
be4a581f7c remove autoclear 2015-06-14 20:53:20 -04:00
Zach H
5d5eb05857 fix www error 2015-06-14 20:35:17 -04:00
Fabio Bas
3af5804073 Reworked deck editor 2015-06-13 20:37:51 +02:00
Fabio Bas
518bda8c09 Rotate 180 degrees the art of flipped cards 2015-06-13 16:10:06 +02:00
Fabio Bas
8826908923 Automatically attach related cards to the original card 2015-06-13 15:40:59 +02:00
Fabio Bas
9ca1329cac Fix for gcc compilation (-Werror=reorder) 2015-06-11 13:01:05 +02:00
Fabio Bas
946598375f Expose related cards in card menu 2015-06-11 12:45:25 +02:00
Fabio Bas
da84bb33e1 Import related cards in the card database 2015-06-11 10:48:50 +02:00
Zach
50b908c7c4 Merge pull request #1124 from ctrlaltca/migrations 2015-06-05 12:12:03 -04:00
Zach
1a52415b4e QT5 updated to 5.4.2 2015-06-04 17:04:52 -04:00
Fabio Bas
25a202b6fc Typo 2015-06-03 08:38:50 +02:00
Gavin Bises
1d08dc581b Notify slack for travis builds 2015-06-02 13:20:04 -04:00
Fabio Bas
0688dce449 Sql: Added "IF NOT EXISTS" where missing 2015-06-01 14:48:38 +02:00
Fabio Bas
135205d368 Implement migrations; fix #153 2015-05-31 17:36:15 +02:00
ctrlaltca
2de99475b0 Merge pull request #1121 from ctrlaltca/fix_1119
Permit the use of the same game type in more rooms; Fix #1119
2015-05-31 16:55:22 +02:00
Fabio Bas
83773e5e37 Fix #1119 2015-05-31 16:52:22 +02:00
ctrlaltca
be641a3146 Merge pull request #1120 from ctrlaltca/fix_1102
Fix "welcome" popup appearing more than once
2015-05-31 16:33:55 +02:00
Fabio Bas
7ff318bd04 Fix "welcome" popup appearing more than once 2015-05-31 16:32:46 +02:00
Zach
dd16ea78ac Merge pull request #1115 from poixen/text_highlight
Highlight text after adding card
2015-05-30 18:51:25 -04:00
woogerboy21
28ccec711e Merge pull request #1101 from ctrlaltca/registration
[WIP] In-client Registration support
2015-05-30 13:49:04 -04:00
Matt Lowe
7d2ad9ee3b Highlight text after adding card
After adding a card to the main or side, the search text will become
selected to easily start the next search
2015-05-30 16:50:52 +02:00
ctrlaltca
fab0a0ee4e Merge pull request #1110 from tooomm/text-works2
text works
2015-05-30 14:23:48 +02:00
ctrlaltca
595d70cf23 Merge pull request #1088 from ctrlaltca/customsets
Load additional xml sets from $userprofile/customsets/
2015-05-30 14:23:01 +02:00
Fabio Bas
657a5164e9 Fix servatrice compilation with msvc 2015-05-25 17:07:47 +02:00
tooomm
3767d49407 resolved typo 2015-05-25 03:27:27 +02:00
Fabio Bas
13b8fd4516 gcc -Werror=unused-parameter 2015-05-24 23:15:23 +02:00
Fabio Bas
471f6371b5 More work
* Refactored code out of common/ into servatrice/
 * added smtp client library
 * disable registration when connected
 * validate email address
 * send activation token via email
2015-05-24 23:02:51 +02:00
Fabio Bas
8cf4461616 fix qt4 compilation 2015-05-24 01:00:55 +02:00
Fabio Bas
d6cee242e3 Another gcc warning-as error removal 2015-05-24 00:53:08 +02:00
Fabio Bas
21155ce54a Make gcc an happy puppy (-Wunused-parameter) 2015-05-24 00:47:12 +02:00
Fabio Bas
ff1aed717e Added token generation, user activation command and response. 2015-05-24 00:37:45 +02:00
tooomm
8f64fd4a0b text works
fixed welcome msg
added some articles
added database phrase to card updater
cosmetic changes to the description in edit sets
2015-05-23 23:13:45 +02:00
Fabio Bas
42796b0d0e More fix for -Werror=unused-parameter 2015-05-23 21:17:22 +02:00
Fabio Bas
16d9534757 fix for -Werror=unused-parameter 2015-05-23 21:09:29 +02:00
Fabio Bas
d7b6f76191 missing file from previous commit 2015-05-23 20:13:21 +02:00
Fabio Bas
5ace0dd892 Almost completed registration
* added missing bits of serverside code;
 * added fronted in client;
 * removed demo python scripts;
2015-05-23 20:13:03 +02:00
ctrlaltca
411fc38337 Merge pull request #1106 from ctrlaltca/fix_1105
Fix crash on server shutdown; fix #1105
2015-05-23 18:26:13 +02:00
ctrlaltca
bce0b6b03a Merge pull request #1107 from poixen/replay_tab_text
Fixed replay crash
2015-05-23 18:25:51 +02:00
Matt Lowe
ad6dc16f84 Fixed replay crash
Game types are only available in online games.
This is the fastest fix.
Replays now work again.
2015-05-23 16:43:35 +02:00
Fabio Bas
323537d08d Fix crash on server shutdown; fix #1105 2015-05-23 11:33:36 +02:00
poixen
43c9f4e123 Merge pull request #1100 from poixen/new_sounds
Updated sounds
2015-05-22 21:03:14 +02:00
woogerboy21
3532c31d91 Merge pull request #1098 from poixen/gui_time_limit
Increased server shutdown limit
2015-05-22 14:52:32 -04:00
Gavin Bises
735fcbf311 Add first draft of protocol extension for registration
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...
2015-05-22 18:55:51 +02:00
Matt Lowe
4c1e24c214 fixed conflicts 2015-05-22 11:51:10 +02:00
poixen
d1b243481b Merge pull request #1086 from poixen/sounds
updated sounds
2015-05-22 11:19:50 +02:00
poixen
8eeec5ac7c Merge pull request #1087 from poixen/room_type
Added game type to tab title
2015-05-22 11:11:44 +02:00
Matt Lowe
7ac0f6f420 Added game type to tab title
+ The game type(s) is now displayed in the tab
+ Reformatted tab title
2015-05-22 10:39:49 +02:00
Matt Lowe
085eb0f2fa Increased server shutdown limit
Added a max of 999 mins for the server shutdown to the gui.
2015-05-22 10:00:25 +02:00
Zach
544666a3bc Merge pull request #1096 from ctrlaltca/update_spaces
Fix card update under windows
2015-05-21 16:07:37 -04:00
Fabio Bas
227c18fc5a Fix card update under windows
It failed if the path contained spaces.
2015-05-21 21:39:51 +02:00
Zach
5975184d67 Merge pull request #1091 from ZeldaZach/oracle_hideaway 2015-05-21 14:06:20 -04:00
Fabio Bas
6af91b3d1c Ignore filename case when loading custom sets 2015-05-21 19:58:35 +02:00
ctrlaltca
66c194e27e Merge pull request #1095 from ctrlaltca/translations
fixed untranslatable string, regenerated translations
2015-05-21 19:45:42 +02:00
Fabio Bas
ff20e04842 fixed untranslatable string, regenerated translations 2015-05-21 19:40:17 +02:00
ctrlaltca
c07e5e5970 Merge pull request #1094 from ctrlaltca/translations
Removed gaelic translation from oracle, too
2015-05-21 19:15:59 +02:00
Fabio Bas
df83a82fa3 Removed gaelic translation from oracle, too
The cockatrice translation has been removed yesterday.
2015-05-21 19:14:31 +02:00
Zach
d71c0b277f Merge pull request #1090 from tooomm/patch-1
expanded wording of name conflicts for tokens /2
2015-05-21 09:47:00 -04:00
Zach H
56c1a7f8b4 hideaway update 2015-05-21 09:45:16 -04:00
tooomm
7db7b7fb06 expanded wording of name conflicts for tokens /2
- removed space
- fixed wording
2015-05-21 15:17:52 +02:00
ctrlaltca
15dcfd1566 Merge pull request #1089 from ctrlaltca/translations
Translation updates
2015-05-20 19:44:51 +02:00
Fabio Bas
4da1404a06 Translation updates 2015-05-20 19:43:52 +02:00
Fabio Bas
9965d85864 Reorganized images in subfolders
As per @daenyth’s comment:
https://github.com/Cockatrice/Cockatrice/pull/792#issuecomment-76593730
2015-05-20 19:18:49 +02:00
Fabio Bas
b566bf4a19 Load additional xml sets from $userprofile/customsets/ 2015-05-20 18:27:50 +02:00
Matt Lowe
6ce07ebef2 Remade tap sound 2015-05-20 13:14:40 +02:00
Matt Lowe
3ac2a69b8b updated 2015-05-20 00:31:56 +02:00
Matt Lowe
5758ac685c Added untap sound
After more tinkering, it feels nice to have untap sound
2015-05-19 23:50:15 +02:00
Matt Lowe
1d2d7ea99b updated sounds
+ End step is now higher, so that it is easier to hear
+ Both end step and tap are a little louder

Updated sounds
2015-05-19 23:42:03 +02:00
Zach
292d730ca7 Merge pull request #1067 from tooomm/patch-1
expanded error msg for name conflicts (tokens)
2015-05-19 16:56:39 -04:00
poixen
5a516de26a Merge pull request #1078 from poixen/url
No need for [url][/url]
2015-05-19 22:43:37 +02:00
poixen
8209c59941 Merge pull request #1076 from poixen/sb_locked
Disable SB button when ready
2015-05-19 11:15:04 +02:00
Matt Lowe
af29d4529c Can now use more url types
Can now use
http://
https://
www.
2015-05-19 11:11:20 +02:00
Fabio Bas
8eb1be46b4 removed empty version.txt files 2015-05-17 23:33:28 +02:00
Fabio Bas
bdd55db549 Theme manager
This is the first implementation of a theme manager. It’s a rebased and
revisited version of #792.
2015-05-17 23:30:14 +02:00
Zach
5d08236cbe Merge pull request #1079 from ctrlaltca/fix_918
Removed resolved issues from TODO.md; fix #918
2015-05-16 13:08:51 -04:00
Fabio Bas
fab4781395 Removed resolved issues from TODO.md
Remove old unused sets.xml related files
Remove faqs and shortcuts doc since they’re outdated and been rewritten
in the wiki
2015-05-16 18:50:51 +02:00
ctrlaltca
15dd3471bc Merge pull request #1075 from ctrlaltca/fix_1070
Ensure sounds are working at startup; Fix 1070
2015-05-16 18:21:08 +02:00
ctrlaltca
25f444a5af Merge pull request #1051 from poixen/reveal_top_x
Reveal top x cards
2015-05-16 18:20:56 +02:00
ctrlaltca
262ebe3bf7 Merge pull request #1039 from ctrlaltca/update_oracle
Run oracle from inside cockatrice and improve sets handling;
2015-05-16 18:20:36 +02:00
Matt Lowe
9ce3aecd38 No need for [url][/url]
No longer need to use the [url] tags to add **HTTPS** links. I want to
only link to "secure" site by default, hence only https.

Users can still use [url] tags if they want to.

The ENTIRE chat  code needs to be rewitten, as it is just packing more
code upon code. It can be done in another PR though. This just gets the
base working feature in place.
2015-05-16 09:49:28 +02:00
Matt Lowe
f2c3045a71 Disable SB button when ready
Updated to trigger on receive rather than send
2015-05-16 08:49:38 +02:00
poixen
02453d3576 Merge pull request #3 from ctrlaltca/pr_1051
Add backward compatibility for new client on old servers
2015-05-15 20:36:35 +02:00
Fabio Bas
2299fa1ac4 Add backward compatibility for new client on old servers 2015-05-15 18:18:25 +02:00
Fabio Bas
8fba04397b All platform: at startup, ensure that a proper directory for sounds is set 2015-05-14 15:47:57 +02:00
Fabio Bas
924337ee93 revert 0b4701c42f 2015-05-14 15:36:44 +02:00
Fabio Bas
76422854a4 NSIS: default to INSTDIR\sounds directory 2015-05-14 15:36:29 +02:00
ctrlaltca
9c20811a7a Merge pull request #1071 from poixen/sounds
Cleanup
2015-05-14 15:14:36 +02:00
Fabio Bas
44800df89c Reworked the layout of "edit sets" window 2015-05-14 13:12:24 +02:00
Fabio Bas
58a5834f34 Implemented proposed changes to initial popup message 2015-05-14 12:38:30 +02:00
Matt Lowe
f1703ed0ad Cleanup
+ Removed todo
+ linked test sound to the player joined sound
2015-05-12 19:25:49 +02:00
ctrlaltca
18da49d454 Merge pull request #1068 from ctrlaltca/fix_1063
Fix macro for MSVC; fix #1063
2015-05-11 09:12:25 +02:00
Fabio Bas
590894d283 Fix macro for MSVC; fix #1063 2015-05-11 09:00:25 +02:00
tooomm
c541944089 expanded wording of name conflicts for tokens
added "Make sure to enable the 'token set' in 'Edit sets...' dialog to display them correctly."
2015-05-09 14:12:41 +02:00
ctrlaltca
50ab6295c5 Merge pull request #1062 from ctrlaltca/nsis
NSIS installer improvements; refs #876
2015-05-09 11:00:34 +02:00
Zach
07fcde038c Merge pull request #1065 from poixen/die_roll_parent
Connected die roll dlg to parent
2015-05-08 16:14:47 -04:00
Matt Lowe
80e53b334e Connected die roll dlg to parent
Die roll now has a logo as it is correctly connected to the parent.
2015-05-08 20:36:31 +02:00
ctrlaltca
474d952242 Merge pull request #1064 from ctrlaltca/fix_1063
Remove spaces and parenthesis from package names; hopefully fix #1063
2015-05-08 15:35:43 +02:00
Fabio Bas
8e89b0d7ec Remove spaces and parenthesis from package names; hopefully fix #1063 2015-05-08 15:14:01 +02:00
Fabio Bas
da5677080b NSIS installer improvements; refs #876
* uninstaller: delete zlib1.dll (first issue in #876)
 * require the user to uninstall the old version before installing the
new one
 * use project-version as branding name (fourth issue in #876)
2015-05-07 22:29:39 +02:00
poixen
a8c4e4439c Merge pull request #1055 from poixen/sounds
Refreshing Cockatrice Sound
2015-05-07 08:57:30 +02:00
poixen
df834183bd Merge pull request #1053 from poixen/reveal_makeover
Updated reveal zone
2015-05-07 08:54:35 +02:00
poixen
433412dee1 Merge pull request #1061 from poixen/filter_svgs
Updated filter svgs
2015-05-07 08:54:28 +02:00
Matt Lowe
5f27050962 flipped svg 2015-05-06 21:29:53 +02:00
poixen
9a81b15168 Merge pull request #1059 from poixen/dark_play
Updated hand and table color
2015-05-06 15:48:16 +02:00
Matt Lowe
c34718fe99 updated clear svg 2015-05-06 15:38:30 +02:00
Matt Lowe
5dfef6215c Added punctuation mark 2015-05-06 14:19:01 +02:00
poixen
325e240d67 Merge pull request #1044 from poixen/reveal_bug
Fixed revealing top card bug
2015-05-06 14:15:39 +02:00
Matt Lowe
6da6e5b562 Updated card loadout background 2015-05-06 14:09:27 +02:00
Matt Lowe
f2a53abcd8 Updated filter svgs
Now uses the same as in the deck editor
2015-05-06 13:25:06 +02:00
Matt Lowe
c64eeb4ebe Added sound settings page
+ added sound setting page
+ added sound setting icon
+ moved sound settings from interface settings

Added master volume

+ added master volume slider.
+ volume can be changed by sliding bar or by using the spin box
+ Preview of  volume will be played when dragging and releasing bar.

Added checks for qt4

Qt4 does not have support for setting the volume without some lengthy
work around, I have disabled volume control for qt4 users and have
mentioned that "Master volume requires qt5".

Updated sfx

+ removed all old sfx
+ added new end step and tap sound
+ tap/endstep sound has a timer on it to prevent spamming
+ test sound engine will now use endstep sound

Made end step sfx softer

end step felt too harsh

Added player joined sound

+ added a sound for when a new player joins a room

Updated

Was missing a sound when a player joins

Made end step softer

Made end step even softer

updated sound again
2015-05-06 12:47:48 +02:00
Matt Lowe
87d938e56b Updated hand and table color
Updated default colors, darker, more modern, slick. Great feedback from
community.
2015-05-05 23:58:36 +02:00
Matt Lowe
1e0c4cbf87 Updated reveal zone check boxes
I saw in some images from other platforms it can take up alot of space.
Made the boxed horizontal, rather than vertical.

WIP Remade reveal zone

+ darkened card area to eaisily see boundries
+ reverted back to using a window
+ window can be resized
+ removed fake title bar and "X"
+ moved all cards revealed slightly to the right, makes it easier to
drag-select from the left

Cleanup

Changed style to use cockatrice icon

Changed cast

from static_cast to qstyleoption_cast
2015-05-05 10:14:27 +02:00
poixen
cf24f4aa04 Merge pull request #1045 from poixen/move_reveal_location
Moved zone loactions
2015-05-04 17:09:23 +02:00
Zach
399122f49d Merge pull request #1047 from poixen/move_filter_boxes
Updated reveal zone check boxes
2015-05-04 10:47:44 -04:00
Matt Lowe
45d214aa19 Added deck size limit
Updated to use the current deck size limit
2015-05-04 16:21:59 +02:00
Zach
75ea89361f Merge pull request #1052 from poixen/mention_pop_fix
Can now disable desktop mentions
2015-05-04 09:36:20 -04:00
Matt Lowe
b81ed893e1 Can now disable desktop mentions
Was not checking if the setting was enabled
2015-05-04 12:40:51 +02:00
Matt Lowe
59c0834427 Reveal top x cards
Updated reveal top card to reveal top x cards
Sometimes you want to reveal more than only the top 1 card.
2015-05-04 10:49:49 +02:00
woogerboy21
01a85ce60b Merge pull request #1048 from ctrlaltca/crashed_into_you
Catch std exceptions thrown by protobuf and try to pretty print them
2015-05-03 08:00:31 -04:00
Zach
d2b6daae0a Merge pull request #1046 from ctrlaltca/version_date
Append last commit date to version string; fix #1036
2015-05-02 21:01:26 -04:00
Matt Lowe
052ce72993 Updated reveal zone check boxes
I saw in some images from other platforms it can take up alot of space.
Made the boxed horizontal, rather than vertical.
2015-05-02 21:18:02 +02:00
Fabio Bas
c605948975 Catch std exceptions thrown by protobuf and try to pretty print them 2015-05-02 21:17:55 +02:00
Fabio Bas
6e9a211aed Append last commit date to version string
Shown in “about” dialog and used in windows packages name.
2015-05-02 19:14:14 +02:00
ctrlaltca
53f63e2801 Merge pull request #1024 from tooomm/icon_works
Icon works
2015-05-02 18:32:28 +02:00
ctrlaltca
8cbf89410b Merge pull request #1041 from poixen/protobuf_error
Removed lprotobuf error on building
2015-05-02 18:31:24 +02:00
Matt Lowe
7ccc23f902 Moved zone loactions
I have moved the default opening positions of some of the reveal zones.

Example:

The sideboard will be in the same position as the scry and the random
card from hand will be the same as the hand view.
2015-05-02 17:52:34 +02:00
Matt Lowe
33fa3ae032 Fixed revealing top card bug
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.
2015-05-02 17:25:41 +02:00
Zach
9ff22eaf17 Merge pull request #1040 from poixen/fixed_search
Reverted back to full punctuation
2015-05-01 18:02:31 -04:00
Matt Lowe
878b760321 Removed lprotobuf error on building
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.
2015-05-01 22:32:31 +02:00
Matt Lowe
95104df589 Reverted back to full punctuation
Reverted back. Right now it feels strange to only have simple search.
Really you would want both simple search AND accurate search on, though
this requires twice the checks for each result.
2015-05-01 22:26:44 +02:00
Fabio Bas
66adeb6d75 Improve sets handling
Move the “check unknown sets” method inside the cards database, so that
it can be executed when the card database gets reloaded after a card
database update.
Additionally, show the user a welcome message the first time they run a
new cockatrice version, so that they know why they get shown the “edit
sets” window and how to hide/disable sets.
2015-05-01 18:55:14 +02:00
Fabio Bas
c356a6fc48 Run oracle from cockatrice 2015-05-01 16:38:31 +02:00
Zach
ca2ff99391 Merge pull request #1037 from tooomm/patch-1
fixed typos + small adjustments in contributing.md
2015-04-29 09:36:47 -04:00
tooomm
1af358c4df fixed typos 2015-04-29 15:30:30 +02:00
Zach
5410afbbb1 Merge pull request #1035 from ctrlaltca/fix_762
Add "play top card face down" menu entry to library; fix #762
2015-04-28 11:33:41 -04:00
tooomm
a6970d9624 svg+png updates
-updated and cleaned up cockatrice+servatrice svg's
-added old original svg's for future adjustments
-updated cockatrice+servatrice png's

ico+icns updates

-see #925 for more details
-updated svg's as source for new icon files

bmp updates

-updated svg's as source for new installer logos

cleaned up oracle.svg

cleaned up oracle.svg /2

svg updates /2

removed sensible data

`inkscape:export-filename` removed

removed sensible data

inkscape:export-filename

removed sensible data

inkscape:export-filename

removed sensible data

inkscape:export-filename

fix

fix2
2015-04-28 16:06:36 +02:00
Fabio Bas
e649535211 Add "play top card face down" menu entry to library; fix #762 2015-04-27 23:02:45 +02:00
Zach
11c6e8ce34 Merge pull request #1034 from ZeldaZach/gamescene_fix
Fixed incorrect zone positioning
2015-04-27 16:51:48 -04:00
Zach H
425790e398 Fixed incorrect zone positioning 2015-04-27 16:26:57 -04:00
Zach
1ca561dec5 Merge pull request #1033 from poixen/token_pt_fix
Only use local db if no pt is provided
2015-04-27 15:58:41 -04:00
Zach
c5ac3701ba Merge pull request #1031 from ZeldaZach/update_about_menu 2015-04-27 12:21:15 -04:00
Zach H
a15a0c0385 gavin & translate update
Add dev section

add report section
2015-04-27 11:34:53 -04:00
Matt Lowe
6fd5c4dd27 Only use local db if no pt is provided
Addresses issue #1032

If a token is created with no p/t then the local db value will be passed
instead. If a value is provided then that will be used instead.
2015-04-27 10:17:46 +02:00
ctrlaltca
11da8d09bf Merge pull request #1030 from tooomm/patch-1
removed tr() tag from hidden strings
2015-04-27 08:48:58 +02:00
tooomm
f83ddf48fd cleaned up translations
removed tr() tag from hidden strings
2015-04-27 00:25:43 +02:00
Zach
f6d0b5216b Merge pull request #1027 from ctrlaltca/osx_retina_ok
Enable hidpi (retina) support under osx
2015-04-26 18:13:56 -04:00
poixen
ab28b45d68 Merge pull request #1029 from poixen/server_shutdown_fix
Fixed server shutdown crash
2015-04-27 00:12:28 +02:00
Matt Lowe
a729bb076b Fixed server shutdown crash
`serverShutdownMessageBox` was not assigned to 0 in the ctor.
2015-04-26 23:39:20 +02:00
Zach
1f2641d562 Merge pull request #1023 from poixen/server_p_t_fix
Fixed issue with non creature perms set to 0/0
2015-04-26 17:28:29 -04:00
Zach
ecaaa9eeb8 Merge pull request #1022 from poixen/orange_pt
Changed pt to orange
2015-04-26 17:25:16 -04:00
Fabio Bas
e88bad786f Enable hidpi (retina) support under osx
* add to the application bundle a custom info.plist
 * fix a graphic glitch on the life counter
2015-04-26 22:50:59 +02:00
Matt Lowe
9c1e509a37 Fixed issue with non creature perms set to 0/0
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.
2015-04-26 00:57:31 +02: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
ctrlaltca
54f0706b4a Merge pull request #1019 from ctrlaltca/translations
Fetched new translations from Transifex
2015-04-24 17:23:35 +02:00
Fabio Bas
9e281f70ae Fetched new translations from Transifex 2015-04-24 17:19:46 +02:00
Zach
a16f8e02e3 Merge pull request #1016 from poixen/add_remove_buttons
Updated + / - buttons
2015-04-23 17:48:13 -04:00
Matt Lowe
74f140ade8 removed qfont import 2015-04-23 23:06:21 +02:00
Matt Lowe
637bd767bb Updated to use svgs 2015-04-23 22:43:24 +02:00
Matt Lowe
1ab2ba3f6f Updated + / - buttons
+ moved to the left to make it easier to move from buttons to macros
+ changed buttons to + / -
+ made buttons a bit bigger
2015-04-23 18:42:49 +02:00
woogerboy21
924dd174e3 Merge pull request #1010 from poixen/server_shutdown_warnings
Updated server shutdown timer logic
2015-04-23 10:59:32 -04:00
Matt Lowe
66f854fe1d Changed to check every 10 mins 2015-04-23 00:26:21 +02:00
Zach
269a62c801 Merge pull request #1005 from poixen/colored_PT
Colored PT
2015-04-22 17:39:02 -04:00
Zach
1e474bef94 Merge pull request #1009 from poixen/p_t_fix
Fix for #1007
2015-04-22 17:33:41 -04:00
Matt Lowe
e646122f55 Updated server shutdown timer logic
Will follow the following rules

+ send a message initially
+ send a message every 20 mins
+ send a message every min when time <= 5

Updated client popup

Updated client to close any previous popups and bring up a new one.

NEEDS TO BE TESTED

added missing include

Added delete on close
2015-04-22 19:14:14 +02:00
Matt Lowe
1356bbcd94 Fix for #1007 2015-04-22 16:53:07 +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
ctrlaltca
82d8c72427 Merge pull request #1002 from ctrlaltca/refix_999
Added translation fix missing from #1001
2015-04-22 12:03:34 +02:00
Fabio Bas
7e56c5a9c6 Added translation fix missing from #1001 2015-04-22 11:10:14 +02:00
ctrlaltca
36a0d25ceb Merge pull request #1001 from ctrlaltca/fix_999
Permit translation in "game created" column; Fix #999
2015-04-22 09:51:09 +02:00
Fabio Bas
629f48e2ff Permit translation in "game created" column; Fix #999
Also, extracted the 2 new strings
2015-04-22 09:12:38 +02:00
woogerboy21
3141fb84e9 Merge pull request #994 from Cockatrice/woogerboy21-removewindebugoutput
Remove --debug-ouput on start menu shortcut
2015-04-21 12:34:46 -04:00
ctrlaltca
98632741d4 Merge pull request #997 from ctrlaltca/translations
Updated translations
2015-04-21 14:50:13 +02:00
Fabio Bas
af3a3239fb Updated translations 2015-04-21 14:49:50 +02:00
ctrlaltca
4a36be84a8 Merge pull request #985 from ctrlaltca/sets_rebased
Rework the way sets selection/importing works; fix #539 (rebased)
2015-04-21 14:46:51 +02:00
ctrlaltca
cbd2595d7b Merge pull request #996 from ctrlaltca/travis_debug
Switch travis builds to debug mode, since they catch more errors
2015-04-21 09:30:54 +02:00
Fabio Bas
3c0ffef06d Switch travis builds to debug mode, since they catch more errors
In debug mode, warnings are considered as errors.
2015-04-21 08:58:37 +02:00
ctrlaltca
64315f7750 Merge pull request #995 from ctrlaltca/servatrice_fixes
Remove warning in server_logger; fix #993
2015-04-21 08:56:05 +02:00
Fabio Bas
55c174a823 Remove warning in server_logger; fix #993 2015-04-21 08:38:31 +02:00
woogerboy21
1b09b76eee Remove --debug-ouput on start menu shortcut
Remove argument that if added by default with out having the proper configuration defined during compiling would cause cockatrice to not open properly.
2015-04-20 23:28:10 -04:00
poixen
2902d8575e Merge pull request #983 from poixen/mention_fix
Mentions will now work with all legal chars
2015-04-20 14:20:23 +02:00
Zach
118bc06ae8 Merge pull request #987 from poixen/storm
Added colored storm counter
2015-04-19 14:21:05 -04:00
Zach
374313a295 Merge pull request #988 from ctrlaltca/servatrice_crash
Simple stack trace for signal handler (unix only)
2015-04-19 14:07:52 -04:00
Fabio Bas
70296dde9a Simple stack trace for singla handler (unix only) 2015-04-19 19:39:05 +02:00
ctrlaltca
5f13f89d74 Merge pull request #986 from poixen/clear_chat_fix
Added clear chat fix
2015-04-19 18:20:40 +02:00
Matt Lowe
9a36ac8035 Added colored storm counter 2015-04-19 18:14:29 +02:00
Matt Lowe
86fa02c6c5 Added clear chat fix
When clearing the chat, we now clear the last sender.

This fixes the issue where you clear the chat and a user continues to
talk, you get no indication of who is talking. Now it will show the
users name.
2015-04-18 22:23:51 +02:00
Fabio Bas
881cea27f4 Rework the way sets selection/importing works; fix #539 (rebased) 2015-04-18 18:47:09 +02:00
ctrlaltca
e69ca60164 Merge pull request #978 from tooomm/useronserver_rename
clearly differentiate user lists
2015-04-18 18:17:55 +02:00
Matt Lowe
2d34bfeb1b Mentions will now work with all legal chars
As the server has been updated to enforce username rules, we can now
check for the next position of whitespace. This allows ALL users to have
a working mention system. Currently "-" is available for users, this
will fix that.
2015-04-18 14:42:39 +02:00
woogerboy21
69a9484e45 Merge pull request #981 from ctrlaltca/servatrice_compilation_fix
Quick compilation fix for debug mode
2015-04-17 13:44:26 -04:00
woogerboy21
1562d1efd1 Merge pull request #980 from poixen/server_period
Updated server to support "."
2015-04-17 13:44:15 -04:00
Fabio Bas
3d0b132dae yet another unused parameter 2015-04-17 18:57:37 +02:00
Fabio Bas
3969572d36 Fixed double variable declaration 2015-04-17 18:51:48 +02:00
Matt Lowe
1f9b1d78bc Double escaped "." 2015-04-17 17:47:58 +02:00
Fabio Bas
2a9945ac6a Reorder member initialization 2015-04-17 17:44:07 +02:00
Fabio Bas
1b9d835213 Quick compilation fix for debug mode 2015-04-17 17:30:42 +02:00
ctrlaltca
6807fed02f Merge pull request #976 from ctrlaltca/fix_643
Fix #643 (problem in deck editor's OR filter when no term is enabled)
2015-04-17 09:47:32 +02:00
ctrlaltca
b99a0a682e Merge pull request #973 from poixen/filter_dlg
Filter password games consistancy
2015-04-17 09:47:18 +02:00
Matt Lowe
bba9539229 Updated regex 2015-04-17 00:17:03 +02:00
Matt Lowe
d5a1264bcb Updated server to support "."
Now uses regex.
Added "."
Updated login message
2015-04-16 23:50:05 +02:00
Fabio Bas
c27735b09e Simplified code 2015-04-16 22:20:40 +02:00
Zach
302cb3ba4e Merge pull request #975 from ctrlaltca/qtxml
Remove dependency on QtXml (unused)
2015-04-16 11:27:51 -04:00
tooomm
5be3ec8068 clearly differentiate users lists
users in room vs. users on server
2015-04-16 15:17:08 +02:00
Fabio Bas
9296e6007f Fix #643 2015-04-16 12:44:10 +02:00
Fabio Bas
42c0b09fbd Remove dependency on QtXml (unused) 2015-04-16 12:26:02 +02:00
ctrlaltca
2f35e86be9 Merge pull request #954 from ctrlaltca/deckeditor_cmc
Minor deck editor fixes
2015-04-16 08:12:53 +02:00
ctrlaltca
997ca87377 Merge pull request #966 from ZeldaZach/remove_unnecessary_tr
Fixing Shortcuts; Fix #476
2015-04-16 08:12:26 +02:00
ctrlaltca
af33ff5b0e Merge pull request #974 from ctrlaltca/deckeditor
Speed up deck editor filtering
2015-04-16 08:09:58 +02:00
Fabio Bas
eb6d067a21 Speed up deck editor filtering
* card: cache simpleName for each card
 * deck editor: remove double comparation of searched term with card
name when sorting
2015-04-15 23:21:44 +02:00
Matt Lowe
8938d291f8 Filter password games consistancy 2015-04-15 22:00:52 +02:00
poixen
feeaa9c9d1 Merge pull request #970 from poixen/updated_username_message
updated second string
2015-04-15 20:23:24 +02:00
poixen
53d25e738d Merge pull request #969 from poixen/game_created
Game created code improvements
2015-04-15 20:22:45 +02:00
poixen
698e6ccee4 Merge pull request #950 from poixen/zone_grammar
Updated grammar based on #932
2015-04-15 20:21:49 +02:00
Matt Lowe
751315a413 updated second string 2015-04-15 19:03:59 +02:00
poixen
aa95125fb2 Merge pull request #955 from poixen/custom_folder_link
Added menu item to open custom image folder
2015-04-15 14:51:04 +02:00
poixen
82d2ac8c32 Merge pull request #965 from poixen/updated_username_message
Updated invalid username dlg
2015-04-15 14:23:50 +02:00
Matt Lowe
386cbcec7f Updated username dlg message
updated
2015-04-15 14:22:56 +02:00
Matt Lowe
25dbfb37f4 Game created code improvements
+ No longer get "5hrs" and "5+ hrs" instead will be "4hrs" and "5+ hrs".
+ Refactored into an else-if with a single return.
+ removed comments
+ removed code from namespace and added to class
2015-04-15 14:18:16 +02:00
poixen
cf313d5a8d Merge pull request #968 from poixen/simple_search
Removed check
2015-04-15 12:36:33 +02:00
Matt Lowe
2e5ecd841c Removed check
When searching for a card the line edit will not be empty, so this check
is not needed. The performance when the line edit IS empty will take a
slight hit, but you really want additional performance when searching,
not when the line edit is empty.

Removing will increase performance.
2015-04-15 12:25:06 +02:00
poixen
2f96cf20ae Merge pull request #967 from poixen/simple_search
Simple name searching on by default
2015-04-15 00:03:27 +02:00
Matt Lowe
778ad8dee1 Simple name searching on by default
Previously would try to match the card name, if nothing is found, then
we would try again with the simple name.

I have now made it only the simple name version. We do not need to
perform the first check. Should help a little with performance.
2015-04-14 23:30:29 +02:00
Zach H
9be29641b0 apply QKeySequence & remove unnecessary tr 2015-04-14 17:17:01 -04:00
Matt Lowe
2336ee4f84 Updated invalid username dlg
Relates to #964. We want to give a the correct reason for failed logins
and display the reason why.
2015-04-14 09:59:29 +02:00
poixen
f79d0666e3 Merge pull request #964 from poixen/unreg_usernames
Updated server side user name check
2015-04-13 22:39:45 +02:00
Matt Lowe
0979f8fa34 Updated return value 2015-04-13 22:09:47 +02:00
poixen
72222c0b39 Merge pull request #963 from poixen/unreg_usernames
Added "-" to allowed names
2015-04-13 21:14:43 +02:00
Matt Lowe
53352c5f71 Added "-" to allowed names 2015-04-13 20:51:34 +02:00
Zach
cd49b2f785 Merge pull request #960 from poixen/capitalize_text
Capitalized some text
2015-04-12 19:38:19 -04:00
Zach
7accc70ea7 Merge pull request #958 from poixen/additional_separators
Updated context menus
2015-04-12 19:05:40 -04:00
Zach
5117c0e6c9 Merge pull request #956 from poixen/unreg_usernames
Restricted unreg usernames
2015-04-12 19:02:31 -04:00
poixen
a2f416bb51 Merge pull request #959 from poixen/server_command_limit
Server was using message limit for commands
2015-04-13 00:32:25 +02:00
Matt Lowe
b68cf51341 Added menu item to open custom image folder
Needs to be tested on mac
2015-04-13 00:30:49 +02:00
Matt Lowe
bf0f3e0b44 Capitalized some text 2015-04-13 00:05:58 +02:00
Matt Lowe
b9cda5e36e Updated ini 2015-04-12 23:01:29 +02:00
Matt Lowe
f46d68b5c6 Server was using message limit for commands
Server was using getMaxMessageCountPerInterval over
getMaxCommandCountPerInterval.

Raised command limit from 10 to 20
2015-04-12 22:55:38 +02:00
Matt Lowe
1b165bde4c Updated context menus
+ added more separators
+ swapped some actions from lib menu (scry action now higher)
+ Added capital letters to words
2015-04-12 22:36:48 +02:00
Matt Lowe
a2aad95ede Added missing checks 2015-04-12 21:52:17 +02:00
poixen
2d2d038475 Merge pull request #953 from poixen/message_count
Updated message limit from 10 -> 15
2015-04-12 21:35:45 +02:00
Matt Lowe
70ef95931e Restricted unreg usernames
Can now only be made up of [a-z][A-Z][0-9][-_]
2015-04-12 21:29:40 +02:00
Matt Lowe
8e61fb0bae Updated message limit from 10 -> 15
I have updated the `maxMessageCountPerInterval` from 10 to 15. This will
allow some faster play from exp users.

NOTE:
If you have an existing server and update to this version, you will need
to manually change the value in the ini file, or have no ini file to
begin with. Otherwise the old ini will load in 10.
2015-04-12 19:01:16 +02:00
Fabio Bas
25290227ca Sort Mana cost using CMC 2015-04-12 18:54:00 +02:00
Fabio Bas
0e203b3ac2 CardDatabaseDisplayModel: sort cards by search term only when the current sort column is NameColumn
When the list os sorted using another column, you don’t  need to
compare that column’s value with the searched term
2015-04-12 18:43:45 +02:00
Fabio Bas
013087a4eb CardDatabaseModel: use an enum for columns 2015-04-12 18:42:10 +02:00
poixen
1e06a971fa Merge pull request #951 from poixen/zone_view_crash_fix
Zone crash fix
2015-04-12 17:57:54 +02:00
Matt Lowe
379ceeeca0 Zone crash fix
Related to #808

When closing the app/game tab with a zone revealed the client will
crash. This was due to the zones not being deleted.
2015-04-12 17:39:04 +02:00
Matt Lowe
6e39cc3823 Updated grammar based on #932
Based on #932 I have added pronouns the the graveyard and hand, and also
changed "from play" to "from battlefield"
2015-04-12 17:00:43 +02:00
poixen
4c66ef03e2 Merge pull request #937 from poixen/create_token_dlg
Updated token dlg
2015-04-12 16:36:45 +02:00
Gavin Bisesi
dddaec1344 Merge pull request #948 from ctrlaltca/fix_947
fix #947 : typo in servatrice install path under linux
2015-04-11 12:45:04 -04:00
Fabio Bas
7bbb5dec52 fix #947 2015-04-11 15:19:16 +02:00
poixen
177c1b2f6a Merge pull request #945 from poixen/chat_lag_fix
Fixed main chat room lag
2015-04-11 01:37:14 +02:00
Matt Lowe
06accd519c Fixed main chat room lag 2015-04-11 00:49:07 +02:00
Zach
19e86c61f0 Merge pull request #940 from poixen/token_pt_fix
Fixed token PT issue for #931
2015-04-10 16:21:17 -04:00
Zach
2a86cf572b Merge pull request #939 from poixen/pt_fix
Creatures can now have power less than -1
2015-04-10 16:10:35 -04:00
poixen
fbb7194a10 Merge pull request #942 from poixen/logic_order
Added () for || && logic handling
2015-04-10 15:01:28 +02:00
ctrlaltca
273f36ab63 Merge pull request #943 from ctrlaltca/translations
Fetch updated translations from transifex
2015-04-10 13:37:17 +02:00
Fabio Bas
9f0b383036 Fetch updated translations from transfix 2015-04-10 13:35:23 +02:00
Matt Lowe
44d4a534bf Added () for || && logic handling 2015-04-10 13:31:44 +02:00
ctrlaltca
1b30b2e4ce Merge pull request #941 from ctrlaltca/translations
extract new strings
2015-04-10 13:30:28 +02:00
Fabio Bas
bc7cb6279b extract new strings 2015-04-10 13:29:05 +02:00
Matt Lowe
9689b8e56a Fixed token PT issue for #931
The problem was that back when I added #336 I made it so that if YOU
didnt recive the PT of the token, then it would be fetched from your
tokens.xml, the issue is that we needed to send that value to the
server. The server sees it as a 0/0

This fix will send the PT from the tokens.xml if available.
2015-04-10 13:26:38 +02:00
Matt Lowe
be2a5f4720 Creatures can now have power less than -1
Addresses issue from #934
2015-04-10 12:39:41 +02:00
poixen
db23d3c9ec Merge pull request #936 from poixen/replay_system
Reworked replay buttons
2015-04-10 10:43:44 +02:00
poixen
3bf3c7e94e Merge pull request #922 from poixen/sys_icon_fix
Fixed double click sys icon
2015-04-10 10:36:36 +02:00
poixen
ebcee34e0d Merge pull request #923 from poixen/popup_fix
Fixed issue with clicking on PM/mention bubbles
2015-04-10 10:36:20 +02:00
poixen
1fd75f4c52 Merge pull request #925 from tooomm/oracle_icons
oracle icon updates
2015-04-10 10:35:02 +02:00
poixen
2356788289 Merge pull request #929 from poixen/reveal_top_card_shortcut
Added shortcut to reveal top card or lib
2015-04-10 10:33:04 +02:00
poixen
88da9ec815 Merge pull request #938 from poixen/load_token_fix
Fixed deck tokens showing in token dlg
2015-04-10 10:29:13 +02:00
Zach
ef09f45c57 Merge pull request #935 from poixen/menu_sep
added separator
2015-04-09 20:37:11 -04:00
Matt Lowe
884579529d Fixed deck tokens showing in token dlg
Tokens from decks will now show in the token dlg window
2015-04-10 00:46:11 +02:00
Matt Lowe
4ca58eecb7 Updated token dlg
Adjusted proportions to make the table fit better.

Needs to be checked on UHD screens.
2015-04-09 18:34:21 +02:00
Matt Lowe
45542243b7 Reworked replay buttons
+ Removed unused buttons
+ remade button art
+ fixed crash with font colors/replays
+ removed unused timestamp label in replay
2015-04-09 16:05:12 +02:00
Matt Lowe
56cbae17ac added separator
Felt like areas different to the current zone should be segregated.
2015-04-09 14:44:29 +02:00
ctrlaltca
7ea755ab5a Merge pull request #930 from poixen/server_timeout_dlg
👍
2015-04-08 21:26:22 +02:00
Matt Lowe
a7d41a322c Added connection dlg popup on server timeout 2015-04-08 21:00:33 +02:00
poixen
86f6e911bd Merge pull request #920 from poixen/card_search_punctuation
Ignore punctuation in card search
2015-04-08 20:30:37 +02:00
Matt Lowe
b27854e440 Ignore punctuation in card search
It is awkward to have to use precise punctuation when searching for
cards. Planeswalkers and legendary creatures often have "," in the name
and you have to enter it.

This commit means you no longer need to do that.

+ Can use " " in place of "-" (example: Wilt-Leaf Liege)
+ Can use "" in place of non word chars (Example: Hero's Downfall and
Ajani, Caller of the Pride)
2015-04-08 18:35:27 +02:00
Zach
6f69485f99 Merge pull request #911 from ctrlaltca/fix_67
Large decks (up to 8000-ish cards) no longer make client crash; Fix #67
2015-04-08 10:56:33 -04:00
Matt Lowe
fbbeb12413 Added shortcut to reveal top card or lib
+ Ctrl + N
2015-04-08 13:09:00 +02:00
ctrlaltca
0b4b8e85e8 Merge pull request #928 from ctrlaltca/optimize_loop
Optimize loop; refers #910
2015-04-08 12:53:27 +02:00
ctrlaltca
c04055a44c Merge pull request #927 from pepi55/servatrice-warnings
Removed NULL conversion warnings caused by #926
2015-04-08 12:53:11 +02:00
Fabio Bas
8f3421204e Optimize loop; refers #910 2015-04-08 12:52:02 +02:00
pepi
05424a4c0e Removed NULL conversion warnings caused by #926 2015-04-08 10:36:33 +00:00
ctrlaltca
869d89dfdd Merge pull request #926 from pepi55/servatrice-warnings
Removed compile time ssize_t warnings
2015-04-08 12:01:44 +02:00
pepi
e136c11b65 Removed compile time ssize_t warnings 2015-04-08 09:39:32 +00:00
Matt Lowe
1c89b90cbb Fixed double click sys icon
Was an issue with double clicking the icon when the app was full screen/
fullscreen + minimized.

Now works as expected.
2015-04-08 10:12:41 +02:00
Zach
81e4e089d4 Merge pull request #921 from poixen/more_server_whitelist
Added more actions to server white list
2015-04-07 23:57:08 -04:00
tooomm
b8219ca82b oracle icon updates
- ico for win
- icns for mac
both now with several resolutions inside and high res support

mac version even included old+different logo
2015-04-08 01:23:20 +02:00
Matt Lowe
6b307469fe Fixed issue with clicking on PM bubbles
Previously would not open the client if the window was minimized.
Added the same popup fix for mentions
2015-04-07 23:32:13 +02:00
Matt Lowe
7680154395 Added more actions to server white list
I have added card moving to the white list. I was getting flood messages
when moving cards quickly in my side deck.
2015-04-07 21:49:49 +02:00
poixen
c07ec9aa23 Merge pull request #917 from Cockatrice/revert-721-kick_message
Revert "Kick message no longer takes you to kicked tab"
2015-04-07 16:21:38 +02:00
poixen
89bce3d649 Revert "Kick message no longer takes you to kicked tab" 2015-04-07 15:55:11 +02:00
Zach
6e2ea1e15b Merge pull request #912 from poixen/mention_popup_fix
Mention popup fix
2015-04-05 17:31:14 -04:00
Matt Lowe
b20ae9710c Mention popup fix
+ will now only popup with a mention alert when you are not on the same
tab/window.
+ will also no longer popup by mentioning yourself
2015-04-05 12:43:02 +02:00
Zach
8ca2135f08 Merge pull request #901 from poixen/left_justified_hand
Left hand justification
2015-04-04 17:45:02 -04:00
poixen
7c6b6818f1 Merge pull request #907 from poixen/right_click_cast
Right click cast
2015-04-04 23:38:53 +02:00
poixen
e96e2e4b04 Merge pull request #906 from poixen/rename_user_lists
Renamed userlist tab to account
2015-04-04 23:38:44 +02:00
Zach
174d309b67 Merge pull request #910 from ctrlaltca/fix_118
Fixes columns being split by selected sections; Fix #118
2015-04-04 10:15:33 -04:00
Fabio Bas
0a366d7564 Fix #67
Workaround the two remaining issues, mostly fixing the “load deck”
screen in tab_game:
 * Only preload up to the first 300 cards of a deck;
 * don’t even bother trying to load card images if they’ll be shown
with width <= 10

Trying a 17k cards deck like the one proposed in #67 is still a no go,
mostly due to the cpu time used to create all the objects. Anyway, i
tested decks up to 8k cards and they works fine now (if you like to
wait while trice is loading them)..
2015-04-04 14:03:22 +02:00
Fabio Bas
cab1e096df Fix #118
Fix selection problem when sorting the deck list
2015-04-04 12:49:28 +02:00
Matt Lowe
20bfb4d0a7 Fix for hand target casting
if you have the setting to NOT play cards to the stack enabled, it meant
that any spells (like Lightning Bolt) would be cast to the stack but no
arrow would show. This was an edge case I missed.
2015-04-03 19:02:14 +02:00
Matt Lowe
725cb2f863 Renamed userlist tab to account 2015-04-02 23:02:54 +02:00
poixen
b8401592d4 Merge pull request #905 from poixen/socket_failure_dlg
Reopen connection if socket failure
2015-04-02 19:22:18 +02:00
Matt Lowe
9e6be7459d Reopen connection if socket failure
Missed from #879
2015-04-02 18:33:35 +02:00
poixen
79e9b05a79 Merge pull request #904 from poixen/rounder_logo
Rounder logo corner
2015-04-02 17:39:57 +02:00
poixen
a84418bb91 Merge pull request #902 from poixen/default_one_player
Default to one player
2015-04-02 17:39:33 +02:00
Matt Lowe
aeb63cba87 Rounder logo corner
Before:

After:
2015-04-02 14:30:41 +02:00
Matt Lowe
986eab4d40 Default to one player
I think the majority of players use this feature for
goldfishing/practicing. Defaulting to one player for convenience.
2015-04-02 13:23:39 +02:00
Matt Lowe
a082fbcfef Left hand justification
Set to false by default, let me know if you think it should be true.

As all cards are played to the left of the screen this feels more
comfortable to use as you dont need to keep looking at different areas
of the screen.

Will auto rearrange when changed during game-play.
2015-04-02 12:49:06 +02:00
Zach
bc8d9427e3 Merge pull request #899 from poixen/mull_flood
Added Mull to the server whitelist
2015-04-01 18:15:44 -04:00
Zach
e40a79d931 Merge pull request #900 from ctrlaltca/fix_884
Reinstates hidden cards being hidden; fix #884
2015-04-01 18:15:28 -04:00
Fabio Bas
dcc6677e8f fix #884 2015-04-01 23:04:10 +02:00
Matt Lowe
c039a3aa42 Added Mull to the whitelist
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.
2015-04-01 22:08:46 +02:00
Zach
fb49a8867e Merge pull request #897 from poixen/counter_issue
Fixed accidental +/- of counters when using middle click menu
2015-04-01 15:54:41 -04:00
Zach
6c35253bcc Merge pull request #898 from poixen/sb_clean_lines
Refactored code and made lines cleaner
2015-04-01 15:52:58 -04:00
Matt Lowe
a0be18ca09 Removed dev code 2015-04-01 18:33:02 +02:00
Matt Lowe
e78747241d Refactored code and made lines cleaner
Before:

After:
2015-04-01 17:24:50 +02:00
Zach
580927a50b Merge pull request #870 from ctrlaltca/mentions
Reworked a bit mentions/tags support in chat view; fix #791
2015-04-01 09:34:42 -04:00
Gavin Bisesi
48f88e117e Merge pull request #895 from poixen/close_tray_icon
tray icon is now hidden and then removed
2015-04-01 06:17:37 -04:00
Zach
60757af5dc Merge pull request #896 from poixen/swap_life_order
Fixed order of the counters
2015-03-31 22:41:41 -04:00
Matt Lowe
a873a4efa4 Fixed accidental +/- of counters
Previously if you middle click on a counter (life/mana) and then click
away, depending on the button clicked, the counter would +/-.

I have added a fix to make sure the mouse is over the counter to change
it.
2015-03-31 23:07:24 +02:00
Matt Lowe
2684397a1e Fixed order of the counters
Previously had - numbers at the top and + at the bottom.
This feels like it makes more sense.
2015-03-31 22:15:21 +02:00
Matt Lowe
5bd37e1d06 tray icon is now hidden and then removed
I noticed that sometimes I would have lots of icons in the sys tray. I
would have to mouse over them to make then be removed. This also happens
with some other programs too. I have added some code to hide() the sys
icon when the client is close, it seems to be helping with the issue.
Hard to reproduce, might also only be a windows issue.
2015-03-31 22:05:02 +02:00
Zach
11d1d22da5 Merge pull request #894 from ZeldaZach/fix_double_popup
Fix double popup on delete pics
2015-03-30 17:27:26 -04:00
Zach
a57ce5b337 Merge pull request #892 from ctrlaltca/fix_669
Set cmc to 0 if not set; fix #669
2015-03-30 17:08:55 -04:00
Zach H
2aadf09347 fix double popup on delete pics 2015-03-30 16:55:57 -04:00
ctrlaltca
83274f9855 Merge pull request #893 from ctrlaltca/startup_fixes
Misc Startup fixes
2015-03-30 18:03:34 +02:00
Fabio Bas
399886c25c Sound engine: don't open() inexistent files
Avoid error “QIODevice::read: device not open”
2015-03-30 15:58:33 +02:00
Fabio Bas
757795f7cd Deck editor: skip unnecessary card name comparison when no search term is defined 2015-03-30 15:41:28 +02:00
Fabio Bas
b5b7ad8958 Startup: fix resetting card database to default
The check was inverted. LoadStatus::Ok = 0, so only when
db->loadCardDatabase() returns 0 we know the card database path is
correct
2015-03-30 12:28:13 +02:00
Fabio Bas
62d0a61717 Set cmc to 0 if not set; fix #669 2015-03-30 11:56:08 +02:00
Gavin Bisesi
0e3711723d Merge pull request #890 from ctrlaltca/fix_633
Fix 633
2015-03-29 16:45:19 -04:00
Gavin Bisesi
19cdc65cd8 Merge pull request #889 from ctrlaltca/fix_670
Fix #670
2015-03-29 16:43:39 -04:00
Fabio Bas
28ec1a7186 Fix #633
Requires #889
2015-03-29 18:55:15 +02:00
Fabio Bas
48d588f6cd Fix #670
Additionally, remove an unneeded split() + join() call on every card
text
2015-03-29 17:48:59 +02:00
Gavin Bisesi
49c1eec345 Merge pull request #886 from ctrlaltca/serverdeck
fix server deck storage; fix #744
2015-03-29 09:05:24 -04:00
Gavin Bisesi
1cf7c71631 Merge pull request #881 from poixen/right_click_cast
Cast to target from hand
2015-03-29 09:03:16 -04:00
Fabio Bas
a4cf7a71e3 fix server deck storage; fix #744 2015-03-27 15:47:38 +01:00
ctrlaltca
89d08693a6 Merge pull request #885 from ctrlaltca/translations
extracted new strings
2015-03-27 13:37:06 +01:00
Fabio Bas
c11d33540e extracted new strings 2015-03-27 12:09:53 +01:00
Matt Lowe
5ee6229535 Cast to target from hand
Users can now target from their hand. This will cast the card and point
to the target.
2015-03-27 09:19:36 +01:00
Zach
4fdfed38d2 Merge pull request #878 from poixen/blue_cog
Updated settings chat settings cog
2015-03-26 20:09:59 -04:00
Zach
2a6c08b9db Merge pull request #882 from ctrlaltca/remove_deckbrewz
Remove deck brew by ZeldaZach
2015-03-26 18:50:29 -04:00
Zach
c15bbee98a Merge pull request #879 from poixen/login
Failed logins reopen login dlg
2015-03-26 18:27:53 -04:00
Zach
1e3bbca40b Merge pull request #880 from poixen/remove_tm_material
Removed icon
2015-03-26 18:23:40 -04:00
Fabio Bas
839da83d2c Remove deck brew by ZeldaZach 2015-03-26 23:08:53 +01:00
Matt Lowe
38f0977456 Removed icon
Removed hidden layer from svg that could be seen as tm/copyrighted
content.
2015-03-26 21:10:52 +01:00
Matt Lowe
12716e43d3 Failed logins reopen login dlg
If you fail a login you are returned to the login dialog
2015-03-26 21:05:21 +01:00
poixen
8ce5c5a276 Merge pull request #847 from poixen/pm_toolbar_alert
Desktop Notifications
2015-03-26 20:22:29 +01:00
Matt Lowe
81a8141fe5 Added system tray icon
+ Can be used for setting client size and closing the client.

Will expand on by sending client alerts to the tray.

Updated to push message notifactions to the toolbar

Preview image:

Added setting to enable/disable message popups

Added functionality

+ updated popup message and translation
+ Double clicking tray icon will now bring up the app/minimize it
+ can now be alerted of mentions
+ added setting to set if you want mentions on desktop
+ clicking mention message will take you to the main chat
+ added translations for icon menu
+ removed maximize/minimize/restore from menu, not needed.

Added disconnect

+ Disconnects any previous message slots/signals from the system icon
message bubble
2015-03-26 18:37:57 +01:00
poixen
b2e032b365 Merge pull request #860 from poixen/italic_card_names
Updated chatview texts
2015-03-26 18:35:43 +01:00
poixen
cd9f4e9856 Merge pull request #845 from poixen/card_boarder
Updated card borders
2015-03-26 17:48:44 +01:00
Matt Lowe
686b215910 Updated settings chat settings cog
+ Cog was grey and always looked like it was inactive.
2015-03-26 15:40:09 +01:00
ctrlaltca
719e625cd5 Merge pull request #877 from ctrlaltca/translations
Fetch updated translations from transifex
2015-03-26 15:17:03 +01:00
Fabio Bas
c3e5679604 Fetch updated translations from transifex 2015-03-26 15:13:57 +01:00
Matt Lowe
e0839db648 Updated chatview texts
This is enforcing a new client wide color scheme.
RULES
+ Green = Major server message (Welcome to chat room, change phase...)
+ Red = Minor server message (timestamps, game actions...)
+ Blue = Key word
+ Blue with modifier (underline/italics) = Keyword that can be
interacted with.
+ Black = User text

+ key numbers are now blue. player drew X cards, looks at the top X
cards, places X counters on . . . and so on.
+ card names are now italic (different from urls now)

I did have the player names set to blue also, but it felt like too much.

Player names in phase change are blue

Updates

+ Updated username colors in phases to match other areas of client

Small update

+ Made server message in chat room bold
+ made User names in chat/pm match the weight of in-game (consistancy)
2015-03-25 13:16:22 +01:00
Gavin Bisesi
98c92733ac Merge pull request #871 from tooomm/readme-ts
readme - match new ts handling
2015-03-23 19:26:48 -04:00
tooomm
36558388c5 adjust to match new ts handling /2 2015-03-24 00:24:28 +01:00
tooomm
9e93fe77ca adjust to match new ts handling 2015-03-23 21:04:54 +01:00
Fabio Bas
4cd98483ba Reworked a bit mentions/tags support in chat view; fix #791 2015-03-23 00:03:31 +01:00
ctrlaltca
88b242b34d Merge pull request #829 from ctrlaltca/antiflood
Anti flood for game commands; fix #753
2015-03-22 22:08:25 +01:00
Fabio Bas
7c2db752a5 Revert "Updated translation file"
This reverts commit 4568adb498.
2015-03-22 21:51:38 +01:00
Gavin Bisesi
16f4e00486 Merge pull request #866 from Cockatrice/fix-#681
Update translations bits in CONTRIBUTING.md; fix #861
2015-03-22 09:19:14 -04:00
ctrlaltca
09778535e8 Update CONTRIBUTING.md 2015-03-21 22:26:10 +01:00
Gavin Bisesi
b96604d85d Merge pull request #854 from ctrlaltca/pvtmsg_tab_name
Private Chat Tab Update
2015-03-21 08:54:59 -04:00
ctrlaltca
894a4316d3 Merge pull request #864 from tooomm/cleanup-git-links
Cleanup git links
2015-03-20 14:48:15 +01:00
tooomm
e0d0b0dae4 updated git links 2015-03-20 14:01:06 +01:00
tooomm
d8fb99908e removed one slash 2015-03-20 13:12:09 +01:00
tooomm
99a5a04373 updated git links 2015-03-20 13:10:41 +01:00
Fabio Bas
1f33e34d8f Add tooltips to tabs 2015-03-19 16:43:27 +01:00
Fabio Bas
31635d2ae8 Remove "talking to" prefix from private chats
Additionally, use the same name for “private chat“ in all menus (we had
“personal talk” and “direct chat“ before)
2015-03-19 16:32:59 +01:00
ctrlaltca
6065587d78 Merge pull request #852 from ctrlaltca/escape_tab_label
fix #811
2015-03-19 16:30:19 +01:00
Fabio Bas
dafa7c6fe1 fix #811 2015-03-19 16:08:46 +01:00
Fabio Bas
4568adb498 Updated translation file 2015-03-19 10:54:01 +01:00
Fabio Bas
5463255516 Added whitelist for game commands 2015-03-19 10:50:46 +01:00
Fabio Bas
8be5563563 Added user notification for RespChatFlood 2015-03-19 10:10:19 +01:00
Gavin Bisesi
20123b2c7a Merge pull request #721 from poixen/kick_message
Kick message no longer takes you to kicked tab
2015-03-18 20:54:27 -04:00
Gavin Bisesi
3cea29e390 Merge pull request #849 from poixen/filter_fix
Fix for filter
2015-03-18 20:27:22 -04:00
Gavin Bisesi
4d825fff4d Merge pull request #848 from tooomm/contributing.md
updated contributing.md
2015-03-18 20:26:45 -04:00
Matt Lowe
5218e2f710 Fix for filter
fix for #749
+ You can now search for sets using lower case: "frf", "dtk", "rtr" and
so on.
+ You now need exact matches on set short and full names. "rtr" and
"return to ravnica" will work. "return" will not work.
2015-03-19 00:55:50 +01:00
Zach
adcae59eb0 Merge pull request #846 from poixen/optional_card_scaling
Added optional card scaling setting
2015-03-18 18:44:58 -04:00
tooomm
dfbf95395f updated contributing.md
- fixed typos
- included labeled links
2015-03-18 19:45:56 +01:00
poixen
fead9f31f3 Merge pull request #839 from poixen/resize_columns
Resized game view columns
2015-03-18 16:57:14 +01:00
Matt Lowe
441cb4447a Added optional card scaling setting
+ Users can now enable/disable the mouse over card scaling.
2015-03-18 13:37:06 +01:00
Matt Lowe
c05f75438b Updated card borders
+ refactored code
+ improved card border lines (black)
+ cards no longer have curved edges, this prevents card image corners
showing behind.
+ tapped cards now have better border lines
2015-03-18 13:11:30 +01:00
Zach
b1231e6442 Merge pull request #801 from Cockatrice/woogerboy21-setup_firstadmin
Script to add the first admin account
2015-03-16 22:30:58 -04:00
Zach
0df227ec46 Merge pull request #840 from poixen/user_games_window_size
Updated user games window size
2015-03-16 22:16:25 -04:00
Zach
d2bfd3692e Merge pull request #836 from poixen/clear_chat_shortcut
Added shortcut to clear chat
2015-03-16 17:47:00 -04:00
Matt Lowe
9205ef2912 Updated user games window size 2015-03-16 15:36:51 +01:00
Matt Lowe
39482534c0 Resized game view columns
Previously all columns were the same width, making it cramped. I have
resized them to give a better initial width.
2015-03-16 11:21:15 +01:00
Matt Lowe
697358e484 Added shortcut to clear chat
F12 will now clear the chat in the main chat.
2015-03-15 21:13:41 +01:00
Fabio Bas
0e437cf13b Anti flood for game commands 2015-03-14 19:44:32 +01:00
ctrlaltca
20603c7e9b Merge pull request #828 from ctrlaltca/translations
fetched updated translations from transifex
2015-03-14 18:49:57 +01:00
Fabio Bas
2da43b8155 fetched updated translations from transifex 2015-03-14 18:49:00 +01:00
Zach
b1736c7599 Merge pull request #809 from poixen/search_new_fix
Re-added some search and filter code
2015-03-11 10:54:46 -04:00
Zach
76e9aae5c7 Merge pull request #815 from poixen/remove_hq_image_auto
Set download hq images to false by default
2015-03-10 19:47:45 -04:00
Matt Lowe
bf0750db20 Set download hq images to false by default
Due to mtgimage being taken down we I have made a one time check that
will uncheck the hq image option.
2015-03-10 22:10:50 +01:00
Matt Lowe
b91bab8356 Re-added some search and filter code
I had previously removed some filtering code that would allow users to
filter cards using our filtering tools. This functionality has now been
re-added.
2015-03-10 21:54:02 +01:00
ctrlaltca
29ddd44334 Merge pull request #805 from ctrlaltca/translations
Fetched new translations from transifex
2015-03-07 14:47:36 +01:00
Fabio Bas
38ad972d03 Fetched new translations (bis) 2015-03-07 12:45:50 +01:00
Fabio Bas
ec8382cbb5 Fetched new translations from transifex 2015-03-07 12:45:27 +01:00
poixen
93286f6d18 Merge pull request #803 from poixen/removed_constructor
Removed constructor
2015-03-07 11:50:41 +01:00
Zach
5df7f61360 Merge pull request #800 from poixen/dice_roll
Changed color of server maessges in-game
2015-03-06 23:57:43 -05:00
Zach
5f05c0be91 Merge pull request #775 from Cockatrice/fix-331
Cards played face down always go untapped to main row.
2015-03-06 23:57:05 -05:00
Gavin Bisesi
5fa5c6b760 Merge pull request #787 from Cockatrice/woogerboy21-inactiveregcleanup
Cleanup script to delete unactivated user accounts
2015-03-06 21:09:20 -05:00
Matt Lowe
319b5d88b2 Removed redundant constructor
Removed constructor that was not needed. Also removes annoying "error"
output when compiling.
2015-03-06 21:09:18 +01:00
woogerboy21
ebaeae0048 Script to add the first admin account
Script to add the first admin account to the servatrice database.  Running this script after setting up a servatrice server will add the user account "servatrice" with the password of "password".
2015-03-06 11:08:32 -05:00
Matt Lowe
71e794c0c6 Changed color of server maessges in-game
Due to an exploit of being able to mimic a die roll in a message:

"Hi all gl, hf !
username rolls a 20 with a 20-sided die."

I have changed all server messages to be colored.
2015-03-06 15:20:14 +01:00
poixen
fd4f76289c Merge pull request #798 from poixen/window_title_username
Updated english, reverted spanish
2015-03-04 18:45:52 +01:00
Matt Lowe
afe33be229 Updated english, reverted spanish 2015-03-04 18:05:35 +01:00
Zach
5f7d0fe7c2 Merge pull request #796 from poixen/search_improvement
Fixed card search
2015-03-03 18:53:09 -05:00
Zach
855b7951fe Merge pull request #795 from poixen/window_title_username
Added username to window title
2015-03-03 18:49:46 -05:00
poixen
cc6b826cad Removed comments 2015-03-03 16:53:48 +01:00
ctrlaltca
ebf088363e Merge pull request #797 from ctrlaltca/osx_qt541
update travis for qt5.4.1 under osx
2015-03-03 15:46:41 +01:00
Fabio Bas
b0e371feb9 update travis for qt5.4.1 under osx 2015-03-03 15:44:24 +01:00
Matt Lowe
b5dd7a42ce Fixed card search
Card search will now order the following way:

1. Exact match at top
2. Exact match with preceding values sorted lexically.
3. Match contained in word sorted lexically
2015-03-03 13:32:51 +01:00
Matt Lowe
8f732325b2 Updated english translations 2015-03-03 13:29:43 +01:00
Matt Lowe
4cbffc3f6d Added username to window title
While having more than 1 client open I found it hard to know which user
was which. I have added the user name to the title bar so you know who
you are logged in as.
2015-03-03 13:09:41 +01:00
Zach
90880c8b7e Merge pull request #763 from poixen/pixmap_fix
One time pixmap cache update
2015-02-28 20:39:02 -05:00
poixen
f0646ee537 Merge pull request #789 from poixen/new_ready
Updated ready/not ready
2015-02-27 23:37:45 +01:00
Matt Lowe
9cea8e0229 Added faint black line, tilted tick more 2015-02-27 00:00:49 +01:00
Matt Lowe
e4f8a499f4 Updated ready/not ready 2015-02-26 23:26:36 +01:00
woogerboy21
38b6235242 Cleanup script to delete unactivated user accounts
Fix #782
The script will remove any registered user accounts that are not active that are 5 days old or older (by default). You can change the time frame to whatever liking you desire.
2015-02-26 10:37:08 -05:00
Zach
b0fe2ef9d3 Merge pull request #772 from ctrlaltca/trice_saveonclose_2ndtry
cockatrice: ask to save modified decks on close; fix #759
2015-02-25 17:09:53 -05:00
Fabio Bas
061fd5a830 Workaround for duplicated dialogs on close 2015-02-25 18:32:33 +01:00
Zach
c25ba426b0 Merge pull request #785 from ideocl4st/update-sourcelang-150224
Updating source language file
2015-02-24 01:43:19 -05:00
Jaeic Lee
e6bf3b783c Updating source language file 2015-02-24 11:37:30 +09:00
Zach
928f51a462 Merge pull request #784 from ctrlaltca/translations
Fetched new translations from transifex
2015-02-23 18:31:36 -05:00
Fabio Bas
def4d50e97 Fetched new translations from transifex 2015-02-23 22:40:07 +01:00
Fabio Bas
c72ddcfaed Tabs -> spaces 2015-02-22 20:07:47 +01:00
Fabio Bas
a7b8934a1b Fix remaining issues 2015-02-22 20:02:58 +01:00
Gavin Bisesi
a984a9ea69 Merge pull request #773 from ctrlaltca/fix_754
Clamp the zoneviewwidget's topleft point to the scene view area; fix #754
2015-02-22 06:16:39 -05:00
Gavin Bises
e423fb2a39 Readability tweak 2015-02-21 21:31:17 -05:00
Gavin Bises
779a400de4 Fix #331 2015-02-21 15:18:32 -05:00
Zach
66678e95dc Merge pull request #765 from Cockatrice/no-spec-alerts
Game events do not notify taskbar while spectating.
2015-02-21 13:32:09 -05:00
Zach
342dfe7edb Merge pull request #770 from Cockatrice/fix-632
Fix #632. Url and mentions work together
2015-02-21 13:10:52 -05:00
Zach
510fe4e0fb Merge pull request #769 from Cockatrice/fix-osx-compile-bug
Avoid compilation failure due to protobuf bug on osx
2015-02-21 13:08:17 -05:00
Zach
65412800f8 Merge pull request #767 from ctrlaltca/oracle_progressbar
Fix oracle progressbar; fix #764
2015-02-21 13:02:03 -05:00
Fabio Bas
b9f0212c9b Clamp the zoneviewwidget's topleft point to the scene view area; fix #754 2015-02-21 16:43:38 +01:00
Fabio Bas
399d4bf516 cockatrice: ask to save modified decks on close; fix #759 2015-02-21 15:21:26 +01:00
Gavin Bises
5ff6693c9c Fix #632. Url and mentions work together 2015-02-21 08:13:59 -05:00
Gavin Bises
4d8218da13 Avoid compilation failure due to protobuf bug on osx
https://code.google.com/p/protobuf/issues/detail?id=119
2015-02-21 07:16:51 -05:00
Fabio Bas
514c414cfc Fix oracle progressbar; fix #764 2015-02-21 10:46:16 +01:00
Gavin Bises
5fc28e31a6 Disable spec notification toggle if notifications are off on dlg create 2015-02-20 21:36:18 -05:00
Gavin Bises
1562c234ca Add spec notification toggle to UI settings. 2015-02-20 20:57:22 -05:00
Gavin Bises
11bd2444d8 Do not alert the application for game events when spectating.
Add a configuration toggle to enable alerts when spectating.

Default behavior is to not alert.
2015-02-20 20:29:36 -05:00
Matt Lowe
6a91f3a976 Added hq image to check 2015-02-20 21:50:16 +01:00
Matt Lowe
c5bc3ea4dd One time pixmap cache update
Code will now perform a one time check on starting to see if the cache
has been updated to the new 2048 default. If the update has not been set
we update. After this time if the user lowers the level, it will not
reset back to 2048 by default.
2015-02-20 21:43:02 +01:00
Gavin Bisesi
06e5327595 Merge pull request #748 from kaiserfro/jo-full-word-card-color-filter
Add full and short name for card color filters.
2015-02-19 20:44:29 -05:00
Gavin Bisesi
648c5c488b Merge pull request #751 from ctrlaltca/img_loading
Avoid loading the same card's picture twice; Fix #745
2015-02-19 20:44:00 -05:00
Gavin Bisesi
9d9ffd8a9a Merge pull request #760 from poixen/updated_spec_svg
Updated spectator eye image
2015-02-19 20:43:50 -05:00
Gavin Bisesi
1c724e6fb1 Merge pull request #761 from poixen/updated_icon_player
Updated player fighting svg
2015-02-19 20:42:35 -05:00
Matt Lowe
f28a8b5ad1 Updated player fighting svg
+ Changed to be black
+ Made a little thicker
2015-02-19 18:09:38 +01:00
Matt Lowe
1b8c1ab9cd Updated image
Bolder outline
More defined shape
2015-02-19 17:35:12 +01:00
poixen
edd3b75fe6 Merge pull request #758 from poixen/game_created_fix
Fixed 5+ hour issue for new games
2015-02-19 16:54:18 +01:00
Gavin Bisesi
98bf17bb9f Merge pull request #755 from ctrlaltca/qt5_minversion
When compiling with qt5, require at least version 5.0.3, fix #741
2015-02-19 09:26:40 -05:00
Fabio Bas
2034d3f7ff linux+clang+qt5 works now, disable allow_failures 2015-02-19 15:11:06 +01:00
Fabio Bas
623cbe8759 Added qt5multimedia 2015-02-19 14:55:49 +01:00
Fabio Bas
11d77f8324 Even make is too old.. 2.8.9 is required, this repo offers 2.8.11 2015-02-19 14:52:09 +01:00
Fabio Bas
4de9da8b2b Attempt to get travis compile using qt5.2 2015-02-19 14:45:38 +01:00
Matt Lowe
28aed657b3 Fixed 5+ hour issue for new games
The problem was converting a negative int to an unsigned int. This was
resulting in a value of: (2^32) - n. Meaning that the room age was
extreamly old. After 48s the delay from the server will catch up and the
time diff will be 0 rather than negative, which is why after 48s the
room will change from 5+ hours to <1 min.
2015-02-19 12:45:33 +01:00
Gavin Bisesi
62e0bc9bb1 Merge pull request #707 from ctrlaltca/servatrice_locking
Improvement to servatrice database interface
2015-02-18 13:16:48 -05:00
Zach
3bf80540da Merge pull request #731 from poixen/oracle_logo
Updated oracle logo
2015-02-18 11:48:14 -05:00
Matt Lowe
cfa54e5eb8 Updated to 48x48 2015-02-18 16:58:32 +01:00
Fabio Bas
569180799d When compiling with qt5, require at least version 5.0.3 2015-02-18 14:20:39 +01:00
Fabio Bas
70b047adcb Fix #745 2015-02-16 21:25:56 +01:00
Jeffrey Oliver
8c187eff1b Use qstring replace.
Iterate through the filter to see if everything matches the card.
2015-02-16 09:45:15 -08:00
Jeffrey Oliver
65d62b98a0 Add full and short name for card color filters. 2015-02-15 10:55:56 -08:00
Gavin Bisesi
ef654341fa Merge pull request #733 from poixen/alert_icon
New logo for changed tab
2015-02-14 17:18:10 -05:00
Gavin Bisesi
126c64d5f9 Merge pull request #735 from kaiserfro/jo-ctrl-add-to-selection
ctrl-click to add a card to a selection.
2015-02-14 08:10:15 -05:00
Gavin Bisesi
96af5bd09c Merge pull request #726 from kaiserfro/jo-add-play-face-down-menu-item
Add a play face down context menu item when in the hand zone.
2015-02-14 08:09:44 -05:00
Jeffrey Oliver
08166f7d24 Use !isSelected() 2015-02-13 21:48:37 -08:00
Gavin Bisesi
e0450d45c2 Merge pull request #732 from poixen/hq_images_default
Increased default pixmap cache
2015-02-13 20:12:03 -05:00
ctrlaltca
e4147e6476 Merge pull request #738 from ctrlaltca/zip_win32
Fix zip support in oracle under win32; fix #736
2015-02-13 19:05:57 +01:00
ctrlaltca
8f96731360 Merge pull request #737 from ctrlaltca/translations
Translation updates to support Transifex; fix #651
2015-02-13 18:04:00 +01:00
Fabio Bas
3c285e572c Fix compilation under win32; fix installation of lib under win32 2015-02-13 17:58:20 +01:00
Fabio Bas
e8cb260734 Fix win32 compilation without zlib 2015-02-13 16:58:55 +01:00
Fabio Bas
798dc09fe6 Translation updates to support Transifex
* ignore .tx folder
 * cmake: when UPDATE_TRANSLATIONS=ON, extract new strings only to the
english translation file.
 * added info in CONTRIBUTING.md
 * updated english translations
2015-02-13 15:56:17 +01:00
Jeffrey Oliver
180108e6f9 ctrl-click to add a card to a selection. 2015-02-12 22:44:17 -08:00
Fabio Bas
ca9fffcf7e Fix "QMYSQLResult::data: column 7 out of range" error 2015-02-12 22:39:06 +01:00
Matt Lowe
d1fa7a1075 Vacuumed defs 2015-02-12 14:45:30 +01:00
Matt Lowe
b3df978722 New logo for changed tab 2015-02-12 14:39:44 +01:00
Matt Lowe
64b8ed1e21 Increased default pixmap cache 2015-02-12 14:07:21 +01:00
Matt Lowe
3f49e3f82e Updated logo
Updated logo
2015-02-12 13:39:01 +01:00
Jeffrey Oliver
4bd161ab06 Put back the new action. 2015-02-11 20:31:00 -08:00
Jeffrey Oliver
5add56d850 Fixed up whitespace. 2015-02-11 20:25:34 -08:00
Gavin Bisesi
12fe0f5380 Merge pull request #727 from poixen/pm_macro
Added modifier key to quick PM
2015-02-11 22:19:09 -05:00
Gavin Bisesi
df911338df Merge pull request #729 from poixen/hq_images_default
Set to download HQ images by default
2015-02-11 22:17:07 -05:00
Matt Lowe
3c60ac6114 Set to download HQ images by default 2015-02-11 21:38:34 +01:00
Gavin Bisesi
59f5554d9d Merge pull request #728 from tooomm/readme-translation2
more Translation Status Updates
2015-02-11 14:42:12 -05:00
tooomm
cb5d8ba74b readjusted space 2015-02-11 19:24:12 +01:00
tooomm
e5c177eba3 Translation Status Updates2 in Readme.md
- add link to translation faq in the wiki
- force more space between the images
- updated the picture links

Did you change any names from "oracle_ents" to "oracle" within transifex @ctrlaltca?
2015-02-11 19:21:12 +01:00
Matt Lowe
92474479e4 Added modifier key to quick PM
Ctrl + click on a user name to PM
2015-02-11 18:56:28 +01:00
Jeffrey Oliver
cc32e8c86e Add a play face down context menu item when in the hand zone. 2015-02-10 22:58:32 -08:00
Gavin Bisesi
dcc6c18965 Merge pull request #723 from tooomm/readme-translation
Translation Status Updates in Readme.md
2015-02-10 18:59:40 -05:00
tooomm
5c6d378d34 Translation Status Updates in Readme.md
- add separate links to different translation files (cockatrice_en.ts & oracle_en.ts) if you click one of the statistics
- added transifex icon with link to cockatrice project
- text changes
2015-02-10 23:20:16 +01:00
Gavin Bisesi
b5a8f5a925 Merge pull request #717 from poixen/new_pawns
Refreshed the look of the default pawns
2015-02-10 09:33:24 -05:00
Gavin Bisesi
a5a5031679 Add translation status to readme 2015-02-10 09:17:53 -05:00
Matt Lowe
9a5f6bf8e8 Updated icons to be solid color 2015-02-10 14:47:47 +01:00
Matt Lowe
959b516cb8 Kick message no longer takes you to kicked tab 2015-02-10 11:25:27 +01:00
Zach
e02f9e7dd0 Merge pull request #715 from ZeldaZach/dialog_spec_view
Game list informs better of what spectators can do
2015-02-09 16:38:45 -05:00
Zach H
f0338118af minor fix 2015-02-09 16:07:23 -05:00
Zach H
7a1fb45ebc feedback change 2015-02-09 16:04:39 -05:00
Zach
ce2541af1e Allow for shortcuts on hand viewing
Based on feedback, allow for shortcut for specs to view hands
2015-02-09 15:52:04 -05:00
Zach H
43d34bb825 spectator preferences 2015-02-09 15:35:16 -05:00
Zach
b7cb16da07 Merge pull request #713 from poixen/sepc_info
Spectator viewing options
2015-02-09 15:17:45 -05:00
Zach
08f8c99cfb Merge pull request #712 from poixen/orange_alert
Updated tab alert icon
2015-02-09 13:22:06 -05:00
Matt Lowe
616f8439ae Changed text to match room creation
"see hands" -> "see everything"
2015-02-09 17:41:38 +01:00
Matt Lowe
d420fc89a5 Spectator viewing options
Its now easy to see which games you can chat/see hands in.
2015-02-09 17:11:13 +01:00
Matt Lowe
2b0c5da8ac Updated tab alert icon 2015-02-09 15:25:32 +01:00
ctrlaltca
1302179167 Merge pull request #711 from ideocl4st/korean-translation-150209
Updated Korean translation
2015-02-09 11:02:39 +01:00
Jaeic Lee
64a436be6c Slightly updated Korean Translation
Consistency for certain affixes
2015-02-09 16:54:36 +09:00
Jaeic Lee
c94e5f1186 Updated Korean translation
Added new strings for Cockatrice
New Oracle translation
Cleaned up vanished strings
2015-02-09 16:38:52 +09:00
Zach
f199115b54 Merge pull request #709 from ctrlaltca/oracle_translations
Oracle translations; fix #293
2015-02-08 18:29:47 -05:00
Gavin Bisesi
5f3f767178 Merge pull request #710 from ctrlaltca/pvt_filters
Disable filters in "show user's games" dialog
2015-02-08 17:28:18 -05:00
Fabio Bas
0d974914a3 Disable filters in "show user's games" dialog
Hide filters-related buttons
Bypass the proxy model
2015-02-08 22:35:37 +01:00
Zach
a813dcb803 Merge pull request #708 from poixen/local_chat_focus
Local chat focus
2015-02-08 15:34:18 -05:00
Fabio Bas
40d6caa59d Merge branch 'master' into oracle_translations 2015-02-08 21:32:32 +01:00
Fabio Bas
f80e319900 Added translations for oracle; fix #293
Translations have been updated.
2015-02-08 21:17:51 +01:00
Gavin Bisesi
43a9ac61fb Merge pull request #702 from ctrlaltca/osx_menubar
Osx menubar improvements; fix #659
2015-02-08 15:05:35 -05:00
Matt Lowe
f91de7e1f1 Local chat focus
Games with only 1 player will now not focus on the chat when starting
the game. This helps with goldfishing.
2015-02-08 20:56:16 +01:00
Zach
25747a0964 Merge pull request #704 from ctrlaltca/fix_683
Fix #683 and #684
2015-02-07 19:15:44 -05:00
ctrlaltca
1d81cde457 Merge pull request #705 from ctrlaltca/fix_regression_667
Don't require zlib, it's optional - merging quickly since it breaks compilation
2015-02-08 01:00:28 +01:00
Zach
b1f5672481 Merge pull request #697 from poixen/kick_message
You have been kicked message box
2015-02-07 18:59:57 -05:00
Fabio Bas
40386a3415 Don't require lib, it's optional 2015-02-08 00:58:36 +01:00
Fabio Bas
ae674e54b0 Merge patch for #684 2015-02-08 00:40:28 +01:00
Fabio Bas
cbd391b1b8 Second attempt based on feedback
re-split the menus, but rename the cockatrice one to “actions”
2015-02-08 00:38:04 +01:00
Matt Lowe
3b0a8c2aa8 Updated
+ Added room name
+ takes you to kicked game tab
2015-02-08 00:36:35 +01:00
Fabio Bas
9c6784a1c0 Fix #683
Two regressions; depends on the fix for #684, too
2015-02-08 00:26:16 +01:00
Fabio Bas
32fb532ad3 OSX: Test the ability to translate application menu entries 2015-02-07 23:17:26 +01:00
Fabio Bas
508c444453 Regenerated translations to pick up new string from OS X menubar 2015-02-07 23:14:37 +01:00
Fabio Bas
5646a76ee7 OSX: merge the duplicate cockatrice menu in the main one 2015-02-07 23:13:32 +01:00
Zach
030b02345d Merge pull request #667 from ctrlaltca/oracle_zip
Oracle: support AllSets.json.zip; Fix #624
2015-02-07 17:04:22 -05:00
Matt Lowe
7de110306f You have been kicked message box
Its easy to not see that you have been kicked right now. This makes it
more apparent.
2015-02-06 23:14:55 +01:00
Gavin Bisesi
adb259fdd6 Merge pull request #695 from Cockatrice/show-password-games-by-default
Show password games by default
2015-02-05 22:04:33 -05:00
Gavin Bises
86b92a25de Merge remote-tracking branch 'origin/master' into show-password-games-by-default 2015-02-05 21:46:29 -05:00
Gavin Bisesi
f8bb295eef Merge pull request #694 from ZeldaZach/flag_fix
Remove Blank Flag Notation
2015-02-05 19:39:49 -05:00
Zach H
296e31b510 flag fix 2015-02-05 17:24:09 -05:00
Zach H
ad8e47a35d flag fix 2015-02-05 17:23:11 -05:00
Zach
b369da4ad5 Merge pull request #682 from ctrlaltca/fix_674
Fix #674
2015-02-04 21:30:16 -05:00
Zach
059a62a00d Merge pull request #689 from Cockatrice/fix-688
Fix #688. Reuse chat tabs when user opens more chat with same user
2015-02-04 20:54:26 -05:00
Gavin Bises
f22e42428c Fix #688. Reuse chat tabs when user opens more chat with same user 2015-02-04 20:34:11 -05:00
Gavin Bises
6e5f4d1f06 Merge remote-tracking branch 'origin/master' into jo-remove-name-filters-from-settings 2015-02-04 20:15:41 -05:00
Gavin Bisesi
78aa291734 Merge pull request #687 from poixen/base_mention_color
Changed default mention/username color
2015-02-04 19:10:10 -05:00
Matt Lowe
cf26127dc4 Changed default mention/username color
#A6120D
Dark blood red, less "pink" that the current.
2015-02-05 00:28:22 +01:00
Gavin Bisesi
6d499bdad2 Merge pull request #685 from poixen/mentions_in_om
Added click mentions to PMs
2015-02-04 18:18:08 -05:00
woogerboy21
0c32cfaa27 Merge pull request #686 from Cockatrice/woogerboy21-nsisquotefix
Corrected NSIS template quoting
2015-02-04 15:57:26 -05:00
woogerboy21
40610997c2 Corrected NSIS template quoting
There are extra quotes introduced into line #19 that causes the NSIS installer creation to fail.
2015-02-04 15:30:38 -05:00
Matt Lowe
ef607eeb4c Added mentions to PMs
+ adds client wide continuity
+ one day we might have multiuser pms
+ I use it when greeting users who pm me: "hello @username!"
2015-02-04 17:13:52 +01:00
Gavin Bisesi
37a05eb731 Merge pull request #671 from kaiserfro/jo-reduce-whitespace-from-game-description
Reduce the game descriptions whitespace.
2015-02-04 10:18:23 -05:00
Fabio Bas
06290d2326 Changed popup buttons from "Ok/Cancel" to "Yes/No" 2015-02-04 14:47:09 +01:00
Fabio Bas
3f38e780f4 Fix #674 2015-02-04 12:48:08 +01:00
Fabio Bas
917a29fac0 This error message needs to explain itself a bit better 2015-02-04 12:18:25 +01:00
Fabio Bas
4ebcfc6b34 Raise a question popup when zip parsing fails 2015-02-04 12:15:28 +01:00
Jeffrey Oliver
843cd9718e Reduce the whitespace in the server game constructor. 2015-02-03 22:22:31 -08:00
Gavin Bisesi
cb50fd0e2c Merge pull request #679 from poixen/deckEditorButtons
Updated deck editor buttons
2015-02-03 18:00:13 -05:00
Matt Lowe
f7f651338b Updated deck editor buttons 2015-02-03 23:35:18 +01:00
Gavin Bisesi
25cc695190 Merge pull request #672 from ctrlaltca/deckstats
Fixed "analyze on deckstats"; Fix #662
2015-02-03 10:30:28 -05:00
Gavin Bises
a29bf2cf0d make -j2 for travis builds 2015-02-03 09:22:41 -05:00
Gavin Bisesi
e7198edfc7 Merge pull request #676 from poixen/focus_chat
Chat has focus when starting game
2015-02-03 09:15:25 -05:00
Matt Lowe
787773e949 Chat has focus when starting game
When the game starts the line edit now has focus immediately.
2015-02-03 13:53:18 +01:00
Fabio Bas
7ce9d3749e Fixed "analyze on deckstats"; Fix #662
Plus: added support for deck name
2015-02-03 08:48:20 +01:00
Jeffrey Oliver
bd39d60388 Reduce the game descriptions whitespace. 2015-02-02 20:59:46 -08:00
Gavin Bises
975c5e0db3 Show password protected games by default 2015-02-02 19:14:23 -05:00
poixen
b7521bad8b Merge pull request #620 from poixen/mention_punctuation
Check for non-characters
2015-02-02 21:45:02 +01:00
Fabio Bas
781f8a6603 Oracle: support AllSets.json.zip; Fix #624
Imported unzip methods from OSDaB-Zip project;
Adds a soft dependency on zlib to oracle; if lib if not found, oracle
will continue to compile and work but without zip support.
2015-02-02 19:59:35 +01:00
poixen
4c418bc9b4 Merge pull request #654 from poixen/chat_buddy_stars
Buddy stars
2015-02-02 17:55:14 +01:00
Zach
72d1b211c4 Merge pull request #644 from poixen/mention_color
Chat mention color
2015-02-01 15:39:53 -05:00
Gavin Bises
82ca261ec8 Merge remote-tracking branch 'origin/master' into mention_color
Conflicts:
	cockatrice/src/dlg_settings.cpp
	cockatrice/src/dlg_settings.h
2015-02-01 13:29:50 -05:00
Zach
a08fc0461f Merge pull request #660 from Cockatrice/ignore-unreg-pm
Ignore unreg pm
2015-02-01 13:17:03 -05:00
Gavin Bises
26fa936347 Add settings page option to ignore unreg user pm 2015-02-01 12:14:25 -05:00
Gavin Bises
5222183ff3 Don't open new PM windows from unreg when ignoring unreg pm 2015-02-01 12:05:29 -05:00
Gavin Bises
32c6635137 Add settings interface for ignoring unreg pm 2015-02-01 12:05:04 -05:00
Gavin Bisesi
eeed03b101 Merge pull request #656 from poixen/view_size_fix
Fixed pile view bug
2015-02-01 10:35:02 -05:00
Matt Lowe
42c4f4a08c Fixed pile view bug
When sorting a view which has the last column the longest an error
happens where the view is squashed.
2015-02-01 00:31:25 +01:00
Matt Lowe
d57a6111aa Buddy stars
Buddies will now be seen as stars in the chat
2015-01-31 17:11:17 +01:00
Matt Lowe
3f2c570075 fixed conflict 2015-01-30 19:23:04 +01:00
Gavin Bisesi
6d4716b38f Merge pull request #648 from poixen/menu_sep
Added separator
2015-01-30 10:07:00 -05:00
Matt Lowe
d065236ce9 Added separator
Its been annoying me for a long time.
2015-01-30 13:57:16 +01:00
Matt Lowe
75f8ecd6e9 Added label 2015-01-30 13:06:09 +01:00
Zach H
b608d81037 Merge branch 'fix-deck-shuffle-check' 2015-01-29 21:10:34 -05:00
Gavin Bisesi
a8fcd9ec26 Merge pull request #623 from Cockatrice/country-code
Add country code to user info box.
2015-01-29 20:27:19 -05:00
Gavin Bises
d0f4d96d17 Don't store shuffle zone check - always check it
It doesn't make any sense to store that particular setting
2015-01-29 20:06:15 -05:00
Gavin Bises
6f50266931 Uppercase country code for text display, not flag filename generation 2015-01-29 20:01:48 -05:00
Matt Lowe
de38a294b5 Updated color setting
+ live preview added
+ will now only store the color if valid
2015-01-30 01:54:57 +01:00
Matt Lowe
ec8a2de2eb Chat mention color
+Chat mention / username color can now be set via hex in the settings
+ Users can invert the color of the mention text black/white
+ if an invalid color is provided, the default will be used
2015-01-30 00:48:50 +01:00
Gavin Bisesi
8d0a5cf86a Merge pull request #639 from tooomm/installer-add-oracle-text
add oracle name at the end of installer
2015-01-29 17:41:49 -05:00
Gavin Bisesi
fe7b976b79 Merge pull request #638 from Cockatrice/search-by-cmc
Search by cmc
2015-01-29 17:35:52 -05:00
Gavin Bises
acb9bc20c4 Fix #640 - don't add muid-0 cards to splitCards map 2015-01-29 17:09:14 -05:00
tooomm
de336384cd add oracle name at the end of installer 2015-01-29 22:34:53 +01:00
Gavin Bises
6fa34c6c04 Add cmc to card db filter model 2015-01-29 13:33:06 -05:00
Gavin Bises
7893ab086f Fix broken cmc parsing from cards.xml
I don't know why this even compiled
2015-01-29 13:32:17 -05:00
ctrlaltca
a31c15c752 Merge pull request #637 from ctrlaltca/fix_cache_size
Refix #558, Fix #631
2015-01-29 14:27:36 +01:00
Fabio Bas
29190708c3 Fix merge botch 2015-01-29 14:11:15 +01:00
Fabio Bas
1ffb5bf76d removed hardcoded table name prefix from query 2015-01-29 13:54:15 +01:00
Fabio Bas
0f58e8bcde Servatrice: reuse prepared statements 2015-01-29 13:47:55 +01:00
Gavin Bisesi
dd426cbac9 Merge pull request #634 from Cockatrice/oracle-cmc
Parse cmc from json and store in cards.xml
2015-01-29 05:48:32 -05:00
Gavin Bisesi
971c7bce53 Merge pull request #636 from poixen/chat_mention_alert
Taskbar attention when mentioned
2015-01-29 05:46:44 -05:00
Matt Lowe
2a78d15792 Taskbar attention when mentioned 2015-01-29 10:27:16 +01:00
Fabio Bas
3c65fba539 Avoid double locking of sessions, users table
QSqlQuery already executes not-empty queries, no need to call exec()
2015-01-29 09:54:48 +01:00
Jeffrey Oliver
763d8a7919 Merge branch 'master' into jo-remove-name-filters-from-settings 2015-01-28 20:28:36 -08:00
Gavin Bises
e2fe25735b Parse cmc from json and store in cards.xml 2015-01-28 20:28:38 -05:00
Gavin Bises
1af6486d74 Capitalize country code in user info box 2015-01-28 19:03:08 -05:00
Gavin Bises
b5fbebc883 Add country code to user info box.
People might not know all the flags
2015-01-28 11:57:17 -05:00
Matt Lowe
78edb8c661 Check for non-characters
now checks for non characters, so a mention s like "@username!" will now
work.
Requires some testing though, there are a lot of scenarios to check for.
2015-01-28 13:27:45 +01:00
Gavin Bisesi
739ca6a02e Merge pull request #607 from poixen/osx_fix
Refactor pileview sorting code
2015-01-27 20:10:54 -05:00
Jeffrey Oliver
223b38c27b Add a bool to the gameselector constructor to choose whether or not we should
load settings from saved values or use defaults.
2015-01-27 12:40:13 -08:00
Gavin Bisesi
8be659ba47 Merge pull request #616 from ideocl4st/korean-translation-150128
Updated Korean Translation
2015-01-27 13:17:04 -05:00
Gavin Bisesi
c20b1747bd Merge pull request #615 from ideocl4st/249-country-flags-svg
New flag images for 249 countries with ISO 3166 codes
2015-01-27 12:24:04 -05:00
Jaeic Lee
a94cc1c77c Updated Korean Translation
Added new strings
Changed all instances of ‘zone’ based on oracle text of Torrent
Elemental
Changed all instances of ‘registered users’ into more commonly used term
2015-01-28 01:57:10 +09:00
Jaeic Lee
b7dd64d333 Flag images for 249 countries with ISO 3166 codes
From https://github.com/joielechong/iso-country-flags-svg-collection.
(States that flag images are public domain)
2015-01-28 00:08:14 +09:00
Gavin Bisesi
93cf7dbaaf Merge pull request #609 from poixen/chat_mention_fixes
Chat mention fixes
2015-01-27 06:30:20 -05:00
Matt Lowe
3c0aca70e0 Updated method name
+ updated method name
+ added some doc
2015-01-27 10:55:52 +01:00
Gavin Bisesi
aa1814ef8f Merge pull request #610 from Cockatrice/oracle-save-location
Inform user of cards.xml save location on success
2015-01-26 20:33:42 -05:00
Gavin Bisesi
62c4c0f4eb Merge pull request #597 from ideocl4st/tweak-hand-context-menu
Submenus for moving all cards in a zone to another
2015-01-26 20:33:17 -05:00
Jaeic Lee
bfc1bd04b5 Added separators
Looks better imo.
2015-01-27 09:54:11 +09:00
Gavin Bises
cbdb1b8bcd Inform user of cards.xml save location on success 2015-01-26 19:05:32 -05:00
Matt Lowe
639cbefee0 Chat mention fixes
+ fixed some issues with highlighting entire line
+ added case insensative mentions
2015-01-27 00:43:11 +01:00
Matt Lowe
b89535f7ff Refactored code 2015-01-26 22:19:00 +01:00
Gavin Bisesi
f51e558e57 Merge pull request #605 from ZeldaZach/more_flags_time
Additional Flags
2015-01-26 15:21:25 -05:00
Jaeic Lee
c6800c48d2 More ellipsis
Should be the last of them
2015-01-27 03:32:58 +09:00
Jaeic Lee
46fb5f820e Tweaked some texts
Per Daenyth’s request
2015-01-27 03:14:52 +09:00
Gavin Bisesi
486690408d Merge pull request #602 from tooomm/oracle-add-default-selection-info
Added text line about default sets selection in Oracle
2015-01-26 13:06:38 -05:00
Zach H
627624a9c9 adding more flags 2015-01-26 11:57:28 -05:00
Gavin Bises
c923086629 Ignore ds_store and intellij hidden files 2015-01-26 11:50:24 -05:00
Zach
613f7717ab Merge pull request #595 from poixen/shufflefix
Fixed shuffle issue
2015-01-26 10:24:55 -05:00
Gavin Bisesi
ceead6b9e3 Merge pull request #593 from poixen/other_user_mention_option
Removed other user mention BG
2015-01-26 07:18:24 -05:00
tooomm
4963cf4618 Added text line about default selection 2015-01-26 00:59:28 +01:00
Gavin Bisesi
c328f28cde Merge pull request #600 from tooomm/readme-tweaks
2 changes
2015-01-25 15:33:00 -05:00
Gavin Bisesi
ffb5ac6b9a Merge pull request #599 from poixen/removed_unused_connect
Removed a connection
2015-01-25 15:31:26 -05:00
tooomm
f1addc2882 2 changes
- moved "Community Resources" up as talked about here 7e92b4e7df
- moved Gitter and Travis buttons for cleaner and nicer look
2015-01-25 18:44:44 +01:00
Matt Lowe
c0aafec907 Removed a connection
This isnt being used anymore
2015-01-25 12:15:53 +01:00
Matt Lowe
02277b2442 Removed other user mention BG
Due to feedback, I have removed the background color for other user
mentions. I think this looks cleaner, and doesnt require an additional
option.
2015-01-25 09:44:07 +01:00
Jaeic Lee
cc14e3cfc6 Submenus for moving all cards in a zone to another 2015-01-25 11:34:51 +09:00
Gavin Bisesi
2a6291dcde Merge pull request #592 from poixen/tap_animation
Faster tapping speed
2015-01-24 21:21:31 -05:00
Zach
2850e9e9ad Merge pull request #594 from poixen/fix_green_text
Fixed green text issue
2015-01-24 18:39:21 -05:00
Matt Lowe
ec198c33ca Fixed shuffle issue
when closing a view we save the current settings. I added a check to
only update the shuffle settings if the zone we are closing can be
shuffled.
2015-01-25 00:34:41 +01:00
Matt Lowe
359391acba Fix for #557 2015-01-24 23:59:53 +01:00
Matt Lowe
e409d96bb9 Faster tapping speed
+ Feels better with a little more speed
2015-01-24 23:01:10 +01:00
Jeffrey Oliver
d96e566411 Add back in the games description filter storage. 2015-01-23 20:53:21 -08:00
Zach
712f12a7a6 Merge pull request #587 from ZeldaZach/return_align_fix
adding return
2015-01-23 12:08:18 -05:00
Zach H
22a1bcdf60 adding return 2015-01-23 12:07:53 -05:00
Zach
dac5726dab Merge pull request #504 from ctrlaltca/local_scry_and_move
Specify the player when triggering a move on a revealed card
2015-01-23 10:14:05 -05:00
Jeffrey Oliver
cc75210ac6 Removed the loading and saving of the user name and game description
from the persistent filter settings.
2015-01-22 20:39:28 -08:00
poixen
b06b81895b Merge pull request #580 from poixen/room_user_level
Updated game view
2015-01-22 23:26:14 +01:00
Matt Lowe
8fdaadf462 refactorings #3
removed const from enum
2015-01-22 22:37:49 +01:00
Matt Lowe
86bbf75ddd refactorings #2
+ removed static from enum
+ removed condition check for user level
2015-01-22 22:23:21 +01:00
Matt Lowe
8ac58259b4 Refactorings 2015-01-22 22:05:08 +01:00
Matt Lowe
1406a27775 Updated game view
+ removed password column
+ added a lock svg to restrictions if pw is needed
+ added "password" to restrictions if pw is needed
+ added user pawn to creator tab
+ reformatted code for easy adaptation later
2015-01-22 21:35:52 +01:00
poixen
71a067030d Merge pull request #578 from poixen/user_chat_mentions
User chat mentions
2015-01-22 21:04:30 +01:00
Gavin Bisesi
11bb32606b Merge pull request #579 from tooomm/readme-fixed-url
fixed wooger link not working
2015-01-22 08:10:00 -05:00
tooomm
6929303705 fixed wooger link not working
test description
2015-01-22 13:50:49 +01:00
Matt Lowe
497fed6b15 Updated colors 2015-01-22 12:39:24 +01:00
Matt Lowe
0334fe3c8f Other mentions -- DRAFT --
Mentions about other players currently in the room will be highlighted.
They are also clickable for mentions and right clickable for context
options.
2015-01-22 09:32:56 +01:00
Gavin Bisesi
8069eceea1 Merge pull request #572 from ideocl4st/korean-translation
Updated Korean Translation
2015-01-21 07:45:12 -05:00
Jaeic Lee
7128f481b9 Small tweak due to fixing spelling mistake
cleaned up vanished transitions in the mean time.
2015-01-21 16:50:59 +09:00
Jaeic Lee
5c7ce8ffb7 Merge remote-tracking branch 'upstream/master' into korean-translation 2015-01-21 16:46:32 +09:00
poixen
0daa7a8809 Merge pull request #573 from poixen/spellingerror
Fixed spelling mistake
2015-01-21 08:06:29 +01:00
Matt Lowe
fd2b34278f Fixed spelling mistake 2015-01-21 07:50:20 +01:00
Jaeic Lee
31ad9b779a Updated Korean Translation 2015-01-21 12:38:51 +09:00
Gavin Bisesi
d83987b2b7 Merge pull request #570 from poixen/move_ignore_users
Moved "Ignore messages from unregistered users"
2015-01-20 14:14:30 -05:00
Matt Lowe
b9c537bf47 Moved "Ignore messages from unregistered users"
Relocated to the chat settings tab.
2015-01-20 20:02:36 +01:00
Gavin Bisesi
6dfaa81a53 Merge pull request #561 from poixen/chatnamehighlight
Username block highlighting
2015-01-20 12:35:41 -05:00
Gavin Bisesi
fa8bcccaaa Merge pull request #549 from poixen/cardviewlist
Sortable card views can now be split into pile types
2015-01-20 12:15:19 -05:00
Gavin Bisesi
8d768089de Merge pull request #565 from ctrlaltca/deck_schema
Added xdd schema for "cod" decks; fix #545
2015-01-20 11:44:12 -05:00
Gavin Bisesi
931b420323 Merge pull request #556 from poixen/settings_dlg_refactorings
Refactored Settings Tab
2015-01-20 11:39:25 -05:00
Gavin Bisesi
10aa137475 Merge pull request #562 from poixen/chat_click_mentions
Click tag mentions
2015-01-20 10:06:04 -05:00
Gavin Bisesi
fe53d6d6cd Merge pull request #567 from poixen/chat_cog
Added "Chat settings..." shortcut to chat cog
2015-01-20 10:01:05 -05:00
Matt Lowe
b41d64615d Added "Chat settings..." shortcut to chat cog 2015-01-20 15:35:16 +01:00
Matt Lowe
222105be61 Added functionality in game 2015-01-19 21:29:15 +01:00
Fabio Bas
b8322ff4fb Added xdd schema for "cod" decks; fix #545 2015-01-19 16:33:44 +01:00
Matt Lowe
041e91412d Switch Statement 2015-01-19 08:33:28 +01:00
Matt Lowe
f0c661a0df Added seperator
Added a separator
2015-01-18 00:33:42 +01:00
Matt Lowe
54a1a28619 Added ratio scaling
Previously was adding pixels, rather than using ratios. this was cutting
off cards on higher res screens
2015-01-18 00:18:23 +01:00
Matt Lowe
d59e1f135d Refactored Chat Settings tab
- removed heap alloc
2015-01-17 18:04:06 +01:00
Matt Lowe
d02d3ed521 Refactored Deck Editor tab
- removed heap allocation
2015-01-17 17:55:13 +01:00
Matt Lowe
5cf801eb94 Refactored User Interface tab
- removed heap allocs
2015-01-17 17:50:04 +01:00
Matt Lowe
a599fa1a63 Removed manual sizing
replaced the resize(x, y) to "pack" the widgets. It saves space and
makes the settings tighter.
2015-01-17 17:30:24 +01:00
Matt Lowe
98e84f0d63 Fixed some merge issues 2015-01-17 17:11:14 +01:00
Matt Lowe
4b45ba46f4 Refactored General Settings Tab
~ Removed some heap allocs
~ Remaining heap allocs are needed.
~ Unrolled "one line" declarations in header
~ restructured logic in GeneralSettingsPage

Refactored Appearance Tab

- removed some heap allocs
- removed setting of zone view, its not needed here, its configurable in
real time, in game.
2015-01-17 16:59:00 +01:00
Matt Lowe
ece56ff3f2 Added @ back in
Added the @ back to the chat, this will help if a user does not have the
newest version of the client.
2015-01-17 15:03:41 +01:00
Matt Lowe
8bc2adb70b Set focus
The line edit now gets focus for faster typing.
2015-01-17 14:53:41 +01:00
Matt Lowe
45112e49b1 Click tag mentions
You can now click on a username in the main chat to add a "@username"
tag to the chat. Makes communication with other users using tags faster.
2015-01-17 14:47:16 +01:00
Matt Lowe
49d3ad73d5 Uername block highlighting
I was able to find a simple way to achive the block highlighting.
2015-01-17 13:23:30 +01:00
poixen
9b7f488bd7 Merge pull request #559 from poixen/chatnamehighlight
Fixed #557
2015-01-17 00:43:49 +01:00
Matt Lowe
e4afd9fa4d Fixed #557 2015-01-17 00:08:54 +01:00
Gavin Bisesi
7ef5f2d3a4 Merge pull request #558 from ctrlaltca/memory_limit
Limit pixmap cache size to 2047MB; fix #555
2015-01-16 12:09:00 -05:00
Fabio Bas
24c6e4a81d Limit pixmap cache size to 2047MB; fix #555
also, fix any invalid values loaded from config
2015-01-16 17:11:38 +01:00
Matt Lowe
aad98756d1 Refactorings
+ added comments
+ refactored optimumRect
2015-01-15 23:52:19 +01:00
Gavin Bisesi
8e396cadc2 Merge pull request #554 from poixen/chatsettingstab
Updated chat setting tab
2015-01-15 08:39:30 -05:00
Matt Lowe
a794112b1d Updated chat setting tab
+ Renamed "Messages" to "Chat Settings"
+ Moved the chat mentions to this tab
+ Added boarder round macro settings
2015-01-15 00:47:10 +01:00
poixen
9aeeee3a77 Merge pull request #553 from poixen/soundsettings
Added title for sound settings
2015-01-15 00:23:23 +01:00
Matt Lowe
0454f9c24b Added title for sound settings 2015-01-15 00:01:12 +01:00
Matt Lowe
e4e3a1d2e5 Sorting views
+ When viewing a sorted view (like revealing hand, or looking at
library), the cards will now be sorted in columns based on the main card
type.
+ Settings are now saved.
2015-01-14 23:19:22 +01:00
Gavin Bisesi
d3a7320ce2 Readme links to install instructions wiki page 2015-01-14 17:00:05 -05:00
Gavin Bisesi
06ac74ec6b Merge pull request #546 from ideocl4st/master
Added Korean flag and newly added strings' translations
2015-01-14 14:29:39 -05:00
Gavin Bisesi
ce2520d74f Merge pull request #538 from poixen/settingscleanup
Realigned Icons
2015-01-14 07:38:23 -05:00
poixen
8fee9c6c4b Merge pull request #535 from poixen/chatnamehighlight
Chat highlighting when username is mentioned
2015-01-13 19:11:52 +01:00
Matt Lowe
f1a9401416 Changed color 2015-01-13 18:06:49 +01:00
Jaeic Lee
ab2aeee138 Added Korean flag and some translated strings
Added translation of some new strings and svg file of South Korean flag.

Flag of South Korea is from
http://commons.wikimedia.org/wiki/File:Flag_of_South_Korea.svg
2015-01-13 13:36:07 +09:00
Gavin Bisesi
2ae9cd2c37 Merge pull request #543 from poixen/clearchat
Clear chat
2015-01-12 21:15:55 -05:00
Matt Lowe
2e342361a5 Clear chat
Users can now clear the chat in the main lobby. This removes unwanted
text and clears up memory when the client has been open a long time.
2015-01-13 00:39:19 +01:00
Matt Lowe
5452d0ceae Chat highlighting when mentioned
When being mentioned in a post with '@username' you will now see the entry highlighted. This
helps to see when someone is talking to you. It work across the main
chat, in game and in private chat.
2015-01-12 15:15:15 +01:00
Gavin Bisesi
69e6aa355f Merge pull request #534 from poixen/accountage
Added account age to user info window
2015-01-11 21:37:07 -05:00
Matt Lowe
0445e570d7 Realigned Icons
+ Moved Icons to the top. You can now see all options.
+ All SVGs now have a background (GO! was missing one).
+ All SVGs now have the same background (General had one of its own)
2015-01-11 11:55:48 +01:00
Matt Lowe
02043ad4f9 Added Account Age
+ 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.
2015-01-11 00:45:12 +01:00
Gavin Bisesi
761d549f9a Merge pull request #519 from ctrlaltca/message_log
Message log
2015-01-07 15:43:54 -05:00
Gavin Bisesi
37a4c0d0e6 Merge pull request #531 from mcallahan/resizing2
Resize player names in playerlistwidget properly.
2015-01-07 15:42:03 -05:00
Gavin Bisesi
621d33638f Merge pull request #498 from ctrlaltca/pixmap_memory_2nd_attempt
Pixmap memory, 2nd attempt
2015-01-07 15:41:20 -05:00
Michael Callahan
eac6e41de7 Resize player names in playerlistwidget properly. 2015-01-06 22:20:45 -07:00
Fabio Bas
2101ed7096 Merge remote-tracking branch 'upstream/master' into pixmap_memory_2nd_attempt
Conflicts:
	cockatrice/src/dlg_settings.cpp
	cockatrice/src/dlg_settings.h
2015-01-05 22:46:12 +01:00
Gavin Bisesi
c98a146746 Merge pull request #520 from mcallahan/always-reveal-top-master-master
Reset Always reveal top card when starting a new game.
2015-01-05 16:36:07 -05:00
Gavin Bisesi
fba60c20c0 Merge pull request #523 from kaiserfro/apply-filters-at-start2
Apply filters at start
2015-01-05 11:26:54 -05:00
Gavin Bisesi
094d6b6422 Merge pull request #527 from poixen/chattime
Added timestamps to in game chat
2015-01-05 11:22:32 -05:00
Fabio Bas
2671d6abdc Merge remote-tracking branch 'upstream/master' into local_scry_and_move 2015-01-05 11:08:11 +01:00
Jeffrey Oliver
4a2a61ef46 Replace the 99 with a const int. 2015-01-04 15:32:29 -08:00
Jeffrey Oliver
8eb0e2dbef Remove reminder. 2015-01-04 15:31:59 -08:00
Matt Lowe
a1a021c99c Added timestamps to in game chat
+ added time stamps to the in game chat
2015-01-04 18:01:46 +01:00
Gavin Bisesi
7476667b69 Merge pull request #524 from ideocl4st/korean-translation
Fixed a non-standard word in Korean Translation
2015-01-04 08:45:20 -05:00
Jaeic Lee
0e250a7d80 Fixed a non-standard word in Korean Translation
Fixed a non-standard word (손패) into the word that is used in official
translation (손)
2015-01-03 11:24:10 +09:00
Jeffrey Oliver
bb317003b4 Save filters after a filter clear.
Remove some duplicated code.
2015-01-02 17:23:15 -08:00
Jeffrey Oliver
f01d26bf96 Enable the clear filter button by default. 2015-01-02 17:10:55 -08:00
Jeffrey Oliver
1e78596dfa Remove unused function. 2015-01-02 17:07:30 -08:00
Jeffrey Oliver
f1803fe879 Remove some debug. 2015-01-02 17:06:30 -08:00
Jeffrey Oliver
b1e5153ea5 Should be a const ptr. 2015-01-02 17:03:17 -08:00
Jeffrey Oliver
dbfbfcc837 WIP: refactor filters to save to persistence from within model. 2015-01-02 15:19:36 -08:00
Jeffrey Oliver
6a4384f903 WIP: Refactor gamesproxymodel to own the persistence layer. 2015-01-02 15:05:33 -08:00
Fabio Bas
0abd1fb299 Rework patch for "move to.." menu; fix "P/T"-related menus 2015-01-02 17:10:19 +01:00
Gavin Bisesi
471a690cf0 Merge pull request #518 from ideocl4st/korean-translation
Added Korean Translation
2015-01-02 09:27:29 -05:00
Jaeic Lee
7dc58355c9 Added line breaks in Korean translation
Added line breaks in Korean translation for better readability.
2015-01-02 11:35:50 +09:00
Michael Callahan
142b42e095 Reset Always reveal top card when starting a new game. 2015-01-01 09:53:29 -07:00
Jaeic Lee
9c0faf8a9c Edited Korean Translation
Edited several sentences after a third-party review
2015-01-02 01:30:27 +09:00
Fabio Bas
51735613e5 force NULL as unregistered users's id 2015-01-01 16:42:20 +01:00
Fabio Bas
925b4a83b0 Fix "sender id" and "ip address" fields in game 2015-01-01 16:20:57 +01:00
Fabio Bas
cd69bc8f9d Add configuration options to enable database logging 2015-01-01 15:48:53 +01:00
Jaeic Lee
93d6bfed65 Merge branch 'master' into korean-translation
Updating to sync with origin
2015-01-01 23:25:29 +09:00
Fabio Bas
2896f05823 Merge remote-tracking branch 'upstream/master' into message_log
Conflicts:
	servatrice/CMakeLists.txt
2015-01-01 15:02:17 +01:00
Jaeic Lee
be973879d0 Added Korean Translation 2015-01-01 22:58:35 +09:00
ctrlaltca
16bbc5e8c0 Merge pull request #516 from mcallahan/compilation-warnings
Clean up a small pile of compiler warnings.
2015-01-01 14:32:53 +01:00
Gavin Bisesi
0f1c8c59ac Merge pull request #508 from Blitzmerker/master
Fixes the "Card preview window gets stuck and can't be removed" issue by...
2015-01-01 08:08:29 -05:00
Gavin Bisesi
a6c750668a Merge pull request #496 from ctrlaltca/set_extinfo
Remove branch decoration
2015-01-01 08:07:19 -05:00
Gavin Bisesi
b38cd7833f Merge pull request #500 from ctrlaltca/translation_fixes
Translation fixes
2015-01-01 08:07:06 -05:00
ctrlaltca
37dd99ea5e Merge pull request #507 from ctrlaltca/osx_plugins_debug
Optimize qt plugins installation
2015-01-01 13:56:31 +01:00
Gavin Bisesi
ec5a81d8a3 Merge pull request #515 from mcallahan/player-icon-size
Better icon packing in PlayerListWidget.
2014-12-31 14:18:25 -05:00
Michael Callahan
3a0c86938c Clean up a small pile of compiler warnings. 2014-12-30 15:54:38 -07:00
Michael Callahan
3c9ddd780e Better icon packing in PlayerListWidget. 2014-12-30 15:27:21 -07:00
Blitzmerker
6af8a49aae Fixes the "Card preview window gets stuck and can't be removed" issue by saving the cardname, instead of getting it back from the popup (with possible issues with case sensitivity). Also closes an old popup when a new is created. 2014-12-29 19:00:28 +01:00
Fabio Bas
54ce135e0c Optimize qt plugins installation
* Always install “release” plugins
 * install only plugins actually used
2014-12-28 22:21:45 +01:00
Fabio Bas
ea1067189d Specify the player when triggering a move on a revealed card
Fixes #72, #493
2014-12-27 17:12:21 +01:00
Fabio Bas
dd88476796 Changed parameter name to something more meaningful 2014-12-27 15:02:20 +01:00
Gavin Bisesi
f52935791c Merge pull request #501 from ctrlaltca/crash_on_exit
Fix crash on close #255
2014-12-26 20:05:54 -05:00
Gavin Bisesi
f462719134 Merge pull request #502 from ctrlaltca/fix_484
Fix #484: Missing tooltip
2014-12-26 20:00:45 -05:00
ctrlaltca
eacd06d2b8 Merge pull request #503 from ctrlaltca/travis_osx_qt5
Fix travis compilation with osx+qt5
2014-12-26 17:00:15 +01:00
Fabio Bas
49310b5291 Fix travis compilation with osx+qt5
Homebrew currently installs qt 5.4.0
2014-12-26 16:34:42 +01:00
Fabio Bas
390a8f1985 Fix #484
Missing tooltip
2014-12-26 16:09:56 +01:00
Fabio Bas
15e4c852dd Fix crash on close #255 2014-12-26 16:03:59 +01:00
Fabio Bas
2d932c68de Fixed translation for "clear downloaded pictures" button 2014-12-26 14:48:58 +01:00
Fabio Bas
499f148783 Regnerate translations 2014-12-26 14:45:41 +01:00
Fabio Bas
72ba5a1683 Parse header files for translatable strings
We previously parsed only .cpp files, but some strings are inlined in
header files.
2014-12-26 14:45:31 +01:00
Fabio Bas
f88621fd97 Use QPixmapCache for card images
Drop CardInfo’s own pixmap caches; use QPixmapCache instead.
Use QPixmap references instead of pointers.
Being stored in QPixmapCache, all card images are now subjected to
QPixmapCache’s size limit
2014-12-24 16:18:55 +01:00
Fabio Bas
b96104bed4 Expose QPixmapCache's cache limit size as an user preference 2014-12-24 16:16:34 +01:00
Fabio Bas
a5a92e0a7d Remove branch decoration 2014-12-18 17:39:07 +01:00
Fabio Bas
c875054fb5 Log messages from rooms, games and chats 2014-12-13 18:43:59 +01:00
Fabio Bas
02978ce404 Implement the logging method 2014-12-13 18:43:31 +01:00
Fabio Bas
ba71d3a256 Add db schema and fix sql plugins installation 2014-12-13 18:43:05 +01:00
Gavin Bisesi
776d809f2f Merge pull request #483 from ZeldaZach/how_many_cards
How Many Cards
2014-12-09 11:39:40 -05:00
Zach H
b738428941 Adding a way to see how many of each type 2014-12-08 17:18:21 -05:00
Gavin Bisesi
8670bc674f Merge pull request #471 from ctrlaltca/set_extinfo
More sets handling improvements
2014-12-08 10:38:54 -05:00
Gavin Bisesi
745a7f195d Merge pull request #481 from ZeldaZach/remove_lotus_project
Removing Black Lotus Price from System
2014-12-06 10:07:25 -05:00
Zach H
a44b7367be removing blp pricing 2014-12-05 21:26:41 -05:00
Fabio Bas
9cc8d8b86c Misc fixes
ucfirst(setCode): requires oracle re-run
reorder columns
rename the “short name“ column as “set code“
ensure proper casting for releaseDate and sortKey fields (refs 00a5ed0)
2014-12-05 08:48:33 +01:00
Fabio Bas
0ba351c955 Add "saved" msgbox 2014-12-04 21:09:50 +01:00
Fabio Bas
00a5ed0b79 Fix compilation with qt <= 5.2 2014-12-04 18:29:06 +01:00
Fabio Bas
2745cb2c62 Removed debug 2014-12-02 14:43:39 +01:00
Fabio Bas
36ed4480c2 Re-added save and restore buttons 2014-12-02 14:38:36 +01:00
Gavin Bisesi
ef8bd60a32 Merge pull request #465 from poixen/urlchat
Added more space between chat
2014-12-01 12:45:08 -05:00
woogerboy21
8b0d67ea5c Merge pull request #441 from woogerboy21/servatrice_trustedsources
Servatrice trustedsources
2014-12-01 10:46:55 -05:00
Gavin Bisesi
0be45e3969 Merge pull request #463 from poixen/chatlinkunderline
Added underline to links in chat
2014-12-01 09:27:42 -05:00
Fabio Bas
e48a815d25 Add move buttons, misc improvements 2014-11-30 21:37:06 +01:00
Matt Lowe
0cb1dde8c8 Added more space between chat
Added a couple extra pixels in the chat. Make it look a little less
squished.

Before: http://imgur.com/7U6oe82
After: http://imgur.com/C8gGpDY
2014-11-29 02:49:22 +01:00
Matt Lowe
52cadd75f3 Added underline to links in chat
[REVIEW]
Links now have a blue underline to better indicate they are clickable.

Preview: http://imgur.com/gQZEv4I
2014-11-29 01:18:52 +01:00
Gavin Bisesi
9e1f8a0892 Merge pull request #449 from ctrlaltca/set_extinfo
Sets handling improvements
2014-11-27 06:13:29 -05:00
Gavin Bisesi
0c92b3779a Merge pull request #461 from poixen/clickfix
Double click room fix
2014-11-27 06:11:14 -05:00
Matt Lowe
0f6dc6be6c Fix for #460 2014-11-27 09:52:27 +01:00
Gavin Bisesi
db0a77989b Merge pull request #456 from ctrlaltca/gamesmodel_qt
Port #436 to QDateTime
2014-11-26 17:28:35 -05:00
Fabio Bas
c8aeff0b0c Port #436 to QDateTime 2014-11-26 12:34:26 +01:00
Fabio Bas
2704523c73 Merge branch 'master' into set_extinfo 2014-11-26 11:45:51 +01:00
Gavin Bisesi
f71cfb1240 Merge pull request #436 from mitchellwrosen/master
Add 'Start time' column to game list
2014-11-25 09:01:24 -05:00
Gavin Bisesi
19de7cbc03 Merge pull request #428 from woogerboy21/static_reveal_library
Don't remove card images from revealed decks
2014-11-25 08:41:08 -05:00
Gavin Bisesi
9d62c578e6 Merge pull request #435 from poixen/bottomdeck
Action: Move Bottom Card to Graveyard
2014-11-25 08:40:45 -05:00
Gavin Bisesi
9f79bbd09f Merge pull request #454 from poixen/doubleclick
Double click/ENTER to join a room in lobby
2014-11-25 08:38:09 -05:00
Matt Lowe
bbcfe84d08 Added double click/Enter for Server tab
Added the same functionality to the server tab
2014-11-23 20:01:09 +01:00
Matt Lowe
9e349d8b88 Added "ENTER" to join a room
Can now join a room by highlighting a room and pressing ENTER. Works
nice with arrow navigation.
2014-11-23 00:46:54 +01:00
Matt Lowe
6a44855a5c Added double click to join a room
Can now double click on a room in the lobby to join
2014-11-23 00:36:50 +01:00
Mitchell Rosen
cab37b3945 Capitalize game columns 2014-11-22 00:08:47 -08:00
Mitchell Rosen
03bdbe2c7a Added '<1m ago' 2014-11-22 00:08:00 -08:00
Mitchell Rosen
0af70883a8 0s-5m displayed as '<5m ago' 2014-11-22 00:06:13 -08:00
Mitchell Rosen
d0969c10c6 Show hours and minutes between 60 and 90 minutes 2014-11-22 00:06:13 -08:00
Mitchell Rosen
da145bdd7b fix localization in time strings 2014-11-22 00:06:13 -08:00
Mitchell Rosen
7aff20b4ee Fix the build 2014-11-22 00:06:13 -08:00
Mitchell Rosen
a3dc403f75 Translate, change 'Start time' to 'Game created', add debug log 2014-11-22 00:06:13 -08:00
Mitchell Rosen
4972d227d9 Add back -Werror, etc. on debug build 2014-11-22 00:06:13 -08:00
Mitchell Rosen
93ab9f9691 Add 'Start time' column to game list 2014-11-22 00:06:13 -08:00
woogerboy21
72a3f0e654 Merge remote-tracking branch 'upstream/master' into servatrice_trustedsources 2014-11-21 18:52:52 -05:00
Gavin Bisesi
8c7aa41721 Permit linux/clang/qt5 build to fail 2014-11-21 12:15:36 -05:00
Gavin Bisesi
7e92b4e7df Add community resource links to README
ref #452
2014-11-21 11:19:58 -05:00
ctrlaltca
a28eb053c5 Merge pull request #450 from poixen/ghostcards
Added fade to card drag items
2014-11-21 08:24:14 +01:00
woogerboy21
20807f31d6 Merge remote-tracking branch 'upstream/master' into servatrice_trustedsources 2014-11-20 23:41:43 -05:00
Matt Lowe
141d0c7618 Added fade to card drag items
[REVIEW]
Added a white mask to cards that are being dragged.

Preview: http://webmup.com/1we4W/
2014-11-21 00:09:38 +01:00
Gavin Bisesi
68bc67cde5 Merge pull request #433 from poixen/scalecards
Cards Scale with mouse over action
2014-11-20 16:41:04 -05:00
Fabio Bas
859adca0c7 Fixed indentation 2014-11-20 09:16:30 +01:00
Fabio Bas
ee3731717c Fixed button labels 2014-11-20 09:15:58 +01:00
woogerboy21
565fb9ef6e Merge remote branch 'upstream/master' into servatrice_trustedsources 2014-11-19 23:06:06 -05:00
Gavin Bisesi
c35024e155 Merge pull request #440 from poixen/newsearchbar
QT_VERSION check now checks for correct version
2014-11-19 20:18:10 -05:00
Matt Lowe
94780d8f74 Merge branch 'master' into newsearchbar 2014-11-19 22:28:00 +01:00
Matt Lowe
916735d613 Merge branch 'master' into newsearchbar 2014-11-19 22:21:43 +01:00
Fabio Bas
f48f386f35 Sets window: implemented save and restore buttons 2014-11-19 22:18:41 +01:00
Fabio Bas
ac43fa23b9 Better handle the TK set used for tokens
Let oracle add a basic TK set in cards.xml
Unify all the code previously using the string literal “TK”
2014-11-19 19:44:54 +01:00
Fabio Bas
8542d875d3 Sets dialog: new columns and sorting
Added "order key", "set type" and "release date" columns
Use a proxy model to sort the table
made the dialog wider accordingly
2014-11-19 18:09:37 +01:00
woogerboy21
ff8e25bb7e removed qdebug line for >= maxuser (no need to fill log) 2014-11-18 18:31:06 -05:00
woogerboy21
1195e4c77b corrected default ini value 2014-11-18 17:32:10 -05:00
woogerboy21
37e08cfbb6 added logic to only write debug if max user value is reached 2014-11-18 17:27:57 -05:00
woogerboy21
197ae9213c corrected invalid variable call & added log file debug information 2014-11-18 17:20:45 -05:00
woogerboy21
26f5110fea convert file tab to 4 space indent 2014-11-18 16:59:08 -05:00
woogerboy21
3c513b4bfc moved code logic to callling function & indent fix 2014-11-18 16:55:19 -05:00
woogerboy21
8aa7a1d6be Merge branch 'servatrice_trustedsources' of ssh://github.com/woogerboy21/Cockatrice into servatrice_trustedsources 2014-11-18 15:41:10 -05:00
woogerboy21
44a302a2d6 added trusted sources to servatrice 2014-11-18 15:39:11 -05:00
woogerboy21
74f8a82a73 corrected miss-pasting 2014-11-18 15:25:47 -05:00
woogerboy21
3869532722 Merge remote branch 'upstream/master' into servatrice_trustedsources 2014-11-18 15:16:20 -05:00
wcollins
da98d24d8c added trusted sources to servatrice 2014-11-18 15:09:21 -05:00
Gavin Bisesi
6d19f8e157 Merge pull request #423 from Cockatrice/travis-qt4-5-builds
Build both Qt4 and Qt5
2014-11-18 14:48:19 -05:00
Gavin Bisesi
b4dc9b79d4 Don't install qt4 when building qt5 on osx 2014-11-18 12:41:08 -05:00
Gavin Bisesi
ee2ba4abd3 Include qtmultimedia and qtsvg for travis qt5 build 2014-11-18 12:18:30 -05:00
Matt Lowe
d467cc8b01 QT_VERSION check now checks for correct version
Feature is only included in Qt 5.3+
2014-11-18 18:14:47 +01:00
Gavin Bisesi
1ba6b468de Install updated cmake from ubuntu sdk ppa 2014-11-18 07:48:55 -05:00
Gavin Bisesi
d2e706164d Install qt5tools-dev for ubuntu build 2014-11-18 06:08:56 -05:00
Gavin Bisesi
1640e77848 Notify gitter about build changes 2014-11-17 11:29:20 -05:00
Matt Lowe
a2c4a1e537 Action: Move Bottom Card to Graveyard
Created menu action to move card from the bottom of the library to the
graveyard. Qt accelerator key is "i". #125
2014-11-15 16:35:30 +01:00
Gavin Bisesi
fbbe40fbf3 Use correct qt version path for cmake on osx 2014-11-14 17:11:50 -05:00
Gavin Bisesi
5f944f1d6e Actually use Qt5 for qt5-osx build 2014-11-14 16:32:56 -05:00
Gavin Bisesi
9599fe7b33 Merge remote-tracking branch 'origin/master' into travis-qt4-5-builds 2014-11-14 16:07:05 -05:00
Gavin Bisesi
b351abcce4 Update gitter chat room for org change 2014-11-14 10:54:02 -05:00
Gavin Bisesi
c93fdbefe2 Update travis build badge link for org change 2014-11-14 10:52:39 -05:00
Gavin Bisesi
e918900d4e Refine travis config to only install qt4 or qt5 per build instead of both 2014-11-14 10:47:48 -05:00
Gavin Bisesi
438d4e4661 Merge pull request #417 from poixen/newsearchbar
Updated Search Bar Style
2014-11-14 10:19:24 -05:00
woogerboy21
6811819161 Don't remove card images from revealed decks
Revealed library had write access, which meant that the user would see cards being removed from the zone as the other player drew cards. The cards were not the actual ones drawn, just the ones at the same index, so no information was leaked.

Fix #297
2014-11-13 20:31:55 -05:00
Matt Lowe
62b7890e59 Cards Scale with mouse over action
Cards now scale up by 10% when mouse over.
2014-11-12 23:26:24 +01:00
Gavin Bisesi
687d441a49 Merge pull request #426 from woogerboy21/patch-2
Default logging to enable with no config file
2014-11-11 14:22:11 -05:00
woogerboy21
84a5117b4c Default logging to enable with no config file
If no configuration file is found, default the logger to logging enabled.
2014-11-11 14:15:02 -05:00
Matt Lowe
f58cc32ef4 Added version check
Added version check, to only include the new Searchbar icon for Users
running Qt 5+
2014-11-10 22:14:27 +01:00
Gavin Bisesi
a91106f90e Add ppa for qt5 on travis ubuntu 2014-11-10 15:36:31 -05:00
Gavin Bisesi
4b478efa61 Build both Qt4 and Qt5 2014-11-10 15:12:45 -05:00
Gavin Bisesi
277c050d76 Merge pull request #421 from ctrlaltca/even_more_pictures
Add fallback urls for cards without a muId set
2014-11-10 10:27:47 -05:00
Fabio Bas
cb37073828 Oracle: fetch release date and set type
and save them in cards.xml
2014-11-10 16:22:46 +01:00
Matt Lowe
33a6e3c5c0 Removed hard coded CSS
Hard coded CSS might have a slight chance of not rendering the same
across all platforms. More research needs to be performed. Until then I
have removed the hard coded search bar customization.
2014-11-10 08:49:24 +01:00
Fabio Bas
fc1d06e13b Add fallback urls for cards without a muId set
We only have a good HQ source for them; any idea on a low-quality
source?
2014-11-10 00:23:41 +01:00
Gavin Bisesi
a320af70da Merge pull request #418 from ctrlaltca/osx_info_plist
OSX: Add proper infos to info.plist
2014-11-09 17:34:35 -05:00
Gavin Bisesi
6b1df247d1 Merge pull request #415 from ctrlaltca/no_pictures_yet
Rework the picture download behavior
2014-11-09 17:16:00 -05:00
Fabio Bas
c0ee060af4 Fixed vendor name 2014-11-09 23:14:36 +01:00
Gavin Bisesi
b3715c5da2 Merge pull request #416 from poixen/partialsearch
Partial Card Name Search
2014-11-09 17:08:02 -05:00
Gavin Bisesi
e1c5f4d436 Merge pull request #419 from ctrlaltca/oracle_url
Oracle: add button to restore default download url
2014-11-09 17:06:56 -05:00
Gavin Bisesi
13f6da15ec Merge pull request #420 from ctrlaltca/unreg_create_game
Fix #408
2014-11-09 17:06:12 -05:00
Fabio Bas
da46996294 Fix #408
Gray out "only buddies/only reg users" in the “create game” dialog if
the user is unregistered
2014-11-09 22:12:55 +01:00
Fabio Bas
cb055055a9 Oracle: add button to restore default download url
Should avoid the problem explained in #414
2014-11-09 21:15:31 +01:00
Fabio Bas
a716d73a42 OSX: Add proper infos to info.plist
fixes #411
2014-11-09 21:03:10 +01:00
Matt Lowe
eef4a621b3 Updated Search Bar Style
Please note that I don't feel that the search bar needs to be skinned by
users, hence why it is not part of the large css-skinning project. I
also feel that given the PR #416 a new search bar with highlight the new
search functionality.

Updated the look of the search  bar:
+ larger, curved edges
+ changes color when has focus
+ search icon built into search
- removed "Search For" text in lieu of search icon
2014-11-09 12:04:09 +01:00
Matt Lowe
0589f02ca2 Partial Card Name Search
+ Card searches now do partial string matches, rather than needing to
match the beginning of the string.
2014-11-09 11:23:45 +01:00
Fabio Bas
4b8ac99370 Corrected spacing 2014-11-08 15:52:04 +01:00
Fabio Bas
8ca0b96d10 Rework the picture download behavior
Should fix #412
2014-11-08 15:08:49 +01:00
Gavin Bisesi
8d2e5d3c43 Merge pull request #306 from Mawu3n4/translation
French translation
2014-11-07 10:11:53 -05:00
Gavin Bisesi
8f801825a9 Merge pull request #379 from poixen/uicolors
Changed UI colors
2014-11-05 15:45:53 -05:00
Gavin Bisesi
5ad869c636 Merge pull request #378 from poixen/animation
Card Animation performance improvement
2014-11-05 15:45:24 -05:00
Gavin Bisesi
67db347d12 Merge pull request #366 from poixen/removeoldimages
Resource cleanup
2014-11-05 15:31:17 -05:00
poixen
967e1a469e Removed comments
- Removed comments as-per request
2014-11-05 14:10:30 +01:00
poixen
accd3ecca1 Removed commented line
- removed unused commented out code
2014-11-05 14:03:43 +01:00
Matt Lowe
332d69a1a5 Removed comment
+ removed getters and setters comment
2014-11-03 17:19:12 +01: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
Gavin Bisesi
a051133af9 Merge pull request #397 from woogerboy21/patch-1
Correct gametype primary key
2014-11-03 10:22:24 -05:00
Matt Lowe
c130ee92fa Additional comment
+ Added additional comment explaining what DELTA is.
2014-11-03 14:39:51 +01:00
Gavin Bisesi
1d7850fff8 Merge pull request #406 from ctrlaltca/fix_405
Fix for #405
2014-10-29 09:53:21 -04:00
Fabio Bas
9cfb09cd5b Possible fix for #405 2014-10-28 16:30:49 +01:00
woogerboy21
950fc01363 Correct gametype primary key
Updated rooms_gametype to reflect proper column as primary key.
2014-10-24 21:02:45 -04:00
Zack
66aba2eec7 Merge remote-tracking branch 'upstream/master' into translation 2014-10-22 11:18:54 +02:00
Gavin Bisesi
07cccda17b Merge pull request #377 from poixen/newhandsvg
Updated hand.svg
2014-10-20 10:28:58 -04:00
Gavin Bisesi
d264191ee6 Merge pull request #381 from poixen/abstractcarddragitemcleanup
Removed inline logic
2014-10-17 15:07:04 -04:00
Matt Lowe
80fd0fbcf3 Removed inline logic
Removed inline logic to static variable, slight performance increase.
2014-10-17 00:17:44 +02:00
Matt Lowe
41478800ef Updated Sideboard gradient colors
Wasnt happy with the first gradient, too much white. Now uses 2 shades
or purple.
2014-10-16 18:15:07 +02:00
Matt Lowe
a1c013a893 Updated UI features
+ Added a fade to inactive players TableZone
+ Refreshed TableZone, HandZone and DeckView  default background colors
2014-10-16 18:14:51 +02: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
Matt Lowe
dc58d1a61e Shortened animation time between phases
+ changed from 50ms to 25ms between update calls.
2014-10-16 18:05:49 +02:00
Gavin Bisesi
2a15b9c95a Merge pull request #376 from ctrlaltca/oh_my_sounds
Fix sounds under windows and osx (fix #356)
2014-10-16 11:32:30 -04:00
Matt Lowe
03f79887c4 Updated Hand image
Looking at the client I saw the cockatrice was still on the card back. I
have now removed it.
2014-10-14 22:43:14 +02:00
Fabio Bas
e0d76b60d0 Change button label and made it translatable 2014-10-14 22:02:42 +02:00
Fabio Bas
82a3deec30 Add a button in the sounds settings to play a test sound 2014-10-14 21:13:16 +02:00
Fabio Bas
9ef4d79c33 Install the audio/* plugins under windows and osx 2014-10-14 21:13:04 +02:00
Gavin Bisesi
8dbb2d8e6f Merge pull request #364 from ctrlaltca/win32_openssl_cmake
Deploy openssl libraries under win32
2014-10-14 14:03:32 -04:00
Gavin Bisesi
592bb7c8f1 Merge pull request #368 from ctrlaltca/servatrice_linux_menu_entry
Servatrice linux menu entry
2014-10-14 11:58:50 -04:00
Gavin Bisesi
ae7cdc1c23 Merge pull request #375 from Daenyth/revert-260-master
Revert "Find cards by prefix"
2014-10-14 11:57:41 -04:00
Gavin Bisesi
a26d4078cc Revert "Find cards by prefix" 2014-10-14 11:28:30 -04:00
Zack
2c74524f59 fix: missing message closing tag 2014-10-12 16:43:35 +02:00
Fabio Bas
754b97f212 Servatrice: open in a terminal window when started from the menu 2014-10-11 13:38:07 +02:00
Fabio Bas
c0abb347ac Servatrice: Install icons and desktop file under linux 2014-10-11 13:37:52 +02:00
Matt Lowe
299283aa2e Resource cleanup
Removed some unused resource files.
2014-10-10 23:00:05 +02:00
Fabio Bas
ea622a7302 NSIS: uninstall openssl libraries 2014-10-10 17:22:39 +02:00
Fabio Bas
dfb8be79cf Fix installation of libeay32.dll, ssleay32.dll while compiling the PACKAGE target 2014-10-10 17:22:29 +02:00
Zack
9169d3a804 fix: conflicts && add: new translation 2014-10-10 14:56:05 +02:00
Fabio Bas
ef7fc01f08 Fix typos 2014-10-10 14:26:52 +02:00
Gavin Bisesi
ca60a469eb Merge pull request #363 from woogerboy21/win_servatrice_icon
Servatrice Icon For Windows
2014-10-10 08:25:51 -04:00
Fabio Bas
90e90b59a3 Reverted WITH_SERVER to OFF 2014-10-10 14:23:31 +02:00
Fabio Bas
6f25e09132 Deploy openssl libraries under win32
They are needed to fetch prices from deckbrew and possibly, in the
future, for ssl server connections
2014-10-10 14:12:30 +02:00
woogerboy21
692910f9f3 Servatrice Icon For Windows
Servatrice icon now gets created in windows start menu.
2014-10-09 15:25:06 -04:00
Gavin Bisesi
6810ae46d6 Merge pull request #260 from Mawu3n4/master
Find cards by prefix
2014-10-09 11:29:02 -04:00
Gavin Bisesi
4070ba8e26 Merge pull request #352 from poixen/image-refresh
Image refresh
2014-10-09 11:27:47 -04:00
Gavin Bisesi
0f5f82d492 Merge pull request #358 from poixen/serverlogo2
Servatrice logo
2014-10-09 11:27:15 -04:00
Matt Lowe
359714214d Added .desktop file 2014-10-08 18:46:31 +02:00
Gavin Bisesi
3c0a09bf5c Merge pull request #361 from woogerboy21/servatrice-dbtable-fix
correct _room db table, add _rooms_gametypes table
2014-10-08 08:50:00 -04:00
Gavin Bisesi
602fa25321 Merge pull request #359 from ctrlaltca/servatrice_reguser_fixes
Servatrice reguser fixes
2014-10-08 08:41:13 -04:00
woogerboy21
9cd1a5b33f correct _room db table, add _rooms_gametypes table
Corrected table column in _rooms db table and added _rooms_gametypes
table.
2014-10-07 14:49:24 -04:00
Fabio Bas
22af789c9e Servatrice: log to console authentication method on startup 2014-10-07 17:04:22 +02:00
Matt Lowe
90c2101a43 Removed png file 2014-10-07 16:50:19 +02:00
Matt Lowe
4866e94c86 Renamed resources
+ renamed the resources to servatrice.*
2014-10-07 16:49:40 +02:00
Fabio Bas
15555c16fd Fix servatrice's regonly mode 2014-10-06 22:56:09 +02:00
Gavin Bisesi
faa66e4d7f Merge pull request #355 from ctrlaltca/servatrice_passwordauth
Servatrice password authentication
2014-10-06 15:56:41 -04:00
Fabio Bas
0d35488c21 Added schema for _rooms table 2014-10-06 21:49:38 +02:00
Fabio Bas
01bd26d228 Misc typos fixing 2014-10-06 21:44:20 +02:00
Matt Lowe
5b50aa0f0a Servatrice logo
+ added resources needed for servatrice logo
~ updated CMakeLists.txt to include the new resources
2014-10-06 21:04:37 +02:00
Gavin Bisesi
006451f402 Merge pull request #238 from arxanas/no-overwrite-tokens-xml
Fix #231: tokens.xml no longer overwritten by cards.xml.
2014-10-06 11:34:58 -04:00
Fabio Bas
91dafdb3e8 Move server network settings to the bottom and add a disclaimer 2014-10-04 18:21:07 +02:00
Fabio Bas
29cf353913 Give servatrice example configuration some love
added "password" settings
commented all settings
2014-10-04 17:51:27 +02:00
Fabio Bas
0d9eec4b64 Servatrice: added authentication type "password" 2014-10-04 17:50:01 +02:00
Fabio Bas
0261862b1b Fix configuration loading 2014-10-04 10:33:55 +02:00
Matt Lowe
e240e47d2f Fixed svg for icon
For some reason there was an issue with making the creature image white,
i found a workaround. Icon should now display correctly.
2014-10-03 19:02:40 +02:00
Matt Lowe
7cdd2a26f6 Icon changes
+ added updated mac icon that was missing
~ resized cockatrice.png
2014-10-03 19:02:27 +02:00
Matt Lowe
294edb3295 Logo and card back refresh
~ Updated the back of the card, cleaner lines, slightly more modern.
~ Updated game icon/logo
2014-10-03 19:02:12 +02:00
Gavin Bisesi
73c963e9c4 Merge pull request #346 from ctrlaltca/servatrice_win32
Servatrice win32 fixes
2014-10-03 10:56:13 -04:00
Fabio Bas
871f5f7c94 use qWarning instead of std::err 2014-10-02 23:45:42 +02:00
Fabio Bas
8d8ccaad7f use 4 spaces instead of tabs 2014-10-02 23:42:51 +02:00
Fabio Bas
37eaeaae13 servatrice: as a third choice, check for a config in /etc/servatrice/ 2014-10-02 23:41:24 +02:00
Fabio Bas
85a4a94ba3 win32: Avoid wiping server.log on upgrade 2014-10-02 23:26:25 +02:00
Fabio Bas
b348068369 Servatrice: Add a default option for every config value
add an empty room swell, if none had been defined in the config (or we
are running with no config at all)
2014-10-02 23:11:49 +02:00
Fabio Bas
4b38187d20 Fix logfile option in servatrice.ini
servatrice was using hardcocded filename “server.log” even if a custom
value was specified
2014-10-02 23:00:17 +02:00
Fabio Bas
8b32e51cab win32 NSIS installer: uninstall servatrice*
just avoid deleting servatrice.ini, if the user manually made one from
the servatrice.ini.example
2014-10-02 22:46:46 +02:00
Fabio Bas
a1b6600fe1 Servatrice: group all the use of QSettings in a single file
and add a method to guess the path of servatrice.ini
2014-10-02 22:37:50 +02:00
Gavin Bisesi
277aba79dc Merge pull request #336 from poixen/master
Tokens use PT levels from cards.xml if available
2014-10-02 15:00:17 -04:00
Gavin Bisesi
48817ed283 Merge pull request #314 from ctrlaltca/win32_setup_fix
Fix oracle under windows
2014-10-02 10:35:22 -04:00
Gavin Bisesi
9e63c7fa35 Merge pull request #313 from pliu037/oracle-error-msg
Oracle error message
2014-10-02 10:35:05 -04:00
Gavin Bisesi
3c598531ed Merge pull request #342 from acron0/auto-connect-fix
[Issue 340] Changed 'value' to 'setValue' in settingsCache.cpp
2014-10-02 10:06:47 -04:00
Gavin Bisesi
263b5a40f5 Merge pull request #341 from ctrlaltca/servatrice_install_configs
Servatrice: install example ini and sql schema file
2014-10-02 10:06:03 -04:00
Gavin Bisesi
283bac0b80 Merge pull request #339 from ctrlaltca/qt5_no_libgcrypt
Drop libgcrypt dependency for qt5
2014-10-02 10:05:17 -04:00
Antony Woods
1f58f7d848 Changed 'value' to 'setValue' on line 275 2014-10-02 08:48:04 +01:00
Fabio Bas
7afdff1b3b Servatrice: install example ini and sql schema file
WIN: in the binary directory
OSX: in the app bundle’s Resources subdirectory
LINUX: in $PREFIX/share/servatrice
2014-10-02 08:34:21 +02:00
Gavin Bisesi
55b20343e9 Note that libgcrypt is needed only for qt4 2014-10-01 16:30:19 -04:00
Fabio Bas
355de8fba4 Drop libgcrypt dependency for qt5 2014-10-01 20:21:22 +02:00
Gavin Bisesi
b32aeb2211 Merge pull request #280 from pliu037/remove-.full-req
Support images without .full suffix
2014-10-01 13:50:02 -04:00
Matt Lowe
e3a94ecca3 Token PT is now set to DB values if not defined in event. 2014-10-01 19:20:42 +02:00
Gavin Bisesi
7eed007f14 Merge pull request #281 from ctrlaltca/fix_202
Fix crash #202
2014-09-30 20:35:11 -04:00
Matt Lowe
a80ccd882c Tokens use PT levels from cards.xml if available
I added a check to see if the event PT is empty, if it is, we try and
use the PT from the cards.xml. In resp to issue #330.
2014-10-01 00:57:07 +02:00
Gavin Bisesi
9752dcf495 Merge pull request #332 from ctrlaltca/sideboard-helpers
Sideboard helpers
2014-09-30 13:46:43 -04:00
Fabio Bas
eaad8de8d0 Merge branch 'sideboard-helpers' of https://git.k6.io/nvdiao/cockatrice into sideboard-helpers 2014-09-29 18:25:10 +02:00
Gavin Bisesi
b5de708756 Merge pull request #289 from acron0/auto-connect
Added 'auto connect' checkbox to connect dialog.
2014-09-29 10:24:06 -04:00
Gavin Bisesi
ab7f354e36 Merge pull request #318 from catmanjan/master
Change default scry to 1.
2014-09-19 10:22:04 -04:00
Jan Martin
6f97e59c03 Change default scry to 1. 2014-09-19 21:41:57 +10:00
Fabio Bas
98e5211ad5 Fix oracle under windows 2014-09-15 16:15:27 +02:00
Peng Liu
3cd6cc9195 Added the location Oracle attempted to save cards.xml to the failure message. 2014-09-15 06:32:46 -04:00
Zack Dibe
8928a699f9 fix: grammar in french translation 2014-09-11 23:44:52 +02:00
Mawu3n4
54e3867c72 finish fr translation 2014-09-11 15:18:40 +02:00
Mawu3n4
466f5ae5e1 add: FR translations and fix bad grammar 2014-09-11 15:17:35 +02:00
Yuki Izumi
fefb6fc612 Add sideboard helpers. 2014-09-11 12:56:27 +10:00
Antony Woods
f1b012c83d Adding modified translation files 2014-09-09 17:30:37 +01:00
Antony Woods
dbe46084ac Merge branch 'master' of github.com:Daenyth/Cockatrice into auto-connect 2014-09-09 17:22:55 +01:00
Gavin Bisesi
2aeecc6063 Add note about tech support 2014-09-09 12:04:06 -04:00
Gavin Bisesi
fce1d6ac3f Change Qt4 to Qt4+5 in readme 2014-09-08 14:46:27 -04:00
Gavin Bisesi
64791b45f6 Add note on updating translations. 2014-09-08 14:46:01 -04:00
Gavin Bisesi
3c7abecac6 Merge pull request #292 from ctrlaltca/cmake_translations
Add a UPDATE_TRANSLATIONS option
2014-09-08 09:38:55 -04:00
Fabio Bas
d6b97976f9 Refreshed all translation files 2014-09-06 10:40:23 +02:00
Fabio Bas
a0b35ee60b Cockatrice - CMake: Include all existing translation files using a glob 2014-09-06 10:38:59 +02:00
Fabio Bas
e5eda9f172 Add a UPDATE_TRANSLATIONS options that actually updates translations! 2014-09-04 16:15:01 +02:00
Gavin Bisesi
8c072224c8 Move travis ci badge to Building section 2014-09-03 17:53:32 -04:00
Gavin Bisesi
d93cb0a637 Add link to Gitter chat 2014-09-03 17:52:31 -04:00
Antony Woods
ab83d6185a Used tr() function for auto-connect label. Changed formatting to adhere to coding style guidelines. 'Save Password' setting is now saved when cancelling the Connect dialog 2014-08-29 16:53:30 +01:00
Antony Woods
b381298981 Added 'auto connect' checkbox to connect dialog. When the main window becomes active for the first time and auto connect is set to true, it will call connectToServer at that point. 2014-08-27 21:25:11 +01:00
Gavin Bisesi
6f319c8b63 Merge pull request #286 from jturner/fix-build
Remove invalid character
2014-08-19 20:31:41 -04:00
James Turner
f06d2123fc Remove invalid character 2014-08-19 17:39:05 -04:00
Gavin Bisesi
59b8d7044a Merge pull request #285 from pliu037/fix-oracle-save
Fixed Oracle save bug
2014-08-15 09:24:22 -04:00
Peng Liu
9a934f3a43 Fixed a bug that caused Oracle to be stuck in an infinite loop if the default path checkbox was checked but failed to write. 2014-08-15 01:09:21 -04:00
Peng Liu
a83e6cdf48 Removed unused variable, bool stripped, from classes and functions. 2014-08-11 13:47:47 -04:00
Gavin Bisesi
0bb0530a31 Merge pull request #245 from pliu037/oracle-cards-path
Oracle cards.xml path
2014-08-11 10:13:38 -04:00
Gavin Bisesi
134810b979 Merge pull request #279 from ctrlaltca/valgrind_unified
Fixed Valgrind warnings
2014-08-11 09:11:12 -04:00
Fabio Bas
23a3b8364c Merge remote-tracking branch 'upstream/master' into fix_202 2014-08-11 15:07:43 +02:00
Gavin Bisesi
5c46cfc169 Merge pull request #179 from woogerboy21/registered-user-only-server
Registered Only Server
2014-08-11 09:03:57 -04:00
Fabio Bas
484a6e8bdc Fix crash #202 2014-08-11 10:50:55 +02:00
Peng Liu
781460d6ac Cockatrice can now load images both with and without .full. Will need to clean-up bool stripped (used to determine .full suffix inclusion). 2014-08-11 04:37:00 -04:00
Fabio Bas
1da2e7154c Fixed Valgrind warnings
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.
2014-08-11 10:08:33 +02:00
woogerboy21
6b8ca1e8a2 Cleaned up potential memory leak 2014-08-10 15:48:15 -04:00
Gavin Bisesi
8b32a1010a Merge pull request #265 from pliu037/clear-downloaded-pics
Clear downloaded images from settings
2014-08-10 13:34:14 -04:00
Gavin Bisesi
4e3d6a141c Merge pull request #274 from ctrlaltca/serva_memleaks
Removed a servatrice memleak
2014-08-08 12:22:44 -04:00
Gavin Bisesi
57efffcd2e Merge pull request #273 from ctrlaltca/picurl_handling
Fix #259
2014-08-08 08:59:41 -04:00
Mawu3n4
d55f6fdec1 fix: show card only found once by prefix 2014-08-08 14:24:29 +02:00
Fabio Bas
6e3c7d33da Make protobuf cleanup its resourced when servatrice ends
Should help make valgrind’s log a bit cleaner
2014-08-08 13:43:50 +02:00
Fabio Bas
0a5106b8ef Don't leak a QSettings object at every logged message 2014-08-08 09:57:07 +02:00
Daenyth
765e865aa2 Continue downloading card images after failing url on one.
I should probably bust this out to a method.
2014-08-08 09:33:38 +02:00
Daenyth
42f1c6938f Merged: First draft of better pic url error handling
Cherry-picked b9cb61abd0
2014-08-08 09:33:35 +02:00
Gavin Bisesi
e12d66df4f Merge pull request #271 from ctrlaltca/picurl_handling
Picurl handling
2014-08-07 17:25:38 -04:00
Fabio Bas
bba8184d37 Fix off by one 2014-08-07 23:14:57 +02:00
Fabio Bas
88dfea8ece Don't save card pictures if we don't have a proper set name for it 2014-08-07 23:14:50 +02:00
Fabio Bas
3bce98e3a9 Fix crashes trying to load the picture of a card with no <set> 2014-08-07 23:14:41 +02:00
Gavin Bisesi
0de0658acd Merge pull request #269 from arxanas/style-guide-memory-management
Added section on memory management to CONTRIBUTING.md.
2014-08-07 15:51:51 -04:00
Waleed Khan
bee1ff39f5 Added section on memory management to CONTRIBUTING.md. 2014-08-07 15:37:40 -04:00
Gavin Bisesi
fe3dc02513 Merge pull request #266 from arxanas/token-dashes
Fix #258: Dashes to spaces.
2014-08-07 15:34:47 -04:00
Peng Liu
d3459aabf9 Moved the button from the paths section to be below the "Download high-quality card pictures" checkbox. Button now reads "Reset/Clear Downloaded Pictures". Removed "Path to"s from card/token database, hand/stack/table/player info background, and card back labels. 2014-08-07 14:35:18 -04:00
Peng Liu
ae80752497 Added notification messages informing users of the success or failure of clearing downloaded images. 2014-08-07 14:00:59 -04:00
Peng Liu
3375d45571 Logically inverted the if... else statement by removing the logical not (!). Cleaned up a ;;. 2014-08-07 12:58:03 -04:00
Waleed Khan
ffc5b59fec Fix #258: Dashes to spaces. 2014-08-07 12:29:20 -04:00
Peng Liu
674005383b Added a button and the functionality to clear all downloaded images (all images within subfolders at picsPath/downloadedPics) under Settings. 2014-08-07 12:09:42 -04:00
Gavin Bisesi
ab7d70a9c8 Merge pull request #263 from ctrlaltca/oracle_icon
Add icon to oracle
2014-08-07 12:00:46 -04:00
Gavin Bisesi
1a4abc3d63 Merge pull request #264 from arxanas/style-guide
Added style guide.
2014-08-07 11:58:37 -04:00
Waleed Khan
da9592f0d8 Added style guide. 2014-08-07 11:52:40 -04:00
Mawu3n4
10ab53c4ac fix: find by prefix if card not found only 2014-08-07 17:43:14 +02:00
Fabio Bas
40e9735678 Add icon to oracle 2014-08-07 17:27:15 +02:00
Waleed Khan
c0d4669088 Merge remote-tracking branch 'upstream/master' into no-overwrite-tokens-xml
Conflicts:
	cockatrice/src/carddatabase.cpp
2014-08-07 11:06:41 -04:00
Gavin Bisesi
af4d662c54 Merge pull request #262 from ctrlaltca/fix_134
add success notification to oracle; fixes #134
2014-08-07 10:39:13 -04:00
Fabio Bas
2e051c3fd7 add success notification to oracle 2014-08-07 16:10:57 +02:00
Dibe Zackaria
9092f2298b fix: remove auto 2014-08-06 20:27:04 +02:00
Dibe Zackaria
e8abd6eb63 fix: typo 2014-08-06 20:13:59 +02:00
Mawu3n4
7d190ddaf7 fix: pushed old version 2014-08-06 18:01:47 +02:00
Mawu3n4
621a47de9c add: find token cards by prefix 2014-08-06 17:54:47 +02:00
Gavin Bisesi
ef1fbc0db9 Merge pull request #256 from pliu037/handle-PNGs-2
Handle PNGs (and other image formats)
2014-08-06 10:42:15 -04:00
Peng Liu
8b588c6fd3 Merge branch 'ctrlaltca-pr256' into handle-PNGs-2 2014-08-06 04:55:27 -04:00
Fabio Bas
6502a182e8 Support loading of files with wrong extension
Like M15’s .png that cockatrice wrongly saved as .jpg
Additionally, move the QImageReader declaration outside of the inner
loop
2014-08-06 09:31:22 +02:00
Peng Liu
4bb1d28ae7 Removed the QLists for determining image format. Instead, using QImageReader, both when downloading/saving and when loading, to determine the correct format (Cockatrice now supports all QImageReader-supported formats).
Image loading still uses one for loop to iterate through the QList of paths to folders in which to search for images.
2014-08-05 14:54:40 -04:00
Peng Liu
605479694d Removed some redundant code. Factored out translations. 2014-08-05 08:50:42 -04:00
Peng Liu
8587b8c349 Refactored the magic bytes into two QLists: one containing a list of QStrings representing the supported extensions, the other containing a list of QByteArrays representing the magic bytes in hex.
Refactored the image loading loop to be two nested for loops: the outer loop iterating through the QList of paths to folders in which to search for images and the inner loop iterating through the QList of supported extensions.
2014-08-05 03:48:30 -04:00
Peng Liu
75122c3c9d Switched back to using QFile instead of QImage for saving as QImage's save function adds overhead to the file size, leaving me unsure whether the original image is affected. 2014-08-04 17:01:58 -04:00
Peng Liu
387086cb4c Added support for PNG images (both for downloading/saving and loading). 2014-08-04 16:43:57 -04:00
Gavin Bisesi
9837f8bb18 Merge pull request #254 from ctrlaltca/compilation_warning_246
Fix compilation warning introduced in #246
2014-08-04 14:37:06 -04:00
Fabio Bas
3667ab504c Fix compilation warning introduced in #246
/cockatrice/src/main.cpp:162:16: warning: format string is not a string
literal (potentially insecure) [-Wformat-security]
        qDebug("Could not create " +
settingsCache->getPicsPath().toUtf8() + "/CUSTOM. Will fall back on
default card images.");
2014-08-04 20:09:53 +02:00
Gavin Bisesi
9ba2ae71a8 Merge pull request #244 from ctrlaltca/cards_xsd
Added schema for cards.xml and tokens.xml in xsd format
2014-08-04 10:51:11 -04:00
Gavin Bisesi
8d482245ff Merge pull request #251 from arxanas/case-insensitive-tokens
Fix #248: the token dialog generates cards irrespective of their case and punctuation
2014-08-04 10:50:25 -04:00
Gavin Bisesi
6f45bbc82c Merge pull request #246 from pliu037/create-CUSTOM-folder
Picture path/CUSTOM folder creation
2014-08-04 10:49:39 -04:00
Peng Liu
a9eaf65a82 Changed .toLatin1() to .toUtf8(). 2014-08-02 23:44:31 -04:00
Waleed Khan
309494111c Fix #248: the token dialog generates cards irrespective of their case and punctation. 2014-08-02 19:32:24 -04:00
Peng Liu
b3fa99ef36 I was too hasty and forgot a + and to toLatin1() a QString in the qDebug arg. 2014-07-31 23:24:25 -04:00
Peng Liu
077d9f2745 Checks if CUSTOM folder was successfully created. If not, prints qDebug message and proceeds as normal except uses default card images instead of custom ones. 2014-07-31 22:42:13 -04:00
Peng Liu
8be4a14fcc Before: If default is checked, Oracle will always save to the AppData path.
If a path to cards.xml is set, Oracle will update that cards.xml.
If Oracle is run before a path to cards.xml is set, if default is checked, cards.xml will be saved on the AppData path. Furthermore, this path will be set as the cards.xml path for both Oracle and Cockatrice.
If Oracle is run before a path to cards.xml is set, if default is NOT checked, cards.xml will be saved at the selected path and this path will be set as the cards.xml path for both Oracle and Cockatrice.
If a path to cards.xml is set, if default is NOT checked, cards.xml will be saved at the selected path but this path will NOT be set as the cards.xml path for either Oracle or Cockatrice. This allows people who already have a cards.xml (which may be customized), to still obtain clean copies of cards.xml through Oracle without overwriting their own
2014-07-31 15:33:11 -04:00
Gavin Bisesi
ffed0e00fe Merge pull request #214 from pliu037/master
Added better support for custom card images
2014-07-31 13:42:57 -04:00
Fabio Bas
b2e1855af7 Fix: <color> can appear more than once 2014-07-31 18:40:10 +02:00
Fabio Bas
c1b7d71dca Added schema for cards.xml 2014-07-31 17:53:39 +02:00
Gavin Bisesi
ca6bd669ce Merge pull request #233 from ctrlaltca/regression_card_picurl
Add back support for custom picture urls in cards.xml
2014-07-31 11:30:26 -04:00
Gavin Bisesi
7d5ce6f0ef Merge pull request #235 from ctrlaltca/offline_users_menu
Disable some usercontextmenu actions if the user is offline; fix #234
2014-07-30 15:49:43 -04:00
Gavin Bisesi
951e43b166 Update cmake build flags in README 2014-07-30 15:47:57 -04:00
Gavin Bisesi
1e5a00d100 Merge pull request #228 from ctrlaltca/error_suppression
Fix building with debug
2014-07-30 15:44:08 -04:00
Gavin Bisesi
14d6b011d7 Merge pull request #236 from arxanas/remove-price-column
Fix #110: Price column is removed when the setting is disabled.
2014-07-30 09:55:25 -04:00
Waleed Khan
9ba5d7968e Stop clobbering tokens.xml tokens; don't let Oracle read tokens into cards.xml. 2014-07-29 23:46:04 -04:00
Waleed Khan
8df7e9f164 Fix #231: tokens.xml no longer overwritten by cards.xml. 2014-07-27 20:55:47 -04:00
Fabio Bas
9e12c5b2d4 Use custom picUrl if picUrlHq is not defined 2014-07-27 22:06:35 +02:00
Fabio Bas
6b9daf3d15 Enable Show this user's games" for offline users 2014-07-27 21:29:27 +02:00
pliu037
c3a68fcbd3 Cleaned up some lines of code 2014-07-27 12:47:05 -04:00
Waleed Khan
689acc1e32 Fix #110: Price column is removed when the setting is disabled. 2014-07-26 21:13:30 -04:00
Fabio Bas
fe12f71b93 Disable some usercontextmenu actions if the user is offline; fix #234 2014-07-27 00:29:23 +02:00
Fabio Bas
aa225f8df7 Add back support for custom picture urls in cards.xml 2014-07-26 23:36:51 +02:00
Fabio Bas
1f0ba0ea08 Debug compilation: check flags actually supported by the compiler 2014-07-25 17:32:12 +02:00
Gavin Bisesi
ea897ee2ef Merge pull request #229 from arxanas/deckbrew-prices
Fix issue mentioned in #152: price updater loads all cards now.
2014-07-25 08:42:20 -04:00
Waleed Khan
fe9f7a22b1 Fix issue mentioned in #152: price updater loads all cards now. 2014-07-24 19:53:05 -04:00
Fabio Bas
3fda31073f Declare useless virtual dtor for polymorphic classes 2014-07-24 18:54:45 +02:00
Fabio Bas
0f501762e0 Reorder items initialization to match the order in class declaration 2014-07-24 18:44:19 +02:00
Fabio Bas
b10331fe66 Hide unused parameters in oracle/ to avoid warnings 2014-07-24 18:40:56 +02:00
Fabio Bas
bd97d7b933 Fix signed/unsigned comparision 2014-07-24 18:40:25 +02:00
Fabio Bas
d9577f0d6c Hide unused parameters in cockatrice/ to avoid warnings 2014-07-24 18:27:02 +02:00
Fabio Bas
13bd35e020 Servatrice: add prototypes for local functions 2014-07-24 18:16:08 +02:00
Fabio Bas
3102dd60f9 Hide unused parameters in common/ to avoid warnings 2014-07-24 18:09:28 +02:00
Fabio Bas
6c7ba0950a Fix warning for DeskList copy constructors
Using pointers for classes derived from QObject would be the best idea.
2014-07-24 18:00:20 +02:00
Fabio Bas
036980eb44 ISO C++ forbids variable length array 2014-07-24 17:37:54 +02:00
Fabio Bas
f32a999b4e Remove unused variable 2014-07-24 15:38:36 +02:00
Gavin Bisesi
abdaa610ee Merge pull request #152 from ctrlaltca/master_feature_prices
Add pricing from deckbrew.com (refs #147)
2014-07-24 07:45:37 -04:00
Fabio Bas
49b3568b53 small fix: moving the url length check in the inner loop 2014-07-23 23:10:48 +02:00
Fabio Bas
b40abfa1ad Split price retrieval on multiple request 2014-07-23 23:00:58 +02:00
Fabio Bas
bf92e67002 Ensure the whole table gets refreshed when updating prices 2014-07-23 22:11:26 +02:00
Gavin Bisesi
a8031321c6 Merge pull request #226 from arxanas/deckstats-multiple-cards
Fix #225: Multiples of cards are now sent to deckstats.
2014-07-23 15:38:09 -04:00
Fabio Bas
b0ee2e6d4b Merge branch 'master' into master_feature_prices 2014-07-23 21:37:37 +02:00
Waleed Khan
68ac8d1a33 Fix #225: Multiples of cards are now sent to deckstats. 2014-07-23 15:21:46 -04:00
Gavin Bisesi
395658988a Merge pull request #220 from arxanas/deck-parser-ampersand
Fix #183: Deck parser doesn't too eagerly replace ampersands.
2014-07-23 08:53:04 -04:00
Gavin Bisesi
a50e7ba936 Merge pull request #156 from arxanas/master
Fix #45: don't send tokens to deckstats.
2014-07-23 08:41:15 -04:00
Gavin Bisesi
0f627958c7 Merge pull request #224 from arxanas/case-insensitive-card-tag
Æ now actually works with the case-insensitive tags.
2014-07-23 08:12:54 -04:00
Waleed Khan
feaa3f5052 Merge remote-tracking branch 'origin/master'
Conflicts:
	cockatrice/src/carddatabase.cpp
2014-07-23 00:50:16 -04:00
Waleed Khan
40e97140d6 Merge remote-tracking branch 'upstream/master'
Conflicts:
	cockatrice/src/carddatabase.cpp
2014-07-23 00:49:13 -04:00
Waleed Khan
d663c12689 Merge remote-tracking branch 'upstream/master'
Conflicts:
	cockatrice/src/carddatabase.cpp
2014-07-23 00:21:16 -04:00
Waleed Khan
2a5aa06881 Æ now actually works with the case-insensitive tags. 2014-07-22 20:58:38 -04:00
Gavin Bisesi
27eca25057 Merge pull request #197 from arxanas/case-insensitive-card-tag
Fix #117: Card tags now match disregarding case and punctuation.
2014-07-21 13:02:09 -04:00
Waleed Khan
aff32e0f56 Ignore diacritics as well.
So [card]jotun grunt[/card] works as well as [card]Jötun Grunt[/card].
Also I removed some debugging information I accidentally left in.
2014-07-20 21:20:50 -04:00
Waleed Khan
4729171ef7 Merge remote-tracking branch 'upstream/master' into deck-parser-ampersand 2014-07-20 15:08:22 -04:00
Waleed Khan
e5be082714 Merge remote-tracking branch 'upstream/master' into case-insensitive-card-tag 2014-07-20 15:06:51 -04:00
Waleed Khan
359882917a Merge remote-tracking branch 'upstream/master'
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
2014-07-20 14:40:18 -04:00
woogerboy21
92ae596d11 Merge remote-tracking branch 'upstream/master' into registered-user-only-server 2014-07-19 23:38:50 -04:00
Gavin Bisesi
1973df10e8 Merge pull request #221 from arxanas/travis-osx-no-cmake
Removed cmake from Travis's OS X dependencies.
2014-07-19 22:02:42 -04:00
Waleed Khan
fd5c497e8e Merge branch 'travis-osx-no-cmake' into deck-parser-ampersand 2014-07-19 18:38:41 -04:00
Waleed Khan
4df46b13e6 Removed cmake from Travis's OS X dependencies. 2014-07-19 18:27:44 -04:00
arxanas
b1bfda9f4e Merge remote-tracking branch 'upstream/master' into deck-parser-ampersand
Conflicts:
	common/decklist.cpp
2014-07-19 18:12:49 -04:00
arxanas
0eb97c91b3 Fix #183: Deck parser doesn't too eagerly replace ampersands. 2014-07-19 14:47:19 -04:00
arxanas
88e6d0d3eb Tabs to spaces. 2014-07-19 14:28:46 -04:00
woogerboy21
021f0911c4 Merge remote-tracking branch 'upstream/master' into registered-user-only-server
Conflicts:
	common/server.cpp
	common/server_protocolhandler.cpp
	servatrice/src/servatrice.cpp
2014-07-18 23:46:56 -04:00
Gavin Bisesi
843eba817b Merge pull request #194 from ctrlaltca/master_regression_180_tab
Room and Message tabs: focus input line when convenient; Fix #180
2014-07-13 09:16:06 -04:00
Gavin Bisesi
1137179b88 Add WITH_QT4 note to README 2014-07-13 09:08:32 -04:00
Gavin Bisesi
b15d8e076c Merge pull request #209 from ctrlaltca/cpack_win_fixes
Cpack fixes for windows (fixes #207)
2014-07-13 08:07:34 -04:00
Fabio Bas
23b0a6c0df Windows + CPack: fix packaging
Package the correct cpack’s temporary directory
2014-07-12 01:38:00 +02:00
Fabio Bas
c07b53999d Fix: ensure git is always run from the project directory
When trying to obtain the version hash
2014-07-12 00:11:48 +02:00
Fabio Bas
534b223545 Merge remote-tracking branch 'upstream/master' into master_regression_180_tab 2014-07-10 19:50:38 +02:00
Fabio Bas
b5d8e7da10 Merge remote-tracking branch 'upstream/master' into master_feature_prices 2014-07-10 19:48:50 +02:00
Gavin Bisesi
f83d58309b Merge pull request #126 from ctrlaltca/cmake_qt5
Qt5 support
2014-07-10 13:13:51 -04:00
Gavin Bisesi
86fa8f304d Change client send-ping timer back to 1sec
9sec was causing too many timeout issues.

Timeout from both client and server perspective needs to be revisited
2014-07-09 19:06:31 -04:00
Gavin Bisesi
52827573b0 Merge pull request #204 from ctrlaltca/master_issue_203
Fixes #203
2014-07-09 16:31:48 -04:00
Gavin Bisesi
ca5d719d7d Merge pull request #200 from arxanas/4x-cardname
Fix #184: Deck loader reads 4x cardname correctly.
2014-07-09 11:50:33 -04:00
Fabio Bas
ea8c55b2c9 Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-07-09 17:44:21 +02:00
Fabio Bas
a6f299b247 fix #203 2014-07-09 17:42:35 +02:00
Fabio Bas
106e9d1538 Updated for new API
* Use the new, shortest API m=
 * for a card, grab prices for all sets
 * use the lower price for a card from all sets, but avoid prices=0
(e.g.: some M15 cards have no price yet)
2014-07-09 09:43:35 +02:00
arxanas
04e80304ef Fix #184: Deck loader reads 4x cardname correctly. 2014-07-08 22:56:18 -04:00
arxanas
4e8ba699d2 Tabs to spaces. 2014-07-08 22:53:02 -04:00
pliu037
1a601d9509 Added better support for custom card images by prioritizing a check for card images in <Pictures path>/<CUSTOM> before all other checks. 2014-07-08 16:24:51 -04:00
Fabio Bas
d894c53265 Servatrice: fix handling of incoming connections on qt5 2014-07-08 22:05:06 +02:00
Gavin Bisesi
73e5e12c24 Merge pull request #199 from arxanas/remember-game-filter-preferences
Fix #137: Game filter preferences are saved.
2014-07-08 12:49:45 -04:00
arxanas
1217689ed6 Hash the game type. 2014-07-07 19:04:01 -04:00
arxanas
8141901679 Fix #137: Game filter preferences are saved. 2014-07-07 17:41:16 -04:00
arxanas
810029ce15 Fix #117: Card tags now match disregarding case and punctuation. 2014-07-06 20:04:09 -04:00
Fabio Bas
04ad73fcdc Workaround for qt5 version compiled with -reduce-relocations 2014-07-06 23:25:44 +02:00
Fabio Bas
aead0843af Room and Message tabs: focus input line when convenient; Fix #180
As suggest by Daenyth in #185
2014-07-06 14:28:48 +02:00
Fabio Bas
e9895d643f Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-07-03 16:40:04 +02:00
Gavin Bisesi
7f77082466 Merge pull request #151 from ctrlaltca/master_input_focus
Focus the Input line in chat when convenient (fixes #113)
2014-07-03 10:34:21 -04:00
Fabio Bas
6f18e3692d Chat room: ensure the line input has focus when the window gets created 2014-07-03 15:57:40 +02:00
woogerboy21
00ec84db2a Stale Comment Removal
Removed stale commented lines from about window code.
2014-07-02 23:30:12 -04:00
woogerboy21
0a1fe7f5a8 Requested Cleanup
Corrected tab to 4 space (per request)
Moved regonly option under authentication ini location (per request)
2014-07-02 22:27:05 -04:00
woogerboy21
d246fa39fe Registered Only Server
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.
2014-07-02 20:52:22 -04:00
Gavin Bisesi
e198f775dc Merge pull request #168 from woogerboy21/servatrice-shellmaint-scripts
DB Maint Scripts
2014-07-02 17:56:32 -04:00
Fabio Bas
06def7f46a Ensure all card prices are retrieved correctly
Query card database to get a multiverseis for a card.
Get card price using that id instead of card name.
Tested Aether, split cards, question elemental?, _____
2014-07-02 21:42:29 +02:00
Fabio Bas
d102733826 Added default cases to switch 2014-07-02 21:42:17 +02:00
Fabio Bas
9ca5908de5 Create an enum for price sources
Probably settingscache would have been the correct place for the enum,
but keeping it in the same class/file where price sources are defined
sounds cleaner to me
2014-07-02 21:42:04 +02:00
Fabio Bas
a9ffbf5d2d use a signal instead of calling QMetaObject::invokeMethod 2014-07-02 21:41:52 +02:00
woogerboy21
9ba74fee5c Example Update
Renamed mysql configuration file to include example extension and set
git to ignore mysql.cnf per request.
2014-07-02 13:23:50 -04:00
woogerboy21
b27873667b Optimization
Updates for performance improvements per request
2014-07-02 11:11:17 -04:00
woogerboy21
2b55170110 DB Maint Scripts
External shell script to help maintain the cockatrice database tables.
2014-07-01 13:11:52 -04:00
Gavin Bisesi
fb4a7b3274 Give more friendly login error message 2014-07-01 12:04:33 -04:00
Gavin Bisesi
e955732ba8 Merge pull request #163 from arxanas/vanguard-card-names
Fix #155: Vanguard card names no longer conflict with regular card names.
2014-07-01 07:04:01 -04:00
arxanas
f730dca14c Fix #155: Vanguard card names no longer conflict with regular card names. 2014-07-01 02:29:25 -04:00
Fabio Bas
523483bccc Add a WITH_QT4 cmake option to force the use of Qt4 2014-06-30 22:10:29 +02:00
arxanas
7cbe410172 Fix #45: don't send tokens to deckstats. 2014-06-30 03:08:55 -04:00
Fabio Bas
922e98af67 Add pricing from deckbrew.com
* the previous PriceUpdater class has become abstract
* BLPPriceUpdater inherits the old code for blacklotusproject.com
* DBPriceUpdater is a new implementation for deckbrew.com
* add a setting to choose between the two
2014-06-29 23:33:03 +02:00
Daenyth
4d6f46b06e Change client ping send interval to 9 sec 2014-06-29 14:46:06 -04:00
Fabio Bas
d86fa410df Chat room: ensure focus on the input line 2014-06-29 19:32:03 +02:00
Fabio Bas
27bd00bec8 Direct chat: ensure focus is on the input line; fixes #113 2014-06-29 19:29:45 +02:00
Fabio Bas
052996b7a1 Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-06-29 17:13:12 +02:00
Fabio Bas
c0981a1743 Prettier package name 2014-06-28 19:53:15 +02:00
Fabio Bas
3509df76b7 Remove old version parsing from nsis script 2014-06-28 19:48:51 +02:00
Fabio Bas
fc5a193e0d NSIS: remove additional files on uninstall 2014-06-28 19:39:47 +02:00
Fabio Bas
fc24ffdec2 Cmake reorganization
* 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
2014-06-28 19:39:26 +02:00
Fabio Bas
e997b1d2bc Windows: drop the old nsis script
cpack generates it on the fly from a template
2014-06-28 18:44:38 +02:00
Fabio Bas
803fd7c95d Windows: Generate an nsis package on the fly with "make package" 2014-06-28 18:44:38 +02:00
Daenyth
ec3690fd29 Fix typo in gcc opts 2014-06-28 11:04:12 -04:00
ctrlaltca
29a7415f95 Merge pull request #3 from Daenyth/cmake_qt5
Fix merge conflicts with master in cmake_qt5
2014-06-28 15:27:51 +02:00
Daenyth
09d6d26fb2 Merge branch 'master' into cmake_qt5
Conflicts:
	cockatrice/src/main.cpp
2014-06-28 09:13:10 -04:00
Daenyth
8d31fe6cbc Clean up deck load chat message 2014-06-28 09:04:45 -04:00
Daenyth
4c2a553f03 Have servatrice inform players of sideboard size
Ref #142
2014-06-28 00:36:43 -04:00
Daenyth
c0bd7db658 Install libgcrypt on osx travis 2014-06-27 22:57:24 -04:00
Daenyth
38aa1f60ed Don't pass warn/err flags for release mode build.
It's making travis complicated
2014-06-27 22:50:21 -04:00
Daenyth
6d3fe428e7 Fix some warnings
Ref #127
2014-06-27 22:19:23 -04:00
Daenyth
d3b4ef38a0 Compile servatrice on travis 2014-06-27 20:42:19 -04:00
Daenyth
6da64315d2 Merge branch 'pr138' 2014-06-27 20:00:46 -04:00
Daenyth
1d02e0d5ec Clarify comment about typedef for OSX compiling 2014-06-27 20:00:29 -04:00
Gavin Bisesi
e258f8625a Merge pull request #121 from woogerboy21/serverlog-filtering
Server log filtering
2014-06-27 19:02:30 -04:00
woogerboy21
f685bd2abe formatting
4 space indent + code flow rewrite for easier readability.
2014-06-27 18:18:03 -04:00
Fabio Bas
d19340a117 Windows: create nsis package using cake 2014-06-27 20:21:26 +02:00
Fabio Bas
096f200eb9 Install libraries and plugins automatically under windows
You won’t have to copy manually all the dlls in the release directory
anymore
2014-06-27 17:40:29 +02:00
Fabio Bas
fc8c55ae97 Added cmake policy specific for win32 compilation 2014-06-27 17:24:25 +02:00
Fabio Bas
34772cccab Compilation fix for MSVC+Qt5 2014-06-27 17:09:09 +02:00
Fabio Bas
54805fb14e Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-06-27 15:21:01 +02:00
arxanas
080fd326ed Fixed #131: Compiles on OS X now. 2014-06-26 16:57:47 -04:00
woogerboy21
b83fe95b05 removed extra un-needed empty line.
removed extra un-needed empty line.
2014-06-26 14:46:22 -04:00
woogerboy21
365de1fdd0 added multiple filter capabilities
changed the single qstring log filtering to qstringlist to allow multiple filtering capabilities
2014-06-26 14:38:57 -04:00
Fabio Bas
634dd91b66 Set some cmake policies to mute cmake warnings 2014-06-26 20:19:47 +02:00
woogerboy21
977cf7340a settings update/addition
updated settings name (loglevel) to a more descriptive name (writelog)
added logfilters setting to allow user defined filters.
2014-06-26 00:40:21 -04:00
woogerboy21
91a96643f0 updated filtering code
rewrote filtering code to allow for user input
code only filters on single string at the moment (still needs updated).
2014-06-26 00:38:43 -04:00
Fabio Bas
62ca6130d1 #include <QtConcurrent> only for qt5, qt4 has this in QtCore 2014-06-25 19:28:03 +02:00
Fabio Bas
4e56ceb623 revert changes in .travis.yml 2014-06-25 19:13:11 +02:00
Fabio Bas
07ed519a25 Apply the patch in the previous commit globally 2014-06-25 19:12:38 +02:00
Fabio Bas
382a382c70 Maybe workaround buggy cmake module 2014-06-25 18:50:58 +02:00
Fabio Bas
4e4401a9e2 maybe fix travis build for ubuntu 2014-06-25 18:39:26 +02:00
Fabio Bas
567a6db184 Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-06-25 18:38:02 +02:00
Fabio Bas
2354ed6909 Require Qt4 >=4.8.0; remove some ifdefs on qt version 2014-06-25 16:00:48 +02:00
Fabio Bas
c4458b16b2 Qt5: fix plugin installation 2014-06-25 15:53:25 +02:00
Fabio Bas
809f390e2f Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-06-25 15:46:50 +02:00
Fabio Bas
7035150351 Deckstats: move QUrl handling into its own function; better separation of qt4/qt5 code 2014-06-25 09:07:02 +02:00
Fabio Bas
6dbdaafb33 Ported cockatrice 2014-06-24 19:13:47 +02:00
Fabio Bas
bab340f7b7 Reworked a bit message handling from previous commit 2014-06-24 18:52:04 +02:00
Fabio Bas
2953c6ba2a Ported servatrice 2014-06-24 18:42:46 +02:00
Fabio Bas
80f68306b5 Ported oracle to Qt5 2014-06-24 18:28:09 +02:00
Fabio Bas
5c13c06982 Merge remote-tracking branch 'upstream/master' into cmake_qt5 2014-06-24 18:13:26 +02:00
woogerboy21
ec00bdebed verbose incrementation
removed un-used variables
changed switch case to increase verbose level as loglevel increases
captured unset loglevel to default to highest verbose log level
2014-06-23 09:18:49 -04:00
woogerboy21
46ceeadbbd updated code structure
cleaned code structure up for clarity
2014-06-23 03:41:46 -04:00
woogerboy21
236e0a4197 added loglevel variable
added log filtering variable
2014-06-23 00:09:21 -04:00
woogerboy21
5592346979 added server log filtering
added log filtering based on configuration file setting
0 = log everything
1 = log nothing
2 = chat logging only
2014-06-23 00:07:12 -04:00
Fabio Bas
d7a962c055 CMake: support fir linking against qt5 2014-06-21 14:12:55 +02:00
Mark Morschhäuser
05f46011eb Fix toLatin1() changes from 6fa94dd to toUtf8(). 2014-06-20 18:16:46 +02:00
Mark Morschhäuser
0721f5b416 Qt5: QtWidgets as a Separate Module 2014-06-20 16:56:15 +02:00
Mark Morschhäuser
6fa94dd475 Qt5: toAscii() and fromAscii() Methods are deprecated 2014-06-20 16:55:26 +02:00
Mark Morschhäuser
a903c231f2 Qt5: QDesktopServices::storageLocation deprecated 2014-06-20 16:54:46 +02:00
Mark Morschhäuser
648a6a3884 Qt5: QUrl addQueryItem moved to QUrlQuery 2014-06-20 16:53:45 +02:00
2395 changed files with 499847 additions and 115090 deletions

19
.ci/Arch/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
from archlinux:latest
RUN pacman --sync --refresh --sysupgrade --needed --noconfirm \
base-devel \
ccache \
cmake \
git \
gtest \
mariadb-libs \
ninja \
protobuf \
qt6-base \
qt6-imageformats \
qt6-multimedia \
qt6-svg \
qt6-tools \
qt6-translations \
qt6-websockets \
&& pacman --sync --clean --clean --noconfirm

26
.ci/Debian11/Dockerfile Normal file
View File

@@ -0,0 +1,26 @@
FROM debian:11
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ccache \
clang-format \
cmake \
file \
g++ \
git \
liblzma-dev \
libmariadb-dev-compat \
libprotobuf-dev \
libqt5multimedia5-plugins \
libqt5sql5-mysql \
libqt5svg5-dev \
libqt5websockets5-dev \
ninja-build \
protobuf-compiler \
qt5-image-formats-plugins \
qtmultimedia5-dev \
qttools5-dev \
qttools5-dev-tools \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

28
.ci/Debian12/Dockerfile Normal file
View File

@@ -0,0 +1,28 @@
FROM debian:12
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ccache \
clang-format \
cmake \
file \
g++ \
git \
libgl-dev \
liblzma-dev \
libmariadb-dev-compat \
libprotobuf-dev \
libqt6multimedia6 \
libqt6sql6-mysql \
ninja-build \
protobuf-compiler \
qt6-image-formats-plugins \
qt6-l10n-tools \
qt6-multimedia-dev \
qt6-svg-dev \
qt6-tools-dev \
qt6-tools-dev-tools \
qt6-websockets-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

29
.ci/Debian13/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM debian:13
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
ccache \
clang-format \
cmake \
file \
g++ \
git \
libgl-dev \
liblzma-dev \
libmariadb-dev-compat \
libprotobuf-dev \
libqt6multimedia6 \
libqt6sql6-mysql \
ninja-build \
protobuf-compiler \
qt6-image-formats-plugins \
qt6-l10n-tools \
qt6-multimedia-dev \
qt6-svg-dev \
qt6-tools-dev \
qt6-tools-dev-tools \
qt6-websockets-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

16
.ci/Fedora42/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM fedora:42
RUN dnf install -y \
ccache \
cmake \
gcc-c++ \
git \
mariadb-devel \
ninja-build \
protobuf-devel \
qt6-{qttools,qtsvg,qtmultimedia,qtwebsockets}-devel \
qt6-qtimageformats \
rpm-build \
xz-devel \
zlib-devel \
&& dnf clean all

16
.ci/Fedora43/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM fedora:43
RUN dnf install -y \
ccache \
cmake \
gcc-c++ \
git \
mariadb-devel \
ninja-build \
protobuf-devel \
qt6-{qttools,qtsvg,qtmultimedia,qtwebsockets}-devel \
qt6-qtimageformats \
rpm-build \
xz-devel \
zlib-devel \
&& dnf clean all

View File

@@ -0,0 +1,21 @@
FROM debian:11
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ccache \
clang-format \
cmake \
file \
g++ \
git \
libmariadb-dev-compat \
libprotobuf-dev \
libqt5sql5-mysql \
libqt5websockets5-dev \
ninja-build \
protobuf-compiler \
qttools5-dev \
qttools5-dev-tools \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,28 @@
FROM ubuntu:22.04
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ccache \
clang-format \
cmake \
file \
g++ \
git \
libgl-dev \
liblzma-dev \
libmariadb-dev-compat \
libprotobuf-dev \
libqt6multimedia6 \
libqt6sql6-mysql \
libqt6svg6-dev \
libqt6websockets6-dev \
ninja-build \
protobuf-compiler \
qt6-image-formats-plugins \
qt6-l10n-tools \
qt6-multimedia-dev \
qt6-tools-dev \
qt6-tools-dev-tools \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,28 @@
FROM ubuntu:24.04
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
ccache \
clang-format \
cmake \
file \
g++ \
git \
libgl-dev \
liblzma-dev \
libmariadb-dev-compat \
libprotobuf-dev \
libqt6multimedia6 \
libqt6sql6-mysql \
ninja-build \
protobuf-compiler \
qt6-image-formats-plugins \
qt6-l10n-tools \
qt6-multimedia-dev \
qt6-svg-dev \
qt6-tools-dev \
qt6-tools-dev-tools \
qt6-websockets-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

283
.ci/compile.sh Executable file
View File

@@ -0,0 +1,283 @@
#!/bin/bash
# This script is to be used by the ci environment from the project root directory, do not use it from somewhere else.
# Compiles cockatrice inside of a ci environment
# --install runs make install
# --package [<package type>] runs make package, optionally force the type
# --suffix <suffix> renames package with this suffix, requires arg
# --server compiles servatrice
# --test runs tests
# --debug or --release sets the build type ie CMAKE_BUILD_TYPE
# --ccache [<size>] uses ccache and shows stats, optionally provide size
# --dir <dir> sets the name of the build dir, default is "build"
# --target-macos-version <version> sets the min os version - only used for macOS builds
# uses env: BUILDTYPE MAKE_INSTALL MAKE_PACKAGE PACKAGE_TYPE PACKAGE_SUFFIX MAKE_SERVER MAKE_NO_CLIENT MAKE_TEST USE_CCACHE CCACHE_SIZE BUILD_DIR CMAKE_GENERATOR TARGET_MACOS_VERSION
# (correspond to args: --debug/--release --install --package <package type> --suffix <suffix> --server --test --ccache <ccache_size> --dir <dir>)
# exitcode: 1 for failure, 3 for invalid arguments
# Read arguments
while [[ $# != 0 ]]; do
case "$1" in
'--')
shift
;;
'--install')
MAKE_INSTALL=1
shift
;;
'--package')
MAKE_PACKAGE=1
shift
if [[ $# != 0 && ${1:0:1} != - ]]; then
PACKAGE_TYPE="$1"
shift
fi
;;
'--suffix')
shift
if [[ $# == 0 ]]; then
echo "::error file=$0::--suffix expects an argument"
exit 3
fi
PACKAGE_SUFFIX="$1"
shift
;;
'--server')
MAKE_SERVER=1
shift
;;
'--no-client')
MAKE_NO_CLIENT=1
shift
;;
'--test')
MAKE_TEST=1
shift
;;
'--debug')
BUILDTYPE="Debug"
shift
;;
'--release')
BUILDTYPE="Release"
shift
;;
'--ccache')
USE_CCACHE=1
shift
if [[ $# != 0 && ${1:0:1} != - ]]; then
CCACHE_SIZE="$1"
shift
fi
;;
'--vcpkg')
USE_VCPKG=1
shift
;;
'--dir')
shift
if [[ $# == 0 ]]; then
echo "::error file=$0::--dir expects an argument"
exit 3
fi
BUILD_DIR="$1"
shift
;;
'--target-macos-version')
shift
if [[ $# == 0 ]]; then
echo "::error file=$0::--target-macos-version expects an argument"
exit 3
fi
TARGET_MACOS_VERSION="$1"
shift
;;
*)
echo "::error file=$0::unrecognized option: $1"
exit 3
;;
esac
done
set -e
# Setup
./servatrice/check_schema_version.sh
if [[ ! $BUILDTYPE ]]; then
BUILDTYPE=Release
fi
if [[ ! $BUILD_DIR ]]; then
BUILD_DIR="build"
fi
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
# Set minimum CMake Version
export CMAKE_POLICY_VERSION_MINIMUM=3.10
# Add cmake flags
flags=("-DCMAKE_BUILD_TYPE=$BUILDTYPE")
if [[ $MAKE_SERVER ]]; then
flags+=("-DWITH_SERVER=1")
fi
if [[ $MAKE_NO_CLIENT ]]; then
flags+=("-DWITH_CLIENT=0" "-DWITH_ORACLE=0" "-DWITH_DBCONVERTER=0")
fi
if [[ $MAKE_TEST ]]; then
flags+=("-DTEST=1")
fi
if [[ $USE_CCACHE ]]; then
flags+=("-DUSE_CCACHE=1")
if [[ $CCACHE_SIZE ]]; then
# note, this setting persists after running the script
ccache --max-size "$CCACHE_SIZE"
fi
fi
if [[ $PACKAGE_TYPE ]]; then
flags+=("-DCPACK_GENERATOR=$PACKAGE_TYPE")
fi
if [[ $USE_VCPKG ]]; then
flags+=("-DUSE_VCPKG=1")
fi
# Add cmake --build flags
buildflags=(--config "$BUILDTYPE")
function ccachestatsverbose() {
# note, verbose only works on newer ccache, discard the error
local got
if got="$(ccache --show-stats --verbose 2>/dev/null)"; then
echo "$got"
else
ccache --show-stats
fi
}
# Compile
if [[ $RUNNER_OS == macOS ]]; then
if [[ $TARGET_MACOS_VERSION ]]; then
# CMAKE_OSX_DEPLOYMENT_TARGET is a vanilla cmake flag needed to compile to target macOS version
flags+=("-DCMAKE_OSX_DEPLOYMENT_TARGET=$TARGET_MACOS_VERSION")
# vcpkg dependencies need a vcpkg triplet file to compile to the target macOS version
# an easy way is to copy the x64-osx.cmake file and modify it
triplets_dir="/tmp/cmake/triplets"
triplet_version="custom-triplet"
triplet_file="$triplets_dir/$triplet_version.cmake"
arch=$(uname -m)
if [[ $arch == x86_64 ]]; then
arch="x64"
fi
mkdir -p "$triplets_dir"
cp "../vcpkg/triplets/$arch-osx.cmake" "$triplet_file"
echo "set(VCPKG_CMAKE_SYSTEM_VERSION $TARGET_MACOS_VERSION)" >>"$triplet_file"
echo "set(VCPKG_OSX_DEPLOYMENT_TARGET $TARGET_MACOS_VERSION)" >>"$triplet_file"
flags+=("-DVCPKG_OVERLAY_TRIPLETS=$triplets_dir")
flags+=("-DVCPKG_HOST_TRIPLET=$triplet_version")
flags+=("-DVCPKG_TARGET_TRIPLET=$triplet_version")
echo "::group::Generated triplet $triplet_file"
cat "$triplet_file"
echo "::endgroup::"
fi
echo "::group::Signing Certificate"
if [[ -n "$MACOS_CERTIFICATE_NAME" ]]; then
echo "$MACOS_CERTIFICATE" | base64 --decode >"certificate.p12"
security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security set-keychain-settings -t 3600 -l build.keychain
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
echo "macOS signing certificate successfully imported and keychain configured."
else
echo "No signing certificate configured. Skipping set up of keychain in macOS environment."
fi
echo "::endgroup::"
if [[ $MAKE_PACKAGE ]]; then
# Workaround https://github.com/actions/runner-images/issues/7522
# have hdiutil repeat the command 10 times in hope of success
hdiutil_script="/tmp/hdiutil.sh"
# shellcheck disable=SC2016
echo '#!/bin/bash
i=0
while ! hdiutil "$@"; do
if (( ++i >= 10 )); then
echo "Error: hdiutil failed $i times!" >&2
break
fi
sleep 1
done' >"$hdiutil_script"
chmod +x "$hdiutil_script"
flags+=(-DCPACK_COMMAND_HDIUTIL="$hdiutil_script")
fi
elif [[ $RUNNER_OS == Windows ]]; then
# Enable MTT, see https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/
# and https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/#multitooltask-mtt
buildflags+=(-- -p:UseMultiToolTask=true -p:EnableClServerMode=true)
fi
if [[ $USE_CCACHE ]]; then
echo "::group::Show ccache stats"
ccachestatsverbose
echo "::endgroup::"
fi
echo "::group::Configure cmake"
cmake --version
echo "Running cmake with flags: ${flags[*]}"
cmake .. "${flags[@]}"
echo "::endgroup::"
echo "::group::Build project"
echo "Running cmake --build with flags: ${buildflags[*]}"
cmake --build . "${buildflags[@]}"
echo "::endgroup::"
if [[ $USE_CCACHE ]]; then
echo "::group::Show ccache stats again"
ccachestatsverbose
echo "::endgroup::"
fi
if [[ $RUNNER_OS == macOS ]]; then
echo "::group::Inspect Mach-O binaries"
for app in cockatrice oracle servatrice dbconverter; do
binary="$GITHUB_WORKSPACE/build/$app/$app.app/Contents/MacOS/$app"
echo "Inspecting $app..."
vtool -show-build "$binary"
file "$binary"
lipo -info "$binary"
echo ""
done
echo "::endgroup::"
fi
if [[ $MAKE_TEST ]]; then
echo "::group::Run tests"
ctest -C "$BUILDTYPE" --output-on-failure
echo "::endgroup::"
fi
if [[ $MAKE_INSTALL ]]; then
echo "::group::Install"
cmake --build . --target install --config "$BUILDTYPE"
echo "::endgroup::"
fi
if [[ $MAKE_PACKAGE ]]; then
echo "::group::Create package"
cmake --build . --target package --config "$BUILDTYPE"
echo "::endgroup::"
if [[ $PACKAGE_SUFFIX ]]; then
echo "::group::Update package name"
cd ..
BUILD_DIR="$BUILD_DIR" .ci/name_build.sh "$PACKAGE_SUFFIX"
echo "::endgroup::"
fi
fi

171
.ci/docker.sh Normal file
View File

@@ -0,0 +1,171 @@
#!/bin/bash
# This script is to be used by the ci environment from the project root directory, do not use it from somewhere else.
# Creates or loads docker images to use in compilation, creates RUN function to start compilation on the docker image.
# <arg> sets the name of the docker image, these correspond to directories in .ci
# --get loads the image from a previously saved image cache, will build if no image is found
# --build builds the image from the Dockerfile in .ci/$NAME
# --save stores the image, if an image was loaded it will not be stored
# --interactive immediately starts the image interactively for debugging
# --set-cache <location> sets the location to cache the image or for ccache
# requires: docker
# uses env: NAME CACHE BUILD GET SAVE INTERACTIVE
# (correspond to args: <name> --set-cache <cache> --build --get --save --interactive)
# sets env: RUN CCACHE_DIR IMAGE_NAME RUN_ARGS RUN_OPTS BUILD_SCRIPT
# exitcode: 1 for failure, 2 for missing dockerfile, 3 for invalid arguments
export BUILD_SCRIPT=".ci/compile.sh"
project_name="cockatrice"
save_extension=".tar.gz"
image_cache="image"
ccache_cache=".ccache"
# Read arguments
while [[ $# != 0 ]]; do
case "$1" in
'--build')
BUILD=1
shift
;;
'--get')
GET=1
shift
;;
'--interactive')
INTERACTIVE=1
shift
;;
'--save')
SAVE=1
shift
;;
'--set-cache')
CACHE=$2
if ! [[ -d $CACHE ]]; then
echo "could not find cache path: $CACHE" >&2
return 3
fi
shift 2
;;
*)
if [[ ${1:0:1} == - ]]; then
echo "unrecognized option: $1"
return 3
fi
NAME="$1"
shift
;;
esac
done
# Setup
if ! [[ $NAME ]]; then
echo "no build name given" >&2
return 3
fi
export IMAGE_NAME="${project_name,,}_${NAME,,}" # lower case
docker_dir=".ci/$NAME"
if ! [[ -r $docker_dir/Dockerfile ]]; then
echo "could not find Dockerfile in $docker_dir" >&2
return 2 # even if the image is cached, we do not want to run if there is no way to build this image
fi
if ! [[ $CACHE ]]; then
echo "cache dir is not set!" >&2
CACHE="$(mktemp -d)"
echo "set cache dir to $CACHE" >&2
fi
if ! [[ -d $CACHE ]]; then
echo "could not find cache dir: $CACHE" >&2
mkdir -p "$CACHE"
unset GET # the dir is empty
fi
if [[ $GET || $SAVE ]]; then
img_dir="$CACHE/$image_cache"
img_save="$img_dir/$IMAGE_NAME$save_extension"
if ! [[ -d $img_dir ]]; then
echo "could not find image dir: $img_dir" >&2
mkdir -p "$img_dir"
fi
fi
export CCACHE_DIR="$CACHE/$ccache_cache"
if ! [[ -d $CCACHE_DIR ]]; then
echo "could not find ccache dir: $CCACHE_DIR" >&2
mkdir -p "$CCACHE_DIR"
fi
# Get the docker image from previously stored save
if [[ $GET ]]; then
if [[ $img_save ]] && docker load --input "$img_save"; then
echo "loaded image"
docker images
unset BUILD # do not overwrite the loaded image with build
unset SAVE # do not overwrite the stored image with the same image
if [[ $(find "$CCACHE_DIR" -type f -print -quit) ]]; then # check contents of ccache
echo "setting ccache to readonly"
export RUN_ARGS="$RUN_ARGS -e CCACHE_READONLY=1 -e CCACHE_NOSTATS=1" # do not overwrite ccache
else
echo "ccache is empty: $(find "$CCACHE_DIR")" >&2
fi
else
echo "could not load cached image, building instead" >&2
BUILD=1
fi
fi
# Build the docker image from dockerfile
if [[ $BUILD ]]; then
if docker build --tag "$IMAGE_NAME" "$docker_dir"; then
echo "built image"
docker images
else
echo "could not build image $IMAGE_NAME" >&2
return 1
fi
fi
# Save docker image to cache (compressed)
if [[ $SAVE ]]; then
if [[ $img_save ]] && docker save --output "$img_save" "$IMAGE_NAME"; then
echo "saved image to: $img_save"
else
echo "could not save image $IMAGE_NAME" >&2
fi
fi
# Set compile function, runs the compile script on the image, passes arguments to the script
# shellcheck disable=2120
function RUN ()
{
echo "running image:"
if [[ $(docker images) =~ $IMAGE_NAME ]]; then
local args=(--mount "type=bind,source=$PWD,target=/src")
args+=(--workdir "/src")
args+=(--user "$(id -u):$(id -g)")
if [[ $CCACHE_DIR ]]; then
args+=(--mount "type=bind,source=$CCACHE_DIR,target=/.ccache")
args+=(--env "CCACHE_DIR=/.ccache")
fi
if [[ -n "$CMAKE_GENERATOR" ]]; then
args+=(--env "CMAKE_GENERATOR=$CMAKE_GENERATOR")
fi
# shellcheck disable=2086
docker run "${args[@]}" $RUN_ARGS "$IMAGE_NAME" bash "$BUILD_SCRIPT" $RUN_OPTS "$@"
return $?
else
echo "could not find docker image: $IMAGE_NAME" >&2
return 3
fi
}
# for debugging, start the docker image interactively instead of building
# starts immediately, does not require sourcing or RUN
if [[ $INTERACTIVE ]]; then
export BUILD_SCRIPT="-i"
export RUN_ARGS="$RUN_ARGS -it"
# shellcheck disable=2119
RUN
fi

79
.ci/lint_cpp.sh Executable file
View File

@@ -0,0 +1,79 @@
#!/bin/bash
# fetch master branch
git fetch origin master
# unshallow if needed
echo "Finding merge base"
if ! git merge-base origin/master HEAD; then
echo "Could not find merge base, unshallowing repo"
git fetch --unshallow
fi
# Check formatting using format.sh
echo "Checking your code using format.sh..."
diff="$(./format.sh --diff --cmake --shell --print-version --branch origin/master)"
err=$?
sep="
----------
"
used_version="${diff%%"$sep"*}"
diff="${diff#*"$sep"}"
changes_to_make="${diff%%"$sep"*}"
files_to_edit="${diff#*"$sep"}"
case $err in
1)
cat <<EOM
***********************************************************
*** ***
*** Your code does not comply with our style guide. ***
*** ***
*** Please correct it or run the "format.sh" script. ***
*** Then commit and push those changes to this branch. ***
*** Check our CONTRIBUTING.md file for more details. ***
*** ***
*** Thank you ❤️ ***
*** ***
***********************************************************
Used version:
$used_version
Affected files:
$files_to_edit
The following changes should be made:
$changes_to_make
Exiting...
EOM
exit 2
;;
0)
cat <<EOM
***********************************************************
*** ***
*** Your code complies with our style guide! ***
*** ***
*** Awesome 👍 ***
*** ***
***********************************************************
Used version:
$used_version
Exiting...
EOM
exit 0
;;
*)
echo "Something went wrong in our formatting checks: format.sh returned $err" >&2
;;
esac

17
.ci/macos.entitlements Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<false/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>

55
.ci/name_build.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/bin/bash
# used by the ci to rename build artifacts
# renames the file to [original name][SUFFIX].[original extension]
# where SUFFIX is either available in the environment or as the first arg
# if MAKE_ZIP is set instead a zip is made
# expected to be run in the build directory unless BUILD_DIR is set
# adds output to GITHUB_OUTPUT
builddir="${BUILD_DIR:=.}"
findrx="Cockatrice-*.*"
if [[ $1 ]]; then
SUFFIX="$1"
fi
# check env
if [[ ! $SUFFIX ]]; then
echo "::error file=$0::SUFFIX is missing"
exit 2
fi
set -e
# find file
found="$(find "$builddir" -maxdepth 1 -type f -name "$findrx" -print -quit)"
path="${found%/*}" # remove all after last /
file="${found##*/}" # remove all before last /
if [[ ! $file ]]; then
echo "::error file=$0::could not find package"
exit 1
fi
oldpwd="$PWD"
if ! cd "$path"; then
echo "::error file=$0::could not get file path"
exit 1
fi
# set filename
name="${file%.*}" # remove all after last .
new_name="$name$SUFFIX."
if [[ $MAKE_ZIP ]]; then
filename="${new_name}zip"
echo "creating zip '$filename' from '$file'"
zip "$filename" "$file"
else
extension="${file##*.}" # remove all before last .
filename="$new_name$extension"
echo "renaming '$file' to '$filename'"
mv "$file" "$filename"
fi
cd "$oldpwd"
relative_path="$path/$filename"
ls -l "$relative_path"
echo "path=$relative_path" >>"$GITHUB_OUTPUT"
echo "name=$filename" >>"$GITHUB_OUTPUT"

113
.ci/prep_release.sh Executable file
View File

@@ -0,0 +1,113 @@
#!/bin/bash
# sets the properties of ci releases
# this doesn't have to be 100% foolproof
# the releases are first made as drafts and will be vetted by a human
# it just has to provide a template
# this requires the repo to be unshallowed
# adds output to GITHUB_OUTPUT
template_path=".ci/release_template.md"
body_path="/tmp/release.md"
beta_regex='beta'
name_regex='set\(GIT_TAG_RELEASENAME "([[:print:]]+)")'
whitespace='^\s*$'
if [[ $1 ]]; then
TAG="$1"
fi
# check env
if [[ ! $TAG ]]; then
echo "::error file=$0::TAG is missing"
exit 2
fi
# create title
if [[ $TAG =~ $beta_regex ]]; then
echo "is_beta=yes" >>"$GITHUB_OUTPUT"
title="$TAG"
echo "creating beta release '$title'"
elif [[ ! $(cat CMakeLists.txt) =~ $name_regex ]]; then
echo "::error file=$0::could not find releasename in CMakeLists.txt"
exit 1
else
echo "is_beta=no" >>"$GITHUB_OUTPUT"
name="${BASH_REMATCH[1]}"
version="${TAG##*-}"
title="Cockatrice $version: $name"
no_beta=1
echo "friendly_name=$name" >>"$GITHUB_OUTPUT"
echo "creating full release '$title'"
fi
echo "title=$title" >>"$GITHUB_OUTPUT"
# add release notes template
if [[ $no_beta ]]; then
body="$(cat "$template_path")"
if [[ ! $body ]]; then
echo "::warning file=$0::could not find release template"
fi
body="${body//--REPLACE-WITH-RELEASE-TITLE--/$title}"
else
body="--REPLACE-WITH-COMMIT-COUNT-- commits have been included over the previous --REPLACE-WITH-PREVIOUS-RELEASE-TYPE--
<details>
<summary><b>show changes</b></summary>
--REPLACE-WITH-GENERATED-LIST--
</details>"
fi
# add git log to release notes
all_tags="
$(git tag)" # tags are ordered alphabetically
before="${all_tags%%
"$TAG"*}" # strip line with current tag an all lines after it
# note the extra newlines are needed to always have a last line
if [[ $all_tags == "$before" ]]; then
echo "::warning file=$0::could not find current tag"
else
while
previous="${before##*
}" # get the last line
# skip this tag if this is a full release and it's a beta or if empty
[[ $no_beta && $previous =~ $beta_regex || ! $previous ]]
do
beta_list+=" $previous" # add to list of skipped betas
next_before="${before%
*}" # strip the last line
if [[ $next_before == "$before" ]]; then
unset previous
break
fi
before="$next_before"
done
if [[ $previous ]]; then
if generated_list="$(git log "$previous..$TAG" --pretty="- %s")"; then
count="$(git rev-list --count "$previous..$TAG")"
[[ $previous =~ $beta_regex ]] && previousreleasetype="beta release" || previousreleasetype="full release"
echo "adding list of commits to release notes:"
echo "'$previous' to '$TAG' ($count commits)"
# --> is the markdown comment escape sequence, emojis are way better
generated_list="${generated_list//-->/→}"
body="${body//--REPLACE-WITH-GENERATED-LIST--/$generated_list}"
body="${body//--REPLACE-WITH-COMMIT-COUNT--/$count}"
body="${body//--REPLACE-WITH-PREVIOUS-RELEASE-TAG--/$previous}"
body="${body//--REPLACE-WITH-PREVIOUS-RELEASE-TYPE--/$previousreleasetype}"
if [[ $beta_list =~ $whitespace ]]; then
beta_list="-n there are no betas to delete!"
else
echo "the following betas should be deleted after publishing:"
echo "$beta_list"
fi
body="${body//--REPLACE-WITH-BETA-LIST--/$beta_list}"
else
echo "::warning file=$0::failed to produce git log"
fi
else
echo "::warning file=$0::could not find previous tag"
fi
fi
# write to file
echo "body_path=$body_path" >>"$GITHUB_OUTPUT"
echo "$body" >"$body_path"

102
.ci/release_template.md Normal file
View File

@@ -0,0 +1,102 @@
<!-- this template comes from .ci/release_template.md -->
<!-- Don't forget to delete the previous betas after publishing this!
git push -d origin --REPLACE-WITH-BETA-LIST--
-->
<!-- This list of binaries should be updated every time the CI is changed to include all targets -->
<pre>
Available pre-compiled binaries for installation:
<b>Windows</b>
• <kbd>Windows 10+</kbd>
• <kbd>Windows 7+</kbd>
<b>macOS</b>
• <kbd>macOS 15+</kbd> <sub><i>Sequoia</i></sub> <sub>Apple M</sub>
• <kbd>macOS 14+</kbd> <sub><i>Sonoma</i></sub> <sub>Apple M</sub>
• <kbd>macOS 13+</kbd> <sub><i>Ventura</i></sub> <sub>Intel</sub>
<b>Linux</b>
• <kbd>Ubuntu 24.04 LTS</kbd> <sub><i>Noble Numbat</i></sub>
• <kbd>Ubuntu 22.04 LTS</kbd> <sub><i>Jammy Jellyfish</i></sub>
• <kbd>Debian 13</kbd> <sub><i>Trixie</i></sub>
• <kbd>Debian 12</kbd> <sub><i>Bookworm</i></sub>
• <kbd>Debian 11</kbd> <sub><i>Bullseye</i></sub>
• <kbd>Fedora 43</kbd>
• <kbd>Fedora 42</kbd>
<sub>We are also packaged in <kbd>Arch Linux</kbd>'s <a href="https://archlinux.org/packages/extra/x86_64/cockatrice">official extra repository</a>, courtesy of @FFY00.</sub>
<sub>General Linux support is available via a <kbd>flatpak</kbd> package at <a href="https://flathub.org/apps/io.github.Cockatrice.cockatrice">Flathub</a>!</sub>
</pre>
## General Notes
We're pleased to announce the newest official release: <kbd>--REPLACE-WITH-RELEASE-TITLE--</kbd>
We hope you enjoy the changes made! All improvements with their corresponding tickets since the last version of Cockatrice are listed in the changelog below.
If you ever encounter a bug, have a suggestion or idea, or feel a need for a developer to look into something, please feel free to [open a ticket](https://github.com/Cockatrice/Cockatrice/issues). ([How to create a Ticket for Cockatrice](https://github.com/Cockatrice/Cockatrice/wiki/How-to-Create-a-GitHub-Ticket-Regarding-Cockatrice))
For basic information related to the app and getting started, please take a look at our official site: **https://cockatrice.github.io**
If you'd like to help and contribute to Cockatrice in any way, check out our [README](https://github.com/Cockatrice/Cockatrice#contribute).
We're always available to answer questions you may have on how the program works and how you can provide a meaningful contribution.
## Upgrading Cockatrice
<!-- this optional section puts a warning banner for problems with updating
> [!IMPORTANT]
> **With this release, we no longer provide a ready-to-install binary for:**
> --DEPRECATED-OS-HERE--
-->
Run the internal software updater: <kbd>Help → Check for Client Updates</kbd>
Don't forget to update your card database right after! (<kbd>Help → Check for Card Updates...</kbd>)
## Changelog
<!--
This list is generated and should be moved to their respective header and
possibly edited a little.
Append PR numbers of fixups to their main PR to keep the list coherent.
Put the quantity of remaining PR's below the highlights section.
Remove empty headers when done.
--REPLACE-WITH-GENERATED-LIST--
-->
<!-- Highlights of the release -->
### 🔖 Highlights:
### ✨ New Features:
### 🐛 Fixed Bugs / Resolved Issues:
<!-- Complete list of changes (foldable) -->
<details>
<summary>
<b>Show all changes</b> (--REPLACE-WITH-COMMIT-COUNT-- commits)
</summary>
### User Interface
### Under the Hood
### Oracle
### Servatrice
### Webatrice
</details>
## Translations
- **Thanks for over 300 people contributing to 20+ different languages up to now!**
- Without the help of the community we couldn't offer that great language support... keep up the good work!
- It's actually very easy to join and help for yourself - find out more here:
- [Help us Translate Cockatrice into your native language!](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ)
## Special Thanks
<!-- Personalise this a bit! -->
It's amazing that so many people contribute their time, knowledge, code, testing and more to the project.
We'd like to thank the entire Cockatrice community for their efforts! 🙏
<!-- We'd like to especially recognize @ZeldaZach, --ADD-CONTRIBUTORS-HERE-- for their help in preparing so many amazing new features for the user base. -->

View File

@@ -0,0 +1,58 @@
#!/bin/bash
# ci script to update translation files
# usage:
# $0 cockatrice/cockatrice_en@source.ts cockatrice/src common
# or
# FILE="cockatrice/cockatrice_en@source.ts"
# DIRS="cockatrice/src common"
# $0
# note: directories can't contain spaces
# check parameters
if [[ ! $FILE ]]; then
FILE="$1"
shift
fi
if [[ ! $FILE ]]; then
echo "no output file selected" >&2
exit 2;
fi
if [[ ! $DIRS ]]; then
DIRS="$*"
fi
if [[ ! $DIRS ]]; then
echo "no source directories selected to translate" >&2
exit 2;
fi
if [[ ! -e $FILE ]]; then
echo "output file does not exist at: $FILE" >&2
exit 3;
fi
# print version
if ! lupdate -version; then
echo "failed to run lupdate" >&2
exit 4;
fi
# run lupdate, duplicating the output in stderr and saving it
# for convenience we ignore that $DIRS will be split on spaces
# shellcheck disable=SC2086
if ! got="$(lupdate $DIRS -ts "$FILE" | tee /dev/stderr)"; then
echo "failed to update $FILE with $DIRS" >&2
exit 4;
fi
# trim output
# the line we are interested in is:
# Found xxx source text(s) (x new and xxx already existing)
output="${got##* source text(s) (}" # get stuff in between brackets
output="${output%%)*}" # trim everything after first )
if [[ $output == "$got" ]]; then
echo "could not parse generated output" >&2
exit 4;
fi
# write output to ci environment file
echo "output=$output" >> "$GITHUB_OUTPUT"

View File

@@ -0,0 +1,14 @@
Updated source strings for translations:
- {{ .cockatrice_output }} (Cockatrice)
- {{ .oracle_output }} (Oracle)
<br>
Last changes are based on commit {{ .commit }}.
---
*This PR is automatically generated and updated by the workflow at `.github/workflows/translations-push.yml`. Review [action runs][2].*<br>
*After merging, all changes to the source language are available for translation at [Transifex][1] shortly.*
[1]: https://explore.transifex.com/cockatrice/cockatrice/
[2]: https://github.com/Cockatrice/Cockatrice/actions/workflows/translations-push.yml?query=branch%3Amaster

34
.clang-format Normal file
View File

@@ -0,0 +1,34 @@
IndentWidth: 4
AccessModifierOffset: -4
ColumnLimit: 120
---
Language: Cpp
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
AllowShortFunctionsOnASingleLine: None
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
IndentCaseLabels: true
PointerAlignment: Right
SortIncludes: true
IncludeBlocks: Regroup
StatementAttributeLikeMacros: [emit]
# requires clang-format 16
# RemoveSemicolon: true
---
Language: Proto
AllowShortFunctionsOnASingleLine: None
SpacesInContainerLiterals: false

109
.cmake-format.json Normal file
View File

@@ -0,0 +1,109 @@
{
"format": {
"_help_line_width": [
"How wide to allow formatted cmake files"
],
"line_width": 120,
"_help_tab_size": [
"How many spaces to tab for indent"
],
"tab_size": 2,
"_help_max_subgroups_hwrap": [
"If an argument group contains more than this many sub-groups",
"(parg or kwarg groups) then force it to a vertical layout."
],
"max_subgroups_hwrap": 2,
"_help_max_pargs_hwrap": [
"If a positional argument group contains more than this many",
"arguments, then force it to a vertical layout."
],
"max_pargs_hwrap": 6,
"_help_max_rows_cmdline": [
"If a cmdline positional group consumes more than this many",
"lines without nesting, then invalidate the layout (and nest)"
],
"max_rows_cmdline": 5,
"_help_separate_ctrl_name_with_space": [
"If true, separate flow control names from their parentheses",
"with a space"
],
"separate_ctrl_name_with_space": false,
"_help_separate_fn_name_with_space": [
"If true, separate function names from parentheses with a",
"space"
],
"separate_fn_name_with_space": false,
"_help_dangle_parens": [
"If a statement is wrapped to more than one line, than dangle",
"the closing parenthesis on its own line."
],
"dangle_parens": true,
"_help_dangle_align": [
"If the trailing parenthesis must be 'dangled' on its on",
"line, then align it to this reference: `prefix`: the start",
"of the statement, `prefix-indent`: the start of the",
"statement, plus one indentation level, `child`: align to",
"the column of the arguments"
],
"dangle_align": "prefix",
"_help_min_prefix_chars": [
"If the statement spelling length (including space and",
"parenthesis) is smaller than this amount, then force reject",
"nested layouts."
],
"min_prefix_chars": 4,
"_help_max_prefix_chars": [
"If the statement spelling length (including space and",
"parenthesis) is larger than the tab width by more than this",
"amount, then force reject un-nested layouts."
],
"max_prefix_chars": 10,
"_help_max_lines_hwrap": [
"If a candidate layout is wrapped horizontally but it exceeds",
"this many lines, then reject the layout."
],
"max_lines_hwrap": 2,
"_help_line_ending": [
"What style line endings to use in the output."
],
"line_ending": "auto",
"_help_command_case": [
"Format command names consistently as 'lower' or 'upper' case"
],
"command_case": "lower",
"_help_keyword_case": [
"Format keywords consistently as 'lower' or 'upper' case"
],
"keyword_case": "upper",
"_help_always_wrap": [
"A list of command names which should always be wrapped"
],
"always_wrap": [],
"_help_enable_sort": [
"If true, the argument lists which are known to be sortable",
"will be sorted lexicographically"
],
"enable_sort": true,
"_help_autosort": [
"If true, the parsers may infer whether or not an argument",
"list is sortable (without annotation)."
],
"autosort": true,
"_help_require_valid_layout": [
"By default, if cmake-format cannot successfully fit",
"everything into the desired line-width it will apply the",
"last, most aggressive attempt that it made. If this flag is",
"True, however, cmake-format will print error, exit with non-",
"zero status code, and write-out nothing"
],
"require_valid_layout": false,
"_help_layout_passes": [
"A dictionary mapping layout nodes to a list of wrap",
"decisions. See the documentation for more information."
],
"layout_passes": {}
},
"markup": {
"enable_markup": false
}
}

5
.codacy.yml Normal file
View File

@@ -0,0 +1,5 @@
---
exclude_paths:
- '**/translations/*.ts'
# codacy config documentation: https://support.codacy.com/hc/en-us/articles/115002130625-Codacy-Configuration-File

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
.git/
build/
.github/
.tx/
cockatrice/
doc/
oracle/
Dockerfile

495
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,495 @@
<!--! @page contributing Contributing -->
&nbsp; [Introduction](#contributing-to-cockatrice) | [Code Style Guide](
#code-style-guide) | [Translations](#translations) | [Release Management](
#release-management)
----
<br>
# Contributing to Cockatrice #
First off, thanks for taking the time and considering to lend a helping hand to our project! 🎉 ❤ ️✨
> [!NOTE]
> The following is a set of guidelines for contributing to Cockatrice.
> These are mostly guidelines, not rules. Use your best judgment, and feel free to
> propose changes to this document in a pull request.
>
> [![Discord](
> https://img.shields.io/discord/314987288398659595?label=Discord&logo=discord&logoColor=white)](
> https://discord.gg/3Z9yzmA)
> If you'd like to ask questions, get advice, or just want to say "Hi",
> the Cockatrice Development Team uses [Discord](https://discord.gg/ZASRzKu)
> for communications and you can reach out in the `#dev` channel.
# Recommended Setups #
For those developers on **Linux** or **macOS** environment, many of our
developers like working with a nifty program called [CLion](
https://www.jetbrains.com/clion/). The program is a great asset and one of the
best tools you'll find on these systems.
Developers on **Windows** systems tend to find [Visual Studio](
https://www.visualstudio.com/) the best tool for the job.
But you're welcomed to use any IDE you enjoy most of course!
# Code Style Guide #
### Formatting and continuous integration (CI) ###
We use a separate job on the CI to check your code for formatting issues. If
your pull request failed the test, you can check the output on the checks tab.
It's the first job called "linter", you can click the "Check code formatting"
step to see the output of the test.
The message will look like this:
```
***********************************************************
*** ***
*** Your code does not comply with our style guide. ***
*** ***
*** Please correct it or run the "format.sh" script. ***
*** Then commit and push those changes to this branch. ***
*** Check our CONTRIBUTING.md file for more details. ***
*** ***
*** Thank you ❤️ ***
*** ***
***********************************************************
```
The CONTRIBUTING.md file mentioned in that message is the file you are
currently reading. Please see [this section](#formatting) below for full
information on our formatting guidelines.
### Compatibility ###
Cockatrice is currently compiled on all platforms using <kbd>C++20</kbd>.
You'll notice <kbd>C++03</kbd> code throughout the codebase. Please feel free
to help convert it over!
For consistency, we use Qt data structures where possible. For example,
`QString` over `std::string` and `QList` over `std::vector`.
Do not use old C style casts in new code, instead use a [`static_cast<>`](
https://en.cppreference.com/w/cpp/language/static_cast)
or other appropriate conversion.
### Formatting ###
The handy tool `clang-format` can format your code for you, it is available for
almost any environment. A special [`.clang-format`](
https://github.com/Cockatrice/Cockatrice/blob/master/.clang-format) configuration file is
included in the project and is used to format your code.
We've also included a bash script, `format.sh`, that will use clang-format to
format all files in your PR in one go. Use `./format.sh --help` to show a full
help page.
To run clang-format on a single source file simply use the command
`clang-format -i <filename>` to format it in place. (Some systems install
clang-format with a specific version number appended,
`find /usr/bin -name clang-format*` should find it for you)
See the [clang-format documentation](
https://clang.llvm.org/docs/ClangFormat.html) for more information about the tool.
#### Header Files ####
Use header files with the extension `.h` and source files with the extension
`.cpp`.
Use header guards in the form of `FILE_NAME_H`.
Simple functions, such as getters, may be written inline in the header file,
but other functions should be written in the source file.
Group project includes first, followed by library includes. All in alphabetic order.
Like this:
```c++
// Good
#include "card.h"
#include "deck.h"
#include <QList>
#include <QString>
// Bad
#include <QList>
#include "card.h"
#include <QString>
#include "deck.h"
// Bad
#include "card.h"
#include "deck.h"
#include <QString>
#include <QList>
```
#### Naming ####
Use `UpperCamelCase` for classes, structs, enums, etc. and `lowerCamelCase` for
function and variable names.
Don't use [Hungarian Notation](
https://en.wikipedia.org/wiki/Hungarian_notation).
Member variables aren't decorated in any way. Don't prefix or suffix them with
underscores, etc.
Use a separate line for each declaration, don't use a single line like this
`int one = 1, two = 2` and instead split them into two lines.
For arguments to constructors which have the same names as member variables,
prefix those arguments with underscores:
```c++
MyClass::MyClass(int _myData) : myData(_myData)
{
}
```
Pointers and references should be denoted with the `*` or `&` going with the
variable name:
```c++
// Good
Foo *foo1 = new Foo;
Foo &foo2 = *foo1;
// Bad
Bar* bar1 = new Bar;
Bar& bar2 = *bar1;
```
Use `nullptr` instead of `NULL` (or `0`) for null pointers.
If you find any usage of the old keywords, we encourage you to fix it.
#### Braces ####
Braces should go on their own line except for control statements, the use of
braces around single line statements is preferred.
See the following example:
```c++
int main()
{ // function or class: own line
if (someCondition) { // control statement: same line
doSomething(); // single line statement, braces preferred
} else if (someOtherCondition1) { // else goes on the same line as a closing brace
for (int i = 0; i < 100; i++) {
doSomethingElse();
}
} else {
while (someOtherCondition2) {
doSomethingElse();
}
}
}
```
#### Indentation and Spacing ####
Always indent using 4 spaces, do not use tabs. Opening and closing braces
should be on the same indentation layer, member access specifiers in classes or
structs should not be indented.
All operators and braces should be separated by spaces, do not add a space next
to the inside of a brace.
If multiple lines of code that follow eachother have single line comments
behind them, place all of them on the same indentation level. This indentation
level should be equal to the longest line of code for each of these comments,
without added spacing.
#### Lines ####
Do not leave trailing whitespace on any line. Most IDEs check for this
nowadays and clean it up for you.
Lines should be 120 characters or less. Please break up lines that are too long
into smaller parts, for example at spaces or after opening a brace.
### Memory Management ###
New code should be written using references over pointers and stack allocation
over heap allocation wherever possible.
```c++
// Good: uses stack allocation and references
void showCard(const Card &card);
int main()
{
Card card;
showCard(card);
}
// Bad: relies on manual memory management and doesn't give us much
// null-safety.
void showCard(const Card *card);
int main()
{
Card *card = new Card;
showCard(card);
delete card;
}
```
(Remember to pass by `const` reference wherever possible, to avoid accidentally
mutating objects.)
When pointers can't be avoided, try to use a smart pointer of some sort, such
as `QScopedPointer`, or, less preferably, `QSharedPointer`.
### Database Migrations ###
The servatrice database's schema can be found at `servatrice/servatrice.sql`.
Everytime the schema gets modified, some other steps are due:
1. Increment the value of `cockatrice_schema_version` in `servatrice.sql`;
2. Increment the value of `DATABASE_SCHEMA_VERSION` in
`servatrice_database_interface.h` accordingly;
3. Create a new migration file inside the `servatrice/migrations` directory
named after the new schema version.
4. Run the `servatrice/check_schema_version.sh` script to ensure everything is
fine.
The migration file should include the sql statements needed to migrate the
database schema and data from the previous to the new version, and an
additional statement that updates `cockatrice_schema_version` to the correct
value.
Ensure that the migration produces the expected effects; e.g. if you add a
new column, make sure the migration places it in the same order as
servatrice.sql.
### Protocol Buffer ###
Cockatrice and Servatrice exchange data using binary messages. The syntax of
these messages is defined in the `proto` files in the `common/pb` folder. These
files define the way data contained in each message is serialized using
Google's [protocol buffers](https://developers.google.com/protocol-buffers/).
Any change to the `proto` files should be taken with caution and tested
intensively before being merged, because a change to the protocol could make
new clients incompatible to the old server and vice versa.
You can find more information on how we use Protobuf on [our wiki!](
https://github.com/Cockatrice/Cockatrice/wiki/Client-server-protocol)
# Reviewing Pull Requests #
After you have finished your changes to the project you should put them on a
separate branch of your fork on GitHub and open a [pull request](
https://docs.github.com/en/free-pro-team@latest/desktop/contributing-and-collaborating-using-github-desktop/creating-an-issue-or-pull-request
).
Your code will then be automatically compiled by GitHub actions for Linux and
macOS, and by Appveyor for Windows. Additionally GitHub will perform a [Linting
check](#formatting-and-continuous-integration-ci). If any issues come up you
can check their status at the bottom of the pull request page, click on details
to go to the CI website and see the different build logs.
If your pull request passes our tests and has no merge conflicts, it will be
reviewed by our team members. You can then address any requested changes. When
all changes have been approved your pull request will be squashed into a single
commit and merged into the master branch by a team member. Your change will then
be included in the next release 👍
# Translations #
Basic workflow for translations:
1. Developer adds a `tr("foo")` string in the code;
2. CI updates the `*_en@source.ts files` regularly and creates a PR automatically;
3. Maintainer verifies and merges the change;
4. Transifex picks up the new files from GitHub automatically;
5. Translators translate the new untranslated strings on Transifex;
6. Before a release, a maintainer fetches the newest translations from Transifex.
### Using Translations (for developers) ###
All user interface strings inside Cockatrice's source code must be written
in English (US).
Translations to other languages are managed using [Transifex](
https://transifex.com/cockatrice/cockatrice/).
Adding a new string for translation is as easy as adding the string in the
`tr("")` function, the string will be picked up as translatable automatically
and translated as needed.
For example, setting the text of a label in the way that the string
`"My name is:"` can be translated:
```c++
nameLabel.setText(tr("My name is:"));
```
To translate a string that would have plural forms you can add the amount to
the tr() call, also you can add an extra string as a hint for translators:
```c++
QString message = tr("Everyone draws %n cards", "english hint for translators", amount);
```
See [Qt's wiki on translations](
https://doc.qt.io/qt-5/i18n-source-translation.html#handling-plurals)
If you're about to propose a change that adds or modifies any translatable
string in the code, you don't need to take care of adding the new strings to
the translation files.<br>
We have an automated process to update our language source files on a schedule
and provide the translators on Transifex with the new contents.<br>
Maintainers can also manually trigger this workflow on demand via GitHub Actions.
### Maintaining Translations (for maintainers) ###
When new translatable strings have been added to the code, a maintainer has to
make them available to translators on Transifex.
To help with that, we have an automated CI workflow, that regularly looks at the
code in the master branch, extracts all strings and updates dedicated source string
files with any changes. These updates are not commited right away, the CI creates a
PR for reviewing instead.<br>
After approval, our translation tool automatically picks the changes up and deploys
them to our translators. Be mindful when merging only a few changes!
Once a release is planned, or when a lot of strings have been added or changed, a
maintainer can manually trigger a CI run to extract all strings on demand.
<details>
<summary><b>Manually trigger CI run (Workflow Dispatch)</b></summary>
Maintainers can always request the CI to run on demand if it's required.
Go to the `Actions` tab and select our dedicated translation workflow:
https://github.com/Cockatrice/Cockatrice/actions/workflows/translations.yml
You see a "This workflow has a workflow_dispatch event trigger." hint at the top of
the list.<br>
Select `Run workflow` on the right and trigger a run from master branch.
The CI will now check for changed strings and create a PR if there are any updates.
</details>
<details>
<summary><b>Manually update source strings locally</b></summary>
To update the english source files for translation, re-run cmake enabling the appropriate
parameter and then run make:
```sh
cd cockatrice/build
cmake .. -DUPDATE_TRANSLATIONS=ON
make
```
If the parameter has been enabled correctly, when running "make" you should see
a line similar to this one (the numbers may vary):
```sh
[ 76%] Generating ../../cockatrice/translations/cockatrice_en@source.ts
Updating '../../cockatrice/translations/cockatrice_en@source.ts'...
Found 857 source text(s) (8 new and 849 already existing)
```
You should then notice that the following files have uncommitted changes:
cockatrice/translations/cockatrice_en@source.ts
oracle/translations/oracle_en@source.ts
It is recommended to disable the parameter afterwards using:
```sh
cmake .. -DUPDATE_TRANSLATIONS=OFF
```
Now you are ready to commit your changes and open a PR.
</details>
Once the changes get merged, Transifex will pick up the modified files
automatically (checked every few hours) and update the web editor where
translators will be able to translate the new strings right in the browser.
### Releasing Translations (for maintainers) ###
Before publishing a new release, a maintainer should fetch the most up to date
translations from Transifex and commit them into the Cockatrice source code.
We utilize the official GitHub integration to push all languages that are 100%
translated from Transifex to our GitHub repo automatically.
On top, it runs on a quarterly schedule to update changes for incomplete languages.
A synchronisation/update can also be triggered manually from the Transifex web interface
and a translation treshold can be set.
As an alternative, you can install the [Transifex CLI](https://developers.transifex.com/docs/cli).
You'll then be able to use a git-like cli command to push and pull translations
from Transifex to the source code and vice versa.
### Adding Translations (for translators) ###
As a translator, you can help to translate new strings on [Transifex](
https://www.transifex.com/projects/p/cockatrice/) to your native language.
Please have a look at the specific [FAQ for translators](
https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ).
# Release Management #
### Publishing A New Release ###
We use [GitHub Releases](https://github.com/Cockatrice/Cockatrice/releases) to
publish new stable versions and beta releases.
Whenever a git tag is pushed to the repository, GitHub will create a draft
release and upload binaries from our CI automatically.
To create a tag, simply do the following:
```bash
git checkout master
git remote update -p
git pull
git tag $TAG_NAME
git push $UPSTREAM $TAG_NAME
```
You should define the variables as such:
- `$UPSTREAM`: the remote for `git@github.com:Cockatrice/Cockatrice.git`
- `$TAG_NAME` should be formatted as:
- `YYYY-MM-DD-Release-MAJ.MIN.PATCH` for **stable releases**
- `YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X` for **beta releases**<br>
With <kbd>MAJ</kbd>.<kbd>MIN</kbd>.<kbd>PATCH</kbd> being the NEXT release version!
This will cause a tagged release to be established on the GitHub repository,
with the binaries being added to the release whenever they are done building in CI.
The release is initially a draft, where the release notes can be edited and after
all is checked and ready, it can be published as GitHub release.
If you use a SemVer tag including "beta", the release that will be created at
GitHub will be marked as a "Pre-release" automatically.
The target of the `.../latest` URL will not be changed in that case, it always
points to the latest stable release and not pre-releases/betas.
If you accidentally push a tag incorrectly (the tag is outdated, you didn't
pull in the latest branch accidentally, you named the tag wrong, etc.) you can
revoke the tag by doing the following:
```bash
git push --delete upstream $TAG_NAME
git tag -d $TAG_NAME
```
You can also do this on GitHub, you'll also want to delete the false release.
In the first lines of [CMakeLists.txt](
https://github.com/Cockatrice/Cockatrice/blob/master/CMakeLists.txt)
there's an hardcoded version number and pretty name used when compiling from
master or custom (not tagged) versions.
While on tagged versions these numbers are overridden by the version numbers
coming from the tag title, it's good practice to increment the ones at CMake
after every full release to stress that master is ahead of the last stable
release.
The preferred flow of operation is:
- Just before a release, make sure the version number in CMakeLists.txt is set
to the same release version you are about to tag.
- This is also the time to change the pretty name in CMakeLists.txt called
`GIT_TAG_RELEASENAME` and commit and push these changes.
- Tag the release following the previously described syntax in order to get it
correctly built and deployed by CI.
- Wait for the configuration step to create the release and update the patch
notes.
- Check on the GitHub Actions page for build progress which should be the top
listed [here](
https://github.com/Cockatrice/Cockatrice/actions?query=event%3Apush+-branch%3Amaster
).
- When the build has been completed, you can verify if all uploaded files on the
draft release are included and hit the publish button.
- After the release is complete, update the CMake version number again to the
next targeted beta version, typically increasing `PROJECT_VERSION_PATCH` by
one.
When releasing a new stable version, all previous beta releases (and tags)
should be deleted as well.
This can be done the same way as revoking tags, mentioned above.

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [ZeldaZach]
patreon: mtgjson
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ["paypal.me/zachhalpern"]

44
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,44 @@
---
name: "🐛 Bug Report"
about: Report an issue encountered while using Cockatrice
title: ''
type: 'Bug'
labels: ''
assignees: ''
---
<!-- READ THIS BEFORE POSTING
In Cockatrice, go to "Help" → "View Debug Log" and copy all information displayed at the
top (above the separation line "----"), to below "System Information" section in this ticket!
If you can't start Cockatrice to access these details, make
sure to post your OS and the file name of the setup binary instead.
-->
**System Information:**
<!-- Read the hint above on where to find the important information to provide here! -->
<details><summary>Debug Log:</summary>
<!--
In Cockatrice, go to "Help" → "View Debug Log", click the "Copy to clickboard" button and paste the output here.
-->
</details>
_______________________________________________________________________________________
<!-- Explain your issue in detail here! Please attach screenshots if possible. -->
_______________________________________________________________________________________
<!-- Describe the sequence of actions needed to experience the bug. -->
**Steps to reproduce:**
- Do A
- Do B
- Do C ...

9
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
blank_issues_enabled: false
contact_links:
- name: 💬 Discord Community (Get help with server issues, e.g. Login)
url: https://discord.gg/3Z9yzmA
about: Need help with using the client? Want to find some games? Try the Discord server!
- name: 🌐 Translations (Help improve the localization of the app)
url: https://explore.transifex.com/cockatrice/cockatrice/
# it is not possible to add a link to the wiki to this description
about: For more information and guidance check our Translation FAQ on our wiki!

View File

@@ -0,0 +1,24 @@
---
name: "💡 Feature Request"
about: Request a new feature for Cockatrice
title: ''
type: 'Feature'
labels: ''
assignees: ''
---
<!--
Please search the issue tracker for similar issues before posting!
If your request is related to another request (but not the same!) list it here
-->
**Similar Requests**
<!-- Describe your feature idea here in detail -->
**Description of New Feature**
<!-- If your feature requires some context, provide it here -->
**Additional Context**

12
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,12 @@
## Related Ticket(s)
- Fixes #IssueNumber
## Short roundup of the initial problem
## What will change with this Pull Request?
- this
- and this
## Screenshots
<!-- simply drag & drop image files directly into this description! -->

49
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
# Configuration options: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
# # Enable version updates for git submodules
# Not yet possible to bump only on tags or releases, see:
# https://github.com/dependabot/dependabot-core/issues/1639
# https://github.com/dependabot/dependabot-core/issues/2192
# Alternative: Action that updates submodule and can be manually run on demand (workflow_dispatch)
# - package-ecosystem: "gitsubmodule"
# # Look for `.gitmodules` in the `root` directory
# directory: "/"
# # Check for updates once a month
# schedule:
# interval: "monthly"
# # Limit the amout of open PR's (default = 5, disabled = 0, security updates are not impacted)
# open-pull-requests-limit: 1
# # Enable version updates for Docker
# Not yet possible to bump from one LTS version to the next and skip others, see:
# https://github.com/dependabot/dependabot-core/issues/2247
# - package-ecosystem: "docker"
# # Look for a `Dockerfile` in the `root` directory
# directory: "/"
# # Check for updates once a week
# schedule:
# interval: "weekly"
# # Limit the amout of open PR's (default = 5, disabled = 0, security updates are not impacted)
# open-pull-requests-limit: 1
# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
# Directory must be set to "/" to check for workflow files in .github/workflows
directory: "/"
# Check for updates to GitHub Actions once a week
schedule:
interval: "weekly"
# Limit the amout of open PR's (default = 5, disabled = 0, security updates are not impacted)
open-pull-requests-limit: 2
# # Enable version updates for npm
# - package-ecosystem: "npm"
# # Look for `package.json` and `lock` files in the `webclient` subdirectory
# directory: "/webclient"
# # Check the npm registry for updates once a week
# schedule:
# interval: "weekly"
# # Limit the amout of open PR's (default = 5, disabled = 0, security updates are not impacted)
# open-pull-requests-limit: 5

493
.github/workflows/desktop-build.yml vendored Normal file
View File

@@ -0,0 +1,493 @@
name: Build Desktop
permissions:
contents: write
id-token: write
attestations: write
actions: write # needed for ccache action to be able to delete gha caches
on:
push:
branches:
- master
paths:
- '*/**' # matches all files not in root
- '!**.md'
- '!.github/**'
- '!.husky/**'
- '!.tx/**'
- '!doc/**'
- '!webclient/**'
- '.github/workflows/desktop-build.yml'
- 'CMakeLists.txt'
- 'vcpkg.json'
- 'vcpkg'
tags:
- '*'
pull_request:
paths:
- '*/**' # matches all files not in root
- '!**.md'
- '!.github/**'
- '!.husky/**'
- '!.tx/**'
- '!doc/**'
- '!webclient/**'
- '.github/workflows/desktop-build.yml'
- 'CMakeLists.txt'
- 'vcpkg.json'
- 'vcpkg'
# Cancel earlier, unfinished runs of this workflow on the same branch (unless on master)
concurrency:
group: "${{ github.workflow }} @ ${{ github.ref_name }}"
cancel-in-progress: ${{ github.ref_name != 'master' }}
jobs:
configure:
name: Configure
runs-on: ubuntu-latest
outputs:
tag: ${{steps.configure.outputs.tag}}
sha: ${{steps.configure.outputs.sha}}
steps:
- name: Configure
id: configure
shell: bash
run: |
tag_regex='^refs/tags/'
if [[ $GITHUB_EVENT_NAME == pull-request ]]; then # pull request
sha="${{github.event.pull_request.head.sha}}"
elif [[ $GITHUB_REF =~ $tag_regex ]]; then # release
sha="$GITHUB_SHA"
tag="${GITHUB_REF/refs\/tags\//}"
echo "tag=$tag" >>"$GITHUB_OUTPUT"
else # push to branch
sha="$GITHUB_SHA"
fi
echo "sha=$sha" >>"$GITHUB_OUTPUT"
- name: Checkout
if: steps.configure.outputs.tag != null
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Prepare release parameters
id: prepare
if: steps.configure.outputs.tag != null
shell: bash
env:
TAG: ${{steps.configure.outputs.tag}}
run: .ci/prep_release.sh
- name: Create release
if: steps.configure.outputs.tag != null
id: create_release
shell: bash
env:
GH_TOKEN: ${{github.token}}
tag_name: ${{steps.configure.outputs.tag}}
target: ${{steps.configure.outputs.sha}}
release_name: ${{steps.prepare.outputs.title}}
body_path: ${{steps.prepare.outputs.body_path}}
prerelease: ${{steps.prepare.outputs.is_beta}}
run: |
if [[ $prerelease == yes ]]; then
args="--prerelease"
fi
gh release create "$tag_name" --draft --verify-tag $args \
--target "$target" --title "$release_name" \
--notes-file "$body_path"
build-linux:
strategy:
fail-fast: false
matrix:
# These names correspond to the files in ".ci/$distro$version"
include:
- distro: Arch
package: skip # We are packaged in Arch already
allow-failure: yes
- distro: Debian
version: 11
package: DEB
- distro: Servatrice_Debian
version: 11
package: DEB
test: skip
server_only: yes
- distro: Debian
version: 12
package: DEB
test: skip # Running tests on all distros is superfluous
- distro: Debian
version: 13
package: DEB
- distro: Fedora
version: 42
package: RPM
test: skip # Running tests on all distros is superfluous
- distro: Fedora
version: 43
package: RPM
- distro: Ubuntu
version: 22.04
package: DEB
test: skip # Running tests on all distros is superfluous
- distro: Ubuntu
version: 24.04
package: DEB
name: ${{matrix.distro}} ${{matrix.version}}
needs: configure
runs-on: ubuntu-latest
continue-on-error: ${{matrix.allow-failure == 'yes'}}
env:
NAME: ${{matrix.distro}}${{matrix.version}}
CACHE: ${{github.workspace}}/.cache/${{matrix.distro}}${{matrix.version}} # directory for caching docker image and ccache
# Cache size over the entire repo is 10Gi:
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy
CCACHE_SIZE: 500M
CMAKE_GENERATOR: 'Ninja'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Restore compiler cache (ccache)
id: ccache_restore
uses: actions/cache/restore@v4
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
with:
path: ${{env.CACHE}}
key: ccache-${{matrix.distro}}${{matrix.version}}-${{env.BRANCH_NAME}}
restore-keys: ccache-${{matrix.distro}}${{matrix.version}}-
- name: Build ${{matrix.distro}} ${{matrix.version}} Docker image
shell: bash
run: source .ci/docker.sh --build
- name: Build debug and test
if: matrix.test != 'skip'
shell: bash
env:
CMAKE_GENERATOR: '${{env.CMAKE_GENERATOR}}'
run: |
source .ci/docker.sh
RUN --server --debug --test --ccache "$CCACHE_SIZE"
- name: Build release package
id: build
if: matrix.package != 'skip'
shell: bash
env:
BUILD_DIR: build
SUFFIX: '-${{matrix.distro}}${{matrix.version}}'
package: '${{matrix.package}}'
CMAKE_GENERATOR: '${{env.CMAKE_GENERATOR}}'
NO_CLIENT: ${{matrix.server_only == 'yes' && '--no-client' || '' }}
run: |
source .ci/docker.sh
RUN --server --release --package "$package" --dir "$BUILD_DIR" \
--ccache "$CCACHE_SIZE" $NO_CLIENT
.ci/name_build.sh
- name: Save compiler cache (ccache)
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@v4
with:
path: ${{env.CACHE}}
key: ${{ steps.ccache_restore.outputs.cache-primary-key }}
- name: Upload artifact
id: upload_artifact
if: matrix.package != 'skip'
uses: actions/upload-artifact@v5
with:
name: ${{matrix.distro}}${{matrix.version}}-package
path: ${{steps.build.outputs.path}}
if-no-files-found: error
- name: Upload to release
id: upload_release
if: matrix.package != 'skip' && needs.configure.outputs.tag != null
shell: bash
env:
GH_TOKEN: ${{github.token}}
tag_name: ${{needs.configure.outputs.tag}}
asset_path: ${{steps.build.outputs.path}}
asset_name: ${{steps.build.outputs.name}}
run: gh release upload "$tag_name" "$asset_path#$asset_name"
- name: Attest binary provenance
id: attestation
if: steps.upload_release.outcome == 'success'
uses: actions/attest-build-provenance@v3
with:
subject-name: ${{steps.build.outputs.name}}
subject-digest: sha256:${{ steps.upload_artifact.outputs.artifact-digest }}
- name: Verify binary attestation
if: steps.attestation.outcome == 'success'
shell: bash
env:
GH_TOKEN: ${{github.token}}
run: gh attestation verify ${{steps.build.outputs.path}} -R Cockatrice/Cockatrice
build-vcpkg:
strategy:
fail-fast: false
matrix:
include:
- os: macOS
target: 13
runner: macos-15-intel
soc: Intel
xcode: "16.4"
type: Release
override_target: 13
make_package: 1
package_suffix: "-macOS13_Intel"
artifact_name: macOS13_Intel-package
qt_version: 6.6.*
qt_arch: clang_64
qt_modules: qtimageformats qtmultimedia qtwebsockets
cache_qt: false # qt caches take too much space for macOS (1.1Gi)
cmake_generator: Ninja
use_ccache: 1
- os: macOS
target: 14
runner: macos-14
soc: Apple
xcode: "15.4"
type: Release
make_package: 1
package_suffix: "-macOS14"
artifact_name: macOS14-package
qt_version: 6.6.*
qt_arch: clang_64
qt_modules: qtimageformats qtmultimedia qtwebsockets
cache_qt: false
cmake_generator: Ninja
use_ccache: 1
- os: macOS
target: 15
runner: macos-15
soc: Apple
xcode: "16.4"
type: Release
make_package: 1
package_suffix: "-macOS15"
artifact_name: macOS15-package
qt_version: 6.6.*
qt_arch: clang_64
qt_modules: qtimageformats qtmultimedia qtwebsockets
cache_qt: false
cmake_generator: Ninja
use_ccache: 1
- os: macOS
target: 15
runner: macos-15
soc: Apple
xcode: "16.4"
type: Debug
qt_version: 6.6.*
qt_arch: clang_64
qt_modules: qtimageformats qtmultimedia qtwebsockets
cache_qt: false
cmake_generator: Ninja
use_ccache: 1
- os: Windows
target: 7
runner: windows-2022
type: Release
make_package: 1
package_suffix: "-Win7"
artifact_name: Windows7-installer
qt_version: 5.15.*
qt_arch: win64_msvc2019_64
cache_qt: true
cmake_generator: "Visual Studio 17 2022"
cmake_generator_platform: x64
- os: Windows
target: 10
runner: windows-2022
type: Release
make_package: 1
package_suffix: "-Win10"
artifact_name: Windows10-installer
qt_version: 6.6.*
qt_arch: win64_msvc2019_64
qt_modules: qtimageformats qtmultimedia qtwebsockets
cache_qt: true
cmake_generator: "Visual Studio 17 2022"
cmake_generator_platform: x64
name: ${{matrix.os}} ${{matrix.target}}${{ matrix.soc == 'Intel' && ' Intel' || '' }}${{ matrix.type == 'Debug' && ' Debug' || '' }}
needs: configure
runs-on: ${{matrix.runner}}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Add msbuild to PATH
if: matrix.os == 'Windows'
id: add-msbuild
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
# Using jianmingyong/ccache-action to setup ccache without using brew
# It tries to download a binary of ccache from GitHub Release and falls back to building from source if it fails
- name: Setup ccache
if: matrix.use_ccache == 1
uses: jianmingyong/ccache-action@v1
with:
install-type: "binary"
ccache-key-prefix: ccache-${{matrix.runner}}-${{matrix.soc}}-${{matrix.type}}
max-size: 500M
gh-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Qt ${{matrix.qt_version}}
uses: jurplel/install-qt-action@v4
with:
version: ${{matrix.qt_version}}
arch: ${{matrix.qt_arch}}
modules: ${{matrix.qt_modules}}
cache: ${{matrix.cache_qt}}
- name: Setup vcpkg cache
id: vcpkg-cache
uses: TAServers/vcpkg-cache@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
# uses environment variables, see compile.sh for more details
- name: Build Cockatrice
id: build
shell: bash
env:
BUILDTYPE: '${{matrix.type}}'
MAKE_PACKAGE: '${{matrix.make_package}}'
PACKAGE_SUFFIX: '${{matrix.package_suffix}}'
CMAKE_GENERATOR: ${{matrix.cmake_generator}}
CMAKE_GENERATOR_PLATFORM: ${{matrix.cmake_generator_platform}}
USE_CCACHE: ${{matrix.use_ccache}}
VCPKG_DISABLE_METRICS: 1
VCPKG_BINARY_SOURCES: 'clear;files,${{ steps.vcpkg-cache.outputs.path }},readwrite'
# macOS-specific environment variables, will be ignored on Windows
MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
DEVELOPER_DIR: '/Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer'
TARGET_MACOS_VERSION: ${{ matrix.override_target }}
run: .ci/compile.sh --server --test --vcpkg
- name: Sign app bundle
if: matrix.os == 'macOS' && matrix.make_package && (github.ref == 'refs/heads/master' || needs.configure.outputs.tag != null)
env:
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
run: |
if [[ -n "$MACOS_CERTIFICATE_NAME" ]]
then
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
/usr/bin/codesign --sign="$MACOS_CERTIFICATE_NAME" --entitlements=".ci/macos.entitlements" --options=runtime --force --deep --timestamp --verbose ${{steps.build.outputs.path}}
fi
- name: Notarize app bundle
if: matrix.os == 'macOS' && matrix.make_package && (github.ref == 'refs/heads/master' || needs.configure.outputs.tag != null)
env:
MACOS_NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
MACOS_NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: |
if [[ -n "$MACOS_NOTARIZATION_APPLE_ID" ]]
then
# Store the notarization credentials so that we can prevent a UI password dialog from blocking the CI
echo "Create keychain profile"
xcrun notarytool store-credentials "notarytool-profile" --apple-id "$MACOS_NOTARIZATION_APPLE_ID" --team-id "$MACOS_NOTARIZATION_TEAM_ID" --password "$MACOS_NOTARIZATION_PWD"
# We can't notarize an app bundle directly, but we need to compress it as an archive.
# Therefore, we create a zip file containing our app bundle, so that we can send it to the
# notarization service
echo "Creating temp notarization archive"
ditto -c -k --keepParent ${{steps.build.outputs.path}} "notarization.zip"
# Here we send the notarization request to the Apple's Notarization service, waiting for the result.
# This typically takes a few seconds inside a CI environment, but it might take more depending on the App
# characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if
# you're curious
echo "Notarize app"
xcrun notarytool submit "notarization.zip" --keychain-profile "notarytool-profile" --wait
# Finally, we need to "attach the staple" to our executable, which will allow our app to be
# validated by macOS even when an internet connection is not available.
echo "Attach staple"
xcrun stapler staple ${{steps.build.outputs.path}}
fi
- name: Upload artifact
id: upload_artifact
if: matrix.make_package
uses: actions/upload-artifact@v5
with:
name: ${{matrix.artifact_name}}
path: ${{steps.build.outputs.path}}
if-no-files-found: error
- name: Upload pdb database
if: matrix.os == 'Windows'
uses: actions/upload-artifact@v5
with:
name: Windows${{matrix.target}}-debug-pdbs
path: |
build/cockatrice/Release/*.pdb
build/servatrice/Release/*.pdb
if-no-files-found: error
- name: Upload to release
id: upload_release
if: needs.configure.outputs.tag != null
shell: bash
env:
GH_TOKEN: ${{github.token}}
tag_name: ${{needs.configure.outputs.tag}}
asset_path: ${{steps.build.outputs.path}}
asset_name: ${{steps.build.outputs.name}}
run: gh release upload "$tag_name" "$asset_path#$asset_name"
- name: Attest binary provenance
id: attestation
if: steps.upload_release.outcome == 'success'
uses: actions/attest-build-provenance@v3
with:
subject-name: ${{steps.build.outputs.name}}
subject-digest: sha256:${{ steps.upload_artifact.outputs.artifact-digest }}
- name: Verify binary attestation
if: steps.attestation.outcome == 'success'
shell: bash
env:
GH_TOKEN: ${{github.token}}
run: gh attestation verify ${{steps.build.outputs.path}} -R Cockatrice/Cockatrice

39
.github/workflows/desktop-lint.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: Code Style (C++)
on:
# push trigger not needed for linting, we do not allow direct pushes to master
pull_request:
paths:
- '*/**' # matches all files not in root
- '!**.md'
- '!.ci/**'
- '!.github/**'
- '!.husky/**'
- '!.tx/**'
- '!doc/**'
- '!webclient/**'
- '.ci/lint_cpp.sh'
- '.github/workflows/desktop-lint.yml'
- '.clang-format'
- '.cmake-format.json'
- 'format.sh'
jobs:
format:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 20 # should be enough to find merge base
- name: Install dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends clang-format cmake-format shellcheck
- name: Check code formatting
shell: bash
run: ./.ci/lint_cpp.sh

66
.github/workflows/docker-release.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: Build Docker Image
on:
push:
tags:
- '*Release*'
branches:
- master
pull_request:
branches:
- master
paths:
- '.github/workflows/docker-release.yml'
- 'Dockerfile'
jobs:
docker:
name: amd64 & arm64
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Docker metadata
id: metadata
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/cockatrice/servatrice
labels: |
org.opencontainers.image.title=Servatrice
org.opencontainers.image.url=https://cockatrice.github.io/
org.opencontainers.image.description=Server for Cockatrice, a cross-platform virtual tabletop for multiplayer card games
annotations: |
org.opencontainers.image.title=Servatrice
org.opencontainers.image.url=https://cockatrice.github.io/
org.opencontainers.image.description=Server for Cockatrice, a cross-platform virtual tabletop for multiplayer card games
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
if: github.ref_type == 'tag'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: ${{ github.ref_type == 'tag' }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -0,0 +1,61 @@
name: Generate Docs
on:
push:
tags:
- '*' # Only re-generate docs when a new tagged version is pushed
pull_request:
paths:
- 'doc/doxygen/**'
- '.github/workflows/documentation-build.yml'
- 'Doxyfile'
workflow_dispatch:
env:
COCKATRICE_REF: ${{ github.ref_name }} # Tag name if the commit is tagged, otherwise branch name
jobs:
docs:
name: Doxygen
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Install Graphviz
run: |
sudo apt-get install -y graphviz
dot -V
- name: Install Doxygen
uses: ssciwr/doxygen-install@v1
with:
version: "1.14.0"
- name: Update Doxygen Configuration
run: |
git diff Doxyfile
doxygen -u Doxyfile
if git diff --quiet Doxyfile; then
echo "::notice::No config changes in Doxyfile detected."
else
echo "::error::Config changes in Doxyfile detected! Please update the file by running 'doxygen -u Doxyfile'."
echo ""
git diff --color=always Doxyfile
exit 1
fi
- name: Generate Documentation
if: always()
run: doxygen Doxyfile
- name: Deploy to cockatrice.github.io
if: github.event_name != 'pull_request'
uses: peaceiris/actions-gh-pages@v4
with:
deploy_key: ${{ secrets.DOCS_DEPLOY_KEY }}
external_repository: Cockatrice/cockatrice.github.io
publish_branch: master
publish_dir: ./docs/html
destination_dir: docs # Docs will live under https://cockatrice.github.io/docs/

73
.github/workflows/translations-pull.yml vendored Normal file
View File

@@ -0,0 +1,73 @@
name: Update Translations
on:
workflow_dispatch:
schedule:
# runs in the middle of each month starting a quarter (UTC) = two weeks after new strings are built
- cron: '0 0 15 1,4,7,10 *'
pull_request:
paths:
- '.tx/**'
- '.github/workflows/translations-pull.yml'
jobs:
translations:
# Do not run the scheduled workflow on forks
if: github.event_name != 'schedule' || github.repository_owner == 'Cockatrice'
name: Pull languages
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Pull translated strings from Transifex
uses: transifex/cli-action@v2
with:
# used config file: https://github.com/Cockatrice/Cockatrice/blob/master/.tx/config
# https://github.com/transifex/cli#pulling-files-from-transifex
token: ${{ secrets.TX_TOKEN }}
args: pull --force --all
- name: Create pull request
if: github.event_name != 'pull_request'
id: create_pr
uses: peter-evans/create-pull-request@v7
with:
add-paths: |
cockatrice/translations/*.ts
oracle/translations/*.ts
webclient/public/locales/*/translation.json
commit-message: Update translation files
# author is the owner of the commit
author: github-actions <github-actions@github.com>
branch: ci-update_translations
delete-branch: true
title: 'Update translations'
body: |
Pulled all translated strings from [Transifex][1].
---
*This PR is automatically generated and updated by the workflow at `.github/workflows/translations-pull.yml`. Review [action runs][2].*<br>
*After merging, all new languages and translations are available in the next build.*
[1]: https://explore.transifex.com/cockatrice/cockatrice/
[2]: https://github.com/Cockatrice/Cockatrice/actions/workflows/translations-pull.yml?query=branch%3Amaster
labels: |
CI
Translation
draft: false
- name: PR Status
if: github.event_name != 'pull_request'
shell: bash
env:
STATUS: ${{ steps.create_pr.outputs.pull-request-operation }}
run: |
if [[ "$STATUS" == "none" ]]; then
echo "PR #${{ steps.create_pr.outputs.pull-request-number }} unchanged!" >> $GITHUB_STEP_SUMMARY
else
echo "PR #${{ steps.create_pr.outputs.pull-request-number }} $STATUS!" >> $GITHUB_STEP_SUMMARY
fi
echo "URL: ${{ steps.create_pr.outputs.pull-request-url }}" >> $GITHUB_STEP_SUMMARY

88
.github/workflows/translations-push.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Update Translation Source
on:
workflow_dispatch:
schedule:
# runs at the start of each quarter (UTC)
- cron: '0 0 1 1,4,7,10 *'
pull_request:
paths:
- '.ci/update_translation_source_strings.sh'
- '.github/workflows/translations-push.yml'
jobs:
translations:
# Do not run the scheduled workflow on forks
if: github.event_name != 'schedule' || github.repository_owner == 'Cockatrice'
name: Push strings
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install lupdate
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends qttools5-dev-tools
- name: Update Cockatrice translation source
id: cockatrice
shell: bash
run: |
FILE="cockatrice/cockatrice_en@source.ts"
export DIRS="cockatrice/src $(find . -maxdepth 1 -type d -name 'libcockatrice_*')"
FILE="$FILE" DIRS="$DIRS" .ci/update_translation_source_strings.sh
- name: Update Oracle translation source
id: oracle
shell: bash
env:
FILE: 'oracle/oracle_en@source.ts'
DIRS: 'oracle/src'
run: .ci/update_translation_source_strings.sh
- name: Render template
id: template
uses: chuhlomin/render-template@v1
with:
template: .ci/update_translation_source_strings_template.md
vars: |
cockatrice_output: ${{ steps.cockatrice.outputs.output }}
oracle_output: ${{ steps.oracle.outputs.output }}
commit: ${{ github.sha }}
- name: Create pull request
if: github.event_name != 'pull_request'
id: create_pr
uses: peter-evans/create-pull-request@v7
with:
add-paths: |
cockatrice/cockatrice_en@source.ts
oracle/oracle_en@source.ts
commit-message: Update translation source strings
# author is the owner of the commit
author: github-actions <github-actions@github.com>
branch: ci-update_translation_source
delete-branch: true
title: 'Update source strings'
body: ${{ steps.template.outputs.result }}
labels: |
CI
Translation
draft: false
- name: PR Status
if: github.event_name != 'pull_request'
shell: bash
env:
STATUS: ${{ steps.create_pr.outputs.pull-request-operation }}
run: |
if [[ "$STATUS" == "none" ]]; then
echo "PR #${{ steps.create_pr.outputs.pull-request-number }} unchanged!" >> $GITHUB_STEP_SUMMARY
else
echo "PR #${{ steps.create_pr.outputs.pull-request-number }} $STATUS!" >> $GITHUB_STEP_SUMMARY
fi
echo "URL: ${{ steps.create_pr.outputs.pull-request-url }}" >> $GITHUB_STEP_SUMMARY

54
.github/workflows/web-build.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: Build Web
on:
push:
branches:
- master
paths:
- '.husky/**'
- 'webclient/**'
- '!**.md'
- '.github/workflows/web-build.yml'
pull_request:
paths:
- '.husky/**'
- 'webclient/**'
- '!**.md'
- '.github/workflows/web-build.yml'
jobs:
build-web:
name: React (Node ${{matrix.node_version}})
runs-on: ubuntu-latest
defaults:
run:
working-directory: webclient
strategy:
fail-fast: false
matrix:
node_version:
- 16
- lts/*
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{matrix.node_version}}
cache: 'npm'
cache-dependency-path: 'webclient/package-lock.json'
- name: Install dependencies
run: npm clean-install
- name: Build app
run: npm run build
- name: Test app
run: npm run test

33
.github/workflows/web-lint.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Code Style (TypeScript)
on:
# push trigger not needed for linting, we do not allow direct pushes to master
pull_request:
paths:
- 'webclient/**'
- '!**.md'
- '.github/workflows/web-lint.yml'
jobs:
ESLint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: webclient
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
cache: 'npm'
cache-dependency-path: 'webclient/package-lock.json'
- name: Install ESLint
run: npm clean-install --ignore-scripts
- name: Run ESLint
run: npm run lint

13
.gitignore vendored
View File

@@ -2,3 +2,16 @@ tags
build*
*.qm
.directory
mysql.cnf
.DS_Store
.idea/
*.aps
cmake-build*
preferences
compile_commands.json
.vs/
.vscode/
.cache
.gdb_history
cockatrice/resources/config/qtlogging.ini
docs/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "vcpkg"]
path = vcpkg
url = https://github.com/microsoft/vcpkg.git

7
.husky/pre-commit Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
cd webclient
npm run translate
git add src/i18n-default.json

View File

@@ -1,10 +0,0 @@
language: cpp
os:
- linux
- osx
compiler:
- gcc
- clang
script: mkdir build && cd build && cmake .. && make
install: ./travis-dependencies.sh
cache: apt

26
.tx/config Normal file
View File

@@ -0,0 +1,26 @@
[main]
host = https://app.transifex.com
[o:cockatrice:p:cockatrice:r:cockatrice-cockatrice-en-source-ts--master]
resource_name = Cockatrice
source_lang = en
source_file = cockatrice/cockatrice_en@source.ts
file_filter = cockatrice/translations/cockatrice_<lang>.ts
type = QT
minimum_perc = 10
[o:cockatrice:p:cockatrice:r:oracle-oracle-en-source-ts--master]
resource_name = Oracle
source_lang = en
source_file = oracle/oracle_en@source.ts
file_filter = oracle/translations/oracle_<lang>.ts
type = QT
minimum_perc = 10
[o:cockatrice:p:cockatrice:r:webclient-src-i18n-default-json--master]
resource_name = Webclient
source_lang = en
source_file = webclient/src/i18n-default.json
file_filter = webclient/public/locales/<lang>/translation.json
type = KEYVALUEJSON
minimum_perc = 10

View File

@@ -5,139 +5,368 @@
# This file sets all the variables shared between the projects
# like the installation path, compilation flags etc..
cmake_minimum_required(VERSION 2.6)
# cmake 3.16 is required if using qt6
cmake_minimum_required(VERSION 3.10)
set(PROJECT_NAME "Cockatrice")
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 1)
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} )
# Early detect ccache
option(USE_CCACHE "Cache the build results with ccache" ON)
# Treat warnings as errors (Debug builds only)
option(WARNING_AS_ERROR "Treat warnings as errors in debug builds" ON)
# Check for translation updates
option(UPDATE_TRANSLATIONS "Update translations on compile" OFF)
# Compile servatrice
option(WITH_SERVER "build servatrice" OFF)
# Compile cockatrice
option(WITH_CLIENT "build cockatrice" ON)
# Compile oracle
option(WITH_ORACLE "build oracle" ON)
# Compile dbconverter
option(WITH_DBCONVERTER "build dbconverter" ON)
# Compile tests
option(TEST "build tests" OFF)
# Use vcpkg regardless of OS
option(USE_VCPKG "Use vcpkg regardless of OS" OFF)
# Defualt to "Release" build type
# Default to "Release" build type
# User-provided value for CMAKE_BUILD_TYPE must be checked before the PROJECT() call
IF(DEFINED CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Type of build")
ELSE()
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build")
ENDIF()
if(DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE
${CMAKE_BUILD_TYPE}
CACHE STRING "Type of build"
)
else()
set(CMAKE_BUILD_TYPE
Release
CACHE STRING "Type of build"
)
endif()
if(USE_CCACHE)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
# Support Unix Makefiles and Ninja
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
message(STATUS "Found CCache ${CCACHE_PROGRAM}")
endif()
endif()
if(WIN32 OR USE_VCPKG)
# Use vcpkg toolchain on Windows (and on macOS in CI)
set(CMAKE_TOOLCHAIN_FILE
${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake
CACHE STRING "Vcpkg toolchain file"
)
# Qt path set by user or env var
if(QTDIR
OR DEFINED ENV{QTDIR}
OR DEFINED ENV{QTDIR32}
OR DEFINED ENV{QTDIR64}
)
else()
set(QTDIR
""
CACHE PATH "Path to Qt (e.g. C:/Qt/5.7/msvc2015_64)"
)
message(
WARNING "QTDIR variable is missing. Please set this variable to specify path to Qt (e.g. C:/Qt/5.7/msvc2015_64)"
)
endif()
endif()
# A project name is needed for CPack
PROJECT("${PROJECT_NAME}")
# Version can be overriden by git tags, see cmake/getversion.cmake
project("Cockatrice" VERSION 2.11.0)
# Set release name if not provided via env/cmake var
if(NOT DEFINED GIT_TAG_RELEASENAME)
set(GIT_TAG_RELEASENAME "Omenpath")
endif()
# Use c++20 for all targets
set(CMAKE_CXX_STANDARD
20
CACHE STRING "C++ ISO Standard"
)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Set conventional loops
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
# Search path for cmake modules
set(COCKATRICE_CMAKE_PATH "${PROJECT_SOURCE_DIR}/cmake")
list(INSERT CMAKE_MODULE_PATH 0 "${COCKATRICE_CMAKE_PATH}")
include(getversion)
# Create a header and a cpp file containing the version hash
include(createversionfile)
# Define a proper install path
if(UNIX)
if(APPLE)
# MacOS X
# Due to the special bundle structure ignore
# the prefix eventually set by the user.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release)
else()
# Linux / BSD
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
#fix package build
if(PREFIX)
set(CMAKE_INSTALL_PREFIX ${PREFIX})
else()
set(CMAKE_INSTALL_PREFIX /usr/local)
endif()
endif()
endif()
elseif(WIN32)
if(APPLE)
# macOS
# Due to the special bundle structure ignore
# the prefix eventually set by the user.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release)
# Force ccache usage if available
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
if(RULE_LAUNCH_COMPILE)
message(STATUS "Force enabling CCache usage under macOS")
# Set up wrapper scripts
configure_file("${COCKATRICE_CMAKE_PATH}/launch-c.in" launch-c)
configure_file("${COCKATRICE_CMAKE_PATH}/launch-cxx.in" launch-cxx)
execute_process(COMMAND chmod a+rx "${CMAKE_BINARY_DIR}/launch-c" "${CMAKE_BINARY_DIR}/launch-cxx")
# Set Xcode project attributes to route compilation through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
endif()
else()
# Linux / BSD
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
#fix package build
if(PREFIX)
set(CMAKE_INSTALL_PREFIX ${PREFIX})
else()
set(CMAKE_INSTALL_PREFIX /usr/local)
endif()
endif()
endif()
elseif(WIN32)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE})
endif()
# Define proper compilation flags
IF(MSVC)
# Visual Studio:
# Maximum optimization
set(CMAKE_CXX_FLAGS_RELEASE "/Ox")
# Generate complete debugging information
#set(CMAKE_CXX_FLAGS_DEBUG "/Zi")
ELSEIF (CMAKE_COMPILER_IS_GNUCXX)
# linux/gcc, bsd/gcc, windows/mingw
set(CMAKE_CXX_FLAGS_RELEASE "-s -O2")
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0")
ELSE()
# other: osx/llvm, bsd/llvm
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
ENDIF()
if(MSVC)
# Disable Warning C4251, C++20 compatibility, Multi-threaded Builds, Warn Detection, Unwind Semantics, Debug Symbols
set(CMAKE_CXX_FLAGS "/wd4251 /Zc:__cplusplus /std:c++20 /permissive- /W4 /MP /EHsc /Zi")
# Visual Studio: Maximum Optimization, Multi-threaded DLL
set(CMAKE_CXX_FLAGS_RELEASE "/Ox /MD")
# Visual Studio: No Optimization, Multi-threaded Debug DLL
set(CMAKE_CXX_FLAGS_DEBUG "/Od /MDd")
# Generate PDB, even when in release (So developers can better analyze crash logs)
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
add_compile_definitions(_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING)
elseif(CMAKE_COMPILER_IS_GNUCXX)
# linux/gcc, bsd/gcc, windows/mingw
include(CheckCXXCompilerFlag)
set(CMAKE_CXX_FLAGS_RELEASE "-s -O2")
if(WARNING_AS_ERROR)
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0 -Wall -Wextra -Werror")
else()
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0 -Wall -Wextra")
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++20")
endif()
set(ADDITIONAL_DEBUG_FLAGS
-Wcast-align
-Wmissing-declarations
-Wno-long-long
-Wno-error=extra
-Wno-error=delete-non-virtual-dtor
-Wno-error=sign-compare
-Wno-error=missing-declarations
)
foreach(FLAG ${ADDITIONAL_DEBUG_FLAGS})
check_cxx_compiler_flag("${FLAG}" CXX_HAS_WARNING_${FLAG})
if(CXX_HAS_WARNING_${FLAG})
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${FLAG}")
endif()
endforeach()
else()
# other: osx/llvm, bsd/llvm
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
if(WARNING_AS_ERROR)
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra -Werror -Wno-unused-parameter")
else()
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra")
endif()
endif()
# GNU systems need to define the Mersenne exponent for the RNG to compile w/o warning
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
ADD_DEFINITIONS("-DSFMT_MEXP=19937")
ENDIF()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_definitions("-DSFMT_MEXP=19937")
endif()
#Find Qt4 and enable the needed features
FIND_PACKAGE(Qt4 REQUIRED)
find_package(Threads REQUIRED)
# Determine 32 or 64 bit build
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_lib_suffix 64)
else()
set(_lib_suffix 32)
endif()
if(DEFINED QTDIR${_lib_suffix})
list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_lib_suffix}}")
elseif(DEFINED QTDIR)
list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
elseif(DEFINED ENV{QTDIR${_lib_suffix}})
list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR${_lib_suffix}}")
elseif(DEFINED ENV{QTDIR})
list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
endif()
message(STATUS "Update Translations: ${UPDATE_TRANSLATIONS}")
include(FindQtRuntime)
set(CMAKE_AUTOMOC TRUE)
# Find other needed libraries
FIND_PACKAGE(Protobuf REQUIRED)
find_package(Protobuf CONFIG)
if(NOT Protobuf_FOUND)
find_package(Protobuf REQUIRED)
endif()
if(${Protobuf_VERSION} VERSION_LESS "3.21.0.0" AND NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
message(FATAL_ERROR "No protoc command found!")
endif()
#Find OpenSSL
if(WIN32)
find_package(OpenSSL REQUIRED)
if(OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIRS})
else()
message(
WARNING
"Could not find OpenSSL runtime libraries. They are not required for compiling, but needs to be available at runtime."
)
endif()
endif()
#Find VCredist
if(MSVC)
find_package(VCredistRuntime)
endif()
# Package builder
set(CPACK_PACKAGE_CONTACT "Daenyth+github@gmail.com")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME})
set(CPACK_PACKAGE_CONTACT "Zach Halpern <zach@cockatrice.us>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
set(CPACK_PACKAGE_VENDOR "Cockatrice Development Team")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_VERSION_FILENAME}")
if(UNIX)
if(APPLE)
set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR})
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_FORMAT "UDBZ")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice/resources/appicon.icns")
if(APPLE)
set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR})
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_FORMAT "UDBZ")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice/resources/appicon.icns")
set(CPACK_DMG_DS_STORE_SETUP_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CMakeDMGSetup.script")
set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/dmgBackground.tif")
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignMacApplications.cmake")
else()
# linux
if(CPACK_GENERATOR STREQUAL "RPM")
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
set(CPACK_RPM_MAIN_COMPONENT "cockatrice")
if(Qt6_FOUND)
set(CPACK_RPM_PACKAGE_REQUIRES "protobuf, qt6-qttools, qt6-qtsvg, qt6-qtmultimedia, qt6-qtimageformats")
elseif(Qt5_FOUND)
set(CPACK_RPM_PACKAGE_REQUIRES "protobuf, qt5-qttools, qt5-qtsvg, qt5-qtmultimedia")
endif()
set(CPACK_RPM_PACKAGE_GROUP "Amusements/Games")
set(CPACK_RPM_PACKAGE_URL "http://github.com/Cockatrice/Cockatrice")
# stop directories from making package conflicts
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
/usr/share/applications
/usr/share/icons
/usr/share/icons/hicolor
/usr/share/icons/hicolor/48x48
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/hicolor/scalable
/usr/share/icons/hicolor/scalable/apps
)
else()
# linux
set(CPACK_GENERATOR DEB ${CPACK_GENERATOR})
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}/${PROJECT_VERSION}")
set(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
set(CPACK_SOURCE_STRIP_FILES "")
set(CPACK_GENERATOR DEB)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_SECTION "games")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://github.com/Cockatrice/Cockatrice")
if(Qt6_FOUND)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt6multimedia6, libqt6svg6, qt6-qpa-plugins, qt6-image-formats-plugins")
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "libqt6sql6-mysql") # for connecting servatrice to a mysql db
elseif(Qt5_FOUND)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5multimedia5-plugins, libqt5svg5")
endif()
endif()
endif()
elseif(WIN32)
set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR})
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}\\\\${PROJECT_VERSION}")
set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe")
set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
set(CPACK_NSIS_HELP_LINK "https://github.com/Daenyth/Cockatrice")
set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/Daenyth/Cockatrice")
set(CPACK_NSIS_CONTACT "Daenyth+github@gmail.com")
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR})
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(x64)")
set(TRICE_IS_64_BIT 1)
else()
set(TRICE_IS_64_BIT 0)
endif()
# Configure file with custom definitions for NSIS.
configure_file("${COCKATRICE_CMAKE_PATH}/NSIS.definitions.nsh.in" "${PROJECT_BINARY_DIR}/NSIS.definitions.nsh")
# include vcredist into the package; NSIS will take care of running it
if(VCREDISTRUNTIME_FOUND)
install(FILES "${VCREDISTRUNTIME_FILE}" DESTINATION ./)
endif()
endif()
include(CPack)
# Compile servatrice (default off)
option(WITH_SERVER "build servatrice" OFF)
add_subdirectory(common)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_interfaces ${CMAKE_BINARY_DIR}/libcockatrice_interfaces)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_protocol ${CMAKE_BINARY_DIR}/libcockatrice_protocol)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_network ${CMAKE_BINARY_DIR}/libcockatrice_network)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_deck_list ${CMAKE_BINARY_DIR}/libcockatrice_deck_list)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_rng ${CMAKE_BINARY_DIR}/libcockatrice_rng)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_card ${CMAKE_BINARY_DIR}/libcockatrice_card)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_utility ${CMAKE_BINARY_DIR}/libcockatrice_utility)
if(WITH_ORACLE OR WITH_CLIENT)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_settings ${CMAKE_BINARY_DIR}/libcockatrice_settings)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_models ${CMAKE_BINARY_DIR}/libcockatrice_models)
add_subdirectory(${CMAKE_SOURCE_DIR}/libcockatrice_filters ${CMAKE_BINARY_DIR}/libcockatrice_filters)
endif()
if(WITH_SERVER)
add_subdirectory(servatrice)
SET(CPACK_INSTALL_CMAKE_PROJECTS "servatrice;servatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
add_subdirectory(servatrice)
set(CPACK_INSTALL_CMAKE_PROJECTS "Servatrice;Servatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
# Compile cockatrice (default on)
option(WITH_CLIENT "build cockatrice" ON)
if(WITH_CLIENT)
add_subdirectory(cockatrice)
add_subdirectory(sounds)
add_subdirectory(zonebg)
SET(CPACK_INSTALL_CMAKE_PROJECTS "cockatrice;cockatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
add_subdirectory(cockatrice)
set(CPACK_INSTALL_CMAKE_PROJECTS "Cockatrice;Cockatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
# Compile oracle (default on)
option(WITH_ORACLE "build oracle" ON)
if(WITH_ORACLE)
add_subdirectory(oracle)
SET(CPACK_INSTALL_CMAKE_PROJECTS "release/oracle.app;oracle;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
add_subdirectory(oracle)
set(CPACK_INSTALL_CMAKE_PROJECTS "Oracle;Oracle;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
if(WITH_DBCONVERTER)
add_subdirectory(dbconverter)
set(CPACK_INSTALL_CMAKE_PROJECTS "Dbconverter;Dbconverter;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
if(TEST)
include(CTest)
add_subdirectory(tests)
endif()
if(Qt6_FOUND AND Qt6_VERSION_MINOR GREATER_EQUAL 3)
# Qt6.3+ requires project finalization to support translations
qt6_finalize_project()
endif()

44
Dockerfile Normal file
View File

@@ -0,0 +1,44 @@
# -------- Build Stage --------
FROM ubuntu:24.04 AS build
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
file \
g++ \
git \
libmariadb-dev-compat \
libprotobuf-dev \
libqt6sql6-mysql \
qt6-websockets-dev \
protobuf-compiler \
qt6-tools-dev \
qt6-tools-dev-tools
WORKDIR /src
COPY . .
RUN mkdir build && cd build && \
cmake .. -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 -DWITH_DBCONVERTER=0 && \
make -j$(nproc) && \
make install
# -------- Runtime Stage (clean) --------
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y --no-install-recommends \
libprotobuf32t64 \
libqt6sql6-mysql \
libqt6websockets6 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Only copy installed binaries, not source
COPY --from=build /usr/local /usr/local
WORKDIR /home/servatrice
EXPOSE 4748
ENTRYPOINT [ "servatrice", "--log-to-console" ]

2963
Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -304,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
with this program; if not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
@@ -329,8 +328,8 @@ necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
<signature of Moe Ghoul>, 1 April 1989
Moe Ghoul, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may

170
README.md
View File

@@ -1,43 +1,161 @@
<p align='center'><img src=https://cloud.githubusercontent.com/assets/9874850/7516775/b00b8e36-f4d1-11e4-8da4-3df294d01f86.png></p>
---
<p align='center'>
<a href="#cockatrice"><b>Cockatrice</b></a> <b>|</b>
<a href="#download-">Download</a> <b>|</b>
<a href="#related-repositories">Related</a> <b>|</b>
<a href="#community-resources-">Community</a> <b>|</b>
<a href="#contribute">Contribute</a> <b>|</b>
<a href="#build---">Build</a> <b>|</b>
<a href="#run">Run</a>
</p>
---
<br><pre><p align='center'>
<b>To get started with Cockatrice &#8674; [view our webpage](https://cockatrice.github.io/)</b><br>
<b>To get support, or suggest changes to the app &#8674; [file an issue](https://github.com/Cockatrice/Cockatrice/issues) ([How?](https://github.com/Cockatrice/Cockatrice/wiki/How-to-Create-a-GitHub-Ticket-Regarding-Cockatrice))</b>
<b>To help with development &#8674; learn [how to contribute](#contribute-)</b>
</pre><p><br>
# Cockatrice
[![Build Status](https://travis-ci.org/Daenyth/Cockatrice.svg?branch=master)](https://travis-ci.org/Daenyth/Cockatrice)
Cockatrice is an open-source, multiplatform application for playing tabletop card games over a network. The program's server design prevents users from manipulating the game for unfair advantage. The client also provides a single-player mode, which allows users to brew while offline.<br><br>
This project uses <kbd>C++</kbd> and the <kbd>Qt</kbd> libraries.<br>
First work on a webclient with <kbd>Typescript</kbd> was started as well.<br>
Cockatrice is an open-source multiplatform software for playing card games,
such as Magic: The Gathering, over a network. It is fully client-server based
to prevent any kind of cheating, though it supports single-player games without
a network interface as well. Both client and server are written in Qt 4.
# License
# Download [![Cockatrice Eternal Download Count](https://img.shields.io/github/downloads/cockatrice/cockatrice/total.svg)](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice&search=0)
Cockatrice is free software, licensed under the GPLv2; see COPYING for details.
Downloads are available for **stable releases** and the current **beta version** in development.
There is no strict release schedule for either of them.
<br><pre>
Latest <kbd>stable</kbd> release:
[![Download Stable Release](https://img.shields.io/github/release/cockatrice/cockatrice.svg?label=version&colorB=0d7ebf "Download Latest Stable Release")](https://github.com/cockatrice/cockatrice/releases/latest) ![](https://img.shields.io/github/release-date/Cockatrice/Cockatrice.svg?label=released&colorB=0d7ebf "Release Date") [![](https://img.shields.io/github/downloads/cockatrice/cockatrice/latest/total.svg?label=downloads&colorB=0d7ebf "Number of Downloads")](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice&search=0)
</pre><pre>
Latest <kbd>beta</kbd> version:
[![Download Beta Release](https://img.shields.io/github/release/cockatrice/cockatrice/all.svg?label=version&colorB=f37f40 "Download Latest Beta Release")](https://github.com/cockatrice/cockatrice/releases) ![](https://img.shields.io/github/release-date-pre/Cockatrice/Cockatrice.svg?label=released&colorB=f37f40 "Release Date") [![](https://img.shields.io/github/downloads-pre/cockatrice/cockatrice/latest/total.svg?label=downloads&colorB=f37f40 "Number of Downloads")](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice&search=0) [![](https://img.shields.io/github/commits-since/Cockatrice/Cockatrice/latest.svg?label=changes&colorB=f37f40 "Changes over Stable Release")](https://github.com/Cockatrice/Cockatrice/pulls?q=is%3Apr+is%3Aclosed)
<sub><i>While incorporating the latest fixes and features, beta builds may not be stable or contain new bugs!</i></sub>
<sub><b><i>Please report any findings and open new issues when testing them!</i></b></sub>
</pre>
# Building
# Related Repositories
Dependencies:
- [Magic-Token](https://github.com/Cockatrice/Magic-Token): MtG token data to use in Cockatrice
- [Magic-Spoiler](https://github.com/Cockatrice/Magic-Spoiler): Script to generate MtG spoiler data from [MTGJSON](https://github.com/mtgjson/mtgjson) to use in Cockatrice
- [cockatrice.github.io](https://github.com/Cockatrice/cockatrice.github.io): Code of the official webpage of the Cockatrice project
- [Qt](http://qt-project.org/)
- [protobuf](http://code.google.com/p/protobuf/)
- [CMake](http://www.cmake.org/)
The server requires an additional dependency:
# Community Resources [![Discord](https://img.shields.io/discord/314987288398659595?label=Discord&logo=discord&logoColor=white)](https://discord.gg/3Z9yzmA)
- [libgcrypt](http://www.gnu.org/software/libgcrypt/)
Join our [Discord community](https://discord.gg/3Z9yzmA) to connect with other projet contributors (`#dev` channel) or fellow users of the app. Come here to talk about the application, features, or just to hang out.
- [Official Website](https://cockatrice.github.io)
- [Official Wiki](https://github.com/Cockatrice/Cockatrice/wiki)
- [Official Discord](https://discord.gg/3Z9yzmA)
- [reddit r/Cockatrice](https://reddit.com/r/cockatrice)
To compile:
>[!IMPORTANT]
>For support regarding specific servers, please contact that server's admin/mods and use their dedicated communication channels rather than contacting the team building the software.
mkdir build
cd build
cmake ..
make
# Contribute
### Code
To contribute code to the project, please review our [guidelines](https://github.com/Cockatrice/Cockatrice/blob/master/.github/CONTRIBUTING.md) first.<br>
We maintain two tags for contributors to easier find issues to potentially work on:
- [![Good first issue](https://img.shields.io/github/issues/cockatrice/cockatrice/Good%20First%20Issue)](https://github.com/Cockatrice/Cockatrice/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22Good%20first%20issue%22%20)<br>
Issues tagged in this way provide a simple way to get started. They don't require much experience to be worked on.
- [![Help wanted](https://img.shields.io/github/issues/cockatrice/cockatrice/Help%20Wanted)](https://github.com/Cockatrice/Cockatrice/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22Help%20Wanted%22%20)<br>
This tag is used for issues that we are looking for somebody to pick up. Often this is for feature suggestions we support, but don't have the time to work on ourselves.
For both tags, we're willing to provide help to contributors in showing them where and how they can make changes, as well as code reviews for submitted changes.<br>
We'll happily advice on how best to implement a feature, or we can show you where the codebase is doing something similar before you get too far along - put a note on an issue you want to discuss more on!
Cockatrice tries to use the [Google Developer Documentation Style Guide](https://developers.google.com/style/) to ensure consistent documentation. We encourage you to improve the documentation by suggesting edits based on this guide.
<details>
<summary><b>Kudos to our amazing contributors ❤️</b></summary>
<br>
<a href="https://github.com/Cockatrice/Cockatrice/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Cockatrice/Cockatrice" />
</a><br>
<sub><i>Made with <a href="https://contrib.rocks">contrib.rocks</a></i></sub>
</details>
### Translations [![Transifex Project](https://img.shields.io/badge/translate-on%20transifex-brightgreen)](https://explore.transifex.com/cockatrice/cockatrice/)
Cockatrice uses Transifex to manage translations. You can help us bring <kbd>Cockatrice</kbd>, <kbd>Oracle</kbd> and <kbd>Webatrice</kbd> to your language and just adjust single wordings right from within your browser by visiting our [Transifex project page](https://explore.transifex.com/cockatrice/cockatrice/).<br>
Check out our [Translator FAQ](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ) for more information about getting invovled, and join a group of hundreds of others!<br>
# Build [![CI Desktop](https://github.com/Cockatrice/Cockatrice/actions/workflows/desktop-build.yml/badge.svg?branch=master&event=push)](https://github.com/Cockatrice/Cockatrice/actions/workflows/desktop-build.yml?query=branch%3Amaster+event%3Apush) [![CI Docker](https://github.com/Cockatrice/Cockatrice/actions/workflows/docker-release.yml/badge.svg?branch=master&event=push)](https://github.com/Cockatrice/Cockatrice/actions/workflows/docker-release.yml?query=branch%3Amaster+event%3Apush) [![CI Web](https://github.com/Cockatrice/Cockatrice/actions/workflows/web-build.yml/badge.svg?branch=master&event=push)](https://github.com/Cockatrice/Cockatrice/actions/workflows/web-build.yml?query=branch%3Amaster+event%3Apush)
Dependencies: *(for minimum versions search our [CMake file](https://github.com/Cockatrice/Cockatrice/blob/master/CMakeLists.txt))*
- [Qt](https://www.qt.io/developers/)
- [protobuf](https://github.com/protocolbuffers/protobuf)
- [CMake](https://www.cmake.org/)
Oracle can *optionally* use some packages to load compressed card files:
- [xz](https://tukaani.org/xz/)
- [zlib](https://www.zlib.net/)
<br>
**Basic compilation steps:**
```bash
mkdir build
cd build
cmake ..
make
```
You can then
- Create a Cockatrice installation inside the `release` folder:
```bash
make install
```
- Or make an installation package specific to your system:
```bash
make package
```
The following flags can be passed to `cmake`:
>[!NOTE]
>Detailed compiling instructions can be found in the Cockatrice wiki at [Compiling Cockatrice](https://github.com/Cockatrice/Cockatrice/wiki/Compiling-Cockatrice)
- `-DWITH_SERVER=1` build the server
- `-DWITHOUT_CLIENT=1` do not build the client
<br>
# Running
The following flags (with their non-default values) can be passed to `cmake`:
| Flag | Description |
| --- | --- |
| `-DWITH_SERVER=1` | Build <kbd>Servatrice</kbd> server |
| `-DWITH_CLIENT=0` | Don't build <kbd>Cockatrice</kbd> client |
| `-DWITH_ORACLE=0` | Don't build <kbd>Oracle</kbd> card database tool |
| `-DCMAKE_BUILD_TYPE=Debug` | Compile in debug mode<br> Enables extra logging output, debug symbols, and much more verbose compiler warnings |
| `-DWARNING_AS_ERROR=0` | Don't treat compilation warnings as errors in debug mode |
| `-DUPDATE_TRANSLATIONS=1` | Configure `make` to update the translation .ts files for new strings in the source code<br> **Note:** `make clean` will remove the .ts files |
| `-DTEST=1` | Enable regression tests<br> **Note:** `make test` to run tests, *googletest* will be downloaded if not available |
| `-DFORCE_USE_QT5=1` | Skip looking for Qt6 before trying to find Qt5 |
`oracle` fetches card data
`cockatrice` is the game client
`servatrice` is the server
# Run
<kbd>Cockatrice</kbd> is the game client<br>
<kbd>Oracle</kbd> fetches card data<br>
<kbd>Servatrice</kbd> is the server<br>
#### Docker
You can build an image & deploy a <kbd>Servatrice</kbd> (Cockatrice server) container using [Docker](https://www.docker.com/resources/what-container/) and our Dockerfile yourself.<br>
For more details, look into our wiki section on [Setting up Servatrice](https://github.com/Cockatrice/Cockatrice/wiki/Setting-up-Servatrice#using-docker).<br>
You'll also find more hints on our **pre-build image** there, or the **docker-compose** file which will configure and run both a MySQL server and Servatrice.
# License [![GPLv2 License](https://img.shields.io/github/license/Cockatrice/Cockatrice.svg)](https://github.com/Cockatrice/Cockatrice/blob/master/LICENSE)
Cockatrice is free software, licensed under the [GPLv2](https://github.com/Cockatrice/Cockatrice/blob/master/LICENSE).

57
TODO.md
View File

@@ -1,57 +0,0 @@
#TODOs
This is an unordered list of possible todo items for Cockatrice.
Note that "improve" and "write" always also means: "document and comment"
##Docs
* Improve README.md, it is very minimalistic and technical
##Improve packaging:
* Add SSL libraries to Windows build to support https links in oracle.exe
* Improve nsis file git hash extraction, it only works if the build directory is cleared as version_string.cpp does not seem to get updated by git pull/cmake
* Fix prepareMacRelease.sh to use default installation paths for Qt and protobuf
* Add Mac compile+package howto to the documentation
* Create script/... for creating Linux packages (deb, rpm, ebuild, ...) or at least an official tarball/git tags; package maintainers dislike using git snapshots so much that they rather ignore software without stable tarballs.
* Move everything package related into one directory
##Scripts
* Write example init script for servatrice.
##Webinterface
* Write a default cgi webinterface in some language for the servatrice database. Keep it simple and think about SQL-injections and other security risks - especially if you do it in PHP :-P
##Improve usermanual:
* Improve Layout, Text, Screenshots; nearly everything is still quick n dirty copy and paste.
* Add missing TODOs
* Translate the Documentation
* Include faq.txt and shortcuts.txt in usermanual, then remove them.
* Rename the picture filenames to something more meaningful.
* Create an index, lists of tables/figures/...
## Storage
* Find a better place for sets.xml than doc.
##Create developer documentation:
* Create developer manual
* Add comments to code
* Describe which components exist and how they work and interact
* Describe the *.proto files
* Comment and document servatrice.sql
* Document everything!1!!
* Coding guidelines
##Else
* Update SFMT library (http://www.math.sci.hiroshima-u.ac.jp/~m-mat@math.sci.hiroshima-u.ac.jp/MT/SFMT/) in common/sfmt and adapt common/rng_sfmt.cpp
* Prepare to update to Qt5, as Qt4 will die some day. See http://qt-project.org/wiki/Transition_from_Qt_4.x_to_Qt5 for relevant information.
* Move hardcoded URLs (especially from oracle and cockatrice) into a config file.
* Update the oracle to find all MtG extensions by itself, why the need for sets.xml when the oracle could ask the Gatherer or magiccards.info directly for this information?
* Update the oracle with some intelligence or improve it otherwise to deal with changes from the Gatherer.
* Remove cockatrice/resources/mtgforum.png as it is unused. Find other dead files or dead references to websites and files in the program code and documentation.
* Search git log for useful information/problems/bugs/...

View File

@@ -0,0 +1,55 @@
on run argv
set image_name to item 1 of argv
tell application "Finder"
tell disk image_name
-- wait for the image to finish mounting
set open_attempts to 0
repeat while open_attempts < 4
try
open
delay 1
set open_attempts to 5
close
on error errStr number errorNumber
set open_attempts to open_attempts + 1
delay 10
end try
end repeat
delay 5
-- open the image the first time and save a DS_Store with just
-- background and icon setup
open
set current view of container window to icon view
set theViewOptions to the icon view options of container window
set background picture of theViewOptions to file ".background:background.tif"
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 128
delay 5
close
-- next setup the position of the app and Applications symlink
-- plus hide all the window decoration
open
update without registering applications
tell container window
set sidebar width to 0
set statusbar visible to false
set toolbar visible to false
set the bounds to { 400, 100, 1400, 922 }
set position of item "Cockatrice.app" to { 139, 214 }
set position of item "Oracle.app" to { 139, 414 }
set position of item "Servatrice.app" to { 139, 614 }
set position of item "dbconverter.app" to { 1400, 1400 }
set position of item "Applications" to { 861, 414 }
end tell
update without registering applications
delay 5
close
end tell
delay 1
end tell
end run

View File

@@ -0,0 +1,18 @@
# Find the LibExecinfo library - FreeBSD only
find_path(LIBEXECINFO_INCLUDE_DIR execinfo.h)
find_library(LIBEXECINFO_LIBRARY NAMES execinfo)
if(LIBEXECINFO_INCLUDE_DIR AND LIBEXECINFO_LIBRARY)
set(LIBEXECINFO_FOUND TRUE)
endif()
if(LIBEXECINFO_FOUND)
if(NOT LIBEXECINFO_FIND_QUIETLY)
message(STATUS "Found LibExecinfo: ${EXECINFO_LIBRARY}")
endif()
else()
if(LIBEXECINFO_FIND_REQUIRED)
message(FATAL_ERROR "Could not find LibExecinfo")
endif()
endif()

121
cmake/FindQtRuntime.cmake Normal file
View File

@@ -0,0 +1,121 @@
# Find a compatible Qt version
# Inputs: WITH_SERVER, WITH_CLIENT, WITH_ORACLE, WITH_DBCONVERTER, FORCE_USE_QT5
# Optional Input: QT6_DIR -- Hint as to where Qt6 lives on the system
# Optional Input: QT5_DIR -- Hint as to where Qt5 lives on the system
# Output: COCKATRICE_QT_VERSION_NAME -- Example values: Qt5, Qt6
# Output: SERVATRICE_QT_MODULES
# Output: COCKATRICE_QT_MODULES
# Output: ORACLE_QT_MODULES
# Output: DBCONVERTER_QT_MODULES
# Output: TEST_QT_MODULES
set(REQUIRED_QT_COMPONENTS Core)
if(WITH_SERVER)
set(_SERVATRICE_NEEDED Network Sql WebSockets)
endif()
if(WITH_CLIENT)
set(_COCKATRICE_NEEDED
Concurrent
Gui
Multimedia
Network
PrintSupport
Svg
WebSockets
Widgets
Xml
)
endif()
if(WITH_ORACLE)
set(_ORACLE_NEEDED Concurrent Network Svg Widgets)
endif()
if(WITH_DBCONVERTER)
set(_DBCONVERTER_NEEDED Network Widgets)
endif()
if(TEST)
set(_TEST_NEEDED Widgets)
endif()
set(REQUIRED_QT_COMPONENTS ${REQUIRED_QT_COMPONENTS} ${_SERVATRICE_NEEDED} ${_COCKATRICE_NEEDED} ${_ORACLE_NEEDED}
${_DBCONVERTER_NEEDED} ${_TEST_NEEDED}
)
list(REMOVE_DUPLICATES REQUIRED_QT_COMPONENTS)
if(NOT FORCE_USE_QT5)
# Linguist is now a component in Qt6 instead of an external package
find_package(
Qt6 6.2.3
COMPONENTS ${REQUIRED_QT_COMPONENTS} Linguist
QUIET HINTS ${Qt6_DIR}
)
endif()
if(Qt6_FOUND)
set(COCKATRICE_QT_VERSION_NAME Qt6)
list(FIND Qt6LinguistTools_TARGETS Qt6::lrelease QT6_LRELEASE_INDEX)
if(QT6_LRELEASE_INDEX EQUAL -1)
message(WARNING "Qt6 lrelease not found.")
endif()
list(FIND Qt6LinguistTools_TARGETS Qt6::lupdate QT6_LUPDATE_INDEX)
if(QT6_LUPDATE_INDEX EQUAL -1)
message(WARNING "Qt6 lupdate not found.")
endif()
else()
find_package(
Qt5 5.8.0
COMPONENTS ${REQUIRED_QT_COMPONENTS}
QUIET HINTS ${Qt5_DIR}
)
if(Qt5_FOUND)
set(COCKATRICE_QT_VERSION_NAME Qt5)
else()
message(FATAL_ERROR "No suitable version of Qt was found")
endif()
# Qt5 Linguist is in a separate package
find_package(Qt5LinguistTools QUIET)
if(Qt5LinguistTools_FOUND)
if(NOT Qt5_LRELEASE_EXECUTABLE)
message(WARNING "Qt5 lrelease not found.")
endif()
if(NOT Qt5_LUPDATE_EXECUTABLE)
message(WARNING "Qt5 lupdate not found.")
endif()
else()
message(WARNING "Linguist Tools not found, cannot handle translations")
endif()
endif()
if(Qt5_POSITION_INDEPENDENT_CODE OR Qt6_FOUND)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
# Establish Qt Plugins directory & Library directories
get_target_property(QT_LIBRARY_DIR ${COCKATRICE_QT_VERSION_NAME}::Core LOCATION)
get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} DIRECTORY)
if(Qt6_FOUND)
get_filename_component(QT_PLUGINS_DIR "${Qt6Core_DIR}/../../../${QT6_INSTALL_PLUGINS}" ABSOLUTE)
get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/../../.." ABSOLUTE)
if(UNIX AND APPLE)
# Mac needs a bit more help finding all necessary components
list(APPEND QT_LIBRARY_DIR "/usr/local/lib")
endif()
elseif(Qt5_FOUND)
get_filename_component(QT_PLUGINS_DIR "${Qt5Core_DIR}/../../../plugins" ABSOLUTE)
get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE)
endif()
message(DEBUG "QT_PLUGINS_DIR = ${QT_PLUGINS_DIR}")
message(DEBUG "QT_LIBRARY_DIR = ${QT_LIBRARY_DIR}")
# Establish exports
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" SERVATRICE_QT_MODULES "${_SERVATRICE_NEEDED}")
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" COCKATRICE_QT_MODULES "${_COCKATRICE_NEEDED}")
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" ORACLE_QT_MODULES "${_ORACLE_NEEDED}")
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" DB_CONVERTER_QT_MODULES "${_DBCONVERTER_NEEDED}")
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" TEST_QT_MODULES "${_TEST_NEEDED}")
# Core-only export (useful for headless libs)
set(QT_CORE_MODULE "${COCKATRICE_QT_VERSION_NAME}::Core")
message(STATUS "Found Qt ${${COCKATRICE_QT_VERSION_NAME}_VERSION} at: ${${COCKATRICE_QT_VERSION_NAME}_DIR}")

View File

@@ -0,0 +1,42 @@
# Find the MS Visual Studio VC redistributable package
if(WIN32)
set(VCREDISTRUNTIME_FOUND "NO")
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit
set(REDIST_ARCH x64)
else()
set(REDIST_ARCH x86)
endif()
# VS 2017 uses vcredist_ARCH.exe, VS 2022 uses vc_redist.ARCH.exe
set(REDIST_FILE_NAMES vcredist_${REDIST_ARCH}.exe vcredist.${REDIST_ARCH}.exe vc_redist.${REDIST_ARCH}.exe)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
include(InstallRequiredSystemLibraries)
# Check if the list contains minimum one element, to get the path from
list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS libsCount)
if(libsCount GREATER 0)
list(GET CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS 0 _path)
get_filename_component(_path ${_path} DIRECTORY)
get_filename_component(_path ${_path}/../../ ABSOLUTE)
foreach(redist_file ${REDIST_FILE_NAMES})
if(EXISTS "${_path}/${redist_file}")
set(VCREDISTRUNTIME_FOUND "YES")
set(VCREDISTRUNTIME_FILE ${_path}/${redist_file})
break()
endif()
endforeach()
endif()
if(VCREDISTRUNTIME_FOUND)
message(STATUS "Found VCredist ${VCREDISTRUNTIME_FILE}")
else()
message(
WARNING "Could not find VCredist package. It's not required for compiling, but needs to be available at runtime."
)
endif()
endif()

38
cmake/Info.plist Normal file
View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>LSRequiresCarbon</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,2 @@
!define NSIS_SOURCE_PATH "@PROJECT_SOURCE_DIR@"
!define NSIS_IS_64_BIT @TRICE_IS_64_BIT@

331
cmake/NSIS.template.in Normal file
View File

@@ -0,0 +1,331 @@
!include ..\..\..\NSIS.definitions.nsh
Name "@CPACK_PACKAGE_NAME@"
BrandingText "@CPACK_PACKAGE_FILE_NAME@"
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
!define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
RequestExecutionlevel admin
SetCompressor LZMA
Var NormalDestDir
Var PortableDestDir
Var PortableMode
!include LogicLib.nsh
!include FileFunc.nsh
!include MUI2.nsh
!include x64.nsh
!define MUI_ABORTWARNING
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Cockatrice.$\r$\n$\r$\nClick Next to continue."
!define MUI_FINISHPAGE_RUN "$INSTDIR/cockatrice.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Run 'Cockatrice' now"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${NSIS_SOURCE_PATH}\LICENSE"
Page Custom PortableModePageCreate PortableModePageLeave
!define MUI_PAGE_CUSTOMFUNCTION_PRE componentsPagePre
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE English
Function .onInit
${If} ${NSIS_IS_64_BIT} == 1 #NSIS 64bit
${IfNot} ${RunningX64}
MessageBox MB_OK|MB_ICONSTOP "This version of Cockatrice requires a 64-bit Windows system."
Abort
${EndIf}
StrCpy $NormalDestDir "$ProgramFiles64\Cockatrice"
SetRegView 64
${Else} #NSIS 32bit
${If} ${RunningX64}
MessageBox MB_OK|MB_ICONEXCLAMATION \
"You are about to install a 32-bit version of Cockatrice on a 64-bit Windows system.$\n\
We advise you to use the correct 64-bit installer instead to get around potential issues.$\n$\n\
Download from our webpage: https://cockatrice.github.io"
${EndIf}
StrCpy $NormalDestDir "$ProgramFiles\Cockatrice"
${EndIf}
StrCpy $PortableDestDir "$Desktop\CockatricePortable"
${GetParameters} $9
ClearErrors
${GetOptions} $9 "/?" $8
${IfNot} ${Errors}
MessageBox MB_ICONINFORMATION|MB_SETFOREGROUND "\
/PORTABLE : Install in portable mode$\n\
/S : Silent install$\n\
/D=%directory% : Specify destination directory$\n"
Quit
${EndIf}
ClearErrors
${GetOptions} $9 "/PORTABLE" $8
${IfNot} ${Errors}
StrCpy $PortableMode 1
StrCpy $0 $PortableDestDir
${Else}
StrCpy $PortableMode 0
StrCpy $0 $NormalDestDir
${If} ${Silent}
Call RequireAdmin
${EndIf}
${EndIf}
${If} $InstDir == ""
; User did not use /D to specify a directory,
; we need to set a default based on the install mode
StrCpy $InstDir $0
${EndIf}
Call SetModeDestinationFromInstdir
FunctionEnd
Function un.onInit
${If} ${NSIS_IS_64_BIT} == 1
SetRegView 64
${EndIf}
FunctionEnd
Function RequireAdmin
UserInfo::GetAccountType
Pop $8
${If} $8 != "admin"
MessageBox MB_ICONSTOP "You need administrator rights to install Cockatrice"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Abort
${EndIf}
FunctionEnd
Function SetModeDestinationFromInstdir
${If} $PortableMode = 0
StrCpy $NormalDestDir $InstDir
${Else}
StrCpy $PortableDestDir $InstDir
${EndIf}
FunctionEnd
Function PortableModePageCreate
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page we will remember their mode specific directory
!insertmacro MUI_HEADER_TEXT "Install Mode" "Choose how you want to install Cockatrice."
nsDialogs::Create 1018
Pop $0
${NSD_CreateLabel} 0 10u 100% 24u "Select install mode:"
Pop $0
${NSD_CreateRadioButton} 30u 50u -30u 8u "Normal installation"
Pop $1
${NSD_CreateRadioButton} 30u 70u -30u 8u "Portable mode (all files in a single folder)"
Pop $2
${If} $PortableMode = 0
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
${Else}
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
${EndIf}
nsDialogs::Show
FunctionEnd
Function PortableModePageLeave
${NSD_GetState} $1 $0
${If} $0 <> ${BST_UNCHECKED}
StrCpy $PortableMode 0
StrCpy $InstDir $NormalDestDir
Call RequireAdmin
${Else}
StrCpy $PortableMode 1
StrCpy $InstDir $PortableDestDir
${EndIf}
FunctionEnd
Function componentsPagePre
${If} $PortableMode = 0
SetShellVarContext all
# uninstall 32bit version
SetRegView 32
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString"
StrCmp $R0 "" done32
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "A previous version of Cockatrice must be uninstalled before installing the new one." IDOK uninst32
Abort
uninst32:
ClearErrors
ExecWait "$R0"
done32:
# uninstall 64bit version
${If} ${NSIS_IS_64_BIT} == 1
SetRegView 64
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString"
StrCmp $R0 "" done64
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "A previous version of Cockatrice must be uninstalled before installing the new one." IDOK uninst64
Abort
uninst64:
ClearErrors
ExecWait "$R0"
done64:
${EndIf}
${Else}
Abort
${EndIf}
FunctionEnd
Section "Application" SecApplication
SetShellVarContext all
SetOutPath "$INSTDIR"
${If} $PortableMode = 1
${AndIf} ${FileExists} "$INSTDIR\portable.dat"
; upgrade portable mode
RMDir /r "$INSTDIR\plugins"
RMDir /r "$INSTDIR\sounds"
RMDir /r "$INSTDIR\themes"
RMDir /r "$INSTDIR\translations"
Delete "$INSTDIR\uninstall.exe"
Delete "$INSTDIR\cockatrice.exe"
Delete "$INSTDIR\oracle.exe"
Delete "$INSTDIR\dbconverter.exe"
Delete "$INSTDIR\servatrice.exe"
Delete "$INSTDIR\Qt*.dll"
Delete "$INSTDIR\libmysql.dll"
Delete "$INSTDIR\icu*.dll"
Delete "$INSTDIR\libeay32.dll"
Delete "$INSTDIR\ssleay32.dll"
Delete "$INSTDIR\qt.conf"
Delete "$INSTDIR\qdebug.txt"
Delete "$INSTDIR\servatrice.sql"
Delete "$INSTDIR\servatrice.ini.example"
Delete "$INSTDIR\zlib*.dll"
RMDir "$INSTDIR"
${EndIf}
@CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
@CPACK_NSIS_FULL_INSTALL@
${If} $PortableMode = 0
WriteUninstaller "$INSTDIR\uninstall.exe"
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
; Enable Windows User-Mode Dumps
; https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps
WriteRegExpandStr HKLM "Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\cockatrice.exe" "DumpFolder" "%LOCALAPPDATA%\CrashDumps\Cockatrice"
WriteRegDWORD HKLM "Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\cockatrice.exe" "DumpCount" "5"
WriteRegDWORD HKLM "Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\cockatrice.exe" "DumpType" "2"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayIcon" "$INSTDIR\cockatrice.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayName" "Cockatrice"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayVersion" "@CPACK_PACKAGE_VERSION_MAJOR@.@CPACK_PACKAGE_VERSION_MINOR@.@CPACK_PACKAGE_VERSION_PATCH@"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "EstimatedSize" "$0"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "InstallLocation" "$INSTDIR"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "NoModify" "1"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "NoRepair" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "Publisher" "Cockatrice team"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "VersionMajor" "@CPACK_PACKAGE_VERSION_MAJOR@"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "VersionMinor" "@CPACK_PACKAGE_VERSION_MINOR@"
IfFileExists "$INSTDIR\vc_redist.x86.exe" VcRedist86Exists PastVcRedist86Check
VcRedist86Exists:
ExecWait '"$INSTDIR\vc_redist.x86.exe" /passive /norestart'
DetailPrint "Wait to ensure unlock of vc_redist file after installation..."
Sleep 3000
Delete "$INSTDIR\vc_redist.x86.exe"
PastVcRedist86Check:
IfFileExists "$INSTDIR\vc_redist.x64.exe" VcRedist64Exists PastVcRedist64Check
VcRedist64Exists:
ExecWait '"$INSTDIR\vc_redist.x64.exe" /passive /norestart'
DetailPrint "Sleep to ensure unlock of vc_redist file after installation..."
Sleep 3000
Delete "$INSTDIR\vc_redist.x64.exe"
PastVcRedist64Check:
${Else}
; Create the file the application uses to detect portable mode
FileOpen $0 "$INSTDIR\portable.dat" w
FileWrite $0 "PORTABLE"
FileClose $0
${EndIf}
SectionEnd
Section "Start menu item" SecStartMenu
${If} $PortableMode = 0
SetShellVarContext all
createDirectory "$SMPROGRAMS\Cockatrice"
createShortCut "$SMPROGRAMS\Cockatrice\Cockatrice.lnk" "$INSTDIR\cockatrice.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Oracle.lnk" "$INSTDIR\oracle.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Servatrice.lnk" "$INSTDIR\servatrice.exe"
${EndIf}
SectionEnd
Section "un.Application" UnSecApplication
SetShellVarContext all
RMDir /r "$INSTDIR\plugins"
RMDir /r "$INSTDIR\sounds"
RMDir /r "$INSTDIR\themes"
RMDir /r "$INSTDIR\translations"
Delete "$INSTDIR\*.exe"
Delete "$INSTDIR\*.dll"
Delete "$INSTDIR\qt.conf"
Delete "$INSTDIR\qdebug.txt"
Delete "$INSTDIR\servatrice.sql"
Delete "$INSTDIR\servatrice.ini.example"
RMDir "$INSTDIR"
RMDir "$SMPROGRAMS\Cockatrice"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice"
SectionEnd
; unselected because it is /o
Section /o "un.Configurations, decks, cards, pics" UnSecConfiguration
SetShellVarContext current
DeleteRegKey HKCU "Software\Cockatrice"
RMDir /r "$LOCALAPPDATA\Cockatrice"
SectionEnd
LangString DESC_SecApplication ${LANG_ENGLISH} "Cockatrice program files"
LangString DESC_SecStartMenu ${LANG_ENGLISH} "Create start menu items for Cockatrice and Oracle."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecApplication} $(DESC_SecApplication)
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} $(DESC_SecStartMenu)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
LangString DESC_UnSecApplication ${LANG_ENGLISH} "Cockatrice program files and start menu items"
LangString DESC_UnSecConfiguration ${LANG_ENGLISH} "Configurations, decks, card database, pictures"
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${UnSecApplication} $(DESC_UnSecApplication)
!insertmacro MUI_DESCRIPTION_TEXT ${UnSecConfiguration} $(DESC_UnSecConfiguration)
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END

View File

@@ -0,0 +1,27 @@
# This script re-signs all apps after CPack packages them. This is necessary because CPack modifies
# the library references used by Cockatrice to App relative paths, invalidating the code signature.
string(LENGTH "$ENV{MACOS_CERTIFICATE_NAME}" MACOS_CERTIFICATE_NAME_LEN)
if(APPLE AND MACOS_CERTIFICATE_NAME_LEN GREATER 0)
set(APPLICATIONS "cockatrice" "servatrice" "oracle" "dbconverter")
foreach(app_name IN LISTS APPLICATIONS)
set(FULL_APP_PATH "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${app_name}.app")
message(STATUS "Signing Interior Dynamically Loaded Libraries for ${app_name}.app")
execute_process(COMMAND "find" "${FULL_APP_PATH}" "-name" "*.dylib" OUTPUT_VARIABLE INTERIOR_DLLS)
string(REPLACE "\n" ";" INTERIOR_DLLS_LIST ${INTERIOR_DLLS})
foreach(INTERIOR_DLL IN LISTS INTERIOR_DLLS_LIST)
execute_process(
COMMAND "codesign" "--sign" "$ENV{MACOS_CERTIFICATE_NAME}" "--entitlements" "../.ci/macos.entitlements"
"--options" "runtime" "--force" "--deep" "--timestamp" "--verbose" "${INTERIOR_DLL}"
)
endforeach()
message(STATUS "Signing Exterior Applications ${app_name}.app")
execute_process(
COMMAND "codesign" "--sign" "$ENV{MACOS_CERTIFICATE_NAME}" "--entitlements" "../.ci/macos.entitlements"
"--options" "runtime" "--force" "--deep" "--timestamp" "--verbose" "${FULL_APP_PATH}"
)
endforeach()
endif()

View File

@@ -0,0 +1,24 @@
set(VERSION_STRING_CPP "${PROJECT_BINARY_DIR}/version_string.cpp")
set(VERSION_STRING_H "${PROJECT_BINARY_DIR}/version_string.h")
include_directories(${PROJECT_BINARY_DIR})
set(hstring
"extern const char *VERSION_STRING\;
extern const char *VERSION_COMMIT\;
extern const char *VERSION_DATE\;\n"
)
set(cppstring
"const char *VERSION_STRING = \"${PROJECT_VERSION_FRIENDLY}\"\;
const char *VERSION_COMMIT = \"${GIT_COMMIT_ID}\"\;
const char *VERSION_DATE = \"${GIT_COMMIT_DATE_FRIENDLY}\"\;\n"
)
file(WRITE ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${cppstring})
file(WRITE ${PROJECT_BINARY_DIR}/version_string.h.txt ${hstring})
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.h.txt ${VERSION_STRING_H}
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${VERSION_STRING_CPP}
)

BIN
cmake/dmgBackground.tif Normal file

Binary file not shown.

222
cmake/getversion.cmake Normal file
View File

@@ -0,0 +1,222 @@
# HELPER FUNCTIONS
function(get_commit_id)
# get last commit hash
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --abbrev=7 --date=short "--pretty=%h"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_COM_ID
)
if(NOT ${res_var} EQUAL 0)
message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.")
return()
endif()
string(REPLACE "\n" "" GIT_COM_ID "${GIT_COM_ID}")
set(GIT_COMMIT_ID
"${GIT_COM_ID}"
PARENT_SCOPE
)
set(PROJECT_VERSION_LABEL
"custom-${GIT_COM_ID}"
PARENT_SCOPE
)
endfunction()
function(get_commit_date)
# get last commit date
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --date=short "--pretty=%cd"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_COM_DATE
)
if(NOT ${res_var} EQUAL 0)
message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.")
return()
endif()
string(REPLACE "\n" "" GIT_COM_DATE "${GIT_COM_DATE}")
set(GIT_COMMIT_DATE_FRIENDLY
"${GIT_COM_DATE}"
PARENT_SCOPE
)
string(REPLACE "-" "" GIT_COM_DATE "${GIT_COM_DATE}")
set(GIT_COMMIT_DATE
"${GIT_COM_DATE}"
PARENT_SCOPE
)
endfunction()
function(get_tag_name commit)
if(${commit} STREQUAL "unknown")
return()
endif()
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags ${commit}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_TAG
ERROR_VARIABLE GIT_TAG_ERR
)
if((NOT ${res_var} EQUAL 0) OR (${GIT_TAG_ERR} MATCHES "fatal: no tag exactly matches.*"))
message(STATUS "Commit is not a release or prerelease (no git tag found)")
return()
endif()
string(REPLACE "\n" "" GIT_TAG "${GIT_TAG}")
message(STATUS "Commit is a release or prerelease, git tag: ${GIT_TAG}")
# Extract information from tag:
# YYYY-MM-DD-Release-MAJ.MIN.PATCH
# YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X
string(REPLACE "-" ";" GIT_TAG_EXPLODED "${GIT_TAG}")
string(REPLACE "." ";" GIT_TAG_EXPLODED "${GIT_TAG_EXPLODED}")
# Sanity checks: length
list(LENGTH GIT_TAG_EXPLODED GIT_TAG_LISTCOUNT)
if(${GIT_TAG_LISTCOUNT} LESS 7 OR ${GIT_TAG_LISTCOUNT} GREATER 9)
message(WARNING "Invalid tag format, got ${GIT_TAG_LISTCOUNT} tokens")
return()
endif()
# Year
list(GET GIT_TAG_EXPLODED 0 GIT_TAG_YEAR)
if(${GIT_TAG_YEAR} LESS 2017 OR ${GIT_TAG_LISTCOUNT} GREATER 2100)
message(WARNING "Invalid tag year ${GIT_TAG_YEAR}")
return()
endif()
# Month
list(GET GIT_TAG_EXPLODED 1 GIT_TAG_MONTH)
if(${GIT_TAG_MONTH} LESS 1 OR ${GIT_TAG_MONTH} GREATER 12)
message(WARNING "Invalid tag month ${GIT_TAG_MONTH}")
return()
endif()
# Day
list(GET GIT_TAG_EXPLODED 2 GIT_TAG_DAY)
if(${GIT_TAG_DAY} LESS 1 OR ${GIT_TAG_DAY} GREATER 31)
message(WARNING "Invalid tag day ${GIT_TAG_DAY}")
return()
endif()
# Type
list(GET GIT_TAG_EXPLODED 3 GIT_TAG_TYPE)
if(NOT (${GIT_TAG_TYPE} STREQUAL "Release" OR ${GIT_TAG_TYPE} STREQUAL "Development"))
message(WARNING "Invalid tag type ${GIT_TAG_TYPE}")
return()
endif()
# Major
list(GET GIT_TAG_EXPLODED 4 GIT_TAG_MAJOR)
if(${GIT_TAG_MAJOR} LESS 0 OR ${GIT_TAG_MAJOR} GREATER 99)
message(WARNING "Invalid tag major version ${GIT_TAG_MAJOR}")
return()
endif()
# Minor
list(GET GIT_TAG_EXPLODED 5 GIT_TAG_MINOR)
if(${GIT_TAG_MINOR} LESS 0 OR ${GIT_TAG_MINOR} GREATER 99)
message(WARNING "Invalid tag minor version ${GIT_TAG_MINOR}")
return()
endif()
# Patch
list(GET GIT_TAG_EXPLODED 6 GIT_TAG_PATCH)
if(${GIT_TAG_PATCH} LESS 0 OR ${GIT_TAG_PATCH} GREATER 99)
message(WARNING "Invalid tag patch version ${GIT_TAG_PATCH}")
return()
endif()
# Label
# 7 = Stable release
# 8 = Dev release, first beta so only "beta" attached
# 9 = Dev release, subsequent beta so "beta.N" attached (N>=2)
if(${GIT_TAG_LISTCOUNT} EQUAL 8)
list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL)
elseif(${GIT_TAG_LISTCOUNT} EQUAL 9)
list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL)
list(GET GIT_TAG_EXPLODED 8 GIT_TAG_LABEL_NUM)
set(GIT_TAG_LABEL ${GIT_TAG_LABEL} ${GIT_TAG_LABEL_NUM})
string(REPLACE ";" "." GIT_TAG_LABEL "${GIT_TAG_LABEL}")
else()
set(GIT_TAG_LABEL "")
endif()
# Override hardcoded version with the informations from the tag
set(PROJECT_VERSION_MAJOR
${GIT_TAG_MAJOR}
PARENT_SCOPE
)
set(PROJECT_VERSION_MINOR
${GIT_TAG_MINOR}
PARENT_SCOPE
)
set(PROJECT_VERSION_PATCH
${GIT_TAG_PATCH}
PARENT_SCOPE
)
set(PROJECT_VERSION_LABEL
${GIT_TAG_LABEL}
PARENT_SCOPE
)
if(${GIT_TAG_TYPE} STREQUAL "Development")
set(PROJECT_VERSION_LABEL
${GIT_TAG_LABEL}
PARENT_SCOPE
)
elseif(${GIT_TAG_TYPE} STREQUAL "Release")
set(PROJECT_VERSION_LABEL
""
PARENT_SCOPE
)
# set release name from env var
set(PROJECT_VERSION_RELEASENAME
"${GIT_TAG_RELEASENAME}"
PARENT_SCOPE
)
endif()
endfunction()
# START OF MAIN
# fallback defaults
set(GIT_COMMIT_ID "unknown")
set(GIT_COMMIT_DATE "")
set(GIT_COMMIT_DATE_FRIENDLY "")
set(PROJECT_VERSION_LABEL "")
set(PROJECT_VERSION_RELEASENAME "")
find_package(Git)
if(GIT_FOUND)
get_commit_id()
get_commit_date()
get_tag_name(${GIT_COMMIT_ID})
else()
message(WARNING "Git not found. Build will not contain git revision info.")
endif()
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
if(PROJECT_VERSION_LABEL)
set(PROJECT_VERSION "${PROJECT_VERSION}-${PROJECT_VERSION_LABEL}")
endif()
set(PROJECT_VERSION_FRIENDLY "${PROJECT_VERSION} (${GIT_COMMIT_DATE_FRIENDLY})")
# Format: <program name>[-ReleaseName]-MAJ.MIN.PATCH[-prerelease_label]
set(PROJECT_VERSION_FILENAME "${PROJECT_NAME}")
if(PROJECT_VERSION_RELEASENAME)
set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION_RELEASENAME}")
endif()
set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION}")
message(STATUS "Project version: ${PROJECT_VERSION}")
message(STATUS "Friendly project version: ${PROJECT_VERSION_FRIENDLY}")
message(STATUS "Project version filename: ${PROJECT_VERSION_FILENAME}")

View File

@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.2)
project(gtest-download LANGUAGES NONE)
include(ExternalProject)
ExternalProject_Add(googletest
URL https://github.com/google/googletest/archive/release-1.11.0.zip
URL_HASH SHA1=9ffb7b5923f4a8fcdabf2f42c6540cce299f44c0
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

BIN
cmake/headerimage.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

3
cmake/launch-c.in Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_C_COMPILER}" "$@"

3
cmake/launch-cxx.in Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@"

BIN
cmake/leftimage.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -2,216 +2,583 @@
#
# provides the cockatrice binary
PROJECT(cockatrice)
project(Cockatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
SET(cockatrice_SOURCES
src/abstractcounter.cpp
src/counter_general.cpp
src/dlg_creategame.cpp
src/dlg_filter_games.cpp
src/dlg_connect.cpp
src/dlg_create_token.cpp
src/dlg_edit_tokens.cpp
src/abstractclient.cpp
src/remoteclient.cpp
src/main.cpp
src/window_main.cpp
src/gamesmodel.cpp
src/player.cpp
src/playertarget.cpp
src/cardzone.cpp
src/selectzone.cpp
src/cardlist.cpp
src/abstractcarditem.cpp
src/carditem.cpp
src/tablezone.cpp
src/handzone.cpp
src/handcounter.cpp
src/carddatabase.cpp
src/keysignals.cpp
src/gameview.cpp
src/gameselector.cpp
src/decklistmodel.cpp
src/deck_loader.cpp
src/dlg_load_deck_from_clipboard.cpp
src/dlg_load_remote_deck.cpp
src/cardinfowidget.cpp
src/cardframe.cpp
src/cardinfopicture.cpp
src/cardinfotext.cpp
src/filterbuilder.cpp
src/cardfilter.cpp
src/filtertreemodel.cpp
src/filtertree.cpp
src/messagelogwidget.cpp
src/zoneviewzone.cpp
src/zoneviewwidget.cpp
src/pilezone.cpp
src/stackzone.cpp
src/carddragitem.cpp
src/carddatabasemodel.cpp
src/setsmodel.cpp
src/window_sets.cpp
src/abstractgraphicsitem.cpp
src/abstractcarddragitem.cpp
src/dlg_settings.cpp
src/dlg_cardsearch.cpp
src/phasestoolbar.cpp
src/gamescene.cpp
src/arrowitem.cpp
src/arrowtarget.cpp
src/tab.cpp
src/tab_server.cpp
src/tab_room.cpp
src/tab_message.cpp
src/tab_game.cpp
src/tab_deck_storage.cpp
src/tab_replays.cpp
src/tab_supervisor.cpp
src/tab_admin.cpp
src/tab_userlists.cpp
src/tab_deck_editor.cpp
src/replay_timeline_widget.cpp
src/deckstats_interface.cpp
src/chatview.cpp
src/userlist.cpp
src/userinfobox.cpp
src/user_context_menu.cpp
src/remotedecklist_treewidget.cpp
src/remotereplaylist_treewidget.cpp
src/deckview.cpp
src/playerlistwidget.cpp
src/pixmapgenerator.cpp
src/settingscache.cpp
src/localserver.cpp
src/localserverinterface.cpp
src/localclient.cpp
src/priceupdater.cpp
src/qt-json/json.cpp
src/soundengine.cpp
src/pending_command.cpp
${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp
set(cockatrice_SOURCES
${VERSION_STRING_CPP}
# sort by alphabetical order, so that there is no debate about where to add new sources to the list
src/client/network/update/client/update_downloader.cpp
src/client/network/interfaces/deck_stats_interface.cpp
src/client/network/interfaces/tapped_out_interface.cpp
src/client/network/parsers/deck_link_to_api_transformer.cpp
src/client/network/update/client/client_update_checker.cpp
src/client/network/update/client/release_channel.cpp
src/client/network/update/card_spoiler/spoiler_background_updater.cpp
src/client/sound_engine.cpp
src/client/settings/cache_settings.cpp
src/client/settings/card_counter_settings.cpp
src/client/settings/shortcut_treeview.cpp
src/client/settings/shortcuts_settings.cpp
src/interface/deck_loader/deck_loader.cpp
src/interface/widgets/dialogs/dlg_connect.cpp
src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp
src/interface/widgets/dialogs/dlg_create_game.cpp
src/interface/widgets/dialogs/dlg_default_tags_editor.cpp
src/interface/widgets/dialogs/dlg_edit_avatar.cpp
src/interface/widgets/dialogs/dlg_edit_password.cpp
src/interface/widgets/dialogs/dlg_edit_tokens.cpp
src/interface/widgets/dialogs/dlg_edit_user.cpp
src/interface/widgets/dialogs/dlg_filter_games.cpp
src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp
src/interface/widgets/dialogs/dlg_forgot_password_request.cpp
src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp
src/interface/widgets/dialogs/dlg_load_deck.cpp
src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp
src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp
src/interface/widgets/dialogs/dlg_load_remote_deck.cpp
src/interface/widgets/dialogs/dlg_manage_sets.cpp
src/interface/widgets/dialogs/dlg_register.cpp
src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp
src/interface/widgets/dialogs/dlg_settings.cpp
src/interface/widgets/dialogs/dlg_startup_card_check.cpp
src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp
src/interface/widgets/dialogs/dlg_update.cpp
src/interface/widgets/dialogs/dlg_view_log.cpp
src/interface/widgets/dialogs/tip_of_the_day.cpp
src/filters/deck_filter_string.cpp
src/filters/filter_builder.cpp
src/filters/filter_tree_model.cpp
src/filters/syntax_help.cpp
src/game/abstract_game.cpp
src/game/board/abstract_card_drag_item.cpp
src/game/board/abstract_card_item.cpp
src/game/board/abstract_counter.cpp
src/game/board/arrow_item.cpp
src/game/board/arrow_target.cpp
src/game/board/card_drag_item.cpp
src/game/board/card_item.cpp
src/game/board/card_list.cpp
src/game/board/counter_general.cpp
src/game/board/translate_counter_name.cpp
src/game/deckview/deck_view.cpp
src/game/deckview/deck_view_container.cpp
src/game/deckview/tabbed_deck_view_container.cpp
src/game/dialogs/dlg_create_token.cpp
src/game/dialogs/dlg_move_top_cards_until.cpp
src/game/dialogs/dlg_roll_dice.cpp
src/game/game.cpp
src/game/game_event_handler.cpp
src/game/game_meta_info.cpp
src/game/game_scene.cpp
src/game/game_state.cpp
src/game/game_view.cpp
src/game/hand_counter.cpp
src/game/log/message_log_widget.cpp
src/game/phase.cpp
src/game/phases_toolbar.cpp
src/game/player/menu/card_menu.cpp
src/game/player/menu/custom_zone_menu.cpp
src/game/player/menu/grave_menu.cpp
src/game/player/menu/hand_menu.cpp
src/game/player/menu/library_menu.cpp
src/game/player/menu/move_menu.cpp
src/game/player/menu/player_menu.cpp
src/game/player/menu/pt_menu.cpp
src/game/player/menu/rfg_menu.cpp
src/game/player/menu/say_menu.cpp
src/game/player/menu/sideboard_menu.cpp
src/game/player/menu/utility_menu.cpp
src/game/player/player.cpp
src/game/player/player_actions.cpp
src/game/player/player_area.cpp
src/game/player/player_event_handler.cpp
src/game/player/player_graphics_item.cpp
src/game/player/player_info.cpp
src/game/player/player_list_widget.cpp
src/game/player/player_manager.cpp
src/game/player/player_target.cpp
src/game/replay.cpp
src/game/zones/card_zone.cpp
src/game/zones/hand_zone.cpp
src/game/zones/logic/card_zone_logic.cpp
src/game/zones/logic/hand_zone_logic.cpp
src/game/zones/logic/pile_zone_logic.cpp
src/game/zones/logic/stack_zone_logic.cpp
src/game/zones/logic/table_zone_logic.cpp
src/game/zones/logic/view_zone_logic.cpp
src/game/zones/pile_zone.cpp
src/game/zones/select_zone.cpp
src/game/zones/stack_zone.cpp
src/game/zones/table_zone.cpp
src/game/zones/view_zone.cpp
src/game/zones/view_zone_widget.cpp
src/game_graphics/board/abstract_graphics_item.cpp
src/interface/card_picture_loader/card_picture_loader.cpp
src/interface/card_picture_loader/card_picture_loader_local.cpp
src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp
src/interface/card_picture_loader/card_picture_loader_status_bar.cpp
src/interface/card_picture_loader/card_picture_loader_worker.cpp
src/interface/card_picture_loader/card_picture_loader_worker_work.cpp
src/interface/card_picture_loader/card_picture_to_load.cpp
src/interface/layouts/flow_layout.cpp
src/interface/layouts/overlap_layout.cpp
src/interface/widgets/utility/line_edit_completer.cpp
src/interface/pixel_map_generator.cpp
src/interface/theme_manager.cpp
src/interface/widgets/cards/additional_info/color_identity_widget.cpp
src/interface/widgets/cards/additional_info/mana_cost_widget.cpp
src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp
src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp
src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp
src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp
src/interface/widgets/cards/card_info_display_widget.cpp
src/interface/widgets/cards/card_info_frame_widget.cpp
src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp
src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp
src/interface/widgets/cards/card_info_picture_widget.cpp
src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp
src/interface/widgets/cards/card_info_text_widget.cpp
src/interface/widgets/cards/card_size_widget.cpp
src/interface/widgets/cards/deck_card_zone_display_widget.cpp
src/interface/widgets/cards/deck_preview_card_picture_widget.cpp
src/interface/widgets/deck_analytics/deck_analytics_widget.cpp
src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp
src/interface/widgets/deck_analytics/mana_base_widget.cpp
src/interface/widgets/deck_analytics/mana_curve_widget.cpp
src/interface/widgets/deck_analytics/mana_devotion_widget.cpp
src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp
src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp
src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp
src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp
src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp
src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp
src/interface/widgets/deck_editor/deck_list_style_proxy.cpp
src/interface/widgets/general/background_sources.cpp
src/interface/widgets/general/display/background_plate_widget.cpp
src/interface/widgets/general/display/banner_widget.cpp
src/interface/widgets/general/display/bar_widget.cpp
src/interface/widgets/general/display/color_bar.cpp
src/interface/widgets/general/display/dynamic_font_size_label.cpp
src/interface/widgets/general/display/dynamic_font_size_push_button.cpp
src/interface/widgets/general/display/labeled_input.cpp
src/interface/widgets/general/display/percent_bar_widget.cpp
src/interface/widgets/general/display/shadow_background_label.cpp
src/interface/widgets/general/home_styled_button.cpp
src/interface/widgets/general/home_widget.cpp
src/interface/widgets/general/layout_containers/flow_widget.cpp
src/interface/widgets/general/layout_containers/overlap_control_widget.cpp
src/interface/widgets/general/layout_containers/overlap_widget.cpp
src/interface/widgets/menus/deck_editor_menu.cpp
src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp
src/interface/widgets/printing_selector/card_amount_widget.cpp
src/interface/widgets/printing_selector/printing_selector.cpp
src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp
src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp
src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp
src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp
src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp
src/interface/widgets/quick_settings/settings_button_widget.cpp
src/interface/widgets/quick_settings/settings_popup_widget.cpp
src/interface/widgets/replay/replay_manager.cpp
src/interface/widgets/replay/replay_timeline_widget.cpp
src/interface/widgets/server/chat_view/chat_view.cpp
src/interface/widgets/server/game_selector.cpp
src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp
src/interface/widgets/server/games_model.cpp
src/interface/widgets/server/handle_public_servers.cpp
src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp
src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp
src/interface/widgets/server/user/user_context_menu.cpp
src/interface/widgets/server/user/user_info_box.cpp
src/interface/widgets/server/user/user_info_connection.cpp
src/interface/widgets/server/user/user_list_manager.cpp
src/interface/widgets/server/user/user_list_widget.cpp
src/interface/widgets/utility/custom_line_edit.cpp
src/interface/widgets/utility/get_text_with_max.cpp
src/interface/widgets/utility/sequence_edit.cpp
src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp
src/interface/widgets/visual_database_display/visual_database_display_widget.cpp
src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp
src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp
src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp
src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp
src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
src/interface/window_main.cpp
src/main.cpp
src/interface/widgets/tabs/abstract_tab_deck_editor.cpp
src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp
src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp
src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp
src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp
src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp
src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp
src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp
src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp
src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp
src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp
src/interface/widgets/tabs/tab.cpp
src/interface/widgets/tabs/tab_account.cpp
src/interface/widgets/tabs/tab_admin.cpp
src/interface/widgets/tabs/tab_deck_editor.cpp
src/interface/widgets/tabs/tab_deck_storage.cpp
src/interface/widgets/tabs/tab_game.cpp
src/interface/widgets/tabs/tab_home.cpp
src/interface/widgets/tabs/tab_logs.cpp
src/interface/widgets/tabs/tab_message.cpp
src/interface/widgets/tabs/tab_replays.cpp
src/interface/widgets/tabs/tab_room.cpp
src/interface/widgets/tabs/tab_server.cpp
src/interface/widgets/tabs/tab_supervisor.cpp
src/interface/widgets/tabs/tab_visual_database_display.cpp
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp
src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp
src/interface/key_signals.cpp
src/interface/logger.cpp
)
if (UNIX AND NOT APPLE)
set_source_files_properties(src/main.cpp PROPERTIES COMPILE_FLAGS -DTRANSLATION_PATH=\\"${CMAKE_INSTALL_PREFIX}/share/cockatrice/translations\\")
endif (UNIX AND NOT APPLE)
add_subdirectory(sounds)
add_subdirectory(themes)
configure_file(
${CMAKE_SOURCE_DIR}/cockatrice/resources/config/qtlogging.ini ${CMAKE_BINARY_DIR}/cockatrice/qtlogging.ini COPYONLY
)
set(cockatrice_RESOURCES cockatrice.qrc)
set(cockatrice_TS
# translations/cockatrice_cs.ts
translations/cockatrice_de.ts
translations/cockatrice_en.ts
translations/cockatrice_es.ts
# translations/cockatrice_fr.ts
translations/cockatrice_it.ts
translations/cockatrice_ja.ts
# translations/cockatrice_pl.ts
# translations/cockatrice_pt-br.ts
translations/cockatrice_pt.ts
# translations/cockatrice_ru.ts
# translations/cockatrice_sk.ts
translations/cockatrice_sv.ts
# translations/cockatrice_zh_CN.ts
)
if(UPDATE_TRANSLATIONS)
# Cockatrice main sources
file(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp
${CMAKE_SOURCE_DIR}/cockatrice/src/*.h
)
# All libcockatrice_* libraries (recursively)
file(GLOB_RECURSE translate_lib_SRCS ${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.cpp
${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.h
)
# Combine all sources for translation
set(translate_SRCS ${translate_cockatrice_SRCS} ${translate_lib_SRCS})
set(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice_en@source.ts")
else()
file(GLOB cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
endif()
if(WIN32)
set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc)
set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc)
endif(WIN32)
if(APPLE)
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
ENDIF(APPLE)
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources
)
set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
endif(APPLE)
if (NOT QT_QTMULTIMEDIA_FOUND)
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
FIND_PACKAGE(QtMobility REQUIRED)
endif (NOT QT_QTMULTIMEDIA_FOUND)
SET(QT_USE_QTNETWORK TRUE)
SET(QT_USE_QTMULTIMEDIA TRUE)
SET(QT_USE_QTXML TRUE)
SET(QT_USE_QTSVG TRUE)
# Declare path variables
set(ICONDIR share/icons CACHE STRING "icon dir")
set(DESKTOPDIR share/applications CACHE STRING "desktop file destination")
# Let cmake chew Qt4's translations and resource files
# Note: header files are MOC-ed automatically by cmake
QT4_ADD_TRANSLATION(cockatrice_QM ${cockatrice_TS})
QT4_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
# Include directories
INCLUDE(${QT_USE_FILE})
INCLUDE_DIRECTORIES(../common)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/common)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
INCLUDE_DIRECTORIES(${QT_MOBILITY_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR})
# Build cockatrice binary and link it
ADD_EXECUTABLE(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} ${cockatrice_MOC_SRCS})
TARGET_LINK_LIBRARIES(cockatrice cockatrice_common ${QT_QTMAIN_LIBRARY} ${QT_LIBRARIES} ${QT_MOBILITY_MULTIMEDIAKIT_LIBRARY})
if(MSVC)
set_target_properties(cockatrice PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
endif(MSVC)
if(UNIX)
if(APPLE)
INSTALL(TARGETS cockatrice BUNDLE DESTINATION ./)
INSTALL(FILES ${cockatrice_QM} DESTINATION ./cockatrice.app/Contents/Resources/translations)
else()
# Assume linux
INSTALL(TARGETS cockatrice RUNTIME DESTINATION bin/)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR})
INSTALL(FILES ${cockatrice_QM} DESTINATION share/cockatrice/translations)
endif()
elseif(WIN32)
INSTALL(TARGETS cockatrice RUNTIME DESTINATION ./)
INSTALL(FILES ${cockatrice_QM} DESTINATION ./translations)
if(Qt6_FOUND)
qt6_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
elseif(Qt5_FOUND)
qt5_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.h
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake
# Declare path variables
set(ICONDIR
share/icons
CACHE STRING "icon dir"
)
set(DESKTOPDIR
share/applications
CACHE STRING "desktop file destination"
)
if(APPLE)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir cockatrice.app/Contents/Plugins)
set(qtconf_dest_dir cockatrice.app/Contents/Resources)
set(COCKATRICE_MAC_QM_INSTALL_DIR "cockatrice.app/Contents/Resources/translations")
set(COCKATRICE_UNIX_QM_INSTALL_DIR "share/cockatrice/translations")
set(COCKATRICE_WIN32_QM_INSTALL_DIR "translations")
# note: no codecs in qt5
# note: phonon_backend => mediaservice
# note: needs platform on osx
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime
FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/.*_debug\\.dylib")
if(Qt6_FOUND)
qt6_add_executable(
cockatrice
WIN32
MACOSX_BUNDLE
${cockatrice_SOURCES}
${cockatrice_RESOURCES_RCC}
${cockatrice_MOC_SRCS}
MANUAL_FINALIZATION
)
elseif(Qt5_FOUND)
# Qt5 Translations need to be linked at executable creation time
if(Qt5LinguistTools_FOUND)
if(UPDATE_TRANSLATIONS)
qt5_create_translation(cockatrice_QM ${translate_SRCS} ${cockatrice_TS})
else()
install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime
FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/[^_]*\\.dylib")
qt5_add_translation(cockatrice_QM ${cockatrice_TS})
endif()
endif()
add_executable(
cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_MOC_SRCS} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC}
${cockatrice_SOURCES}
)
if(UNIX)
if(APPLE)
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR})
else()
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR})
endif()
elseif(WIN32)
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR})
endif()
endif()
install(CODE "
if(Qt5_FOUND)
target_link_libraries(
cockatrice
libcockatrice_card
libcockatrice_deck_list
libcockatrice_filters
libcockatrice_utility
libcockatrice_network
libcockatrice_models
libcockatrice_rng
libcockatrice_settings
${COCKATRICE_QT_MODULES}
)
else()
target_link_libraries(
cockatrice
PUBLIC libcockatrice_card
libcockatrice_deck_list
libcockatrice_filters
libcockatrice_utility
libcockatrice_network
libcockatrice_models
libcockatrice_rng
libcockatrice_settings
${COCKATRICE_QT_MODULES}
)
endif()
if(UNIX)
if(APPLE)
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist)
install(TARGETS cockatrice BUNDLE DESTINATION ./)
else()
# Assume linux
install(TARGETS cockatrice RUNTIME DESTINATION bin/)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR})
endif()
elseif(WIN32)
install(TARGETS cockatrice RUNTIME DESTINATION ./)
endif()
if(APPLE)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir cockatrice.app/Contents/Plugins)
set(qtconf_dest_dir cockatrice.app/Contents/Resources)
# Qt plugins: audio (Qt5), iconengines, imageformats, multimedia (Qt6), platforms, printsupport (Qt5), styles, tls (Qt6)
install(
DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir}
COMPONENT Runtime
FILES_MATCHING
PATTERN "*.dSYM" EXCLUDE
PATTERN "*_debug.dylib" EXCLUDE
PATTERN "audio/*.dylib"
PATTERN "iconengines/*.dylib"
PATTERN "imageformats/*.dylib"
PATTERN "multimedia/*.dylib"
PATTERN "platforms/*.dylib"
PATTERN "printsupport/*.dylib"
PATTERN "styles/*.dylib"
PATTERN "tls/*.dylib"
)
install(
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
DESTINATION ${qtconf_dest_dir}/
FILES_MATCHING
PATTERN "*.ini"
)
install(
CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
Plugins = Plugins
Translations = Resources/translations
Data = Resources\")
" COMPONENT Runtime)
"
COMPONENT Runtime
)
install(CODE "
install(
CODE "
file(GLOB_RECURSE QTPLUGINS
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
" COMPONENT Runtime)
"
COMPONENT Runtime
)
endif()
if(WIN32)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir Plugins)
set(qtconf_dest_dir .)
install(
DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/"
DESTINATION ./
FILES_MATCHING
PATTERN "*.dll"
)
install(
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
DESTINATION ./
FILES_MATCHING
PATTERN "*.ini"
)
# Qt plugins: audio (Qt5), iconengines, imageformats, multimedia (Qt6) platforms, printsupport (Qt5), styles, tls (Qt6)
install(
DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir}
COMPONENT Runtime
FILES_MATCHING
PATTERN "audio/qtaudio_wasapi.dll"
PATTERN "audio/qtaudio_windows.dll"
PATTERN "iconengines/qsvgicon.dll"
PATTERN "imageformats/*.dll"
PATTERN "mediaservice/dsengine.dll"
PATTERN "mediaservice/wmfengine.dll"
PATTERN "multimedia/*.dll"
PATTERN "platforms/qdirect2d.dll"
PATTERN "platforms/qminimal.dll"
PATTERN "platforms/qoffscreen.dll"
PATTERN "platforms/qwindows.dll"
PATTERN "printsupport/windowsprintersupport.dll"
PATTERN "styles/qcertonlybackend.dll"
PATTERN "styles/qopensslbackend.dll"
PATTERN "styles/qschannelbackend.dll"
PATTERN "styles/qwindowsvistastyle.dll"
PATTERN "tls/qcertonlybackend.dll"
PATTERN "tls/qopensslbackend.dll"
PATTERN "tls/qschannelbackend.dll"
)
install(
CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
Plugins = Plugins
Translations = Resources/translations
Data = Resources\")
"
COMPONENT Runtime
)
install(
CODE "
file(GLOB_RECURSE QTPLUGINS
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
"
COMPONENT Runtime
)
if(OPENSSL_FOUND)
install(FILES ${OPENSSL_INCLUDE_DIRS} DESTINATION ./)
endif()
endif()
if(Qt6_FOUND AND Qt6LinguistTools_FOUND)
#Qt6 Translations happen after the executable is built up
if(UPDATE_TRANSLATIONS)
qt6_add_translations(
cockatrice
TS_FILES
${cockatrice_TS}
SOURCES
${translate_SRCS}
QM_FILES_OUTPUT_VARIABLE
cockatrice_QM
)
else()
qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM)
endif()
if(UNIX)
if(APPLE)
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR})
else()
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR})
endif()
elseif(WIN32)
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR})
endif()
endif()
if(Qt6_FOUND)
qt6_finalize_target(cockatrice)
endif()

View File

@@ -1,158 +0,0 @@
INCLUDE(FindQt4)
set(MOBILITY_CONFIG_MKSPECS_FILE "")
IF(EXISTS "${QT_MKSPECS_DIR}/features/mobilityconfig.prf")
set(MOBILITY_CONFIG_MKSPECS_FILE "${QT_MKSPECS_DIR}/features/mobilityconfig.prf")
ELSEIF(EXISTS "${QT_MKSPECS_DIR}/features/mobility.prf")
set(MOBILITY_CONFIG_MKSPECS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/mobilityconfig.prf")
ENDIF()
macro(export_component component)
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_FILE_CONTENTS)
STRING(TOLOWER ${component} _COMPONENT)
IF(${MOBILITY_FILE_CONTENTS} MATCHES "MOBILITY_CONFIG=.*${_COMPONENT}.*")
STRING(TOUPPER ${component} _COMPONENT)
SET(QT_MOBILITY_${_COMPONENT}_FOUND 1)
SET(QT_MOBILITY_${_COMPONENT}_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/Qt${component})
SET(QT_MOBILITY_${_COMPONENT}_LIBRARY Qt${component})
ENDIF()
ENDIF()
endmacro()
set(VERSION_INFO "")
set(FEATURE_FILE_PREFIX "${QT_MKSPECS_DIR}/features/mobility")
if(DEFINED MOBILITY_VERSION)
if(MOBILITY_VERSION STREQUAL "1.1" AND EXISTS "${FEATURE_FILE_PREFIX}11.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}11.prf")
set(VERSION_INFO "1.1")
elseif(MOBILITY_VERSION STREQUAL "1.2" AND EXISTS "${FEATURE_FILE_PREFIX}12.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}12.prf")
set(VERSION_INFO "1.2")
elseif(MOBILITY_VERSION STREQUAL "default" AND EXISTS "${FEATURE_FILE_PREFIX}.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}.prf")
set(VERSION_INFO "system's default")
else()
message(STATUS "Couldn't find QtMobility version: ${MOBILITY_VERSION}")
endif()
endif()
if(NOT DEFINED MOBILITY_PRF_FILE)
if(EXISTS "${FEATURE_FILE_PREFIX}.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}.prf")
set(VERSION_INFO "system's default")
elseif(EXISTS "${FEATURE_FILE_PREFIX}12.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}12.prf")
set(VERSION_INFO "1.2")
elseif(EXISTS "${FEATURE_FILE_PREFIX}11.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}11.prf")
set(VERSION_INFO "1.1")
else()
message(FATAL_ERROR "Couldn't find any version of QtMobility.")
endif()
endif()
message(STATUS "Using QtMobility version: ${VERSION_INFO}")
IF(DEFINED MOBILITY_PRF_FILE)
FILE(READ ${MOBILITY_PRF_FILE} MOBILITY_FILE_CONTENTS)
STRING(REGEX MATCH "MOBILITY_PREFIX=([^\n]+)" QT_MOBILITY_PREFIX "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_PREFIX ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_INCLUDE=([^\n]+)" QT_MOBILITY_INCLUDE_DIR "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_INCLUDE_DIR ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_LIB=([^\n]+)" "\\1" QT_MOBILITY_LIBRARY "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_LIBRARY_DIR ${CMAKE_MATCH_1})
#VERSION
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_CONFIG_FILE_CONTENTS)
STRING(REGEX MATCH "MOBILITY_VERSION = ([^\n]+)" QT_MOBILITY_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_MAJOR_VERSION = ([^\n]+)" QT_MOBILITY_MAJOR_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_MAJOR_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_MINOR_VERSION = ([^\n]+)" QT_MOBILITY_MINOR_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_MINOR_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_PATCH_VERSION = ([^\n]+)" QT_MOBILITY_PATCH_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_PATCH_VERSION ${CMAKE_MATCH_1})
ELSE()
SET(QT_MOBILITY_VERSION 1.0.0)
SET(QT_MOBILITY_MAJOR_VERSION 1)
SET(QT_MOBILITY_MINOR_VERSION 0)
SET(QT_MOBILITY_PATCH_VERSION 0)
ENDIF()
SET(QT_MOBILITY_PARENT_INCLUDE_DIR ${QT_MOBILITY_INCLUDE_DIR})
SET(QT_MOBILITY_INCLUDE_DIR ${QT_MOBILITY_INCLUDE_DIR}/QtMobility)
IF(QtMobility_FIND_VERSION_EXACT)
IF(QT_MOBILITY_VERSION VERSION_EQUAL QtMobility_FIND_VERSION)
SET(QT_MOBILITY_FOUND TRUE)
ELSE()
SET(QT_MOBILITY_FOUND FALSE)
IF(QT_MOBILITY_VERSION VERSION_LESS QtMobility_FIND_VERSION)
SET(QT_MOBILITY_TOO_OLD TRUE)
ELSE()
SET(QT_MOBILITY_TOO_NEW TRUE)
ENDIF()
ENDIF()
ELSE()
IF(QT_MOBILITY_VERSION VERSION_LESS QtMobility_FIND_VERSION)
SET(QT_MOBILITY_FOUND FALSE)
SET(QT_MOBILITY_TOO_OLD TRUE)
ELSE()
SET(QT_MOBILITY_FOUND TRUE)
ENDIF()
ENDIF()
ELSE()
SET(QT_MOBILITY_FOUND NOTFOUND)
SET(QT_MOBILITY_PREFIX NOTFOUND)
SET(QT_MOBILITY_INCLUDE NOTFOUND)
SET(QT_MOBILITY_LIB NOTFOUND)
ENDIF()
IF(NOT QT_MOBILITY_FOUND)
if(QT_MOBILITY_TOO_OLD)
MESSAGE(FATAL_ERROR "The installed QtMobility version ${QT_MOBILITY_VERSION} it too old, version ${QtMobility_FIND_VERSION} is required.")
ELSEIF(QT_MOBILITY_TOO_NEW)
MESSAGE(FATAL_ERROR "The installed QtMobility version ${QT_MOBILITY_VERSION} it too new, version ${QtMobility_FIND_VERSION} is required.")
ELSE()
MESSAGE(FATAL_ERROR "QtMobility not found.")
ENDIF()
ELSE()
export_component(Bearer)
export_component(Feedback)
export_component(Gallery)
export_component(PublishSubscribe)
export_component(Location)
export_component(Organizer)
export_component(ServiceFramework)
export_component(SystemInfo)
export_component(Contacts)
export_component(Messaging)
export_component(Versit)
export_component(Sensors)
# VersitOrganizer
if(${QT_MOBILITY_CONTACTS_FOUND} AND ${QT_MOBILITY_VERSIT_FOUND})
SET(QT_MOBILITY_VERSITORGANIZER_FOUND 1)
SET(QT_MOBILITY_VERSITORGANIZER_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/QtVersitOrganizer)
SET(QT_MOBILITY_VERSITORGANIZER_LIBRARY QtVersitOrganizer)
endif()
# MultimediaKit - it's just 'multimedia' in the .prf file.
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_FILE_CONTENTS)
IF(${MOBILITY_FILE_CONTENTS} MATCHES "MOBILITY_CONFIG=.*multimedia.*")
SET(QT_MOBILITY_MULTIMEDIAKIT_FOUND 1)
SET(QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/QtMultimediaKit)
SET(QT_MOBILITY_MULTIMEDIAKIT_LIBRARY QtMultimediaKit)
ENDIF()
ENDIF()
ENDIF()

View File

@@ -1,131 +1,391 @@
<RCC>
<qresource prefix="/" >
<file alias="back.svg" >resources/back.svg</file>
<file>resources/lock.svg</file>
<file>resources/icon_delete.svg</file>
<file>resources/icon_tab_changed.svg</file>
<file>resources/icon_config_general.svg</file>
<file>resources/icon_config_appearance.svg</file>
<file>resources/icon_config_interface.svg</file>
<file>resources/icon_config_messages.svg</file>
<file>resources/icon_config_deckeditor.svg</file>
<file>resources/phases/icon_phase_untap.svg</file>
<file>resources/phases/icon_phase_upkeep.svg</file>
<file>resources/phases/icon_phase_draw.svg</file>
<file>resources/phases/icon_phase_main1.svg</file>
<file>resources/phases/icon_phase_combat_start.svg</file>
<file>resources/phases/icon_phase_combat_attackers.svg</file>
<file>resources/phases/icon_phase_combat_blockers.svg</file>
<file>resources/phases/icon_phase_combat_damage.svg</file>
<file>resources/phases/icon_phase_combat_end.svg</file>
<file>resources/phases/icon_phase_main2.svg</file>
<file>resources/phases/icon_phase_cleanup.svg</file>
<file>resources/phases/icon_phase_nextturn.svg</file>
<file>resources/icon_settings.svg</file>
<file>resources/hand.svg</file>
<file>resources/pencil.svg</file>
<file>resources/icon_search.svg</file>
<file>resources/icon_clearsearch.svg</file>
<file>resources/icon_update.png</file>
<file>resources/icon_view.svg</file>
<qresource prefix="/">
<file>resources/cardback.svg</file>
<file>resources/cockatrice.svg</file>
<file>resources/hand.svg</file>
<file>resources/hr.jpg</file>
<file alias="resources/appicon.svg">resources/cockatrice.svg</file>
<file>resources/add_to_sideboard.svg</file>
<file>resources/decrement.svg</file>
<file>resources/increment.svg</file>
<file>resources/remove_row.svg</file>
<file>resources/arrow_left_green.svg</file>
<file>resources/arrow_right_green.svg</file>
<file>resources/icon_ready_start.svg</file>
<file>resources/icon_not_ready_start.svg</file>
<file>resources/icon_conceded.svg</file>
<file>resources/icon_player.svg</file>
<file>resources/icon_spectator.svg</file>
<file>resources/replay_start.svg</file>
<file>resources/replay_stop.svg</file>
<file>resources/replay_fastforward.svg</file>
<file>resources/replay_rewind.svg</file>
<file>resources/replay_toend.svg</file>
<file>resources/replay_tostart.svg</file>
<file>resources/replay_pause.svg</file>
<file>resources/genders/male.svg</file>
<file>resources/genders/female.svg</file>
<file>resources/genders/unknown.svg</file>
<file>resources/icons/arrow_bottom_green.svg</file>
<file>resources/icons/arrow_down_green.svg</file>
<file>resources/icons/arrow_history.svg</file>
<file>resources/icons/arrow_left_green.svg</file>
<file>resources/icons/arrow_redo.svg</file>
<file>resources/icons/arrow_right_blue.svg</file>
<file>resources/icons/arrow_right_green.svg</file>
<file>resources/icons/arrow_top_green.svg</file>
<file>resources/icons/arrow_up_green.svg</file>
<file>resources/icons/arrow_undo.svg</file>
<file>resources/icons/clearsearch.svg</file>
<file>resources/icons/cogwheel.svg</file>
<file>resources/icons/conceded.svg</file>
<file>resources/icons/decrement.svg</file>
<file>resources/icons/delete.svg</file>
<file>resources/icons/dropdown_collapsed.svg</file>
<file>resources/icons/dropdown_expanded.svg</file>
<file>resources/icons/forgot_password.svg</file>
<file>resources/icons/increment.svg</file>
<file>resources/icons/info.svg</file>
<file>resources/icons/lock.svg</file>
<file>resources/icons/not_ready_start.svg</file>
<file>resources/icons/pencil.svg</file>
<file>resources/icons/pin.svg</file>
<file>resources/icons/player.svg</file>
<file>resources/icons/ready_start.svg</file>
<file>resources/icons/reload.svg</file>
<file>resources/icons/remove_row.svg</file>
<file>resources/icons/rename.svg</file>
<file>resources/icons/scales.svg</file>
<file>resources/icons/search.svg</file>
<file>resources/icons/settings.svg</file>
<file>resources/icons/share.svg</file>
<file>resources/icons/spectator.svg</file>
<file>resources/icons/swap.svg</file>
<file>resources/icons/sync.svg</file>
<file>resources/icons/tab_changed.svg</file>
<file>resources/icons/update.png</file>
<file>resources/icons/view.svg</file>
<file>resources/countries/ar.svg</file>
<file>resources/countries/at.svg</file>
<file>resources/countries/au.svg</file>
<file>resources/countries/be.svg</file>
<file>resources/countries/br.svg</file>
<file>resources/countries/by.svg</file>
<file>resources/countries/ca.svg</file>
<file>resources/countries/cl.svg</file>
<file>resources/countries/cz.svg</file>
<file>resources/countries/ch.svg</file>
<file>resources/countries/cn.svg</file>
<file>resources/countries/de.svg</file>
<file>resources/countries/dk.svg</file>
<file>resources/countries/do.svg</file>
<file>resources/countries/es.svg</file>
<file>resources/countries/fi.svg</file>
<file>resources/countries/fr.svg</file>
<file>resources/countries/ge.svg</file>
<file>resources/countries/gr.svg</file>
<file>resources/countries/gt.svg</file>
<file>resources/countries/hr.svg</file>
<file>resources/countries/hu.svg</file>
<file>resources/countries/ie.svg</file>
<file>resources/countries/il.svg</file>
<file>resources/countries/it.svg</file>
<file>resources/countries/jp.svg</file>
<file>resources/countries/lt.svg</file>
<file>resources/countries/lu.svg</file>
<file>resources/countries/lv.svg</file>
<file>resources/countries/mx.svg</file>
<file>resources/countries/my.svg</file>
<file>resources/countries/nl.svg</file>
<file>resources/countries/no.svg</file>
<file>resources/countries/nz.svg</file>
<file>resources/countries/pe.svg</file>
<file>resources/countries/ph.svg</file>
<file>resources/countries/pl.svg</file>
<file>resources/countries/pt.svg</file>
<file>resources/countries/ro.svg</file>
<file>resources/countries/ru.svg</file>
<file>resources/countries/se.svg</file>
<file>resources/countries/sg.svg</file>
<file>resources/countries/si.svg</file>
<file>resources/countries/sk.svg</file>
<file>resources/countries/tr.svg</file>
<file>resources/countries/ua.svg</file>
<file>resources/countries/uk.svg</file>
<file>resources/countries/us.svg</file>
<file>resources/countries/ve.svg</file>
<file>resources/countries/za.svg</file>
<file>resources/icons/mana/B.svg</file>
<file>resources/icons/mana/G.svg</file>
<file>resources/icons/mana/R.svg</file>
<file>resources/icons/mana/U.svg</file>
<file>resources/icons/mana/W.svg</file>
<file>resources/counters/w.svg</file>
<file>resources/counters/w_highlight.svg</file>
<file>resources/counters/u.svg</file>
<file>resources/counters/u_highlight.svg</file>
<file>resources/counters/b.svg</file>
<file>resources/counters/b_highlight.svg</file>
<file>resources/counters/r.svg</file>
<file>resources/counters/r_highlight.svg</file>
<file>resources/counters/g.svg</file>
<file>resources/counters/g_highlight.svg</file>
<file>resources/counters/general.svg</file>
<file>resources/counters/general_highlight.svg</file>
<file>resources/backgrounds/home.png</file>
<file>resources/userlevels/normal.svg</file>
<file>resources/userlevels/registered.svg</file>
<file>resources/userlevels/moderator.svg</file>
<file>resources/userlevels/admin.svg</file>
<file>resources/config/general.svg</file>
<file>resources/config/appearance.svg</file>
<file>resources/config/interface.svg</file>
<file>resources/config/messages.svg</file>
<file>resources/config/deckeditor.svg</file>
<file>resources/config/shorcuts.svg</file>
<file>resources/config/sound.svg</file>
<file>resources/config/debug.ini</file>
<file>resources/config/qtlogging.ini</file>
<file>resources/news/exclamation_mark.svg</file>
<file>resources/news/question_mark.svg</file>
<file>resources/counters/w.svg</file>
<file>resources/counters/w_highlight.svg</file>
<file>resources/counters/u.svg</file>
<file>resources/counters/u_highlight.svg</file>
<file>resources/counters/b.svg</file>
<file>resources/counters/b_highlight.svg</file>
<file>resources/counters/r.svg</file>
<file>resources/counters/r_highlight.svg</file>
<file>resources/counters/g.svg</file>
<file>resources/counters/g_highlight.svg</file>
<file>resources/counters/storm.svg</file>
<file>resources/counters/storm_highlight.svg</file>
<file>resources/counters/general.svg</file>
<file>resources/counters/general_highlight.svg</file>
<file>resources/mtgforum.png</file>
<file>resources/countries/ad.svg</file>
<file>resources/countries/ae.svg</file>
<file>resources/countries/af.svg</file>
<file>resources/countries/ag.svg</file>
<file>resources/countries/ai.svg</file>
<file>resources/countries/al.svg</file>
<file>resources/countries/am.svg</file>
<file>resources/countries/ao.svg</file>
<file>resources/countries/aq.svg</file>
<file>resources/countries/ar.svg</file>
<file>resources/countries/as.svg</file>
<file>resources/countries/at.svg</file>
<file>resources/countries/au.svg</file>
<file>resources/countries/aw.svg</file>
<file>resources/countries/ax.svg</file>
<file>resources/countries/az.svg</file>
<file>resources/countries/ba.svg</file>
<file>resources/countries/bb.svg</file>
<file>resources/countries/bd.svg</file>
<file>resources/countries/be.svg</file>
<file>resources/countries/bf.svg</file>
<file>resources/countries/bg.svg</file>
<file>resources/countries/bh.svg</file>
<file>resources/countries/bi.svg</file>
<file>resources/countries/bj.svg</file>
<file>resources/countries/bl.svg</file>
<file>resources/countries/bm.svg</file>
<file>resources/countries/bn.svg</file>
<file>resources/countries/bo.svg</file>
<file>resources/countries/bq.svg</file>
<file>resources/countries/br.svg</file>
<file>resources/countries/bs.svg</file>
<file>resources/countries/bt.svg</file>
<file>resources/countries/bv.svg</file>
<file>resources/countries/bw.svg</file>
<file>resources/countries/by.svg</file>
<file>resources/countries/bz.svg</file>
<file>resources/countries/ca.svg</file>
<file>resources/countries/cc.svg</file>
<file>resources/countries/cd.svg</file>
<file>resources/countries/cf.svg</file>
<file>resources/countries/cg.svg</file>
<file>resources/countries/ch.svg</file>
<file>resources/countries/ci.svg</file>
<file>resources/countries/ck.svg</file>
<file>resources/countries/cl.svg</file>
<file>resources/countries/cm.svg</file>
<file>resources/countries/cn.svg</file>
<file>resources/countries/co.svg</file>
<file>resources/countries/cr.svg</file>
<file>resources/countries/cu.svg</file>
<file>resources/countries/cv.svg</file>
<file>resources/countries/cw.svg</file>
<file>resources/countries/cx.svg</file>
<file>resources/countries/cy.svg</file>
<file>resources/countries/cz.svg</file>
<file>resources/countries/de.svg</file>
<file>resources/countries/dj.svg</file>
<file>resources/countries/dk.svg</file>
<file>resources/countries/dm.svg</file>
<file>resources/countries/do.svg</file>
<file>resources/countries/dz.svg</file>
<file>resources/countries/ec.svg</file>
<file>resources/countries/ee.svg</file>
<file>resources/countries/eg.svg</file>
<file>resources/countries/eh.svg</file>
<file>resources/countries/er.svg</file>
<file>resources/countries/es.svg</file>
<file>resources/countries/et.svg</file>
<file>resources/countries/eu.svg</file>
<file>resources/countries/fi.svg</file>
<file>resources/countries/fj.svg</file>
<file>resources/countries/fk.svg</file>
<file>resources/countries/fm.svg</file>
<file>resources/countries/fo.svg</file>
<file>resources/countries/fr.svg</file>
<file>resources/countries/ga.svg</file>
<file>resources/countries/gb.svg</file>
<file>resources/countries/gd.svg</file>
<file>resources/countries/ge.svg</file>
<file>resources/countries/gf.svg</file>
<file>resources/countries/gg.svg</file>
<file>resources/countries/gh.svg</file>
<file>resources/countries/gi.svg</file>
<file>resources/countries/gl.svg</file>
<file>resources/countries/gm.svg</file>
<file>resources/countries/gn.svg</file>
<file>resources/countries/gp.svg</file>
<file>resources/countries/gq.svg</file>
<file>resources/countries/gr.svg</file>
<file>resources/countries/gs.svg</file>
<file>resources/countries/gt.svg</file>
<file>resources/countries/gu.svg</file>
<file>resources/countries/gw.svg</file>
<file>resources/countries/gy.svg</file>
<file>resources/countries/hk.svg</file>
<file>resources/countries/hm.svg</file>
<file>resources/countries/hn.svg</file>
<file>resources/countries/hr.svg</file>
<file>resources/countries/ht.svg</file>
<file>resources/countries/hu.svg</file>
<file>resources/countries/id.svg</file>
<file>resources/countries/ie.svg</file>
<file>resources/countries/il.svg</file>
<file>resources/countries/im.svg</file>
<file>resources/countries/in.svg</file>
<file>resources/countries/io.svg</file>
<file>resources/countries/iq.svg</file>
<file>resources/countries/ir.svg</file>
<file>resources/countries/is.svg</file>
<file>resources/countries/it.svg</file>
<file>resources/countries/je.svg</file>
<file>resources/countries/jm.svg</file>
<file>resources/countries/jo.svg</file>
<file>resources/countries/jp.svg</file>
<file>resources/countries/ke.svg</file>
<file>resources/countries/kg.svg</file>
<file>resources/countries/kh.svg</file>
<file>resources/countries/ki.svg</file>
<file>resources/countries/km.svg</file>
<file>resources/countries/kn.svg</file>
<file>resources/countries/kp.svg</file>
<file>resources/countries/kr.svg</file>
<file>resources/countries/kw.svg</file>
<file>resources/countries/ky.svg</file>
<file>resources/countries/kz.svg</file>
<file>resources/countries/la.svg</file>
<file>resources/countries/lb.svg</file>
<file>resources/countries/lc.svg</file>
<file>resources/countries/li.svg</file>
<file>resources/countries/lk.svg</file>
<file>resources/countries/lr.svg</file>
<file>resources/countries/ls.svg</file>
<file>resources/countries/lt.svg</file>
<file>resources/countries/lu.svg</file>
<file>resources/countries/lv.svg</file>
<file>resources/countries/ly.svg</file>
<file>resources/countries/ma.svg</file>
<file>resources/countries/mc.svg</file>
<file>resources/countries/md.svg</file>
<file>resources/countries/me.svg</file>
<file>resources/countries/mf.svg</file>
<file>resources/countries/mg.svg</file>
<file>resources/countries/mh.svg</file>
<file>resources/countries/mk.svg</file>
<file>resources/countries/ml.svg</file>
<file>resources/countries/mm.svg</file>
<file>resources/countries/mn.svg</file>
<file>resources/countries/mo.svg</file>
<file>resources/countries/mp.svg</file>
<file>resources/countries/mq.svg</file>
<file>resources/countries/mr.svg</file>
<file>resources/countries/ms.svg</file>
<file>resources/countries/mt.svg</file>
<file>resources/countries/mu.svg</file>
<file>resources/countries/mv.svg</file>
<file>resources/countries/mw.svg</file>
<file>resources/countries/mx.svg</file>
<file>resources/countries/my.svg</file>
<file>resources/countries/mz.svg</file>
<file>resources/countries/na.svg</file>
<file>resources/countries/nc.svg</file>
<file>resources/countries/ne.svg</file>
<file>resources/countries/nf.svg</file>
<file>resources/countries/ng.svg</file>
<file>resources/countries/ni.svg</file>
<file>resources/countries/nl.svg</file>
<file>resources/countries/no.svg</file>
<file>resources/countries/np.svg</file>
<file>resources/countries/nr.svg</file>
<file>resources/countries/nu.svg</file>
<file>resources/countries/nz.svg</file>
<file>resources/countries/om.svg</file>
<file>resources/countries/pa.svg</file>
<file>resources/countries/pe.svg</file>
<file>resources/countries/pf.svg</file>
<file>resources/countries/pg.svg</file>
<file>resources/countries/ph.svg</file>
<file>resources/countries/pk.svg</file>
<file>resources/countries/pl.svg</file>
<file>resources/countries/pm.svg</file>
<file>resources/countries/pn.svg</file>
<file>resources/countries/pr.svg</file>
<file>resources/countries/ps.svg</file>
<file>resources/countries/pt.svg</file>
<file>resources/countries/pw.svg</file>
<file>resources/countries/py.svg</file>
<file>resources/countries/qa.svg</file>
<file>resources/countries/re.svg</file>
<file>resources/countries/ro.svg</file>
<file>resources/countries/rs.svg</file>
<file>resources/countries/ru.svg</file>
<file>resources/countries/rw.svg</file>
<file>resources/countries/sa.svg</file>
<file>resources/countries/sb.svg</file>
<file>resources/countries/sc.svg</file>
<file>resources/countries/sd.svg</file>
<file>resources/countries/se.svg</file>
<file>resources/countries/sg.svg</file>
<file>resources/countries/sh.svg</file>
<file>resources/countries/si.svg</file>
<file>resources/countries/sj.svg</file>
<file>resources/countries/sk.svg</file>
<file>resources/countries/sl.svg</file>
<file>resources/countries/sm.svg</file>
<file>resources/countries/sn.svg</file>
<file>resources/countries/so.svg</file>
<file>resources/countries/sr.svg</file>
<file>resources/countries/ss.svg</file>
<file>resources/countries/st.svg</file>
<file>resources/countries/sv.svg</file>
<file>resources/countries/sx.svg</file>
<file>resources/countries/sy.svg</file>
<file>resources/countries/sz.svg</file>
<file>resources/countries/tc.svg</file>
<file>resources/countries/td.svg</file>
<file>resources/countries/tf.svg</file>
<file>resources/countries/tg.svg</file>
<file>resources/countries/th.svg</file>
<file>resources/countries/tj.svg</file>
<file>resources/countries/tk.svg</file>
<file>resources/countries/tl.svg</file>
<file>resources/countries/tm.svg</file>
<file>resources/countries/tn.svg</file>
<file>resources/countries/to.svg</file>
<file>resources/countries/tr.svg</file>
<file>resources/countries/tt.svg</file>
<file>resources/countries/tv.svg</file>
<file>resources/countries/tw.svg</file>
<file>resources/countries/tz.svg</file>
<file>resources/countries/ua.svg</file>
<file>resources/countries/ug.svg</file>
<file>resources/countries/um.svg</file>
<file>resources/countries/us.svg</file>
<file>resources/countries/uy.svg</file>
<file>resources/countries/uz.svg</file>
<file>resources/countries/va.svg</file>
<file>resources/countries/vc.svg</file>
<file>resources/countries/ve.svg</file>
<file>resources/countries/vg.svg</file>
<file>resources/countries/vi.svg</file>
<file>resources/countries/vn.svg</file>
<file>resources/countries/vu.svg</file>
<file>resources/countries/wf.svg</file>
<file>resources/countries/ws.svg</file>
<file>resources/countries/xk.svg</file>
<file>resources/countries/ye.svg</file>
<file>resources/countries/yt.svg</file>
<file>resources/countries/za.svg</file>
<file>resources/countries/zm.svg</file>
<file>resources/countries/zw.svg</file>
<file>resources/phases/untap.svg</file>
<file>resources/phases/upkeep.svg</file>
<file>resources/phases/draw.svg</file>
<file>resources/phases/main1.svg</file>
<file>resources/phases/combat_start.svg</file>
<file>resources/phases/combat_attackers.svg</file>
<file>resources/phases/combat_blockers.svg</file>
<file>resources/phases/combat_damage.svg</file>
<file>resources/phases/combat_end.svg</file>
<file>resources/phases/main2.svg</file>
<file>resources/phases/cleanup.svg</file>
<file>resources/phases/nextturn.svg</file>
<file>resources/replay/start.svg</file>
<file>resources/replay/fastforward.svg</file>
<file>resources/replay/pause.svg</file>
<file>resources/usericons/pawn_single.svg</file>
<file>resources/usericons/pawn_double.svg</file>
<file>resources/usericons/pawn_donator_single.svg</file>
<file>resources/usericons/pawn_donator_double.svg</file>
<file>resources/usericons/pawn_judge_single.svg</file>
<file>resources/usericons/pawn_judge_double.svg</file>
<file>resources/usericons/pawn_vip_single.svg</file>
<file>resources/usericons/pawn_vip_double.svg</file>
<file>resources/usericons/star_single.svg</file>
<file>resources/usericons/star_double.svg</file>
<!-- ADD TIP OF THE DAY IMAGES HERE -->
<file>resources/tips/images/accounts_tab.png</file>
<file>resources/tips/images/add_card.png</file>
<file>resources/tips/images/arrows.png</file>
<file>resources/tips/images/card_select.png</file>
<file>resources/tips/images/cockatrice_register.png</file>
<file>resources/tips/images/cockatrice_wiki.png</file>
<file>resources/tips/images/coin_flip.png</file>
<file>resources/tips/images/counter_expression.png</file>
<file>resources/tips/images/discord.png</file>
<file>resources/tips/images/edhrec.png</file>
<file>resources/tips/images/expand_card_view.png</file>
<file>resources/tips/images/face_down.png</file>
<file>resources/tips/images/filter_games.png</file>
<file>resources/tips/images/github_logo.png</file>
<file>resources/tips/images/highlight_cards.png</file>
<file>resources/tips/images/pawns.png</file>
<file>resources/tips/images/setpt.png</file>
<file>resources/tips/images/shortcuts.png</file>
<file>resources/tips/images/syntax_help.png</file>
<file>resources/tips/images/themes.png</file>
<file>resources/tips/images/tip_of_the_day.png</file>
<file>resources/tips/images/token.png</file>
<file>resources/tips/images/updates.png</file>
<file>resources/tips/images/visual_deck_tags.png</file>
<file>resources/tips/tips_of_the_day.xml</file>
<file>resources/help/search.md</file>
<file>resources/help/deck_search.md</file>
</qresource>
</RCC>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

After

Width:  |  Height:  |  Size: 177 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

View File

@@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="240"
height="340"
id="svg2"
sodipodi:version="0.32"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
inkscape:export-xdpi="90"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="cardback.svg"
inkscape:export-ydpi="90"
inkscape:export-filename="cardback.svg"
xmlns="http://www.w3.org/2000/svg">
<defs
id="defs4">
<linearGradient
id="linearGradient5266">
<stop
style="stop-color:#806600;stop-opacity:1;"
offset="0"
id="stop5268" />
<stop
style="stop-color:#382d00;stop-opacity:1;"
offset="1"
id="stop5270" />
</linearGradient>
<linearGradient
id="linearGradient3009">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3011" />
<stop
style="stop-color:#a0872c;stop-opacity:1;"
offset="1"
id="stop3013" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3009"
id="linearGradient3015"
x1="10.096291"
y1="329.42294"
x2="229.81081"
y2="12.591727"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5266"
id="linearGradient5272"
x1="165.86763"
y1="23.649557"
x2="12.980947"
y2="327.98059"
gradientUnits="userSpaceOnUse" />
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8"
xlink:href="#linearGradient4766-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-2"
xlink:href="#linearGradient4766-8-6"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-6">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-0" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-4" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-6"
xlink:href="#linearGradient4766-8-0"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-0">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-3" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-6" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-8"
xlink:href="#linearGradient4766-8-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-8">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-1" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-2" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4707622"
inkscape:cx="-159.7811"
inkscape:cy="160.80098"
inkscape:document-units="px"
inkscape:current-layer="layer5"
showgrid="false"
inkscape:window-width="841"
inkscape:window-height="1386"
inkscape:window-x="1707"
inkscape:window-y="42"
inkscape:window-maximized="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"/>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="boarder"
inkscape:groupmode="layer"
id="layer1"
style="display:inline"
sodipodi:insensitive="true">
<rect
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-opacity:0"
id="rect3004"
width="240"
height="340"
x="0"
y="0.57232106"
rx="10"
ry="10" />
<rect
style="fill:url(#linearGradient3015);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00535154;stroke-opacity:0;display:inline"
id="rect3007"
width="220.67607"
height="318.77353"
x="10.096291"
y="11.610939" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="inlay"
style="display:inline"
sodipodi:insensitive="true">
<rect
style="fill:url(#linearGradient5272);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.99697781;stroke-opacity:0"
id="rect3017"
width="214.61836"
height="313.6048"
x="13.201575"
y="14.135432" />
<rect
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#000000;stroke-opacity:1"
id="rect5293"
width="208.1759"
height="306.25415"
x="16.346376"
y="17.399473" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="dots"
sodipodi:insensitive="true"
style="display:inline">
<circle
style="display:inline;fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5297-7"
transform="translate(118.51147,240.79097)"
cx="-96.635925"
cy="76.534889"
r="2.8846545"/>
<ellipse
style="display:inline;fill:url(#linearGradient5324-8);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5299-6-1"
transform="matrix(-1.3207348,0.77962891,-1.166227,-1.9837166,33.337282,413.41782)"
cx="-24.925219"
cy="38.493507"
rx="1.4573514"
ry="1.1418424"/>
<circle
style="display:inline;fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5297-7-9"
transform="translate(315.44172,241.93405)"
cx="-96.635925"
cy="76.534889"
r="2.8846545"/>
<ellipse
style="display:inline;fill:url(#linearGradient5324-8-2);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5299-6-1-4"
transform="matrix(-1.3207348,0.77962891,-1.166227,-1.9837166,230.26753,414.56091)"
cx="-24.925219"
cy="38.493507"
rx="1.4573514"
ry="1.1418424"/>
<circle
style="display:inline;fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5297-7-2"
transform="translate(315.09322,-53.911687)"
cx="-96.635925"
cy="76.534889"
r="2.8846545"/>
<ellipse
style="display:inline;fill:url(#linearGradient5324-8-6);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5299-6-1-45"
transform="matrix(-1.3207348,0.77962891,-1.166227,-1.9837166,229.91903,118.71517)"
cx="-24.925219"
cy="38.493507"
rx="1.4573514"
ry="1.1418424"/>
<circle
style="display:inline;fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5297-7-1"
transform="translate(118.42648,-53.571727)"
cx="-96.635925"
cy="76.534889"
r="2.8846545"/>
<ellipse
style="display:inline;fill:url(#linearGradient5324-8-8);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5299-6-1-49"
transform="matrix(-1.3207348,0.77962891,-1.166227,-1.9837166,33.252292,119.05512)"
cx="-24.925219"
cy="38.493507"
rx="1.4573514"
ry="1.1418424"/>
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="oval"
sodipodi:insensitive="true"
style="display:inline">
<ellipse
style="fill:#2c9be5;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1"
id="path5461"
transform="matrix(1.4485349,0,0,1,242.31301,14.423272)"
cx="-84.135757"
cy="155.38211"
rx="69.231705"
ry="144.23273"/>
<ellipse
style="fill:#c87137;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5461-8"
transform="matrix(1.4086499,0,0,0.98333097,239.30154,17.255274)"
cx="-84.135757"
cy="155.38211"
rx="69.231705"
ry="144.23273"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -13,9 +14,10 @@
height="64px"
id="svg4576"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_erscheinung.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
inkscape:version="0.48.5 r10040"
sodipodi:docname="icon_config_appearance.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs4578">
<linearGradient
@@ -56,7 +58,7 @@
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
gradientTransform="matrix(1.0202704,0,0,1.0264038,-0.559587,-1.1272497)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
@@ -66,7 +68,7 @@
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)" />
gradientTransform="matrix(1.0489761,0,0,1.0704672,-1.576142,-1.64517)" />
</defs>
<sodipodi:namedview
id="base"
@@ -85,7 +87,8 @@
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata4581">
<rdf:RDF>
@@ -102,24 +105,24 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="opacity:1;fill:url(#linearGradient6470);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1"
style="fill:url(#linearGradient6470);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02333248;stroke-opacity:1"
id="rect6462"
width="61.636364"
height="61.090908"
x="1.2727273"
y="1.6363637"
ry="5.6363635" />
width="62.885757"
height="62.703938"
x="0.73893893"
y="0.73893905"
ry="5.7851849" />
<rect
style="opacity:1;fill:url(#linearGradient6488);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.02156401;stroke-opacity:1"
style="fill:url(#linearGradient6488);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect6472"
width="59.796619"
height="13.251164"
x="2.1926003"
y="2.7380548"
ry="4.7325583" />
width="61.00872"
height="13.601046"
x="1.6774582"
y="1.8697189"
ry="4.8575158" />
<g
id="g6424"
transform="matrix(1.1618497,0,0,1.1618497,-15.879137,-45.468207)">
transform="matrix(1.1854009,0,0,1.1925269,-16.760601,-47.609371)">
<path
sodipodi:type="arc"
style="opacity:0.4;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000"
@@ -128,7 +131,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="translate(22.909092,39.272728)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -141,7 +144,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.9848078,0.1736482,-0.1736482,0.9848078,27.885457,36.574419)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -154,7 +157,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.9396926,0.3420201,-0.3420201,0.9396926,33.25478,34.78124)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -167,7 +170,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.8660254,0.5,-0.5,0.8660254,38.85391,33.947676)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -180,7 +183,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.7660444,0.6427876,-0.6427876,0.7660444,44.512724,34.099055)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -193,7 +196,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.6427876,0.7660444,-0.7660444,0.6427876,50.059282,35.230777)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -206,7 +209,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.5,0.8660254,-0.8660254,0.5,55.325053,37.308456)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -219,7 +222,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.3420201,0.9396926,-0.9396926,0.3420201,60.150041,40.268961)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -232,7 +235,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.1736482,0.9848078,-0.9848078,0.1736482,64.387638,44.022341)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -245,7 +248,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0,1,-1,0,67.909092,48.454548)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -258,7 +261,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.1736482,0.9848078,-0.9848078,-0.1736482,70.6074,53.430914)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -271,7 +274,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.3420201,0.9396926,-0.9396926,-0.3420201,72.40058,58.800236)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -284,7 +287,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,73.234143,64.399366)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -297,7 +300,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.6427876,0.7660444,-0.7660444,-0.6427876,73.082764,70.05818)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -310,7 +313,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.7660444,0.6427876,-0.6427876,-0.7660444,71.951042,75.604738)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -323,7 +326,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,69.873364,80.870509)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -336,7 +339,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.9396926,0.3420201,-0.3420201,-0.9396926,66.912859,85.6955)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -349,7 +352,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.9848078,0.1736482,-0.1736482,-0.9848078,63.159479,89.933097)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -362,7 +365,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-1,0,0,-1,58.727272,93.454552)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -375,7 +378,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.9848078,-0.1736482,0.1736482,-0.9848078,53.750906,96.152852)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -388,7 +391,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.9396926,-0.3420201,0.3420201,-0.9396926,48.381584,97.946041)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -401,7 +404,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,42.782454,98.779604)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -414,7 +417,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.7660444,-0.6427876,0.6427876,-0.7660444,37.12364,98.628219)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -427,7 +430,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.6427876,-0.7660444,0.7660444,-0.6427876,31.577082,97.496499)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -440,7 +443,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,26.311311,95.41882)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -453,7 +456,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.3420201,-0.9396926,0.9396926,-0.3420201,21.486323,92.458315)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -466,7 +469,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(-0.1736482,-0.9848078,0.9848078,-0.1736482,17.248725,88.704935)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -479,7 +482,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0,-1,1,0,13.727272,84.272728)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -492,7 +495,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.1736482,-0.9848078,0.9848078,0.1736482,11.028963,79.296362)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -505,7 +508,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.3420201,-0.9396926,0.9396926,0.3420201,9.2357838,73.92704)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -518,7 +521,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.5,-0.8660254,0.8660254,0.5,8.4022205,68.32791)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -531,7 +534,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.6427876,-0.7660444,0.7660444,0.6427876,8.5535989,62.669096)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -544,7 +547,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.7660444,-0.6427876,0.6427876,0.7660444,9.6853214,57.122538)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -557,7 +560,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.8660254,-0.5,0.5,0.8660254,11.763,51.856767)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -570,7 +573,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.9396926,-0.3420201,0.3420201,0.9396926,14.723504,47.031779)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"
@@ -583,7 +586,7 @@
sodipodi:cy="15.545455"
sodipodi:rx="11.545455"
sodipodi:ry="11.545455"
d="M 29.454545,15.545455 A 11.545455,11.545455 0 1 1 6.3636351,15.545455 A 11.545455,11.545455 0 1 1 29.454545,15.545455 z"
d="m 29.454545,15.545455 c 0,6.376379 -5.169076,11.545455 -11.545455,11.545455 -6.376379,0 -11.5454549,-5.169076 -11.5454549,-11.545455 C 6.3636351,9.1690763 11.532711,4 17.90909,4 24.285469,4 29.454545,9.1690763 29.454545,15.545455 z"
transform="matrix(0.9848078,-0.1736482,0.1736482,0.9848078,18.476885,42.794181)"
inkscape:transform-center-y="-11.545455"
inkscape:tile-x0="6.1818169"

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,11 @@
[debug]
showCardId=false
[localgame]
onStartup=false
playerCount=1
;deck\Player 1=path/to/deck
;deck\Player 2=path/to/deck
; Fun Fact: You can assign a deck to your username and it will auto load and ready when you join a server game
;deck\Your Username Here=path/to/deck

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg3715"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="icon_config_general.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs3717">
<linearGradient
id="linearGradient3372">
<stop
id="stop3374"
offset="0"
style="stop-color:#0053ff;stop-opacity:1;" />
<stop
id="stop3376"
offset="1"
style="stop-color:#008eff;stop-opacity:0.30980393;" />
</linearGradient>
<linearGradient
id="linearGradient3172">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3174" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3176" />
</linearGradient>
<linearGradient
id="linearGradient3701">
<stop
id="stop3709"
offset="0"
style="stop-color:#ffffff;stop-opacity:0.30588236;" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3711" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3667"
gradientUnits="userSpaceOnUse"
x1="232.7204"
y1="270.24258"
x2="405.1579"
y2="270.24258" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3665"
gradientUnits="userSpaceOnUse"
x1="298.79843"
y1="421.66565"
x2="471.55374"
y2="421.66565" />
<linearGradient
id="linearGradient3628">
<stop
id="stop3630"
offset="0"
style="stop-color:#456b92;stop-opacity:1;" />
<stop
style="stop-color:#90b2dd;stop-opacity:1;"
offset="0.5"
id="stop3634" />
<stop
id="stop3636"
offset="0.75"
style="stop-color:#91b8e9;stop-opacity:1;" />
<stop
style="stop-color:#7597bc;stop-opacity:1;"
offset="0.875"
id="stop3638" />
<stop
id="stop3632"
offset="1"
style="stop-color:#79a9d9;stop-opacity:1;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3663"
gradientUnits="userSpaceOnUse"
x1="129.40549"
y1="395.69638"
x2="301.84299"
y2="395.69638" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective3723" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3846"
gradientUnits="userSpaceOnUse"
x1="129.40549"
y1="395.69638"
x2="301.84299"
y2="395.69638" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3848"
gradientUnits="userSpaceOnUse"
x1="298.79843"
y1="421.66565"
x2="471.55374"
y2="421.66565" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3628"
id="linearGradient3850"
gradientUnits="userSpaceOnUse"
x1="232.7204"
y1="270.24258"
x2="405.1579"
y2="270.24258" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3172"
id="linearGradient3178"
x1="32.909092"
y1="1.8181818"
x2="32.909092"
y2="15.636364"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3372"
id="linearGradient3370"
x1="32.090912"
y1="1.0909164"
x2="32.090912"
y2="67.636368"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9859962,0,0,0.9859962,0.3584832,-1.3322407e-3)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
y2="62.909088"
x2="31.09091"
y1="1.8181819"
x1="32.090908"
gradientTransform="matrix(1.0188073,0,0,1.0264157,-0.59868968,-1.2688528)"
gradientUnits="userSpaceOnUse"
id="linearGradient3045"
xlink:href="#linearGradient6464"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0489761,0,0,1.0704672,-1.576142,-1.64517)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
y2="13.02554"
x2="32.18182"
y1="3.2835093"
x1="32.18182"
gradientTransform="matrix(1.0583546,0,0,1.0704672,-1.9688677,-2.3154113)"
gradientUnits="userSpaceOnUse"
id="linearGradient3045-1"
xlink:href="#linearGradient6482"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="-10.082463"
inkscape:cy="25.822073"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata3720">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:url(#linearGradient3045);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02260447;stroke-opacity:1"
id="rect6462"
width="62.795578"
height="62.704666"
x="0.69797516"
y="0.59735847"
ry="5.7852521" />
<rect
style="fill:url(#linearGradient3045-1);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect6472"
width="61.554176"
height="13.601046"
x="1.3138213"
y="1.1994778"
ry="4.8575158" />
<g
id="g3658"
transform="matrix(0.15897276,0,0,0.16669822,-15.816182,-26.391316)">
<path
id="path3576"
d="m 218.53049,309.80577 -3.09375,6.3125 -1.125,4.8125 0.0312,1.5625 -7,0.4375 -0.1875,-1.53125 -1.6875,-4.65625 -3.875,-5.84375 -4.5,0.84375 -1.46875,6.875 0.125,4.9375 0.40625,1.53125 -6.65625,2.15625 -0.5625,-1.46875 -2.8125,-4.0625 -5.1875,-4.71875 -4.15625,1.9375 0.3125,7.03125 1.34375,4.75 0.78125,1.375 -5.9375,3.75 -0.90625,-1.28125 -3.71875,-3.21875 -6.21875,-3.28125 -3.53125,2.90625 2.0625,6.75 2.46875,4.25 1.09375,1.125 -4.8125,5.125 -1.1875,-1.03125 -4.40625,-2.1875 -6.84375,-1.625 -2.71875,3.6875 3.6875,6 3.4375,3.53125 1.34375,0.8125 -3.375,6.15625 -1.40625,-0.6875 -4.8125,-1.03125 -7.03125,0.125 -1.6875,4.25 5.03125,4.90625 4.21875,2.53125 1.5,0.46875 -1.75,6.8125 -1.53125,-0.34375 -4.9375,0.21875 -6.78125,1.875 -0.5625,4.53125 6.09375,3.5 4.75,1.40625 1.5625,0.0937 0,7 -1.5625,0.0625 -4.75,1.4375 -6.09375,3.5 0.5625,4.53125 6.78125,1.875 4.9375,0.1875 1.53125,-0.3125 1.75,6.78125 -1.5,0.46875 -4.21875,2.5625 -5.03125,4.90625 1.6875,4.25 7.03125,0.125 4.8125,-1.03125 1.40625,-0.6875 3.375,6.15625 -1.34375,0.8125 -3.4375,3.5 -3.6875,6 2.71875,3.71875 6.84375,-1.625 4.40625,-2.21875 1.1875,-1 4.8125,5.125 -1.09375,1.125 -2.46875,4.25 -2.0625,6.71875 3.53125,2.9375 6.21875,-3.28125 3.71875,-3.25 0.90625,-1.28125 5.9375,3.78125 -0.78125,1.34375 -1.34375,4.75 -0.3125,7.03125 4.15625,1.96875 5.1875,-4.75 2.8125,-4.03125 0.5625,-1.46875 6.65625,2.15625 -0.40625,1.5 -0.125,4.9375 1.46875,6.90625 4.5,0.84375 3.875,-5.875 1.6875,-4.625 0.1875,-1.5625 7,0.4375 -0.0312,1.5625 1.125,4.8125 3.09375,6.3125 4.59375,-0.28125 2.28125,-6.65625 0.5,-4.90625 -0.21875,-1.5625 6.875,-1.3125 0.375,1.53125 2.28125,4.375 4.59375,5.34375 4.34375,-1.40625 0.5625,-7.03125 -0.71875,-4.875 -0.59375,-1.4375 6.34375,-3 0.71875,1.40625 3.3125,3.65625 5.75,4.03125 3.875,-2.4375 -1.1875,-6.9375 -1.9375,-4.53125 -0.9375,-1.28125 5.40625,-4.46875 1.0625,1.15625 4.09375,2.75 6.59375,2.46875 3.125,-3.34375 -2.875,-6.40625 -3,-3.9375 -1.21875,-0.96875 4.125,-5.6875 1.3125,0.875 4.65625,1.625 7,0.78125 2.1875,-4.03125 -4.375,-5.5 -3.875,-3.0625 -1.4375,-0.625 2.59375,-6.53125 1.46875,0.5 4.9375,0.4375 6.9375,-1 1.15625,-4.4375 -5.625,-4.25 -4.5,-2 -1.5625,-0.28125 0.875,-6.9375 1.5625,0.125 4.875,-0.8125 6.5,-2.71875 0,-4.5625 -6.5,-2.71875 -4.875,-0.8125 -1.5625,0.125 -0.875,-6.96875 1.5625,-0.25 4.5,-2 5.625,-4.25 -1.15625,-4.4375 -6.9375,-1 -4.9375,0.4375 -1.46875,0.5 -2.59375,-6.53125 1.4375,-0.65625 3.875,-3.03125 4.375,-5.5 -2.1875,-4.03125 -7,0.75 -4.65625,1.65625 -1.3125,0.84375 -4.125,-5.65625 1.21875,-1 3,-3.90625 2.875,-6.4375 -3.125,-3.34375 -6.59375,2.5 -4.09375,2.71875 -1.0625,1.15625 -5.40625,-4.46875 0.9375,-1.25 1.9375,-4.53125 1.1875,-6.9375 -3.875,-2.46875 -5.75,4.03125 -3.3125,3.6875 -0.71875,1.375 -6.34375,-2.96875 0.59375,-1.46875 0.71875,-4.875 -0.5625,-7 -4.34375,-1.40625 -4.59375,5.3125 -2.28125,4.375 -0.375,1.53125 -6.875,-1.3125 0.21875,-1.53125 -0.5,-4.9375 -2.28125,-6.625 -4.59375,-0.3125 z m -2.90625,22.15625 c 7.71749,0 15.10097,1.42838 21.9375,4 l -15.5625,28.71875 c -2.21207,-0.5418 -4.50406,-0.84375 -6.875,-0.84375 -8.41721,0 -16.03429,3.62553 -21.46875,9.4375 l -28.625,-15.53125 c 11.49205,-15.62948 29.87439,-25.78125 50.59375,-25.78125 z m 38.0625,12.96875 c 15.16986,11.64435 24.96875,30.04618 24.96875,50.78125 0,7.60476 -1.30018,14.92375 -3.71875,21.6875 l -30.5,-16.5625 c 0.3675,-1.94112 0.5625,-3.94775 0.5625,-6 0,-7.79489 -2.75805,-14.92599 -7.34375,-20.375 l 16.03125,-29.53125 z m -97.3125,29.09375 29.21875,15.875 c -0.24846,1.60786 -0.375,3.25739 -0.375,4.9375 0,8.47403 3.27426,16.15222 8.59375,21.75 l -16.21875,29.9375 c -15.17113,-11.64426 -25,-30.07641 -25,-50.8125 0,-7.61892 1.35408,-14.91314 3.78125,-21.6875 z m 58.28125,1.9375 c 0.3176,-0.0171 0.64717,0 0.96875,0 10.2905,-10e-6 18.65625,8.84846 18.65625,19.75 0,10.90154 -8.36575,19.71875 -18.65625,19.71875 -10.2905,1e-5 -18.65625,-8.81721 -18.65625,-19.71875 0,-10.56086 7.84203,-19.22073 17.6875,-19.75 z m 21.1875,41.1875 30.40625,16.53125 c -11.49036,15.64878 -29.89062,25.78125 -50.625,25.78125 -7.72767,0 -15.12468,-1.39066 -21.96875,-3.96875 l 16.34375,-30.09375 c 1.66202,0.29753 3.38143,0.4375 5.125,0.4375 8.04746,0 15.34294,-3.3181 20.71875,-8.6875 z"
style="fill:url(#linearGradient3846);fill-opacity:1;stroke:#000000"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient3848);fill-opacity:1;stroke:#000000"
d="m 414.44011,340.65881 -4.87909,5.06098 -2.54543,4.23634 -0.44901,1.49692 -6.79737,-1.72833 0.29069,-1.51505 -0.17967,-4.94935 -1.89812,-6.74998 -4.54208,-0.57561 -3.50459,6.09431 -1.39385,4.73832 -0.0825,1.58207 -6.99678,0.0131 -0.0854,-1.57045 -1.43248,-4.72887 -3.49219,-6.08122 -4.55,0.57084 -1.85689,6.78882 -0.17627,4.93327 0.32238,1.54823 -6.80093,1.7504 -0.47008,-1.4973 -2.55368,-4.20335 -4.91427,-5.02884 -4.25189,1.6845 -0.10488,7.05728 1.04783,4.80201 0.69644,1.40602 -6.15133,3.40396 -0.81441,-1.34549 -3.52408,-3.43236 -6.01669,-3.64375 -3.71783,2.67712 1.67175,6.84126 2.19021,4.41465 1.03016,1.18515 -5.09893,4.82606 -1.12798,-1.0853 -4.26506,-2.4562 -6.73136,-2.03537 -2.90853,3.52854 3.28599,6.21185 3.24027,3.70212 1.28424,0.9058 -3.75317,5.94864 -1.35228,-0.79639 -4.76704,-1.3046 -7.0296,-0.29295 -1.92382,4.14096 4.72828,5.19878 4.09067,2.794 1.45862,0.56799 -2.14478,6.66332 -1.50651,-0.41925 -4.96199,-0.087 -6.87305,1.46454 -0.85293,4.48566 5.88061,3.86259 4.64256,1.69132 1.55336,0.1717 -0.41194,6.99129 -1.57147,-0.0134 -4.801,1.14663 -6.29253,3.12871 0.30416,4.56264 6.65476,2.27334 4.89701,0.4929 1.54926,-0.22357 1.32641,6.89425 -1.52806,0.3617 -4.34456,2.27842 -5.34853,4.58159 1.44857,4.3729 7.01248,0.55008 4.87414,-0.76197 1.43678,-0.58806 3.01075,6.35304 -1.38584,0.73577 -3.6522,3.28917 -4.02192,5.76366 2.46137,3.87819 6.92501,-1.21803 4.53569,-1.95426 1.25524,-0.94195 4.49336,5.41862 -1.1554,1.03975 -2.73452,4.10981 -2.45183,6.59732 3.35313,3.14753 6.39339,-2.93209 3.91239,-2.97563 0.98547,-1.22575 5.67544,4.092 -0.84631,1.30339 -1.63183,4.66171 -0.71796,7.02411 4.02504,2.18196 5.48873,-4.40513 3.02342,-3.88551 0.65724,-1.4299 6.52927,2.56124 -0.50849,1.47777 -0.40366,4.92574 1.01081,6.95681 4.45899,1.1398 4.21098,-5.63714 1.97923,-4.51708 0.27051,-1.55437 6.94649,0.85711 -0.11221,1.5725 0.83104,4.86354 2.73549,6.49426 4.5657,-0.008 2.6898,-6.52072 0.80952,-4.86076 -0.12474,-1.55029 6.95782,-0.91199 0.25332,1.55884 2.0329,4.49534 4.23828,5.59915 4.43548,-1.13297 0.99525,-6.96768 -0.45595,-4.90696 -0.49983,-1.50687 6.51544,-2.59736 0.65712,1.42619 3.05426,3.87205 5.52019,4.37033 3.99923,-2.22544 -0.77386,-6.97902 -1.64926,-4.66731 -0.86332,-1.29558 5.66924,-4.15006 0.98127,1.23506 3.93441,2.9735 6.42395,2.88848 3.31745,-3.16712 -2.47938,-6.57596 -2.75028,-4.10251 -1.17686,-1.03538 4.47016,-5.4224 1.24491,0.92598 4.56597,1.9293 6.91024,1.17373 2.46027,-3.86979 -4.05227,-5.76909 -3.67076,-3.2826 -1.40118,-0.74647 2.95856,-6.33573 1.44905,0.59774 4.88947,0.72026 7.02039,-0.59639 1.39795,-4.34306 -5.35436,-4.57959 -4.39157,-2.26711 -1.52566,-0.35976 1.3023,-6.90167 1.56396,0.24078 4.89635,-0.52502 6.65665,-2.3221 0.259,-4.57835 -6.29742,-3.07754 -4.83408,-1.09639 -1.5513,0.0259 -0.46784,-7.01182 1.56944,-0.18425 4.61739,-1.69816 5.84977,-3.89497 -0.84712,-4.50761 -6.89313,-1.43087 -4.93977,0.14993 -1.50789,0.40102 -2.19355,-6.64811 1.46654,-0.57847 4.05257,-2.79917 4.70917,-5.24699 -1.95019,-4.14042 -7.0426,0.35945 -4.72987,1.33366 -1.36568,0.77509 -3.77701,-5.91028 1.27541,-0.90263 3.23268,-3.71966 3.25602,-6.23998 -2.9322,-3.53731 -6.70861,2.07557 -4.28303,2.4952 -1.10548,1.08864 -5.12902,-4.76968 1.01522,-1.21618 2.17788,-4.42031 1.60934,-6.83567 -3.70396,-2.66953 -6.00055,3.64947 -3.51202,3.4656 -0.82614,1.3427 -6.14218,-3.35585 0.67739,-1.39058 1.03689,-4.85322 -0.14163,-7.00533 -4.27706,-1.705 z m -9.55511,20.20016 c 7.3463,2.36461 13.93701,5.98658 19.65679,10.52921 l -23.61337,22.56916 c -1.93967,-1.19352 -4.0289,-2.1832 -6.28581,-2.90966 -8.01237,-2.57901 -16.37396,-1.46173 -23.32782,2.40561 l -22.48948,-23.5549 c 15.72817,-11.35661 36.33687,-15.38781 56.05969,-9.03942 z m 32.25823,24.00727 c 10.87243,15.73232 14.56173,36.25145 8.20855,55.98923 -2.33009,7.239 -5.81026,13.80759 -10.18491,19.50499 l -23.95833,-25.11105 c 0.94458,-1.73516 1.74503,-3.58553 2.37384,-5.53908 2.38834,-7.41998 1.9479,-15.05316 -0.74768,-21.64514 l 24.30853,-23.19895 z m -101.54638,-2.12193 22.94936,24.06403 c -0.72917,1.4544 -1.35503,2.98582 -1.86981,4.58512 -2.59642,8.06646 -1.83223,16.37859 1.51626,23.33702 l -24.61149,23.52821 c -10.87367,-15.73262 -14.58222,-36.28979 -8.22872,-56.02856 2.33442,-7.25247 5.85831,-13.78097 10.2444,-19.48582 z m 54.88447,19.70158 c 0.30756,0.0811 0.61605,0.19829 0.92216,0.29682 9.79557,3.15298 15.0478,14.13912 11.70759,24.51634 -3.34022,10.37721 -14.00519,16.20709 -23.80075,13.0541 -9.79556,-3.15297 -15.05737,-14.10937 -11.71715,-24.48659 3.23583,-10.05292 13.35405,-15.89349 22.88815,-13.38067 z m 7.54868,45.69834 23.87867,25.05257 c -15.73247,11.3755 -36.35231,15.38282 -56.08945,9.02985 -7.35599,-2.36774 -13.97114,-5.95795 -19.6961,-10.50906 l 24.77834,-23.63865 c 1.49091,0.79247 3.08474,1.45253 4.74445,1.98676 7.66041,2.46573 15.62166,1.54253 22.38409,-1.92147 z"
id="path3616"
inkscape:connector-curvature="0" />
<path
id="path3618"
d="m 321.8454,184.35195 -3.09375,6.3125 -1.125,4.8125 0.0312,1.5625 -7,0.4375 -0.1875,-1.53125 -1.6875,-4.65625 -3.875,-5.84375 -4.5,0.84375 -1.46875,6.875 0.125,4.9375 0.40625,1.53125 -6.65625,2.15625 -0.5625,-1.46875 -2.8125,-4.0625 -5.1875,-4.71875 -4.15625,1.9375 0.3125,7.03125 1.34375,4.75 0.78125,1.375 -5.9375,3.75 -0.90625,-1.28125 -3.71875,-3.21875 -6.21875,-3.28125 -3.53125,2.90625 2.0625,6.75 2.46875,4.25 1.09375,1.125 -4.8125,5.125 -1.1875,-1.03125 -4.40625,-2.1875 -6.84375,-1.625 -2.71875,3.6875 3.6875,6 3.4375,3.53125 1.34375,0.8125 -3.375,6.15625 -1.40625,-0.6875 -4.8125,-1.03125 -7.03125,0.125 -1.6875,4.25 5.03125,4.90625 4.21875,2.53125 1.5,0.46875 -1.75,6.8125 -1.53125,-0.34375 -4.9375,0.21875 -6.78125,1.875 -0.5625,4.53125 6.09375,3.5 4.75,1.40625 1.5625,0.0937 0,7 -1.5625,0.0625 -4.75,1.4375 -6.09375,3.5 0.5625,4.53125 6.78125,1.875 4.9375,0.1875 1.53125,-0.3125 1.75,6.78125 -1.5,0.46875 -4.21875,2.5625 -5.03125,4.90625 1.6875,4.25 7.03125,0.125 4.8125,-1.03125 1.40625,-0.6875 3.375,6.15625 -1.34375,0.8125 -3.4375,3.5 -3.6875,6 2.71875,3.71875 6.84375,-1.625 4.40625,-2.21875 1.1875,-1 4.8125,5.125 -1.09375,1.125 -2.46875,4.25 -2.0625,6.71875 3.53125,2.9375 6.21875,-3.28125 3.71875,-3.25 0.90625,-1.28125 5.9375,3.78125 -0.78125,1.34375 -1.34375,4.75 -0.3125,7.03125 4.15625,1.96875 5.1875,-4.75 2.8125,-4.03125 0.5625,-1.46875 6.65625,2.15625 -0.40625,1.5 -0.125,4.9375 1.46875,6.90625 4.5,0.84375 3.875,-5.875 1.6875,-4.625 0.1875,-1.5625 7,0.4375 -0.0312,1.5625 1.125,4.8125 3.09375,6.3125 4.59375,-0.28125 2.28125,-6.65625 0.5,-4.90625 -0.21875,-1.5625 6.875,-1.3125 0.375,1.53125 2.28125,4.375 4.59375,5.34375 4.34375,-1.40625 0.5625,-7.03125 -0.71875,-4.875 -0.59375,-1.4375 6.34375,-3 0.71875,1.40625 3.3125,3.65625 5.75,4.03125 3.875,-2.4375 -1.1875,-6.9375 -1.9375,-4.53125 -0.9375,-1.28125 5.40625,-4.46875 1.0625,1.15625 4.09375,2.75 6.59375,2.46875 3.125,-3.34375 -2.875,-6.40625 -3,-3.9375 -1.21875,-0.96875 4.125,-5.6875 1.3125,0.875 4.65625,1.625 7,0.78125 2.1875,-4.03125 -4.375,-5.5 -3.875,-3.0625 -1.4375,-0.625 2.59375,-6.53125 1.46875,0.5 4.9375,0.4375 6.9375,-1 1.15625,-4.4375 -5.625,-4.25 -4.5,-2 -1.5625,-0.28125 0.875,-6.9375 1.5625,0.125 4.875,-0.8125 6.5,-2.71875 0,-4.5625 -6.5,-2.71875 -4.875,-0.8125 -1.5625,0.125 -0.875,-6.96875 1.5625,-0.25 4.5,-2 5.625,-4.25 -1.15625,-4.4375 -6.9375,-1 -4.9375,0.4375 -1.46875,0.5 -2.59375,-6.53125 1.4375,-0.65625 3.875,-3.03125 4.375,-5.5 -2.1875,-4.03125 -7,0.75 -4.65625,1.65625 -1.3125,0.84375 -4.125,-5.65625 1.21875,-1 3,-3.90625 2.875,-6.4375 -3.125,-3.34375 -6.59375,2.5 -4.09375,2.71875 -1.0625,1.15625 -5.40625,-4.46875 0.9375,-1.25 1.9375,-4.53125 1.1875,-6.9375 -3.875,-2.46875 -5.75,4.03125 -3.3125,3.6875 -0.71875,1.375 -6.34375,-2.96875 0.59375,-1.46875 0.71875,-4.875 -0.5625,-7 -4.34375,-1.40625 -4.59375,5.3125 -2.28125,4.375 -0.375,1.53125 -6.875,-1.3125 0.21875,-1.53125 -0.5,-4.9375 -2.28125,-6.625 -4.59375,-0.3125 z m -2.90625,22.15625 c 7.71749,0 15.10097,1.42838 21.9375,4 l -15.5625,28.71875 c -2.21207,-0.5418 -4.50406,-0.84375 -6.875,-0.84375 -8.41721,0 -16.03429,3.62553 -21.46875,9.4375 l -28.625,-15.53125 c 11.49205,-15.62948 29.87439,-25.78125 50.59375,-25.78125 z m 38.0625,12.96875 c 15.16986,11.64435 24.96875,30.04618 24.96875,50.78125 0,7.60476 -1.30018,14.92375 -3.71875,21.6875 l -30.5,-16.5625 c 0.3675,-1.94112 0.5625,-3.94775 0.5625,-6 0,-7.79489 -2.75805,-14.92599 -7.34375,-20.375 l 16.03125,-29.53125 z m -97.3125,29.09375 29.21875,15.875 c -0.24846,1.60786 -0.375,3.25739 -0.375,4.9375 0,8.47403 3.27426,16.15222 8.59375,21.75 l -16.21875,29.9375 c -15.17113,-11.64426 -25,-30.07641 -25,-50.8125 0,-7.61892 1.35408,-14.91314 3.78125,-21.6875 z m 58.28125,1.9375 c 0.3176,-0.0171 0.64717,0 0.96875,0 10.2905,-10e-6 18.65625,8.84846 18.65625,19.75 0,10.90154 -8.36575,19.71875 -18.65625,19.71875 -10.2905,1e-5 -18.65625,-8.81721 -18.65625,-19.71875 0,-10.56086 7.84203,-19.22073 17.6875,-19.75 z m 21.1875,41.1875 30.40625,16.53125 c -11.49036,15.64878 -29.89062,25.78125 -50.625,25.78125 -7.72767,0 -15.12468,-1.39066 -21.96875,-3.96875 l 16.34375,-30.09375 c 1.66202,0.29753 3.38143,0.4375 5.125,0.4375 8.04746,0 15.34294,-3.3181 20.71875,-8.6875 z"
style="fill:url(#linearGradient3850);fill-opacity:1;stroke:#000000"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -13,9 +14,10 @@
height="64px"
id="svg4456"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_messages_v1.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
inkscape:version="0.48.5 r10040"
sodipodi:docname="icon_config_messages.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs4458">
<linearGradient
@@ -120,18 +122,99 @@
r="20.799664"
gradientTransform="matrix(1,0,0,1.1305163,0,-3.3604633)"
gradientUnits="userSpaceOnUse" />
<filter
<linearGradient
inkscape:collect="always"
id="filter8952"
x="-0.11012023"
width="1.2202405"
y="-0.096509867"
height="1.1930197">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.7664812"
id="feGaussianBlur8954" />
</filter>
xlink:href="#linearGradient3372"
id="linearGradient3370"
x1="32.090912"
y1="1.0909164"
x2="32.090912"
y2="67.636368"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9859962,0,0,0.9859962,0.3584832,-0.00133224)" />
<linearGradient
id="linearGradient3372">
<stop
id="stop3374"
offset="0"
style="stop-color:#0053ff;stop-opacity:1;" />
<stop
id="stop3376"
offset="1"
style="stop-color:#008eff;stop-opacity:0.30980393;" />
</linearGradient>
<linearGradient
y2="67.636368"
x2="32.090912"
y1="1.0909164"
x1="32.090912"
gradientTransform="matrix(0.9859962,0,0,0.9859962,0.40019796,0.13844058)"
gradientUnits="userSpaceOnUse"
id="linearGradient3029"
xlink:href="#linearGradient3372"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
y2="62.909088"
x2="31.09091"
y1="1.8181819"
x1="32.090908"
gradientTransform="matrix(1.0235582,0,0,1.0338679,-0.64074569,-1.2340088)"
gradientUnits="userSpaceOnUse"
id="linearGradient3045"
xlink:href="#linearGradient6464"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0489761,0,0,1.0704672,-1.576142,-1.64517)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
y2="13.02554"
x2="32.18182"
y1="3.2835093"
x1="32.18182"
gradientTransform="matrix(1.061706,0,0,1.0704672,-2.0848571,-2.2134742)"
gradientUnits="userSpaceOnUse"
id="linearGradient3045-1"
xlink:href="#linearGradient6482"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
@@ -140,9 +223,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.0260094"
inkscape:cx="-80.052586"
inkscape:cy="-69.140985"
inkscape:zoom="8.1040376"
inkscape:cx="12.301334"
inkscape:cy="38.69057"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
@@ -150,7 +233,8 @@
inkscape:window-width="1280"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="25" />
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata4461">
<rdf:RDF>
@@ -166,20 +250,36 @@
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:url(#linearGradient3045);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02870011;stroke-opacity:1"
id="rect6462"
width="63.088406"
height="63.159927"
x="0.66196382"
y="0.64575124"
ry="5.8272552" />
<rect
style="fill:url(#linearGradient3045-1);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect6472"
width="61.749092"
height="13.601046"
x="1.2082272"
y="1.3014144"
ry="4.8575158" />
<path
style="fill:url(#linearGradient2507);fill-opacity:1;stroke:#000000;stroke-width:0.55699998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
d="M 30.806368,0.85686126 C 29.034982,0.98914726 27.264478,1.1656403 25.510612,1.4661773 C 23.796106,1.7655132 22.103629,2.1976442 20.439589,2.7281242 C 19.21728,3.1056042 18.017557,3.5646622 16.839452,4.0765812 C 15.651082,4.6034292 14.495935,5.2138092 13.371335,5.8801812 C 11.912816,6.7464622 10.530751,7.7539632 9.2243805,8.8609672 C 8.4187244,9.5430992 7.6399884,10.262469 6.9145177,11.040719 C 5.620197,12.403477 4.4818823,13.932601 3.5234442,15.580236 C 3.0019741,16.480068 2.5348238,17.416384 2.1362796,18.385123 C 1.6804251,19.48228 1.3317871,20.628769 1.0695948,21.795033 C 0.75652219,23.256251 0.60324564,24.756201 0.61124599,26.254797 C 0.62193487,27.552852 0.7897313,28.84366 1.0337442,30.113781 C 1.3344362,31.649962 1.8041461,33.150192 2.4506358,34.561073 C 2.8706852,35.492735 3.3543551,36.391419 3.8768235,37.261925 C 4.6419727,38.490076 5.5010793,39.654404 6.4706387,40.707329 C 7.3596606,41.662951 8.297604,42.566604 9.2722931,43.422059 C 10.463433,44.447127 11.745074,45.349675 13.080336,46.147036 C 14.167464,46.805262 15.285489,47.406349 16.432387,47.937391 C 17.335164,48.348844 18.246803,48.739932 19.176788,49.076573 C 20.176277,49.440994 21.187956,49.769331 22.213361,50.040982 C 23.982628,50.519355 25.787921,50.832673 27.59864,51.068576 C 29.184164,51.257577 30.778441,51.374509 32.374326,51.378135 C 34.208468,51.393245 36.04276,51.33635 37.876831,51.36666 C 38.434029,51.394132 38.996114,51.373533 39.548214,51.468857 C 40.395454,51.629691 41.189649,52.027723 41.897068,52.542095 C 42.906233,53.246246 43.82274,54.092615 44.675187,54.999399 C 45.512204,55.903243 46.266785,56.888703 46.983782,57.901568 C 48.063059,59.393702 49.050446,60.961084 50.183724,62.408718 C 50.603098,62.897907 51.029706,63.407601 51.587664,63.719884 C 51.804498,63.841768 52.103879,63.868879 52.289383,63.669383 C 52.572771,63.417588 52.620316,62.996395 52.649089,62.627433 C 52.711632,61.844833 52.599022,61.057825 52.408292,60.302829 C 52.168482,59.302677 51.78517,58.35174 51.462684,57.380495 C 51.201962,56.629345 50.962671,55.869992 50.710396,55.115547 C 50.335598,53.977982 49.982246,52.829592 49.724991,51.654708 C 49.578941,50.967344 49.473946,50.261071 49.510957,49.554493 C 49.543479,49.062371 49.729699,48.57395 50.076258,48.238512 C 50.511787,47.761469 51.012891,47.360634 51.477328,46.916997 C 52.923187,45.590001 54.409164,44.313642 55.874783,43.011823 C 56.757712,42.194646 57.618666,41.349135 58.421933,40.442755 C 58.916458,39.885813 59.394731,39.311891 59.833969,38.70424 C 60.710709,37.528802 61.472131,36.255065 62.089397,34.905016 C 62.686408,33.597774 63.1598,32.225673 63.496977,30.816995 C 63.918773,29.061675 64.112872,27.241367 64.04458,25.430114 C 63.993915,24.1628 63.842987,22.897362 63.555691,21.66543 C 63.293091,20.48664 62.918558,19.336609 62.453814,18.231165 C 61.999994,17.149646 61.468614,16.10516 60.855606,15.116435 C 60.398759,14.374017 59.907921,13.654553 59.383662,12.964365 C 58.538398,11.856043 57.592092,10.838847 56.596116,9.8845992 C 55.568274,8.9130772 54.485916,8.0053472 53.337013,7.2011982 C 52.664003,6.7221662 51.968792,6.2783912 51.259706,5.8627892 C 50.063297,5.1749212 48.837819,4.5423942 47.573935,4.0072892 C 46.156955,3.3945402 44.708468,2.8644512 43.241049,2.4062912 C 42.115855,2.0591482 40.971103,1.7877702 39.816603,1.5776382 C 38.516427,1.3486333 37.205879,1.1933933 35.894625,1.0565313 C 34.340149,0.91502526 32.779796,0.84208126 31.219584,0.84739626 C 31.081846,0.85055126 30.944107,0.85370726 30.806368,0.85686126 z"
id="path3866" />
<path
sodipodi:type="arc"
style="opacity:1;fill:url(#linearGradient3297);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1;filter:url(#filter3315)"
style="fill:url(#linearGradient3297);fill-opacity:1;stroke:none;filter:url(#filter3315)"
id="path3289"
sodipodi:cx="38.143646"
sodipodi:cy="19.403315"
sodipodi:rx="27.005526"
sodipodi:ry="12.154696"
d="M 65.149172,19.403315 A 27.005526,12.154696 0 1 1 11.138121,19.403315 A 27.005526,12.154696 0 1 1 65.149172,19.403315 z"
transform="matrix(1,0,0,1.52,-5.3922652,-10.295931)" />
d="m 65.149172,19.403315 a 27.005526,12.154696 0 1 1 -54.011051,0 27.005526,12.154696 0 1 1 54.011051,0 z"
transform="matrix(1,0,0,1.52,-6.2560322,-9.1853735)" />
<path
style="font-size:144px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Umpush;-inkscape-font-specification:Umpush"
d="M 26.408397,32.530967 C 26.408382,34.365536 26.267064,35.8999 25.984444,37.134064 C 25.701793,38.368225 25.246433,39.357778 24.618367,40.102731 C 23.990272,40.858787 23.215639,41.392479 22.294465,41.703806 C 21.373269,42.026239 20.232255,42.187459 18.871422,42.187466 C 16.903429,42.187459 15.322759,41.664886 14.12941,40.619746 C 12.94652,39.574592 12.328908,38.090261 12.276571,36.166747 L 15.024424,36.166747 C 15.013953,36.933927 15.202377,37.567688 15.589699,38.068026 C 15.987478,38.579479 16.458538,38.929715 17.002882,39.118734 C 17.55768,39.307746 18.175292,39.402252 18.855721,39.402257 C 19.776897,39.402252 20.546296,39.246593 21.16392,38.935277 C 21.79199,38.635071 22.273519,38.179209 22.608508,37.567691 C 22.95394,36.956165 23.194703,36.255695 23.330801,35.466276 C 23.466871,34.676857 23.534914,33.726217 23.534928,32.614358 C 22.299689,34.159841 20.760891,34.932583 18.918529,34.932583 C 16.70977,34.932583 14.95638,34.104249 13.658349,32.447577 C 12.360313,30.79091 11.711296,28.633905 11.711296,25.976556 C 11.711296,23.274749 12.355079,21.073269 13.642646,19.37211 C 14.930209,17.670984 16.69407,16.820411 18.934233,16.820394 C 21.142972,16.820411 22.765515,17.443053 23.801861,18.688318 L 23.801861,17.220663 L 26.408397,17.220663 L 26.408397,32.530967 M 19.138358,19.638957 C 17.672828,19.638971 16.552752,20.189341 15.778122,21.290069 C 15.003484,22.390823 14.616169,23.880713 14.616173,25.759743 C 14.616169,29.92922 16.139265,32.013956 19.185464,32.013953 C 22.116498,32.013956 23.582021,29.962578 23.582035,25.85981 C 23.582021,24.848029 23.482576,23.958542 23.283694,23.191348 C 23.08479,22.41306 22.833558,21.807096 22.529997,21.373457 C 22.236882,20.928728 21.880969,20.572933 21.462259,20.306072 C 21.043527,20.039241 20.650977,19.861343 20.284606,19.77238 C 19.918215,19.683446 19.536134,19.638971 19.138358,19.638957 M 37.462629,35.11604 C 34.960765,35.11604 33.029417,34.326621 31.668578,32.747781 C 30.318204,31.157825 29.643017,28.934109 29.643017,26.076625 C 29.643017,23.230274 30.323438,20.978763 31.68428,19.322077 C 33.055588,17.654306 34.981701,16.820411 37.462629,16.820394 C 39.870262,16.820411 41.770207,17.637628 43.162466,19.272045 C 44.565166,20.895372 45.266522,23.080174 45.26654,25.826456 C 45.266522,27.216288 45.11997,28.456008 44.826883,29.545626 C 44.54423,30.624133 44.162149,31.508061 43.680635,32.197408 C 43.199091,32.886763 42.612882,33.459371 41.922007,33.915232 C 41.241573,34.359975 40.534981,34.671296 39.802234,34.849193 C 39.079929,35.027091 38.300062,35.11604 37.462629,35.11604 M 37.462629,19.4555 C 35.861016,19.455516 34.641493,20.044801 33.804055,21.223357 C 32.966609,22.40194 32.547888,24.019695 32.547893,26.076625 C 32.547888,27.132896 32.657803,28.061299 32.877637,28.86183 C 33.097461,29.651257 33.369629,30.268337 33.694141,30.713076 C 34.029114,31.157825 34.426898,31.519178 34.887498,31.797139 C 35.348082,32.075108 35.777271,32.258565 36.175063,32.347512 C 36.583308,32.436462 37.012496,32.480937 37.462629,32.480935 C 39.074695,32.480937 40.294218,31.913888 41.121203,30.779789 C 41.948163,29.645696 42.361649,28.044622 42.361662,25.976556 C 42.361649,24.953655 42.251736,24.04749 42.03192,23.258058 C 41.81208,22.457534 41.534677,21.823773 41.199714,21.35678 C 40.875192,20.889814 40.482643,20.511781 40.02206,20.222684 C 39.571926,19.922498 39.137504,19.722363 38.718791,19.622279 C 38.31053,19.511109 37.89181,19.455516 37.462629,19.4555 M 49.584599,18.271371 L 49.584599,10.749642 L 52.410963,10.749642 L 52.410963,18.271371 L 51.735778,28.845153 L 50.275486,28.845153 L 49.584599,18.271371 M 49.710215,31.697073 L 52.285348,31.697073 L 52.285348,34.932583 L 49.710215,34.932583 L 49.710215,31.697073"

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,68 @@
[Rules]
# The default log level is info
*.debug = false
# Uncomment a rule to see debug level logs for that category,
# or set <category> = false to disable logging
#main = true
#qt_translator = true
#window_main.* = true
#release_channel = true
#spoiler_background_updater = true
#theme_manager = true
#sound_engine = true
#tapped_out_interface = true
#tab_game = true
#tab_message = true
#tab_supervisor = true
#dlg_edit_avatar = true
#dlg_load_deck_from_website = true
#dlg_settings = true
#dlg_tip_of_the_day = true
#dlg_update = true
#settings_cache = true
#servers_settings = true
#shortcuts_settings = true
#local_client = true
#remote_client = true
#player = true
#game_scene = true
#game_scene.player_addition_removal = true
#card_zone = true
#view_zone = true
#game_event_handler = true
#user_info_connection = true
#card_picture_loader = true
#card_picture_loader.worker = true
#card_picture_loader.card_back_cache_fail = true
#card_picture_loader.picture_to_load = true
#deck_loader = true
#card_database = true
#card_database.loading = true
#card_database.loading.success_or_failure = true
#cockatrice_xml.* = true
#cockatrice_xml.xml_3_parser = true
#cockatrice_xml.xml_4_parser = true
#card_info = true
#card_list = true
#flow_layout = true
#flow_widget = true
#flow_widget.size = true
#card_info_picture_widget = true
#pixel_map_generator = true
#deck_filter_string = true
#filter_string = true
#syntax_help = true

View File

@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="icon_config_shorcuts.svg">
<defs
id="defs4">
<inkscape:path-effect
effect="bend_path"
id="path-effect3618"
is_visible="true"
bendpath="m 142.49072,814.69439 c 81.91729,17.90777 153.31508,14.77655 218.89021,0"
prop_scale="1"
scale_y_rel="false"
vertical="false"
bendpath-nodetypes="cc" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective4226"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
y2="13.02554"
x2="32.18182"
y1="3.2835093"
x1="32.18182"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)"
gradientUnits="userSpaceOnUse"
id="linearGradient4241"
xlink:href="#linearGradient6482"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42293617"
inkscape:cx="401.93458"
inkscape:cy="251.13063"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="745"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-552.36218)">
<g
transform="matrix(7.8163235,0,0,7.8163235,-0.83292805,550.81868)"
id="g4214">
<rect
ry="5.6363635"
y="1.6363637"
x="1.2727273"
height="61.090908"
width="61.636364"
id="rect6462"
style="fill:url(#linearGradient6470);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1" />
<rect
ry="4.7325583"
y="2.7380548"
x="2.1926003"
height="13.251164"
width="59.796619"
id="rect6472"
style="fill:url(#linearGradient4241);fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<image
width="330.20697"
height="335.80368"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAB4CAYAAAAnrQZhAAAABmJLR0QA/wD/AP+gvaeTAAALCklE QVR4nO2dbWgcZR7Af/Oyu91umlfTNtFYxabVbg4xGmkqGAiUXoViWq4UvFMOPxz4wfOoekhR6CEn fqig/eCHgyLY3kXxgzmLePZDvdpcyhlSriW2tmI0TXurl43ZtG422ezO3Ic44+xm9mWyEyedPD94 2Hl2Zp59dn77f55nXleiPCLANmAtUAtUlbmewD2mgQQwAZwBJhdbUAD4LfBPYBbQRVo2KQP8G/gD sNpenz17gG+WwRcQqXT6H/A7QLIKzMkwH6V/YT5SF6AoCqtWrUKWZbvZBZFlGVVVkWXZ8bp26Lpe cRlLUZZd2Zqmoes62Wy24s9KpVJkMplCs/8B7AOuQ65YFegFfmVduq6ujnvuuYeWlhaqq6vLroQs y2zfvp27774bVVWd1N8WYwOVSj/Hck4IhUI0NDSwbt06rl27xuDgIMPDwyXLURQFVVXNFAgEUFWV VCrF119/zeDgIFeuXMlfrR/4JZC0iv0zcMBaoW3btrFx40ZHXwSgra2NHTt2OF6vGDerWANJkmhq auKuu+7i22+/5Z133iEWi5nzDZGGwPxXu+mLFy/y1ltvMTExYf2ovwK/McT+AhhivikmEomwa9cu 1qxZ4/gLdHV10dHR4XoTd7OLNaiurqatrQ1d1+nt7WV0dLSkwPxp6+v09DQvvPACIyMj1o/ZaYg9 Bvwa5pvQ3bt3U19f77jSnZ2dPPTQQ0vSb/lFLEBVVRXt7e1omsb7779PPB4vKdCuWTZeJycn2bt3 L9evXzc+4l8KsAY4wo/RGo1G2bRpk+PK1tbWsnv37iWRCuUPcrxazgnpdJq5uTkaGxu58847icVi rF69mqqqKqqqqohEIkQiEXO60HvhcJhgMEhNTQ3BYJD+/n7jI1pUoB3LvtDmzZsXVdk9e/agaVrF X3qlEIvFuPXWW4lEIrS3tzM6Olq0Xw0EAkhS/k7MTzz66KMcOnTIGDVLKrDBmCnLMnV1dY4rGQqF qK+vX7Jo9SO6rnPt2jU2bdpES0sLyWQSRVFypBYTmU9NTQ1NTU2MjY0BIAM1xsxQKOSoMIOtW7cK qYsgHo+j6zqqqrJ+/Xqqq6sJh8Mlo7MQDQ0N5nTlRwuADRs2lF5IsIB0Os3s7CwAwWCw4vKsPwZX xK5e7ehwpcCCIVZRFFfLdUWsG0eWVipzc3MArhxqteJuaYJlgxDrU4RYnyLE+hQh1qcsq+Gspmmc Pn2agYEBhoaGiMfjfP/99yiKQm1tLa2trdx3333s3LmT5uZmr6u7rFk2Yk+cOMHrr7+ef/rJJJVK EYvF+PTTTzl8+DAPP/wwzz77LLfffvvPXNObA8/FZrNZXn31VY4ePZrzfnV1NdFo1Dx9GI/HuXTp EolEAl3XOXXqFAMDA3z88ceLOr7tdzwXe/DgQd577z0z39HRwdNPP80DDzyQs9OuaRrZbJbz58/z 9ttvc+LECebm5swdfEEung6e+vr6cqQ+9dRTHD16lAcffND2SIwsy9x7770cOnSI3t5eWlpafs7q 3lR4FrHpdJrXXnvNzPf09PDMM8+Uvf6WLVt49913XT/G6hc8E9vX18f4+DgA4XCYAwcOlFhjIZFI xLXLVfyGZ03xyZMnzeldu3Y5urRVUBpPxGqaxtDQkJnv7Oz0ohq+xhOx4+Pj3Lhxw8xHo1EvquFr PBGbSCRy8rW1tV5Uw9d4IjaZTObkI5GIF9XwNZ6IzReZL1pQOZ6IzW9685tmQeV4IraxsTHnvqDP P//ci2r4Gk/EyrLM/fffb+bPnDnjRTV8jWcHKLq7u83p48ePW28oEriAZ2J7enq45ZZbgPlzra+8 8orjMpLJpHldriAXz8QGg0Gee+45M9/X18fhw4fLXv/ChQvs27dPDLwK4Olpu56eHvbu3Wvm33zz TZ544gkGBwdt79zTNI1z587x/PPP89hjj5k3IAkWsixOtIdCIY4dOwbAZ599xuOPP05NTQ3RaNS8 OmJiYoIvvvgiJ0JDoZAr97z4Ec/FKorCiy++SEdHB2+88YZ5zdPU1BQDAwO268iyTHd3N/v376eu rk6ctrPBc7EGO3bsYPv27Zw+fZr+/n7Onj3L+Pg4iUTCvG+3tbWV9vZ2HnnkEdavXy/OxRZh2YiF +Ujs6uqiq6trwbyleBaEnxEXjPsUIdanCLE+RYj1KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1 KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKs TxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKsTxFifYorYiVJcqMYgYu4InZmZsaNYlYkoVAImP/z RjdxRewPP/zgRjErkmUtdnh42I1iVhxVVVXmQz7dbvUqFitJEpcuXRL97CIwHsS9FH+XWrFY4+9A L1++XHFlVhLBYND8m9R4PE4mk3G1/IrEyrJsplOnTokHVzrgjjvuQFEUkskkU1NTZLNZV+UuWqwk STliNU2jr69PNMll0NTURHNzM7Ozs4yMjJhSs9msa4OoRYu1SjVSIpHgk08+EXKL0NzcTGtrK8lk kosXL5JOp02pmUyGTCZj+9h8pyxKrKIotmJlWebq1at88MEHpFIpIdhCKBRiy5YtbNy4katXr3L2 7FmSyWSOVCNis9lsxd2a4wdR5zfBdml6epoPP/yQ2267jba2NtasWbMi+99AIEBNTQ21tbWEw2HG x8cZHh4mnU4TCARQVRVJknISYE6r6uKfE+5oTUmSikZrfvruu++Ix+MoioKiKKxatcocRS8li/0R uf3j03WdK1eukMlkUFXVlBkIBBYItUvAouU6WssQ5lSwIXOlHXq0dkXZbLakRGve2M7GtnZK2WKt kpxKlWV5RTbFVjRNKyk3X7Lxaoh2Qlli7fpVJ1ErmKccsdZILSS9HMoSayerXKliZJxLJpNxFKnW 5KS/LblkKXGlBIP7g5KbBV3XbX/YxeSWSuX2t0XFltq1KTVfYI+u6zlyofDAqVBzXYqiYsuNVruo FU3wPIWiVtO0HLnWbVasOZYkydxdKkZBseWOdgtFreAnCsktd5RcSG4xbMWWamJL9bH5X0pQGEMu 5EZqqea41GDKdo7TfVTrrk/+L1OSJCG3CLquF4xcKNwclxpMLRDrVGp+1NpVXFAca39bTqTmi7fb 7q6IFf1qaQr1swZWuVA6Uu1G0FZcEyuonEoGU/n9bU7OyaBJ7No4p1TUgnO5YH/BvisRK3CPYoOp Us2x9coLFbhuZGZnZx1HrcAZ5URtOWeCYOGBjMnJSbMMFRgzMtlslqmpKRobG0UT7DFOzwRNT08T i8XM9WXgLGCeAb9w4YKI1mVC/vVQ+Re9Wa+T+uijj3IuOpeBBHDceGNoaIhEIuGKVLEPa4+T7VJI rlXwxMQER44csa42aBy2+AZ4EpA1TWNkZIRoNEo4HDavV7ImEa3uUG5Xlt8vW5vjmZkZXnrpJcbG xqyr/N4Q+1+gHtgKkEqlGB4eZt26daxdu3aBWIE7OBFrLG8dPH355Ze8/PLLjIyMWBfvAw5aSw4B fwd2WJfasGEDnZ2dbN68mYaGBkcDJtEUF8fp4FNVVVKpFF999RX9/f2cP38+fxv/B+gGJvNLDgN/ A3rsCg6Hw0QikbIqIaSWhxO5MzMzxe5FHmDe23ixMp78cQFdpGWfbgB/BMruIyPAfuAcoC2DLyBS broM/AlosJNXbjuwDugC1jIvXOANKWAC6AdGiy34f92AFnOZ6uyjAAAAAElFTkSuQmCC "
id="image4221"
x="89.958641"
y="628.24109" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="62.636364"
height="62.090908"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="icon_config_sound.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0">
<defs
id="defs4">
<linearGradient
id="linearGradient3802">
<stop
style="stop-color:#fdfdfd;stop-opacity:0;"
offset="0"
id="stop3804" />
<stop
id="stop3814"
offset="0.35707802"
style="stop-color:#b8b8b8;stop-opacity:1;" />
<stop
id="stop3810"
offset="0.5"
style="stop-color:#717171;stop-opacity:1;" />
<stop
style="stop-color:#b6b6b6;stop-opacity:1;"
offset="0.64876282"
id="stop3812" />
<stop
style="stop-color:#fbfbfb;stop-opacity:0;"
offset="1"
id="stop3806" />
</linearGradient>
<linearGradient
id="linearGradient3797">
<stop
id="stop3799"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop3801"
offset="1"
style="stop-color:#656565;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3169">
<stop
style="stop-color:#0000ff;stop-opacity:1;"
offset="0"
id="stop3171" />
<stop
style="stop-color:#000067;stop-opacity:1;"
offset="1"
id="stop3173" />
</linearGradient>
<linearGradient
id="linearGradient4766">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770" />
</linearGradient>
<linearGradient
id="linearGradient4758">
<stop
style="stop-color:#a05a2c;stop-opacity:1;"
offset="0"
id="stop4760" />
<stop
style="stop-color:#3d2210;stop-opacity:1;"
offset="1"
id="stop4762" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective2484"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4758"
id="linearGradient4764"
x1="466.09601"
y1="485.96021"
x2="715.14801"
y2="485.96021"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4766"
id="linearGradient4772"
x1="496.548"
y1="485.26816"
x2="683.31201"
y2="485.26816"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3169"
id="radialGradient3175"
cx="120.07376"
cy="56.138123"
fx="120.07376"
fy="56.138123"
r="82.790039"
gradientTransform="matrix(1,0,0,0.2116376,0,44.257186)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0281354,0,0,1.0429299,85.21874,131.0326)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
y2="62.909088"
x2="31.09091"
y1="1.8181819"
x1="32.090908"
gradientTransform="translate(86.2151,131.5372)"
gradientUnits="userSpaceOnUse"
id="linearGradient4477"
xlink:href="#linearGradient6464"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3802"
id="linearGradient3808"
x1="130.53949"
y1="179.4781"
x2="130.80582"
y2="150.92148"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3802"
id="linearGradient3031"
gradientUnits="userSpaceOnUse"
x1="130.53949"
y1="179.4781"
x2="130.80582"
y2="150.92148" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.9415244"
inkscape:cx="22.018778"
inkscape:cy="29.620124"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="465"
inkscape:window-height="423"
inkscape:window-x="-4"
inkscape:window-y="584"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-86.987816,-132.85536)">
<rect
style="fill:url(#linearGradient4477);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1"
id="rect6462"
width="61.636364"
height="61.090908"
x="87.487816"
y="133.35536"
ry="5.6363635" />
<rect
style="fill:url(#linearGradient6488);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect6472"
width="59.796619"
height="13.251164"
x="88.407707"
y="134.45705"
ry="4.7325583" />
<g
id="g3023"
transform="matrix(-1,0,0,-1,235.53472,326.55032)">
<path
inkscape:connector-curvature="0"
id="rect3015"
d="m 113.67532,142.79285 0,43.84374 18.5,-13.40625 14.0625,0 0,-16.59374 -13.4375,0 -19.125,-13.84375 z"
style="fill:#b6b6b6;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3791"
d="m 107.25028,182.88295 c -23.753359,-19.83452 -0.0827,-38.48619 -0.0827,-38.48619"
style="fill:none;stroke:#e96800;stroke-width:2.30299997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3791-1"
d="M 103.80137,187.75537 C 73.5834,162.52278 103.69616,138.79495 103.69616,138.79495"
style="fill:none;stroke:#e96800;stroke-width:2.16618037px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3791-7"
d="m 110.74869,177.97273 c -17.104281,-14.28241 -0.0595,-27.71308 -0.0595,-27.71308"
style="fill:none;stroke:#e96800;stroke-width:2.15799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="rect3015-1"
d="m 113.71148,150.58705 0,28.88551 18.50001,-8.83242 14.0625,0 0,-10.93244 -13.4375,0 -19.12501,-9.12065 z"
style="fill:url(#linearGradient3031);fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<rect
y="142.77277"
x="112.37492"
height="43.822105"
width="1.3598391"
id="rect3800"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="300"
height="300"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
version="1.0"
sodipodi:docname="storm.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 150 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="300 : 150 : 1"
inkscape:persp3d-origin="150 : 100 : 1"
id="perspective31" />
<linearGradient
id="linearGradient3841">
<stop
style="stop-color:white;stop-opacity:1;"
offset="0"
id="stop3843" />
<stop
style="stop-color:#fefce9;stop-opacity:0;"
offset="1"
id="stop3845" />
</linearGradient>
<linearGradient
id="linearGradient3813">
<stop
id="stop3815"
offset="0"
style="stop-color:#ff8632;stop-opacity:0;" />
<stop
style="stop-color:#ff8232;stop-opacity:0.40000001;"
offset="0.5"
id="stop4577" />
<stop
id="stop4579"
offset="0.75"
style="stop-color:#cf5300;stop-opacity:0.60000002;" />
<stop
id="stop3817"
offset="1"
style="stop-color:black;stop-opacity:0.80000001;" />
</linearGradient>
<linearGradient
id="linearGradient3779">
<stop
style="stop-color:#ff8232;stop-opacity:1;"
offset="0"
id="stop3781" />
<stop
style="stop-color:#ff4d32;stop-opacity:1;"
offset="1"
id="stop3783" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3779"
id="linearGradient3785"
x1="1.0101526"
y1="2.0049992"
x2="300"
y2="300"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3813"
id="radialGradient3819"
cx="150"
cy="150"
fx="150"
fy="150"
r="150"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3841"
id="linearGradient3847"
x1="149.99989"
y1="0.45544016"
x2="149.99989"
y2="299.54449"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
id="perspective2461"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2511"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2578"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2650"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2467"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2519"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2571"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2621"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3779"
id="linearGradient3782"
gradientUnits="userSpaceOnUse"
x1="1.0101526"
y1="2.0049992"
x2="300"
y2="300" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="56.521564"
inkscape:cy="177.14958"
inkscape:document-units="px"
inkscape:current-layer="layer2"
width="765px"
height="1260px"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
showgrid="false"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Button"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<path
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
sodipodi:ry="150"
sodipodi:rx="150"
sodipodi:cy="150"
sodipodi:cx="150"
id="path2760"
style="fill:url(#linearGradient3785);fill-opacity:1.0;fill-rule:evenodd;stroke:none"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3782);fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3788"
sodipodi:cx="150"
sodipodi:cy="150"
sodipodi:rx="150"
sodipodi:ry="150"
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
transform="translate(-1.4253374e-6,2.8293252e-6)" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Schatten"
style="display:inline">
<path
sodipodi:type="arc"
style="fill:url(#radialGradient3819);fill-opacity:1.0;fill-rule:evenodd;stroke:none"
id="path3790"
sodipodi:cx="150"
sodipodi:cy="150"
sodipodi:rx="150"
sodipodi:ry="150"
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
transform="translate(-0.28640902,0.00435494)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Icon" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Glanz"
style="display:inline">
<path
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
sodipodi:ry="150"
sodipodi:rx="150"
sodipodi:cy="150"
sodipodi:cx="150"
id="path3821"
style="fill:url(#linearGradient3847);fill-opacity:1;fill-rule:evenodd;stroke:none"
sodipodi:type="arc"
transform="matrix(0.649475,0,0,0.476763,52.5787,2)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="300"
height="300"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
version="1.0"
sodipodi:docname="storm_highlight.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 150 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="300 : 150 : 1"
inkscape:persp3d-origin="150 : 100 : 1"
id="perspective31" />
<linearGradient
id="linearGradient3841">
<stop
style="stop-color:white;stop-opacity:1;"
offset="0"
id="stop3843" />
<stop
style="stop-color:#fefce9;stop-opacity:0;"
offset="1"
id="stop3845" />
</linearGradient>
<linearGradient
id="linearGradient3813">
<stop
id="stop3815"
offset="0"
style="stop-color:#ff8632;stop-opacity:0;" />
<stop
style="stop-color:#ffb98c;stop-opacity:0.40000001;"
offset="0.5"
id="stop4577" />
<stop
id="stop4579"
offset="0.75"
style="stop-color:#ffa163;stop-opacity:0.60000002;" />
<stop
id="stop3817"
offset="1"
style="stop-color:black;stop-opacity:0.80000001;" />
</linearGradient>
<linearGradient
id="linearGradient3779">
<stop
style="stop-color:#ff8232;stop-opacity:1;"
offset="0"
id="stop3781" />
<stop
style="stop-color:#ff4d32;stop-opacity:1;"
offset="1"
id="stop3783" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3779"
id="linearGradient3785"
x1="1.0101526"
y1="2.0049992"
x2="300"
y2="300"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3813"
id="radialGradient3819"
cx="150"
cy="150"
fx="150"
fy="150"
r="150"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3841"
id="linearGradient3847"
x1="149.99989"
y1="0.45544016"
x2="149.99989"
y2="299.54449"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
id="perspective2461"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2511"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2578"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2650"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2467"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2519"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2571"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2621"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3779"
id="linearGradient3782"
gradientUnits="userSpaceOnUse"
x1="1.0101526"
y1="2.0049992"
x2="300"
y2="300" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="-22.270334"
inkscape:cy="177.14958"
inkscape:document-units="px"
inkscape:current-layer="layer2"
width="765px"
height="1260px"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
showgrid="false"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Button"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<path
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
sodipodi:ry="150"
sodipodi:rx="150"
sodipodi:cy="150"
sodipodi:cx="150"
id="path2760"
style="fill:url(#linearGradient3785);fill-opacity:1.0;fill-rule:evenodd;stroke:none"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3782);fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3788"
sodipodi:cx="150"
sodipodi:cy="150"
sodipodi:rx="150"
sodipodi:ry="150"
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
transform="translate(-1.4253374e-6,2.8293252e-6)" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Schatten"
style="display:inline">
<path
sodipodi:type="arc"
style="fill:url(#radialGradient3819);fill-opacity:1.0;fill-rule:evenodd;stroke:none"
id="path3790"
sodipodi:cx="150"
sodipodi:cy="150"
sodipodi:rx="150"
sodipodi:ry="150"
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
transform="translate(-0.28640902,0.00435494)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Icon" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Glanz"
style="display:inline">
<path
d="m 300,150 a 150,150 0 1 1 -300,0 150,150 0 1 1 300,0 z"
sodipodi:ry="150"
sodipodi:rx="150"
sodipodi:cy="150"
sodipodi:cx="150"
id="path3821"
style="fill:url(#linearGradient3847);fill-opacity:1;fill-rule:evenodd;stroke:none"
sodipodi:type="arc"
transform="matrix(0.649475,0,0,0.476763,52.5787,2)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg548" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata128">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="g3634">
<g id="g3379" transform="matrix(1.25 0 0 .93750 0 .0000046874)">
<g id="g3111">
<g id="g3105">
<g id="flag" fill-rule="evenodd" transform="matrix(.72249 0 0 1.0321 0 -16.449)" stroke-width="1pt">
<rect id="rect895" height="496.06" width="237.4" y="15.937" x="0" fill="#0000bd"/>
<rect id="rect896" height="496.06" width="237.4" y="15.937" x="471.26" fill="#cc1900"/>
<rect id="rect897" height="496.06" width="233.86" y="15.937" x="237.4" fill="#fff600"/>
</g>
</g>
</g>
</g>
<g id="g919" transform="matrix(1.4342 0 0 1.4102 -183.84 -822.43)">
<g id="g853" stroke-width="1pt">
<path id="path738" d="m398.54 290.22c47.823 0.818 44.515-29.149 61.974-32.126 17.458-2.977 33.928 12.489 33.302 29.972 1.873 20.814-29.714 20.963-31.637 38.298-1.923 17.336 15.378 22.628 33.302 19.982s30.646-20.363 39.804-28.689c-13.321 7.493-24.218 4.778-25.21-8.558 0.673-17.497 18.103-23.847 26.345-17.96 6.476-5.298 6.09-7.423 13.209-6.246 4.828 2.944 6.143 2.861 8.999 7.418 3.717-2.355 5.269-3.54 12.204-0.597 4.306 1.767 7.181 4.961 9.841 9.808 3.146-2.486 8.086-3.413 13.762-0.197 3.61 1.837 8.108 7.182 8.72 12.995 8.451 1.696 11.381 3.654 14.034 7.953 15.765 21.775-2.435 58.473-1.432 77.205 1.004 18.731 16.651 19.981 16.651 19.981-14.717-9.42-0.201-15.9 6.745-16.55 22.252 2.292 18.508 35.135-5.18 29.366-18.978-5.18 38.921 3.281 37.525 62.637-1.396 61.021-32.815 49.01-32.815 49.01s26.838 10.109 21.646 30.09c-5.191 13.507-32.933 22.456-30.578-3.448-8.242 11.186-10.608 15.913-10.58 32.916-1.148 21.713 0.656 31.631 6.845 42.301 1.48-9.935 8.206-10.361 13.952-9.1 8.101 0.084 12.607 6.442 9.563 14.684 4.079-1.035 7.801 1.757 9.402 5.121 1.255 6.206 4.037 8.956-2.439 11.311 6.476 1.178 9.61 2.024 10.377 11.049 0.18 7.261-12.596 11.246-26.136 8.891 7.065 3.533 29.983 50.025 26.922 103.44-2.119 47.905-86.038 43.639-123.53 42.305-37.488-1.332-72.512 0.775-87.133 13.052 11.247 7.182-1.302 29.542-10.864 19.064 0 8.242-9.449 20.979-22.497 12.718 0.534 14.885-14.238 25.328-27.121 25.328s-27.655-10.443-27.121-25.328c-13.048 8.261-22.497-4.476-22.497-12.718-9.562 10.478-22.111-11.882-10.864-19.064-14.621-12.277-49.645-14.384-87.133-13.052-37.489 1.334-121.41 5.6-123.53-42.305-3.061-53.418 23.699-99.91 30.764-103.44-13.54 2.355-26.316-1.63-26.136-8.891 0.767-9.025 3.901-9.871 10.377-11.049-6.476-2.355-3.694-5.105-2.439-11.311 1.601-3.364 5.323-6.156 9.402-5.121-3.044-8.242 1.462-14.6 9.563-14.684 5.746-1.261 12.472-0.835 13.952 9.1 6.189-10.67 7.993-20.588 6.845-42.301 0.028-17.003-2.338-21.73-10.58-32.916 2.355 25.904-25.387 16.955-30.578 3.448-5.192-19.981 21.646-30.09 21.646-30.09s-31.419 12.011-32.815-49.01c-1.396-59.356 56.503-67.817 37.525-62.637-23.688 5.769-27.432-27.074-5.18-29.366 6.946 0.65 21.462 7.13 6.745 16.55 0 0 15.647-1.25 16.651-19.981 1.003-18.732-17.197-55.43-1.432-77.205 2.653-4.299 5.583-6.257 14.034-7.953 0.612-5.813 5.11-11.158 8.72-12.995 5.676-3.216 10.616-2.289 13.762 0.197 2.66-4.847 5.535-8.041 9.841-9.808 6.935-2.943 8.487-1.758 12.204 0.597 2.856-4.557 4.171-4.474 8.999-7.418 7.119-1.177 6.733 0.948 13.209 6.246 8.242-5.887 25.672 0.463 26.345 17.96-0.992 13.336-11.889 16.051-25.21 8.558 9.158 8.326 21.88 26.043 39.804 28.689s35.225-2.646 33.302-19.982c-1.923-17.335-33.51-17.484-31.637-38.298-0.626-17.483 15.844-32.949 33.302-29.972 17.459 2.977 14.151 32.944 62.182 32.126z" fill-rule="evenodd" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="#cba323"/>
<path id="path619" d="m356.44 346.62c-0.575 17.961-31.258 14.828-51.514 13.859-26.326-1.231-77.59-46.08-44.263-69.888" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path625" d="m164.84 449.52c-16.484 17.662 28.691 13.497 9.419-9.419-7.87-8.82-41.21 18.839-41.21 49.452s10.597 44.742 16.484 45.919c5.887 1.178 15.307-3.532 15.307-8.241 0-5.887-4.71-15.307-11.774-14.13-11.775 0-5.888 10.597-0.001 10.597" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path626" d="m163.39 451.39s-24.453 9.908-24.453 39.343c0 29.436 7.065 28.259 7.065 28.259" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path627" d="m166.02 430.68s24.726-3.533 23.549 18.838c-1.178 22.371-9.42 23.549-22.371 22.371-12.952-1.177-5.887-16.483-5.887-16.483" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path628" d="m156.6 543.71s18.839-1.178 17.661-21.194c-1.177-20.016-15.306-21.194-23.548-20.016-8.242 1.177-10.74 5.803-8.242 12.88" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path630" d="m150.71 567.26s3.936-8.158 16.887-8.158c12.952 0 18.982 30.386 17.805 63.354-1.178 32.968-33.515 61.37-40.58 59.015-7.064-2.355-10.597-3.533-4.71-8.242" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path633" d="m172.39 643.31-22.859 38.166" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path634" d="m141.29 667.34c0 0.416 5.054-1.105 8.587 1.249 3.532 2.355 4.365 5.816 4.365 5.816" transform="matrix(.38925 0 0 .37394 195.85 536.34)" stroke="#000" fill="none"/>
<path id="path635" d="m144.82 650.86s4.517-1.819 10.404 0.536 5.695 7.662 5.695 7.662" transform="matrix(.35485 0 0 .26779 202.53 605.66)" stroke="#000" fill="none"/>
<path id="path636" d="m171.78 731.95c12.251 6.364 24.282-25.181 0.671-26.726-16.888-0.69-29.085 23.268-26.73 35.041 6.431 40.061 10.444 66.861 50.568 72.045 30.613 2.355 78.451-5.101 108.3-1.523 29.44 3.433 61.94 14.272 73.714 26.047 11.774 11.774 19.112 11.892 19.112 23.667 0 11.774-16.815 17.816-23.476 10.74" transform="matrix(.38925 0 0 .37394 195.83 537.04)" stroke="#000" fill="none"/>
<path id="path637" d="m369.84 876.92c4.305-2.914 14.556-20.425 4.722-30.815-15.194-15.401-26.165-21.479-33.658-23.977" transform="matrix(.38925 0 0 .37394 195.83 537.04)" stroke="#000" fill="none"/>
<path id="path638" d="m347.55 863.28c5.828-3.532 6.684-15.298 0.594-24.274-6.091-8.975-21.941-16.165-53.073-18.799-23.583-1.982-87.844 8.444-111.39 1.379-33.059-12.721-53.845-34.149-48.773-87.391 1.521-20.621 11.917-34.465 32.278-37.105 22.858-0.143 28.813 14.734 28.813 33.571 0 9.681-25.317 18.878-29.909 9.705-7.109-12.854-10.217-24.451 15.881-30.607" transform="matrix(.38925 0 0 .37394 195.83 537.04)" stroke="#000" fill="none"/>
<path id="path642" d="m337.41 844.59s9.765 5.685 7.41 10.395c-2.354 4.709-8.658 2.7-4.496-2.296" transform="matrix(.38925 0 0 .37394 195.83 537.04)" stroke="#000" fill="none"/>
<path id="path643" d="m238.95 291.4s-6.66 6.66-3.33 22.479 9.991 14.987 9.991 14.987" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path644" d="m216.47 300.55c-0.833 1.665-9.706 11.858-4.71 22.681 4.995 10.824 8.956 12.977 8.956 12.977" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path645" d="m193.99 313.87s-7.195 10.622-8.567 29.555 7.789 45 7.533 54.698c-0.581 20.609-24.012 30.839-24.012 30.839" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path652" d="m159.85 543.66c1.665 0 34.135-29.972 34.135 76.597-2.498 61.61-38.298 67.438-38.298 67.438" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path653" d="m162.49 689.71c13.148-3.336 40.425 10.99 30.613 35.324" transform="matrix(.38925 0 0 .37394 196.91 537.13)" stroke="#000" fill="none"/>
<path id="path654" d="m167.78 681.47c8.439 0.785 15.319 6.904 18.458 15.343" transform="matrix(.38925 0 0 .37394 196.12 536.47)" stroke="#000" fill="none"/>
<path id="path655" d="m148.2 477.06s9.991 14.154 24.977 14.154 19.982-15.819 19.982-15.819" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path656" d="m146.53 484.55s9.158 16.652 24.977 17.484c15.819 0.833 21.647-10.823 21.647-10.823" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path657" d="m179.84 509.52s11.657 4.996 11.657 19.15c0 14.153-10.824 10.823-10.824 10.823" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path712" d="m356.44 346.62c-0.575 17.961-31.258 14.828-51.514 13.859-26.326-1.231-77.59-46.08-44.263-69.888" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path713" d="m164.84 449.52c-16.484 17.662 28.691 13.497 9.419-9.419-7.87-8.82-41.21 18.839-41.21 49.452s10.597 44.742 16.484 45.919c5.887 1.178 15.307-3.532 15.307-8.241 0-5.887-4.71-15.307-11.774-14.13-11.775 0-5.888 10.597-0.001 10.597" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path714" d="m163.39 451.39s-24.453 9.908-24.453 39.343c0 29.436 7.065 28.259 7.065 28.259" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path715" d="m166.02 430.68s24.726-3.533 23.549 18.838c-1.178 22.371-9.42 23.549-22.371 22.371-12.952-1.177-5.887-16.483-5.887-16.483" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path716" d="m156.6 543.71s18.839-1.178 17.661-21.194c-1.177-20.016-15.306-21.194-23.548-20.016-8.242 1.177-10.74 5.803-8.242 12.88" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path717" d="m150.71 567.26s3.936-8.158 16.887-8.158c12.952 0 18.982 30.386 17.805 63.354-1.178 32.968-33.515 61.37-40.58 59.015-7.064-2.355-10.597-3.533-4.71-8.242" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path718" d="m172.39 643.31-22.859 38.166" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path719" d="m141.29 667.34c0 0.416 5.054-1.105 8.587 1.249 3.532 2.355 4.365 5.816 4.365 5.816" transform="matrix(-.38925 0 0 .37394 506.83 536.47)" stroke="#000" fill="none"/>
<path id="path720" d="m144.82 650.86s4.517-1.819 10.404 0.536 5.695 7.662 5.695 7.662" transform="matrix(-.35485 0 0 .26779 500.15 605.66)" stroke="#000" fill="none"/>
<path id="path721" d="m170.42 741.5c-2.354 0 15.451-19.877-0.688-23.897-20.284-3.872-28.744 16.55-26.389 28.323 5.072 28.746 16.897 64.033 52.945 66.388 30.613 2.355 78.451-5.101 108.3-1.523 29.44 3.433 61.94 14.272 73.714 26.047 11.774 11.774 19.112 11.892 19.112 23.667 0 11.774-16.815 17.816-23.476 10.74" transform="matrix(-.38925 0 0 .37394 505.26 537.04)" stroke="#000" fill="none"/>
<path id="path722" d="m369.84 876.92c4.305-2.914 14.556-20.425 4.722-30.815-15.194-15.401-26.165-21.479-33.658-23.977" transform="matrix(-.38925 0 0 .37394 505.26 537.04)" stroke="#000" fill="none"/>
<path id="path723" d="m347.55 863.28c5.828-3.532 6.684-15.298 0.594-24.274-6.091-8.975-21.941-16.165-53.073-18.799-23.583-1.982-87.844 8.444-111.39 1.379-43.929-18.378-53.505-42.635-52.509-81.734 1.521-20.621 12.257-36.587 32.618-39.227 22.858-0.143 26.774 11.906 26.774 30.744 0 9.68-9.013 25.716-21.334 23.362-12.322-3.188-21.92-25.013-1.106-36.669" transform="matrix(-.38925 0 0 .37394 505.26 537.04)" stroke="#000" fill="none"/>
<path id="path724" d="m337.41 844.59s9.765 5.685 7.41 10.395c-2.354 4.709-8.658 2.7-4.496-2.296" transform="matrix(-.38925 0 0 .37394 505.26 537.04)" stroke="#000" fill="none"/>
<path id="path725" d="m238.95 291.4s-6.66 6.66-3.33 22.479 9.991 14.987 9.991 14.987" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path726" d="m216.47 300.55c-0.833 1.665-9.706 11.858-4.71 22.681 4.995 10.824 8.956 12.977 8.956 12.977" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path727" d="m193.99 313.87s-7.195 10.622-8.567 29.555 7.789 45 7.533 54.698c-0.581 20.609-24.012 30.839-24.012 30.839" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path730" d="m159.85 543.66c1.665 0 34.135-29.972 34.135 76.597-2.498 61.61-38.298 67.438-38.298 67.438" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path731" d="m158.07 701.03c16.205-14.296 47.219 13.112 35.708 38.506" transform="matrix(-.38925 0 0 .37394 506.56 534.49)" stroke="#000" fill="none"/>
<path id="path732" d="m167.78 681.47c8.439 0.785 17.357 6.197 20.496 14.636" transform="matrix(-.38925 0 0 .37394 508.02 537.4)" stroke="#000" fill="none"/>
<path id="path733" d="m148.2 477.06s9.991 14.154 24.977 14.154 19.982-15.819 19.982-15.819" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path734" d="m146.53 484.55s9.158 16.652 24.977 17.484c15.819 0.833 21.647-10.823 21.647-10.823" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path735" d="m179.84 509.52s11.657 4.996 11.657 19.15c0 14.153-10.824 10.823-10.824 10.823" transform="matrix(-.38925 0 0 .37394 506.43 536.23)" stroke="#000" fill="none"/>
<path id="path741" d="m353.01 313.46c0.416-0.416-1.665-9.159 8.326-8.742 9.99 0.416 6.244 9.574 14.57 12.904 7.909 2.082 22.063 4.164 22.528 4.164s14.619-2.082 22.528-4.164c8.326-3.33 4.58-12.488 14.57-12.904 9.991-0.417 7.91 8.326 8.326 8.742" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path744" d="m373.28 349.42c-0.294-4.121-1.249-9.55-6.871-9.966-10.525-0.345-18.856 20.605 4.444 20.753 17.055 0.111 17.198-32.355 0.804-32.831-23.549-0.667-26.788 13.389-26.402 16.143 5.957-50.397-33.246-40.206-31.373-59.77 0.207-10.606 10.849-11.822 22.479-9.857 17.459 2.799 14.151 30.967 62.078 30.198 47.927 0.769 44.619-27.399 62.078-30.198 11.63-1.965 22.272-0.749 22.479 9.857 1.873 19.564-37.33 9.373-31.373 59.77 0.386-2.754-2.853-16.81-26.402-16.143-16.394 0.476-16.251 32.942 0.804 32.831 23.3-0.148 14.969-21.098 4.444-20.753-5.622 0.416-6.577 5.845-6.871 9.966" transform="matrix(.38925 0 0 .37394 196.25 536.23)" stroke="#000" fill="none"/>
<path id="path814" d="m404.47 889.55v0.217h-4.155v-0.217h0.264c0.231 0 0.416-0.041 0.557-0.123 0.101-0.055 0.179-0.148 0.234-0.281 0.043-0.094 0.065-0.34 0.065-0.738v-5.227c0-0.406-0.022-0.66-0.065-0.762-0.043-0.101-0.131-0.189-0.264-0.263-0.129-0.079-0.304-0.118-0.527-0.118h-0.264v-0.216h4.155v0.216h-0.264c-0.23 0-0.416 0.041-0.557 0.123-0.101 0.055-0.181 0.149-0.24 0.282-0.043 0.093-0.064 0.34-0.064 0.738v5.227c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.133 0.074 0.31 0.111 0.533 0.111h0.264z" transform="matrix(1.0544 -.26437 .21258 1.3113 -201.97 -224.59)"/>
<path id="path815" d="m399.64 881.82v2.15h-0.211c-0.125-0.496-0.264-0.852-0.416-1.066-0.153-0.219-0.362-0.393-0.627-0.522-0.149-0.07-0.409-0.105-0.78-0.105h-0.591v6.129c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.132 0.074 0.312 0.111 0.539 0.111h0.263v0.217h-4.16v-0.217h0.264c0.23 0 0.416-0.041 0.557-0.123 0.101-0.055 0.181-0.148 0.24-0.281 0.043-0.094 0.064-0.34 0.064-0.738v-6.129h-0.574c-0.535 0-0.924 0.113-1.166 0.34-0.34 0.316-0.555 0.767-0.645 1.353h-0.222v-2.15h7.137z" transform="matrix(1.0667 -.17210 .13839 1.3265 -141.19 -274.74)"/>
<path id="path820" d="m370.04 882.28v3.263h0.229c0.351 0 0.638-0.052 0.861-0.158 0.222-0.105 0.41-0.283 0.562-0.533 0.157-0.25 0.258-0.588 0.305-1.014h0.205v3.99h-0.205c-0.074-0.753-0.277-1.25-0.609-1.488-0.328-0.242-0.702-0.363-1.119-0.363h-0.229v2.432c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.133 0.074 0.311 0.111 0.533 0.111h0.264v0.217h-4.154v-0.217h0.263c0.231 0 0.416-0.041 0.557-0.123 0.102-0.055 0.18-0.148 0.234-0.281 0.043-0.094 0.065-0.34 0.065-0.738v-5.227c0-0.406-0.022-0.66-0.065-0.762-0.043-0.101-0.13-0.189-0.263-0.263-0.129-0.079-0.305-0.118-0.528-0.118h-0.263v-0.216h6.703v2.279h-0.24c-0.055-0.535-0.196-0.932-0.422-1.19-0.223-0.257-0.547-0.439-0.973-0.544-0.234-0.059-0.668-0.088-1.301-0.088h-0.738z" transform="matrix(1.0721 -.10760 .086523 1.3333 -97.42 -305.95)"/>
<path id="path823" d="m354.64 881.82v2.15h-0.211c-0.125-0.496-0.264-0.852-0.416-1.066-0.153-0.219-0.362-0.393-0.627-0.522-0.149-0.07-0.409-0.105-0.78-0.105h-0.591v6.129c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.132 0.074 0.312 0.111 0.539 0.111h0.263v0.217h-4.16v-0.217h0.264c0.23 0 0.416-0.041 0.557-0.123 0.101-0.055 0.181-0.148 0.24-0.281 0.043-0.094 0.064-0.34 0.064-0.738v-6.129h-0.574c-0.535 0-0.924 0.113-1.166 0.34-0.34 0.316-0.555 0.767-0.645 1.353h-0.222v-2.15h7.137z" transform="matrix(1.0756 0 0 1.3376 -22.152 -348.78)"/>
<path id="path824" d="m346.8 889.55v0.217h-4.154v-0.217h0.263c0.231 0 0.416-0.041 0.557-0.123 0.101-0.055 0.18-0.148 0.234-0.281 0.043-0.094 0.065-0.34 0.065-0.738v-5.227c0-0.406-0.022-0.66-0.065-0.762-0.043-0.101-0.131-0.189-0.263-0.263-0.129-0.079-0.305-0.118-0.528-0.118h-0.263v-0.216h4.154v0.216h-0.264c-0.23 0-0.416 0.041-0.556 0.123-0.102 0.055-0.182 0.149-0.241 0.282-0.043 0.093-0.064 0.34-0.064 0.738v5.227c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.133 0.074 0.311 0.111 0.533 0.111h0.264z" transform="matrix(1.0756 0 0 1.3376 -22.555 -348.78)"/>
<path id="path825" d="m336.73 881.82 3.92 4.927v-3.416c0-0.476-0.069-0.798-0.206-0.966-0.187-0.227-0.502-0.336-0.943-0.329v-0.216h2.625v0.216c-0.336 0.043-0.562 0.1-0.68 0.17-0.113 0.067-0.203 0.178-0.269 0.334-0.063 0.153-0.094 0.416-0.094 0.791v6.616h-0.199l-5.373-6.616v5.051c0 0.457 0.103 0.766 0.31 0.926 0.211 0.16 0.452 0.24 0.721 0.24h0.188v0.217h-2.819v-0.217c0.438-0.004 0.742-0.094 0.914-0.269 0.172-0.176 0.258-0.475 0.258-0.897v-5.607l-0.17-0.211c-0.168-0.211-0.316-0.35-0.445-0.416-0.129-0.067-0.315-0.104-0.557-0.112v-0.216h2.819z" transform="matrix(1.0756 0 0 1.3376 -22.957 -348.78)"/>
<path id="path826" d="m333.61 881.82v0.216c-0.289 0.047-0.547 0.202-0.773 0.463-0.164 0.196-0.408 0.655-0.733 1.377l-2.736 6.071h-0.193l-2.725-6.317c-0.328-0.762-0.549-1.209-0.662-1.342-0.109-0.132-0.318-0.216-0.627-0.252v-0.216h3.809v0.216h-0.129c-0.344 0-0.578 0.043-0.703 0.129-0.09 0.059-0.135 0.145-0.135 0.258 0 0.07 0.015 0.154 0.047 0.252 0.031 0.094 0.136 0.35 0.316 0.768l1.693 3.955 1.571-3.522c0.187-0.426 0.303-0.711 0.345-0.855 0.043-0.145 0.065-0.268 0.065-0.369 0-0.118-0.031-0.221-0.094-0.311-0.062-0.09-0.154-0.158-0.275-0.205-0.168-0.066-0.391-0.1-0.668-0.1v-0.216h2.607z" transform="matrix(1.0747 .054651 -.043945 1.3365 15.894 -366.74)"/>
<path id="path827" d="m321.03 881.64 0.065 2.648h-0.241c-0.113-0.664-0.392-1.197-0.837-1.599-0.442-0.406-0.92-0.61-1.436-0.61-0.398 0-0.715 0.108-0.949 0.323-0.231 0.211-0.346 0.455-0.346 0.732 0 0.176 0.041 0.332 0.123 0.469 0.113 0.183 0.295 0.365 0.545 0.545 0.184 0.129 0.607 0.357 1.271 0.685 0.93 0.457 1.557 0.889 1.881 1.295 0.321 0.407 0.481 0.871 0.481 1.395 0 0.664-0.26 1.236-0.779 1.717-0.516 0.476-1.172 0.714-1.969 0.714-0.25 0-0.487-0.025-0.709-0.076-0.223-0.051-0.502-0.146-0.838-0.287-0.188-0.078-0.342-0.117-0.463-0.117-0.102 0-0.209 0.039-0.322 0.117-0.114 0.078-0.205 0.197-0.276 0.358h-0.216v-3h0.216c0.172 0.843 0.502 1.488 0.991 1.933 0.492 0.442 1.021 0.662 1.587 0.662 0.438 0 0.786-0.119 1.043-0.357 0.262-0.238 0.393-0.516 0.393-0.832 0-0.188-0.051-0.369-0.152-0.545-0.098-0.176-0.248-0.342-0.451-0.498-0.204-0.16-0.563-0.367-1.079-0.621-0.722-0.356-1.242-0.658-1.558-0.908-0.317-0.25-0.561-0.53-0.733-0.838-0.168-0.309-0.252-0.649-0.252-1.02 0-0.633 0.233-1.172 0.698-1.617s1.05-0.668 1.757-0.668c0.258 0 0.508 0.031 0.75 0.094 0.184 0.047 0.407 0.135 0.668 0.263 0.266 0.125 0.452 0.188 0.557 0.188 0.102 0 0.182-0.031 0.24-0.094 0.059-0.062 0.114-0.213 0.164-0.451h0.176z" transform="matrix(1.0737 .079582 -.063992 1.3353 32.323 -374.09)"/>
<path id="path828" d="m315.27 881.82v0.216c-0.289 0.047-0.546 0.202-0.773 0.463-0.164 0.196-0.408 0.655-0.732 1.377l-2.737 6.071h-0.193l-2.725-6.317c-0.328-0.762-0.549-1.209-0.662-1.342-0.109-0.132-0.318-0.216-0.627-0.252v-0.216h3.809v0.216h-0.129c-0.344 0-0.578 0.043-0.703 0.129-0.09 0.059-0.135 0.145-0.135 0.258 0 0.07 0.016 0.154 0.047 0.252 0.031 0.094 0.137 0.35 0.316 0.768l1.694 3.955 1.57-3.522c0.187-0.426 0.303-0.711 0.346-0.855 0.043-0.145 0.064-0.268 0.064-0.369 0-0.118-0.031-0.221-0.094-0.311-0.062-0.09-0.154-0.158-0.275-0.205-0.168-0.066-0.391-0.1-0.668-0.1v-0.216h2.607z" transform="matrix(1.0684 .15492 -.12457 1.3286 87.767 -392.06)"/>
<path id="path829" d="m306.3 881.82v2.15h-0.211c-0.125-0.496-0.264-0.852-0.416-1.066-0.152-0.219-0.361-0.393-0.627-0.522-0.148-0.07-0.408-0.105-0.779-0.105h-0.592v6.129c0 0.406 0.021 0.66 0.064 0.761 0.047 0.102 0.135 0.192 0.264 0.27 0.133 0.074 0.312 0.111 0.539 0.111h0.264v0.217h-4.16v-0.217h0.263c0.231 0 0.416-0.041 0.557-0.123 0.101-0.055 0.182-0.148 0.24-0.281 0.043-0.094 0.065-0.34 0.065-0.738v-6.129h-0.575c-0.535 0-0.923 0.113-1.166 0.34-0.34 0.316-0.554 0.767-0.644 1.353h-0.223v-2.15h7.137z" transform="matrix(1.0645 .19192 -.15432 1.3238 115.07 -398.65)"/>
<path id="path832" d="m289.79 889.55v0.217h-4.154v-0.217h0.264c0.23 0 0.416-0.041 0.556-0.123 0.102-0.055 0.18-0.148 0.235-0.281 0.042-0.094 0.064-0.34 0.064-0.738v-5.227c0-0.406-0.022-0.66-0.064-0.762-0.043-0.101-0.131-0.189-0.264-0.263-0.129-0.079-0.305-0.118-0.527-0.118h-0.264v-0.216h4.154v0.216h-0.264c-0.23 0-0.416 0.041-0.556 0.123-0.102 0.055-0.182 0.149-0.24 0.282-0.043 0.093-0.065 0.34-0.065 0.738v5.227c0 0.406 0.022 0.66 0.065 0.761 0.046 0.102 0.134 0.192 0.263 0.27 0.133 0.074 0.311 0.111 0.533 0.111h0.264z" transform="matrix(1.0454 .31493 -.25324 1.3 207.07 -413.52)"/>
<path id="path833" d="m285.27 881.82v0.216c-0.29 0.047-0.547 0.202-0.774 0.463-0.164 0.196-0.408 0.655-0.732 1.377l-2.737 6.071h-0.193l-2.725-6.317c-0.328-0.762-0.548-1.209-0.662-1.342-0.109-0.132-0.318-0.216-0.627-0.252v-0.216h3.809v0.216h-0.129c-0.344 0-0.578 0.043-0.703 0.129-0.09 0.059-0.135 0.145-0.135 0.258 0 0.07 0.016 0.154 0.047 0.252 0.031 0.094 0.137 0.35 0.316 0.768l1.694 3.955 1.57-3.522c0.188-0.426 0.303-0.711 0.346-0.855 0.043-0.145 0.064-0.268 0.064-0.369 0-0.118-0.031-0.221-0.094-0.311-0.062-0.09-0.154-0.158-0.275-0.205-0.168-0.066-0.391-0.1-0.668-0.1v-0.216h2.608z" transform="matrix(1.0402 .34045 -.27376 1.2936 226.33 -414.79)"/>
<path id="path836" d="m409.38 881.71c1.265-0.047 2.293 0.323 3.082 1.108 0.793 0.785 1.189 1.767 1.189 2.947 0 1.008-0.295 1.895-0.884 2.66-0.782 1.016-1.885 1.524-3.311 1.524-1.43 0-2.535-0.485-3.316-1.454-0.618-0.765-0.926-1.673-0.926-2.724 0-1.18 0.4-2.162 1.201-2.947 0.805-0.789 1.793-1.161 2.965-1.114zm0.07 0.375c-0.726 0-1.279 0.371-1.658 1.114-0.309 0.609-0.463 1.484-0.463 2.625 0 1.355 0.238 2.357 0.715 3.005 0.332 0.454 0.797 0.68 1.394 0.68 0.403 0 0.739-0.098 1.008-0.293 0.344-0.25 0.612-0.648 0.803-1.195 0.191-0.551 0.287-1.268 0.287-2.151 0-1.05-0.098-1.835-0.293-2.355-0.195-0.523-0.445-0.893-0.75-1.107-0.301-0.215-0.648-0.323-1.043-0.323z" transform="matrix(1.0667 -.17210 .13839 1.3265 -141.19 -275.24)"/>
<path id="path839" d="m378.71 881.71c1.266-0.047 2.293 0.323 3.082 1.108 0.793 0.785 1.189 1.767 1.189 2.947 0 1.008-0.294 1.895-0.884 2.66-0.782 1.016-1.885 1.524-3.311 1.524-1.43 0-2.535-0.485-3.316-1.454-0.617-0.765-0.926-1.673-0.926-2.724 0-1.18 0.4-2.162 1.201-2.947 0.805-0.789 1.793-1.161 2.965-1.114zm0.07 0.375c-0.726 0-1.279 0.371-1.658 1.114-0.308 0.609-0.463 1.484-0.463 2.625 0 1.355 0.239 2.357 0.715 3.005 0.332 0.454 0.797 0.68 1.395 0.68 0.402 0 0.738-0.098 1.007-0.293 0.344-0.25 0.612-0.648 0.803-1.195 0.192-0.551 0.287-1.268 0.287-2.151 0-1.05-0.097-1.835-0.293-2.355-0.195-0.523-0.445-0.893-0.75-1.107-0.3-0.215-0.648-0.323-1.043-0.323z" transform="matrix(1.0721 -.10760 .086523 1.3333 -97.42 -305.95)"/>
<path id="path842" d="m386.6 886.15v2.226c0 0.43 0.025 0.702 0.076 0.815 0.055 0.109 0.148 0.197 0.281 0.264 0.133 0.066 0.381 0.099 0.744 0.099v0.217h-4.066v-0.217c0.367 0 0.615-0.033 0.744-0.099 0.133-0.071 0.225-0.161 0.275-0.27 0.055-0.109 0.082-0.379 0.082-0.809v-5.156c0-0.43-0.027-0.699-0.082-0.808-0.05-0.114-0.142-0.204-0.275-0.27s-0.381-0.1-0.744-0.1v-0.216h3.691c0.961 0 1.664 0.066 2.11 0.199 0.445 0.133 0.808 0.379 1.09 0.738 0.281 0.356 0.421 0.774 0.421 1.254 0 0.586-0.211 1.07-0.632 1.453-0.27 0.242-0.647 0.424-1.131 0.545l1.91 2.69c0.25 0.347 0.428 0.564 0.533 0.65 0.16 0.121 0.346 0.187 0.557 0.199v0.217h-2.502l-2.561-3.621h-0.521zm0-3.897v3.481h0.334c0.543 0 0.949-0.049 1.218-0.147 0.27-0.101 0.481-0.281 0.633-0.539 0.157-0.261 0.235-0.601 0.235-1.019 0-0.606-0.143-1.053-0.428-1.342-0.281-0.289-0.736-0.434-1.365-0.434h-0.627z" transform="matrix(1.0667 -.17210 .13839 1.3265 -141.19 -275.24)"/>
<path id="path845" d="m417.27 886.15v2.226c0 0.43 0.025 0.702 0.076 0.815 0.054 0.109 0.148 0.197 0.281 0.264 0.133 0.066 0.381 0.099 0.744 0.099v0.217h-4.066v-0.217c0.367 0 0.615-0.033 0.744-0.099 0.133-0.071 0.224-0.161 0.275-0.27 0.055-0.109 0.082-0.379 0.082-0.809v-5.156c0-0.43-0.027-0.699-0.082-0.808-0.051-0.114-0.142-0.204-0.275-0.27s-0.381-0.1-0.744-0.1v-0.216h3.691c0.961 0 1.664 0.066 2.109 0.199 0.446 0.133 0.809 0.379 1.09 0.738 0.282 0.356 0.422 0.774 0.422 1.254 0 0.586-0.211 1.07-0.633 1.453-0.269 0.242-0.646 0.424-1.13 0.545l1.91 2.69c0.25 0.347 0.427 0.564 0.533 0.65 0.16 0.121 0.346 0.187 0.557 0.199v0.217h-2.502l-2.561-3.621h-0.521zm0-3.897v3.481h0.334c0.543 0 0.949-0.049 1.218-0.147 0.27-0.101 0.481-0.281 0.633-0.539 0.156-0.261 0.234-0.601 0.234-1.019 0-0.606-0.142-1.053-0.427-1.342-0.282-0.289-0.737-0.434-1.365-0.434h-0.627z" transform="matrix(1.0417 -.33296 .26773 1.2955 -245.66 -181.16)"/>
<path id="path848" d="m293.25 886.15v2.226c0 0.43 0.025 0.702 0.076 0.815 0.055 0.109 0.149 0.197 0.281 0.264 0.133 0.066 0.381 0.099 0.745 0.099v0.217h-4.067v-0.217c0.367 0 0.615-0.033 0.744-0.099 0.133-0.071 0.225-0.161 0.276-0.27 0.054-0.109 0.082-0.379 0.082-0.809v-5.156c0-0.43-0.028-0.699-0.082-0.808-0.051-0.114-0.143-0.204-0.276-0.27-0.132-0.066-0.381-0.1-0.744-0.1v-0.216h3.692c0.961 0 1.664 0.066 2.109 0.199s0.809 0.379 1.09 0.738c0.281 0.356 0.422 0.774 0.422 1.254 0 0.586-0.211 1.07-0.633 1.453-0.27 0.242-0.647 0.424-1.131 0.545l1.91 2.69c0.25 0.347 0.428 0.564 0.533 0.65 0.161 0.121 0.346 0.187 0.557 0.199v0.217h-2.502l-2.56-3.621h-0.522zm0-3.897v3.481h0.334c0.543 0 0.949-0.049 1.219-0.147 0.269-0.101 0.48-0.281 0.633-0.539 0.156-0.261 0.234-0.601 0.234-1.019 0-0.606-0.143-1.053-0.428-1.342-0.281-0.289-0.736-0.434-1.365-0.434h-0.627z" transform="matrix(1.0633 .20168 -.16217 1.3223 122.81 -400.27)"/>
<path id="path851" d="m360.07 887.51h-2.806l-0.334 0.774c-0.11 0.257-0.164 0.47-0.164 0.638 0 0.223 0.089 0.387 0.269 0.493 0.106 0.062 0.365 0.109 0.779 0.14v0.217h-2.642v-0.217c0.285-0.043 0.519-0.16 0.703-0.351 0.184-0.196 0.41-0.596 0.68-1.202l2.842-6.339h0.111l2.865 6.515c0.274 0.617 0.498 1.006 0.674 1.166 0.133 0.121 0.32 0.192 0.562 0.211v0.217h-3.843v-0.217h0.158c0.308 0 0.525-0.043 0.65-0.129 0.086-0.062 0.129-0.152 0.129-0.269 0-0.071-0.012-0.143-0.035-0.217-0.008-0.035-0.066-0.182-0.176-0.44l-0.422-0.99zm-0.199-0.433-1.183-2.737-1.219 2.737h2.402z" transform="matrix(1.0746 -.056381 .045336 1.3364 -62.366 -327.47)"/>
</g>
<g id="g658" fill-rule="evenodd" transform="matrix(.38925 0 0 .37394 196.25 536.23)">
<rect id="rect584" height="177.17" width="177.17" y="556.3" x="407.48" fill="#fff600"/>
<rect id="rect565" height="177.17" width="25.309" y="379.13" x="432.79" fill="#cc1900"/>
<rect id="rect566" height="177.17" width="25.309" y="379.13" x="483.41" fill="#cc1900"/>
<rect id="rect567" height="177.17" width="25.309" y="379.13" x="534.03" fill="#cc1900"/>
<rect id="rect570" height="177.17" width="25.309" y="379.13" x="407.48" fill="#fff600"/>
<rect id="rect571" height="177.17" width="25.309" y="379.13" x="458.1" fill="#fff600"/>
<rect id="rect572" height="177.17" width="25.309" y="379.13" x="508.72" fill="#fff600"/>
<rect id="rect573" height="177.17" width="25.309" y="379.13" x="559.34" fill="#fff600"/>
<rect id="rect574" height="159.45" width="19.685" y="574.02" x="271.65" fill="#cc1900"/>
<rect id="rect575" height="159.45" width="19.685" y="574.02" x="311.02" fill="#cc1900"/>
<rect id="rect576" height="159.45" width="19.685" y="574.02" x="350.39" fill="#cc1900"/>
<rect id="rect577" height="159.45" width="19.685" y="574.02" x="251.97" fill="#fff600"/>
<rect id="rect578" height="159.45" width="19.685" y="574.02" x="291.34" fill="#fff600"/>
<rect id="rect579" height="159.45" width="19.685" y="574.02" x="330.71" fill="#fff600"/>
<rect id="rect580" height="159.45" width="19.685" y="574.02" x="370.08" fill="#fff600"/>
<rect id="rect581" height="159.45" width="19.685" y="574.02" x="232.28" fill="#cc1900"/>
<rect id="rect582" height="159.45" width="19.685" y="574.02" x="212.6" fill="#fff600"/>
<rect id="rect583" height="177.17" width="177.17" y="379.13" x="212.6" fill="#cc1900"/>
<path id="path597" d="m274.92 206.71c8.913-4.302 8.549-19.089 8.549-31.313 0-24.449-19.843-44.292-44.292-44.292s-44.291 17.488-44.291 41.937l-17.717 11.213h26.52l-26.52 17.717h35.433l-248.03 318.9 17.717 17.717 248.03-318.9c6.549-8.42 0-17.716-9.158-24.793-10.805-8.349-8.559-10.64-8.559-21.579 0-15.936 11.906-24.494 26.575-24.494s26.575 11.905 26.575 26.575c0 7.335-1.502 16.184-7.787 18.788-9.93 7.787 7.787 25.503 16.955 12.525z" transform="matrix(.38555 .050804 -.045440 .34484 277.44 345.95)" stroke-width="1pt" fill="#fff600"/>
<path id="path564" d="m194.88 361.42v336.61c0 35.434 16.978 53.15 50.934 53.15h118.85c33.957 0 33.957 35.433 33.957 35.433s0-35.433 33.956-35.433h118.85c33.957 0 50.935-17.716 50.935-53.15v-336.61h-407.48zm17.716 17.717v177.16h177.17v-177.16h-177.17zm194.88 0v177.16h177.17v-177.16h-177.17zm-194.88 194.88v106.3c0 35.434 16.978 53.15 50.934 53.15h73.081 53.15v-159.45h-177.16zm372.05 0v106.3c0 35.434-16.977 53.15-50.934 53.15h-73.081-53.15v-159.45h177.16z" stroke="#000" stroke-width="1pt" fill="#cba323"/>
<path id="path585" d="m283.46 396.85-53.149 50.619 16.354 91.114h73.591l16.354-91.114-53.15-50.619z" transform="matrix(.66667 0 0 0.75 112.2 99.215)" fill="#fff"/>
<path id="path586" d="m283.46 406.97-44.291 40.495 17.717 80.99h26.574v-121.48zm8.859 0v121.48h26.575l17.716-80.99-44.291-40.495z" transform="matrix(.61539 0 0 0.7 124.02 126.14)" fill="#fff600"/>
<path id="path587" d="m212.6 201.97h-17.716s8.858 35.433 17.716 35.433c35.433 0 106.48-51.679 106.3-35.433 0 35.433-17.717 17.716-17.717 35.433 0 17.716 35.433 0 35.433-17.717 0-17.716 0-35.433-17.716-35.433-17.717 0-69.229 35.671-88.583 35.433-17.717 0-17.717-17.716-17.717-17.716z" transform="matrix(.5 0 0 .41421 203.74 419.49)" fill="#fffbff"/>
<path id="path588" d="m212.6 201.97h-17.716s8.858 35.433 17.716 35.433c35.433 0 106.48-51.679 106.3-35.433 0 35.433-17.717 17.716-17.717 35.433 0 17.716 35.433 0 35.433-17.717 0-17.716 0-35.433-17.716-35.433-17.717 0-69.229 35.671-88.583 35.433-17.717 0-17.717-17.716-17.717-17.716z" transform="matrix(-0.5 0 0 .41421 398.62 419.49)" fill="#fffbff"/>
<g id="g657" transform="matrix(.38048 0 0 .32170 515.51 448.82)">
<g id="g616" transform="translate(-2.5058 -84.936)">
<path id="path612" d="m70.866 574.02c0 35.433 28.704 36.668 17.717 53.149l-35.433 53.15h-17.716l17.716-53.15c5.9055-17.716 17.716-65.373 17.716-53.149z" transform="matrix(.97779 .20961 -.20961 .97779 72.52 -.075867)" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path607" d="m35.433 423.42c0 3.667 2.2422 31.888 0 35.067-2.2423 3.179-8.969-18.684-12.977-16.279-4.0083 2.405-7.6033 24.158-12.902 25.504-5.2983 1.35-12.3-17.71-18.412-17.71-6.1122 0-11.937 19.062-17.235 17.717-5.2984-1.346-10.071-23.099-14.079-25.504-4.0084-2.405-10.735 19.458-12.977 16.279-2.2422-3.179 0-31.4 0-35.067 0-14.669 19.842-26.575 44.291-26.575s44.291 11.906 44.291 26.575z" transform="matrix(.78240 0 0 .50048 24.647 401.29)" stroke="#fff600" stroke-width="7.9903" fill="#cc1900"/>
<path id="path605" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.71447 -.39551 .69966 .40388 -390.91 291.35)" stroke-width="1pt" fill="#008d00"/>
<path id="path602" d="m-70.866 414.57v53.15h53.15v-17.717h-35.433v-35.433h-17.716z" transform="matrix(.53461 .84510 -.84510 .53461 273.7 427.53)" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path599" d="m70.866 574.02c0 35.433 28.704 36.668 17.717 53.149l-35.433 53.15h-17.716l17.716-53.15c5.9055-17.716-17.716-35.433-70.866 0-12.224 0-70.866-8.963-70.866 0v53.15h-17.716v-53.15c0-6.941-35.433-53.149-35.433-70.866 0-12.224-53.15 0-53.15-17.716 0-8.859 35.433-17.717 35.433-35.433 0-17.717 35.433 0 53.15 0 0 17.716-17.717 35.433 17.716 35.433 24.449 0 177.17 0 177.17 17.716 0 17.717-17.717 5.493-17.717 17.717z" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path608" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.33850 -.70209 .65562 -.0045585 -354.02 632.49)" stroke-width="1pt" fill="#008d00"/>
<path id="path609" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.33850 -.70209 .65562 -.0045585 -212.29 632.49)" stroke-width="1pt" fill="#008d00"/>
<path id="path610" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(-.13112 -.76832 .53161 -.38374 -357.18 763.6)" stroke-width="1pt" fill="#008d00"/>
<path id="path613" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.31961 -.71089 .65527 -.022084 -282.41 624.63)" stroke-width="1pt" fill="#008d00"/>
<rect id="rect614" transform="rotate(-37.469)" height="17.717" width="53.15" y="354.1" x="-458.49" fill="#008d00"/>
<path id="path615" d="m-17.717 503.15c0 39.138-11.898 70.866-26.575 70.866s-26.575-31.728-26.575-70.866 11.898-70.866 26.575-70.866 26.575 31.728 26.575 70.866z" transform="matrix(.20249 0 0 .125 -127.38 519.98)" fill="#008d00"/>
</g>
<path id="path629" d="m47.995 681.85c34.086 0.02 34.086 12.901 19.835 12.901-19.835 0-67.83 4.38-67.83 3.28 0-1.103-16.484-14.203-16.484-14.203-1.2325-3.513 1.1774 14.128-1.2325 14.203-2.41 0.074-16.429-15.381-16.429-15.381s1.2877 15.232 0 15.307c-1.2877 0.074-17.661-9.42-17.661-9.42l-1.1774 8.242-15.306 9.42 15.306 10.597v8.242l15.306-8.242 1.1775 15.306 18.839-15.306s4.7648 16.299 2.3549 16.484c-2.41 0.185 16.484-16.484 16.484-16.484-1.178-1.05 54.051 0 87.405-1.05 33.354-1.048 32.746-51.937 17.716-53.15-15.031-1.213-58.304 3.33-58.304-0.203" transform="matrix(.51976 0 0 .74720 25.698 -30.033)" stroke="#fff600" stroke-width="5.0546" fill="#cc1900"/>
</g>
<g id="g671" transform="matrix(.38048 0 0 .32170 515.51 519.69)">
<g id="g672" transform="translate(-2.5058 -84.936)">
<path id="path673" d="m70.866 574.02c0 35.433 28.704 36.668 17.717 53.149l-35.433 53.15h-17.716l17.716-53.15c5.9055-17.716 17.716-65.373 17.716-53.149z" transform="matrix(.97779 .20961 -.20961 .97779 72.52 -.075867)" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path674" d="m35.433 423.42c0 3.667 2.2422 31.888 0 35.067-2.2423 3.179-8.969-18.684-12.977-16.279-4.0083 2.405-7.6033 24.158-12.902 25.504-5.2983 1.35-12.3-17.71-18.412-17.71-6.1122 0-11.937 19.062-17.235 17.717-5.2984-1.346-10.071-23.099-14.079-25.504-4.0084-2.405-10.735 19.458-12.977 16.279-2.2422-3.179 0-31.4 0-35.067 0-14.669 19.842-26.575 44.291-26.575s44.291 11.906 44.291 26.575z" transform="matrix(.78240 0 0 .50048 24.647 401.29)" stroke="#fff600" stroke-width="7.9903" fill="#cc1900"/>
<path id="path675" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.71447 -.39551 .69966 .40388 -390.91 291.35)" stroke-width="1pt" fill="#008d00"/>
<path id="path676" d="m-70.866 414.57v53.15h53.15v-17.717h-35.433v-35.433h-17.716z" transform="matrix(.53461 .84510 -.84510 .53461 273.7 427.53)" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path677" d="m70.866 574.02c0 35.433 28.704 36.668 17.717 53.149l-35.433 53.15h-17.716l17.716-53.15c5.9055-17.716-17.716-35.433-70.866 0-12.224 0-70.866-8.963-70.866 0v53.15h-17.716v-53.15c0-6.941-35.433-53.149-35.433-70.866 0-12.224-53.15 0-53.15-17.716 0-8.859 35.433-17.717 35.433-35.433 0-17.717 35.433 0 53.15 0 0 17.716-17.717 35.433 17.716 35.433 24.449 0 177.17 0 177.17 17.716 0 17.717-17.717 5.493-17.717 17.717z" stroke="#fff600" stroke-width="5" fill="#cc1900"/>
<path id="path678" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.33850 -.70209 .65562 -.0045585 -354.02 632.49)" stroke-width="1pt" fill="#008d00"/>
<path id="path679" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.33850 -.70209 .65562 -.0045585 -212.29 632.49)" stroke-width="1pt" fill="#008d00"/>
<path id="path680" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(-.13112 -.76832 .53161 -.38374 -357.18 763.6)" stroke-width="1pt" fill="#008d00"/>
<path id="path681" d="m-70.866 423.42c0 14.669-12.827 26.575-17.717 26.575-4.8898 0 0-11.906 0-26.575s-4.8898-26.575 0-26.575 17.717 11.906 17.717 26.575z" transform="matrix(.31961 -.71089 .65527 -.022084 -282.41 624.63)" stroke-width="1pt" fill="#008d00"/>
<rect id="rect682" transform="rotate(-37.469)" height="17.717" width="53.15" y="354.1" x="-458.49" fill="#008d00"/>
<path id="path683" d="m-17.717 503.15c0 39.138-11.898 70.866-26.575 70.866s-26.575-31.728-26.575-70.866 11.898-70.866 26.575-70.866 26.575 31.728 26.575 70.866z" transform="matrix(.20249 0 0 .125 -127.38 519.98)" fill="#008d00"/>
</g>
<path id="path684" d="m47.995 681.85c34.086 0.02 34.086 12.901 19.835 12.901-19.835 0-67.83 4.38-67.83 3.28 0-1.103-16.484-14.203-16.484-14.203-1.2325-3.513 1.1774 14.128-1.2325 14.203-2.41 0.074-16.429-15.381-16.429-15.381s1.2877 15.232 0 15.307c-1.2877 0.074-17.661-9.42-17.661-9.42l-1.1774 8.242-15.306 9.42 15.306 10.597v8.242l15.306-8.242 1.1775 15.306 18.839-15.306s4.7648 16.299 2.3549 16.484c-2.41 0.185 16.484-16.484 16.484-16.484-1.178-1.05 54.051 0 87.405-1.05 33.354-1.048 32.746-51.937 17.716-53.15-15.031-1.213-58.304 3.33-58.304-0.203" transform="matrix(.51976 0 0 .74720 25.698 -30.033)" stroke="#fff600" stroke-width="5.0546" fill="#cc1900"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<!--
On October 30, 2003, Brett Roper dedicated to the public domain the
work "SVG graphic of Australian Aboriginal Flag." Before making the dedication,
Brett Roper
represented that Brett Roper owned all copyrights in the
work. By making the dedication, Brett Roper made an overt act
of relinquishment in perpetuity of all present and future rights under
copyright law, whether vested or contingent, in "SVG graphic of United Arab
Emirates Flag."
Brett Roper understands that such relinquishment of all rights
includes the relinquishment of all rights to enforce (by lawsuit or
otherwise) those copyrights in the Work.
Brett Roper recognizes that, once placed in the public domain,
"SVG graphic of United Arab Emirates Flag" may be freely reproduced,
distributed, transmitted, used,
modified, built upon, or otherwise exploited by anyone for any
purpose, commercial or non-commercial, and in any way, including by
methods that have not yet been invented or conceived.
-->
<svg id="canada" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" fill="#28ff09">
<metadata id="metadata3112">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs3">
<clipPath id="clipPath4599" clipPathUnits="userSpaceOnUse">
<rect id="rect4601" height="512" width="512" y="0" x="0" fill="#808080"/>
</clipPath>
</defs>
<g id="flag" clip-path="url(#clipPath4599)" fill-rule="evenodd" transform="matrix(1.3333 0 0 1 -85.333 .000015259)">
<rect id="rect9" height="512" width="192" y="-.000015259" x="0" fill="#f00"/>
<rect id="rect12" height="171.94" width="576" y="340.06" x="192" fill="#000"/>
<rect id="rect11" height="169.65" width="576" y="172.7" x="192" fill="#fff"/>
<rect id="rect10" height="172.7" width="576" y="-.000015259" x="192" fill="#009a00"/>
</g>
</svg>

View File

@@ -0,0 +1,779 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
<rdf:RDF xmlns="http://web.resource.org/cc/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Work rdf:about="">
<dc:title>SVG graphic of Afghanistan's Flag</dc:title>
<dc:rights><Agent>
<dc:title>Andrew Duhan</dc:title>
</Agent></dc:rights>
<license rdf:resource="http://web.resource.org/cc/PublicDomain" />
</Work>
<License rdf:about="http://web.resource.org/cc/PublicDomain">
<permits rdf:resource="http://web.resource.org/cc/Reproduction" />
<permits rdf:resource="http://web.resource.org/cc/Distribution" />
<permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
</License>
</rdf:RDF>
-->
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg587" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3783">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag">
<g id="g6349" fill-rule="evenodd" stroke-width="1pt" transform="matrix(1.3333 0 0 1 -85.333 0)">
<rect id="rect590" height="512" width="512" y="5.6843e-14" x="0"/>
<rect id="rect591" height="512" width="170.67" y="5.6843e-14" x="341.33" fill="#090"/>
<rect id="rect592" height="512" width="170.67" y="5.6843e-14" x="170.67" fill="#bf0000"/>
</g>
<g id="g4603" transform="matrix(1.9463 0 0 1.9463 -350 -430.25)">
<path id="path1035" d="m384.5 357.31c-0.056 0.297 0.747 0.736 0.938 0.508 0.864-1.035 1.995-3.067 2.227-4.297 0.068-0.358-1.083-0.763-1.329-0.469-0.809 0.969-1.593 2.966-1.836 4.258z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1037" d="m276.43 420.33c-0.86048 3.0401-13.554-2.8657-14.971-5.9253 7.2632 3.8485 15.145 3.0436 14.971 5.9253z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1042" d="m236.3 358.23c0.63456 0.75517 1.7042 0.24913 0.72951-0.77292-0.79772-0.82583-0.53515-1.0864-1.0213-2.0926-0.48071-1.1242-0.45566-1.7445-1.0359-2.5477-0.51311-0.76202-1.2849 0.0154-0.76788 0.65672 0.64906 0.75844 0.46988 1.3178 0.86685 2.0515 0.7335 1.2556 0.55465 1.9148 1.2287 2.705z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1051" d="m253.37 378.84c2.042 1.004 3.592 3.512 3.694 5.555 0.173 2.351 0.512 4.336 1.568 6.007-1.681-0.468-2.486-3.147-2.725-5.713-0.242-2.656-1.673-3.808-2.537-5.849z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1052" d="m257.63 383.76c1.413 2.6083 3.389 3.6031 3.49 5.5387 0.17118 2.2274 0.34039 2.3411 0.94398 4.5316-1.6634-0.4434-2.0819-0.58836-2.5312-3.9214-0.27706-2.3421-2.1522-3.9944-1.9028-6.1489z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1070" stroke-linejoin="round" d="m290.64 397.78c2.162 1.771 3.565 3.793 4.219 6.406 0.682 2.434 1.641 4.375 3.048 6.563-2.292-1.563-3.733-3.689-4.454-6.251-0.633-2.518-1.38-4.4-2.813-6.718z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1072" stroke-linejoin="round" d="m331.11 397.78c-2.21 1.7814-3.6441 3.8153-4.3126 6.4437-0.69713 2.4483-1.6774 4.4007-3.1156 6.6016 2.3428-1.5722 3.8158-3.7107 4.5528-6.2878 0.64704-2.5328 1.4106-4.4259 2.8754-6.7575z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1073" stroke-linejoin="round" d="m328.39 397.78c-2.3694 1.8609-4.6029 3.9732-5.2714 6.6016-0.69713 2.4483-1.1183 4.3223-2.7159 6.7585 2.5023-1.5722 3.4959-3.9471 4.2329-6.5242 0.64704-2.5318 2.1302-4.4249 3.7545-6.836z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1075" stroke-linejoin="round" d="m301.61 407.89c0.794 1.497 1.706 3.776 3.359 3.359 0.026-1.146-1.784-1.94-3.359-3.359z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1076" stroke-linejoin="round" d="m304.08 408.4c3.2104 1.316 5.9828 0.991 6.3282 3.009-3.0118 0.325-4.1132-0.912-6.3282-3.009z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1077" stroke-linejoin="round" d="m319.82 408.09c-0.80485 1.4112-1.7293 3.5597-3.4049 3.1666-0.0264-1.0803 1.8084-1.8288 3.4049-3.1666z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1078" stroke-linejoin="round" d="m317.57 408.52c-3.2572 1.2488-6.0699 0.9404-6.4204 2.8554 3.0556 0.30841 4.1731-0.86543 6.4204-2.8554z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1082" d="m320.54 403.95c0.0637-0.457-0.24784-0.856-0.62208-0.976-0.72858-0.274-1.4542-0.497-2.1768-0.703-0.82114-0.195-1.281 0.394-1.284 0.781-0.004 0.644-0.0338 1.191 0 1.679 0.0448 0.608 0.16025 0.653 0.54444 0.743 0.61511 0.104 1.4034 0.21 2.0215 0.625 0.4897 0.302 0.96049 0.063 1.2053-0.468 0.15826-0.406 0.24485-1.2 0.31154-1.681z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1083" d="m311.69 403.95c-0.0569-0.457 0.18318-0.895 0.51752-1.015 0.65091-0.274 1.2991-0.341 1.983-0.313 0.75938-0.012 0.95056 0.16 0.95323 0.547 0.004 0.644 0.0302 1.269 0 1.757-0.04 0.608-0.0267 0.653-0.36991 0.743-0.54953 0.104-1.4868 0.132-2.039 0.547-0.4375 0.302-0.93634 0.063-0.96035-0.507 0.0107-0.43-0.0249-1.278-0.0845-1.759z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path1084" d="m300.95 403.83c-0.064-0.457 0.249-0.856 0.625-0.976 0.732-0.274 1.461-0.497 2.187-0.703 0.825-0.195 1.287 0.394 1.29 0.781 0.004 0.644 0.034 1.191 0 1.679-0.045 0.608-0.161 0.653-0.547 0.743-0.618 0.104-1.41 0.21-2.031 0.625-0.492 0.302-0.965 0.063-1.211-0.468-0.159-0.406-0.246-1.2-0.313-1.681z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1085" d="m309.84 403.83c0.0572-0.457-0.18404-0.895-0.51995-1.015-0.65396-0.274-1.3052-0.341-1.9922-0.313-0.76295-0.012-0.95503 0.16-0.95771 0.547-0.004 0.644-0.0304 1.269 0 1.757 0.0402 0.608 0.0268 0.653 0.37165 0.743 0.55211 0.104 1.4937 0.132 2.0485 0.547 0.43955 0.302 0.94074 0.063 0.96486-0.507-0.0107-0.43 0.025-1.278 0.0849-1.759z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<g id="g1194" transform="translate(.33148 198.84)">
<path id="path1188" d="m274.79 144.77c-1.033-1.659-2.27 2.301-6.519 5.249-1.978 1.346-3.356 4.933-3.369 7.293-0.065 1.621 0.18 3.238-0.001 4.806-0.114 0.992-1.148 3.194-0.441 3.757 1.87 1.39 4.291 4.546 5.414 5.635 0.971 0.851 1.812-4.393 2.541-6.74 0.781-2.515 0.431-5.521 2.597-7.845 1.535-1.569 5.407-3.113 4.972-3.812l-5.194-8.343z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1145" d="m274.79 144.77c-1.033-1.659-2.27 2.301-6.519 5.249-1.978 1.346-3.356 4.933-3.369 7.293-0.065 1.621 0.18 3.238-0.001 4.806-0.114 0.992-1.148 3.194-0.441 3.757 1.87 1.39 4.291 4.546 5.414 5.635 0.971 0.851 1.812-4.393 2.541-6.74 0.781-2.515 0.431-5.521 2.597-7.845 1.535-1.569 5.407-3.113 4.972-3.812l-5.194-8.343z" fill-rule="evenodd" fill="#fff"/>
<path id="path1146" d="m268.51 149.68c-0.405 2.809 1.159 3.744 2.635 4.288 1.528 0.543 2.781 2.182 3.426 3.665" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1147" d="m267.27 151.14c0.645 2.422 2.342 2.119 3.818 2.663 1.528 0.543 3.135 2.475 3.78 3.958" transform="translate(-2.5413 7.7896)" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1143" d="m273.36 143.06 0.774-0.497 14.86 25.027-0.773 0.497-14.861-25.027z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1193" d="m273.36 143.06 0.774-0.497 14.86 25.027-0.773 0.497-14.861-25.027z" fill-rule="evenodd" fill="#fff"/>
<path id="path1159" d="m274.96 142.07c0 0.94585-0.76676 1.7126-1.7126 1.7126-0.94585 0-1.7126-0.76676-1.7126-1.7126s0.76676-1.7126 1.7126-1.7126c0.94586 0 1.7126 0.76676 1.7126 1.7126z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1186" d="m274.96 142.07c0 0.94585-0.76676 1.7126-1.7126 1.7126-0.94585 0-1.7126-0.76676-1.7126-1.7126s0.76676-1.7126 1.7126-1.7126c0.94586 0 1.7126 0.76676 1.7126 1.7126z" fill-rule="evenodd" fill="#fff"/>
</g>
<g id="g1208" transform="translate(0,199.5)">
<path id="path1203" d="m274.79 144.77c-1.033-1.659-2.27 2.301-6.519 5.249-1.978 1.346-3.356 4.933-3.369 7.293-0.065 1.621 0.18 3.238-0.001 4.806-0.114 0.992-1.148 3.194-0.441 3.757 1.87 1.39 4.291 4.546 5.414 5.635 0.971 0.851 1.812-4.393 2.541-6.74 0.781-2.515 0.431-5.521 2.597-7.845 1.535-1.569 5.407-3.113 4.972-3.812l-5.194-8.343z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke="#000" stroke-width=".49160" fill="#fff"/>
<path id="path1140" d="m274.79 144.77c-1.033-1.659-2.27 2.301-6.519 5.249-1.978 1.346-3.356 4.933-3.369 7.293-0.065 1.621 0.18 3.238-0.001 4.806-0.114 0.992-1.148 3.194-0.441 3.757 1.87 1.39 4.291 4.546 5.414 5.635 0.971 0.851 1.812-4.393 2.541-6.74 0.781-2.515 0.431-5.521 2.597-7.845 1.535-1.569 5.407-3.113 4.972-3.812l-5.194-8.343z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke-width="1pt" fill="#fff"/>
<path id="path1138" d="m273.36 143.06 0.774-0.497 14.86 25.027-0.773 0.497-14.861-25.027z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke="#000" stroke-width=".49160" fill="#fff"/>
<path id="path1141" d="m268.43 149.76c-0.405 2.809 1.237 3.665 2.713 4.209 1.528 0.543 2.859 2.064 3.504 3.547" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1142" d="m267.35 151.26c0.645 2.422 2.264 2.005 3.74 2.549 1.528 0.543 3.135 2.32 3.78 3.803" transform="matrix(-.99948 0 0 1.035 623.97 2.8373)" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1204" d="m273.36 143.06 0.774-0.497 14.86 25.027-0.773 0.497-14.861-25.027z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke-width="1pt" fill="#fff"/>
<path id="path1207" d="m274.96 142.07c0 0.94585-0.76676 1.7126-1.7126 1.7126-0.94585 0-1.7126-0.76676-1.7126-1.7126s0.76676-1.7126 1.7126-1.7126c0.94586 0 1.7126 0.76676 1.7126 1.7126z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke="#000" stroke-width=".49160" fill="#fff"/>
<path id="path1139" d="m274.96 142.07c0 0.94585-0.76676 1.7126-1.7126 1.7126-0.94585 0-1.7126-0.76676-1.7126-1.7126s0.76676-1.7126 1.7126-1.7126c0.94586 0 1.7126 0.76676 1.7126 1.7126z" fill-rule="evenodd" transform="matrix(-.99948 0 0 1.035 621.43 -5.225)" stroke-width="1pt" fill="#fff"/>
</g>
<g id="g1223" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<rect id="rect1094" height="1.3811" width="6.0217" stroke="#000" y="121.3" x="287.99" stroke-width=".5"/>
<rect id="rect1095" height="11.538" width="6.0217" stroke="#000" y="123.91" x="287.99" stroke-width=".5"/>
<path id="path1096" d="m287.63 119.72 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z" stroke="#000" stroke-width=".5"/>
<rect id="rect1097" height="1.3811" width="6.0217" stroke="#000" y="121.33" x="327.55" stroke-width=".5"/>
<rect id="rect1098" height="11.538" width="6.0217" stroke="#000" y="123.95" x="327.55" stroke-width=".5"/>
<path id="path1099" d="m287.63 119.72 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z" transform="translate(39.556 .039082)" stroke="#000" stroke-width=".5"/>
<rect id="rect1217" height="1.3811" width="6.0217" y="121.3" x="287.99" stroke-width="1pt"/>
<rect id="rect1218" height="11.538" width="6.0217" y="123.91" x="287.99" stroke-width="1pt"/>
<path id="path1219" d="m287.63 119.72 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z"/>
<rect id="rect1220" height="1.3811" width="6.0217" y="121.33" x="327.55" stroke-width="1pt"/>
<rect id="rect1221" height="11.538" width="6.0217" y="123.95" x="327.55" stroke-width="1pt"/>
<path id="path1222" d="m287.63 119.72 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z" transform="translate(39.556 .039082)"/>
</g>
<rect id="rect1236" fill-rule="evenodd" height="11.538" width="6.0217" y="323.45" x="327.55" stroke-width="1pt" fill="#fff"/>
<rect id="rect1237" fill-rule="evenodd" height="1.3811" width="6.0217" y="320.83" x="327.55" stroke-width="1pt" fill="#fff"/>
<path id="path1238" d="m327.19 319.26 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<rect id="rect1239" fill-rule="evenodd" height="11.538" width="6.0217" y="323.41" x="287.99" stroke-width="1pt" fill="#fff"/>
<rect id="rect1240" fill-rule="evenodd" height="1.3811" width="6.0217" y="320.8" x="287.99" stroke-width="1pt" fill="#fff"/>
<path id="path1241" d="m287.63 319.22 6.68 0.039c0.261-2.265-2-4.712-3.32-4.687-1.305 0.063-3.412 2.474-3.36 4.648z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<g id="g1244" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1105" d="m282.98 137.41 3.829 4.219 47.658 0.078 3.907-4.219-12.188-0.156-5.938-4.141-19.142-0.078-5.547 4.297h-12.579z" stroke="#000" stroke-width=".5"/>
<path id="path1243" d="m282.98 137.41 3.829 4.219 47.658 0.078 3.907-4.219-12.188-0.156-5.938-4.141-19.142-0.078-5.547 4.297h-12.579z"/>
</g>
<g id="g1248" transform="translate(0,199.5)">
<path id="path1100" d="m302.49 130.9 16.457-0.017c2.228-1.178 2.923-4.94 2.912-7.045-0.031-6.218-4.38-9.2-8.745-9.359-0.654-0.033-1.413-0.542-1.586-1.138-0.43-1.35-0.319-4.865-0.79-4.817-0.419-0.006-0.296 3.441-0.669 4.707-0.205 0.63-0.913 1.251-1.619 1.287-5.433 0.271-8.937 4.237-8.8 9.32 0.092 3.361 0.483 5.368 2.84 7.062z" stroke="#000" stroke-width=".5" fill="none"/>
<path id="path1247" d="m302.49 130.9 16.457-0.017c2.228-1.178 2.923-4.94 2.912-7.045-0.031-6.218-4.38-9.2-8.745-9.359-0.654-0.033-1.413-0.542-1.586-1.138-0.43-1.35-0.319-4.786-0.79-4.817-0.34 0.033-0.296 3.441-0.669 4.707-0.205 0.63-0.913 1.251-1.619 1.287-5.433 0.271-8.937 4.237-8.8 9.32 0.092 3.361 0.483 5.368 2.84 7.062z" fill-rule="evenodd" fill="#fff"/>
<path id="path1101" d="m301.46 125.42c0.415 2.049 1.402 1.735 1.329 0.743-0.243-3.165 0.013-6.282 2.812-8.36 0.887-0.65-0.104-1.25-0.859-0.937-2.38 1.001-3.826 5.59-3.282 8.554z" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1102" d="m302.08 125.07c0.415 2.049 2.11 1.96 1.798 0.626-0.635-2.555-0.534-6.282 1.718-7.891 0.889-0.647-0.104-1.25-0.859-0.937-2.38 1.001-3.201 5.238-2.657 8.202z" transform="translate(2.1486 1.6407)" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1103" d="m301.46 125.42c0.415 2.049 1.402 1.735 1.329 0.743-0.243-3.165 0.013-6.282 2.812-8.36 0.887-0.65-0.104-1.25-0.859-0.937-2.38 1.001-3.826 5.59-3.282 8.554z" transform="matrix(-1.0011 0 0 1 621.88 .078125)" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1104" d="m302.08 125.07c0.415 2.049 2.11 1.96 1.798 0.626-0.635-2.555-0.534-6.282 1.718-7.891 0.889-0.647-0.104-1.25-0.859-0.937-2.38 1.001-3.201 5.238-2.657 8.202z" transform="matrix(-1.0011 0 0 1 619.73 1.7188)" stroke="#000" stroke-width=".25" fill="none"/>
</g>
<g id="g1256" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1106" d="m275.4 191.24h70.707l-6.329-5.157h-58.05l-6.328 5.157z" stroke="#000" stroke-width=".5"/>
<path id="path1255" d="m275.4 191.24h70.707l-6.329-5.157h-58.05l-6.328 5.157z"/>
</g>
<g id="g1339" transform="translate(0,199.5)">
<g id="g1312" fill="#fff" fill-rule="evenodd">
<g id="g1299" stroke="#000" stroke-width=".5">
<rect id="rect1300" height="9.2973" width="6.7191" y="144.84" x="287.67"/>
<rect id="rect1301" height="1.9532" width="6.4847" y="159.45" x="288.06"/>
<rect id="rect1302" height="7.266" width="6.641" y="162.88" x="287.91"/>
<rect id="rect1303" height="4.0627" width="7.266" y="171.63" x="287.44"/>
<path id="path1304" d="m288.44 157.7h5.855l1.161-1.933h-8.066l1.05 1.933z" transform="translate(-.11047)"/>
<path id="path1305" d="m296.23 150.58 0.055-5.082h4.033c-1.584 1.307-3.057 2.891-4.088 5.082z"/>
<rect id="rect1306" transform="scale(-1,1)" height="9.2973" width="6.6057" y="144.84" x="-333.68"/>
<rect id="rect1307" transform="scale(-1,1)" height="1.9532" width="6.3752" y="159.45" x="-333.57"/>
<rect id="rect1308" transform="scale(-1,1)" height="7.266" width="6.4924" y="162.88" x="-333.69"/>
<rect id="rect1309" transform="scale(-1,1)" height="4.0627" width="7.1433" y="171.63" x="-334.11"/>
<path id="path1310" d="m288.44 157.7h5.855l1.161-1.933h-8.066l1.05 1.933z" transform="matrix(-.98312 0 0 1 616.61 0)"/>
<path id="path1311" d="m296.23 150.58 0.055-5.082h4.033c-1.584 1.307-3.057 2.891-4.088 5.082z" transform="matrix(-.98312 0 0 1 616.5 0)"/>
</g>
<g id="g1272">
<rect id="rect1273" height="9.2973" width="6.7191" y="144.84" x="287.67" stroke-width="1pt"/>
<rect id="rect1274" height="1.9532" width="6.4847" y="159.45" x="288.06" stroke-width="1pt"/>
<rect id="rect1275" height="7.266" width="6.641" y="162.88" x="287.91" stroke-width="1pt"/>
<rect id="rect1276" height="4.0627" width="7.266" y="171.63" x="287.44" stroke-width="1pt"/>
<path id="path1277" d="m288.44 157.7h5.855l1.161-1.933h-8.066l1.05 1.933z" transform="translate(-.11047)"/>
<path id="path1278" d="m296.23 150.58 0.055-5.082h4.033c-1.584 1.307-3.057 2.891-4.088 5.082z"/>
<rect id="rect1279" transform="scale(-1,1)" height="9.2973" width="6.6057" y="144.84" x="-333.68" stroke-width="1pt"/>
<rect id="rect1280" transform="scale(-1,1)" height="1.9532" width="6.3752" y="159.45" x="-333.57" stroke-width="1pt"/>
<rect id="rect1281" transform="scale(-1,1)" height="7.266" width="6.4924" y="162.88" x="-333.69" stroke-width="1pt"/>
<rect id="rect1282" transform="scale(-1,1)" height="4.0627" width="7.1433" y="171.63" x="-334.11" stroke-width="1pt"/>
<path id="path1283" d="m288.44 157.7h5.855l1.161-1.933h-8.066l1.05 1.933z" transform="matrix(-.98312 0 0 1 616.61 0)"/>
<path id="path1284" d="m296.23 150.58 0.055-5.082h4.033c-1.584 1.307-3.057 2.891-4.088 5.082z" transform="matrix(-.98312 0 0 1 616.5 0)"/>
</g>
</g>
<path id="path1119" d="m288.71 152.66c0.04 1.087 1.271 0.602 1.271 0.055 0-1.677 0.022-3.49-0.045-4.677-0.008-0.875 2.085-0.656 2.073-0.117 0.008 1.416 0.024 3.358 0.032 5.015-0.015 0.807 1.352 0.737 1.333 0-0.008-1.851-0.009-4.541 0-5.903 0.012-1.754-4.605-1.716-4.641-0.039 0.002 1.377-0.025 3.842-0.023 5.666z" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path1120" d="m288.71 152.66c0.04 1.087 1.271 0.602 1.271 0.055 0-1.677 0.022-3.49-0.045-4.677-0.008-0.875 2.085-0.656 2.073-0.117 0.008 1.416 0.024 3.358 0.032 5.015-0.015 0.807 1.312 0.737 1.294 0-0.008-1.89 0.03-4.541 0.039-5.903 0.012-1.754-4.605-1.716-4.641-0.039 0.002 1.377-0.025 3.842-0.023 5.666z" transform="translate(39.533 .19529)" stroke="#000" stroke-width=".25" fill="none"/>
<g id="g1126" transform="translate(.11719)">
<rect id="rect1121" height="5.9378" width="4.7659" stroke="#000" y="163.74" x="288.61" stroke-width=".25" fill="none"/>
<rect id="rect1122" fill-rule="evenodd" height=".97662" width="1.6798" y="166.2" x="291.66" stroke-width="1pt"/>
<rect id="rect1123" fill-rule="evenodd" height=".97662" width="1.6407" y="166.2" x="288.73" stroke-width="1pt"/>
<rect id="rect1124" fill-rule="evenodd" height="2.422" width="1.2891" y="163.82" x="290.37" stroke-width="1pt"/>
<rect id="rect1125" fill-rule="evenodd" height="2.5783" width="1.2891" y="167.14" x="290.37" stroke-width="1pt"/>
</g>
<g id="g1132" transform="translate(39.494 -.039062)">
<rect id="rect1133" height="5.9378" width="4.7659" stroke="#000" y="163.74" x="288.61" stroke-width=".25" fill="none"/>
<rect id="rect1134" fill-rule="evenodd" height=".97662" width="1.6798" y="166.2" x="291.66" stroke-width="1pt"/>
<rect id="rect1135" fill-rule="evenodd" height=".97662" width="1.6407" y="166.2" x="288.73" stroke-width="1pt"/>
<rect id="rect1136" fill-rule="evenodd" height="2.422" width="1.2891" y="163.82" x="290.37" stroke-width="1pt"/>
<rect id="rect1137" fill-rule="evenodd" height="2.5783" width="1.2891" y="167.14" x="290.37" stroke-width="1pt"/>
</g>
</g>
<g id="g1498" transform="translate(0,199.5)">
<rect id="rect1162" fill-rule="evenodd" height="5.8988" width=".82037" stroke="#000" y="164.05" x="323.77" stroke-width=".5" fill="#fff"/>
<path id="path1381" d="m307.83 171.87 1.289 3.867h2.929l-2.343-3.868-1.875 0.001zm-1.64 3.867 0.742 3.828 3.437 0.039-1.25-3.868-2.929 0.001zm5.82 0.039 2.383 3.789h4.883l-3.828-3.829-3.438 0.04zm-28.83 8.672c2.591-2.409 4.245-4.466 4.258-7.422h6.328c0.013 1.654 0.612 2.643 1.524 2.578l6.407-0.039-0.039-3.789h-4.649l-0.001-20.666c-0.169-7.305 8.881-11.563 12.58-11.524l-21.994-0.039v-0.664h46.253l0.039 0.664-22.306 0.039c6.615 0.013 12.995 6.277 13.048 11.564v5.859h-0.86l-0.039-5.781c0-5.782-7.282-11.186-13.126-11.017-5.053 0.145-12.891 4.962-12.813 10.978v1.797l11.993 0.078-0.117 2.07 1.883 1.202 3.756 1.197-0.055 3.105 2.69 0.793 0.023 3.102 3.227 1.385v3.211l2.047 1.261-0.094 3.261 2.774 1.953h-6.563l4.102 4.571h-6.055l-3.009-4.571h-3.984l1.797 4.531-4.257-0.039-1.017-4.492h-5.195l0.039 4.843-18.595 0.001zm18.556-12.54v3.828h4.454l-0.9-3.828h-3.554z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1178" d="m307.83 171.87 1.289 3.867h2.929l-2.343-3.868-1.875 0.001zm-1.64 3.867 0.742 3.828 3.437 0.039-1.25-3.868-2.929 0.001zm5.82 0.039 2.383 3.789h4.883l-3.828-3.829-3.438 0.04zm-28.83 8.672c2.591-2.409 4.245-4.466 4.258-7.422h6.328c0.013 1.654 0.612 2.643 1.524 2.578l6.407-0.039-0.039-3.789h-4.649l-0.001-20.666c-0.169-7.305 8.881-11.563 12.58-11.524l-21.994-0.039v-0.664h46.253l0.039 0.664-22.306 0.039c6.615 0.013 12.995 6.277 13.048 11.564v5.859h-0.86l-0.039-5.781c0-5.782-7.282-11.186-13.126-11.017-5.053 0.145-12.891 4.962-12.813 10.978v1.797l11.993 0.078-0.117 2.07 1.883 1.202 3.756 1.197-0.055 3.105 2.69 0.793 0.023 3.102 3.227 1.385v3.211l2.047 1.261-0.094 3.261 2.774 1.953h-6.563l4.102 4.571h-6.055l-3.009-4.571h-3.984l1.797 4.531-4.257-0.039-1.017-4.492h-5.195l0.039 4.843-18.595 0.001zm18.556-12.54v3.828h4.454l-0.9-3.828h-3.554z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<rect id="rect1179" height="6.3675" width="2.7736" stroke="#000" y="165.15" x="301.97" stroke-width=".24760" fill="none"/>
<path id="path1180" d="m298.05 171.73h2.707l-0.017-4.594c-0.035-1.997 1.793-4.01 2.668-4.077 0.97-0.036 2.4 1.885 2.448 3.92l0.039 4.766 2.872-0.006v-11.829l-10.717 0.056v11.764z" transform="matrix(1 0 0 1.0198 0 -3.1686)" stroke="#000" stroke-width=".25" fill="none"/>
<rect id="rect1181" height="2.6174" width="3.3596" stroke="#000" y="174.76" x="319.47" stroke-width=".24673" fill="none"/>
<rect id="rect1182" height="2.6174" width="3.3596" stroke="#000" y="170.26" x="317.48" stroke-width=".24673" fill="none"/>
<rect id="rect1183" height="2.6174" width="3.3596" stroke="#000" y="165.77" x="314.24" stroke-width=".24673" fill="none"/>
<rect id="rect1184" height="2.6174" width="3.3596" stroke="#000" y="161.98" x="311.46" stroke-width=".24673" fill="none"/>
<path id="path1185" d="m309.24 171.98 3.437 0.117 6.133 5.43v-3.203l-2.07-1.484v-2.54l-3.008-1.718v-2.735l-2.93-0.976v-3.712l-1.485-1.211-0.077 12.032z" stroke="#000" stroke-width=".25" fill="none"/>
<rect id="rect1382" fill-rule="evenodd" height="5.8988" width=".82037" y="164.05" x="323.77" stroke-width="1pt" fill="#fff"/>
</g>
<g id="g1550" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path912" d="m273.06 107.63c0.298 4.66-1.148 7.218-3.616 6.829-0.68-2.585 0.867-4.319 3.616-6.829z" transform="translate(-9.0952 -3.3232)"/>
<path id="path913" d="m267.46 119.35c-2.194-1.116-0.611-9.637 0.231-13.209 0.623 4.601 1.665 11.141-0.231 13.209z" transform="translate(-8.9203 -4.7225)"/>
<path id="path914" d="m267.72 119c3.688 1.283 6.608-2.689 7.595-7.289-3.044 4.201-7.998 4.206-7.595 7.289z" transform="translate(-8.3956 -3.9646)"/>
<path id="path915" d="m264.63 123.47c-2.884-0.762-1.147-9.802-0.623-13.418 0.634 3.735 2.622 12.181 0.623 13.418z" transform="translate(-8.1041 -4.1395)"/>
<path id="path916" d="m265.44 122.96c0.161-3.118 3.269-2.217 5.414-3.881-0.35 1.558-1.669 4.319-5.414 3.881z" transform="translate(-7.9292 -3.9063)"/>
<path id="path917" d="m262.26 128.01c-2.858-0.771-1.14-10.5-1.302-14.506 0.838 3.461 3.491 13.568 1.302 14.506z" transform="translate(-8.279 -4.7808)"/>
<path id="path918" d="m263.25 127.06c2.341 0.761 5.442-0.76 5.686-3.548-2.016 1.368-5.235 0.322-5.686 3.548z" transform="translate(-7.9292 -4.2561)"/>
<path id="path919" d="m262.34 128.34c-2.733 0.218-1.51-8.068-1.508-15.785 1.004 7.213 3.739 13.816 1.508 15.785z" transform="translate(-10.494 -.81623)"/>
<path id="path920" d="m263.29 127.15c1.846 0.926 5.153-0.554 6.097-3.672-3.335 1.45-5.565 0.033-6.097 3.672z" transform="translate(-10.494)"/>
</g>
<g id="g1560" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1561" d="m273.06 107.63c0.298 4.66-1.148 7.218-3.616 6.829-0.68-2.585 0.867-4.319 3.616-6.829z" transform="translate(-9.0952 -3.3232)"/>
<path id="path1562" d="m267.46 119.35c-2.194-1.116-0.611-9.637 0.231-13.209 0.623 4.601 1.665 11.141-0.231 13.209z" transform="translate(-8.9203 -4.7225)"/>
<path id="path1563" d="m267.72 119c3.688 1.283 6.608-2.689 7.595-7.289-3.044 4.201-7.998 4.206-7.595 7.289z" transform="translate(-8.3956 -3.9646)"/>
<path id="path1564" d="m264.63 123.47c-2.884-0.762-1.147-9.802-0.623-13.418 0.634 3.735 2.622 12.181 0.623 13.418z" transform="translate(-8.1041 -4.1395)"/>
<path id="path1565" d="m265.44 122.96c0.161-3.118 3.269-2.217 5.414-3.881-0.35 1.558-1.669 4.319-5.414 3.881z" transform="translate(-7.9292 -3.9063)"/>
<path id="path1566" d="m262.26 128.01c-2.858-0.771-1.14-10.5-1.302-14.506 0.838 3.461 3.491 13.568 1.302 14.506z" transform="translate(-8.279 -4.7808)"/>
<path id="path1567" d="m263.25 127.06c2.341 0.761 5.442-0.76 5.686-3.548-2.016 1.368-5.235 0.322-5.686 3.548z" transform="translate(-7.9292 -4.2561)"/>
<path id="path1568" d="m262.34 128.34c-2.733 0.218-1.51-8.068-1.508-15.785 1.004 7.213 3.739 13.816 1.508 15.785z" transform="translate(-10.494 -.81623)"/>
<path id="path1569" d="m263.29 127.15c1.846 0.926 5.153-0.554 6.097-3.672-3.335 1.45-5.565 0.033-6.097 3.672z" transform="translate(-10.494)"/>
</g>
<g id="g1570" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path884" d="m274.25 108.62c-0.486 4.042-2.138 6.394-4.606 6.005-0.68-2.585 1.321-4.237 4.606-6.005z"/>
<path id="path885" d="m267.72 119c4.1 0.582 5.577-2.565 8.337-6.588-3.868 2.799-8.493 3.381-8.337 6.588z"/>
<path id="path886" d="m266.56 118.53c-2.235-2.682-0.075-6.05 1.633-8.921-0.367 4.271 1.088 6.647-1.633 8.921z"/>
<path id="path887" d="m265.57 122.96c-0.252-2.623 4.217-3.206 6.238-4.664-0.68 1.516-1.71 5.597-6.238 4.664z"/>
<path id="path888" d="m264.63 123.02c-3.09-0.35-1.807-5.597 0.408-8.513-0.933 4.024 1.632 6.822-0.408 8.513z"/>
<path id="path889" d="m262.3 127.39c-3.517-1.555-1.263-5.966 0.059-8.57-0.564 3.42 2.254 6.024-0.059 8.57z"/>
<path id="path890" d="m263 126.98c1.846 2.41 5.442-0.719 6.18-4.373-3.129 2.605-5.441 2.177-6.18 4.373z"/>
</g>
<g id="g1588" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1589" d="m274.25 108.62c-0.486 4.042-2.138 6.394-4.606 6.005-0.68-2.585 1.321-4.237 4.606-6.005z"/>
<path id="path1590" d="m267.72 119c4.1 0.582 5.577-2.565 8.337-6.588-3.868 2.799-8.493 3.381-8.337 6.588z"/>
<path id="path1591" d="m266.56 118.53c-2.235-2.682-0.075-6.05 1.633-8.921-0.367 4.271 1.088 6.647-1.633 8.921z"/>
<path id="path1592" d="m265.57 122.96c-0.252-2.623 4.217-3.206 6.238-4.664-0.68 1.516-1.71 5.597-6.238 4.664z"/>
<path id="path1593" d="m264.63 123.02c-3.09-0.35-1.807-5.597 0.408-8.513-0.933 4.024 1.632 6.822-0.408 8.513z"/>
<path id="path1594" d="m262.3 127.39c-3.517-1.555-1.263-5.966 0.059-8.57-0.564 3.42 2.254 6.024-0.059 8.57z"/>
<path id="path1595" d="m263 126.98c1.846 2.41 5.442-0.719 6.18-4.373-3.129 2.605-5.441 2.177-6.18 4.373z"/>
</g>
<g id="g1596" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path891" d="m347.66 109.02c0.467 2.1 0.584 6.24 4.315 5.423 0.544-3.848-2.585-4.023-4.315-5.423z"/>
<path id="path892" d="m354.01 118.94c-0.135-3.965-4.411-3.091-8.103-6.356 1.011 3.44 4.586 7.638 8.103 6.356z"/>
<path id="path893" d="m354.89 118.47c2.507-1.73 0.583-5.5-1.749-8.804 0.875 3.596-1.049 6.899 1.749 8.804z"/>
<path id="path894" d="m355.99 122.96c-4.042 0.311-4.761-1.71-6.355-4.314 2.76 1.788 6.452 0.661 6.355 4.314z"/>
<path id="path895" d="m356.99 123.08c-1.925-1.575 0.466-4.956-0.35-8.337 1.516 2.137 3.848 7.249 0.35 8.337z"/>
<path id="path896" d="m358.68 127.27c-4.042 0.952-5.344-1.185-6.355-4.78 3.284 3.012 5.111 1.593 6.355 4.78z"/>
<path id="path897" d="m359.26 127.22c2.818-0.039 1.555-5.616 0.116-8.162 0.389 3.071-2.079 6.607-0.116 8.162z"/>
</g>
<g id="g1604" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1605" d="m347.66 109.02c0.467 2.1 0.584 6.24 4.315 5.423 0.544-3.848-2.585-4.023-4.315-5.423z"/>
<path id="path1606" d="m354.01 118.94c-0.135-3.965-4.411-3.091-8.103-6.356 1.011 3.44 4.586 7.638 8.103 6.356z"/>
<path id="path1607" d="m354.89 118.47c2.507-1.73 0.583-5.5-1.749-8.804 0.875 3.596-1.049 6.899 1.749 8.804z"/>
<path id="path1608" d="m355.99 122.96c-4.042 0.311-4.761-1.71-6.355-4.314 2.76 1.788 6.452 0.661 6.355 4.314z"/>
<path id="path1609" d="m356.99 123.08c-1.925-1.575 0.466-4.956-0.35-8.337 1.516 2.137 3.848 7.249 0.35 8.337z"/>
<path id="path1610" d="m358.68 127.27c-4.042 0.952-5.344-1.185-6.355-4.78 3.284 3.012 5.111 1.593 6.355 4.78z"/>
<path id="path1611" d="m359.26 127.22c2.818-0.039 1.555-5.616 0.116-8.162 0.389 3.071-2.079 6.607-0.116 8.162z"/>
</g>
<g id="g1612" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path923" d="m348.2 108.2c0.506 2.334-0.471 6.943 3.26 6.907 1.56-2.637-1.765-5.117-3.26-6.907z" transform="translate(9.3361 -3.867)"/>
<path id="path924" d="m354.3 119.33c2.351-1.612 0.232-6.906-0.499-12.866-0.57 5.315-1.83 11.118 0.499 12.866z" transform="translate(8.8388 -4.5852)"/>
<path id="path925" d="m353.7 119.13c0.295-2.91-4.293-3.559-7.438-7.41 0.815 3.088 3.14 7.599 7.438 7.41z" transform="translate(8.1759 -3.9775)"/>
<path id="path926" d="m356.67 124.33c-2.472-2.239 0.465-8.667 0.587-13.65 0.383 4.598 2.403 12.835-0.587 13.65z" transform="translate(8.3417 -4.6404)"/>
<path id="path927" d="m355.21 122.69c-3.613 0.232-4.566-2.414-4.988-3.924 1.94 1.398 5.007 0.739 4.988 3.924z" transform="translate(8.3969 -3.646)"/>
<path id="path928" d="m358.95 128.11c2.778-0.117 1.75-10.655 1.365-13.982-0.275 3.54-3.172 12.701-1.365 13.982z" transform="translate(8.2864 -5.0823)"/>
<path id="path929" d="m358.28 127.04c-2.401 0.366-4.836-1.029-5.495-3.413 2.073 0.902 5.501 0.187 5.495 3.413z" transform="translate(7.734 -4.1984)"/>
<path id="path930" d="m358.75 127.96c2.974 1.211 1.907-12.53 1.522-15.701-0.275 4.048-3.797 13.99-1.522 15.701z" transform="translate(10.717 -.55242)"/>
<path id="path931" d="m358.44 127.35c-2.988 0.444-5.188-1.38-6.043-3.881 3.05 1.137 5.424 0.733 6.043 3.881z" transform="translate(10.33 .055256)"/>
</g>
<g id="g2151" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1058" d="m366.62 143.7c0.368-3.589-2.381-10.115-0.43-13.594 0.266-0.478-0.584-1.747-1.133-0.977-0.858 1.229-1.74 4.731-2.109 3.438-0.391-1.406-0.451-3.893-1.719-4.376-0.809-0.283-1.953-0.468-1.641 0.782 0.31 1.202 1.004 2.862 0.235 2.969-0.446 0.065-1.731-1.636-2.813-2.422-0.872-0.701-2.173 0.396-0.898 1.445 4.144 3.379 8.159 4.9 10.508 12.735z" stroke="#000" stroke-width=".5"/>
<path id="path2150" d="m366.62 143.7c0.368-3.589-2.381-10.115-0.43-13.594 0.266-0.478-0.584-1.747-1.133-0.977-0.858 1.229-1.74 4.731-2.109 3.438-0.391-1.406-0.451-3.893-1.719-4.376-0.809-0.283-1.953-0.468-1.641 0.782 0.31 1.202 1.004 2.862 0.235 2.969-0.446 0.065-1.731-1.636-2.813-2.422-0.872-0.701-2.173 0.396-0.898 1.445 4.144 3.379 8.159 4.9 10.508 12.735z"/>
</g>
<g id="g1622" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1623" d="m348.2 108.2c0.506 2.334-0.471 6.943 3.26 6.907 1.56-2.637-1.765-5.117-3.26-6.907z" transform="translate(9.3361 -3.867)"/>
<path id="path1624" d="m354.3 119.33c2.351-1.612 0.232-6.906-0.499-12.866-0.57 5.315-1.83 11.118 0.499 12.866z" transform="translate(8.8388 -4.5852)"/>
<path id="path1625" d="m353.7 119.13c0.295-2.91-4.293-3.559-7.438-7.41 0.815 3.088 3.14 7.599 7.438 7.41z" transform="translate(8.1759 -3.9775)"/>
<path id="path1626" d="m356.67 124.33c-2.472-2.239 0.465-8.667 0.587-13.65 0.383 4.598 2.403 12.835-0.587 13.65z" transform="translate(8.3417 -4.6404)"/>
<path id="path1627" d="m355.21 122.69c-3.613 0.232-4.566-2.414-4.988-3.924 1.94 1.398 5.007 0.739 4.988 3.924z" transform="translate(8.3969 -3.646)"/>
<path id="path1628" d="m358.95 128.11c2.778-0.117 1.75-10.655 1.365-13.982-0.275 3.54-3.172 12.701-1.365 13.982z" transform="translate(8.2864 -5.0823)"/>
<path id="path1629" d="m358.28 127.04c-2.401 0.366-4.836-1.029-5.495-3.413 2.073 0.902 5.501 0.187 5.495 3.413z" transform="translate(7.734 -4.1984)"/>
<path id="path1630" d="m358.75 127.96c2.974 1.211 1.907-12.53 1.522-15.701-0.275 4.048-3.797 13.99-1.522 15.701z" transform="translate(10.717 -.55242)"/>
<path id="path1631" d="m358.44 127.35c-2.988 0.444-5.188-1.38-6.043-3.881 3.05 1.137 5.424 0.733 6.043 3.881z" transform="translate(10.33 .055256)"/>
</g>
<g id="g2131" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1064" d="m244.38 141.09c-1.017-1.062-0.723-1.468 0.781-1.485 1.193-0.075 3.557 0.731 4.454 0.078 0.822-0.597 0.495-3.129 0.86-4.297 0.159-0.651 0.615-1.673 1.64-0.078 3.032 4.859 6.819 10.692 8.438 16.407 0.885 3.203 0.443 8.359-2.969 11.094l-2.422-7.032c-1.151-3.343-7.347-11.365-10.782-14.687z" transform="matrix(-.99523 0 0 1 620.24 .22098)" stroke="#000" stroke-width=".50120"/>
<path id="path2130" d="m244.38 141.09c-1.017-1.062-0.723-1.468 0.781-1.485 1.193-0.075 3.557 0.731 4.454 0.078 0.822-0.597 0.495-3.129 0.86-4.297 0.159-0.651 0.615-1.673 1.64-0.078 3.032 4.859 6.819 10.692 8.438 16.407 0.885 3.203 0.443 8.359-2.969 11.094l-2.422-7.032c-1.151-3.343-7.347-11.365-10.782-14.687z" transform="matrix(-.99523 0 0 1 620.24 .22098)"/>
</g>
<g id="g1632" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path932" d="m371.62 145.11c-1.36 4.373-2.177 7.957-0.214 8.379 2.098-0.364 1.186-4.589 0.214-8.379z" transform="translate(8.7836 -12.54)"/>
<path id="path933" d="m368.78 157.36c2.237 1.188 4.648-4.514 4.147-9.005-1.127 3.849-4.921 6.226-4.147 9.005z" transform="translate(11.484 -12.516)"/>
<path id="path934" d="m370.43 156.77c0.347-3.109-0.93-3.027-2.603-5.998 0.177 3.356 1.013 6.17 2.603 5.998z" transform="translate(9.0046 -12.043)"/>
<path id="path935" d="m369.11 156.76c2.611 0.741 5.603-5.475 5.491-10.069-1.087 5.085-6.754 7.117-5.491 10.069z" transform="translate(11.064 -7.4739)"/>
<path id="path936" d="m372.09 156.03c1.047-2.409-1.089-2.115-2.506-6.432-0.469 4.468 0.212 6.507 2.506 6.432z" transform="translate(7.2311 -6.8602)"/>
<path id="path937" d="m369.29 155.78c3.388 0.583 5.135-6.897 6.818-10.479-3.332 4.696-7.324 7.311-6.818 10.479z" transform="translate(10.788 -1.9228)"/>
<path id="path938" d="m372.36 155.49c0.99-2.758-1.809-2.604-3.283-6.726 0.234 5.228 0.913 7.114 3.283 6.726z" transform="translate(6.9304 -1.8892)"/>
<path id="path939" d="m369.7 156.6c2.142 0.155 5.994-5.827 6.077-9.522-1.83 4.069-7.574 6.765-6.077 9.522z" transform="translate(10.567 1.7516)"/>
<path id="path940" d="m372.16 155.96c0.891-2.877-1.597-2.896-2.701-6.119-0.078 4.859 0.68 6.507 2.701 6.119z" transform="translate(6.5129 1.7025)"/>
<path id="path941" d="m368.74 155.82c3.778 0.661 4.745-4.319 6.974-9.385-2.199 4.032-7.167 6.295-6.974 9.385z" transform="translate(10.014 7.0266)"/>
<path id="path942" d="m372.44 155.37c1.225-2.602-1.613-2.604-3.127-6.492-0.078 5.501 0.874 7.114 3.127 6.492z" transform="translate(6.0465 6.784)"/>
</g>
<g id="g1644" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1645" d="m371.62 145.11c-1.36 4.373-2.177 7.957-0.214 8.379 2.098-0.364 1.186-4.589 0.214-8.379z" transform="translate(8.7836 -12.54)"/>
<path id="path1646" d="m368.78 157.36c2.237 1.188 4.648-4.514 4.147-9.005-1.127 3.849-4.921 6.226-4.147 9.005z" transform="translate(11.484 -12.516)"/>
<path id="path1647" d="m370.43 156.77c0.347-3.109-0.93-3.027-2.603-5.998 0.177 3.356 1.013 6.17 2.603 5.998z" transform="translate(9.0046 -12.043)"/>
<path id="path1648" d="m369.11 156.76c2.611 0.741 5.603-5.475 5.491-10.069-1.087 5.085-6.754 7.117-5.491 10.069z" transform="translate(11.064 -7.4739)"/>
<path id="path1649" d="m372.09 156.03c1.047-2.409-1.089-2.115-2.506-6.432-0.469 4.468 0.212 6.507 2.506 6.432z" transform="translate(7.2311 -6.8602)"/>
<path id="path1650" d="m369.29 155.78c3.388 0.583 5.135-6.897 6.818-10.479-3.332 4.696-7.324 7.311-6.818 10.479z" transform="translate(10.788 -1.9228)"/>
<path id="path1651" d="m372.36 155.49c0.99-2.758-1.809-2.604-3.283-6.726 0.234 5.228 0.913 7.114 3.283 6.726z" transform="translate(6.9304 -1.8892)"/>
<path id="path1652" d="m369.7 156.6c2.142 0.155 5.994-5.827 6.077-9.522-1.83 4.069-7.574 6.765-6.077 9.522z" transform="translate(10.567 1.7516)"/>
<path id="path1653" d="m372.16 155.96c0.891-2.877-1.597-2.896-2.701-6.119-0.078 4.859 0.68 6.507 2.701 6.119z" transform="translate(6.5129 1.7025)"/>
<path id="path1654" d="m368.74 155.82c3.778 0.661 4.745-4.319 6.974-9.385-2.199 4.032-7.167 6.295-6.974 9.385z" transform="translate(10.014 7.0266)"/>
<path id="path1655" d="m372.44 155.37c1.225-2.602-1.613-2.604-3.127-6.492-0.078 5.501 0.874 7.114 3.127 6.492z" transform="translate(6.0465 6.784)"/>
</g>
<g id="g2127" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1068" d="m256.81 166.87c3.334 0.016 3.985-4.687 3.985-5.937-1.641 0.312-4.611 3.281-3.985 5.937z" transform="matrix(-.99526 0 0 1 620.35 .078125)" stroke="#000" stroke-width=".50119"/>
<path id="path2126" d="m256.81 166.87c3.334 0.016 3.985-4.687 3.985-5.937-1.641 0.312-4.611 3.281-3.985 5.937z" transform="matrix(-.99526 0 0 1 620.35 .078125)"/>
</g>
<g id="g1656" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path905" d="m371.39 145.58c-1.36 4.373-1.904 6.472-0.058 7.871 2.41-1.341 1.03-4.081 0.058-7.871z"/>
<path id="path906" d="m370.63 157.01c1.011-3.226-1.477-4.003-2.798-7.638-0.136 4.801 0.544 8.318 2.798 7.638z"/>
<path id="path907" d="m369.64 157.24c1.769 0.68 3.945-3.42 2.741-7.521-1.244 3.693-4.296 4.586-2.741 7.521z" transform="translate(1.9823 .46642)"/>
<path id="path908" d="m371.97 156.31c1.711-2.643-1.011-2.779-2.389-6.471-0.078 4.859 0.368 6.859 2.389 6.471z" transform="translate(-2.2155 5.0723)"/>
<path id="path909" d="m372.44 155.61c1.303-2.992-1.535-2.604-3.205-6.296-0.078 5.501 0.835 6.684 3.205 6.296z" transform="translate(-2.6819 10.32)"/>
<path id="path910" d="m369.7 156.6c1.478 0.038 4.353-2.546 3.499-5.772-1.244 2.702-4.762 2.429-3.499 5.772z" transform="translate(1.341 4.9557)"/>
<path id="path911" d="m369.29 155.78c2.411 0.505 4.237-3.186 3.966-5.713-1.886 2.352-4.472 2.545-3.966 5.713z" transform="translate(1.341 9.6782)"/>
</g>
<g id="g1664" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1665" d="m371.39 145.58c-1.36 4.373-1.904 6.472-0.058 7.871 2.41-1.341 1.03-4.081 0.058-7.871z"/>
<path id="path1666" d="m370.63 157.01c1.011-3.226-1.477-4.003-2.798-7.638-0.136 4.801 0.544 8.318 2.798 7.638z"/>
<path id="path1667" d="m369.64 157.24c1.769 0.68 3.945-3.42 2.741-7.521-1.244 3.693-4.296 4.586-2.741 7.521z" transform="translate(1.9823 .46642)"/>
<path id="path1668" d="m371.97 156.31c1.711-2.643-1.011-2.779-2.389-6.471-0.078 4.859 0.368 6.859 2.389 6.471z" transform="translate(-2.2155 5.0723)"/>
<path id="path1669" d="m372.44 155.61c1.303-2.992-1.535-2.604-3.205-6.296-0.078 5.501 0.835 6.684 3.205 6.296z" transform="translate(-2.6819 10.32)"/>
<path id="path1670" d="m369.7 156.6c1.478 0.038 4.353-2.546 3.499-5.772-1.244 2.702-4.762 2.429-3.499 5.772z" transform="translate(1.341 4.9557)"/>
<path id="path1671" d="m369.29 155.78c2.411 0.505 4.237-3.186 3.966-5.713-1.886 2.352-4.472 2.545-3.966 5.713z" transform="translate(1.341 9.6782)"/>
</g>
<g id="g2122" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1065" d="m235.63 159.06c-0.297-0.385-1.15 0.01-0.937 0.938 0.198 1.256 2.05 7.704 5.233 9.922 2.27 1.636 14.201 4.271 19.61 5.39 2.977 0.599 5.47 2.084 7.423 4.454-0.808-3.099-1.457-5.395-2.5-8.203-1.014-2.468-3.701-5.168-6.484-5.313-5.169-0.186-11.859-0.626-16.72-2.735-2.509-1.048-4.011-2.464-5.625-4.453z" transform="matrix(-.99523 0 0 1 620.24 .22098)" stroke="#000" stroke-width=".50120"/>
<path id="path2121" d="m235.63 159.06c-0.297-0.385-1.15 0.01-0.937 0.938 0.198 1.256 2.05 7.704 5.233 9.922 2.27 1.636 14.201 4.271 19.61 5.39 2.977 0.599 5.47 2.084 7.423 4.454-0.808-3.099-1.457-5.395-2.5-8.203-1.014-2.468-3.701-5.168-6.484-5.313-5.169-0.186-11.859-0.626-16.72-2.735-2.509-1.048-4.011-2.464-5.625-4.453z" transform="matrix(-.99523 0 0 1 620.24 .22098)"/>
</g>
<g id="g1682" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path955" d="m370.55 157.24c0.543-2.172-0.149-2.871 0.444-6.272-3.26 4.372-2.034 6.444-0.444 6.272z" transform="translate(7.9109 17.254)"/>
<path id="path956" d="m368.43 157.47c2.159 0.602 7.773-4.318 7.937-7.989-1.518 2.638-9.101 5.484-7.937 7.989z" transform="translate(10.39 17.563)"/>
<path id="path957" d="m370.95 156.62c1.477-0.807 1.06-4.224-0.279-5.377-0.274 3.335-2.288 5.296 0.279 5.377z" transform="translate(4.3404 21.656)"/>
<path id="path958" d="m369.11 156.76c2.611 0.819 5.564-3.912 7.718-5.967-2.455 2.116-9.879 3.132-7.718 5.967z" transform="translate(7.7044 22.448)"/>
<path id="path959" d="m371.46 157.09c1.828-1.198 0.122-3.561-0.006-8.229-1.836 3.374-2.21 7.991 0.006 8.229z" transform="translate(1.7623 24.468)"/>
<g id="g1672">
<path id="path960" d="m368.68 156.56c0.932 1.249 7.83-3.053 9.554-6.241-5.892 4.382-11.09 3.797-9.554 6.241z" transform="translate(4.8919 26.198)"/>
<path id="path961" d="m371.89 155.65c1.693-1.234-1.457-4.479-2.111-8.835 0.039 5.306-0.688 9.34 2.111 8.835z" transform="translate(.99281 31.002)"/>
<path id="path962" d="m369.17 155.47c0.849 1.365 6.112-2.248 8.381-6.181-3.489 3.055-9.356 3.873-8.381 6.181z" transform="translate(5.5532 29.718)"/>
<path id="path963" d="m371.66 157.32c1.907-0.338 1.645-5.161 0.19-9.088-1.641 4.742-2.367 9.554-0.19 9.088z" transform="translate(-2.3153 33.812)"/>
<path id="path964" d="m369.34 155.97c0.658 0.78 8.416-4.656 8.304-6.866-2.455 3.522-10.66 4.226-8.304 6.866z" transform="translate(4.7853 32.533)"/>
<path id="path965" d="m370.95 156.43c2.631-1.079 1.394-5.339 1.912-9.93-2.071 4.486-4.517 8.989-1.912 9.93z" transform="translate(-5.8286 39.206)"/>
<path id="path966" d="m368.39 155.47c0.419 1.443 6.737-1.233 9.787-5.635-3.684 2.86-10.839 3.249-9.787 5.635z" transform="translate(1.6547 36.48)"/>
<path id="path967" d="m369.07 156.36c1.361 2.264 9.197-1.882 10.335-5.772-2.533 3.366-11.285 2.858-10.335 5.772z" transform="translate(-3.1054 39.955)"/>
<path id="path968" d="m361.57 154.61c1.439 0.155 4.783-2.585 5.725-4.014-2.689 1.334-6.324 3.171-5.725 4.014z" transform="translate(7.9884 43.47)"/>
</g>
</g>
<g id="g1714" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path969" d="m369.98 156.85c1.712 0.248 3.951-2.895 2.456-6.08-0.743 3.179-5.726 5.492-2.456 6.08z" transform="translate(-12.222 24.39)"/>
<path id="path970" d="m369.11 156.76c1.322 0.741 4.666-2.818 4.241-5.147-1.869 2.976-5.621 3.835-4.241 5.147z" transform="translate(-7.6863 22.604)"/>
<path id="path971" d="m368.72 156.91c1.284 1.249 7.596-5.163 9.476-8.077-5.462 4.655-11.051 5.828-9.476 8.077z" transform="translate(-11.202 27.682)"/>
<path id="path972" d="m369.05 155.59c1.005 1.521 5.213-3.068 7.873-6.884-3.372 3.328-9.083 4.85-7.873 6.884z" transform="translate(-13.041 32.843)"/>
<path id="path974" d="m371.93 155.65c1.029-2.718-0.676-3.151-1.447-6.53-1.523 1.868-1.352 7.035 1.447 6.53z" transform="translate(-15.492 29.127)"/>
<path id="path975" d="m371.89 155.65c2.045-0.57-1.262-4.049-1.955-6.53-0.312 4.564-0.258 6.84 1.955 6.53z" transform="translate(-17.132 32.877)"/>
<path id="path976" d="m371.69 155.57c1.888-0.687-1.067-2.409-1.369-6.218-0.938 1.4-1.43 6.723 1.369 6.218z" transform="translate(-18.929 36.236)"/>
<path id="path977" d="m371.38 156.97c1.203-0.651 0.708-3.756-1.139-4.166-0.43 2.436-0.374 4.202 1.139 4.166z" transform="translate(-21.441 35.64)"/>
</g>
<g id="g1723" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1724" d="m369.98 156.85c1.712 0.248 3.951-2.895 2.456-6.08-0.743 3.179-5.726 5.492-2.456 6.08z" transform="translate(-12.222 24.39)"/>
<path id="path1725" d="m369.11 156.76c1.322 0.741 4.666-2.818 4.241-5.147-1.869 2.976-5.621 3.835-4.241 5.147z" transform="translate(-7.6863 22.604)"/>
<path id="path1726" d="m368.72 156.91c1.284 1.249 7.596-5.163 9.476-8.077-5.462 4.655-11.051 5.828-9.476 8.077z" transform="translate(-11.202 27.682)"/>
<path id="path1727" d="m369.05 155.59c1.005 1.521 5.213-3.068 7.873-6.884-3.372 3.328-9.083 4.85-7.873 6.884z" transform="translate(-13.041 32.843)"/>
<path id="path1728" d="m371.93 155.65c1.029-2.718-0.676-3.151-1.447-6.53-1.523 1.868-1.352 7.035 1.447 6.53z" transform="translate(-15.492 29.127)"/>
<path id="path1729" d="m371.89 155.65c2.045-0.57-1.262-4.049-1.955-6.53-0.312 4.564-0.258 6.84 1.955 6.53z" transform="translate(-17.132 32.877)"/>
<path id="path1730" d="m371.69 155.57c1.888-0.687-1.067-2.409-1.369-6.218-0.938 1.4-1.43 6.723 1.369 6.218z" transform="translate(-18.929 36.236)"/>
<path id="path1731" d="m371.38 156.97c1.203-0.651 0.708-3.756-1.139-4.166-0.43 2.436-0.374 4.202 1.139 4.166z" transform="translate(-21.441 35.64)"/>
</g>
<g id="g1698" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1699" d="m370.55 157.24c0.543-2.172-0.149-2.871 0.444-6.272-3.26 4.372-2.034 6.444-0.444 6.272z" transform="translate(7.9109 17.254)"/>
<path id="path1700" d="m368.43 157.47c2.159 0.602 7.773-4.318 7.937-7.989-1.518 2.638-9.101 5.484-7.937 7.989z" transform="translate(10.39 17.563)"/>
<path id="path1701" d="m370.95 156.62c1.477-0.807 1.06-4.224-0.279-5.377-0.274 3.335-2.288 5.296 0.279 5.377z" transform="translate(4.3404 21.656)"/>
<path id="path1702" d="m369.11 156.76c2.611 0.819 5.564-3.912 7.718-5.967-2.455 2.116-9.879 3.132-7.718 5.967z" transform="translate(7.7044 22.448)"/>
<path id="path1703" d="m371.46 157.09c1.828-1.198 0.122-3.561-0.006-8.229-1.836 3.374-2.21 7.991 0.006 8.229z" transform="translate(1.7623 24.468)"/>
<g id="g1704">
<path id="path1705" d="m368.68 156.56c0.932 1.249 7.83-3.053 9.554-6.241-5.892 4.382-11.09 3.797-9.554 6.241z" transform="translate(4.8919 26.198)"/>
<path id="path1706" d="m371.89 155.65c1.693-1.234-1.457-4.479-2.111-8.835 0.039 5.306-0.688 9.34 2.111 8.835z" transform="translate(.99281 31.002)"/>
<path id="path1707" d="m369.17 155.47c0.849 1.365 6.112-2.248 8.381-6.181-3.489 3.055-9.356 3.873-8.381 6.181z" transform="translate(5.5532 29.718)"/>
<path id="path1708" d="m371.66 157.32c1.907-0.338 1.645-5.161 0.19-9.088-1.641 4.742-2.367 9.554-0.19 9.088z" transform="translate(-2.3153 33.812)"/>
<path id="path1709" d="m369.34 155.97c0.658 0.78 8.416-4.656 8.304-6.866-2.455 3.522-10.66 4.226-8.304 6.866z" transform="translate(4.7853 32.533)"/>
<path id="path1710" d="m370.95 156.43c2.631-1.079 1.394-5.339 1.912-9.93-2.071 4.486-4.517 8.989-1.912 9.93z" transform="translate(-5.8286 39.206)"/>
<path id="path1711" d="m368.39 155.47c0.419 1.443 6.737-1.233 9.787-5.635-3.684 2.86-10.839 3.249-9.787 5.635z" transform="translate(1.6547 36.48)"/>
<path id="path1712" d="m369.07 156.36c1.361 2.264 9.197-1.882 10.335-5.772-2.533 3.366-11.285 2.858-10.335 5.772z" transform="translate(-3.1054 39.955)"/>
<path id="path1713" d="m361.57 154.61c1.439 0.155 4.783-2.585 5.725-4.014-2.689 1.334-6.324 3.171-5.725 4.014z" transform="translate(7.9884 43.47)"/>
</g>
</g>
<g id="g2099" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1066" d="m235.83 159.52c-0.377-0.307-0.876-0.76-0.704 0.176 1.409 7.41 1.855 9.483 8.349 12.044 6.602 2.508 8.968 1.631 14.589 1.533 3.034-0.111 6.567 1.404 8.671 3.618 0.98 1.03 1.687 1.441 1.294 0.128-0.394-1.312-0.777-3.015-1.396-4.379-1.348-3.002-4.834-5.866-8.321-7.011-4.879-1.717-10.139-0.854-15.164-2.164-2.621-0.724-5.138-2.183-7.318-3.945z" transform="matrix(-.87627 -.47410 -.47184 .88047 655.69 169.53)" stroke="#000" stroke-width=".50120"/>
<path id="path2098" d="m235.83 159.52c-0.377-0.307-0.876-0.76-0.704 0.176 1.409 7.41 1.855 9.483 8.349 12.044 6.602 2.508 8.968 1.631 14.589 1.533 3.034-0.111 6.567 1.404 8.671 3.618 0.98 1.03 1.687 1.441 1.294 0.128-0.394-1.312-0.777-3.015-1.396-4.379-1.348-3.002-4.834-5.866-8.321-7.011-4.879-1.717-10.139-0.854-15.164-2.164-2.621-0.724-5.138-2.183-7.318-3.945z" transform="matrix(-.87627 -.47410 -.47184 .88047 655.69 169.53)"/>
</g>
<g id="g2065" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1081" d="m287.66 208.42c0.884 0.11 1.444 1.822 1.879 0.663 0.738-1.877 0.221-3.37-0.608-3.205-0.979 0.261-2.635 2.456-1.271 2.542z" transform="matrix(-.98830 0 0 1 618.22 .055237)" stroke="#000" stroke-width=".50295"/>
<path id="path2064" d="m287.66 208.42c0.884 0.11 1.444 1.822 1.879 0.663 0.738-1.877 0.221-3.37-0.608-3.205-0.979 0.261-2.635 2.456-1.271 2.542z" transform="matrix(-.98830 0 0 1 618.22 .055237)"/>
</g>
<g id="g1732" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path987" d="m369.07 156.68c1.688 1.918 3.817-0.083 5.178-1.663-2.116-0.851-4.775-1.09-5.178 1.663z" transform="matrix(.82834 -.56023 .56023 .82834 -50.002 277.82)"/>
<path id="path988" d="m369.88 155.77c0.653 1.911 5.234-0.649 5.86-3.498-3.194 2.378-6.81 0.584-5.86 3.498z" transform="matrix(.99375 .11161 -.11161 .99375 -7.6867 7.2933)"/>
<path id="path989" d="m369.35 155.59c0.743 2.113 3.186-0.632 6.119-2.388-3.037 0.256-6.895 0.359-6.119 2.388z" transform="matrix(.48134 -.87653 .87653 .48134 26.604 452.13)"/>
<path id="path990" d="m369.72 156.65c1.037 2.192 4.134-1.586 6.415-3.811-2.863 0.884-7.437 1.73-6.415 3.811z" transform="matrix(.53651 -.84390 .84390 .53651 7.4196 434.51)"/>
<path id="path991" d="m369.99 156.72c1.361 2.264 4.656-2.483 6.614-5.157-3.228 2.134-8.079 2.995-6.614 5.157z" transform="matrix(.90884 .41716 -.41716 .90884 68.522 -90.128)"/>
<path id="path992" d="m369.99 156.72c1.361 2.264 4.656-2.483 6.614-5.157-3.228 2.134-8.079 2.995-6.614 5.157z" transform="matrix(.90884 .41716 -.41716 .90884 65.787 -86.456)"/>
<path id="path993" d="m370.24 156.74c1.172 1.967 4.482-2.131 6.763-4.356-2.863 0.884-7.938 2.326-6.763 4.356z" transform="matrix(.53651 -.84390 .84390 .53651 4.4898 438.57)"/>
<path id="path994" d="m370.48 156.11c1.361 2.264 4.413-1.984 6.218-4.803-3.166 2.363-7.683 2.641-6.218 4.803z" transform="matrix(.90884 .41716 -.41716 .90884 61.842 -83.019)"/>
</g>
<g id="g1741" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1742" d="m369.07 156.68c1.688 1.918 3.817-0.083 5.178-1.663-2.116-0.851-4.775-1.09-5.178 1.663z" transform="matrix(.82834 -.56023 .56023 .82834 -50.002 277.82)"/>
<path id="path1743" d="m369.88 155.77c0.653 1.911 5.234-0.649 5.86-3.498-3.194 2.378-6.81 0.584-5.86 3.498z" transform="matrix(.99375 .11161 -.11161 .99375 -7.6867 7.2933)"/>
<path id="path1744" d="m369.35 155.59c0.743 2.113 3.186-0.632 6.119-2.388-3.037 0.256-6.895 0.359-6.119 2.388z" transform="matrix(.48134 -.87653 .87653 .48134 26.604 452.13)"/>
<path id="path1745" d="m369.72 156.65c1.037 2.192 4.134-1.586 6.415-3.811-2.863 0.884-7.437 1.73-6.415 3.811z" transform="matrix(.53651 -.84390 .84390 .53651 7.4196 434.51)"/>
<path id="path1746" d="m369.99 156.72c1.361 2.264 4.656-2.483 6.614-5.157-3.228 2.134-8.079 2.995-6.614 5.157z" transform="matrix(.90884 .41716 -.41716 .90884 68.522 -90.128)"/>
<path id="path1747" d="m369.99 156.72c1.361 2.264 4.656-2.483 6.614-5.157-3.228 2.134-8.079 2.995-6.614 5.157z" transform="matrix(.90884 .41716 -.41716 .90884 65.787 -86.456)"/>
<path id="path1748" d="m370.24 156.74c1.172 1.967 4.482-2.131 6.763-4.356-2.863 0.884-7.938 2.326-6.763 4.356z" transform="matrix(.53651 -.84390 .84390 .53651 4.4898 438.57)"/>
<path id="path1749" d="m370.48 156.11c1.361 2.264 4.413-1.984 6.218-4.803-3.166 2.363-7.683 2.641-6.218 4.803z" transform="matrix(.90884 .41716 -.41716 .90884 61.842 -83.019)"/>
</g>
<g id="g1750" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path978" d="m369.07 156.68c1.361 2.263 6.384-1.648 9.124-3.663-3.939 1.217-10.074 0.749-9.124 3.663z" transform="translate(-10.066 52.329)"/>
<path id="path979" d="m369.28 156.37c1.361 2.264 8.564-2.689 9.028-4.913-3.08 2.902-10.243 2.972-9.028 4.913z" transform="matrix(.93771 .34742 -.34742 .93771 61.925 -63.565)"/>
<path id="path980" d="m369.02 156.34c0.734 1.246 6.626-1.513 9.316-3.687-3.171 1.645-10.727 1.777-9.316 3.687z" transform="matrix(.93771 .34742 -.34742 .93771 58.168 -61.466)"/>
<path id="path981" d="m369.07 156.36c0.474 1.218 7.802-0.699 9.444-3.567-4.491 2.466-11.007 0.797-9.444 3.567z" transform="matrix(.93771 .34742 -.34742 .93771 54.743 -59.808)"/>
<path id="path982" d="m369.61 155.58c0.357 1.803 7.914-1.407 10.013-3.154-4.247 1.211-10.571 0.511-10.013 3.154z" transform="matrix(.93771 .34742 -.34742 .93771 48.003 -58.041)"/>
<path id="path983" d="m369.84 156.21c0.943 2.325 8.486-2.48 11.315-4.831-4.94 1.877-12.584 2.587-11.315 4.831z" transform="matrix(.90337 -.42886 .42886 .90337 -60.675 232.1)"/>
<path id="path984" d="m370.05 156.48c1.361 2.264 5.479-1.701 8.171-4.767-3.344 2.159-9.121 1.853-8.171 4.767z" transform="matrix(.90337 -.42886 .42886 .90337 -55.593 230.66)"/>
<path id="path985" d="m369.77 156.44c1.361 2.264 4.556-1.577 6.334-4.083-2.48 1.705-7.284 1.169-6.334 4.083z" transform="matrix(.90337 -.42886 .42886 .90337 -51.063 229.12)"/>
<path id="path986" d="m369.35 155.59c1.361 2.264 5.597-0.218 6.735-4.108-2.533 3.366-7.685 1.194-6.735 4.108z" transform="matrix(.90337 -.42886 .42886 .90337 -46.201 227.13)"/>
<path id="path1038" d="m369.18 156.24c1.084 2.76 12.483-2.413 14.394-5.864-3.662 3.095-15.455 2.674-14.394 5.864z" transform="translate(-23.348 64.439)"/>
</g>
<g id="g1761" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1762" d="m369.07 156.68c1.361 2.263 6.384-1.648 9.124-3.663-3.939 1.217-10.074 0.749-9.124 3.663z" transform="translate(-10.066 52.329)"/>
<path id="path1763" d="m369.28 156.37c1.361 2.264 8.564-2.689 9.028-4.913-3.08 2.902-10.243 2.972-9.028 4.913z" transform="matrix(.93771 .34742 -.34742 .93771 61.925 -63.565)"/>
<path id="path1764" d="m369.02 156.34c0.734 1.246 6.626-1.513 9.316-3.687-3.171 1.645-10.727 1.777-9.316 3.687z" transform="matrix(.93771 .34742 -.34742 .93771 58.168 -61.466)"/>
<path id="path1765" d="m369.07 156.36c0.474 1.218 7.802-0.699 9.444-3.567-4.491 2.466-11.007 0.797-9.444 3.567z" transform="matrix(.93771 .34742 -.34742 .93771 54.743 -59.808)"/>
<path id="path1766" d="m369.61 155.58c0.357 1.803 7.914-1.407 10.013-3.154-4.247 1.211-10.571 0.511-10.013 3.154z" transform="matrix(.93771 .34742 -.34742 .93771 48.003 -58.041)"/>
<path id="path1767" d="m369.84 156.21c0.943 2.325 8.486-2.48 11.315-4.831-4.94 1.877-12.584 2.587-11.315 4.831z" transform="matrix(.90337 -.42886 .42886 .90337 -60.675 232.1)"/>
<path id="path1768" d="m370.05 156.48c1.361 2.264 5.479-1.701 8.171-4.767-3.344 2.159-9.121 1.853-8.171 4.767z" transform="matrix(.90337 -.42886 .42886 .90337 -55.593 230.66)"/>
<path id="path1769" d="m369.77 156.44c1.361 2.264 4.556-1.577 6.334-4.083-2.48 1.705-7.284 1.169-6.334 4.083z" transform="matrix(.90337 -.42886 .42886 .90337 -51.063 229.12)"/>
<path id="path1770" d="m369.35 155.59c1.361 2.264 5.597-0.218 6.735-4.108-2.533 3.366-7.685 1.194-6.735 4.108z" transform="matrix(.90337 -.42886 .42886 .90337 -46.201 227.13)"/>
<path id="path1771" d="m369.18 156.24c1.084 2.76 12.483-2.413 14.394-5.864-3.662 3.095-15.455 2.674-14.394 5.864z" transform="translate(-23.348 64.439)"/>
</g>
<g id="g2048" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path1060" d="m366.62 143.7c0.368-3.589-2.381-10.115-0.43-13.594 0.266-0.478-0.584-1.747-1.133-0.977-0.858 1.229-1.74 4.731-2.109 3.438-0.391-1.406-0.451-3.893-1.719-4.376-0.809-0.283-1.953-0.468-1.641 0.782 0.31 1.202 1.004 2.862 0.235 2.969-0.446 0.065-1.731-1.636-2.813-2.422-0.872-0.701-2.173 0.396-0.898 1.445 4.144 3.379 8.159 4.9 10.508 12.735z" transform="matrix(-.98188 0 0 1 614.94 .23438)" stroke="#000" stroke-width=".5"/>
<path id="path2023" d="m366.62 143.7c0.368-3.589-2.381-10.115-0.43-13.594 0.266-0.478-0.584-1.747-1.133-0.977-0.858 1.229-1.74 4.731-2.109 3.438-0.391-1.406-0.451-3.893-1.719-4.376-0.809-0.283-1.953-0.468-1.641 0.782 0.31 1.202 1.004 2.862 0.235 2.969-0.446 0.065-1.731-1.636-2.813-2.422-0.872-0.701-2.173 0.396-0.898 1.445 4.144 3.379 8.159 4.9 10.508 12.735z" transform="matrix(-.98188 0 0 1 614.94 .23438)" stroke-width="1pt"/>
</g>
<g id="g1944" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1063" d="m235.83 159.52c-0.377-0.307-0.876-0.76-0.704 0.176 1.409 7.41 1.855 9.483 8.349 12.044 6.602 2.508 8.968 1.631 14.589 1.533 3.034-0.111 6.567 1.404 8.671 3.618 0.98 1.03 1.687 1.441 1.294 0.128-0.394-1.312-0.777-3.015-1.396-4.379-1.348-3.002-4.834-5.866-8.321-7.011-4.879-1.717-10.139-0.854-15.164-2.164-2.621-0.724-5.138-2.183-7.318-3.945z" transform="matrix(.88047 -.47410 .47410 .88047 -35.615 169.31)" stroke="#000" stroke-width=".5"/>
<path id="path1943" d="m235.83 159.52c-0.377-0.307-0.876-0.76-0.704 0.176 1.409 7.41 1.855 9.483 8.349 12.044 6.602 2.508 8.968 1.631 14.589 1.533 3.034-0.111 6.567 1.404 8.671 3.618 0.98 1.03 1.687 1.441 1.294 0.128-0.394-1.312-0.777-3.015-1.396-4.379-1.348-3.002-4.834-5.866-8.321-7.011-4.879-1.717-10.139-0.854-15.164-2.164-2.621-0.724-5.138-2.183-7.318-3.945z" transform="matrix(.88047 -.47410 .47410 .88047 -35.615 169.31)"/>
</g>
<g id="g2061" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1080" d="m287.66 208.42c0.884 0.11 1.444 1.822 1.879 0.663 0.738-1.877 0.221-3.37-0.608-3.205-0.979 0.261-2.635 2.456-1.271 2.542z" stroke="#000" stroke-width=".5"/>
<path id="path2060" d="m287.66 208.42c0.884 0.11 1.444 1.822 1.879 0.663 0.738-1.877 0.221-3.37-0.608-3.205-0.979 0.261-2.635 2.456-1.271 2.542z"/>
</g>
<g id="g1772" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path1017" d="m249.9 157.09c1.728 1.711 4.718-3.155 3.941-6.49-1.033 3.678-5.223 5.02-3.941 6.49z" transform="matrix(0.849 -.52839 .52839 0.849 -9.4802 208.69)"/>
<path id="path1018" d="m250.19 157.5c-2.085 1.745-3.69-5.558-3.041-8.224 1.03 4.254 4.665 6.769 3.041 8.224z" transform="matrix(.59662 -.80252 .80252 .59662 9.1043 316.78)"/>
<path id="path1019" d="m250.18 157.07c-2.021 1.7-3.633-4.676-2.984-7.342 1.233 4.066 4.608 5.887 2.984 7.342z" transform="matrix(.57031 -.82143 .82143 .57031 10.079 322.01)"/>
<path id="path1020" d="m250.12 156.81c1.728 1.711 4.523-3.507 3.639-6.448-1.144 3.931-4.921 4.978-3.639 6.448z" transform="matrix(0.849 -.52839 .52839 0.849 -12.293 205.49)"/>
<path id="path1021" d="m250.52 157.06c1.728 1.711 3.26-3.326 2.841-5.979-1.717 3.299-4.068 4.865-2.841 5.979z" transform="matrix(0.849 -.52839 .52839 0.849 -15.262 201.89)"/>
<path id="path1022" d="m250.37 157.56c-2.085 1.745-3.109-3.375-2.065-6.363 1.21 4.034 3.689 4.908 2.065 6.363z" transform="matrix(.57031 -.82143 .82143 .57031 6.9544 318.65)"/>
<path id="path1023" d="m250.33 156.62c1.52 1.162 3.868-1.273 2.834-4.049-1.623 0.795-4.329 2.684-2.834 4.049z" transform="matrix(.29048 -.95688 .95688 .29048 55.276 394.83)"/>
<path id="path1033" d="m250.98 156.86c-2.085 1.745-5.07-4.533-4.027-7.978 1.914 3.937 5.651 6.523 4.027 7.978z" transform="matrix(.59662 -.80252 .80252 .59662 13.91 320.87)"/>
</g>
<g id="g1996" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<g id="g1948" stroke="#000" stroke-width=".5">
<path id="path1061" d="m244.38 141.09c-1.017-1.062-0.723-1.468 0.781-1.485 1.193-0.075 3.557 0.731 4.454 0.078 0.822-0.597 0.495-3.129 0.86-4.297 0.159-0.651 0.615-1.673 1.64-0.078 3.032 4.859 6.819 10.692 8.438 16.407 0.885 3.203 0.052 8.203-2.891 11.563 0.104-2.865-0.964-4.792-2.266-7.188-1.608-3.149-7.581-11.678-11.016-15z"/>
<path id="path1067" d="m256.88 166.64c3.334 0.016 3.907-4.453 3.907-5.703-1.641 0.312-4.532 3.047-3.907 5.703z"/>
</g>
<g id="g1951">
<path id="path1952" d="m244.38 141.09c-1.017-1.062-0.723-1.468 0.781-1.485 1.193-0.075 3.557 0.731 4.454 0.078 0.822-0.597 0.495-3.129 0.86-4.297 0.159-0.651 0.615-1.673 1.64-0.078 3.032 4.859 6.819 10.692 8.438 16.407 0.885 3.203 0.052 8.203-2.891 11.563 0.104-2.865-0.964-4.792-2.266-7.188-1.608-3.149-7.581-11.678-11.016-15z"/>
<path id="path1953" d="m256.88 166.64c3.334 0.016 3.907-4.453 3.907-5.703-1.641 0.312-4.532 3.047-3.907 5.703z"/>
</g>
</g>
<g id="g1781" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1782" d="m249.9 157.09c1.728 1.711 4.718-3.155 3.941-6.49-1.033 3.678-5.223 5.02-3.941 6.49z" transform="matrix(0.849 -.52839 .52839 0.849 -9.4802 208.69)"/>
<path id="path1783" d="m250.19 157.5c-2.085 1.745-3.69-5.558-3.041-8.224 1.03 4.254 4.665 6.769 3.041 8.224z" transform="matrix(.59662 -.80252 .80252 .59662 9.1043 316.78)"/>
<path id="path1784" d="m250.18 157.07c-2.021 1.7-3.633-4.676-2.984-7.342 1.233 4.066 4.608 5.887 2.984 7.342z" transform="matrix(.57031 -.82143 .82143 .57031 10.079 322.01)"/>
<path id="path1785" d="m250.12 156.81c1.728 1.711 4.523-3.507 3.639-6.448-1.144 3.931-4.921 4.978-3.639 6.448z" transform="matrix(0.849 -.52839 .52839 0.849 -12.293 205.49)"/>
<path id="path1786" d="m250.52 157.06c1.728 1.711 3.26-3.326 2.841-5.979-1.717 3.299-4.068 4.865-2.841 5.979z" transform="matrix(0.849 -.52839 .52839 0.849 -15.262 201.89)"/>
<path id="path1787" d="m250.37 157.56c-2.085 1.745-3.109-3.375-2.065-6.363 1.21 4.034 3.689 4.908 2.065 6.363z" transform="matrix(.57031 -.82143 .82143 .57031 6.9544 318.65)"/>
<path id="path1788" d="m250.33 156.62c1.52 1.162 3.868-1.273 2.834-4.049-1.623 0.795-4.329 2.684-2.834 4.049z" transform="matrix(.29048 -.95688 .95688 .29048 55.276 394.83)"/>
<path id="path1789" d="m250.98 156.86c-2.085 1.745-5.07-4.533-4.027-7.978 1.914 3.937 5.651 6.523 4.027 7.978z" transform="matrix(.59662 -.80252 .80252 .59662 13.91 320.87)"/>
</g>
<g id="g1790" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path1024" d="m250.86 158.12c-2.085 1.745-3.885-6.069-2.841-9.057 1.21 4.034 4.465 7.602 2.841 9.057z" transform="matrix(.57031 -.82143 .82143 .57031 -10.503 324.07)"/>
<path id="path1025" d="m250.38 156.93c1.52 1.162 3.351-2.708 3.264-5.322-1.623 0.795-4.759 3.957-3.264 5.322z" transform="matrix(.29048 -.95688 .95688 .29048 44.117 403.34)"/>
<path id="path1026" d="m250.88 157.68c-1.905 1.525-5.456-5.931-4.824-8.965 2.958 6.483 6.406 7.587 4.824 8.965z" transform="matrix(.57031 -.82143 .82143 .57031 -5.1125 327.37)"/>
<path id="path1027" d="m250.19 157.5c-1.851 1.583-3.841-6.002-3.478-9.025 1.462 4.19 4.77 7.93 3.478 9.025z" transform="matrix(.32122 -0.947 0.947 .32122 41.784 399.18)"/>
<path id="path1028" d="m250.38 157.68c-1.641 1.471-3.924-5.396-3.996-9.096 1.537 4.412 5.62 7.641 3.996 9.096z" transform="matrix(.32122 -0.947 0.947 .32122 45.209 400.95)"/>
<path id="path1029" d="m250.19 157.5c-2.085 1.745-3.875-5.679-3.226-8.345 1.497 4.196 4.85 6.89 3.226 8.345z" transform="matrix(.20456 -.97885 .97885 .20456 74.876 428.26)"/>
<path id="path1030" d="m249.96 156.68c-2.641 1.126-1.795-3.311-3.205-6.705 2.557 3.211 5.062 5.525 3.205 6.705z" transform="matrix(.98729 -.15894 .15894 .98729 -.40534 96.513)"/>
<path id="path1031" d="m250.18 157.07c-2.298 1.458-2.921-4.918-4.199-8.645 2.433 3.744 6.293 7.464 4.199 8.645z" transform="matrix(.98729 -.15894 .15894 .98729 3.6274 97.783)"/>
<path id="path1032" d="m250.41 157.35c-2.021 1.7-5.694-6.867-6.833-11.206 2.219 3.592 8.457 9.751 6.833 11.206z" transform="matrix(.98729 -.15894 .15894 .98729 9.0413 99.275)"/>
</g>
<g id="g1800" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1801" d="m250.86 158.12c-2.085 1.745-3.885-6.069-2.841-9.057 1.21 4.034 4.465 7.602 2.841 9.057z" transform="matrix(.57031 -.82143 .82143 .57031 -10.503 324.07)"/>
<path id="path1802" d="m250.38 156.93c1.52 1.162 3.351-2.708 3.264-5.322-1.623 0.795-4.759 3.957-3.264 5.322z" transform="matrix(.29048 -.95688 .95688 .29048 44.117 403.34)"/>
<path id="path1803" d="m250.88 157.68c-1.905 1.525-5.456-5.931-4.824-8.965 2.958 6.483 6.406 7.587 4.824 8.965z" transform="matrix(.57031 -.82143 .82143 .57031 -5.1125 327.37)"/>
<path id="path1804" d="m250.19 157.5c-1.851 1.583-3.841-6.002-3.478-9.025 1.462 4.19 4.77 7.93 3.478 9.025z" transform="matrix(.32122 -0.947 0.947 .32122 41.784 399.18)"/>
<path id="path1805" d="m250.38 157.68c-1.641 1.471-3.924-5.396-3.996-9.096 1.537 4.412 5.62 7.641 3.996 9.096z" transform="matrix(.32122 -0.947 0.947 .32122 45.209 400.95)"/>
<path id="path1806" d="m250.19 157.5c-2.085 1.745-3.875-5.679-3.226-8.345 1.497 4.196 4.85 6.89 3.226 8.345z" transform="matrix(.20456 -.97885 .97885 .20456 74.876 428.26)"/>
<path id="path1807" d="m249.96 156.68c-2.641 1.126-1.795-3.311-3.205-6.705 2.557 3.211 5.062 5.525 3.205 6.705z" transform="matrix(.98729 -.15894 .15894 .98729 -.40534 96.513)"/>
<path id="path1808" d="m250.18 157.07c-2.298 1.458-2.921-4.918-4.199-8.645 2.433 3.744 6.293 7.464 4.199 8.645z" transform="matrix(.98729 -.15894 .15894 .98729 3.6274 97.783)"/>
<path id="path1809" d="m250.41 157.35c-2.021 1.7-5.694-6.867-6.833-11.206 2.219 3.592 8.457 9.751 6.833 11.206z" transform="matrix(.98729 -.15894 .15894 .98729 9.0413 99.275)"/>
</g>
<path id="path1820" d="m276.43 420.33c-0.86048 3.0401-13.554-2.8657-14.971-5.9253 7.2632 3.8485 15.145 3.0436 14.971 5.9253z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<g id="g2003" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1062" d="m235.63 159.06c-0.297-0.385-1.15 0.01-0.937 0.938 0.198 1.256 2.05 7.704 5.233 9.922 2.27 1.636 14.201 4.271 19.61 5.39 2.977 0.599 5.47 2.084 7.423 4.454-0.808-3.099-1.457-5.395-2.5-8.203-1.014-2.468-3.701-5.168-6.484-5.313-5.169-0.186-11.859-0.626-16.72-2.735-2.509-1.048-4.011-2.464-5.625-4.453z" stroke="#000" stroke-width=".5"/>
<path id="path1947" d="m235.63 159.06c-0.297-0.385-1.15 0.01-0.937 0.938 0.198 1.256 2.05 7.704 5.233 9.922 2.27 1.636 14.201 4.271 19.61 5.39 2.977 0.599 5.47 2.084 7.423 4.454-0.808-3.099-1.457-5.395-2.5-8.203-1.014-2.468-3.701-5.168-6.484-5.313-5.169-0.186-11.859-0.626-16.72-2.735-2.509-1.048-4.011-2.464-5.625-4.453z"/>
</g>
<g id="g1821" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path1008" d="m250.53 156.52c1.172 1.65 4.227-1.871 3.541-6.402-1.294 3.717-4.678 3.992-3.541 6.402z" transform="matrix(.94971 -.31314 .31314 .94971 -21.681 114.37)"/>
<path id="path1009" d="m250.32 156.17c1.924 1.363 3.843-2.203 3.432-5.697-0.838 3.332-5.085 4.105-3.432 5.697z" transform="matrix(.94971 -.31314 .31314 .94971 -19.806 118.59)"/>
<path id="path1010" d="m250.33 156.62c1.728 1.711 3.772-1.857 3.223-5.188-1.033 3.678-4.505 3.718-3.223 5.188z" transform="matrix(.94971 -.31314 .31314 .94971 -18.244 121.33)"/>
<path id="path1011" d="m250.32 157.35c-2.085 1.745-3.833-4.965-3.184-7.631 1.03 4.254 4.808 6.176 3.184 7.631z" transform="matrix(.85194 -.52363 .52363 .85194 -28.011 188.95)"/>
<path id="path1013" d="m250.2 157.55c-2.185 1.683-4.069-7.266-3.58-10.717 1.03 4.254 5.128 9.536 3.58 10.717z" transform="matrix(.85194 -.52363 .52363 .85194 -30.277 184.77)"/>
<path id="path1014" d="m250.32 157.35c-2.369 1.983-4.106-8.251-4.307-11.623 1.184 4.303 6.051 10.196 4.307 11.623z" transform="matrix(.85194 -.52363 .52363 .85194 -31.527 181.14)"/>
<path id="path1015" d="m250.82 156.4c1.377 2.03 2.221-1.098 4.058-5.093-3.21 1.222-5.195 2.683-4.058 5.093z" transform="matrix(.39304 -.91952 .91952 .39304 21.518 350.38)"/>
<path id="path1016" d="m251.34 156.64c1.45 0.511 1.093-1.551 2.704-4.982-1.901 0.408-4.048 4.274-2.704 4.982z" transform="matrix(.39304 -.91952 .91952 .39304 17.026 348.82)"/>
<path id="path1055" d="m251.93 155.26c1.01 1.145 2.712-1.137 1.918-3.973-1.185 2.394-2.754 2.65-1.918 3.973z" transform="matrix(.94971 -.31314 .31314 .94971 -16.369 123.44)"/>
</g>
<g id="g1831" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1832" d="m250.53 156.52c1.172 1.65 4.227-1.871 3.541-6.402-1.294 3.717-4.678 3.992-3.541 6.402z" transform="matrix(.94971 -.31314 .31314 .94971 -21.681 114.37)"/>
<path id="path1833" d="m250.32 156.17c1.924 1.363 3.843-2.203 3.432-5.697-0.838 3.332-5.085 4.105-3.432 5.697z" transform="matrix(.94971 -.31314 .31314 .94971 -19.806 118.59)"/>
<path id="path1834" d="m250.33 156.62c1.728 1.711 3.772-1.857 3.223-5.188-1.033 3.678-4.505 3.718-3.223 5.188z" transform="matrix(.94971 -.31314 .31314 .94971 -18.244 121.33)"/>
<path id="path1835" d="m250.32 157.35c-2.085 1.745-3.833-4.965-3.184-7.631 1.03 4.254 4.808 6.176 3.184 7.631z" transform="matrix(.85194 -.52363 .52363 .85194 -28.011 188.95)"/>
<path id="path1836" d="m250.2 157.55c-2.185 1.683-4.069-7.266-3.58-10.717 1.03 4.254 5.128 9.536 3.58 10.717z" transform="matrix(.85194 -.52363 .52363 .85194 -30.277 184.77)"/>
<path id="path1837" d="m250.32 157.35c-2.369 1.983-4.106-8.251-4.307-11.623 1.184 4.303 6.051 10.196 4.307 11.623z" transform="matrix(.85194 -.52363 .52363 .85194 -31.527 181.14)"/>
<path id="path1838" d="m250.82 156.4c1.377 2.03 2.221-1.098 4.058-5.093-3.21 1.222-5.195 2.683-4.058 5.093z" transform="matrix(.39304 -.91952 .91952 .39304 21.518 350.38)"/>
<path id="path1839" d="m251.34 156.64c1.45 0.511 1.093-1.551 2.704-4.982-1.901 0.408-4.048 4.274-2.704 4.982z" transform="matrix(.39304 -.91952 .91952 .39304 17.026 348.82)"/>
<path id="path1840" d="m251.93 155.26c1.01 1.145 2.712-1.137 1.918-3.973-1.185 2.394-2.754 2.65-1.918 3.973z" transform="matrix(.94971 -.31314 .31314 .94971 -16.369 123.44)"/>
</g>
<g id="g1878" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path995" d="m250.84 158.3c-3.215 0.553-4.94-7.294-5.05-10.29 1.147 3.834 6.165 8.875 5.05 10.29z" transform="matrix(.93241 -.36139 .36139 .93241 -48.214 118.01)"/>
<path id="path996" d="m250.7 157.48c-2.064 1.041-4.923-5.067-5.648-7.882 1.618 3.053 7.29 5.54 5.648 7.882z" transform="matrix(.93241 -.36139 .36139 .93241 -45.401 122.62)"/>
<path id="path997" d="m250.66 157.78c-1.663 1.73-4.962-6.484-5.072-9.48 1.099 4.067 6.931 7.345 5.072 9.48z" transform="matrix(.85194 -.52363 .52363 .85194 -48.246 179.19)"/>
<path id="path998" d="m250.35 157.83c-2.04 1.224-4.229-6.261-3.983-9.313 1.396 4.478 5.839 8.003 3.983 9.313z" transform="matrix(.85194 -.52363 .52363 .85194 -49.105 181.53)"/>
<path id="path1002" d="m251.31 157.15c2.336-1.256 1.88-2.356 1.566-5.653-1.666 2.73-3.097 3.567-1.566 5.653z" transform="matrix(.94971 -.31314 .31314 .94971 -44.025 104.06)"/>
<path id="path1003" d="m251.1 157.04c3.098 1.175 1.246-3.677 1.562-7.135-0.934 3.752-2.965 6.283-1.562 7.135z" transform="matrix(.94971 -.31314 .31314 .94971 -41.369 107.73)"/>
<path id="path1004" d="m250.97 156.67c2.341 0.226 2.729-3.064 2.29-7.348-0.983 4.148-3.943 5.756-2.29 7.348z" transform="matrix(.94971 -.31314 .31314 .94971 -39.025 111.25)"/>
<g id="g1862">
<path id="path999" d="m250.61 157.71c-2.085 1.745-4.517-6.761-4.218-9.23 1.36 4.09 5.727 7.888 4.218 9.23z" transform="matrix(.85194 -.52363 .52363 .85194 -48.48 184.74)"/>
<path id="path1000" d="m250.87 157.73c-2.185 1.685-5.272-6.352-5.564-9.873 1.813 4.919 7.334 7.959 5.564 9.873z" transform="matrix(.85194 -.52363 .52363 .85194 -44.808 188.88)"/>
<path id="path1001" d="m251.18 157.37c-2.816 2.488-5.904-6.145-6.25-9.653 2.057 5.343 8.086 7.779 6.25 9.653z" transform="matrix(.85194 -.52363 .52363 .85194 -40.902 193.41)"/>
<path id="path1005" d="m250.66 156.36c1.53 1.563 4.001-3.426 4.179-7.465-1.316 4.038-6.018 5.812-4.179 7.465z" transform="matrix(.94971 -.31314 .31314 .94971 -38.244 116.72)"/>
<path id="path1006" d="m250.88 157.58c1.999 1.389 3.157-4.485 2.47-8.769-1.441 3.545-4.212 6.449-2.47 8.769z" transform="matrix(.94971 -.31314 .31314 .94971 -35.509 120)"/>
<path id="path1007" d="m251.41 156.98c2.43 0.955 2.367-4.582 1.25-8.061-0.86 3.777-3.185 6.952-1.25 8.061z" transform="matrix(.94971 -.31314 .31314 .94971 -31.681 124.84)"/>
<path id="path1056" d="m247.98 153.48c-1.363 0.721-1.71-2.375-3.453-5.55 2.024 2.113 4.394 4.684 3.453 5.55z" transform="matrix(.85194 -.52363 .52363 .85194 -39.964 196.53)"/>
</g>
</g>
<g id="g1894" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1895" d="m250.84 158.3c-3.215 0.553-4.94-7.294-5.05-10.29 1.147 3.834 6.165 8.875 5.05 10.29z" transform="matrix(.93241 -.36139 .36139 .93241 -48.214 118.01)"/>
<path id="path1896" d="m250.7 157.48c-2.064 1.041-4.923-5.067-5.648-7.882 1.618 3.053 7.29 5.54 5.648 7.882z" transform="matrix(.93241 -.36139 .36139 .93241 -45.401 122.62)"/>
<path id="path1897" d="m250.66 157.78c-1.663 1.73-4.962-6.484-5.072-9.48 1.099 4.067 6.931 7.345 5.072 9.48z" transform="matrix(.85194 -.52363 .52363 .85194 -48.246 179.19)"/>
<path id="path1898" d="m250.35 157.83c-2.04 1.224-4.229-6.261-3.983-9.313 1.396 4.478 5.839 8.003 3.983 9.313z" transform="matrix(.85194 -.52363 .52363 .85194 -49.105 181.53)"/>
<path id="path1899" d="m251.31 157.15c2.336-1.256 1.88-2.356 1.566-5.653-1.666 2.73-3.097 3.567-1.566 5.653z" transform="matrix(.94971 -.31314 .31314 .94971 -44.025 104.06)"/>
<path id="path1900" d="m251.1 157.04c3.098 1.175 1.246-3.677 1.562-7.135-0.934 3.752-2.965 6.283-1.562 7.135z" transform="matrix(.94971 -.31314 .31314 .94971 -41.369 107.73)"/>
<path id="path1901" d="m250.97 156.67c2.341 0.226 2.729-3.064 2.29-7.348-0.983 4.148-3.943 5.756-2.29 7.348z" transform="matrix(.94971 -.31314 .31314 .94971 -39.025 111.25)"/>
<g id="g1902">
<path id="path1903" d="m250.61 157.71c-2.085 1.745-4.517-6.761-4.218-9.23 1.36 4.09 5.727 7.888 4.218 9.23z" transform="matrix(.85194 -.52363 .52363 .85194 -48.48 184.74)"/>
<path id="path1904" d="m250.87 157.73c-2.185 1.685-5.272-6.352-5.564-9.873 1.813 4.919 7.334 7.959 5.564 9.873z" transform="matrix(.85194 -.52363 .52363 .85194 -44.808 188.88)"/>
<path id="path1905" d="m251.18 157.37c-2.816 2.488-5.904-6.145-6.25-9.653 2.057 5.343 8.086 7.779 6.25 9.653z" transform="matrix(.85194 -.52363 .52363 .85194 -40.902 193.41)"/>
<path id="path1906" d="m250.66 156.36c1.53 1.563 4.001-3.426 4.179-7.465-1.316 4.038-6.018 5.812-4.179 7.465z" transform="matrix(.94971 -.31314 .31314 .94971 -38.244 116.72)"/>
<path id="path1907" d="m250.88 157.58c1.999 1.389 3.157-4.485 2.47-8.769-1.441 3.545-4.212 6.449-2.47 8.769z" transform="matrix(.94971 -.31314 .31314 .94971 -35.509 120)"/>
<path id="path1908" d="m251.41 156.98c2.43 0.955 2.367-4.582 1.25-8.061-0.86 3.777-3.185 6.952-1.25 8.061z" transform="matrix(.94971 -.31314 .31314 .94971 -31.681 124.84)"/>
<path id="path1909" d="m247.98 153.48c-1.363 0.721-1.71-2.375-3.453-5.55 2.024 2.113 4.394 4.684 3.453 5.55z" transform="matrix(.85194 -.52363 .52363 .85194 -39.964 196.53)"/>
</g>
</g>
<g id="g1534" stroke-linejoin="round" fill-rule="evenodd" transform="translate(-.11049 199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path898" d="m250.28 153.28c2.433-1.8 0.577-5.167 0-8.369-0.783 3.037-2.844 7.022 0 8.369z"/>
<path id="path899" d="m250.2 157.78c-3.655-0.439-3.105-5.166-3.215-8.162 1.099 4.067 4.095 4.754 3.215 8.162z"/>
<path id="path900" d="m250.78 157.16c3.092-0.179 2.928-3.697 3.093-7.256-1.567 3.271-3.423 3.779-3.093 7.256z"/>
<path id="path901" d="m250.66 161.53c-2.405 0.192-3.655-2.171-4.205-5.854 2.281 3.394 4.356 2.336 4.205 5.854z"/>
<path id="path902" d="m251.52 161.24c3.092 0.398 2.598-3.202 2.474-5.855-0.948 2.529-3.463 3.326-2.474 5.855z"/>
<path id="path903" d="m246.7 159.72c0.247 2.35 1.732 6.39 4.123 5.483 0.989-2.886-2.103-3.463-4.123-5.483z"/>
<path id="path904" d="m251.56 165.45c-1.072-2.061 2.432-3.093 3.174-5.772 0.426 3.834 0.069 6.349-3.174 5.772z"/>
</g>
<g id="g1542" fill-rule="evenodd" transform="translate(-.11049 199.5)" fill="#fff">
<path id="path1543" d="m250.28 153.28c2.433-1.8 0.577-5.167 0-8.369-0.783 3.037-2.844 7.022 0 8.369z"/>
<path id="path1544" d="m250.2 157.78c-3.655-0.439-3.105-5.166-3.215-8.162 1.099 4.067 4.095 4.754 3.215 8.162z"/>
<path id="path1545" d="m250.78 157.16c3.092-0.179 2.928-3.697 3.093-7.256-1.567 3.271-3.423 3.779-3.093 7.256z"/>
<path id="path1546" d="m250.66 161.53c-2.405 0.192-3.655-2.171-4.205-5.854 2.281 3.394 4.356 2.336 4.205 5.854z"/>
<path id="path1547" d="m251.52 161.24c3.092 0.398 2.598-3.202 2.474-5.855-0.948 2.529-3.463 3.326-2.474 5.855z"/>
<path id="path1548" d="m246.7 159.72c0.247 2.35 1.732 6.39 4.123 5.483 0.989-2.886-2.103-3.463-4.123-5.483z"/>
<path id="path1549" d="m251.56 165.45c-1.072-2.061 2.432-3.093 3.174-5.772 0.426 3.834 0.069 6.349-3.174 5.772z"/>
</g>
<g id="g1510" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0 199.39)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path943" d="m250.28 153.28c1.925-2.073 0.225-5.362-0.352-8.564-0.783 3.037-2.14 7.061 0.352 8.564z" transform="translate(-8.8046 -12.153)"/>
<path id="path944" d="m250.9 158.01c-3.381 0.343-4.199-6.533-4.543-9.49 1.099 4.067 4.993 5.926 4.543 9.49z" transform="translate(-9.4866 -13.021)"/>
<path id="path945" d="m250.86 157.08c2.389-1.234 1.834-3.892 2.585-5.889-1.606 2.451-3.071 2.802-2.585 5.889z" transform="translate(-8.7426 -12.153)"/>
<path id="path946" d="m251.06 158.17c-3.537 0.303-5.644-7.315-5.754-10.311 1.099 4.067 6.166 6.278 5.754 10.311z" transform="translate(-9.6106 -8.7426)"/>
<path id="path947" d="m250.74 157c3.326-0.765 2.928-2.916 2.429-6.397-1.059 3.506-2.915 2.763-2.429 6.397z" transform="translate(-8.6185 -7.6885)"/>
<path id="path948" d="m250.89 161.45c-3.889 0.66-3.616-5.492-6.704-9.955 2.671 3.315 7.48 7.492 6.704 9.955z" transform="translate(-9.4866 -7.6265)"/>
<path id="path949" d="m251.52 161.24c2.936 0.085 3.223-4.335 3.06-6.128-0.675 1.786-4.127 3.482-3.06 6.128z" transform="translate(-9.2386 -7.6265)"/>
<path id="path951" d="m244.63 155.97c1.458 4.733 3.529 9.476 6.076 9.116 1.223-2.691-2.416-3.034-6.076-9.116z" transform="translate(-9.3006 -6.8824)"/>
<path id="path952" d="m251.56 165.45c-1.072-2.061 2.432-3.093 3.174-5.772 0.426 3.834 0.069 6.349-3.174 5.772z" transform="translate(-9.2386 -7.9365)"/>
<path id="path953" d="m245.14 156.79c2.082 4.264 3.021 9.164 5.88 8.452 1.067-3.316-3.157-4.01-5.88-8.452z" transform="translate(-8.8046 -2.2942)"/>
<path id="path954" d="m251.48 165.49c-1.228-2.256 2.276-3.054 3.135-6.163 0.465 4.069 0.03 6.974-3.135 6.163z" transform="translate(-8.6806 -3.3482)"/>
</g>
<g id="g1522" fill-rule="evenodd" transform="translate(0 199.39)" fill="#fff">
<path id="path1523" d="m250.28 153.28c1.925-2.073 0.225-5.362-0.352-8.564-0.783 3.037-2.14 7.061 0.352 8.564z" transform="translate(-8.8046 -12.153)"/>
<path id="path1524" d="m250.9 158.01c-3.381 0.343-4.199-6.533-4.543-9.49 1.099 4.067 4.993 5.926 4.543 9.49z" transform="translate(-9.4866 -13.021)"/>
<path id="path1525" d="m250.86 157.08c2.389-1.234 1.834-3.892 2.585-5.889-1.606 2.451-3.071 2.802-2.585 5.889z" transform="translate(-8.7426 -12.153)"/>
<path id="path1526" d="m251.06 158.17c-3.537 0.303-5.644-7.315-5.754-10.311 1.099 4.067 6.166 6.278 5.754 10.311z" transform="translate(-9.6106 -8.7426)"/>
<path id="path1527" d="m250.74 157c3.326-0.765 2.928-2.916 2.429-6.397-1.059 3.506-2.915 2.763-2.429 6.397z" transform="translate(-8.6185 -7.6885)"/>
<path id="path1528" d="m250.89 161.45c-3.889 0.66-3.616-5.492-6.704-9.955 2.671 3.315 7.48 7.492 6.704 9.955z" transform="translate(-9.4866 -7.6265)"/>
<path id="path1529" d="m251.52 161.24c2.936 0.085 3.223-4.335 3.06-6.128-0.675 1.786-4.127 3.482-3.06 6.128z" transform="translate(-9.2386 -7.6265)"/>
<path id="path1530" d="m244.63 155.97c1.458 4.733 3.529 9.476 6.076 9.116 1.223-2.691-2.416-3.034-6.076-9.116z" transform="translate(-9.3006 -6.8824)"/>
<path id="path1531" d="m251.56 165.45c-1.072-2.061 2.432-3.093 3.174-5.772 0.426 3.834 0.069 6.349-3.174 5.772z" transform="translate(-9.2386 -7.9365)"/>
<path id="path1532" d="m245.14 156.79c2.082 4.264 3.021 9.164 5.88 8.452 1.067-3.316-3.157-4.01-5.88-8.452z" transform="translate(-8.8046 -2.2942)"/>
<path id="path1533" d="m251.48 165.49c-1.228-2.256 2.276-3.054 3.135-6.163 0.465 4.069 0.03 6.974-3.135 6.163z" transform="translate(-8.6806 -3.3482)"/>
</g>
<path id="path922" d="m248.8 332.67c2.052 0.555 4.204-1.749 3.458-5.197-2.345 0.584-3.421 2.713-3.458 5.197z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path1039" d="m242.23 330.94c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2012" d="m248.8 332.67c2.052 0.555 4.204-1.749 3.458-5.197-2.345 0.584-3.421 2.713-3.458 5.197z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2013" d="m242.23 330.94c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2015" d="m249.33 327.25c-0.19451 1.515-1.4768 1.6524-1.1041-0.48729 0.31079-1.7368 0.36404-3.0424 0-4.4544-0.49878-1.7696-0.33252-4.7823 0.0424-6.0396 0.37817-1.3276 1.6311-0.54977 1.1041 0.48885-0.58029 1.2042-0.61071 3.7094-0.2119 4.8792 0.52487 1.7274 0.38251 4.0202 0.16952 5.6132z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<path id="path2022" d="m258.88 342.39c-0.79276 1.1662-2.0564 0.48933-1.3404-1.383 0.60459-1.2963 0.66944-2.9027 1.3428-3.8506 0.94174-1.4369 2.537-2.6344 3.4425-3.5034 0.93559-0.9258 1.7123-0.0336 0.85439 0.75965-1.0418 1.0424-2.172 2.3399-2.8001 3.3226-1.1714 1.9092-0.65572 3.4324-1.4991 4.6548z" fill-rule="evenodd" stroke="#000" stroke-width="0.5" fill="#fff"/>
<g id="g2031" fill-rule="evenodd" fill="#fff" transform="translate(-3.594 199.42)">
<path id="path2021" d="m242.54 131.62c0.179 0.97 1.484 0.926 1.141-0.444-0.286-1.112-0.933-2.181-0.598-3.085 0.459-1.133 0.571-3.079 0.226-3.884-0.348-0.85-1.47-0.28-0.985 0.385 0.534 0.771 0.114 2.925-0.253 3.674-0.483 1.106 0.273 2.334 0.469 3.354z" transform="matrix(-1.2604 -.50286 -.58469 1.2951 647.61 96.354)" stroke="#000" stroke-width=".36026"/>
<path id="path2027" d="m242.54 131.62c0.179 0.97 1.484 0.926 1.141-0.444-0.286-1.112-0.933-2.181-0.598-3.085 0.459-1.133 0.571-3.079 0.226-3.884-0.348-0.85-1.47-0.28-0.985 0.385 0.534 0.771 0.114 2.925-0.253 3.674-0.483 1.106 0.273 2.334 0.469 3.354z" transform="matrix(-1.2604 -.50286 -.58469 1.2951 647.61 96.354)" stroke-width="1pt"/>
</g>
<path id="path2034" d="m258.88 342.39c-0.79276 1.1662-2.0564 0.48933-1.3404-1.383 0.60459-1.2963 0.66944-2.9027 1.3428-3.8506 0.94174-1.4369 2.537-2.6344 3.4425-3.5034 0.93559-0.9258 1.7123-0.0336 0.85439 0.75965-1.0418 1.0424-2.172 2.3399-2.8001 3.3226-1.1714 1.9092-0.65572 3.4324-1.4991 4.6548z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<g id="g2044" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path2043" d="m242.23 131.78c-0.094 0.784 1.231 0.974 1.172-0.163-0.06-1.187-1.824-2.273-0.742-4.08 0.569-0.884 0.579-2.504 0.234-3.365-0.303-0.854-1.579-0.296-1.094 0.369 0.534 0.771-0.1 2.25-0.508 2.994-1.225 2.166 1.01 3.221 0.938 4.245z" transform="matrix(1 0 0 2.0999 3.4767 -139.85)" stroke="#000" stroke-width=".34504"/>
<path id="path2014" d="m242.23 131.78c-0.094 0.784 1.231 0.974 1.172-0.163-0.06-1.187-1.824-2.273-0.742-4.08 0.569-0.884 0.579-2.504 0.234-3.365-0.303-0.854-1.579-0.296-1.094 0.369 0.534 0.771-0.1 2.25-0.508 2.994-1.225 2.166 1.01 3.221 0.938 4.245z" transform="matrix(1 0 0 2.0999 3.4767 -139.85)"/>
</g>
<path id="path2047" d="m249.33 327.25c-0.19451 1.515-1.4768 1.6524-1.1041-0.48729 0.31079-1.7368 0.36404-3.0424 0-4.4544-0.49878-1.7696-0.33252-4.7823 0.0424-6.0396 0.37817-1.3276 1.6311-0.54977 1.1041 0.48885-0.58029 1.2042-0.61071 3.7094-0.2119 4.8792 0.52487 1.7274 0.38251 4.0202 0.16952 5.6132z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2051" d="m236.3 358.23c0.63456 0.75517 1.7042 0.24913 0.72951-0.77292-0.79772-0.82583-0.53515-1.0864-1.0213-2.0926-0.48071-1.1242-0.45566-1.7445-1.0359-2.5477-0.51311-0.76202-1.2849 0.0154-0.76788 0.65672 0.64906 0.75844 0.46988 1.3178 0.86685 2.0515 0.7335 1.2556 0.55465 1.9148 1.2287 2.705z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2052" d="m253.37 378.84c2.042 1.004 3.592 3.512 3.694 5.555 0.173 2.351 0.512 4.336 1.568 6.007-1.681-0.468-2.486-3.147-2.725-5.713-0.242-2.656-1.673-3.808-2.537-5.849z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2053" d="m257.63 383.76c1.413 2.6083 3.389 3.6031 3.49 5.5387 0.17118 2.2274 0.34039 2.3411 0.94398 4.5316-1.6634-0.4434-2.0819-0.58836-2.5312-3.9214-0.27706-2.3421-2.1522-3.9944-1.9028-6.1489z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path1093" d="m334.74 427.43c0.039 0.989 0.157 1.784 0.743 2.578-3.412-1.367-8.229-0.635-11.524 0.899-1.47 0.702-3.248-0.802-1.524-2.227 2.452-1.987 8.125-0.86 12.305-1.25zm-48.136-0.052c0.048 0.932-0.06 1.786-0.403 2.6 3.709-1.536 7.691-0.26 11.438 1.251 2.576 1.065 2.784-0.779 2.329-1.417-0.782-1.132-2.295-2.375-4.209-2.402-1.274-0.018-6.179-0.062-9.155-0.032zm3.131-18.116c-1.035-0.446-2.237-0.017-3.315 1.118-3.622 3.549-7.872 7.007-11.302 9.697-1.28 1.112-2.588 3.107 2.872 5.101 0.198 0.075 4.178 1.55 6.7 1.644 1.03-0.029 1.027 1.509 0.836 1.919-0.435 0.819-0.12 1.132-0.999 1.92-0.916 0.773 0.098 1.774 0.818 1.094 3.074-2.669 8.059-0.961 12.863 0.601 1.135 0.314 3.212 0.226 3.194-1.34 0.02-1.706 1.256-2.912 2.012-2.956 1.961 0.34 11.651 0.448 14.636 0.085 1.74-0.226 1.845 2.384 2.776 3.413 0.642 0.682 3.113 0.863 4.807 0.115 3.349-1.556 8.452-1.556 10.532-0.069 0.855 0.651 1.53 0.123 1.044-0.538-0.626-0.904-0.612-1.323-0.923-2.037-0.781-1.589-0.158-1.978 0.661-2.093 9.253-1.193 12.206-4.35 9.377-6.924-3.653-3.204-7.72-6.425-11.224-10.211-0.95-1.004-1.578-1.407-3.555-0.585-6.045 2.753-13.718 4.76-21.227 4.907-6.987 0.06-16.594-3.172-20.583-4.861z" fill-rule="evenodd" fill-opacity=".18493" stroke="#000" stroke-width=".5"/>
<path id="path2056" d="m334.74 427.43c0.039 0.989 0.157 1.784 0.743 2.578-3.412-1.367-8.229-0.635-11.524 0.899-1.47 0.702-3.248-0.802-1.524-2.227 2.452-1.987 8.125-0.86 12.305-1.25zm-48.136-0.052c0.048 0.932-0.06 1.786-0.403 2.6 3.709-1.536 7.691-0.26 11.438 1.251 2.576 1.065 2.784-0.779 2.329-1.417-0.782-1.132-2.295-2.375-4.209-2.402-1.274-0.018-6.179-0.062-9.155-0.032zm3.131-18.116c-1.035-0.446-2.237-0.017-3.315 1.118-3.622 3.549-7.872 7.007-11.302 9.697-1.28 1.112-2.588 3.107 2.872 5.101 0.198 0.075 4.178 1.55 6.7 1.644 1.03-0.029 1.027 1.509 0.836 1.919-0.435 0.819-0.12 1.132-0.999 1.92-0.916 0.773 0.098 1.774 0.818 1.094 3.074-2.669 8.059-0.961 12.863 0.601 1.135 0.314 3.212 0.226 3.194-1.34 0.02-1.706 1.256-2.912 2.012-2.956 1.961 0.34 11.651 0.448 14.636 0.085 1.74-0.226 1.845 2.384 2.776 3.413 0.642 0.682 3.113 0.863 4.807 0.115 3.349-1.556 8.452-1.556 10.532-0.069 0.855 0.651 1.53 0.123 1.044-0.538-0.626-0.904-0.612-1.323-0.923-2.037-0.781-1.589-0.158-1.978 0.661-2.093 9.253-1.193 12.206-4.35 9.377-6.924-3.653-3.204-7.72-6.425-11.224-10.211-0.95-1.004-1.578-1.407-3.555-0.585-6.045 2.753-13.718 4.76-21.227 4.907-6.987 0.06-16.594-3.172-20.583-4.861z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<g id="g2095" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path973" d="m368.23 155.51c0.419 1.443 6.19-1.194 9.123-6.963-3.841 4.188-10.058 4.147-9.123 6.963z" transform="translate(-14.439 36.636)" stroke="#000" stroke-width=".5"/>
<path id="path2094" d="m368.23 155.51c0.419 1.443 6.19-1.194 9.123-6.963-3.841 4.188-10.058 4.147-9.123 6.963z" transform="translate(-14.439 36.636)" stroke-width="1pt"/>
</g>
<g id="g2091" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path1054" d="m253.45 178.87c1.695 2.578 3.958 4.444 4.06 6.487 0.173 2.351 0.344 2.471 0.954 4.783-1.681-0.468-2.104-0.621-2.558-4.139-0.28-2.472-2.708-4.857-2.456-7.131z" transform="matrix(-1.0366 0 0 .94744 626.13 13.902)" stroke="#000" stroke-width=".50454"/>
<path id="path2090" d="m253.45 178.87c1.695 2.578 3.958 4.444 4.06 6.487 0.173 2.351 0.344 2.471 0.954 4.783-1.681-0.468-2.104-0.621-2.558-4.139-0.28-2.472-2.708-4.857-2.456-7.131z" transform="matrix(-1.0366 0 0 .94744 626.13 13.902)" stroke-width="1pt"/>
</g>
<g id="g2087" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path1053" d="m254.38 180.28c2.042 1.004 2.506 2.667 2.587 4.726 0.04 2.384 0.617 4.226 1.673 5.897-2.103 0.305-2.486-3.147-2.725-5.713-0.242-2.656-0.671-2.869-1.535-4.91z" transform="matrix(-1.0476 0 0 1 632.74 -.27458)" stroke="#000" stroke-width=".48851"/>
<path id="path2086" d="m254.38 180.28c2.042 1.004 2.506 2.667 2.587 4.726 0.04 2.384 0.617 4.226 1.673 5.897-2.103 0.305-2.486-3.147-2.725-5.713-0.242-2.656-0.671-2.869-1.535-4.91z" transform="matrix(-1.0476 0 0 1 632.74 -.27458)" stroke-width="1pt"/>
</g>
<g id="g2135" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1045" d="m242.23 131.44c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" transform="matrix(1.0696 0 0 1.5618 113.14 -77.646)" stroke="#000" stroke-width=".38685"/>
<path id="path2134" d="m242.23 131.44c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" transform="matrix(1.0696 0 0 1.5618 113.14 -77.646)"/>
</g>
<g id="g2139" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1044" d="m242.23 131.78c-0.094 0.784 1.231 0.974 1.172-0.163-0.06-1.187-1.824-2.273-0.742-4.08 0.569-0.884 0.579-2.504 0.234-3.365-0.303-0.854-1.579-0.296-1.094 0.369 0.534 0.771-0.1 2.25-0.508 2.994-1.225 2.166 1.01 3.221 0.938 4.245z" transform="matrix(-.98429 0 0 2.0999 614.23 -139.96)" stroke="#000" stroke-width=".34779"/>
<path id="path2138" d="m242.23 131.78c-0.094 0.784 1.231 0.974 1.172-0.163-0.06-1.187-1.824-2.273-0.742-4.08 0.569-0.884 0.579-2.504 0.234-3.365-0.303-0.854-1.579-0.296-1.094 0.369 0.534 0.771-0.1 2.25-0.508 2.994-1.225 2.166 1.01 3.221 0.938 4.245z" transform="matrix(-.98429 0 0 2.0999 614.23 -139.96)"/>
</g>
<g id="g2143" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1043" d="m242.23 131.44c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" transform="matrix(-.98429 0 0 1 617.65 -.11047)" stroke="#000" stroke-width=".50397"/>
<path id="path2142" d="m242.23 131.44c0.179 0.97 1.359 1.058 1.016-0.312-0.286-1.112-0.335-1.948 0-2.852 0.459-1.133 0.306-3.062-0.039-3.867-0.348-0.85-1.501-0.352-1.016 0.313 0.534 0.771 0.562 2.375 0.195 3.124-0.483 1.106-0.352 2.574-0.156 3.594z" transform="matrix(-.98429 0 0 1 617.65 -.11047)"/>
</g>
<g id="g2147" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1057" d="m357.77 126.77c-1.008 1.557-5.555-1.226-4.714-2.894 0.869-0.972 5.751 1.078 4.714 2.894z" transform="matrix(.82827 .56032 -.56032 .82827 146.81 -172.24)" stroke="#000" stroke-width=".5"/>
<path id="path2146" d="m357.77 126.77c-1.008 1.557-5.555-1.226-4.714-2.894 0.869-0.972 5.751 1.078 4.714 2.894z" transform="matrix(.82827 .56032 -.56032 .82827 146.81 -172.24)"/>
</g>
<g id="g2155" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1047" d="m242.22 131.74c0.179 0.97 1.234 0.857 1.321-0.555-0.013-1.006 0.431-2.074 0.266-2.87-0.197-1.186-0.906-2.386-1.251-3.191-0.348-0.85-1.141-0.469-0.805 0.274 0.384 0.954 0.75 2.098 0.874 2.905 0.208 1.555-0.601 2.417-0.405 3.437z" transform="matrix(1.2161 -.50286 .56418 1.2951 -6.3705 94.028)" stroke="#000" stroke-width=".36675"/>
<path id="path2154" d="m242.22 131.74c0.179 0.97 1.234 0.857 1.321-0.555-0.013-1.006 0.431-2.074 0.266-2.87-0.197-1.186-0.906-2.386-1.251-3.191-0.348-0.85-1.141-0.469-0.805 0.274 0.384 0.954 0.75 2.098 0.874 2.905 0.208 1.555-0.601 2.417-0.405 3.437z" transform="matrix(1.2161 -.50286 .56418 1.2951 -6.3705 94.028)"/>
</g>
<g id="g2160" fill-rule="evenodd" transform="translate(0,199.5)" fill="#fff">
<path id="path1046" d="m242.54 131.62c0.179 0.97 1.484 0.926 1.141-0.444-0.286-1.112-0.933-2.181-0.598-3.085 0.459-1.133 0.571-3.079 0.226-3.884-0.348-0.85-1.47-0.28-0.985 0.385 0.534 0.771 0.114 2.925-0.253 3.674-0.483 1.106 0.273 2.334 0.469 3.354z" transform="matrix(1.2161 -.50286 .56418 1.2951 -8.7924 95.591)" stroke="#000" stroke-width=".36675"/>
<path id="path2159" d="m242.54 131.62c0.179 0.97 1.484 0.926 1.141-0.444-0.286-1.112-0.933-2.181-0.598-3.085 0.459-1.133 0.571-3.079 0.226-3.884-0.348-0.85-1.47-0.28-0.985 0.385 0.534 0.771 0.114 2.925-0.253 3.674-0.483 1.106 0.273 2.334 0.469 3.354z" transform="matrix(1.2161 -.50286 .56418 1.2951 -8.7924 95.591)"/>
</g>
<path id="path1071" stroke-linejoin="round" d="m293.29 397.78c2.318 1.85 4.503 3.95 5.157 6.563 0.682 2.434 1.094 4.297 2.657 6.719-2.448-1.563-3.42-3.924-4.141-6.486-0.633-2.517-2.084-4.399-3.673-6.796z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2163" d="m293.29 397.78c2.318 1.85 4.503 3.95 5.157 6.563 0.682 2.434 1.094 4.297 2.657 6.719-2.448-1.563-3.42-3.924-4.141-6.486-0.633-2.517-2.084-4.399-3.673-6.796z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2167" d="m290.64 397.78c2.162 1.771 3.565 3.793 4.219 6.406 0.682 2.434 1.641 4.375 3.048 6.563-2.292-1.563-3.733-3.689-4.454-6.251-0.633-2.518-1.38-4.4-2.813-6.718z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2168" d="m331.11 397.78c-2.21 1.7814-3.6441 3.8153-4.3126 6.4437-0.69713 2.4483-1.6774 4.4007-3.1156 6.6016 2.3428-1.5722 3.8158-3.7107 4.5528-6.2878 0.64704-2.5328 1.4106-4.4259 2.8754-6.7575z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2169" d="m328.39 397.78c-2.3694 1.8609-4.6029 3.9732-5.2714 6.6016-0.69713 2.4483-1.1183 4.3223-2.7159 6.7585 2.5023-1.5722 3.4959-3.9471 4.2329-6.5242 0.64704-2.5318 2.1302-4.4249 3.7545-6.836z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2170" d="m320.54 403.95c0.0637-0.457-0.24784-0.856-0.62208-0.976-0.72858-0.274-1.4542-0.497-2.1768-0.703-0.82114-0.195-1.281 0.394-1.284 0.781-0.004 0.644-0.0338 1.191 0 1.679 0.0448 0.608 0.16025 0.653 0.54444 0.743 0.61511 0.104 1.4034 0.21 2.0215 0.625 0.4897 0.302 0.96049 0.063 1.2053-0.468 0.15826-0.406 0.24485-1.2 0.31154-1.681z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2171" d="m311.69 403.95c-0.0569-0.457 0.18318-0.895 0.51752-1.015 0.65091-0.274 1.2991-0.341 1.983-0.313 0.75938-0.012 0.95056 0.16 0.95323 0.547 0.004 0.644 0.0302 1.269 0 1.757-0.04 0.608-0.0267 0.653-0.36991 0.743-0.54953 0.104-1.4868 0.132-2.039 0.547-0.4375 0.302-0.93634 0.063-0.96035-0.507 0.0107-0.43-0.0249-1.278-0.0845-1.759z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2172" d="m300.95 403.83c-0.064-0.457 0.249-0.856 0.625-0.976 0.732-0.274 1.461-0.497 2.187-0.703 0.825-0.195 1.287 0.394 1.29 0.781 0.004 0.644 0.034 1.191 0 1.679-0.045 0.608-0.161 0.653-0.547 0.743-0.618 0.104-1.41 0.21-2.031 0.625-0.492 0.302-0.965 0.063-1.211-0.468-0.159-0.406-0.246-1.2-0.313-1.681z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2173" d="m309.84 403.83c0.0572-0.457-0.18404-0.895-0.51995-1.015-0.65396-0.274-1.3052-0.341-1.9922-0.313-0.76295-0.012-0.95503 0.16-0.95771 0.547-0.004 0.644-0.0304 1.269 0 1.757 0.0402 0.608 0.0268 0.653 0.37165 0.743 0.55211 0.104 1.4937 0.132 2.0485 0.547 0.43955 0.302 0.94074 0.063 0.96486-0.507-0.0107-0.43 0.025-1.278 0.0849-1.759z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2174" d="m301.61 407.89c0.794 1.497 1.706 3.776 3.359 3.359 0.026-1.146-1.784-1.94-3.359-3.359z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2175" d="m304.08 408.4c3.2104 1.316 5.9828 0.991 6.3282 3.009-3.0118 0.325-4.1132-0.912-6.3282-3.009z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2176" d="m319.82 408.09c-0.80485 1.4112-1.7293 3.5597-3.4049 3.1666-0.0264-1.0803 1.8084-1.8288 3.4049-3.1666z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2177" d="m317.57 408.52c-3.2572 1.2488-6.0699 0.9404-6.4204 2.8554 3.0556 0.30841 4.1731-0.86543 6.4204-2.8554z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2178" d="m327.18 376.52 6.993 0.001c0.026 2.643 1.575 5.482 3.75 7.109h-13.4c2.097-1.901 2.67-4.154 2.657-7.11z" fill-opacity=".53425" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2179" d="m327.18 376.52 6.993 0.001c0.026 2.643 1.575 5.482 3.75 7.109h-13.4c2.097-1.901 2.67-4.154 2.657-7.11z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path2183" d="m277.29 419.26c-0.385 0.294-0.359 1.176 0.39 1.484 6.985 2.506 13.728 7.137 33.128 6.954 19.586-0.185 26.469-4.704 32.737-6.797 0.835-0.318 1.621-0.965 0.547-1.875-3.522-2.879-7.329-5.193-9.845-8.751-0.446-0.64-1.665-0.277-2.422 0-7.476 2.626-14.383 4.466-21.564 4.453-7.012-0.013-14.321-1.944-20.9-4.648-0.63-0.269-1.662 0.034-2.149 0.507-3.053 3.041-6.373 5.992-9.922 8.673z" stroke="#000" stroke-width=".25" fill="none"/>
<path id="path2184" d="m286.7 414.45c-0.841-0.542-1.22 0.163-0.625 0.899 0.772 0.847 2.021 1.357 3.32 1.719 0.758 0.211 2.323-0.055 3.126 0.039 0.625 0.078 0.978 1.339 2.11 1.289 1.142-0.049 1.875-3.086 1.914-4.61 0.052-1.01-1.344-0.365-1.211 0.04 0.366 1.004-0.304 3.244-1.016 3.242-0.524-0.032-1.086-1.118-1.875-1.25-0.617-0.102-1.553 0.072-2.188 0.078-1.857 0.018-2.657-0.908-3.555-1.446z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2185" d="m288.27 413.63c0.991 0.495 1.857-0.391 2.423 0.235 1.446 1.641 3.306-0.786 1.133-0.703-0.879 0.034-1.016-0.665-2.54-0.509-0.811 0.104-1.49 0.701-1.016 0.977z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2186" d="m288.5 420.82c-0.783-0.342-1.046 0.402-0.586 0.86 0.646 0.59 3.329 0.825 3.985 0.352 1.085-0.823 0.292-2.985-0.195-3.595-0.304-0.371-1.22-0.399-0.86 0.587 0.149 0.457 0.815 1.594 0.273 2.109-0.496 0.474-1.868-0.001-2.617-0.313z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2187" d="m294.52 421.48c0.172-0.441-0.292-1.201-1.095-0.313-0.663 0.7-0.125 3.651 1.993 4.18 2.07 0.508 3.621-0.236 3.906-1.367 0.197-0.753-0.937-1.407-0.351-2.071 0.489-0.519 1.433 0.006 1.836-0.82 0.236-0.463 0.255-1.412-1.016-2.032-0.551-0.277-1.505 0.355-1.485 0.821 0.03 0.641 1.023 0.223 0.664 0.781-0.262 0.425-1.435 0.248-1.796 1.25-0.216 0.637 1.328 1.813 0.508 2.11-0.732 0.253-1.686 0.417-2.657-0.117-0.6-0.318-0.855-1.634-0.507-2.422z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2188" d="m287.06 417.42c-0.492 0.072-1.171 0.43-1.21 1.016-0.03 0.47 0.357 1.284 1.016 0.741 0.68-0.528 0.158-0.778 0.312-0.586 0.339 0.339-0.158 0.367-0.781 1.212-0.434 0.641-1.361 0.538-1.836 0.312-0.82-0.423-0.513-0.694-1.407-1.094-0.893-0.439-1.434 0.591-0.586 1.055 0.937 0.537 2.472 1.61 3.985 0.821 0.899-0.508 1.953-0.971 1.914-2.11-0.051-0.74-0.38-1.511-1.407-1.367z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2192" d="m335.65 417.03c-0.691-0.494-0.268-1.39 0.743-1.055 0.86 0.318 2.288 1.331 2.382 2.657 0.107 1.45-2.23 2.511-3.124 2.462-1.531-0.124-1.258-1.338-0.118-1.251 0.884 0.064 1.97-0.251 2.032-1.172 0.052-0.799-1.417-1.264-1.915-1.641z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2193" d="m330.61 413.48c-0.893-0.901 0.976-1.875 1.523-0.781 0.721 1.391 1.579 2.76 2.227 4.297 0.516 1.261-0.161 1.432-0.586 0.742-0.711-1.2-1.788-2.806-3.164-4.258z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2194" d="m326.24 416.17c0.961-0.418 0.937 0.781 0.586 1.016-0.635 0.353-1.485-0.586-0.586-1.016z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2195" d="m329.09 415.12c0.961-0.418 0.937 0.781 0.586 1.016-0.635 0.353-1.485-0.586-0.586-1.016z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2196" d="m299.28 416.8c-1.442-0.921 0.293-2.295 1.289-1.25 1.427 1.457 2.791 4.65 3.868 5.86 1.024 1.189 0.199-3.224 0.508-4.532 0.211-0.727 0.779-0.625 0.781 0.078 0.005 1.798-0.272 5.456 0.195 5.743 0.874 0.497 0.716 1.308 1.445 1.172 0.782-0.186 0.665-0.391 1.368-0.43 0.697 0 0.721 0.699 1.524 0.586 0.512-0.067 0.666-0.647 1.288-0.665 0.567-0.048 0.323 1.204-0.038 1.407-0.589 0.331-2.423-0.36-2.969-0.312-0.65 0.017-1.82 0.62-2.54 0.351-0.879-0.314-0.684-1.428-1.289-1.25-0.685 0.158-0.556 1.405-2.187 1.797-0.764 0.174-1.021-0.512-0.625-0.977 0.709-0.758 2.137-1.363 1.914-2.07-0.661-1.97-2.658-4.343-4.532-5.508z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2197" d="m311.82 417.07c0.693 2.28 0.659 5.312 1.055 7.384 0.195 0.815 0.975 0.089 0.899-0.547-0.307-2.225-0.442-4.956-1.016-7.071-0.238-0.732-1.203-0.59-0.938 0.234z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2198" d="m313.74 417.66c-0.183-0.951 0.727-1.04 0.86-0.47 0.469 1.835 0.409 6.034 1.328 6.173 1.586 0.181 3.81-0.147 5.782-0.547 0.97-0.193 1.169-0.895 1.133-1.173-0.186-1.128 0.867-1.039 1.133 0.157 0.143 0.624-0.14 1.743-1.328 1.992-2.321 0.448-5.516 1.139-7.345 0.742-1.602-0.339-1.08-4.475-1.563-6.874z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2199" d="m316.32 419.3c0.04-1.203 0.943-1.38 0.937-0.352 0.025 2.461 2.906 1.822 3.517 0.899 0.451-0.72 0.121-1.03-0.313-1.836-0.54-1.043 0.603-1.337 1.094-0.43 0.367 0.649 0.622 2.718-0.039 3.243-0.915 0.725-3.388 1.081-4.454 0.273-0.566-0.39-0.786-1.138-0.742-1.797z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2200" d="m315.07 416.09c0.128 0.771 2.226 0.508 2.148-0.078-0.072-0.504-2.265-0.391-2.148 0.078z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2201" d="m317.8 416.72c0.082 0.777 1.44 0.548 1.367-0.039-0.072-0.621-1.445-0.743-1.367 0.039z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2202" d="m321.9 415.78c-0.689-0.952 0.652-1.012 1.094-0.312 1.144 1.71 1.898 4.467 3.008 6.328 0.472 0.858 1.063 0.091 1.133-0.117 0.074-0.221-0.359-0.56-0.39-1.328-0.055-0.597 1.166-1.339 2.031-0.781 0.809 0.545 0.147 1.028 0.547 1.328 0.381 0.286 1.343 0.106 1.485-0.078 0.427-0.671-0.155-0.278-0.743-0.665-0.68-0.487-0.272-2.597 1.133-1.719 0.836 0.484 1.082 2.031 0.781 2.891-0.266 0.797-1.665 1.068-2.422 0.899-0.853-0.26-1.542-1.286-1.367-1.016 0.422 0.693-0.104 1.377-0.508 1.641-0.997 0.626-1.694 0.954-2.422-0.078-1.29-1.932-2-5.191-3.36-6.993z" fill-rule="evenodd" stroke-width="1pt"/>
<path id="path2789" d="m285.49 283.37c-0.057-1.1542 1.732-1.2423 1.527 0.3449-0.262 1.9774 3.732 6.9829 4.063 10.07 0.222 2.0698-1.216 3.8816-2.64 5.0092-1.746 1.3525-4.431 1.1665-5.687 0.3906-0.76-0.6117-1.453-2.7066-0.884-3.5358 0.201-0.2791 1.111 3.0746 3.115 3.0615 2.727-0.0176 4.936-2.0661 5.017-3.8931 0.14-3.1821-4.461-8.2114-4.511-11.447z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2791" d="m293.48 291.23c0.451-0.3223 1.171 1.0848 0.663 1.4364-0.423 0.2817-1.249-1.0458-0.663-1.4364z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2792" d="m294.68 288.38c-0.228 0.1106-0.681-0.0465-0.546-0.24 0.638-0.9115 1.998-2.2835 2.984-2.7624 0.303-0.1472 0.833 0.3876 0.65 0.6496-0.59 0.843-2.026 1.8373-3.088 2.3528z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2793" d="m305.23 280.01c0.253-0.5281 1.772-1.1251 2.159-1.4822 0.358-0.3665 0.529 0.3101 0.376 0.6295-0.253 0.5278-1.564 1.4192-2.139 1.4431-0.309 0.0129-0.549-0.2714-0.396-0.5904z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2794" d="m308.83 280.18c0.329-0.927 1.39-2.3322 2.12-2.7948 0.375-0.2372 1.048-0.0506 0.922 0.3047-0.279 0.7865-1.577 2.1607-2.45 2.8081-0.265 0.2358-0.668-0.1032-0.592-0.318z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2795" d="m305.74 282.5c-0.22 0.1101-0.101 0.5787 0.111 0.6495 0.451 0.1502 1.272 0.1795 1.644-0.0257 0.54-0.3328 0.294-2.3808-0.429-1.2868-0.485 0.6749-0.839 0.4581-1.326 0.663z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2797" d="m299.64 287.2c-1.103-0.859 0.297-2.0625 1.45-1.2222 2.246 1.6943-3.351 8.1851-6.396 11.219-0.557 0.5942-1.046-0.9024-0.332-1.5469 2.183-1.8517 4.227-4.0641 5.648-6.3496 0.274-0.44 0.536-1.3885-0.37-2.1004z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2798" d="m312.42 281.62c0.137-0.8221-1.33 0.0172-1.357-1.0726-0.014-0.5768 1.603-0.9815 2.279-0.318 1.142 1.1585 0.288 3.1126-1.611 3.2356-1.583 0.0699-4.224 2.2476-3.822 2.7054 0.457 0.5653 4.562 0.9386 6.949 0.5648 1.478-0.2074 1.168 1.1145-0.346 1.2935-1.463 0.1686-2.655 0.0123-4.022 0.442-1.609 0.4597-2.311 2.6194-3.205 3.4254-0.199 0.1401-0.736-0.7081-0.532-1.0269 0.644-1.0072 1.671-2.5488 2.801-2.9901 0.713-0.2888-1.966-0.3799-2.821-0.6239-0.678-0.2044-0.481-1.066-0.221-1.5469 0.345-0.7493 2.87-3.278 3.888-3.2367 0.956 0.0404 1.925-0.2379 2.02-0.8516z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2799" d="m316.68 281.84c0.475-0.419 0.718-1.1201 1.216-1.5469 0.273-0.2734 0.709 0.0542 0.636 0.7143-0.061 0.5197-0.759 0.9676-1.228 1.3583-0.382 0.2861-0.826-0.3318-0.624-0.5257z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2800" d="m322.09 279.91c0.707-0.0781 0.883 1.2868 0.11 1.5078-0.469 0.1563-0.879-1.4273-0.11-1.5078z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2801" d="m320.31 284.13c-0.011 1.175 0.569 1.0669 1.676 1.0268 1.074-0.0404 2.019 0.0277 2.015-1.0335-0.005-1.1-0.609-2.0623-0.786-1.3137-0.156 0.7032-0.28 1.8545-0.689 1.3528-0.386-0.4311-0.233-0.5256-0.897 0.1819-0.368 0.3899-0.41-0.189-0.631-0.5525-0.154-0.2153-0.687 0.1739-0.688 0.3382z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2802" d="m312.59 290.13c-0.264 1.555-0.022 3.7323 0.774 3.7569 0.984 0.032 3.02-3.3998 3.984-5.1799 0.578-0.9934 1.571-1.1671 1.157-0.1306-0.627 1.5992-0.571 5.0205-0.02 6.0259 0.296 0.5415 2.481-0.4966 2.834-1.2679 0.642-1.4018 0.12-3.9859 0.345-5.5639 0.109-1.036 1.057-1.2525 1.007-0.2923-0.094 1.718-0.257 4.8677-0.136 6.2982 0.072 0.8223 2.423 2.0358 2.801-0.4543 0.199-1.5674 1.006-3.113-0.039-4.8495-0.648-1.0857 0.951-0.9497 1.813 0.5335 0.603 1.0094-0.508 2.6799-0.469 3.9711 0.1 1.9865-1.445 3.1151-2.566 3.1386-1.002 0.0202-1.655-1.2106-2.476-1.2278-0.911-0.0581-1.847 1.4172-2.6 1.365-2.918-0.1994-1.373-4.4646-2.262-4.5169-0.989-0.0582-2.155 4.1804-3.373 4.0292-1.201-0.1442-2.444-3.4545-1.944-4.8551 0.452-1.3031 1.304-1.6085 1.17-0.7802z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2803" d="m326.72 283.4c-1.424-0.8686 0.09-3.1274 0.786-2.3338 1.344 1.6096 2.699 5.4302 3.646 5.7458 0.6 0.2001 0.572-2.824 0.995-4.1988 0.273-1.0156 1.501-0.6841 1.266 0.6172-0.08 0.4345-1.604 5.3752-1.487 5.5705 1.056 2.1111 2.101 4.2534 2.762 6.5192 0.273 0.9766-0.9 0.3189-1.04 0.1161-0.749-1.1196-2.06-5.4009-2.06-5.2056-0.603 3.0118-0.745 3.9007-1.385 6.4601-0.195 0.8203-1.402 0.6709-1.13-0.7734 0.262-1.1872 1.988-7.0253 1.891-7.1945-1.357-2.3954-2.598-4.2902-4.244-5.3228z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2804" d="m329.29 297.29c-0.397-0.045-1.013 0.8831 0.964 1.2478 2.642 0.4782 5.534-0.4116 6.42-3.0023 1.015-3.0859 1.686-6.0073 2.216-7.1097 0.662-1.2847 1.509-1.1809 0.884-3.0559-0.441-1.3496-1.264-0.9424-1.437-0.221-0.462 1.967-2.215 8.3307-2.762 9.5026-1.032 2.1385-3.112 2.9845-6.285 2.6385z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2805" d="m334.58 287.14c-0.283-0.6072-0.943-0.1372-0.825 0.5268 0.07 0.6002 0.557 0.9265 1.046 0.9096 0.579-0.02 1.804 0.0194 1.807-0.942 0.002-0.6754-0.529-1.2397-0.923-0.4944-0.377 0.6748-0.862 0.6041-1.105 0z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2806" d="m335.24 284.6c-0.203 0.1409-0.021 0.892 0.221 0.8839 0.863-0.0288 2.086-0.3041 2.741-0.76 0.192-0.1334 0.112-0.5873-0.161-0.5782-0.832 0.0277-2.156 0.006-2.801 0.4543z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2807" d="m342.57 286.49c0.625-0.9766 2.349-1.0761 1.729 0.3181-0.439 0.9606-4.731 9.2537-5.317 10.308-0.639 1.1859-1.162 0.5987-0.708-0.3248 0.611-1.1884 4.1-10.013 4.296-10.302z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2808" d="m336.11 298.84c-0.183-0.66-1.207-1.6359-1.092 0.1295 0.204 3.2048 4.607 2.1918 5.94 1.0528 1.21-1.0724 0.16 3.618 1.768 4.12 0.886 0.284 2.554-0.925 3.374-1.989 2.274-2.9506 3.721-7.1804 5.908-10.094 0.826-1.1391-0.452-1.9522-0.969-1.0458-1.902 3.1891-4.264 9.6975-6.844 11.388-2.103 1.346-1.48-1.733-1.553-2.658-0.092-0.6786-0.919-1.677-2.022-0.7604-0.771 0.6024-1.969 1.0924-3.054 0.9944-0.629-0.035-1.16-0.024-1.456-1.1373z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2809" d="m343.97 292.89c0.023-0.1809-0.931-0.263-0.884 0.663 0.033 0.6855 0.853 0.8716 0.994 0.7735 1.29-0.9382-0.274-0.4703-0.11-1.4365z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2810" d="m342.09 296.64c-0.254 0.0594-0.487 0.8703 0.111 0.9163 0.547 0.039 2.69-0.191 3.282-0.1563 0.383-0.0144 0.529-0.7466-0.292-0.7076-0.996 0.0499-2.305-0.1997-3.101-0.0524z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2813" d="m356.28 295.69c0.879-3.2938 3.008 0.5081 1.133 2.3831-2.895 2.8355-3.767 8.2485-8.36 9.0635-1.238 0.266-3.417-0.557-4.063-1.016-0.252-0.179 0.163-1.355 0.937-0.781 1.119 0.874 3.43 1.071 4.65 0.078 2.61-2.562 4.735-5.9547 5.703-9.7276z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2815" d="m308.56 303.01c-0.207 0.238-0.84 0.199-0.897 0.533-0.249 1.239 0 1.867-0.273 3.06-0.261 1.142-1.054 1.185-1 0.254 0.072-1.207 1.067-2.911 0.364-3.028-0.468-0.11-0.829-0.736-0.345-1.045 0.914-0.634 1.405-0.537 2.033-0.346 0.219 0.067 0.275 0.389 0.118 0.572z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2816" d="m307.92 301.39c-1.212 1.06-2.336 1.493-3.451 2.833-0.456 0.549-0.443 1.314-0.715 2.014-0.273 0.743-1.151 0.889-1.423 0.734-0.455-0.299-0.389-1.677-0.897-0.935-0.431 0.683-0.709 1.624-1.346 1.612-0.576-0.012-1.663-1.19-1.112-1.247 1.885-0.193 1.862-1.702 2.568-1.801 0.792-0.106 0.844 1.246 1.333 0.975 0.384-0.197 0.565-1.772 0.982-2.197 1.278-1.306 2.289-1.996 3.593-2.956 0.66-0.526 1.131 0.423 0.468 0.968z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2817" d="m312.34 305.45c-0.97 0.196-0.805 1.443-0.52 1.598 0.47 0.219 1.197 0.311 1.469-1.123 0.127-0.589 0.242 2.928 1.533 1.573 0.743-0.821 2.584 0.149 3.355-0.884 0.552-0.688 0.722-1.168 0.292-2.184-0.125-0.309-0.881-0.157-0.838 0.593 0.038 0.632-0.448 1.412-1.08 1.279-0.307-0.056 0.173-1.546-0.135-1.95-0.17-0.222-0.428-0.198-0.597 0.032-0.237 0.322 0.238 1.75-0.541 1.938-0.983 0.227-0.468-0.955-0.884-1.171-1.338-0.675-1.467 0.175-2.054 0.299z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2818" d="m319.91 303.05c0.711-0.2 0.489-0.201 1.608-1.117 0.436-0.33 0.522 0.636 0.476 1.018-0.081 0.649-0.852 0.191-1.091 0.762-0.35 0.742-0.208 2.468-0.325 3.171-0.08 0.361-0.659 0.33-0.714 0.045-0.166-0.857 0.117-1.696 0.09-2.768-0.009-0.364-0.53-0.935-0.044-1.111z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path2819" d="m316.57 299.19c-0.172 0.7756-0.159 1.4146-0.159 1.9466 0.039 0.43 0.825 0.153 0.822 0.098-0.039-0.681 0.116-1.623-0.085-1.8856-0.109-0.1417-0.538-0.3054-0.578-0.159z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3162" d="m285.49 283.37c-0.057-1.1542 1.732-1.2423 1.527 0.3449-0.262 1.9774 3.732 6.9829 4.063 10.07 0.222 2.0698-1.216 3.8816-2.64 5.0092-1.746 1.3525-4.431 1.1665-5.687 0.3906-0.76-0.6117-1.453-2.7066-0.884-3.5358 0.201-0.2791 1.111 3.0746 3.115 3.0615 2.727-0.0176 4.936-2.0661 5.017-3.8931 0.14-3.1821-4.461-8.2114-4.511-11.447z" fill-rule="evenodd" fill="#fff"/>
<path id="path3143" d="m290.24 282.7c0.34 0.0162 1.272 1.2239 1.211 1.6016-0.042 0.1781-0.997-0.0265-1.289-0.2734-0.216-0.1828-0.129-1.338 0.078-1.3282zm-4.494 8.7491c-0.852 0.4647 0.135 1.382 0.773 0.9944 2.395-1.5507 5.989-3.1796 6.74-6.2514 0.241-1.0404 1.208-2.6352 2.126-2.9911 0.887-0.3439 2.175 1.6048 3.016 0.0714 0.493-0.8765 2.221 0.5752 2.638-0.3627 0.508-1.1328 0.266-1.7565 0.287-2.8416-0.037-0.7108-0.58-0.9231-0.974 0.2277-0.205 0.5211 0.036 1.0472-0.131 1.3192-0.127 0.2068-0.523 0.4069-0.753 0.2344-0.212-0.159-0.065-0.603-0.573-0.7992-0.197-0.0987-0.513-0.1808-0.65 0.0714-0.603 1.0754-0.937 2.0781-1.781 0.9354-0.752-0.9844-1.133-2.686-1.684-0.3572-0.198 0.8219-1.447 2.0146-2.184 2.0146-0.92 0-0.689-2.4224-2.71-2.0537-1.039 0.2216-0.967 2.2096-0.812 2.9444 0.255 1.0212 3.291 0.2877 3.14 0.9553-0.519 2.3197-3.739 4.5247-6.468 5.8887z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<g id="g3144" stroke-linejoin="round" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path2781" d="m266.74 103c-0.129 0.388 0.387 1.442 0.922 1.52 0.525 0.039 0.793-1.138 0.624-1.52-0.125-0.281-1.454-0.275-1.546 0z"/>
<path id="path2782" d="m269.52 107.09c-0.337-0.363-1.33 0.611-0.527 1.3 0.451 0.365 2.103 0.895 2.555 0.124 0.612-0.992-0.603-4.594-0.065-5.07 0.42-0.372 2.367 2.406 3.328 2.606 2.258 0.313 1.716-3.866 4.149-3.582 1.658 0.221 1.84-1.851 1.609-3.1447-0.185-1.2414-2.195-3.0334-3.119-3.835-1.216-1.0123-1.758 0.7463-0.995 1.326 0.982 0.7864 2.709 2.3749 2.984 3.4257 0.13 0.496-1.2 1.482-1.69 1.215-1.131-0.617-2.183-3.2629-3.172-3.8673-0.337-0.2058-1.166 0.2593-0.767 1.0849 0.449 0.8845 2.432 2.2544 2.548 3.1984 0.105 0.861-0.884 2.723-1.533 2.723-0.714 0-2.534-2.25-3.102-3.309-0.284-0.507-1.268-0.458-1.371 0.242-0.163 1.051 0.152 3.275 0.403 4.653 0.199 1.305-0.735 1.371-1.235 0.91z"/>
<path id="path2783" d="m266.11 99.915c-0.284 0.3211 0.663 0.9491 0.851 0.7861 0.365-0.316 1.782-1.9314 1.509-2.496-0.243-0.5035-2.192-1.6061-2.509-1.0602-0.588 0.9448 1.837 1.3681 1.457 1.6451-0.187 0.1073-0.854 0.568-1.308 1.125z"/>
<path id="path2784" d="m269.61 92.835s0.609 2.0836 1.105 1.2155c0.401-0.6016-1.105-1.2155-1.105-1.2155z"/>
<path id="path2785" d="m270.6 96.15c-0.223 0.1219-0.851 0.6194-0.442 0.884 0.647 0.3827 2.407 0.6857 2.027-0.5659-0.231-0.7372 2.654 0.0205 1.951-1.9755-0.184-0.5524-1.054-1.3496-1.482-1.4622-0.272-0.0716-1.196 0.4352-0.618 0.7144 0.422 0.2185 1.695 0.9665 1.222 1.4564-0.537 0.5125-0.911-0.23-1.579-0.1104-0.336 0.0639-0.117 1.0201-0.306 1.2802-0.106 0.1451-0.591-0.3201-0.773-0.221z"/>
<path id="path2786" d="m275.18 88.227c-0.364 0.1819-1.016 1.1688-1.04 1.6251-0.013 0.2435 0.254 0.5782 0.462 0.4743 0.382-0.1908 0.972-1.1249 0.994-1.5536 0.014-0.2711-0.19-0.6586-0.416-0.5458z"/>
<path id="path2787" d="m277.56 87.974c-0.703-0.8594 0.746-2.1353 1.398-0.4152 0.394 1.0791 4.594 6.6063 5.453 8.4813 0.608 1.269-0.022 1.7933-0.774 0.884-2.127-2.7138-3.872-6.0965-6.077-8.9501z"/>
<path id="path2788" d="m281.87 88.084c0.749-0.8114 2.278-2.4687 1.866-3.3929-0.316-0.7949-1.245-0.7159-1.404-0.5325-0.909 1.085 0.646 0.8127 0.422 1.1832-0.463 0.8692-0.924 1.3477-1.163 2.1831-0.056 0.1959 0.144 0.7053 0.279 0.5591z"/>
</g>
<g id="g3153" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path3154" d="m266.74 103c-0.129 0.388 0.387 1.442 0.922 1.52 0.525 0.039 0.793-1.138 0.624-1.52-0.125-0.281-1.454-0.275-1.546 0z"/>
<path id="path3155" d="m269.52 107.09c-0.337-0.363-1.33 0.611-0.527 1.3 0.451 0.365 2.103 0.895 2.555 0.124 0.612-0.992-0.603-4.594-0.065-5.07 0.42-0.372 2.367 2.406 3.328 2.606 2.258 0.313 1.716-3.866 4.149-3.582 1.658 0.221 1.84-1.851 1.609-3.1447-0.185-1.2414-2.195-3.0334-3.119-3.835-1.216-1.0123-1.758 0.7463-0.995 1.326 0.982 0.7864 2.709 2.3749 2.984 3.4257 0.13 0.496-1.2 1.482-1.69 1.215-1.131-0.617-2.183-3.2629-3.172-3.8673-0.337-0.2058-1.166 0.2593-0.767 1.0849 0.449 0.8845 2.432 2.2544 2.548 3.1984 0.105 0.861-0.884 2.723-1.533 2.723-0.714 0-2.534-2.25-3.102-3.309-0.284-0.507-1.268-0.458-1.371 0.242-0.163 1.051 0.152 3.275 0.403 4.653 0.199 1.305-0.735 1.371-1.235 0.91z"/>
<path id="path3156" d="m266.11 99.915c-0.284 0.3211 0.663 0.9491 0.851 0.7861 0.365-0.316 1.782-1.9314 1.509-2.496-0.243-0.5035-2.192-1.6061-2.509-1.0602-0.588 0.9448 1.837 1.3681 1.457 1.6451-0.187 0.1073-0.854 0.568-1.308 1.125z"/>
<path id="path3157" d="m269.61 92.835s0.609 2.0836 1.105 1.2155c0.401-0.6016-1.105-1.2155-1.105-1.2155z"/>
<path id="path3158" d="m270.6 96.15c-0.223 0.1219-0.851 0.6194-0.442 0.884 0.647 0.3827 2.407 0.6857 2.027-0.5659-0.231-0.7372 2.654 0.0205 1.951-1.9755-0.184-0.5524-1.054-1.3496-1.482-1.4622-0.272-0.0716-1.196 0.4352-0.618 0.7144 0.422 0.2185 1.695 0.9665 1.222 1.4564-0.537 0.5125-0.911-0.23-1.579-0.1104-0.336 0.0639-0.117 1.0201-0.306 1.2802-0.106 0.1451-0.591-0.3201-0.773-0.221z"/>
<path id="path3159" d="m275.18 88.227c-0.364 0.1819-1.016 1.1688-1.04 1.6251-0.013 0.2435 0.254 0.5782 0.462 0.4743 0.382-0.1908 0.972-1.1249 0.994-1.5536 0.014-0.2711-0.19-0.6586-0.416-0.5458z"/>
<path id="path3160" d="m277.56 87.974c-0.703-0.8594 0.746-2.1353 1.398-0.4152 0.394 1.0791 4.594 6.6063 5.453 8.4813 0.608 1.269-0.022 1.7933-0.774 0.884-2.127-2.7138-3.872-6.0965-6.077-8.9501z"/>
<path id="path3161" d="m281.87 88.084c0.749-0.8114 2.278-2.4687 1.866-3.3929-0.316-0.7949-1.245-0.7159-1.404-0.5325-0.909 1.085 0.646 0.8127 0.422 1.1832-0.463 0.8692-0.924 1.3477-1.163 2.1831-0.056 0.1959 0.144 0.7053 0.279 0.5591z"/>
</g>
<path id="path3181" d="m336.11 298.84c-0.183-0.66-1.207-1.6359-1.092 0.1295 0.204 3.2048 4.607 2.1918 5.94 1.0528 1.21-1.0724 0.16 3.618 1.768 4.12 0.886 0.284 2.554-0.925 3.374-1.989 2.274-2.9506 3.721-7.1804 5.908-10.094 0.826-1.1391-0.452-1.9522-0.969-1.0458-1.902 3.1891-4.264 9.6975-6.844 11.388-2.103 1.346-1.48-1.733-1.553-2.658-0.092-0.6786-0.919-1.677-2.022-0.7604-0.771 0.6024-1.969 1.0924-3.054 0.9944-0.629-0.035-1.16-0.024-1.456-1.1373z" fill-rule="evenodd" fill="#fff"/>
<path id="path3163" d="m293.48 291.23c0.451-0.3223 1.171 1.0848 0.663 1.4364-0.423 0.2817-1.249-1.0458-0.663-1.4364z" fill-rule="evenodd" fill="#fff"/>
<path id="path2811" d="m346.98 290.3c-0.538-0.4358 0.529-2.5481 1.251-1.7189 1.982 2.2936 2.903 9.7404 3.476 15.314 0 0-0.891 0.743-0.898 0.625 0-2.969-1.193-12.052-3.829-14.22z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3164" d="m294.68 288.38c-0.228 0.1106-0.681-0.0465-0.546-0.24 0.638-0.9115 1.998-2.2835 2.984-2.7624 0.303-0.1472 0.833 0.3876 0.65 0.6496-0.59 0.843-2.026 1.8373-3.088 2.3528z" fill-rule="evenodd" fill="#fff"/>
<path id="path3188" d="m346.98 290.3c-0.538-0.4358 0.529-2.5481 1.251-1.7189 1.982 2.2936 2.903 9.7404 3.476 15.314 0 0-0.891 0.743-0.898 0.625 0-2.969-1.193-12.052-3.829-14.22z" fill-rule="evenodd" fill="#fff"/>
<path id="path2812" d="m348.2 303.31c0.358-0.997 5.118-8.986 5.743-10.744 0.32-0.8476 1.686 1.4537 0.352 2.6955-1.172 1.0547-4.63 6.7253-5.275 8.7123-0.297 0.897-1.198 0.47-0.82-0.664z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3171" d="m312.42 281.62c0.137-0.8221-1.33 0.0172-1.357-1.0726-0.014-0.5768 1.603-0.9815 2.279-0.318 1.142 1.1585 0.288 3.1126-1.611 3.2356-1.583 0.0699-4.224 2.2476-3.822 2.7054 0.457 0.5653 4.562 0.9386 6.949 0.5648 1.478-0.2074 1.168 1.1145-0.346 1.2935-1.463 0.1686-2.655 0.0123-4.022 0.442-1.609 0.4597-2.311 2.6194-3.205 3.4254-0.199 0.1401-0.736-0.7081-0.532-1.0269 0.644-1.0072 1.671-2.5488 2.801-2.9901 0.713-0.2888-1.966-0.3799-2.821-0.6239-0.678-0.2044-0.481-1.066-0.221-1.5469 0.345-0.7493 2.87-3.278 3.888-3.2367 0.956 0.0404 1.925-0.2379 2.02-0.8516z" fill-rule="evenodd" fill="#fff"/>
<path id="path3166" d="m299.64 287.2c-1.103-0.859 0.297-2.0625 1.45-1.2222 2.246 1.6943-3.351 8.1851-6.396 11.219-0.557 0.5942-1.046-0.9024-0.332-1.5469 2.183-1.8517 4.227-4.0641 5.648-6.3496 0.274-0.44 0.536-1.3885-0.37-2.1004z" fill-rule="evenodd" fill="#fff"/>
<path id="path2796" d="m302.54 283.05c-0.641-1.4736 0.962-2.019 1.202-0.9687 1.114 4.8406 3.781 8.5056 5.811 11.797 0.611 1.029 0.121 1.6422-1.365 0.6953-1.029-0.7055-2.074-3.2782-2.58-3.3796-0.916-0.1705-3.108 4.1793-7.592 2.9377-1.16-0.3241-1.083-3.7735-1.105-5.2971-0.049-0.7143 0.74-0.903 0.767 0.0714 0.041 1.4047-0.002 4.3227 1.795 4.4209 1.465 0.0819 4.71-1.9893 5.394-3.6084 0.609-1.6647-1.634-4.9734-2.327-6.6688z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3167" d="m290.24 282.7c0.34 0.0162 1.272 1.2239 1.211 1.6016-0.042 0.1781-0.997-0.0265-1.289-0.2734-0.216-0.1828-0.129-1.338 0.078-1.3282zm-4.494 8.7491c-0.852 0.4647 0.135 1.382 0.773 0.9944 2.395-1.5507 5.989-3.1796 6.74-6.2514 0.241-1.0404 1.208-2.6352 2.126-2.9911 0.887-0.3439 2.175 1.6048 3.016 0.0714 0.493-0.8765 2.221 0.5752 2.638-0.3627 0.508-1.1328 0.266-1.7565 0.287-2.8416-0.037-0.7108-0.58-0.9231-0.974 0.2277-0.205 0.5211 0.036 1.0472-0.131 1.3192-0.127 0.2068-0.523 0.4069-0.753 0.2344-0.212-0.159-0.065-0.603-0.573-0.7992-0.197-0.0987-0.513-0.1808-0.65 0.0714-0.603 1.0754-0.937 2.0781-1.781 0.9354-0.752-0.9844-1.133-2.686-1.684-0.3572-0.198 0.8219-1.447 2.0146-2.184 2.0146-0.92 0-0.689-2.4224-2.71-2.0537-1.039 0.2216-0.967 2.2096-0.812 2.9444 0.255 1.0212 3.291 0.2877 3.14 0.9553-0.519 2.3197-3.739 4.5247-6.468 5.8887z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path3165" d="m302.54 283.05c-0.641-1.4736 0.962-2.019 1.202-0.9687 1.114 4.8406 3.781 8.5056 5.811 11.797 0.611 1.029 0.121 1.6422-1.365 0.6953-1.029-0.7055-2.074-3.2782-2.58-3.3796-0.916-0.1705-3.108 4.1793-7.592 2.9377-1.16-0.3241-1.083-3.7735-1.105-5.2971-0.049-0.7143 0.74-0.903 0.767 0.0714 0.041 1.4047-0.002 4.3227 1.795 4.4209 1.465 0.0819 4.71-1.9893 5.394-3.6084 0.609-1.6647-1.634-4.9734-2.327-6.6688z" fill-rule="evenodd" fill="#fff"/>
<path id="path3168" d="m305.23 280.01c0.253-0.5281 1.772-1.1251 2.159-1.4822 0.358-0.3665 0.529 0.3101 0.376 0.6295-0.253 0.5278-1.564 1.4192-2.139 1.4431-0.309 0.0129-0.549-0.2714-0.396-0.5904z" fill-rule="evenodd" fill="#fff"/>
<path id="path3169" d="m308.83 280.18c0.329-0.927 1.39-2.3322 2.12-2.7948 0.375-0.2372 1.048-0.0506 0.922 0.3047-0.279 0.7865-1.577 2.1607-2.45 2.8081-0.265 0.2358-0.668-0.1032-0.592-0.318z" fill-rule="evenodd" fill="#fff"/>
<path id="path3170" d="m305.74 282.5c-0.22 0.1101-0.101 0.5787 0.111 0.6495 0.451 0.1502 1.272 0.1795 1.644-0.0257 0.54-0.3328 0.294-2.3808-0.429-1.2868-0.485 0.6749-0.839 0.4581-1.326 0.663z" fill-rule="evenodd" fill="#fff"/>
<path id="path3172" d="m316.68 281.84c0.475-0.419 0.718-1.1201 1.216-1.5469 0.273-0.2734 0.709 0.0542 0.636 0.7143-0.061 0.5197-0.759 0.9676-1.228 1.3583-0.382 0.2861-0.826-0.3318-0.624-0.5257z" fill-rule="evenodd" fill="#fff"/>
<path id="path3173" d="m322.09 279.91c0.707-0.0781 0.883 1.2868 0.11 1.5078-0.469 0.1563-0.879-1.4273-0.11-1.5078z" fill-rule="evenodd" fill="#fff"/>
<path id="path3174" d="m320.31 284.13c-0.011 1.175 0.569 1.0669 1.676 1.0268 1.074-0.0404 2.019 0.0277 2.015-1.0335-0.005-1.1-0.609-2.0623-0.786-1.3137-0.156 0.7032-0.28 1.8545-0.689 1.3528-0.386-0.4311-0.233-0.5256-0.897 0.1819-0.368 0.3899-0.41-0.189-0.631-0.5525-0.154-0.2153-0.687 0.1739-0.688 0.3382z" fill-rule="evenodd" fill="#fff"/>
<path id="path3175" d="m312.59 290.13c-0.264 1.555-0.022 3.7323 0.774 3.7569 0.984 0.032 3.02-3.3998 3.984-5.1799 0.578-0.9934 1.571-1.1671 1.157-0.1306-0.627 1.5992-0.571 5.0205-0.02 6.0259 0.296 0.5415 2.481-0.4966 2.834-1.2679 0.642-1.4018 0.12-3.9859 0.345-5.5639 0.109-1.036 1.057-1.2525 1.007-0.2923-0.094 1.718-0.257 4.8677-0.136 6.2982 0.072 0.8223 2.423 2.0358 2.801-0.4543 0.199-1.5674 1.006-3.113-0.039-4.8495-0.648-1.0857 0.951-0.9497 1.813 0.5335 0.603 1.0094-0.508 2.6799-0.469 3.9711 0.1 1.9865-1.445 3.1151-2.566 3.1386-1.002 0.0202-1.655-1.2106-2.476-1.2278-0.911-0.0581-1.847 1.4172-2.6 1.365-2.918-0.1994-1.373-4.4646-2.262-4.5169-0.989-0.0582-2.155 4.1804-3.373 4.0292-1.201-0.1442-2.444-3.4545-1.944-4.8551 0.452-1.3031 1.304-1.6085 1.17-0.7802z" fill-rule="evenodd" fill="#fff"/>
<path id="path3176" d="m326.72 283.4c-1.424-0.8686 0.09-3.1274 0.786-2.3338 1.344 1.6096 2.699 5.4302 3.646 5.7458 0.6 0.2001 0.572-2.824 0.995-4.1988 0.273-1.0156 1.501-0.6841 1.266 0.6172-0.08 0.4345-1.604 5.3752-1.487 5.5705 1.056 2.1111 2.101 4.2534 2.762 6.5192 0.273 0.9766-0.9 0.3189-1.04 0.1161-0.749-1.1196-2.06-5.4009-2.06-5.2056-0.603 3.0118-0.745 3.9007-1.385 6.4601-0.195 0.8203-1.402 0.6709-1.13-0.7734 0.262-1.1872 1.988-7.0253 1.891-7.1945-1.357-2.3954-2.598-4.2902-4.244-5.3228z" fill-rule="evenodd" fill="#fff"/>
<path id="path3177" d="m329.29 297.29c-0.397-0.045-1.013 0.8831 0.964 1.2478 2.642 0.4782 5.534-0.4116 6.42-3.0023 1.015-3.0859 1.686-6.0073 2.216-7.1097 0.662-1.2847 1.509-1.1809 0.884-3.0559-0.441-1.3496-1.264-0.9424-1.437-0.221-0.462 1.967-2.215 8.3307-2.762 9.5026-1.032 2.1385-3.112 2.9845-6.285 2.6385z" fill-rule="evenodd" fill="#fff"/>
<path id="path3178" d="m334.58 287.14c-0.283-0.6072-0.943-0.1372-0.825 0.5268 0.07 0.6002 0.557 0.9265 1.046 0.9096 0.579-0.02 1.804 0.0194 1.807-0.942 0.002-0.6754-0.529-1.2397-0.923-0.4944-0.377 0.6748-0.862 0.6041-1.105 0z" fill-rule="evenodd" fill="#fff"/>
<path id="path3179" d="m335.24 284.6c-0.203 0.1409-0.021 0.892 0.221 0.8839 0.863-0.0288 2.086-0.3041 2.741-0.76 0.192-0.1334 0.112-0.5873-0.161-0.5782-0.832 0.0277-2.156 0.006-2.801 0.4543z" fill-rule="evenodd" fill="#fff"/>
<path id="path3180" d="m342.57 286.49c0.625-0.9766 2.349-1.0761 1.729 0.3181-0.439 0.9606-4.731 9.2537-5.317 10.308-0.639 1.1859-1.162 0.5987-0.708-0.3248 0.611-1.1884 4.1-10.013 4.296-10.302z" fill-rule="evenodd" fill="#fff"/>
<path id="path3182" d="m343.97 292.89c0.023-0.1809-0.931-0.263-0.884 0.663 0.033 0.6855 0.853 0.8716 0.994 0.7735 1.29-0.9382-0.274-0.4703-0.11-1.4365z" fill-rule="evenodd" fill="#fff"/>
<path id="path3191" d="m348.2 303.31c0.358-0.997 5.118-8.986 5.743-10.744 0.32-0.8476 1.686 1.4537 0.352 2.6955-1.172 1.0547-4.63 6.7253-5.275 8.7123-0.297 0.897-1.198 0.47-0.82-0.664z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3183" d="m342.09 296.64c-0.254 0.0594-0.487 0.8703 0.111 0.9163 0.547 0.039 2.69-0.191 3.282-0.1563 0.383-0.0144 0.529-0.7466-0.292-0.7076-0.996 0.0499-2.305-0.1997-3.101-0.0524z" fill-rule="evenodd" fill="#fff"/>
<path id="path3189" d="m348.2 303.31c0.358-0.997 5.118-8.986 5.743-10.744 0.32-0.8476 1.686 1.4537 0.352 2.6955-1.172 1.0547-4.63 6.7253-5.275 8.7123-0.297 0.897-1.198 0.47-0.82-0.664z" fill-rule="evenodd" fill="#fff"/>
<path id="path3192" d="m356.28 295.69c0.879-3.2938 3.008 0.5081 1.133 2.3831-2.895 2.8355-3.767 8.2485-8.36 9.0635-1.238 0.266-3.417-0.557-4.063-1.016-0.252-0.179 0.163-1.355 0.937-0.781 1.119 0.874 3.43 1.071 4.65 0.078 2.61-2.562 4.735-5.9547 5.703-9.7276z" fill-rule="evenodd" stroke="#000" stroke-width=".5" fill="#fff"/>
<path id="path3190" d="m356.28 295.69c0.879-3.2938 3.008 0.5081 1.133 2.3831-2.895 2.8355-3.767 8.2485-8.36 9.0635-1.238 0.266-3.417-0.557-4.063-1.016-0.252-0.179 0.163-1.355 0.937-0.781 1.119 0.874 3.43 1.071 4.65 0.078 2.61-2.562 4.735-5.9547 5.703-9.7276z" fill-rule="evenodd" fill="#fff"/>
<path id="path3194" d="m312.34 305.45c-0.97 0.196-0.805 1.443-0.52 1.598 0.47 0.219 1.197 0.311 1.469-1.123 0.127-0.589 0.242 2.928 1.533 1.573 0.743-0.821 2.584 0.149 3.355-0.884 0.552-0.688 0.722-1.168 0.292-2.184-0.125-0.309-0.881-0.157-0.838 0.593 0.038 0.632-0.448 1.412-1.08 1.279-0.307-0.056 0.173-1.546-0.135-1.95-0.17-0.222-0.428-0.198-0.597 0.032-0.237 0.322 0.238 1.75-0.541 1.938-0.983 0.227-0.468-0.955-0.884-1.171-1.338-0.675-1.467 0.175-2.054 0.299z" fill-rule="evenodd" fill="#fff"/>
<path id="path3195" d="m319.91 303.05c0.711-0.2 0.489-0.201 1.608-1.117 0.436-0.33 0.522 0.636 0.476 1.018-0.081 0.649-0.852 0.191-1.091 0.762-0.35 0.742-0.208 2.468-0.325 3.171-0.08 0.361-0.659 0.33-0.714 0.045-0.166-0.857 0.117-1.696 0.09-2.768-0.009-0.364-0.53-0.935-0.044-1.111z" fill-rule="evenodd" fill="#fff"/>
<path id="path3196" d="m316.57 299.19c-0.172 0.7756-0.159 1.4146-0.159 1.9466 0.039 0.43 0.825 0.153 0.822 0.098-0.039-0.681 0.116-1.623-0.085-1.8856-0.109-0.1417-0.538-0.3054-0.578-0.159z" fill-rule="evenodd" fill="#fff"/>
<path id="path3197" d="m307.92 301.39c-1.212 1.06-2.336 1.493-3.451 2.833-0.456 0.549-0.443 1.314-0.715 2.014-0.273 0.743-1.151 0.889-1.423 0.734-0.455-0.299-0.389-1.677-0.897-0.935-0.431 0.683-0.709 1.624-1.346 1.612-0.576-0.012-1.663-1.19-1.112-1.247 1.885-0.193 1.862-1.702 2.568-1.801 0.792-0.106 0.844 1.246 1.333 0.975 0.384-0.197 0.565-1.772 0.982-2.197 1.278-1.306 2.289-1.996 3.593-2.956 0.66-0.526 1.131 0.423 0.468 0.968z" fill-rule="evenodd" fill="#fff"/>
<path id="path3193" d="m308.56 303.01c-0.207 0.238-0.84 0.199-0.897 0.533-0.249 1.239 0 1.867-0.273 3.06-0.261 1.142-1.054 1.185-1 0.254 0.072-1.207 1.067-2.911 0.364-3.028-0.468-0.11-0.829-0.736-0.345-1.045 0.914-0.634 1.405-0.537 2.033-0.346 0.219 0.067 0.275 0.389 0.118 0.572z" fill-rule="evenodd" fill="#fff"/>
<g id="g3205" fill-rule="evenodd" transform="translate(0,199.5)" stroke="#000" stroke-width=".5" fill="#fff">
<path id="path3198" d="m302.18 200.08c0.419 0.931 1.031 0.89 0.939-0.001-0.178-1.141-0.523-2.718-0.718-4.088-0.111-1.16-1.31-0.936-0.994 0.276 0.4 1.308 0.316 2.743 0.773 3.813z"/>
<path id="path3201" d="m305.77 200.14c-0.005 0.472 0.726 0.429 0.719 0.056-0.076-1.187-0.166-2.791 0.165-3.37 0.258-0.452 1.299-0.133 2.265-0.221 0.385-0.057 0.305-1.116-0.497-1.049-0.946 0.085-3.44-0.222-3.591 0.662-0.217 1.59 0.983-0.095 0.939 3.922z"/>
<path id="path3203" d="m313.01 195.55c0.605 0.436 0.521 1.003-0.221 0.828-0.884-0.221-1.48-0.15-1.468 0.335 0.013 0.477 0.386 0.57 0.929 1.099 0.52 0.545-0.319 0.456-0.962 1.572-0.548 0.924 0.57 1.046 1.888 0.696 0.336-0.096 0.777 0.482-0.055 0.957-0.586 0.313-2.219 0.696-2.625-0.489-0.771-2.05 1.291-2.334 0.422-2.88-0.474-0.286-0.645-0.717-0.559-1.289 0.184-1.32 2.15-1.145 2.651-0.829z"/>
<path id="path3204" d="m315.73 200.07c0.795-1.451 1.343-2.538 1.565-3.77 0.193-1.112 0.992-1.219 1.16-0.276 0.216 1.252 0.933 2.493 1.803 3.63 0.51 0.705-0.516 1.326-0.919 0.777-0.739-0.938-0.77-2.245-1.206-2.236-0.503 0.01-1.074 1.457-1.611 2.525-0.156 0.31-1.109-0.001-0.792-0.65z"/>
</g>
<g id="g3210" fill-rule="evenodd" fill="#fff" transform="translate(0,199.5)">
<path id="path3211" d="m302.18 200.08c0.419 0.931 1.031 0.89 0.939-0.001-0.178-1.141-0.523-2.718-0.718-4.088-0.111-1.16-1.31-0.936-0.994 0.276 0.4 1.308 0.316 2.743 0.773 3.813z"/>
<path id="path3212" d="m305.77 200.14c-0.005 0.472 0.726 0.429 0.719 0.056-0.076-1.187-0.166-2.791 0.165-3.37 0.258-0.452 1.299-0.133 2.265-0.221 0.385-0.057 0.305-1.116-0.497-1.049-0.946 0.085-3.44-0.222-3.591 0.662-0.217 1.59 0.983-0.095 0.939 3.922z"/>
<path id="path3213" d="m313.01 195.55c0.605 0.436 0.521 1.003-0.221 0.828-0.884-0.221-1.48-0.15-1.468 0.335 0.013 0.477 0.386 0.57 0.929 1.099 0.52 0.545-0.319 0.456-0.962 1.572-0.548 0.924 0.57 1.046 1.888 0.696 0.336-0.096 0.777 0.482-0.055 0.957-0.586 0.313-2.219 0.696-2.625-0.489-0.771-2.05 1.291-2.334 0.422-2.88-0.474-0.286-0.645-0.717-0.559-1.289 0.184-1.32 2.15-1.145 2.651-0.829z"/>
<path id="path3214" d="m315.73 200.07c0.795-1.451 1.343-2.538 1.565-3.77 0.193-1.112 0.992-1.219 1.16-0.276 0.216 1.252 0.933 2.493 1.803 3.63 0.51 0.705-0.516 1.326-0.919 0.777-0.739-0.938-0.77-2.245-1.206-2.236-0.503 0.01-1.074 1.457-1.611 2.525-0.156 0.31-1.109-0.001-0.792-0.65z"/>
</g>
<path id="path1912" d="m384.5 357.31c-0.056 0.297 0.747 0.736 0.938 0.508 0.864-1.035 1.995-3.067 2.227-4.297 0.068-0.358-1.083-0.763-1.329-0.469-0.809 0.969-1.593 2.966-1.836 4.258z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg548" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3794">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs550">
<clipPath id="clipPath3056" clipPathUnits="userSpaceOnUse">
<rect id="rect3058" fill-opacity="0.67" height="512" width="682.67" y="3.5757e-8" x="-79.698"/>
</clipPath>
</defs>
<g id="flag" clip-path="url(#clipPath3056)" fill-rule="evenodd" transform="matrix(.93750 0 0 .93750 74.717 -3.3522e-8)">
<rect id="rect556" height="511.49" width="763.27" y="-8.5115e-7" x="-120" stroke-width="1pt" fill="#fff"/>
<rect id="rect1050" height="216.09" width="760.88" y=".61745" x="-118.31" stroke-width="1pt"/>
<rect id="rect1049" height="113.82" width="505.01" y="203.23" x="21.299" stroke-width="1pt" fill="#0061ff"/>
<path id="path1047" d="m642.75 1.7529v510.25h-380.72l380.72-510.25z" fill="#e20000"/>
<path id="path1048" d="m-118.69 1.7529v510.25h380.72l-380.72-510.25z" fill="#e20000"/>
<path id="path1051" d="m440.37 203.34-76.31-19.363 64.921-48.976-79.727 11.39 41.003-69.476-70.616 41.003 12.528-80.867-47.836 63.782-19.363-74.033-21.64 76.311-47.837-64.921 13.667 83.145-70.615-43.282 41.003 69.476-77.449-12.528 63.782 47.837-79.728 20.501h354.22z" fill="#ffd600"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,791 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg548" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4564">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs1346">
<clipPath id="clipPath9925" clipPathUnits="userSpaceOnUse">
<rect id="rect9927" fill-opacity="0.67" height="480" width="640" y="0" x="0"/>
</clipPath>
</defs>
<g id="g7603" clip-path="url(#clipPath9925)">
<g id="g4539" transform="matrix(.9375 0 0 .9375 155.92 2.9297e-7)">
<rect id="rect1310" fill-rule="evenodd" height="256.07" width="429.52" y=".44916" x="-165.86" stroke-width="1pt" fill="#fff"/>
<path id="path549" d="m-165.86 0.44988-0.0179 19.219 102.5 63.221 38.565 1.3414-141.05-83.781z" fill="#c00"/>
<path id="path551" d="m-121.97 0.44988 124.26 77.916v-77.916h-124.26z" fill="#006"/>
<path id="path552" d="m18.866 0.44988v99.468h-184.73v56.839h184.73v99.468h56.839v-99.468h184.73v-56.839h-184.73v-99.468h-56.839z" fill="#c00"/>
<path id="path554" d="m92.283 0.44988v73.417l121.57-72.848-121.57-0.56912z" fill="#006"/>
<path id="path555" d="m96.12 81.871 34.19-0.33 132.82-80.522-35.24 0.6889-131.77 80.163z" fill="#c00"/>
<path id="path556" d="m261.78 22.495-101.46 60.395 100.11 0.44974v89.995h-85.258l84.47 54.942 1.2386 27.948-45.116-0.64654-123.48-72.77v73.417h-89.995v-73.417l-115.83 73.22-52.315 0.19657v255.78h852.58v-511.55l-424.04-0.46m-428.54 28.869l-0.4499 53.121 89.757 1.3497-89.307-54.471z" fill="#006"/>
<path id="path700" d="m-165.86 173.33v54.471l85.258-53.902-85.258-0.56863z" fill="#006"/>
<path id="path701" d="m162.45 175.58-35.543-0.33108 133.97 80.072-0.881-18.319-97.55-61.422zm-295.02 81.091 125.62-79.172-32.994 0.26265-125.92 78.791" fill="#c00"/>
</g>
<g id="g5283" transform="matrix(2.0302 0 0 2.0302 -20.748 -474.95)">
<path id="path557" d="m269 356 1 1-1-1z" fill="#49497d"/>
<path id="path558" d="m270 356 1 1-1-1z" fill="#0e0e6e"/>
<path id="path559" d="m267 357 1 1-1-1z" fill="#262678"/>
<path id="path560" d="m268 357 1 1-1-1z" fill="#808067"/>
<path id="path562" d="m271 357 1 1-1-1z" fill="#58587b"/>
<path id="path563" d="m234 358 1 1-1-1z" fill="#0e0e6e"/>
<path id="path564" d="m265 358 1 1-1-1z" fill="#1b1b74"/>
<path id="path565" d="m266 358 1 1-1-1z" fill="#6e6c70"/>
<path id="path567" d="m235.76 359.81c0 25.838-2.978 54.955 16.28 75.19 3.962 4.163 11.499 13.656 17.96 13.292 6.764-0.381 15.462-10.39 19.331-15.292 16.764-22.052 14.099-48.355 14.669-73.95-7.57 3.3996-11.34 4.5196-17.96 4.4998-4.903 0.5039-12.467-2.7917-16.99-4.9474-2.956 1.9739-7.244 4.3279-14.95 4.5922-8.9 0.3915-11.72-1.1167-18.34-3.3848z" fill="#cc3"/>
<path id="path568" d="m272 358 1 1-1-1z" fill="#99994e"/>
<path id="path569" d="m273 358 1 1-1-1z" fill="#49497d"/>
<path id="path570" d="m304 358 1 1-1-1z" fill="#0e0e6e"/>
<path id="path572" d="m235 359 1 1-1-1z" fill="#a4a43d"/>
<path id="path573" d="m236 359 1 1-1-1z" fill="#6e6c70"/>
<path id="path574" d="m237 359 1 1-1-1z" fill="#3a3a7c"/>
<path id="path575" d="m263 359 1 1-1-1z" fill="#1b1b74"/>
<path id="path576" d="m264 359 1 1-1-1z" fill="#6e6c70"/>
<path id="path577" d="m265 359 1 1-1-1z" fill="#a4a43d"/>
<path id="path578" d="m269 359 1 1-1-1z" fill="#d0d045"/>
<path id="path579" d="m273 359 1 1-1-1z" fill="#a4a43d"/>
<path id="path580" d="m274 359 1 1-1-1z" fill="#8d8d5b"/>
<path id="path581" d="m275 359 1 1-1-1z" fill="#3a3a7c"/>
<path id="path582" d="m301 359 1 1-1-1z" fill="#262678"/>
<path id="path583" d="m302 359 1 1-1-1z" fill="#53527c"/>
<path id="path584" d="m303 359 1 1-1-1z" fill="#8d8d5b"/>
<path id="path586" d="m239 360 1 1-1-1z" fill="#737370"/>
<path id="path587" d="m240 360 1 1-1-1z" fill="#53527c"/>
<path id="path588" d="m241 360 1 1-1-1z" fill="#1b1b74"/>
<path id="path589" d="m261 360 1 1-1-1z" fill="#262678"/>
<path id="path590" d="m262 360 1 1-1-1z" fill="#6e6c70"/>
<path id="path591" d="m263 360 1 1-1-1z" fill="#a4a43d"/>
<path id="path592" d="m268 360 1 1-1-1z" fill="#e5e59d"/>
<path id="path593" d="m237.81 362.62c-0.538 13.573-0.125 28.857 1.997 43.38 2.346 7.587 2.032 11.755 5.518 16.302l48.798-0.38c2.94-4.784 5.121-12.038 5.402-14.922 2.725-14.667 2.79-30.853 2.855-45.33-4.907 2.6083-11.333 4.4568-17.57 3.6458-5-0.3813-9.62-1.5225-15-4.5633-4.667 2.7961-6.294 4.0724-14 4.3989-6 0.2959-10.86 0.7818-18-2.5316z" fill="#fff"/>
<path id="path594" d="m270 360 1 1-1-1z" fill="#f2f1d7"/>
<path id="path595" d="m271 360 1 1-1-1z" fill="#d9d868"/>
<path id="path596" d="m275 360 1 1-1-1z" fill="#a4a43d"/>
<path id="path597" d="m276 360 1 1-1-1z" fill="#99994e"/>
<path id="path598" d="m277 360 1 1-1-1z" fill="#49497d"/>
<path id="path599" d="m278 360 1 1-1-1z" fill="#0e0e6e"/>
<path id="path600" d="m298 360 1 1-1-1z" fill="#3a3a7c"/>
<path id="path601" d="m299 360 1 1-1-1z" fill="#667"/>
<path id="path602" d="m300 360 1 1-1-1z" fill="#99994e"/>
<path id="path603" d="m301 360 1 1-1-1m-60 1 1 1-1-1z" fill="#a4a43d"/>
<path id="path604" d="m242 361 1 1-1-1z" fill="#99994e"/>
<path id="path605" d="m243 361 1 1-1-1z" fill="#6e6c70"/>
<path id="path606" d="m244 361 1 1-1-1z" fill="#49497d"/>
<path id="path607" d="m245 361 1 1-1-1m13 0 1 1-1-1z" fill="#1b1b74"/>
<path id="path608" d="m259 361 1 1-1-1z" fill="#53527c"/>
<path id="path609" d="m260 361 1 1-1-1z" fill="#8d8d5b"/>
<path id="path610" d="m261 361 1 1-1-1z" fill="#a4a43d"/>
<path id="path611" d="m266 361 1 1-1-1z" fill="#e5e59d"/>
<path id="path612" d="m267 361 1 1-1-1z" fill="#fbfaf2"/>
<path id="path613" d="m272 361 1 1-1-1z" fill="#f2f1d2"/>
<path id="path614" d="m273 361 1 1-1-1z" fill="#d9d868"/>
<path id="path615" d="m278 361 1 1-1-1z" fill="#a4a43d"/>
<path id="path616" d="m279 361 1 1-1-1z" fill="#6e6c70"/>
<path id="path617" d="m280 361 1 1-1-1z" fill="#3a3a7c"/>
<path id="path618" d="m293 361 1 1-1-1z" fill="#0e0e6e"/>
<path id="path619" d="m294 361 1 1-1-1z" fill="#32327b"/>
<path id="path620" d="m295 361 1 1-1-1z" fill="#58587b"/>
<path id="path621" d="m296 361 1 1-1-1z" fill="#808067"/>
<path id="path622" d="m297.67 361.33 0.666 0.3334-0.666-0.3334z" fill="#a4a43d"/>
<path id="path624" d="m237 362 1 1-1-1z" fill="#dddc7a"/>
<path id="path625" d="m238 362 1 1-1-1z" fill="#d0d045"/>
<path id="path626" d="m245.67 362.33 0.666 0.3334-0.666-0.3334z" fill="#a4a43d"/>
<path id="path627" d="m247 362 1 1-1-1z" fill="#808067"/>
<path id="path628" d="m248 362 1 1-1-1z" fill="#667"/>
<path id="path629" d="m249 362 1 1-1-1z" fill="#58587b"/>
<path id="path630" d="m250 362 1 1-1-1z" fill="#49497d"/>
<path id="path634" d="m256 362 1 1-1-1z" fill="#737370"/>
<path id="path635" d="m257 362 1 1-1-1z" fill="#99994e"/>
<path id="path636" d="m258 362 1 1-1-1z" fill="#a4a43d"/>
<path id="path637" d="m264 362 1 1-1-1z" fill="#e5e59d"/>
<path id="path638" d="m265 362 1 1-1-1z" fill="#fbfaf2"/>
<path id="path639" d="m274 362 1 1-1-1z" fill="#f2f1d2"/>
<path id="path640" d="m275 362 1 1-1-1z" fill="#d9d868"/>
<path id="path641" d="m280.67 362.33 0.666 0.3334-0.666-0.3334z" fill="#a4a43d"/>
<path id="path642" d="m282 362 1 1-1-1z" fill="#808067"/>
<path id="path643" d="m283 362 1 1-1-1z" fill="#667"/>
<path id="path644" d="m284 362 1 1-1-1z" fill="#58587b"/>
<path id="path645" d="m285 362 1 1-1-1z" fill="#3a3a7c"/>
<path id="path647" d="m289.67 362.33 0.666 0.3334-0.666-0.3334z" fill="#58587b"/>
<path id="path648" d="m291 362 1 1-1-1z" fill="#737370"/>
<path id="path649" d="m292 362 1 1-1-1z" fill="#99994e"/>
<path id="path650" d="m293 362 1 1-1-1z" fill="#a4a43d"/>
<path id="path651" d="m301 362 1 1-1-1z" fill="#dddc7a"/>
<path id="path652" d="m302 362 1 1-1-1z" fill="#d0d045"/>
<path id="path654" d="m239 363 1 1-1-1z" fill="#f2f1d7"/>
<path id="path655" d="m240 363 1 1-1-1z" fill="#e0dea1"/>
<path id="path656" d="m241 363 1 1-1-1z" fill="#dddc7a"/>
<path id="path657" d="m261 363 1 1-1-1z" fill="#d9d868"/>
<path id="path658" d="m262 363 1 1-1-1z" fill="#e5e3af"/>
<path id="path659" d="m276 363 1 1-1-1z" fill="#f6f6e4"/>
<path id="path660" d="m277 363 1 1-1-1z" fill="#e1e18c"/>
<path id="path661" d="m297 363 1 1-1-1z" fill="#d4d456"/>
<path id="path662" d="m298 363 1 1-1-1z" fill="#e1e18c"/>
<path id="path663" d="m299 363 1 1-1-1z" fill="#eeedc1"/>
<path id="path665" d="m243 364 1 1-1-1z" fill="#f2f1d2"/>
<path id="path666" d="m244 364 1 1-1-1z" fill="#e0dea1"/>
<path id="path667" d="m245 364 1 1-1-1z" fill="#dddc7a"/>
<path id="path668" d="m246 364 1 1-1-1z" fill="#d0d045"/>
<path id="path669" d="m258 364 1 1-1-1z" fill="#dddc7a"/>
<path id="path670" d="m259 364 1 1-1-1z" fill="#e5e3af"/>
<path id="path671" d="m260 364 1 1-1-1z" fill="#f6f6e4"/>
<path id="path672" d="m279 364 1 1-1-1z" fill="#eeedc1"/>
<path id="path673" d="m280 364 1 1-1-1z" fill="#e1e18c"/>
<path id="path674" d="m281 364 1 1-1-1z" fill="#d4d456"/>
<path id="path675" d="m293 364 1 1-1-1z" fill="#d9d868"/>
<path id="path676" d="m294 364 1 1-1-1z" fill="#e1e18c"/>
<path id="path677" d="m295 364 1 1-1-1z" fill="#eeedc1"/>
<path id="path678" d="m296 364 1 1-1-1z" fill="#f6f6e4"/>
<path id="path679" d="m248 365 1 1-1-1z" fill="#f2f1d7"/>
<path id="path680" d="m249 365 1 1-1-1z" fill="#f2f1d2"/>
<path id="path681" d="m250 365 1 1-1-1z" fill="#eeedc1"/>
<path id="path683" d="m254.67 365.33 0.666 0.3334-0.666-0.3334z" fill="#f2f1d2"/>
<path id="path684" d="m256 365 1 1-1-1z" fill="#fbfaf2"/>
<path id="path685" d="m261 365 2 2v-2h-2z" fill="#fef8f1"/>
<path id="path686" d="m283 365 1 1-1-1z" fill="#f2f1d7"/>
<path id="path687" d="m284 365 1 1-1-1z" fill="#f2f1d2"/>
<path id="path688" d="m285 365 1 1-1-1z" fill="#e5e3af"/>
<path id="path689" d="m286.67 365.33 0.666 0.3334-0.666-0.3334z" fill="#e5e59d"/>
<path id="path690" d="m288 365 1 1-1-1z" fill="#e0dea1"/>
<path id="path691" d="m289.67 365.33 0.666 0.3334-0.666-0.3334z" fill="#f2f1d2"/>
<path id="path692" d="m291 365 1 1-1-1z" fill="#fbfaf2"/>
<path id="path693" d="m259 366 1 1-1-1z" fill="#fef8f1"/>
<path id="path694" d="m260 366 1 1-1-1z" fill="#fbbe66"/>
<path id="path696" d="m259 367 1 1-1-1z" fill="#fbc477"/>
<path id="path697" d="m261 367 1 1-1-1z" fill="#fcb144"/>
<path id="path698" d="m259 368 1 1-1-1z" fill="#fe9f11"/>
<path id="path699" d="m261 368 1 1-1-1z" fill="#fea522"/>
<path id="path702" d="m258 369 1 1-1-1m4 0 1 1-1-1z" fill="#fae3c9"/>
<path id="path703" d="m267 369 1 1-1-1z" fill="#fbead6"/>
<path id="path704" d="m268 369 1 1-1-1z" fill="#f9d6aa"/>
<path id="path706" d="m272 369 1 1-1-1z" fill="#fae3c9"/>
<path id="path707" d="m273 369 1 1-1-1z" fill="#fef8f1"/>
<path id="path708" d="m258 370 1 1-1-1z" fill="#f9d099"/>
<path id="path709" d="m262 370 1 1-1-1z" fill="#fdab33"/>
<path id="path710" d="m264 370 1 1-1-1z" fill="#fcf1e4"/>
<path id="path711" d="m265 370 1 1-1-1z" fill="#fbc477"/>
<path id="path712" d="m266 370 1 1-1-1z" fill="#fea522"/>
<path id="path713" d="m274 370 1 1-1-1z" fill="#fcb755"/>
<path id="path714" d="m275 370 1 1-1-1z" fill="#f9d6aa"/>
<path id="path715" d="m258 371 1 1-1-1z" fill="#faca88"/>
<path id="path716" d="m263 371 1 1-1-1m13 0 1 1-1-1z" fill="#fea522"/>
<path id="path717" d="m277 371 1 1-1-1z" fill="#f8dcbb"/>
<path id="path718" d="m237 372 1 1-1-1z" fill="#f6f6e4"/>
<path id="path719" d="m258 372 1 1-1-1z" fill="#fbc477"/>
<path id="path720" d="m278 372 1 1-1-1z" fill="#fbbe66"/>
<path id="path721" d="m279 372 1 1-1-1z" fill="#f8dcbb"/>
<path id="path722" d="m258 373 1 1-1-1z" fill="#faca88"/>
<path id="path723" d="m281 373 1 1-1-1z" fill="#fcb755"/>
<path id="path724" d="m282 373 1 1-1-1z" fill="#f8dcbb"/>
<path id="path725" d="m257 374 1 1-1-1z" fill="#fef8f1"/>
<path id="path726" d="m258 374 1 1-1-1z" fill="#fe9f11"/>
<path id="path727" d="m286 374 1 1-1-1z" fill="#fdab33"/>
<path id="path728" d="m287 374 1 1-1-1z" fill="#fcb144"/>
<path id="path729" d="m288 374 1 1-1-1z" fill="#fbc477"/>
<path id="path730" d="m289 374 2 2-2-2z" fill="#f9d6aa"/>
<path id="path731" d="m290 374 1 1-1-1z" fill="#fef8f1"/>
<path id="path732" d="m257 375 1 1-1-1z" fill="#fcb144"/>
<path id="path733" d="m271 375 1 1-1-1z" fill="#fdab33"/>
<path id="path734" d="m272 375 1 1-1-1z" fill="#fbc477"/>
<path id="path736" d="m276 375 1 1-1-1z" fill="#fbc477"/>
<path id="path737" d="m277 375 1 1-1-1z" fill="#fea522"/>
<path id="path738" d="m256 376 1 1-1-1z" fill="#fae3c9"/>
<path id="path739" d="m269 376 1 1-1-1z" fill="#fcb144"/>
<path id="path740" d="m270 376 1 1-1-1z" fill="#fae3c9"/>
<path id="path742" d="m278 376 1 1-1-1z" fill="#f8dcbb"/>
<path id="path743" d="m279 376 1 1-1-1z" fill="#fdab33"/>
<path id="path744" d="m285 376 1 1-1-1z" fill="#fe9f11"/>
<path id="path745" d="m286 376 1 1-1-1z" fill="#fcb755"/>
<path id="path746" d="m287 376 1 1-1-1z" fill="#f9d099"/>
<path id="path747" d="m288 376 1 1-1-1z" fill="#fbead6"/>
<path id="path748" d="m256 377 1 1-1-1z" fill="#fcb144"/>
<path id="path749" d="m268 377 1 1-1-1z" fill="#fbbe66"/>
<path id="path750" d="m280 377 1 1-1-1z" fill="#f9d099"/>
<path id="path751" d="m284 377 1 1-1-1z" fill="#fbead6"/>
<path id="path752" d="m255 378 1 1-1-1z" fill="#fcf1e4"/>
<path id="path753" d="m267 378 1 1-1-1z" fill="#fbbe66"/>
<path id="path754" d="m281 378 1 1-1-1z" fill="#f9d099"/>
<path id="path755" d="m284 378 1 1-1-1z" fill="#fae3c9"/>
<path id="path756" d="m255 379 1 1-1-1z" fill="#fbc477"/>
<path id="path757" d="m266 379 1 1-1-1m16 0 1 1-1-1z" fill="#fcb144"/>
<path id="path758" d="m284 379 1 1-1-1z" fill="#fbbe66"/>
<path id="path759" d="m237 380 1 1-1-1z" fill="#f6f6e4"/>
<path id="path760" d="m255 380 1 1-1-1z" fill="#fea522"/>
<path id="path761" d="m266 380 1 1-1-1z" fill="#fbead6"/>
<path id="path762" d="m282 380 1 1-1-1z" fill="#fcf1e4"/>
<path id="path763" d="m285 380 1 1-1-1z" fill="#fef8f1"/>
<path id="path765" d="m254 381 1 1-1-1z" fill="#fcf1e4"/>
<path id="path766" d="m265 381 1 1-1-1z" fill="#fbbe66"/>
<path id="path767" d="m283 381 1 1-1-1z" fill="#faca88"/>
<path id="path768" d="m285 381 1 1-1-1z" fill="#f9d099"/>
<path id="path769" d="m254 382 1 1-1-1z" fill="#f9d6aa"/>
<path id="path770" d="m265 382 1 1-1-1z" fill="#fcf1e4"/>
<path id="path771" d="m270 382 1 1-1-1z" fill="#fae3c9"/>
<path id="path772" d="m271 382 1 1-1-1z" fill="#fea522"/>
<path id="path773" d="m272 382 1 1-1-1z" fill="#fcb144"/>
<path id="path774" d="m273 382 1 1-1-1z" fill="#f9d6aa"/>
<path id="path775" d="m283 382 1 1-1-1z" fill="#fef8f1"/>
<path id="path776" d="m284 382 1 1-1-1z" fill="#fea522"/>
<path id="path777" d="m285 382 1 1-1-1z" fill="#fdab33"/>
<path id="path778" d="m254 383-1 3 1-3z" fill="#faca88"/>
<path id="path779" d="m264 383 1 1-1-1z" fill="#fea522"/>
<path id="path780" d="m265 383 1 1-1-1z" fill="#fef8f1"/>
<path id="path781" d="m270 383 1 1-1-1z" fill="#f9d099"/>
<path id="path783" d="m274 383 1 1-1-1z" fill="#fdab33"/>
<path id="path784" d="m275 383 1 1-1-1z" fill="#fae3c9"/>
<path id="path785" d="m284 383 1 1-1-1z" fill="#f8dcbb"/>
<path id="path786" d="m285 383 1 1-1-1z" fill="#f90"/>
<path id="path787" d="m286.33 383.67 0.334 0.6666-0.334-0.6666z" fill="#fbead6"/>
<path id="path788" d="m266 384 1 1-1-1z" fill="#fea522"/>
<path id="path789" d="m267 384 1 1-1-1z" fill="#fbbe66"/>
<path id="path790" d="m268 384 1 1-1-1z" fill="#faca88"/>
<path id="path791" d="m269 384 1 1-1-1z" fill="#fcb144"/>
<path id="path792" d="m270 384 1 1-1-1z" fill="#fae3c9"/>
<path id="path793" d="m271 384 1 1-1-1z" fill="#fe9f11"/>
<path id="path794" d="m276 384 1 1-1-1z" fill="#fdab33"/>
<path id="path795" d="m277 384 1 1-1-1z" fill="#fbc477"/>
<path id="path796" d="m278 384 1 1-1-1z" fill="#faca88"/>
<path id="path797" d="m279 384 1 1-1-1z" fill="#f9d6aa"/>
<path id="path798" d="m280.67 384.33 0.666 0.3334-0.666-0.3334z" fill="#fae3c9"/>
<path id="path799" d="m282 384 1 1-1-1z" fill="#fef8f1"/>
<path id="path800" d="m285 384 1 1-1-1z" fill="#fbc477"/>
<path id="path801" d="m242 385 1 1-1-1z" fill="#fef8f1"/>
<path id="path802" d="m243 385 1 1-1-1z" fill="#fcf1e4"/>
<path id="path804" d="m269 385 1 1-1-1z" fill="#fcb755"/>
<path id="path806" d="m271 385 1 1-1-1z" fill="#fbead6"/>
<path id="path807" d="m272 385 1 1-1-1z" fill="#fea522"/>
<path id="path808" d="m280 385 1 1-1-1z" fill="#fe9f11"/>
<path id="path809" d="m281 385-1 2 1-2z" fill="#fcb144"/>
<path id="path810" d="m283 385 1 1-1-1z" fill="#fe9f11"/>
<path id="path811" d="m284 385 1 1-1-1z" fill="#fbbe66"/>
<path id="path812" d="m285 385 1 1-1-1z" fill="#fcf1e4"/>
<path id="path813" d="m242 386 1 1-1-1z" fill="#fae3c9"/>
<path id="path814" d="m243 386 2 2-2-2z" fill="#fe9f11"/>
<path id="path815" d="m244 386 1 1-1-1z" fill="#fbead6"/>
<path id="path817" d="m253 386 1 1-1-1z" fill="#fbead6"/>
<path id="path818" d="m254 386 1 1-1-1z" fill="#fae3c9"/>
<path id="path819" d="m263 386 1 1-1-1z" fill="#fe9f11"/>
<path id="path820" d="m264 386 1 1-1-1z" fill="#fbc477"/>
<path id="path821" d="m265 386 1 1-1-1z" fill="#fea522"/>
<path id="path822" d="m268 386 1 1-1-1z" fill="#fbc477"/>
<path id="path823" d="m269 386 1 1-1-1z" fill="#fef8f1"/>
<path id="path824" d="m273 386 1 1-1-1z" fill="#fbc477"/>
<path id="path825" d="m281 386 1 1-1-1z" fill="#fff"/>
<path id="path826" d="m282 386 1 1-1-1z" fill="#fdab33"/>
<path id="path827" d="m286 386 1 1-1-1z" fill="#fbc477"/>
<path id="path828" d="m242 387 1 1-1-1z" fill="#fef8f1"/>
<path id="path830" d="m245 387 1 1-1-1z" fill="#fbead6"/>
<path id="path831" d="m250 387 1 1-1-1z" fill="#f9d6aa"/>
<path id="path833" d="m255 387 1 1-1-1z" fill="#fe9f11"/>
<path id="path834" d="m256.67 387.33 0.666 0.3334-0.666-0.3334z" fill="#f9d6aa"/>
<path id="path835" d="m263 387 1 1-1-1z" fill="#f8dcbb"/>
<path id="path836" d="m266 387 1 1-1-1z" fill="#fcf1e4"/>
<path id="path837" d="m274 387 1 1-1-1z" fill="#f9d6aa"/>
<path id="path838" d="m281 387 1 1-1-1z" fill="#fdab33"/>
<path id="path839" d="m287 387 1 1-1-1z" fill="#fcb755"/>
<path id="path840" d="m288 387 1 1-1-1z" fill="#fef8f1"/>
<path id="path841" d="m234 388 1 1-1-1z" fill="#53527c"/>
<path id="path842" d="m243 388 1 1-1-1z" fill="#fcb755"/>
<path id="path843" d="m245 388 1 1-1-1z" fill="#fea522"/>
<path id="path845" d="m249 388 1 1-1-1z" fill="#fbead6"/>
<path id="path846" d="m251 388 1 1-1-1z" fill="#fe9f11"/>
<path id="path847" d="m252 388 1 1-1-1z" fill="#fcf1e4"/>
<path id="path848" d="m255 388 1 1-1-1z" fill="#fbbe66"/>
<path id="path849" d="m256 388 1 1-1-1z" fill="#fbc477"/>
<path id="path850" d="m257 388 1 1-1-1z" fill="#fbbe66"/>
<path id="path851" d="m262 388 1 1-1-1z" fill="#fea522"/>
<path id="path852" d="m275 388 1 1-1-1z" fill="#f9d6aa"/>
<path id="path853" d="m288 388 1 1-1-1z" fill="#fcb144"/>
<path id="path854" d="m304 388 1 1-1-1z" fill="#8d8d5b"/>
<path id="path856" d="m237 389 1 1-1-1z" fill="#e5e3af"/>
<path id="path857" d="m243 389 1 1-1-1z" fill="#f8dcbb"/>
<path id="path858" d="m246 389 1 1-1-1z" fill="#fdab33"/>
<path id="path859" d="m249 389 1 1-1-1z" fill="#fe9f11"/>
<path id="path860" d="m251 389 1 1-1-1z" fill="#faca88"/>
<path id="path861" d="m255 389 1 1-1-1z" fill="#fcf1e4"/>
<path id="path862" d="m262 389 1 1-1-1m14 0 1 1-1-1z" fill="#f9d099"/>
<path id="path863" d="m289 389 1 1-1-1z" fill="#fbbe66"/>
<path id="path866" d="m244 390 1 1-1-1z" fill="#fea522"/>
<path id="path867" d="m247 390 1 1-1-1z" fill="#fdab33"/>
<path id="path868" d="m248 390 1 1-1-1z" fill="#fea522"/>
<path id="path869" d="m250 390 1 1-1-1z" fill="#fe9f11"/>
<path id="path870" d="m251 390 1 1-1-1z" fill="#fef8f1"/>
<path id="path871" d="m256 390 1 1-1-1z" fill="#fbbe66"/>
<path id="path872" d="m262 390 1 1-1-1z" fill="#fef8f1"/>
<path id="path873" d="m277 390 1 1-1-1z" fill="#fbbe66"/>
<path id="path874" d="m290 390 1 1-1-1z" fill="#f9d099"/>
<path id="path875" d="m244 391 1 1-1-1z" fill="#f9d6aa"/>
<path id="path876" d="m250 391 1 1-1-1z" fill="#f9d099"/>
<path id="path877" d="m256 391 1 1-1-1z" fill="#fcf1e4"/>
<path id="path878" d="m261 391 1 1-1-1m17 0 1 1-1-1z" fill="#fdab33"/>
<path id="path879" d="m291 391 1 1-1-1z" fill="#fbead6"/>
<path id="path881" d="m245 392 1 1-1-1z" fill="#fea522"/>
<path id="path882" d="m249 392 1 1-1-1z" fill="#fe9f11"/>
<path id="path883" d="m257 392 1 1-1-1z" fill="#fcb144"/>
<path id="path884" d="m261 392 1 1-1-1z" fill="#faca88"/>
<path id="path885" d="m278 392 1 1-1-1z" fill="#f8dcbb"/>
<path id="path886" d="m291 392 1 1-1-1z" fill="#fcb144"/>
<path id="path888" d="m237 393 1 1-1-1z" fill="#d3d079"/>
<path id="path889" d="m245 393 1 1-1-1z" fill="#faca88"/>
<path id="path891" d="m257 393 1 1-1-1z" fill="#faca88"/>
<path id="path892" d="m261 393 1 1-1-1m17 0 1 1-1-1z" fill="#fae3c9"/>
<path id="path893" d="m292 393 1 1-1-1z" fill="#f8dcbb"/>
<path id="path894" d="m301 393 1 1-1-1z" fill="#f2f1d7"/>
<path id="path895" d="m304.33 393.67 0.334 0.6666-0.334-0.6666z" fill="#58587b"/>
<path id="path896" d="m237.33 394.67 0.334 0.6666-0.334-0.6666z" fill="#d9d868"/>
<path id="path897" d="m245 394 1 1-1-1z" fill="#f8dcbb"/>
<path id="path899" d="m277 394 1 1-1-1z" fill="#f9d6aa"/>
<path id="path900" d="m278 394 1 1-1-1z" fill="#fe9f11"/>
<path id="path901" d="m292 394 1 1-1-1z" fill="#fcb144"/>
<path id="path902" d="m301.33 394.67 0.334 0.6666-0.334-0.6666z" fill="#f2f1d2"/>
<path id="path903" d="m245 395 1 1-1-1z" fill="#fcf1e4"/>
<path id="path904" d="m276 395 1 1-1-1z" fill="#fef8f1"/>
<path id="path905" d="m277 395 1 1-1-1z" fill="#fe9f11"/>
<path id="path906" d="m280 395-1 2 1-2z" fill="#fdab33"/>
<path id="path907" d="m281 395 1 1-1-1z" fill="#fcb755"/>
<path id="path908" d="m293 395 1 1-1-1z" fill="#fea522"/>
<path id="path909" d="m294 395 1 1-1-1z" fill="#f9d099"/>
<path id="path910" d="m304 395 1 1-1-1z" fill="#53527c"/>
<path id="path911" d="m235.33 396.67 0.334 0.666-0.334-0.666z" fill="#808067"/>
<path id="path912" d="m246 396 1 1-1-1m3 0 1 1-1-1z" fill="#fea522"/>
<path id="path913" d="m260 396 1 1-1-1z" fill="#fe9f11"/>
<path id="path914" d="m276 396 1 1-1-1z" fill="#fae3c9"/>
<path id="path915" d="m280 396 1 1-1-1z" fill="#fef8f1"/>
<path id="path917" d="m282 396 1 1-1-1z" fill="#fcb144"/>
<path id="path918" d="m295 396 1 1-1-1z" fill="#fcb755"/>
<path id="path919" d="m296 396 2 2-2-2z" fill="#fef8f1"/>
<path id="path920" d="m301.33 396.67 0.334 0.666-0.334-0.666z" fill="#e5e59d"/>
<path id="path921" d="m304.33 396.67 0.334 0.666-0.334-0.666z" fill="#32327b"/>
<path id="path922" d="m246.33 397.67 0.334 0.666-0.334-0.666z" fill="#fcb755"/>
<path id="path923" d="m250 397 1 1-1-1z" fill="#fef8f1"/>
<path id="path924" d="m260 397 1 1-1-1z" fill="#fbbe66"/>
<path id="path925" d="m276 397 1 1-1-1z" fill="#fbead6"/>
<path id="path926" d="m278 397 1 1-1-1z" fill="#fe9f11"/>
<path id="path927" d="m279 397 1 1-1-1z" fill="#fcf1e4"/>
<path id="path928" d="m282 397 1 1-1-1z" fill="#fbead6"/>
<path id="path929" d="m296 397 1 1-1-1z" fill="#fdab33"/>
<path id="path931" d="m235 398 1 1-1-1z" fill="#667"/>
<path id="path932" d="m238 398 1 1-1-1z" fill="#f6f6e4"/>
<path id="path933" d="m250 398 1 1-1-1z" fill="#f9d6aa"/>
<path id="path934" d="m258 398 1 1-1-1z" fill="#fdab33"/>
<path id="path935" d="m259 398 1 1-1-1z" fill="#fe9f11"/>
<path id="path936" d="m260 398 1 1-1-1z" fill="#fcf1e4"/>
<path id="path937" d="m277 398 1 1-1-1z" fill="#fea522"/>
<path id="path938" d="m278 398 1 1-1-1m5 0 1 1-1-1z" fill="#faca88"/>
<path id="path939" d="m297 398 1 1-1-1z" fill="#fcb144"/>
<path id="path940" d="m301 398 1 1-1-1z" fill="#dddc7a"/>
<path id="path941" d="m235 399 1 1-1-1z" fill="#58587b"/>
<path id="path942" d="m238 399 1 1-1-1z" fill="#f2f1d2"/>
<path id="path943" d="m246.33 399.67 0.334 0.666-0.334-0.666z" fill="#fcb144"/>
<path id="path944" d="m250 399 1 1-1-1z" fill="#fea522"/>
<path id="path945" d="m260 399 1 1-1-1z" fill="#fef8f1"/>
<path id="path946" d="m261 399 1 1-1-1z" fill="#fea522"/>
<path id="path947" d="m263 399 1 1-1-1z" fill="#fcb144"/>
<path id="path948" d="m264 399 1 1-1-1z" fill="#fbead6"/>
<path id="path949" d="m277 399 1 1-1-1z" fill="#f8dcbb"/>
<path id="path950" d="m278 399 1 1-1-1z" fill="#fcf1e4"/>
<path id="path951" d="m283 399 1 1-1-1z" fill="#fef8f1"/>
<path id="path952" d="m284 399 1 1-1-1z" fill="#fe9f11"/>
<path id="path953" d="m298 399 1 1-1-1z" fill="#fbead6"/>
<path id="path954" d="m301 399 1 1-1-1z" fill="#d9d868"/>
<path id="path955" d="m235 400 1 1-1-1z" fill="#3a3a7c"/>
<path id="path956" d="m238 400 1 1-1-1z" fill="#e5e3af"/>
<path id="path957" d="m251 400 1 1-1-1z" fill="#faca88"/>
<path id="path958" d="m261 400 1 1-1-1z" fill="#fbead6"/>
<path id="path959" d="m264 400 1 1-1-1z" fill="#fe9f11"/>
<path id="path960" d="m265 400 1 1-1-1z" fill="#fcf1e4"/>
<path id="path961" d="m276 400 1 1-1-1z" fill="#fbead6"/>
<path id="path962" d="m277 400 1 1-1-1z" fill="#fae3c9"/>
<path id="path963" d="m278 400 1 1-1-1z" fill="#fbead6"/>
<path id="path964" d="m284 400 1 1-1-1m8 0 1 1-1-1z" fill="#fbbe66"/>
<path id="path965" d="m293 400 1 1-1-1z" fill="#fcf1e4"/>
<path id="path966" d="m294 400 1 1-1-1z" fill="#fef8f1"/>
<path id="path967" d="m295 400 1 1-1-1z" fill="#f8dcbb"/>
<path id="path968" d="m296 400 1 1-1-1z" fill="#fcb755"/>
<path id="path969" d="m298 400 1 1-1-1z" fill="#fae3c9"/>
<path id="path970" d="m303 400 1 1-1-1z" fill="#808067"/>
<path id="path971" d="m235 401 1 1-1-1z" fill="#32327b"/>
<path id="path972" d="m236.33 401.67 0.334 0.666-0.334-0.666z" fill="#a4a43d"/>
<path id="path973" d="m238 401 1 1-1-1z" fill="#e5e59d"/>
<path id="path974" d="m246 401 1 1-1-1z" fill="#fbc477"/>
<path id="path975" d="m252 401 1 1-1-1z" fill="#f9d6aa"/>
<path id="path976" d="m262 401 1 1-1-1z" fill="#fbbe66"/>
<path id="path977" d="m265 401 1 1-1-1z" fill="#f9d099"/>
<path id="path978" d="m274 401 1 1-1-1z" fill="#fae3c9"/>
<path id="path979" d="m275 401 1 1-1-1z" fill="#fcb144"/>
<path id="path980" d="m279 401 1 1-1-1z" fill="#fae3c9"/>
<path id="path981" d="m284 401 1 1-1-1z" fill="#f8dcbb"/>
<path id="path982" d="m292 401 1 1-1-1z" fill="#f9d099"/>
<path id="path983" d="m297 401 1 1-1-1z" fill="#fbc477"/>
<path id="path984" d="m298 401 1 1-1-1z" fill="#fbead6"/>
<path id="path985" d="m303 401 1 1-1-1z" fill="#737370"/>
<path id="path986" d="m238 402 1 1-1-1z" fill="#d9d868"/>
<path id="path987" d="m246 402 1 1-1-1z" fill="#f9d099"/>
<path id="path988" d="m253 402 1 1-1-1m9 0 1 1-1-1z" fill="#f9d6aa"/>
<path id="path989" d="m265 402 1 1-1-1z" fill="#fbc477"/>
<path id="path990" d="m270 402 1 1-1-1z" fill="#fef8f1"/>
<path id="path991" d="m271 402 1 1-1-1z" fill="#f8dcbb"/>
<path id="path992" d="m272 402 1 1-1-1z" fill="#fbc477"/>
<path id="path993" d="m273 402 1 1-1-1z" fill="#fea522"/>
<path id="path994" d="m279 402 1 1-1-1z" fill="#fbead6"/>
<path id="path996" d="m300 402 1 1-1-1z" fill="#f2f1d2"/>
<path id="path997" d="m303 402 1 1-1-1z" fill="#58587b"/>
<path id="path998" d="m236 403 1 1-1-1z" fill="#99994e"/>
<path id="path999" d="m238 403 1 1-1-1z" fill="#d0d045"/>
<path id="path1001" d="m254 403 1 1-1-1z" fill="#fcb144"/>
<path id="path1002" d="m255 403 1 1-1-1z" fill="#fae3c9"/>
<path id="path1003" d="m262 403 1 1-1-1z" fill="#fef8f1"/>
<path id="path1004" d="m266 403 1 1-1-1z" fill="#fcb755"/>
<path id="path1005" d="m267 403 1 1-1-1z" fill="#fbc477"/>
<path id="path1006" d="m268 403 1 1-1-1z" fill="#fcb144"/>
<path id="path1007" d="m269 403 1 1-1-1z" fill="#fea522"/>
<path id="path1008" d="m277 403 1 1-1-1z" fill="#fe9f11"/>
<path id="path1009" d="m278 403 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1010" d="m292 403 1 1-1-1z" fill="#fef8f1"/>
<path id="path1011" d="m300 403 1 1-1-1z" fill="#e0dea1"/>
<path id="path1012" d="m303 403 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1013" d="m236 404 1 1-1-1z" fill="#737370"/>
<path id="path1014" d="m239 404 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1015" d="m247 404 1 1-1-1z" fill="#fea522"/>
<path id="path1016" d="m256 404 1 1-1-1z" fill="#fe9f11"/>
<path id="path1017" d="m257 404 1 1-1-1z" fill="#fcb144"/>
<path id="path1018" d="m258 404 1 1-1-1z" fill="#fbc477"/>
<path id="path1019" d="m259 404 1 1-1-1z" fill="#faca88"/>
<path id="path1020" d="m260 404 1 1-1-1z" fill="#fbc477"/>
<path id="path1021" d="m261 404 1 1-1-1z" fill="#fcb144"/>
<path id="path1022" d="m262 404 1 1-1-1z" fill="#fdab33"/>
<path id="path1023" d="m276 404 1 1-1-1z" fill="#fbc477"/>
<path id="path1024" d="m277 404 1 1-1-1z" fill="#fef8f1"/>
<path id="path1025" d="m291 404 1 1-1-1z" fill="#fdab33"/>
<path id="path1026" d="m300 404 1 1-1-1z" fill="#e1e18c"/>
<path id="path1027" d="m302.33 404.67 0.334 0.666-0.334-0.666z" fill="#a4a43d"/>
<path id="path1028" d="m303 404 1 1-1-1z" fill="#262678"/>
<path id="path1029" d="m236 405 1 1-1-1z" fill="#58587b"/>
<path id="path1030" d="m239 405 1 1-1-1z" fill="#f2f1d2"/>
<path id="path1031" d="m247 405 1 1-1-1z" fill="#faca88"/>
<path id="path1032" d="m274 405 1 1-1-1z" fill="#fe9f11"/>
<path id="path1033" d="m275 405 1 1-1-1z" fill="#fbead6"/>
<path id="path1034" d="m284 405 1 1-1-1z" fill="#fbc477"/>
<path id="path1035" d="m291 405 1 1-1-1z" fill="#faca88"/>
<path id="path1036" d="m300 405 1 1-1-1z" fill="#d4d456"/>
<path id="path1037" d="m236 406 1 1-1-1z" fill="#32327b"/>
<path id="path1038" d="m239 406 1 1-1-1z" fill="#e5e59d"/>
<path id="path1039" d="m247 406 1 1-1-1z" fill="#fef8f1"/>
<path id="path1040" d="m248 406 1 1-1-1z" fill="#fe9f11"/>
<path id="path1041" d="m274 406 1 1-1-1z" fill="#fbead6"/>
<path id="path1042" d="m284 406 1 1-1-1z" fill="#fea522"/>
<path id="path1043" d="m291 406 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1044" d="m302 406 1 1-1-1z" fill="#808067"/>
<path id="path1045" d="m236 407 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1046" d="m237 407 1 1-1-1z" fill="#a4a43d"/>
<path id="path1047" d="m239 407 1 1-1-1z" fill="#d9d868"/>
<path id="path1048" d="m248 407 1 1-1-1z" fill="#f8dcbb"/>
<path id="path1050" d="m283 407 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1051" d="m290 407 1 1-1-1z" fill="#faca88"/>
<path id="path1052" d="m299 407 1 1-1-1z" fill="#f2f1d2"/>
<path id="path1053" d="m302 407 1 1-1-1z" fill="#58587b"/>
<path id="path1054" d="m237 408 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1055" d="m249 408 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1056" d="m269 408 1 1-1-1z" fill="#fdab33"/>
<path id="path1057" d="m270 408 1 1-1-1z" fill="#fff"/>
<path id="path1058" d="m271.67 408.33 0.666 0.334-0.666-0.334z" fill="#fcb144"/>
<path id="path1059" d="m282 408-1 2 1-2z" fill="#fef8f1"/>
<path id="path1060" d="m283 408 1 1-1-1z" fill="#fe9f11"/>
<path id="path1061" d="m289 408-1 2 1-2z" fill="#fdab33"/>
<path id="path1062" d="m299 408 1 1-1-1z" fill="#e5e59d"/>
<path id="path1063" d="m302 408 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1064" d="m237 409 1 1-1-1z" fill="#667"/>
<path id="path1065" d="m240 409 1 1-1-1z" fill="#f2f1d2"/>
<path id="path1066" d="m250 409 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1067" d="m269 409 1 1-1-1z" fill="#fe9f11"/>
<path id="path1068" d="m270 409 1 1-1-1z" fill="#faca88"/>
<path id="path1069" d="m271 409 1 1-1-1z" fill="#fea522"/>
<path id="path1070" d="m272 409 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1071" d="m282 409 1 1-1-1z" fill="#fdab33"/>
<path id="path1072" d="m289 409 1 1-1-1z" fill="#fef8f1"/>
<path id="path1073" d="m299 409 1 1-1-1z" fill="#d9d868"/>
<path id="path1074" d="m301 409 1 1-1-1z" fill="#a4a43d"/>
<path id="path1075" d="m302 409 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1076" d="m237 410 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1077" d="m240 410 1 1-1-1z" fill="#e5e59d"/>
<path id="path1078" d="m251 410 2 2-2-2z" fill="#fae3c9"/>
<path id="path1079" d="m252 410 1 1-1-1z" fill="#fe9f11"/>
<path id="path1080" d="m271 410 1 1-1-1z" fill="#f8dcbb"/>
<path id="path1081" d="m280 410 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1082" d="m281 410 1 1-1-1z" fill="#fdab33"/>
<path id="path1083" d="m287 410 1 1-1-1z" fill="#fcb144"/>
<path id="path1084" d="m288 410 1 1-1-1z" fill="#fef8f1"/>
<path id="path1085" d="m298 410 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1086" d="m301 410 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1087" d="m237 411 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1088" d="m238 411 1 1-1-1z" fill="#a4a43d"/>
<path id="path1089" d="m240 411 1 1-1-1z" fill="#d4d456"/>
<path id="path1090" d="m270 411 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1091" d="m279 411 1 1-1-1z" fill="#f9d099"/>
<path id="path1092" d="m280 411 1 1-1-1z" fill="#fe9f11"/>
<path id="path1093" d="m286 411 1 1-1-1z" fill="#faca88"/>
<path id="path1094" d="m298 411 1 1-1-1z" fill="#eeedc1"/>
<path id="path1095" d="m301 411 1 1-1-1z" fill="#58587b"/>
<path id="path1096" d="m238 412 1 1-1-1z" fill="#737370"/>
<path id="path1097" d="m241 412 1 1-1-1z" fill="#f6f6e4"/>
<path id="path1098" d="m252 412 1 1-1-1z" fill="#fbbe66"/>
<path id="path1099" d="m268 412 1 1-1-1z" fill="#fcb144"/>
<path id="path1100" d="m269.33 412.67 0.334 0.666-0.334-0.666z" fill="#f8dcbb"/>
<path id="path1102" d="m277 412 1 1-1-1z" fill="#fbbe66"/>
<path id="path1103" d="m278 412 1 1-1-1z" fill="#fe9f11"/>
<path id="path1104" d="m284 412 1 1-1-1z" fill="#fbc477"/>
<path id="path1105" d="m285 412 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1106" d="m298 412 1 1-1-1z" fill="#d3d079"/>
<path id="path1107" d="m300 412 1 1-1-1z" fill="#a4a43d"/>
<path id="path1108" d="m301 412 1 1-1-1z" fill="#262678"/>
<path id="path1109" d="m238 413 1 1-1-1z" fill="#49497d"/>
<path id="path1110" d="m241 413 1 1-1-1z" fill="#e0dea1"/>
<path id="path1111" d="m251 413 1 1-1-1z" fill="#fae3c9"/>
<path id="path1112" d="m265 413 1 1-1-1z" fill="#fdab33"/>
<path id="path1113" d="m266 413 1 1-1-1z" fill="#fbc477"/>
<path id="path1114" d="m267 413 1 1-1-1z" fill="#fbead6"/>
<path id="path1115" d="m270 413 1 1-1-1z" fill="#fcb144"/>
<path id="path1116" d="m283 413 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1117" d="m300 413 1 1-1-1z" fill="#99994e"/>
<path id="path1118" d="m238 414 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1119" d="m239 414 1 1-1-1z" fill="#a4a43d"/>
<path id="path1120" d="m241 414 1 1-1-1z" fill="#d4d456"/>
<path id="path1122" d="m250 414 1 1-1-1z" fill="#f9d099"/>
<path id="path1123" d="m251 414 1 1-1-1m5 0 1 1-1-1z" fill="#fe9f11"/>
<path id="path1124" d="m257 414 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1125" d="m258 414 1 1-1-1z" fill="#f9d099"/>
<path id="path1127" d="m262 414 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1128" d="m263 414 1 1-1-1z" fill="#fae3c9"/>
<path id="path1129" d="m264 414 1 1-1-1z" fill="#fef8f1"/>
<path id="path1130" d="m272 414 1 1-1-1z" fill="#fbead6"/>
<path id="path1131" d="m273 414 1 1-1-1z" fill="#fae3c9"/>
<path id="path1132" d="m274 414 1 1-1-1z" fill="#faca88"/>
<path id="path1133" d="m275 414 1 1-1-1z" fill="#fbc477"/>
<path id="path1134" d="m276 414 1 1-1-1z" fill="#fdab33"/>
<path id="path1135" d="m281 414 1 1-1-1z" fill="#fe9f11"/>
<path id="path1136" d="m282 414 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1137" d="m297 414 1 1-1-1z" fill="#e5e3af"/>
<path id="path1138" d="m300 414 1 1-1-1z" fill="#667"/>
<path id="path1139" d="m239 415 1 1-1-1z" fill="#737370"/>
<path id="path1140" d="m242 415 1 1-1-1z" fill="#f2f1d7"/>
<path id="path1141" d="m249 415 1 1-1-1z" fill="#fea522"/>
<path id="path1142" d="m254 415 1 1-1-1z" fill="#fe9f11"/>
<path id="path1143" d="m255 415 1 1-1-1z" fill="#fbbe66"/>
<path id="path1144" d="m256 415 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1145" d="m280 415 1 1-1-1z" fill="#fea522"/>
<path id="path1146" d="m281 415 1 1-1-1z" fill="#fbead6"/>
<path id="path1147" d="m297 415 1 1-1-1z" fill="#dddc7a"/>
<path id="path1148" d="m299 415 1 1-1-1z" fill="#a4a43d"/>
<path id="path1149" d="m300 415 1 1-1-1z" fill="#262678"/>
<path id="path1150" d="m239 416 1 1-1-1z" fill="#49497d"/>
<path id="path1151" d="m240.33 416.67 0.334 0.666-0.334-0.666z" fill="#a4a43d"/>
<path id="path1152" d="m242 416 1 1-1-1z" fill="#d3d079"/>
<path id="path1153" d="m250 416 1 1-1-1z" fill="#f9d099"/>
<path id="path1154" d="m251 416 1 1-1-1z" fill="#fcb144"/>
<path id="path1155" d="m252 416 1 1-1-1z" fill="#faca88"/>
<path id="path1156" d="m253 416 1 1-1-1z" fill="#f8dcbb"/>
<path id="path1157" d="m254 416 1 1-1-1z" fill="#fef8f1"/>
<path id="path1158" d="m276 416 1 1-1-1z" fill="#f8dcbb"/>
<path id="path1159" d="m280 416 1 1-1-1z" fill="#fcf1e4"/>
<path id="path1160" d="m296 416 1 1-1-1z" fill="#f6f6e4"/>
<path id="path1161" d="m299 416 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1162" d="m243 417 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1163" d="m276 417 1 1-1-1z" fill="#fbbe66"/>
<path id="path1164" d="m279 417 1 1-1-1z" fill="#faca88"/>
<path id="path1165" d="m296 417 1 1-1-1z" fill="#e1e18c"/>
<path id="path1166" d="m299 417 1 1-1-1z" fill="#49497d"/>
<path id="path1167" d="m240 418 1 1-1-1z" fill="#58587b"/>
<path id="path1168" d="m243 418 1 1-1-1z" fill="#e5e59d"/>
<path id="path1169" d="m276 418 1 1-1-1z" fill="#fe9f11"/>
<path id="path1170" d="m278 418 1 1-1-1z" fill="#fdab33"/>
<path id="path1171" d="m295 418 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1172" d="m298 418 1 1-1-1z" fill="#a4a43d"/>
<path id="path1173" d="m299 418 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1174" d="m240 419 1 1-1-1z" fill="#1b1b74"/>
<path id="path1175" d="m241 419 1 1-1-1z" fill="#a4a43d"/>
<path id="path1176" d="m243 419 1 1-1-1z" fill="#d0d045"/>
<path id="path1177" d="m275 419 1 1-1-1z" fill="#fbead6"/>
<path id="path1178" d="m277 419 1 1-1-1z" fill="#fe9f11"/>
<path id="path1179" d="m278 419 1 1-1-1z" fill="#fbead6"/>
<path id="path1180" d="m295 419 1 1-1-1z" fill="#e5e59d"/>
<path id="path1181" d="m298 419 1 1-1-1z" fill="#667"/>
<path id="path1182" d="m241 420 1 1-1-1z" fill="#6e6c70"/>
<path id="path1183" d="m244 420 1 1-1-1z" fill="#e5e3af"/>
<path id="path1184" d="m275.33 420.67 0.334 0.666-0.334-0.666z" fill="#faca88"/>
<path id="path1185" d="m277 420 1 1-1-1z" fill="#fae3c9"/>
<path id="path1186" d="m294 420 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1187" d="m297 420 1 1-1-1z" fill="#a4a43d"/>
<path id="path1188" d="m298 420 1 1-1-1m-57 1 1 1-1-1z" fill="#1b1b74"/>
<path id="path1189" d="m242 421 1 1-1-1z" fill="#a4a43d"/>
<path id="path1190" d="m244 421 1 1-1-1z" fill="#d0d045"/>
<path id="path1191" d="m245 421 1 1-1-1z" fill="#fbfaf2"/>
<path id="path1192" d="m276 421 1 1-1-1z" fill="#f9d6aa"/>
<path id="path1193" d="m294 421 1 1-1-1z" fill="#e5e59d"/>
<path id="path1194" d="m297 421 1 1-1-1m-55 1 1 1-1-1z" fill="#6e6c70"/>
<path id="path1195" d="m245 422 1 1-1-1z" fill="#8cbf84"/>
<path id="path1196" d="m245.43 422c3.473 7.309 15.757 24.553 25.14 24.217 9.113-0.326 19.404-17.151 23.43-24.217h-48.57z" fill="#0cf"/>
<path id="path1197" d="m296 422 1 1-1-1z" fill="#a4a43d"/>
<path id="path1198" d="m297 422 1 1-1-1m-55 1 1 1-1-1z" fill="#1b1b74"/>
<path id="path1199" d="m243 423 1 1-1-1z" fill="#a4a43d"/>
<path id="path1200" d="m245 423 1 1-1-1z" fill="#adb333"/>
<path id="path1201" d="m246 423 1 1-1-1z" fill="#1ac5b5"/>
<path id="path1202" d="m293 423 1 1-1-1z" fill="#68b070"/>
<path id="path1203" d="m296 423 1 1-1-1z" fill="#667"/>
<path id="path1204" d="m243 424 1 1-1-1z" fill="#58587b"/>
<path id="path1205" d="m246 424 1 1-1-1z" fill="#7fb15c"/>
<path id="path1206" d="m292 424 1 1-1-1z" fill="#27c2aa"/>
<path id="path1207" d="m295 424-1 2 1-2z" fill="#a4a43d"/>
<path id="path1208" d="m296 424 1 1-1-1m-53 1 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1209" d="m244 425 2 2-2-2z" fill="#a4a43d"/>
<path id="path1210" d="m247 425 1 1-1-1z" fill="#34be9e"/>
<path id="path1211" d="m292 425 1 1-1-1z" fill="#96b247"/>
<path id="path1212" d="m295 425 1 1-1-1z" fill="#53527c"/>
<path id="path1213" d="m244 426 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1214" d="m247 426 1 1-1-1z" fill="#a2b23d"/>
<path id="path1215" d="m248 426 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1216" d="m291 426 1 1-1-1z" fill="#5bb47c"/>
<path id="path1217" d="m294 426 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1218" d="m245 427 1 1-1-1z" fill="#737370"/>
<path id="path1219" d="m248 427 1 1-1-1z" fill="#74b166"/>
<path id="path1220" d="m290 427 1 1-1-1z" fill="#27c2aa"/>
<path id="path1221" d="m293 427-1 2 1-2z" fill="#a4a43d"/>
<path id="path1222" d="m294 427 1 1-1-1z" fill="#262678"/>
<path id="path1223" d="m245 428 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1224" d="m246 428 2 2-2-2z" fill="#a4a43d"/>
<path id="path1225" d="m249 428 1 1-1-1z" fill="#42bb92"/>
<path id="path1226" d="m289 428 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1227" d="m290 428 1 1-1-1z" fill="#96b247"/>
<path id="path1228" d="m293 428 1 1-1-1z" fill="#58587b"/>
<path id="path1229" d="m246 429 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1230" d="m249 429 1 1-1-1z" fill="#adb333"/>
<path id="path1231" d="m250 429 1 1-1-1z" fill="#27c2aa"/>
<path id="path1232" d="m289 429 1 1-1-1z" fill="#74b166"/>
<path id="path1233" d="m292 429 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1234" d="m247 430 1 1-1-1z" fill="#6e6c70"/>
<path id="path1235" d="m250 430 1 1-1-1z" fill="#96b247"/>
<path id="path1236" d="m251 430 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1237" d="m288 430 1 1-1-1z" fill="#42bb92"/>
<path id="path1238" d="m291 430-2 3 2-3z" fill="#a4a43d"/>
<path id="path1239" d="m292 430 1 1-1-1z" fill="#1b1b74"/>
<path id="path1240" d="m247 431 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1241" d="m248 431 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1242" d="m251 431 1 1-1-1z" fill="#7fb15c"/>
<path id="path1243" d="m287 431 1 1-1-1z" fill="#34be9e"/>
<path id="path1244" d="m291 431 1 1-1-1z" fill="#3a3a7c"/>
<path id="path1245" d="m248 432 1 1-1-1z" fill="#1b1b74"/>
<path id="path1246" d="m249 432 11 11-11-11z" fill="#a4a43d"/>
<path id="path1247" d="m252 432 1 1-1-1z" fill="#74b166"/>
<path id="path1248" d="m286 432 1 1-1-1z" fill="#27c2aa"/>
<path id="path1249" d="m287 432 1 1-1-1z" fill="#adb333"/>
<path id="path1250" d="m290 432 1 1-1-1z" fill="#667"/>
<path id="path1251" d="m249 433 1 1-1-1z" fill="#32327b"/>
<path id="path1252" d="m253 433 1 1-1-1z" fill="#42bb92"/>
<path id="path1253" d="m285 433-4 5 4-5z" fill="#0dc9c1"/>
<path id="path1254" d="m286 433 1 1-1-1z" fill="#adb333"/>
<path id="path1255" d="m289 433 1 1-1-1z" fill="#737370"/>
<path id="path1256" d="m250 434 1 1-1-1z" fill="#49497d"/>
<path id="path1257" d="m254 434 1 1-1-1z" fill="#42bb92"/>
<path id="path1258" d="m285 434 1 1-1-1z" fill="#96b247"/>
<path id="path1259" d="m288 434-1 2 1-2z" fill="#8d8d5b"/>
<path id="path1260" d="m289 434 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1261" d="m251 435 1 1-1-1z" fill="#53527c"/>
<path id="path1262" d="m255 435 1 1-1-1z" fill="#42bb92"/>
<path id="path1263" d="m284 435 1 1-1-1z" fill="#96b247"/>
<path id="path1264" d="m288 435 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1265" d="m252 436 1 1-1-1z" fill="#6e6c70"/>
<path id="path1266" d="m256 436 1 1-1-1z" fill="#42bb92"/>
<path id="path1267" d="m283 436 1 1-1-1z" fill="#96b247"/>
<path id="path1268" d="m286 436-2 3 2-3z" fill="#a4a43d"/>
<path id="path1269" d="m287 436 1 1-1-1z" fill="#262678"/>
<path id="path1270" d="m253 437 1 1-1-1z" fill="#6e6c70"/>
<path id="path1271" d="m257 437 1 1-1-1z" fill="#42bb92"/>
<path id="path1272" d="m282 437 1 1-1-1z" fill="#96b247"/>
<path id="path1273" d="m286 437 1 1-1-1z" fill="#262678"/>
<path id="path1274" d="m254 438 1 1-1-1z" fill="#6e6c70"/>
<path id="path1275" d="m258 438 1 1-1-1z" fill="#68b070"/>
<path id="path1276" d="m280 438 1 1-1-1z" fill="#27c2aa"/>
<path id="path1277" d="m281 438 1 1-1-1z" fill="#adb333"/>
<path id="path1278" d="m285 438 1 1-1-1z" fill="#262678"/>
<path id="path1279" d="m255 439 1 1-1-1z" fill="#667"/>
<path id="path1280" d="m259 439 1 1-1-1z" fill="#74b166"/>
<path id="path1281" d="m279 439 1 1-1-1z" fill="#34be9e"/>
<path id="path1282" d="m280 439 1 1-1-1z" fill="#adb333"/>
<path id="path1283" d="m283 439-1 2 1-2z" fill="#8d8d5b"/>
<path id="path1284" d="m284 439 1 1-1-1z" fill="#262678"/>
<path id="path1285" d="m256 440 1 1-1-1z" fill="#49497d"/>
<path id="path1286" d="m260 440 1 1-1-1z" fill="#96b247"/>
<path id="path1287" d="m261 440 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1288" d="m278 440 1 1-1-1z" fill="#42bb92"/>
<path id="path1289" d="m283 440 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1290" d="m257 441 1 1-1-1z" fill="#49497d"/>
<path id="path1291" d="m261 441 1 1-1-1z" fill="#a2b23d"/>
<path id="path1292" d="m262 441 1 1-1-1z" fill="#27c2aa"/>
<path id="path1293" d="m277 441 1 1-1-1z" fill="#74b166"/>
<path id="path1294" d="m280 441-3 4 3-4z" fill="#a4a43d"/>
<path id="path1295" d="m281 441 1 1-1-1z" fill="#808067"/>
<path id="path1296" d="m282 441 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1297" d="m258 442 1 1-1-1z" fill="#262678"/>
<path id="path1298" d="m262 442 1 1-1-1z" fill="#adb333"/>
<path id="path1299" d="m263 442 1 1-1-1z" fill="#42bb92"/>
<path id="path1300" d="m275 442 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1301" d="m276 442 1 1-1-1z" fill="#96b247"/>
<path id="path1302" d="m280 442 1 1-1-1z" fill="#6e6c70"/>
<path id="path1303" d="m259 443 1 1-1-1z" fill="#1b1b74"/>
<path id="path1304" d="m260 443 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1305" d="m264 443 1 1-1-1z" fill="#74b166"/>
<path id="path1306" d="m265 443 1 1-1-1z" fill="#0dc9c1"/>
<path id="path1307" d="m274 443 1 1-1-1z" fill="#34be9e"/>
<path id="path1308" d="m275 443 1 1-1-1z" fill="#adb333"/>
<path id="path1309" d="m279 443 1 1-1-1z" fill="#49497d"/>
<path id="path1310" d="m260 444 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1311" d="m261 444 1 1-1-1z" fill="#6e6c70"/>
<path id="path1312" d="m262 444 2 2-2-2z" fill="#a4a43d"/>
<path id="path1313" d="m265 444 1 1-1-1z" fill="#96b247"/>
<path id="path1314" d="m266 444 1 1-1-1z" fill="#27c2aa"/>
<path id="path1315" d="m273 444 1 1-1-1z" fill="#68b070"/>
<path id="path1316" d="m278 444 1 1-1-1z" fill="#32327b"/>
<path id="path1317" d="m262 445 1 1-1-1z" fill="#49497d"/>
<path id="path1318" d="m267 445 1 1-1-1z" fill="#5bb47c"/>
<path id="path1319" d="m271 445 1 1-1-1z" fill="#27c2aa"/>
<path id="path1320" d="m272 445 1 1-1-1z" fill="#96b247"/>
<path id="path1321" d="m275 445-1 2 1-2z" fill="#a4a43d"/>
<path id="path1322" d="m276 445 1 1-1-1z" fill="#808067"/>
<path id="path1323" d="m277 445 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1324" d="m263 446 1 1-1-1z" fill="#262678"/>
<path id="path1325" d="m264 446 1 1-1-1z" fill="#8d8d5b"/>
<path id="path1326" d="m268 446 1 1-1-1z" fill="#8bb252"/>
<path id="path1327" d="m269 446 1 1-1-1z" fill="#1ac5b5"/>
<path id="path1328" d="m270 446 1 1-1-1z" fill="#5bb47c"/>
<path id="path1329" d="m275 446 1 1-1-1z" fill="#58587b"/>
<path id="path1330" d="m264 447 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1331" d="m265 447 1 1-1-1z" fill="#667"/>
<path id="path1332" d="m266 447 1 1-1-1z" fill="#a4a43d"/>
<path id="path1333" d="m273 447 1 1-1-1z" fill="#99994e"/>
<path id="path1334" d="m274 447 1 1-1-1m-8 1 1 1-1-1z" fill="#32327b"/>
<path id="path1335" d="m267 448 1 1-1-1z" fill="#99994e"/>
<path id="path1336" d="m271 448 1 1-1-1z" fill="#a4a43d"/>
<path id="path1337" d="m272 448 1 1-1-1z" fill="#667"/>
<path id="path1338" d="m273 448 1 1-1-1m-6 1 1 1-1-1z" fill="#0e0e6e"/>
<path id="path1339" d="m268 449 1 1-1-1z" fill="#667"/>
<path id="path1340" d="m269 449 1 1-1-1z" fill="#a4a43d"/>
<path id="path1341" d="m270 449 1 1-1-1z" fill="#99994e"/>
<path id="path1342" d="m271 449 1 1-1-1z" fill="#32327b"/>
<path id="path1343" d="m269 450 1 1-1-1z" fill="#262678"/>
<path id="path1344" d="m270 450 1 1-1-1z" fill="#0e0e6e"/>
<g id="g1349" transform="translate(0,296)">
<path id="path782" d="m271 87c1.543 3.6293 6.49 7.637 7.85 9.6011-1.731 1.964-2.077 1.7501-1.85 5.3989 3.01-3.1493 3.064-3.4776 5-3 4.241 4.232 0.759 13.321-2.746 15.297-3.504 2.108-2.868-0.073-8.12 2.569 2.408 2.059 5.198-0.302 7.478 0.329 1.239 1.47-0.589 4.149 0.374 6.672 2.015-0.194 1.773-4.262 2.242-5.737 1.472-5.404 10.322-9.173 10.772-14.13 1.866-0.876 3.731-0.274 6 1-1.13-4.644-4.868-4.594-5.87-6.0444-2.385-3.6446-4.499-7.8024-9.593-8.881-3.867-0.8188-3.578 0.2463-6.056-1.444-1.54-1.202-6.23-3.474-5.48-1.631z" fill="#f90"/>
<path id="path1348" d="m267.04 122.1c0 0.44513-0.36084 0.80597-0.80597 0.80597-0.44512 0-0.80597-0.36084-0.80597-0.80597 0-0.44512 0.36085-0.80597 0.80597-0.80597 0.44513 0 0.80597 0.36085 0.80597 0.80597z" fill-rule="evenodd" transform="translate(15.078 -30.977)" fill="#fff"/>
</g>
<g id="g1352" transform="matrix(-.46716 -.88417 .88417 -.46716 308.31 678.65)">
<path id="path1353" d="m271 87c1.543 3.6293 6.49 7.637 7.85 9.6011-1.731 1.964-2.077 1.7501-1.85 5.3989 3.01-3.1493 3.064-3.4776 5-3 4.241 4.232 0.759 13.321-2.746 15.297-3.504 2.108-2.868-0.073-8.12 2.569 2.408 2.059 5.198-0.302 7.478 0.329 1.239 1.47-0.589 4.149 0.374 6.672 2.015-0.194 1.773-4.262 2.242-5.737 1.472-5.404 10.322-9.173 10.772-14.13 1.866-0.876 3.731-0.274 6 1-1.13-4.644-4.868-4.594-5.87-6.0444-2.385-3.6446-4.499-7.8024-9.593-8.881-3.867-0.8188-3.578 0.2463-6.056-1.444-1.54-1.202-6.23-3.474-5.48-1.631z" fill="#f90"/>
<path id="path1354" d="m267.04 122.1c0 0.44513-0.36084 0.80597-0.80597 0.80597-0.44512 0-0.80597-0.36084-0.80597-0.80597 0-0.44512 0.36085-0.80597 0.80597-0.80597 0.44513 0 0.80597 0.36085 0.80597 0.80597z" fill-rule="evenodd" transform="translate(15.078 -30.977)" fill="#fff"/>
</g>
<g id="g1355" transform="matrix(-.51504 .85717 -.85717 -.51504 493 213.06)">
<path id="path1356" d="m271 87c1.543 3.6293 6.49 7.637 7.85 9.6011-1.731 1.964-2.077 1.7501-1.85 5.3989 3.01-3.1493 3.064-3.4776 5-3 4.241 4.232 0.759 13.321-2.746 15.297-3.504 2.108-2.868-0.073-8.12 2.569 2.408 2.059 5.198-0.302 7.478 0.329 1.239 1.47-0.589 4.149 0.374 6.672 2.015-0.194 1.773-4.262 2.242-5.737 1.472-5.404 10.322-9.173 10.772-14.13 1.866-0.876 3.731-0.274 6 1-1.13-4.644-4.868-4.594-5.87-6.0444-2.385-3.6446-4.499-7.8024-9.593-8.881-3.867-0.8188-3.578 0.2463-6.056-1.444-1.54-1.202-6.23-3.474-5.48-1.631z" fill="#f90"/>
<path id="path1357" d="m267.04 122.1c0 0.44513-0.36084 0.80597-0.80597 0.80597-0.44512 0-0.80597-0.36084-0.80597-0.80597 0-0.44512 0.36085-0.80597 0.80597-0.80597 0.44513 0 0.80597 0.36085 0.80597 0.80597z" fill-rule="evenodd" transform="translate(15.078 -30.977)" fill="#fff"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 0.5160635 3.096381">
<metadata id="metadata14">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag" transform="matrix(1.3333 0 0 1 -.086011 0)">
<path id="path4" fill="#f00" d="m-1.2902 0h3.0964v1.0321h-3.0964z"/>
<path id="path6" fill="#00f" d="m-1.2902 1.0321h3.0964v1.0321h-3.0964z"/>
<path id="path8" fill="#ffa500" d="m-1.2902 2.0643h3.0964v1.0321h-3.0964z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 834 B

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg820" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3028">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag">
<g id="g3332" fill-rule="evenodd" stroke-width="1pt" transform="matrix(.86011 0 0 .95321 0 -15.191)">
<rect id="rect918" height="255.53" width="744.09" y="15.937" x="0" fill="#f00"/>
<rect id="rect919" height="255.53" width="744.09" y="263.97" x="0"/>
</g>
<g id="g3311" transform="translate(-113.16 4.8627)">
<path id="path824" d="m341.83-135.75c165.22 43.304 58.989 255.64-71.216 167.26-2.939 4.5148-5.877 9.0297-8.817 13.545 76.628 54.658 152.57 10.66 173.9-46.358 22.297-58.788-7.521-141.48-92.511-150.03-0.451 5.192-0.904 10.384-1.355 15.576z" fill-rule="evenodd" transform="translate(0 279.06)" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect825" fill-rule="evenodd" transform="matrix(.90642 .42239 -.42345 .90592 0 279.06)" height="23.949" width="23.972" y="-77.07" x="276.34" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect826" fill-rule="evenodd" transform="translate(0 279.06)" height="23.942" width="23.979" y="-52.576" x="432.1" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect827" fill-rule="evenodd" transform="matrix(.93193 -.36263 .36360 .93156 0 279.06)" height="23.947" width="23.974" y="67.214" x="424.9" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect828" fill-rule="evenodd" transform="matrix(.71094 -.70325 .70434 .70986 0 279.06)" height="23.961" width="23.961" y="191.67" x="365.04" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect829" fill-rule="evenodd" transform="matrix(.93575 .35267 -.35362 .93539 0 279.06)" height="23.947" width="23.974" y="-280" x="287.71" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect830" fill-rule="evenodd" transform="matrix(.92874 .37073 -.37172 .92835 0 279.06)" height="23.947" width="23.974" y="-172.06" x="393.33" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect831" fill-rule="evenodd" transform="matrix(.92012 -.39163 .39265 .91969 0 279.06)" height="23.948" width="23.973" y="192.4" x="308.48" stroke-width="1pt" fill="#ffec00"/>
<rect id="rect832" fill-rule="evenodd" transform="translate(0 279.06)" height="23.942" width="23.979" y="58.906" x="319.88" stroke-width="1pt" fill="#ffec00"/>
<path id="path739" d="m361.17-57.03-20.351-15.006-20.244 14.469 8.034-22.918-20.347-14.957 24.447-0.171 8.568-22.551 7.782 22.703 24.702-0.2416-19.587 15.232 6.996 23.441z" fill-rule="evenodd" transform="translate(0 279.06)" stroke-width="1pt" fill="#ffec00"/>
<path id="path878" d="m449.19 62.453c-1.211 0.4184-6.229 12.389-9.675 18.248 1.797 0.5092 2.559 0.5965 3.625 1.0254 13.655 4.8007 20.384 9.1807 26.186 17.505 2.888 2.7911 7.032 2.9311 10.198 0.6972 0 0 2.795-1.1156 6.429-5.0223 2.969-4.5195 2.195-8.1095-1.383-11.16-10.944-7.9507-22.9-13.901-35.38-21.294z" fill-rule="evenodd" transform="translate(0 279.06)" stroke-width="1pt" fill="#fe0"/>
<path id="path879" d="m199.62 154.99c0 1.0448-0.847 1.8918-1.8918 1.8918s-1.8918-0.847-1.8918-1.8918 0.847-1.8918 1.8918-1.8918 1.8918 0.847 1.8918 1.8918z" fill-rule="evenodd" transform="matrix(2.2895 0 0 2.286 21.377 13.672)" stroke-width="1pt"/>
<path id="path880" d="m199.62 154.99c0 1.0448-0.847 1.8918-1.8918 1.8918s-1.8918-0.847-1.8918-1.8918 0.847-1.8918 1.8918-1.8918 1.8918 0.847 1.8918 1.8918z" fill-rule="evenodd" transform="scale(2.2895 2.286)" stroke-width="1pt"/>
<path id="path881" d="m199.62 154.99c0 1.0448-0.847 1.8918-1.8918 1.8918s-1.8918-0.847-1.8918-1.8918 0.847-1.8918 1.8918-1.8918 1.8918 0.847 1.8918 1.8918z" fill-rule="evenodd" transform="matrix(2.2895 0 0 2.286 10.898 6.9754)" stroke-width="1pt"/>
<path id="path882" d="m437.63 79.744c-42.57-24.273-87.31-50.521-129.88-74.796-18.751-11.636-19.683-33.385-7.17-49.876 1.302-2.3363 2.836-1.7579 3.514-0.5234 1.463 8.0284 5.969 16.324 11.37 21.495 44.693 28.383 87.732 55.804 131.71 85.613-3.448 5.7676-6.104 12.322-9.55 18.087z" fill-rule="evenodd" transform="translate(0 279.06)" stroke-width="1pt" fill="#fe0"/>
<rect id="rect892" fill-rule="evenodd" transform="matrix(.74495 .66712 -.66826 .74393 0 279.06)" height="23.959" width="23.963" y="-257.7" x="319.65" stroke-width="1pt" fill="#ffec00"/>
<path id="path893" d="m444.7 64.898-124.96-75.522" transform="translate(0 279.06)" stroke="#000" stroke-width="2.2878pt" fill="none"/>
<path id="path894" d="m429.27 47.47-42.24-27.279" transform="translate(0 279.06)" stroke="#000" stroke-width="2.2878pt" fill="none"/>
<path id="path895" d="m405.24 62.878-42.75-24.756" transform="translate(0 279.06)" stroke="#000" stroke-width="2.2878pt" fill="none"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg562" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3039">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag">
<rect id="rect561" fill-rule="evenodd" height="512" width="682.67" y="0" x="-85.333" stroke-width="1pt" fill="#3a7dce"/>
<path id="selection_to_path" d="m111.82 240.35c-3.0793-6.2986-3.0793-6.2986-3.0793-12.596-1.54 0-1.8288 0.29598-2.7192 0.0482-0.89045-0.24548-1.227 5.8076-4.1149 4.626-0.48093-0.59039 2.0696-4.9686-0.69746-6.7887-0.89045-0.59273 0.21653-4.184-0.16867-5.7587 0 0-3.5124 1.8691-6.1594-4.7231-1.3-1.723-3.0801 1.5739-3.0801 1.5739s0.76964 2.0174-0.62529 2.51c-1.9731-1.4768-3.4174-0.70226-5.9193-2.7314-2.5027-2.0299 0.52955-4.3542-4.2349-6.0764 3.0801-7.8724 3.0801-6.2986 10.78-9.4471-4.6202-3.1493-4.6202-3.1493-7.6995-7.8732-4.6201-1.5746-6.1602-3.1485-10.78-6.2978-6.1594-7.8732-9.2395-23.618-9.2395-34.64 3.8984-3.6907 9.2395 12.596 16.94 17.319l10.78 4.7239c6.1594 3.1493 7.6995 6.2978 12.32 9.4471l13.86 4.7239c6.1594 4.7231 9.2395 11.022 13.86 12.596 5.0046 0 5.9687-2.9473 7.5734-3.1306 9.0534-0.47465 13.674-1.6671 15.478-4.4474 1.828-2.214 6.2073 1.2794 18.527-3.4437 0 0-1.5393-6.2986-1.5393-6.2986s3.2723-2.7554 7.6995-1.5746c-0.12004-2.8782-0.40951-10.554 3.9516-14.017-2.6486-2.8409-0.87145-4.877-0.87145-4.877s2.4548-2.4113 2.7428-3.6907c-1.2984-6.9379 1.1267-7.0451 1.6707-9.0866 0.54323-2.0407-2.0947-1.3416-1.3509-4.1553 0.74229-2.8145 5.2036-3.4825 5.8008-5.8006 0.59945-2.3181-1.2718-3.481-1.164-4.0341 0.96263-2.214 0.14512-7.43 0-9.4474 8.2777-2.2635 10.973-9.152 13.86-6.2982 1.54-9.4473 3.0801-12.596 12.32-12.596 1.3-2.9029-3.3696-5.3633-1.54-6.2982 3.0801-0.39362 5.4376-0.19677 9.0488 4.5762 1.1396 1.5125 1.3463-2.2143 2.5012-2.608 1.1548-0.39362 3.9189-0.39975 4.3299-2.2634 0.43459-1.9191 1.0599-4.4284 2.5999-7.5775 1.2992-2.5587 2.3097 0.98409 3.4645 6.0029 6.4975 0.24595 21.175 1.7222 27.334 3.4443 4.6201 1.2302 7.7002-1.2302 12.127-1.7222 3.2723 3.3459 6.3524 0.83657 8.0847 7.9712 2.4457 3.8498 6.4481 0.34453 7.315 1.4761 5.1497 14.515 22.859 4.7236 24.206 4.9697 2.2611 0 5.0236 6.4901 6.8037 6.3289 2.8932-0.49819 2.0742-2.5155 4.6011-1.7036-0.67467 5.4616 4.9575 11.76 4.9575 15.844 0 0 1.3706 0.68905 2.641-0.52281 1.2688-1.2111 2.4358-4.3235 3.5664-4.2498 2.6949 0.39369 3.7867 0.74747 6.8926 1.3025 8.3498 2.917 12.603 3.575 15.846 5.0696 1.5089 2.823 2.9707 4.2687 6.0288 3.7412 2.527 1.7354 0.68379 4.0084 2.176 4.156 3.0801-1.5746 4.0906-3.2969 7.1699-1.7222 3.0801 1.5746 6.1602 4.7239 7.7002 7.8732 0 1.5739-1.54 7.8724 0 17.319 0.76964 3.1493 1.1427 5.646 4.4515 11.047-0.87905 5.5481 4.1628 14.884 4.1628 17.246 0 3.1485-2.4548 4.7729-3.9948 7.9214 6.1602 4.7239 0 12.596-3.0793 17.32 23.099 4.7239 12.32 14.171 30.799 9.4471-4.6202 11.022-2.9844 10.137 1.6358 21.159-9.2403 6.2986-0.19147 8.2166-6.3509 16.089-0.38521 0.49251 3.656 6.84 9.3352 6.84-1.54 12.596-6.1602 7.8724-4.6201 26.767-12.127-0.24548-7.2193 14.122-15.4 12.596 0.48093 9.0043 4.668 9.792 3.0801 18.894-6.1594 1.5746-6.1594 1.5746-9.2395 6.2986l-4.6202-1.5746c-1.54 7.8724-4.6194 9.4471 0 17.32 0 0-5.9672 0.19654-7.6995 0-0.14511 2.7065 2.647 3.4445 3.0801 6.2978-0.24084 1.1318-8.7593 6.1012-15.4 6.2986-1.7323 3.8873 4.6194 8.0208 4.2349 9.9885-7.2193 1.4263-10.395 10.48-10.395 10.48s3.7054 1.5257 3.0801 3.1493c-1.9724-1.4768-3.0801-1.5746-6.1594-1.5746-1.54 0.39385-5.2933-0.0963-8.8923 6.1137-3.95 1.3323-5.8145 0.85064-8.811 4.9018-1.3266-3.8593-3.2343 0.0365-5.5676 1.5335-2.331 1.4993-5.4711 5.2258-5.8927 5.0673 0.0965-1.0837 1.4443-5.0199 1.4443-5.0199l-7.7002 1.5746s-0.3434 0.0342-0.94818 0.0971c-0.60554 0.0614-0.44371-4.5957-1.9032-4.4272-1.4588 0.17012-5.6337 5.8573-7.0567 6.0352-1.4208 0.1779-1.8706-1.8092-3.0953-1.636-1.224 0.17324-3.6112 5.9987-4.4781 6.1533-0.86689 0.1546-4.3056-3.5408-7.2527-3.025-15.16 5.4627-17.567-10.775-19.924-1.6228-3.1758-1.723-2.6258-0.72323-5.8532 0.14139-2.059 0.543-2.2466-2.7834-4.0777-2.7321-3.6636 0.10565-3.4714 3.6488-5.4688 2.5907-1.635-7.3815-11.502-6.0531-12.464-9.2016-0.78255-3.2844 4.2744-3.2689 5.9102-5.4938 1.2506-3.2106-1.306-4.4295 3.7684-7.5267 6.6138-4.574 2.8119-6.2993 3.9713-9.7368 2.0742-4.9632 2.0863-6.175 0.35405-10.554 0 0-5.1497-14.171-6.1602-14.171-3.0793-0.88482-3.0793 5.2149-7.6037 6.889-9.2395 3.1485-25.552-7.9718-28.392-7.9718-2.5976 0.0498-14.632 2.9139-14.178-3.2215-1.7991 5.9653-8.4159 1.4014-8.8239 1.4014-6.1602 0-3.8026 4.8715-7.9418 4.6742-1.8774-0.63933-20.837-1.7712-20.837-1.7712v3.1493l-12.32-6.2986-10.78-3.1485c-9.2395-3.1493-4.6194-11.022-20.019-6.2986v-9.4471h-7.6995c3.0793-18.895 0-9.4471-1.54-26.767l-6.1602 1.5746c-6.1594-8.5125 8.5656-6.889-4.6194-12.596 0 0 0.24009-9.3989-3.0801-6.2986-0.67392 0.39386 1.54 4.7239 1.54 4.7239-12.32-1.5746-15.4-4.7239-15.4-17.32 0 0 10.154 1.4768 9.2395 0-1.4436-2.3616-3.3202-17.713-2.9836-18.747-0.14435-2.0671 9.4325-7.282 7.5794-12.253 1.1792-0.4428 4.6437-0.49096 4.6437-0.49096" fill="#fff"/>
<path id="path556" stroke-linejoin="round" d="m527.55 303.26c-0.49256 1.1082-0.4052 2.2148 0.104 3.0052 0.91438-1.3712 0.14227-2.0035-0.104-3.0052z" stroke="#fff" stroke-linecap="round" stroke-width="1.6864pt" fill="none"/>
<path id="path557" stroke-linejoin="round" d="m131.51 178.94s-2.5826-0.31617-2.0027 1.9502c0.84367-1.7398 1.9502-1.8446 2.0027-1.9502z" stroke="#fff" stroke-width="2.108" fill="none"/>
<path id="path558" stroke-linejoin="round" d="m132.09 173.67c-1.4228 0.0532-3.1625-0.2105-2.5826 2.0551 0.84367-1.7389 2.5302-1.9494 2.5826-2.0551z" stroke="#fff" stroke-width="2.108" fill="none"/>
<path id="path559" stroke-linejoin="round" d="m141.81 203.87s2.214-0.15808 1.6341 2.1083c-0.84367-1.7398-1.5808-2.0027-1.6341-2.1083z" stroke="#fff" stroke-width="2.108" fill="none"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg548" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3293">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs550">
<clipPath id="clipPath3716" clipPathUnits="userSpaceOnUse">
<rect id="rect3718" fill-opacity="0.67" height="480" width="640" y="0" x="0"/>
</clipPath>
</defs>
<g id="flag" clip-path="url(#clipPath3716)">
<rect id="rect877" height="512" width="1024" y="-16" x="-374" stroke-width="1pt" fill="#006"/>
<path id="path1241" d="m-374 240 1024 256v-512l-1024 256z" fill-rule="evenodd" stroke-width="1pt" fill="#bd1021"/>
<path id="path1244" d="m650 11.429v457.14l-914.29-228.57 914.29-228.57z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<g id="g1279" stroke="#000" transform="matrix(1.4087 0 0 1.4087 292.32 52.187)">
<path id="path1211" stroke-linejoin="round" d="m131.81 174.07s-4.538-3.713 0.825-9.695c-2.888-2.475-0.206-7.219-0.206-7.219s-4.951-1.857 0.206-9.489c-3.713-2.475-2.063-8.045-2.063-8.045s-12.17-4.538-0.618-8.869c-9.489 4.125-18.359-5.57-18.359-5.57l-13.82 0.413c-2.344-11.48-20.565-1.51-7.019-34.443-3.507-0.619-7.426-1.65-11.345 1.238-3.92 2.887-15.058 9.075-21.659 2.887s4.331-15.058 4.538-15.264c0.206-0.206 14.645-7.632 16.708-12.582-0.206-3.714-4.744-6.601-0.619-14.646 4.744-7.632 33.826-14.852 47.036-17.327 6.394-2.8878 9.282-8.4572 9.282-8.4572l1.444 5.3631s29.291-8.6635 30.735-12.789 0.619 3.7129 0.619 3.7129c11.551-1.0314 26.196-10.932 28.259-6.3945 9.695-1.8564 28.26-10.107 28.26-10.107s6.394-0.20618 1.856 6.8071c2.888 4.538-0.825 8.4572-1.031 8.4572-0.207 0 1.237 4.538-2.476 7.0133 1.239 3.9192-2.269 7.0133-2.269 7.0133s1.651 4.7443-4.95 7.2196c0.619 4.1255-3.713 4.9506-3.713 4.9506s0.619 4.3318-2.269 6.1882c0 3.3004-3.3 4.9506-3.3 4.9506s2.062 1.2376-0.826 3.3004c-2.887 2.0627-32.797 20.421-32.797 20.215 0-0.2062 21.865 3.9192 23.309 4.7443s17.946 11.758 17.946 11.758l-16.709 20.627s-18.564-2.062-19.389-1.031 3.919 1.444 4.95 3.094c1.032 1.65 2.682 5.57 5.982 5.157 3.301-0.413-6.188 5.982-12.376 6.601 0 2.269 7.838 2.475 9.901 0.619 2.063-1.857-4.951 5.363-5.776 6.394s9.283-1.444 9.283-1.444-1.651 6.807-10.52 8.87c3.506 5.776 2.062 9.489 1.856 9.489s-5.776-5.776-11.139-4.745c1.444 5.57 5.776 10.726 7.014 11.552 1.237 0.825-9.695 0.618-11.139-2.476s-2.682 7.426 1.237 10.727c-4.537 0.206-8.457-2.476-8.457-2.476s-2.681 6.188-0.825 9.283c1.857 3.094-6.394-6.189-6.394-6.189l-15.677 6.601-3.507-5.982z" fill-rule="evenodd" stroke-width="1.25" fill="#9c3900"/>
<path id="path1173" d="m10.652 161.79c0.3674 0 22.774-0.368 33.06-6.245 5.1426 8.081 12.122 13.591 12.122 13.591l3.306-11.754s8.0812 0.367 8.8159 2.204c-1.102 2.203-1.4693 5.142-1.4693 5.142s5.5099 0.368 5.8772 1.102c0.3673 0.735-1.4693 6.979-1.4693 6.979l23.509 5.51s1.8366-9.183 3.6732-8.081c1.8367 1.102 9.9182 12.489 21.305 13.224s12.122-9.551 12.122-9.551l2.571 1.47s4.775-10.285 5.51-10.285 1.837 1.469 8.081 1.469c1.837 2.204 2.572 7.346 2.572 7.346s-6.98 6.98-4.776 12.49 2.572 4.04 2.572 4.04l50.691 12.122s2.572 4.041-1.836 6.245c0 0.367-51.059-11.755-51.059-11.755s-4.776 5.51-8.449 4.408-1.102 2.204-1.102 2.204l55.099 4.408s4.041 5.143 1.102 6.612c-3.673 0.367-59.507-3.673-59.507-3.673s-3.306 6.979-6.979 1.102c-2.571 4.04-5.51-1.102-5.51-1.102s-4.775 3.673-5.51-0.368c-4.041 2.939-6.612-1.836-6.612-1.836l-23.509-1.47-1.4693 2.204s4.0406 1.102-2.204 3.674c-6.2446 2.571 37.467 1.469 38.569 1.836 1.102 0.368-2.938 3.674-2.938 3.674s22.407 1.469 26.447-3.306c4.041-4.776-1.469 6.244-1.469 6.244s17.632-0.734 17.632-1.469-0.368 5.51-12.489 4.775c7.346 4.776 16.529 7.714 16.529 7.714s-9.183 2.204-19.835-0.367c1.836 4.775 9.918 9.183 9.918 9.183s-5.878 5.143-19.102-7.347c3.674 6.612 0.735 9.184 0.368 8.449-0.368-0.735-6.612-9.918-21.305-13.224 9.183 5.877 5.142 8.449 5.142 8.449s-4.775-8.449-12.489 0c-2.939-7.714-14.326-12.122-28.284-12.857-4.4079-5.142-6.9793-3.673-17.264-6.612-5.8772-6.611-14.326-13.958-14.326-13.958s0.3673-9.918 10.285-8.816c1.102 3.306 1.102 2.204 1.102 2.204s11.02-4.041 14.326 1.469c4.7752-8.449 11.387-1.263 12.489 1.675 3.1647 0.464 19.101 0.896 19.101 0.896s-1.837-3.306-0.735-2.938c1.102 0.367 9.918-3.306 9.551-4.408-0.368-1.102-0.735-4.775 0.734-4.408 1.47 0.367-12.489-1.837-20.203 4.041-2.5713-2.572-0.7346-9.551-0.7346-9.551l-22.774-4.775-1.102 5.877s-6.6119 1.102-6.2446-0.367c0.3673-1.47-1.4693 5.142-1.4693 5.142s-8.8159-2.204-8.8159-2.571 2.5713-13.224 2.5713-12.857c0 0.368-7.3466 0.735-17.632 8.449-2.9386-9.183-26.08-21.305-26.08-21.672z" fill-rule="evenodd" stroke-width="1pt" fill="#ffc221"/>
<path id="path1174" d="m66.487 165.1-4.7753 21.305" stroke-width="1pt" fill="none"/>
<path id="path1175" d="m70.894 173.18-1.4693 6.979" stroke-width="1pt" fill="none"/>
<path id="path1176" d="m94.404 178.69-2.204 6.612" stroke-width="1pt" fill="none"/>
<path id="path1177" d="m135.18 223.5c-0.367 0-11.754 1.469-13.224 1.102-1.469-0.367 17.999 5.877 17.999 8.448" stroke-width="1pt" fill="none"/>
<path id="path1179" d="m114.61 226.08s-11.388-7.346-13.224-6.612c-1.8368 0.735 11.387-0.367 12.489-1.469" stroke-width="1pt" fill="none"/>
<path id="path1180" d="m91.098 217.63s-11.754 0.367-12.856-0.735 11.387 8.081 13.591 7.347" stroke-width="1pt" fill="none"/>
<path id="path1181" d="m68.323 212.48c-0.3673 0-8.0813-2.938-11.387-3.674 2.9386 2.939 5.1426 6.98 12.489 8.449" stroke-width="1pt" fill="none"/>
<path id="path1182" d="m71.262 207.71c-0.3673-0.735-14.693-5.143-14.693-7.347 3.306 1.102 8.0812 2.571 12.489 1.469" stroke-width="1pt" fill="none"/>
<path id="path1183" d="m147.3 190.81-1.469 6.611" stroke-width="1pt" fill="none"/>
<path id="path1184" d="m39.304 131.67s-15.428 13.223 0 20.937c0.7346-5.143 1.8367-5.877 1.8367-5.877s12.856 4.775 20.57-6.612c-3.306-4.775-9.1832-2.938-9.1832-2.938s-12.122-0.001-13.224-5.51z" fill-rule="evenodd" stroke-width="1pt" fill="#ffc221"/>
<path id="path1185" d="m52.161 137.55-10.652 9.183" stroke-width="1pt" fill="none"/>
<path id="path1186" d="m84.969 201.33s2.4554 2.707 0.2514 6.013" stroke-width="1pt" fill="none"/>
<path id="path1187" d="m136.65 204.04-4.04 0.368" stroke-width="1pt" fill="none"/>
<path id="path1188" d="m103.59 201.83 7.346 1.102" stroke-width="1pt" fill="none"/>
<path id="path1189" d="m123.35 182.94s0.206 7.426-5.982 7.22c-6.188-0.207-4.126 0.206-4.126 0.206" stroke-width="1pt" fill="none"/>
<path id="path1190" d="m128.1 181.7s2.475 0.825 1.857 2.682c-0.619 1.856 0.618 7.219-6.601 12.376-7.633 1.65-6.807-6.394-6.807-6.394" stroke-width="1pt" fill="none"/>
<path id="path1191" d="m130.78 183.97s4.538-2.681 5.157 1.651c0.618 4.331-3.713 12.376-6.807 13.614-3.095 1.237-6.601-0.207-6.189-2.269" stroke-width="1pt" fill="none"/>
<path id="path1192" d="m136.35 185.83s4.126-3.301 5.363 1.031c1.238 4.332-3.3 14.027-5.157 14.233" stroke-width="1pt" fill="none"/>
<path id="path1193" d="m142.12 186.86s2.063-1.031 3.506 0.206" stroke-width="1pt" fill="none"/>
<path id="path1194" d="m135.52 201.71c-0.825 0.206-4.332 0.412-5.569-2.269" stroke-width="1pt" fill="none"/>
<path id="path1195" d="m116.96 194.49c-0.206 0-4.331 0.207-4.331 0.207" stroke-width="1pt" fill="none"/>
<path id="path1196" d="m132.84 210.79-0.412-6.807-1.65-2.269-2.888 2.888s-0.413 6.807-1.65 7.426" stroke-width="1pt" fill="none"/>
<path id="path1197" d="m127.89 204.39c-0.206-0.412-2.269-4.331-2.269-4.331l-3.507 4.331s-0.412 6.189-1.65 6.808" stroke-width="1pt" fill="none"/>
<path id="path1198" d="m122.11 204.18c0-0.206-1.444-4.125-1.444-4.125s-4.125 2.269-4.538 3.919c-0.412 1.65-0.619 6.188-1.65 6.601" stroke-width="1pt" fill="none"/>
<path id="path1199" d="m116.13 203.15s0.413-3.713-0.825-3.713c-1.237 0-6.807 5.157-7.013 9.695" stroke-width="1pt" fill="none"/>
<path id="path1200" stroke-linejoin="round" d="m39.811 131.78s2.0627-2.063 2.6816-4.538c0.6188-2.475-0.8251-5.157 1.6502-7.426 2.4752-2.269 35.066-16.089 37.748-18.771 2.6816-2.6814 7.6321-8.4571 8.251-9.6947 0.6188-1.2377 2.4753 6.1882-3.0941 9.4887 5.9819-1.6506 9.9011-3.5068 12.376-2.6817-2.4757 3.5067-9.076 9.2827-12.17 9.2827 7.2196-2.682 13.82-4.951 15.677-3.507 1.856 1.444-8.87 8.664-13.202 9.076 7.2196-1.856 16.915-4.744 18.152-1.65-3.919 1.238-2.682 2.268-10.726 6.807-1.0313 0.826-6.1882 1.031-6.1882 1.031 6.1882-0.619 14.645-3.094 15.47 1.444-4.95 1.856-6.8066 4.332-10.932 5.363-4.1255 1.032-13.614 2.888-19.39 5.157-5.7756 2.269-14.233 8.87-14.233 8.87s-18.358 0.619-18.358 0.412c0-0.206-3.5066-8.457-3.7129-8.663z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path1201" d="m48.474 130.34s0.2063-4.125 2.0627-5.569c1.8565-1.444 11.139-4.951 13.202-8.045 2.0627-3.094-3.0941 5.363-2.269 7.632" stroke-width="1pt" fill="none"/>
<path id="path1202" d="m52.187 124.15s4.5381 1.651 3.5067 5.157" stroke-width="1pt" fill="none"/>
<path id="path1203" d="m57.344 126.01c0 2.1645-1.7547 3.9192-3.9192 3.9192s-3.9192-1.7547-3.9192-3.9192 1.7547-3.9192 3.9192-3.9192 3.9192 1.7547 3.9192 3.9192z" transform="matrix(.86842 0 0 .86842 7.7514 17.095)" stroke-width="1pt" fill="none"/>
<path id="path1205" d="m197.2 119.2 35.685 6.807s3.92-4.538 1.857-7.013c5.363-1.237 3.919-8.251 3.919-8.251s6.188-2.681 1.031-8.87c3.508-3.5065-0.825-6.188-0.825-6.188s1.444-6.1882-3.094-6.807c1.238-4.9505-7.838-6.6008-7.838-6.6008s-18.771 5.1569-31.973 5.5694c4.332 4.3318-1.65 7.0133-1.65 7.0133s3.507 2.4753 2.475 4.538c-1.031 2.0631 0.619 4.3321-3.919 5.7761 5.982 2.682-0.619 7.219-0.619 7.219s6.601 4.538 4.951 6.807z" fill-rule="evenodd" stroke-width="1pt" fill="#fff"/>
<path id="path1206" d="m193.69 111.57s31.56 3.713 33.004 3.713 7.013 1.857 8.045 3.713" stroke-width="1pt" fill="none"/>
<path id="path1207" d="m195.34 109.71 43.936 1.031" stroke-width="1pt" fill="none"/>
<path id="path1208" d="m195.55 108.68s41.667-2.475 44.555-6.807" stroke-width="1pt" fill="none"/>
<path id="path1209" d="m196.78 99.604s41.874-4.538 42.287-3.9192" stroke-width="1pt" fill="none"/>
<path id="path1210" d="m195.34 94.447s40.636-6.3945 41.048-5.3631" stroke-width="1pt" fill="none"/>
<path id="path1212" d="m79.416 68.251s12.789 14.027 11.551 23.515" stroke-width="1pt" fill="none"/>
<path id="path1213" d="m90.142 84.34s4.1254 5.9819 5.7756 6.6007 16.09 1.4439 16.915 7.6321c0.825 3.9192-3.094 2.6812-2.475 5.5692 1.031 3.713 10.726 8.457 21.246 2.888" stroke-width="1pt" fill="none"/>
<path id="path1214" d="m121.91 109.92s8.663 12.789 21.452-1.031" stroke-width="1pt" fill="none"/>
<path id="path1215" d="m136.76 114.46s10.52 5.569 19.183-8.87" stroke-width="1pt" fill="none"/>
<path id="path1216" d="m144.8 115.69s5.157 4.332 15.884-1.443" stroke-width="1pt" fill="none"/>
<path id="path1217" d="m175.54 108.47s15.883 3.3 16.915 4.332" stroke-width="1pt" fill="none"/>
<path id="path1218" d="m181.52 104.97c0.206 0 11.139 0.413 11.139 0.413" stroke-width="1pt" fill="none"/>
<path id="path1219" d="m174.71 98.779s18.977-1.2376 21.453 2.6819" stroke-width="1pt" fill="none"/>
<path id="path1220" d="m166.46 92.797s26.61 1.0313 27.847 2.4753" stroke-width="1pt" fill="none"/>
<path id="path1221" d="m172.44 120.02s4.538-1.237 5.157-0.618" stroke-width="1pt" fill="none"/>
<path id="path1222" d="m162.13 131.16s5.982 5.157 13.615 2.888" stroke-width="1pt" fill="none"/>
<path id="path1223" d="m165.43 139.83s6.807 3.094 14.852 1.237" stroke-width="1pt" fill="none"/>
<path id="path1224" d="m167.7 144.98s6.807 4.538 11.345 3.712" stroke-width="1pt" fill="none"/>
<path id="path1225" d="m164.61 147.67s4.744 3.507 4.95 5.363" stroke-width="1pt" fill="none"/>
<path id="path1226" d="m158.01 151.79s1.444 7.425 6.601 10.107" stroke-width="1pt" fill="none"/>
<path id="path1227" d="m154.5 155.09s-2.269 9.695 3.507 15.677" stroke-width="1pt" fill="none"/>
<path id="path1228" d="m148.52 162.72c0 0.206-0.412 4.538-0.206 4.951" stroke-width="1pt" fill="none"/>
<path id="path1229" d="m111.39 125.18 11.139-0.619s4.125-1.65 1.237-4.331" stroke-width="1pt" fill="none"/>
<path id="path1230" d="m125.21 122.71c0.207 0 10.52 0.825 13.202 3.919 2.681 3.094 5.982 9.282 7.838 10.314 1.857 1.031 2.269-0.413 2.269-0.413" stroke-width="1pt" fill="none"/>
<path id="path1231" d="m143.98 134.88s-5.569 9.489-1.237 12.377" stroke-width="1pt" fill="none"/>
<path id="path1232" d="m140.88 145.4s-4.95 6.601-1.031 9.901" stroke-width="1pt" fill="none"/>
<path id="path1233" d="m138.82 154.47s-3.919 6.395 0.826 10.726" stroke-width="1pt" fill="none"/>
<path id="path1235" d="m137.09 137.51c-0.266 0.266-4.791 3.46-6.388 2.662" stroke-width="1pt" fill="none"/>
<path id="path1236" d="m132.3 147.62s1.863 1.863 3.46 1.597" stroke-width="1pt" fill="none"/>
<path id="path1237" d="m132.52 157.3 2.973 2.039" stroke-width="1pt" fill="none"/>
<path id="path1238" d="m132.92 164.71 2.572 1.552" stroke-width="1pt" fill="none"/>
<path id="path1246" d="m86.33 63.544s5.4228 2.8199 9.761 0c4.3387-2.8198 25.162-13.448 30.585-15.184 5.422-1.7353 8.459-11.713 9.544-16.051" stroke-width="1pt" fill="none"/>
<path id="path1247" d="m132.1 44.022 30.368-8.8933s4.989-4.1213 5.206-11.713" stroke-width="1pt" fill="none"/>
<path id="path1248" d="m165.5 31.658s30.367-3.0367 30.367-14.316" stroke-width="1pt" fill="none"/>
<path id="path1249" d="m191.1 25.15s31.886-8.6764 34.923-11.93" stroke-width="1pt" fill="none"/>
<path id="path1250" d="m102.16 70.485s19.305-9.9779 22.342-11.062c3.036-1.0846 9.977-9.761-0.434-9.761" stroke-width="1pt" fill="none"/>
<path id="path1251" d="m111.49 74.389c0.217 0 15.834-10.195 21.04-11.496 2.82-3.9043 1.302-8.0256-3.47-7.158" stroke-width="1pt" fill="none"/>
<path id="path1252" d="m133.83 60.29c0.434-0.2169 8.46-0.4338 5.64 5.8566-4.12 3.0367-21.908 11.93-21.908 11.93" stroke-width="1pt" fill="none"/>
<path id="path1253" d="m129.71 53.566 33.84-11.28s2.82-5.8566-1.301-6.7242" stroke-width="1pt" fill="none"/>
<path id="path1254" d="m190.45 25.367c0 0.2169 4.339 2.6029 1.736 6.5073-4.772 2.8199-27.331 8.2426-27.331 8.2426" stroke-width="1pt" fill="none"/>
<path id="path1255" d="m224.72 21.897-31.886 8.8934" stroke-width="1pt" fill="none"/>
<path id="path1256" d="m222.33 29.055-27.764 8.4595" stroke-width="1pt" fill="none"/>
<path id="path1257" d="m219.95 35.996-24.511 7.375" stroke-width="1pt" fill="none"/>
<path id="path1258" d="m215.39 42.937c-0.651 0-18.22 5.4228-18.22 5.4228" stroke-width="1pt" fill="none"/>
<path id="path1259" d="m211.49 48.36-11.28 4.5551" stroke-width="1pt" fill="none"/>
<path id="path1260" d="m208.67 54.433c-0.434 0-9.761 4.1213-9.761 4.1213" stroke-width="1pt" fill="none"/>
<path id="path1261" d="m205.85 59.422-8.676 4.1212" stroke-width="1pt" fill="none"/>
<path id="path1262" d="m190.88 68.75s1.085 0.4338 0.868 1.7353" stroke-width="1pt" fill="none"/>
<path id="path1263" d="m168.97 80.68s3.688 1.3014 0.217 4.772c-1.735 2.386-6.724 1.7354-9.761 6.0735" stroke-width="1pt" fill="none"/>
<path id="path1264" d="m192.62 32.092s4.556 1.0845 1.085 6.9411c-9.111 3.4706-27.548 9.1102-27.548 9.1102s-0.867 1.5184-3.253 2.8199c-2.386 1.3014-28.632 8.6764-28.632 8.6764" stroke-width="1pt" fill="none"/>
<path id="path1265" d="m194.14 38.816s4.989 2.1691 0 5.8566c-5.64 3.2536-25.379 9.3271-25.379 9.3271s-0.217 1.7352-1.084 2.386c-0.868 0.6507-26.897 9.3272-26.897 9.3272" stroke-width="1pt" fill="none"/>
<path id="path1266" d="m195.44 44.672s5.206 1.5184 0.651 5.8565c-5.423 3.2537-22.776 9.1103-22.776 9.1103s-1.735 2.169-4.555 3.0367c-2.82 0.8676-20.823 8.2426-20.823 8.2426" stroke-width="1pt" fill="none"/>
<path id="path1267" d="m196.74 50.529c1.519 0.6507 5.64 1.3015 0.651 5.2059-5.856 2.6029-20.172 8.2426-20.172 8.2426l-1.302 2.386-22.775 9.7609" stroke-width="1pt" fill="none"/>
<path id="path1268" d="m198.04 56.386s2.169 2.603-2.603 5.6397c-5.206 2.8198-16.485 7.158-16.485 7.158" stroke-width="1pt" fill="none"/>
<path id="path1269" d="m195.44 62.459s2.386 1.5184-0.65 3.6875c-3.471 1.7353-17.136 8.8933-17.136 8.8933l-8.894 5.8566" stroke-width="1pt" fill="none"/>
<path id="path1270" d="m164.2 42.503c0 0.2169 3.688 3.2537 2.386 6.7242 3.254 2.386 2.603 4.989 2.603 4.989s4.555 2.6029 3.905 6.2904c4.555 1.0846 4.338 3.6875 4.338 3.6875l-1.519 2.386s4.555-0.2169 0.651 5.6397c2.386 1.3015 1.302 2.8198 1.302 2.8198" stroke-width="1pt" fill="none"/>
<path id="path1271" d="m176.56 72.437c-0.651 0-15.834 5.6397-19.739 9.1102" stroke-width="1pt" fill="none"/>
<path id="path1272" d="m139.91 65.713s4.555-0.2169 3.905 4.772c5.206-1.7353 4.121 3.2536 4.121 3.2536s6.073-2.386 4.989 5.2059c3.904-0.8676 3.253 3.0367 3.253 3.0367s3.471-0.2169 3.471 1.7353c2.386-2.1691 4.989-1.0845 4.989-1.0845s1.735-2.3861 4.121-1.7353" stroke-width="1pt" fill="none"/>
<path id="path1273" d="m144.03 70.268c0 0.434-20.39 11.713-20.39 11.713" stroke-width="1pt" fill="none"/>
<path id="path1274" d="m147.93 73.955-15.401 9.544" stroke-width="1pt" fill="none"/>
<path id="path1275" d="m153.14 78.727c0 0.2169-13.449 8.0257-13.449 8.0257" stroke-width="1pt" fill="none"/>
<path id="path1276" d="m156.18 81.764s-9.544 7.8088-11.713 7.375" stroke-width="1pt" fill="none"/>
<path id="path1277" d="m159.43 84.15s-5.423 4.1214-9.978 6.0735" stroke-width="1pt" fill="none"/>
<path id="path1278" d="m165.07 82.415s1.735 2.1691-9.11 7.8087" stroke-width="1pt" fill="none"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -1,5 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600">
<rect fill="#ed2939" width="900" height="600"/>
<rect fill="#fff" y="200" width="900" height="200"/>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg378" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1" y="0" x="0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata8">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag" fill-rule="evenodd" transform="scale(1.25 .9375)">
<rect id="rect149" transform="scale(-1)" height="512" width="512" y="-512" x="-512" fill="#fff"/>
<rect id="rect148" transform="scale(-1)" height="170.67" width="512" y="-512" x="-512" fill="#df0000"/>
<rect id="rect585" transform="scale(-1)" height="170.67" width="512" y="-170.8" x="-512" fill="#df0000"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 216 B

After

Width:  |  Height:  |  Size: 966 B

View File

@@ -1 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1280" height="640" viewBox="0 0 30240 15120"><defs id="defs6"><polygon points="0,-9 1.735535,-3.6038755 7.0364833,-5.6114082 3.8997116,-0.89008374 8.7743512,2.0026884 3.1273259,2.4939592 3.9049537,8.1087198 0,4 -3.9049537,8.1087198 -3.1273259,2.4939592 -8.7743512,2.0026884 -3.8997116,-0.89008374 -7.0364833,-5.6114082 -1.735535,-3.6038755 0,-9 " id="Star7"/><polygon points="0,-9 2.351141,-3.236068 8.5595086,-2.7811529 3.8042261,1.236068 5.2900673,7.2811529 0,4 -5.2900673,7.2811529 -3.8042261,1.236068 -8.5595086,-2.7811529 -2.351141,-3.236068 0,-9 " id="Star5"/></defs><path d="M 0,0 L 30240,0 L 30240,15120 L 0,15120 L 0,0 z" style="fill:#00008b"/><use transform="matrix(252,0,0,252,7560,11340)" id="Commonwealth_Star" style="fill:#fff" xlink:href="#Star7"/><use transform="matrix(120,0,0,120,22680,12600)" id="Star_Alpha_Crucis" style="fill:#fff" xlink:href="#Star7"/><use transform="matrix(120,0,0,120,18900,6615)" id="Star_Beta_Crucis" style="fill:#fff" xlink:href="#Star7"/><use transform="matrix(120,0,0,120,22680,2520)" id="Star_Gamma_Crucis" style="fill:#fff" xlink:href="#Star7"/><use transform="matrix(120,0,0,120,26040,5607)" id="Star_Delta_Crucis" style="fill:#fff" xlink:href="#Star7"/><use transform="matrix(70,0,0,70,24192,8190)" id="Star_Epsilon_Crucis" style="fill:#fff" xlink:href="#Star5"/><path d="M 6300,0 L 8820,0 L 8820,2520 L 15120,2520 L 15120,5040 L 8820,5040 L 8820,7560 L 6300,7560 L 6300,5040 L 0,5040 L 0,2520 L 6300,2520 L 6300,0 z" id="White_Cross" style="fill:#fff"/><path d="M 0,0 L 1690.4674,0 L 15120,6714.7663 L 15120,7560 L 13429.533,7560 L 0,845.2337 L 0,0 z" id="White_Diagonal" style="fill:#fff"/><use transform="matrix(-1,0,0,1,15120,0)" id="White_Diagonal_Flipped" style="fill:#fff" xlink:href="#White_Diagonal"/><path d="M 6804,0 L 8316,0 L 8316,3024 L 15120,3024 L 15120,4536 L 8316,4536 L 8316,7560 L 6804,7560 L 6804,4536 L 0,4536 L 0,3024 L 6804,3024 L 6804,0 z" id="Red_Cross" style="fill:red"/><path d="M 0,0 L 5040,2520 L 3913.0217,2520 L 0,563.48913 L 0,0 z M 15120,0 L 13993.022,0 L 8953.0217,2520 L 10080,2520 L 15120,0 z" id="Red_Diagonals" style="fill:red"/><use transform="matrix(-1,0,0,-1,15120,7560)" id="Red_Diagonals_Rotated" style="fill:red" xlink:href="#Red_Diagonals"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
<svg id="svg1" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="480" width="640" version="1" y="0" x="0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata3003">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="flag" stroke-width="1pt">
<rect id="rect124" height="480" width="640" y="0" x="0" fill="#006"/>
<g id="g584" transform="scale(5.7614 8.3333)">
<path id="path146" d="m0 0v3.3541l53.292 26.646h6.708v-3.354l-53.292-26.646h-6.708zm60 0v3.354l-53.292 26.646h-6.708v-3.354l53.292-26.646h6.708z" fill="#fff"/>
<path id="path136" d="m25 0v30h10v-30h-10zm-25 10v10h60v-10h-60z" fill="#fff"/>
<path id="path141" d="m0 12v6h60v-6h-60zm27-12v30h6v-30h-6z" fill="#c00"/>
<path id="path150" d="m0 30 20-10h4.472l-20 10h-4.472zm0-30 20 10h-4.472l-15.528-7.7639v-2.2361zm35.528 10 20-10h4.472l-20 10h-4.472zm24.472 20-20-10h4.472l15.528 7.764v2.236z" fill="#c00"/>
</g>
<g id="g3045" fill-rule="evenodd" fill="#fff" transform="matrix(1.0075 0 0 1.0075 1.3538 -37.74)">
<polygon id="polygon589" transform="matrix(7.6727 0 0 7.6727 -1.3148 66.42)" points="38.774 47.003 33.127 47.494 33.905 53.109 30 49 26.095 53.109 26.873 47.494 21.226 47.003 26.1 44.11 22.964 39.389 28.264 41.396 30 36 30 36 31.736 41.396 37.036 39.389 33.9 44.11"/>
<g id="g596" transform="matrix(6.9999 0 0 6.9999 -135.43 119.74)">
<polygon id="polygon590" points="88.143 49.576 86.649 47.328 89.174 48.284 90 45.714 90 45.714 90.826 48.284 93.351 47.328 91.857 49.576 94.178 50.954 91.489 51.188 91.86 53.861 90 51.905 88.14 53.861 88.511 51.188 85.822 50.954"/>
<polygon id="polygon592" points="88.143 9.5762 86.649 7.3279 89.174 8.2839 90 5.7143 90 5.7143 90.826 8.2839 93.351 7.3279 91.857 9.5762 94.178 10.954 91.489 11.188 91.86 13.861 90 11.905 88.14 13.861 88.511 11.188 85.822 10.954"/>
<polygon id="polygon593" points="73.143 25.826 71.649 23.578 74.174 24.534 75 21.964 75 21.964 75.826 24.534 78.351 23.578 76.857 25.826 79.178 27.204 76.489 27.438 76.86 30.111 75 28.155 73.14 30.111 73.511 27.438 70.822 27.204"/>
<polygon id="polygon594" points="101.48 21.826 99.983 19.578 102.51 20.534 103.33 17.964 103.33 17.964 104.16 20.534 106.68 19.578 105.19 21.826 107.51 23.204 104.82 23.438 105.19 26.111 103.33 24.155 101.47 26.111 101.84 23.438 99.155 23.204"/>
<polygon id="polygon595" points="96 33.611 94.53 34.522 94.943 32.843 93.622 31.728 95.347 31.601 96 30 96 30 96.653 31.601 98.378 31.728 97.057 32.843 97.47 34.522"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Some files were not shown because too many files have changed in this diff Show More