862 Commits

Author SHA1 Message Date
xawotihs
00e076fca4 Fixed compilation with SDL/mingw 2025-05-11 17:08:37 +02:00
xawotihs
0023c4a086 Fixed compilation with latest mingw64 2025-04-25 18:48:02 +02:00
xawotihs
7c9fd90903 Merge branch 'master' into cmake 2025-04-22 20:37:50 +02:00
xawotihs
d95e9e1155 Fix compilation with latest cmake 2025-04-11 21:58:54 +02:00
Eduardo MG
b21964dc46 Strixhaven variants, fix critical bug
Palladia-Mors, the Ruiner
Vanish into Memory
Dakmor Plague and Inferno. all(player,creature) not supported and crashes the game
color=colorless is redundant
Strixhaven: School of Mages (STX) (VARIANTS)
2025-04-10 18:53:41 -06:00
Eduardo MG
6904d6ffd3 Bug fixes on zones and correcting misspells
Summoner's Bond
Regent's Authority
Mind Burst
Thassa's Oracle
2025-04-08 22:09:47 -06:00
Eduardo MG
786a252cf5 Mana symbols to uppercase, bug fixes
Lands that enter tapped unless a player has 13 or less life
Courier Bat
Demon of Death's Gate
Caldaia Guardian
2025-04-04 22:24:18 -06:00
Eduardo MG
863c3f07bc Bad card line 2025-03-31 13:33:38 -06:00
Eduardo MG
e0867dd737 CM2 update, notATarget on clones
Clones shouldn't target.
Cosmotronic Wave
Leyline of Hope
Regal Bloodlord
Protean Raider
Impetuous Devils
Camera Launcher

New cards in previous commit:
Abyssal Harvester
Boneyard Desecrator
Celestial Armor
Crystal Barricade
Dazzling Denial
Felling Blow
Fleeting Flight
Geralf, the Fleshwright
Hare Apparent
Infernal Vessel
Inspiring Paladin
Kaito, Cunning Infiltrator
Kellan, Planar Trailblazer
Kiora, the Rising Tide
Loot, Exuberant Explorer
Owen Grady, Raptor Trainer
Perforating Artist
Permission Denied
Ravenous Amulet
Reality Spasm
Savage Order
Skyknight Squire
Slick Sequence
Spinner of Souls
Spitting Dilophosaurus
Squad Rallier
Sun-Blessed Healer
Valkyrie's Call
2025-03-31 13:13:53 -06:00
Eduardo MG
671b3bae61 Improved riot, INR, MH3, macros. Bug fixes. New cards
Windbrisk Heights
Orchard Strider
Shefet Monitor
Merfolk Sovereign
Alibou, Ancient Witness
Flesh Allergy
Regal Sliver
name=Pilot token, condition to check if there's a vehicle in your battlefield
Painful Quandary needed a condition to check if the affected player has at least one card in hand
Serpentine Curve shouldn't count itself. Serpentine Curve itself is not yet in your graveyard when you determine the value of X.
Rowen was drawing with nonbasics
Thopter Spy Network
Teferi, Temporal Archmage -10 ability, create an emblem
Exert Influence
Dawnglade Regent effect persisted after dying
Molten Echoes
Undergrowth
Haze of Pollen
Oketra's Avenger
Heliod's Intervention
Aura Barbs
Gravestorm
Inspired Sphinx
Retrofitted Transmogrant
Echoing Assault
Citywide Bust
2025-03-28 17:12:41 -06:00
Eduardo MG
02a4726cbf Merge pull request #1110 from patrickbabb/master
Updates to target arm64-v8a Android devices
2025-03-21 22:08:19 -06:00
Patrick Babb
91d588c670 Update spinlock_gcc_arm.hpp
Added logic to use LSE as a primary instead of Swap.
2025-03-18 22:01:55 -05:00
Patrick Babb
4df4422d93 Update Application.mk
Updated ABI target to arm64-v8a.
Added CFLAG for arm8.1-a.
Added CPPFLAG for LSE
2025-03-18 21:58:59 -05:00
Patrick Babb
0b3b33f727 Update SDL_spinlock.c 2025-03-18 21:55:59 -05:00
Eduardo MG
5cdf952623 Stormsurge Kraken fix
It allowed to draw to cards for each creature blocking it
2025-03-12 18:15:18 -06:00
Eduardo MG
9a55e03790 Cards from Aetherdrift and fix to Crested Sunmare
Fixed Crested Sunmare token creation condition.

Add cards:
Alacrian Armory
Broadside Barrage
Broodheart Engine
Chitin Gravestalker
Coalstoke Gearhulk
Collision Course
Haunt the Network
Hellish Sideswipe
Intimidation Tactics
Kolodin, Triumph Caster
Mindspring Merfolk
Ooze Patrol
Spectral Interference
Stock Up
Voyager Glidecar
Wreck Remover
2025-03-10 19:16:04 -06:00
Eduardo MG
4b52e8cf6c Incrementing the build numbers. bug fixes 2025-03-07 18:51:33 -06:00
Eduardo MG
f7eaf5072e New cards mostly from DFT and J25
Aatchik, Emerald Radian
Accursed Duneyard
Adaptive Omnitool
Aetherjacket
Agonasaur Rex
Air Response Unit
Basri, Tomorrow's Champion
Beastrider Vanguard
Bestow Greatness
Bleachbone Verge
Boosted Sloop
Bounce Off
Brigone, Soldier of Meletis
Broadcast Rambler
Burner Rocket
Caelorna, Coral Tyrant
Camera Launcher
Caradora, Heart of Alacria
Chandra, Spark Hunter
Cleon, Merry Champion
Cloudspire Skycycle
Count on Luck
Crash and Burn
Cynette, Jelly Drover
Daring Mechanic
Dawnwing Marshal
Draconautics Engineer
Dropkick Bomber
Eidolon of Astral Winds
Engine Rat
Faithful Pikemaster
Firespitter Whelp
Fuel the Flames
Fumulus, the Infestation
Gallant Strike
Gastal Blockbuster
General Kreat, the Boltbringer
Generous Pup
Gilded Scuttler
Go Forth
Goblin Surprise
Greenbelt Guardian
Grim Bauble
Guidelight Synergist
Haunted Hellride
Hazard of the Dunes
Hearts on Fire
Hinterland Sanctifier
Howler's Heavy
Hungry Megasloth
Jibbirik Omnivore
Kalakscion, Hunger Tyrant
Keen Buccaneer
Lightshield Parry
Locust Spray
Loot, the Pathfinder
Lotusguard Disciple
Magmakin Artillerist
Marauding Mako
March of the World Ooze
Marketback Walker
Maximum Overdrive
Memory Guardian
Migrating Ketradon
Migrating Ketradon
Molt Tender
Mu Yanling, Wind Rider
Nazar, the Velvet Fang
Night Market
Nimble Thopterist
Oviya, Automech Artisan
Pacesetter Paragon
Pactdoll Terror
Pedal to the Metal
Phantasmal Shieldback
Plow Through
Pothole Mole
Priest of the Crossing
Prowcatcher Specialist
Psemilla, Meletian Poet
Regal Imperiosaur
Rhet-Tomb Mystic
Riptide Gearhulk
Risky Shortcut
Riverpyre Verge
Rocketeer Boostbuggy
Sabotage Strategist
Sandstorm Crasher
Saurian Symbiote
Scholar of Combustion
Scourge of the Undercity
Scrap Compactor
Scrounging Skyray
Shardless Outlander
Shefet Archfiend
Shroofus Sproutsire
Silken Strength
Skycrash
Skystreak Engineer
Spectacular Pileup
Spin Out
Spotcycle Scouter
Stall Out
Stampeding Scurryfoot
Starlight Snare
Starnheim Memento
Sunbillow Verge
Sundial, Dawn Tyrant
Sutina, Speaker of the Tajuru
Syphon Fuel
Temmet, Naktamun's Will
Terrian, World Tyrant
Thunderhead Gunner
Thurid, Mare of Destiny
Ticket Tortoise
Trade the Helm
Transit Mage
Trip Up
Tune Up
Tyrox, Saurid Tyrant
Unstoppable Plan
Veteran Beastrider
Voyage Home
Voyager Quickwelder
Wastewood Verge
Waxen Shapethief
Wickerfolk Indomitable
Willowrush Verge
Woodland Liege
Wreckage Wickerfolk
Wretched Doll
Wriggling Grub
2025-03-07 13:07:00 -06:00
Eduardo MG
8df70d43e1 Foundations Jumpstart (J25), Innistrad Remastered (INR), Aetherdrift (DFT), Aetherdrift Commander (DRC) _cards.dat
Foundations Jumpstart (J25)
Innistrad Remastered (INR)
Aetherdrift (DFT)
Aetherdrift Commander (DRC)
2025-03-07 13:03:52 -06:00
Eduardo MG
721f1bc269 set code Y22 has been updated to YMID
The set code Y22 has been updated to YMID, now reflecting its official name: Innistrad: Midnight Hunt. Additionally, this set now includes a multiverseid in the database, aligning it with official standards.

Bug fixes:
Astral Drift
Hulking Metamorph
Exorcise
Pain Distributor
Cleansing Wildfire
Jaya, Venerated Firemage
Great Whale
Jolting Merfolk
Sunbird's Invocation removed
Eerie Interlude
Old-Growth Dryads
Enigma Sphinx
All "God-Eternal" that return to deck
Sorin, Imperious Bloodlord
2025-03-06 19:36:12 -06:00
Eduardo MG
f698d9f96c Foundations Jumpstart (J25) _cards.dat 2025-01-27 19:38:08 -06:00
Eduardo MG
08eeeb3079 Alchemy: Innistrad 2025-01-11 12:30:28 -06:00
Eduardo MG
2851576b31 Moved Foundations planeswakers
Moved Foundations (FDN) planeswakers to it's corresponding file.
2024-12-24 13:25:53 -06:00
Eduardo MG
7d5afbad53 Foundations (FDN) cards and bug fixes
Bug fixes:
Seasoned Dungeoneer
Giggling Skitterspike
Kinetic Augur
Battle of Frost and Fire
Outlaws' Merriment
Ruthless Knave
Overlord of the Balemurk
Malamet War Scribe
Massacre Girl, Known Killer
Slip On the Ring
Eastfarthing Farmer
Shadow Prophecy
Hungry Lynx
Backup Plan - removed, is too buggy and does't do the effect correctly

Special Guests (SPG) DUSKMOURN
2024-12-24 11:10:12 -06:00
Eduardo MG
6caa79bbd4 Upload of the Foundations (FDN) _cards.dat file 2024-12-24 10:43:23 -06:00
Eduardo MG
00332a9df3 Merge pull request #1108 from BobCyril/master
Four new AI opponents
2024-12-17 17:47:24 -06:00
BobCyril
7c0c6355e1 Create deck164.txt
New 60 card AI opponent
2024-12-15 17:19:24 +00:00
BobCyril
db0498fc4d Create deck163.txt
New 60 card AI opponent
2024-12-15 17:17:31 +00:00
BobCyril
69caa05c4e Create deck162.txt
New 60-card AI opponent
2024-12-15 17:15:54 +00:00
BobCyril
636207f46d Update deck138.txt
New AI Commander deck to replace poor AI opponent
2024-12-15 17:13:42 +00:00
Eduardo MG
b34929f703 Merge pull request #1107 from BobCyril/master
New, improved and renamed AI decks
2024-12-06 13:04:11 -06:00
BobCyril
d009bf858c Update deck161.txt
Deck name updated
2024-12-05 21:03:40 +00:00
BobCyril
da77238799 Update deck160.txt
Deck name updated
2024-12-05 21:03:04 +00:00
BobCyril
77c53e1519 Update deck159.txt
Deck name updated
2024-12-05 21:02:25 +00:00
BobCyril
2491453ed0 Update deck155.txt
Deck name updated
2024-12-05 21:01:27 +00:00
BobCyril
f752bd38e7 Update deck153.txt
Deck name updated
2024-12-05 21:00:47 +00:00
BobCyril
51accdcad1 Update deck151.txt
Deck name updated
2024-12-05 21:00:03 +00:00
BobCyril
bb4466d36d Update deck141.txt
Deck name updated
2024-12-05 20:59:19 +00:00
BobCyril
6cbbb1c308 Update deck148.txt
Kor Army deck improved and swapped with Tergrid deck
2024-12-05 20:58:22 +00:00
BobCyril
015481a827 Update deck142.txt
New Lyra Commander deck to replace previous poor AI commander deck
2024-12-05 20:56:59 +00:00
BobCyril
532954f5b2 Update deck140.txt
Wipe Them Out! deck improved and swapped with Belbe deck
2024-12-05 20:55:29 +00:00
BobCyril
9cad9f6309 Update deck124.txt
Belbe Commander deck moved here
2024-12-05 20:53:38 +00:00
BobCyril
c3f8c81d96 Update deck102.txt
Tergrid Commander deck moved here
2024-12-05 20:52:18 +00:00
Eduardo MG
8021be00f9 Merge pull request #1106 from BobCyril/master
Decks 81 and 144 upgraded and swapped, deck 32 and 109 renamed
2024-11-20 19:10:43 -06:00
BobCyril
839c2c4fee Update deck109.txt
Deck109 renamed
2024-11-17 18:41:26 +00:00
BobCyril
05b3692b60 Update deck32.txt
Deck32 renamed.
2024-11-17 18:40:48 +00:00
BobCyril
e4d6d6811b Update deck81.txt
Old deck144 (Vrondiss Commander) moved here.
2024-11-17 18:38:23 +00:00
BobCyril
b9196348bb Update deck144.txt
Old deck81 (Goblin Spike) upgraded and moved here in place of Vrondiss Commander, now moved to deck81 slot.
2024-11-17 18:36:48 +00:00
Eduardo MG
cae9d41885 Merge pull request #1105 from BobCyril/master
New, Updated and Moved AI Decks
2024-11-05 10:19:07 -06:00
BobCyril
83bcefe308 Update deck156.txt
New LotR commander deck to replace previous LotR deck which was a very poor opponent
2024-11-04 19:14:04 +00:00
BobCyril
5bb508f5ec Update deck149.txt
Old deck68 (Shocking Minotaurs) upgraded and moved here to replace Tatyova Commander moved to deck46
2024-11-04 19:12:07 +00:00
BobCyril
45b7288cf8 Update deck143.txt
Old deck46 (Ashenmmor Cohort) upgraded and moved here to replace Ranar Commander deck moved to deck68
2024-11-04 19:09:56 +00:00
BobCyril
a63ebc8396 Update deck68.txt
Moving Ranar Commander deck to here
2024-11-04 19:06:14 +00:00
BobCyril
36985a6b71 Update deck46.txt
Moving Tatyova Commander deck to here.
2024-11-04 19:04:12 +00:00
Eduardo MG
6c599246f6 New cards from Duskmourn: House of Horror (DSK)
Bug fixes:
Backwoods Survivalists
Draconic Intervention
Monstrous Step
Skulking Killer

New cards:
Abandoned Campground
Abhorrent Oculus
Acrobatic Cheerleader
Altanak, the Thrice-Called
Appendage Amalgam
Arabella, Abandoned Doll
Attack-in-the-Box
Balemurk Leech
Balustrade Wurm
Baseball Bat
Bashful Beastie
Bear Trap
Bedhead Beastie
Betrayer's Bargain
Blazemire Verge
Bleeding Woods
Boilerbilges Ripper
Break Down the Door
Broodspinner
Cackling Slasher
Cautious Survivor
Clammy Prowler
Clockwork Percussionist
Commune with Evil
Cracked Skull
Cult Healer
Curator Beastie
Cynical Loner
Daggermaw Megalodon
Dashing Bloodsucker
Defiant Survivor
Deluge of Doom
Demolisher Spawn
Demonic Counsel
Disturbing Mirth
Diversion Specialist
Doomsday Excruciator
Duskmourn's Domination
Emerge from the Cocoon
Enduring Courage
Enduring Curiosity
Enduring Innocence
Enduring Tenacity
Enduring Vitality
Enter the Enigma
Entity Tracker
Erratic Apparition
Etched Cornfield
Exorcise
Fear of Being Hunted
Fear of Exposure
Fear of Failed Tests
Fear of Falling
Fear of Infinity
Fear of Isolation
Fear of Lost Teeth
Fear of Missing Out
Fear of Surveillance
Fear of the Dark
Final Vengeance
Flesh Burrower
Floodfarm Verge
Floodpits Drowner
Formless Genesis
Frantic Strength
Friendly Ghost
Friendly Teddy
Get Out
Ghostly Dancers
Giggling Skitterspike
Give In to Violence
Gleeful Arsonist
Glimmer Seeker
Glimmerburst
Glimmerlight
Gloomlake Verge
Gloomlake Verge
Grasping Longneck
Gremlin Tamer
Hand That Feeds
Hardened Escort
Haunted Screen
Hedge Shredder
Horrid Vigor
House Cartographer
Hushwood Verge
Impossible Inferno
Infernal Phantom
Innocuous Rat
Inquisitive Glimmer
Insidious Fungus
Irreverent Gremlin
Jump Scare
Kaito, Bane of Nightmares
Keys to the House
Kona, Rescue Beastie
Lakeside Shack
Leyline of Hope
Leyline of Mutation
Leyline of Transformation
Lionheart Glimmer
Live or Die
Living Phone
Malevolent Chandelier
Manifest Dread
Marina Vendrell
Marina Vendrell's Grimoire
Metamorphosis Fanatic
Midnight Mayhem
Most Valuable Slayer
Murky Sewer
Neglected Manor
Optimistic Scavenger
Overlord of the Balemurk
Overlord of the Boilerbilges
Overlord of the Floodpits
Overlord of the Hauntwoods
Overlord of the Mistmoors
Patched Plaything
Patchwork Beastie
Peculiar Lighthouse
Peer Past the Veil
Persistent Constrictor
Phenomenon Investigators
Piggy Bank
Piranha Fly
Popular Egotist
Possessed Goat
Ragged Playmate
Raucous Carnival
Razorkin Hordecaller
Razorkin Needlehead
Razortrap Gorge
Redress Fate
Resurrected Cultist
Ripchain Razorkin
Rite of the Moth
Rootwise Survivor
Sadistic Shell Game
Savior of the Small
Say Its Name
Scrabbling Skullcrab
Shardmage's Rescue
Sheltered by Ghosts
Shepherding Spirits
Shrewd Storyteller
Shroudstomper
Skullsnap Nuisance
Slavering Branchsnapper
Soaring Lightbringer
Spectral Snatcher
Spineseeker Centipede
Split Up
Splitskin Doll
Stalked Researcher
Strangled Cemetery
Suspended Sentence
The Jolly Balloon Man
The Swarmweaver
The Wandering Rescuer
Thornspire Verge
Toby, Beastie Befriender
Trapped in the Screen
Tunnel Surveyor
Turn Inside Out
Twist Reality
Twitching Doll
Tyvar, the Pummeler
Unsettling Twins
Unwanted Remake
Ursine Monstrosity
Valgavoth's Faithful
Valgavoth's Lair
Vanish from Sight
Vengeful Possession
Vicious Clown
Vile Mutilator
Violent Urge
Wary Watchdog
Wickerfolk Thresher
Wildfire Wickerfolk
Winter's Intervention
Winter, Misanthropic Guide
Withering Torment
Withering Torment
2024-10-10 18:00:20 -06:00
Eduardo MG
c84be9d674 Duskmourn: House of Horror and Duskmourn: House of Horror Commander
Duskmourn: House of Horror (DSK) and Duskmourn: House of Horror Commander (DSC) _cards.dat
2024-10-09 19:13:54 -06:00
Eduardo MG
7faeab98c2 Merge pull request #1103 from BobCyril/master
Moved AI Commander deck and added new AI Classic deck
2024-10-09 19:08:43 -06:00
BobCyril
3261b8bd10 Update deck150.txt
New AI deck to replace Ragavan Commander deck, now moved to deck34
2024-10-05 20:41:26 +01:00
BobCyril
dbe71fa81a Update deck34.txt
Moving updated Ragavan AI commander deck here to replace very poor AI deck
2024-10-05 20:38:53 +01:00
Eduardo MG
22efb82688 Merge pull request #1102 from BobCyril/master
Update deck149.txt
2024-10-02 15:17:10 -06:00
BobCyril
b09cd93f79 Update deck149.txt
Corrected problematic card interaction by replacing cards.
2024-10-01 04:55:18 +01:00
Eduardo MG
114ab84a9c Merge pull request #1101 from BobCyril/master
New AI commander deck for intermediate players
2024-09-30 18:03:10 -06:00
BobCyril
edcce09448 Update deck26.txt
New AI commander deck for intermediate players
2024-09-30 21:09:09 +01:00
BobCyril
e3e77711d5 Update deck18.txt
Moving deck26 (Kithkin) to here to replace very similar deck, and to make space for new commander deck.
2024-09-30 21:07:48 +01:00
Eduardo MG
480bc46ef4 Changes made to Alchemy Innistrad, bug fixes in primitives
Changes made to alchemy innistrad to have the correct multiverseid values and better image quality
Nahiri, the Unforgiving
Kaervek's Spite
Ox Drover
Volrath, the Shapestealer
Garna, Bloodfist of Keld
2024-09-19 17:28:09 -06:00
Eduardo MG
1421d906ce Tolsimir, Friend to Wolves token was crashing game
Bug fixes:
Floriferous Vinewall
Ghostfire Blade
Goblin Bowling Team
Take Out the Trash
Tolsimir, Friend to Wolves
2024-08-31 19:46:52 -06:00
Eduardo MG
229bc06027 Merge pull request #1100 from BobCyril/master
Two new AI Commander opponents for new players
2024-08-30 15:53:25 -06:00
BobCyril
0369409af0 Update deck55.txt
Add new Commander AI opponent for intermediate players. replacing poor AI deck
2024-08-30 18:57:13 +01:00
BobCyril
f160b6a5a0 Update deck16.txt
Add new Commander AI opponent for beginners, replacing a poor AI deck.
2024-08-30 18:54:19 +01:00
Eduardo MG
872732b5ab New cards
Myojin of Cryptic Dreams
Gourmand's Talent
Fortune Teller's Talent
Perch Protection
Tempt with Bunnies
Tempt with Glory
Tempt with Vengeance
Arthur, Marigold Knight
Mr. Foxglove
Sowing Mycospawn
Depth Defiler
Thraben Charm
Planar Nexus
Trenchpost
Riveteers Overlook
Brokers Hideout
Cabaretti Courtyard
Maestros Theater
Obscura Storefront
Sage of the Maze
Charitable Levy
Chthonian Nightmare
Infested Thrinax
Etherium Pteramander
Cursed Wombat
Witch Enchanter
Witch-Blessed Meadow
Pinnacle Monk
Mystic Peak
Disciple of Freyalise
Garden of Freyalise
Drowner of Truth
Drowned Jungle
Strength of the Harvest
Haven of the Harvest
Glasswing Grace
Age-Graced Chapel
Revitalizing Repast
Old-Growth Grove
Legion Leadership
Legion Stronghold
Razorgrass Ambush
Razorgrass Field
Sink into Stupor
Soporific Springs
Fell the Profane
Fell Mire
Waterlogged Teachings
Inundated Archive
Stump Stomp
Burnwillow Clearing
Bridgeworks Battle
Tanglespan Bridgeworks
Bushy Bodyguard
Heirloom Epic
Starfall Invocation
Otterball Antics
Miriam, Herd Whisperer
Tomb Trawler
Silver Deputy
Outcaster Greenblade
Redrock Sentinel
Obeka, Splitter of Seconds
Hellspur Brute
Ferocification
Quick Draw
Gold Rush
Trick Shot
Roxanne, Starfall Savant
Cactarantula
Furtive Courier
Detective's Satchel
Public Thoroughfare
Dramatic Accusation
Coerced to Kill
Archdruid's Charm
Gnawing Crescendo
Edgewall Inn
Expel the Interlopers
Specter of Mortality
2024-08-29 19:25:34 -06:00
Eduardo MG
2bb75ed466 Updates to _cards.dat
Bug fixes to primitives, updates to CardImageLinks.csv, fixed a typo in createResourceZip.py
2024-08-29 18:58:08 -06:00
Eduardo MG
603d91885f Fix to offspring cards
Escaped Shapeshifter
Pyxis of Pandemonium
Silver-Fur Master
Nashi, Moon Sage's Scion
Barrow Ghoul
Circling Vultures
Collector's Vault
Heavenly Blademaster
Chaos Warp
Master's Rebuke
Diamond Pick-Axe
2024-08-28 00:29:08 -06:00
Eduardo MG
a1266cbba8 Bug fixes to Bloomburrow cards
A-Haywire Mite
Carrot Cake
Mind Drill Assailant
Mindwhisker
Nightwhorl Hermit
Repel Calamity
Sonar Strike
2024-08-23 17:08:45 -06:00
Eduardo MG
6088969245 Bug fixes to BLB cards
Krovikan Whispers
Drillworks Mole
Gossip's Talent
Mabel's Mettle
Sunshower Druid
Ygra, Eater of All
2024-08-22 13:39:15 -06:00
Eduardo MG
3d9b40f903 Random Commander From File Rules
randomCommanderFromFile.txt

The randomcommander from file feature allows players to load a commander deck from a predefined list stored in an external file. Here’s how it works:

File Loading: The game attempts to open a file named commander.txt located in the User/commander/ directory. This file contains a list of possible commander IDs or names.

Default Handling: If the file doesn't exist or is empty, the game creates the file and writes a default commander ID (670972) to it. The file is then re-opened for further processing.

Commander ID Extraction: The game reads each line in the file, ignoring comments (lines starting with #). It validates whether the line is a numeric commander ID. If not, the game tries to convert it from a card name to an ID using function getMTGId().

Filtering and Validation: The game then filters out invalid IDs (e.g., IDs that do not correspond to an existing card in the game's database). If no valid IDs remain, it defaults to using the same commander ID (670972).

Random Selection: Once a list of valid commander IDs is compiled, the game randomly selects one ID from this list to be used as the commander for the player.

Deck Construction: A temporary deck is constructed using the selected commander, along with a predefined number of lands and spells that match the commander's colors.

Summary
The random commander from file feature provides a way to customize and randomize the commander used in a game based on an external file. This adds variety and replayability, as each game can have a different commander selected from the list, allowing for different strategies and experiences.
2024-08-22 10:32:53 -06:00
Eduardo MG
ddd589d3f6 Trying to fix compilation for PSP
Replace nullptr with NULL
2024-08-21 23:02:11 -06:00
Eduardo MG
8793f05cea Random Commander From File
Loads a player with a randomly selected commander from a specified file.

 * This function reads a file ('User/commander/commander.txt') that contains a list of potential commander IDs or names.
 * It selects one randomly to be used as the player's commander. If the file doesn't exist, or no valid commanders are found, a default commander ID (670972) is used.
* Can read the commander name and a multiverseID
* Lines that start with '#' are ignored
2024-08-21 22:33:31 -06:00
Eduardo MG
ec2ef1856b Bug fix this(variable{phalfinitlife}) indestructible
As long as your life total is less than or equal to half your starting life total, this has indestructible
Agrus Kos, Spirit of Justice
Alloy Animist
Bane, Lord of Darkness
Bhaal, Lord of Murder
Fighter Class
Flamerush Rider
Greasefang, Okiba Boss
Hydroid Krasis
=Ilharg, the Raze-Boar
Mangara, the Diplomat
Myrkul, Lord of Bones
Omo, Queen of Vesuva
Ragavan, Nimble Pilferer
Titania's Song
Vedalken Humiliator
Winota, Joiner of Forces
Zara, Renegade Recruiter
Zoraline, Cosmos Caller
Aethermage's Touch
Dragon Mask
Rakalite
Nahiri, the Harbinger
2024-08-21 20:24:54 -06:00
Eduardo MG
fd11dcefe2 Revert "Updating Android ndk"
This reverts commit aa48c9ca4a.
2024-08-19 19:04:06 -06:00
Eduardo MG
190405d43f Revert "Update travis-script.sh"
This reverts commit f6a991a2e6.
2024-08-19 19:04:01 -06:00
Eduardo MG
30505b0e5d Revert "Travis, trying a newer version of android ndk"
This reverts commit 93492ae091.
2024-08-19 19:03:40 -06:00
Eduardo MG
93492ae091 Travis, trying a newer version of android ndk 2024-08-19 18:56:17 -06:00
Eduardo MG
f6a991a2e6 Update travis-script.sh 2024-08-19 18:24:55 -06:00
Eduardo MG
aa48c9ca4a Updating Android ndk
Trying android-ndk-r27/ndk-build
2024-08-19 17:37:58 -06:00
Eduardo MG
8ed4729d82 postcombat to second main, bug fixes in primitives
Had to use the treasure defined as primitive since the Fable of the Mirror-Breaker token won't create a treasure otherwise.

Changes:

Rat Colony
Shadow of the Second Sun
Sphinx of the Second Sun
Viashino is no longer a creature type. The postcombat main phase is now referred to as the second main phase.
Updated Rules.cpp to exclude the Viashino type from random kindred decks.
Bug Fixes:

Fable of the Mirror-Breaker
Rat Colony
Plumb the Forbidden
Oblivion Stone
2024-08-18 17:50:59 -06:00
Eduardo MG
4ebb114a0e Bug fixes, corrections, clarifications on abilities
Tezzeret, Betrayer of Flesh -2 is permanent
2024-08-17 12:08:54 -06:00
Eduardo MG
7e3cf5c009 New cards from Bloomburrow
New cards from Bloomburrow (BLB) and Bloomburrow Commander (BLC)
2024-08-16 16:12:25 -06:00
Eduardo MG
9895148562 Moved reconfigure cards to the end of mtg file
Due to card type association, Dryad Arbor is placed at the end. Any other card that associates two super types in this manner should also be placed at the end of the primitive to avoid changeling thinking that “forest” is a creature type. This applies to reconfigure cards as well, to avoid making changelings equipment.
2024-08-16 16:04:37 -06:00
Eduardo MG
bfa30c10db Add new icons for graveyard and for exile 2024-08-16 12:27:30 -06:00
Eduardo MG
f57f5bfff5 Changed ownerHand to just hand, bug fixes
Changed ownerHand to just hand, inspecting the source code it is the same
Individual cards bug fixes:
Arbiter of the Ideal have to misspell manifest
Curate Must Draw After Surveil
Deface casting restrictions
Discombobulate
Dovin, Grand Arbiter
Downsize
Dragon Throne Of Tarkir
Dragonshift
Dregs of Sorrow
Elder Spawn
Elvish Mariner
Faerie Mastermind
Fecundity
Finale Of Revelation
Flame Channeler
Flameskull
Frostwalk Bastion frozen ability
Gate To The Afterlife
Invade the City is still on the stack while you count your instant and sorcery cards in your graveyard. It doesn't count itself.
Kabira Evangel doesn't seem to work with a may condition
Krosan Verge
Livewire Lash
Meteor Blast
Midnight Clock
Mindlink Mech
Mirror Match
Morality Shift removed
Overwhelming Encounter removed
Peace Talks removed
Quiet Disrepair removed
Ravenous Gigantotherium removed
Reign Of Chaos
Rout
Sanctuary Blade removed
Sculpted Sunburst
Seeds Of Innocence
Shackles Of Treachery
Shared Summons
Sokenzan Smelter
Valiant Endeavor removed
Vraska, Betrayal's Sting
2024-08-16 12:22:13 -06:00
Eduardo MG
e2f6fec09e LTR and LTC _cards.dat and bug fixes in primitives
I had to update the _cards.dat files for The Lord of the Rings: Tales of Middle-earth (LTR) and Tales of Middle-earth Commander (LTC) since they didn't have the correct official multiverse IDs. I'm sorry if this affects past decks, but I had to make these changes because it was difficult to debug cards within the set and obtain their respective tokens.
Hisoka, Minamo Sensei
Ragemonger text
Igneous Inspiration and other instants/serceries that target an opponents permanent
Mind Rake
Keeper of the Accord
Aria Of Flame
Arixmethes, Slumbering Isle, Annoying
Battlefield Scrounger
Bloodchief Ascension
Breathless Knight
Breeches, Brazen Plunderer
Doubling Season
Contaminant Grafter
Cursed Rack was working even after being destroyed
2024-08-14 18:37:30 -06:00
Eduardo MG
f9df303e92 Update CardImageLinks.csv
Including cards from Bloomburrow and its commander set, token updates.
2024-08-13 17:47:48 -06:00
Eduardo MG
42401d749b Double square brackets can cause bugs.
Leovold, Emissary of Trest
soldevi digger
raze-boar returned a card from the graveyard
Hatchery Spider is a cast
Estrid, the Masked had to create a flavorful workaround
Atemsis, All-Seeing not exaclty the effect
Nothic
Thunderwave crashing and not working any iteration
Kuldotha Flamefiend
2024-08-13 16:56:56 -06:00
Eduardo MG
57c59ee0dd Changed some conditions to simpler variables
newability[reach] changed to just reach
Bug fixes
Garruk, Unleashed
2024-08-13 00:13:13 -06:00
Eduardo MG
618a418ea6 Changed 'endofturn' to just 'end'
Same functionality with less code
2024-08-12 23:07:07 -06:00
Eduardo MG
eccd00fd19 Updates to _cards.dat, bug fixes
Bug fixes in primitives
2024-08-12 18:05:28 -06:00
Eduardo MG
4f24b94faa Bug fixes in primitives, planeswalkers minus character
Replaced unusual characters in the planeswalkers file.
2024-08-12 08:35:44 -06:00
Eduardo MG
2588bcd050 Revised the rules files and improved the Titania game mode with new features.
The effect "Whenever one or more +1/+1 counters are put" should be coded as @totalcounteradded(1/1) to to avoid triggering from a single instance that puts multiple counters.

Updated the BLC file to include the alternative layout cards.

Rakdos the Defiler
Jin-Gitaxias, Progress Tyrant
Jousting Lance
Leaf Drum Controlled By The Ai
Spectacle as a macro causes bugs
Sword of the Paruns
Suit Up
Lurrus of the Dream-Den
2024-08-11 12:18:25 -06:00
Eduardo MG
aca7f6d416 Changed cards with "Act of treason" effect
Double square brackets was causing bugs.

Changed cards with the effect "Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. (It can attack and {T} this turn.)"
2024-08-08 08:36:26 -06:00
Eduardo MG
67666e850d Changes to _cards.dat to account for layouts
I had to modify how the _cards.dat files are created to incorporate variant layouts of adventures, aftermath, and split cards. They are now showing in the collection, but you will need to download the images again.
Rootless Yew
Repel Intruders
Resplendent Angel
Karn, Scion of Urza
2024-08-07 23:41:50 -06:00
Eduardo MG
2cef9d8f60 Bug fixes in primitives
when this creature dies, put its counters on target creature you control
Shiny Impetus
Witch of the Moors
Parish-Blade Trainee
Enduring Bondwarden
Marauding Maulhorn
2024-08-07 07:28:59 -06:00
Eduardo MG
34557b3c4f Bug fixes in primitives
Anointer of Valor
Profane Command
confluences
Skeletal Swarming
2024-08-06 19:56:31 -06:00
Eduardo MG
5629240449 Changed how Clue, Food, and Treasure tokens are created.
Since I can now obtain token images, the tokens should correspond to the plane and have different illustrations.
2024-08-06 00:03:25 -06:00
Eduardo MG
9ca59e9afb _PROLIFERATE_ is giving issues
Current implementation is not 100% correct since it forces you to select at least one target
2024-08-02 18:09:25 -06:00
Eduardo MG
4ae355a6ea New cards from CLU, OTJ, DMU, MC3
New cards from CLU, plot cards from OTJ, enlist DMU, MC3
Afterlife Insurance
Aloe Alchemist
Argivian Cavalier
Astor, Bearer of Blades
Ayesha Tanaka, Armorer
Balduvian Berserker
Barkweave Crusher
Beastbond Outcaster
Benalish Faithbonder
Bespoke Battlewagon
Blacksnag Buzzard
Brimstone Roundup
Carnage Interpreter
Cleaving Skyrider
Coalition Skyknight
Coalition Warbrute
Combat Research
Commander Mustard
Conclave Evangelist
Conduit Goblin
Cunning Coyote
Cyclops Superconductor
Demonic Ruckus
Djinn of Fool's Fall
Dust Animus
Ecstatic Electromancer
Etched Slith
Freestrider Commando
Frenzied Gorespawn
Furious Spinesplitter
General Marhault Elsdragon
Guardian of New Benalia
Guide of Souls
Headliner Scarlett
Herald of Ilharg
Hexbane Tortoise
Highway Robbery
Infernal Captor
Irascible Wolverine
Jhoira, Ageless Innovator
Jodah's Codex
Joint Exploration
Keldon Flamesage
Linebreaker Baloth
Loan Shark
Longhorn Sharpshooter
Lonis, Genetics Expert
Monumental Henge
Najal, the Storm Runner
Orca, Siege Demon
Ordruun Mentor
Outcaster Trailblazer
Phoenix Chick
Pillage the Bog
Quirion Beastcaller
Radha's Firebrand
Railway Brawler
Rasputin, the Oneiromancer
Rictus Robber
Riddle Gate Gargoyle
Rise of the Varmints
Rona's Vortex
Rulik Mons, Warren Chief
Rundvelt Hordemaster
Scuttling Sentinel
Senator Peacock
Sheriff of Safe Passage
Slickshot Lockpicker
Slickshot Show-Off
Sludge Titan
Smelted Chargebug
Spinewoods Paladin
Stagecoach Security
Stenn, Paranoid Partisan
Step Between Worlds
Stingerback Terror
Suppressor Skyguard
Torsten, Founder of Benalia
Tribune of Rot
Tumbleweed Rising
Undercover Butler
Unite the Coalition
Unruly Krasis
Unscrupulous Contractor
Visage Bandit
Voda Sea Scavenger
Voltstorm Angel
Walking Bulwark
Weatherlight Compleated
Yavimaya Steelcrusher
2024-08-02 17:40:08 -06:00
Eduardo MG
440d2f28b1 Bloomburrow and Bloomburrow Commander sets
Bloomburrow (BLB) and Bloomburrow Commander (BLC) _cards.dat files
2024-08-02 17:12:38 -06:00
Eduardo MG
2c6c20358d Bug fixes, Adapt, Mentor, and Amass Orcs macros
I added a condition to energy activation to prevent the AI from hanging, trimmed excessive '9s' in 'infinite' conditions, fixed the Adapt, Mentor, and Amass Orcs macros, and implemented mercenary token macros.
Light of the Legion
Myriad Construct
Sheoldred
Neheb, the Eternal
Complete the Circuit
Return to Nature
Diffusion Sliver
Frost Titan
Death Match
Requiem Angel
Wildwood Scourge
Glasspool Mimic
2024-08-02 16:56:24 -06:00
Eduardo MG
a183e9282c Changing "enters the battlefield" to "enters"
Entering will be connected specifically with the battlefield.
2024-07-29 22:39:26 -06:00
Eduardo MG
f83c670630 New cards from DMU, MH3, LCI, WOE, cases from MKM.
Adaptive Gemguard
Admiral Brass, Unsinkable
Ajani Fells the Godsire
Archangel of Wrath
Argent Dais
Bitter Chill
Boggart Bog
Boggart Trawler
Brazen Blademaster
Case of the Crimson Pulse
Case of the Filched Falcon
Case of the Gorgon's Kiss
Case of the Locked Hothouse
Case of the Ransacked Lab
Case of the Shattered Pact
Case of the Shifting Visage
Case of the Stashed Skeleton
Case of the Trampled Garden
Case of the Uneaten Feast
Chancellor of Tales
Charnel Serenade
Confounding Riddle
Copycrook
Court of Ardenvale
Court of Embereth
Court of Garenbrig
Crown of the Ages
Deconstruction Hammer
Deep-Cavern Bat
Detective of the Month
Djinn of the Fountain
Dusk Rose Reliquary
Eladamri, Korvecdal
Explorer's Cache
Family Reunion
Final-Word Phantom
Fires of Victory
Flooded Woodlands
Frogmyr Enforcer
Frostfist Strider
Fungal Fortitude
Galvanic Discharge
Garna, Bloodfist of Keld
Ghostfire Slice
Glimpse the Core
Glorifier of Suffering
Goldfury Strider
Gravedig
Guardian of the Forgotten
Guardian of the Great Door
Howling Galefang
Illicit Masquerade
Impede Momentum
In Thrall to the Pit
Inti, Seneschal of the Sun
Itzquinth, Firstborn of Gishath
Jedit Ojanen, Mercenary
Join the Maestros
Keldon Strike Team
Lethal Throwdown
Malleable Impostor
Mistway Spy
Nelly Borca, Impulsive Accuser
Nettling Nuisance
Ocelot Pride
Ogre Chitterlord
Ohabi Caleria
Ojer Pakpatiq, Deepest Epoch
Ondu Knotmaster // Throw a Line
Orazca Puzzle-Door
Perimeter Enforcer
Pirate Hat
Projektor Inspector
Pyretic Rebirth
Queen's Bay Paladin
Ral and the Implicit Maze
Ray of Ruin
Reckless Pyrosurfer
Refurbished Familiar
Relive the Past
Sage of Days
Salt Road Ambushers
Scroll of Fate
Scurry of Gremlins
Shadow Prophecy
Shadow Puppeteers
Shadow of the Second Sun
Shifting Woodland
Shipwreck Sentry
Silverback Elder
Sleep with the Fishes
Song of Stupefaction
Sorin of House Markov
Sorin, Ravenous Neonate
Soulcoil Viper
Stall for Time
Stronghold Arena
Sunfire Torch
Sunshot Militia
Tamiyo, Inquisitive Student
Tamiyo, Seasoned Scholar
Tear Asunder
Temple of Cyclical Time
Tesak, Judith's Hellhound
The Ancient One
Unlucky Drop
Urborg Lhurgoyf
Vein Ripper
Vodalian Mindsinger
Vohar, Vodalian Desecrator
Voja, Jaws of the Conclave
Warhost's Frenzy
Warm Welcome
Waylaying Pirates
Welcome to Sweettooth
Wumpus Aberration
2024-07-29 18:32:33 -06:00
Eduardo MG
8e6d58f491 Bug fixes, impulse draw macros
_IMPULSEDRAW_
_IMPULSEUENT_
Guardian of Tazeem
Teferi, Master of Time
So Tiny
Eowyn, Fearless Knight
2024-07-29 18:17:48 -06:00
Eduardo MG
b4afc3f3e1 New macros and token substitutions
Bug fixes
abilities simplification
Disciples of the Inferno
Blade of the Bloodchief
Grenzo, Havoc Raiser
Belligerent Brontodon
Weight Advantage
Liliana, Death Mage
Garruk's Warsteed
Ashiok's Forerunner
Liliana, Death Mage
2024-07-27 17:23:07 -06:00
Eduardo MG
7d5e2379be Merge pull request #1098 from BobCyril/master
New AI Commander deck and bugfix to deck160
2024-07-27 17:03:17 -06:00
BobCyril
3cb8a5a360 Create deck161.txt 2024-07-26 21:52:43 +01:00
BobCyril
b01f679452 Update deck160.txt 2024-07-26 21:48:19 +01:00
Eduardo MG
067ae2790d opponenshroud changed to hexproof, new ability canplayenchantmentlibrarytop
New ability "canplayenchantmentlibrarytop" allow to play enchantments from top
sets now include tokens
you no longer draw conspiracy cards in the random
rules file revisions
commander bugs
Eutropia the Twice-Favored
Calculating Lich
Seismic Wave
Rank and File
Professional Face-Breaker
Realmwalker
2024-07-21 18:44:21 -06:00
Eduardo MG
ea6e2b00f6 Bug fixes and abilities simplification
Phlage, Titan of Fire's Fury
Scent of Cinder
Radagast The Brown for the AI
Flood of Recollection
Samwise the Stouthearted
Blood Aspirant
Anax, Hardened in the Forge
Kairi, the Swirling Sky
Mind Rake
Hungering Hydra
Spearpoint Oread
Rampaging Geoderm
Keeper of the Accord
Electropotence
Orochi Merge-Keeper
2024-07-19 19:19:03 -06:00
Eduardo MG
5080fe7811 Update _cards.dat
CMR variants
2024-07-15 21:56:55 -06:00
Eduardo MG
fa872056ae Added new cards from M3C, MKM, LCI, WOE
IKO(GODZILLA SERIES MONSTERS)
New Cards:
Agency Coroner
Agrus Kos, Spirit of Justice
Anim Pakal, Thousandth Moon
Azlask, the Swelling Scourge
Badlands Revival
Barbed Servitor
Belligerent Yearling
Bloodbraid Challenger
Breathe Your Last
Broodmate Tyrant
Caught Red-Handed
Cayth, Famed Mechanist
Chittering Dispatcher
Clandestine Meddler
Connecting the Dots
Convenient Target
Conversion Apparatus
Copy Land
Culvert Ambusher
Dauntless Dismantler
Desert's Due
Disa the Restless
Dreadmaw's Ire
Dreamtide Whale
Drossclaw
Due Diligence
Echoing Deeps
Ego Drain
Eldrazi Confluence
Eldritch Immunity
Elemental Eruption
Envoy of the Ancestors
Essence Reliquary
Expanding Ooze
Expel the Unworthy
Felonious Rage
Final Act
Flare of Cultivation
Flare of Denial
Flare of Duplication
Flare of Fortitude
Flare of Malice
From the Rubble
Grim Servant
Hexgold Slith
Hideous Taskmaster
Hope-Ender Coatl
Horrid Shadowspinner
Hourglass of the Lost
Incriminating Impetus
Inspired Inventor
Inversion Behemoth
It Doesn't Add Up
Jyoti, Moag Ancient
Kozilek's Unsealing
Kudo, King Among Bears
Lion Umbra
Make Your Move
March of the Canonized
Mine Raider
Necromancy
No Witnesses
Obstinate Gargoyle
Omo, Queen of Vesuva
Person of Interest
Petrifying Meddler
Polygoyf
Prosperity Tycoon
Pugnacious Hammerskull
Pyrogoyf
Reasonable Doubt
Redemption Choir
Repeat Offender
Rubblebelt Braggart
Rune-Brand Juggler
Salvation Colossus
Scalestorm Summoner
Selective Obliteration
Serum Visionary
Shilgengar, Sire of Famine
Siege-Gang Lieutenant
Skoa, Embermage
Skullcap Snail
Spawnbed Protector
Spider Food
Stone Idol Generator
Strix Serenade
Talion's Messenger
Tarmogoyf Nest
Temperamental Oozewagg
Ulamog's Dreadsire
Vanguard of the Rose
Voidpouncer
White Orchid Phantom
Wing It
2024-07-15 20:00:13 -06:00
Eduardo MG
4d1a10de75 Bug fixes, oracle text updates
Boneyard Scourge
Sea Hag // Aquatic Ingress
Seton, Krosan Protector
Sinbad
Tandem Lookout
Cunning Strike
Draco
Extraplanar Lens effect persisted even after being destroyed
Detention Vortex
2024-07-15 19:39:28 -06:00
Eduardo MG
deb2e0fa7a Update CardImageLinks.csv
IKO (GODZILLA SERIES MONSTERS)
Image links form recent decks, OTJ, MH3, CLU
2024-07-15 19:30:54 -06:00
Eduardo MG
ccc209d4f2 Oracle changes and subtypes updates
Shuffle your library changed to shuffle
Attack each turn changed to attack each combat
Dog changed to Jackal in specific cards
Ape changed to Monkey in specific cards
Totem Armor changed to Umbra Armor
2024-07-13 11:51:12 -06:00
Eduardo MG
4fb389e698 Bug fixes, oracle text updates
Adriana, Captain of the Guard
Anax, Hardened in the Forge
Arbiter of the Ideal had to change the name of the counter
Armament Of Nyx
Ashcoat of the Shadow Swarm
Ashes of the Abhorrent
Captain N'ghathrod
Cement Shoes
Champion of Wits
Charging Cinderhorn
Circle of Solace
Curious Obsession
Deadshot not really supported
Door of Destinies
Eye of Yawgmoth
Fateful Showdown
Fire // Ice
Heirloom Blade
Hunted Bonebrute
Illithid Harvester // Plant Tadpoles nothing works
In Bolas's Clutches and other "Enchant permanet" cards needed a rework
Infernal Harvest
Iymrith, Desert Doom
Jokulhaups didn't destroyed fire-belly ch
Jolene, Plundering Pugilist
Kagemaro, First to Suffer
Keeper of Fables
Kethek, Crucible Goliath
Lost Jitte
Lukka, Bound to Ruin
Metamorphic Alteration
Mimic Vat
Mind Whip
Necromancer's Stockpile
Peace Talks
Preyseizer Dragon
Primal Wellspring
Reaper of Night // Harvest Fear
Skanos Dragonheart
Soldevi Sentry
Support is a may
Vault Plunderer
Vraska, Betrayal's Sting
Winnow
2024-07-12 23:10:24 -06:00
Eduardo MG
fe2c55e97f Removed the adventure part of cards
Removed the adventure part since wagic does not handle them like that
2024-07-12 18:51:18 -06:00
Eduardo MG
6f1cb5c84b Update to Throne of Eldraine (ELD) _cards.dat
Piper of the Swarm alt version and lands with correct rarity
2024-07-12 17:58:04 -06:00
Eduardo MG
1654fdf8ce Bug fixes and oracle text updates
Ward with a macro is causing too many issues
Chainer, Nightmare Adept
Gluntch, the Bestower
Ikra Shidiqi, The Usurper
Impromptu Raid
Incubation Druid
Invasion Of Ravnica
Invasion Of Tarkir
Kinzu Of The Bleak Coven
Kiora Bests The Sea God
Kiora, Master Of The Depths removed, emblem crashes, don't think is posible and card barely works.
Kodama of the East Tree
Kuon, Ogre Ascendant
Magmasaur
Minthara, Merciless Soul
Momentum
Nimbus Champion
Norn's Decree
Notion Rain I know surveil must be before draw but this is better than not drawing
Nyx Herald
One With The Kami
Pact Weapon
Paladin Class
Phage The Untouchable doesn't check if casted from hand
Pondering Mage
Power Surge does damage equal to number of lands
Prosper, Tome-Bound
Puffer Extract
Quest for Ula's Temple
Quintorius, Loremaster
Rabble-Rouser
Rally The Ancestors
Redcap Raiders
Render Inert not really supported
Repel The Darkness and similar cards rework
Saheeli's Silverwing
Salvage Titan
Sensei Golden-Tail
Shared Animosity
Snow Day
Soul Transfer
Spectacular Showdown
Sporeweb Weaver's Last Ability Triggers Just Once, No Matter How Many Things Deal How Much Damage To It At Once (Most Likely Because Two Or More Creatures Blocked It).
Spreading Insurrection
Storm The Citadel
The First Iroan Games
Tinybones, Trinket Thief
Triskaidekaphobia
Visions Of Ruin
Wicked Akuba
Wine of Blood and Iron
Wingmantle Chaplain
2024-07-08 15:45:50 -06:00
Eduardo MG
4e4108f547 Bug Fixes, code cleanup, macros substitutions for tokens
Adding colorless to a token is redundant since by default is colorless.
"may pay" is redundant when the cost is mana, it's necessary when the cost is life.
Acolyte of Affliction
Ajani, Strength Of The Pride Shouldn't Be Double Triggers
Akiri, Fearless Voyager
Arena Rector
Arrogant Poet
Artificer's Hex just falls off, removed
Body Snatcher When You Have No Creatures In Hand
Bump In The Night
Cacophony Scamp
Captain Eberhart
Chandra, Hope's Beacon
Deem Worthy
Desecrate Reality
Destructive Tampering
Drake Haven
Dredge The Mire
Explosive Welcome
Fungal Rebirth
Giver of Runes
Glissa's Scorn
Gurgling Anointer
Haunted Angel
Hungry Flames
Hypnotic Cloud
Inniaz, the Gale Force
Jukai Naturalist
Lord Windgrace
Nature's Cloak
Nature's Spiral
Rashmi, Eternities Crafter
Rohgahh, Kher Keep Overlord
So Shiny
Sparktongue Dragon
Sprouting Goblin missing a )
Temple Thief
The Grey Havens
The Mending of Dominaria was shuffling itself
Tolarian Contempt, have to misspell "rejection" on the counter name
Two-Handed Axe // Sweeping Cleave
Urborg Panther
Urza's Sylex
Victory Chimes
Vraska, Swarm's Eminence
Warmonger
2024-07-06 17:36:58 -06:00
Eduardo MG
3bbb1cea2c Bug fixes to primitives
Vernal Sovereign
Surge Engine
Nissa's Defeat
Gideon, Battle-Forged
2024-06-28 12:55:56 -06:00
Eduardo MG
f4010508ad Special Guests (SPG) update 2024-06-19 18:47:58 -06:00
Eduardo MG
393b5050f9 Ravnica: Clue Edition (CLU) 2024-06-19 18:46:20 -06:00
Eduardo MG
0937578d96 Clean up of extra space at end of line
Removing unnecessary spaces makes the text or code cleaner and easier to read. Trailing spaces can lead to unexpected behavior or bugs.
2024-06-19 18:00:52 -06:00
Eduardo MG
2fea7d5810 Partial Modern Horizons 3 (MH3) cards
Breaker of Creation
Drownyard Lurker
Eldrazi Ravager
Emrakul, the World Anew
Glaring Fleshraker
It That Heralds the End
Null Elemental Blast
Nulldrifter
Twisted Riddlekeeper
Warped Tusker
Idol of False Gods
Solar Transformer
Vexing Bauble
Winter Moon
Bountiful Landscape
Contaminated Landscape
Deceptive Landscape
Foreboding Landscape
Perilous Landscape
Seething Landscape
Shattered Landscape
Sheltering Landscape
Tranquil Landscape
Twisted Landscape
Snow-Covered Wastes
Urza's Cave
Aerie Auxiliary
Mandibular Kite
Metastatic Evangel
Muster the Departed
Solstice Zealot
Brainsurge
Corrupted Shapeshifter
Emrakul's Messenger
Harbinger of the Seas
Roil Cartographer
Tune the Narrative
Tempest Harvester
Unfathomable Truths
Accursed Marauder
Arcbound Condor
Consuming Corruption
Dreadmobile
Dreamdrinker Vampire
Eviscerator's Insight
Marionette Apprentice
Mindless Conscription
Nethergoyf
Retrofitted Transmogrant
Scurrilous Sentry
Warren Soultrader
Wither and Bloom
Wurmcoil Larva
Eldrazi Linebreaker
Fanged Flames
Furnace Hellkite
Mogg Mob
Molten Gatekeeper
Phyrexian Ironworks
Sarpadian Simulacrum
Spawn-Gang Commander
Siege Smash
Thriving Skyclaw
Colossal Dreadmask
Skittering Precursor
Eldrazi Repurposer
Fanatic of Rhonas
Fowl Strike
Gift of the Viper
Horrific Assault
Malevolent Rumble
Nightshade Dryad
Path of Annihilation
Propagator Drone
Phlage, Titan of Fire's Fury
Snapping Voidcraw
Titans' Vanguard
Sneaky Snacker
Wight of the Reliquary
Writhing Chrysalis
Faithful Watchdog
Cranial Ram
Ugin's Binding
Psychic Frog
Imskir Iron-Eater
2024-06-19 17:05:22 -06:00
Eduardo MG
d1827042d4 Oracle text and creature types updates
Revision of creature type updates, and corrections to extra blank space in oracle text.
2024-06-18 10:31:38 -06:00
Eduardo MG
cc5b8ba829 Creature types and mana pool oracle text updates
Wasteland Strangler bug fix, the effect was lasting forever instead of until end of turn.
Removed "to your mana pool" oracle text since it is deprecated.
Changed:
Cephalid to Octopus
Naga to Snake
Viashino to Lizard
Rakshasas are no longer cats
2024-06-14 11:29:51 -06:00
Eduardo MG
972f17bde5 Modern Horizons 3 _card.dat files
Modern Horizons 3 (MH3) _cards.dat
Modern Horizons 3 Commander (M3C) _cards.dat
2024-06-12 18:52:16 -06:00
Eduardo MG
b60630d814 Bug fixes, learn macros update
Crystalline Nautilus
academic dispute
Soulstinger
Crown of Gondor
Fists of Flame
Imperial Aerosaur
Volatile Rig crashes the game
Kiora Bests the Sea God
Holy Frazzle-Cannon
Illustrious Wanderglyph
Stonespeaker Crystal
Slayer of the Wicked
2024-06-12 13:08:19 -06:00
Eduardo MG
b20484c7de Bug fixes and cards from The Big Score (BIG)
Bug fixes:
Drakuseth, Maw of Flames
Springleaf Drum
Ghost of Ramirez DePietro not supported
Martyr of Bones was crashing the game
Corrupt Court Official
Aggravated Assault
Slaughter Pact, Pact of Negation removed due to making opponent lose
The Mycotyrant
spectacle doesn't seem to work with macros

Cards from The Big Score (BIG):
Angel of Indemnity
Angelic Sell-Sword
Cactus Preserve
Dead Before Sunrise
Vengeful Regrowth
Oltec Matterweaver
Simulacrum Synthesizer
Harvester of Misery
Hostile Investigator
Generous Plunderer
Legion Extruder
Molten Duplication
Sandstorm Salvager
Pest Control
Lost Jitte
Lotus Ring
2024-05-13 18:58:22 -06:00
Eduardo MG
705e1444e0 Cards from Outlaws of Thunder Junction Commander (OTC) and bug fixes
Bug Fixes:
Fiery Conclusion
Intrusive Packbeast
Last March of the Ents
Kels, Fight Fixer

New cards:
Malcolm, the Eyes
Conduit Pylons
Gold Pan
Harrier Strix
Mirage Mesa
Baron Bertram Graywater
Wylie Duke, Atiin Hero
Form a Posse
Jolene, Plundering Pugilist
Kraum, Violent Cacophony
Lavaspur Boots
Goldvein Hydra
Tinybones, the Pickpocket
Vraska Joins Up
Vial Smasher, Gleeful Grenadier
Bonny Pall, Clearcutter
Akul the Unrepentant
Annie Flash, the Veteran
Rakdos Joins Up
Ruthless Lawbringer
Outlaws' Fury
Cactusfolk Sureshot
Embrace the Unknown
Kirri, Talented Sprout
Yuma, Proud Protector
Rumbleweed
Charred Graverobber
Ghired, Mirror of the Wilds
Vihaan, Goldwaker
Back in Town
Tower Winder
Colossal Rattlewurm
Olivia, Opulent Outlaw
2024-05-06 19:57:13 -06:00
Eduardo MG
93faa08ef3 Cards from Outlaws of Thunder Junction (OTJ)
Bug fixes:
Zhulodok, Void Gorger
Engulfing Eruption
Slagstone Refinery

New Cards:
Armored Armadillo
Bovine Intervention
Eriette's Lullaby
High Noon
Holy Cow
Outlaw Medic
Sterling Keykeeper
Sterling Supplier
Thunder Lasso
Wanted Griffin
Canyon Crab
Daring Thunder-Thief
Double Down
Peerless Ropemaster
Razzle-Dazzler
Spring Splasher
Ambush Gigapede
Desperate Bloodseeker
Mourner's Surprise
Neutralize the Guards
Nezumi Linkbreaker
Rakish Crew
Rooftop Assassin
Shoot the Sheriff
Treasure Dredger
Vault Plunderer
Deadeye Duelist
Discerning Peddler
Hellspur Posse Boss
Iron-Fist Pulverizer
Prickly Pair
Reckless Lackey
Rodeo Pyromancers
Scorching Shot
Ankle Biter
Bristlepack Sentry
Bristly Bill, Spine Sower
Full Steam Ahead
Raucous Entertainer
Reach for the Sky
Voracious Varmint
Honest Rutstein
Creosote Heath
Eroded Canyon
Festering Gulch
Forlorn Flats
Jagged Barrens
Lonely Arroyo
Lush Oasis
Sandstorm Verge
Soured Springs
Abraded Bluffs
Bristling Backwoods
Oasis Gardener
Sterling Hound
2024-05-03 17:13:08 -06:00
Eduardo MG
ff59089dcc Bug fixes to primitives
Mana Seism
Ozolith, the Shattered Spire
Born to Drive
Valorous Stance
Gitrog, Horror of Zhava
Spike Rogue
2024-04-26 22:35:08 -06:00
Eduardo MG
60306cf1c2 Outlaws of Thunder Junction and complementary sets
Outlaws of Thunder Junction (OTJ)
Breaking News (OTP)
The Big Score (BIG)
Outlaws of Thunder Junction Commander (OTC)
2024-04-22 10:54:32 -06:00
Eduardo MG
576be28da1 Bug fixes, removed cards that are not supported
Nimana Skydancer
Puppet Raiser
Irreverent Revelers
Cunning Evasion
Symmetry Matrix is not supported
Glint-Nest Crane
Chaplain of Alms was crashing the game while using macros
Urza's Sylex
Study Break
Rankle and Torbran
Ancient Brass Dragon
Old Flitterfang
Crossway Troublemakers
Protean Hulk
torpor orb and similar cards aren't working
2024-04-17 23:38:47 -06:00
Eduardo MG
fa2c130b08 Changed myHand to ownerHand
Bug fixes:
Many Partings
Siren reaver
navigation orb
Pestilent Souleater
Confiscation Coup removed since it crashes the game
Speakeasy Server
Heraldic Banner
2024-03-25 19:07:44 -06:00
Eduardo MG
5500b9a8a5 New cards from recent sets
Morska, Undersea Sleuth
Miner's Guidewing
Sophia, Dogged Detective
Dogged Detective
River Herald Scout
Merchant of Truth
Tangletrove Kelp
On the Trail
Tomik, Wielder of Law
Massacre Girl, Known Killer
Dream Spoilers
Burning Sun Cavalry
2024-02-17 18:20:58 -06:00
Eduardo MG
8b9f34b879 Bug fixes, replacing explores code for the macro
Bruvac the Grandiloquent, not really supported, limiting to once per turn to not break the game
Using _EXPLORES_ macro
Siren reaver
navigation orb
2024-02-17 17:39:26 -06:00
Eduardo MG
607cf5f944 Merge branch 'master' of https://github.com/WagicProject/wagic 2024-02-16 13:09:10 -06:00
Eduardo MG
353b3b1d7f New cards from recent expansions, using _EXPLORES_ macro
Mischievous Pup
Oltec Archaeologists
Marauding Brinefang
Poetic Ingenuity
Grasping Shadows
Relic's Roar
Bennie Bracks, Zoologist
Kindled Heroism
Eriette's Tempting Apple
Xavier Sal, Infested Captain
Out Cold
Long Goodbye
Griffnaut Tracker
Concealed Weapon
Cerebral Confiscation
Seeker of Sunlight
Kinjalli's Dawnrunner
Pathfinding Axejaw
River Herald Guide
2024-02-16 13:08:48 -06:00
Eduardo MG
21a0ee754a Added Special Guests (SPG)
Added Special Guests (SPG) set of reprints with special art.

Special Guests are highly desirable, Masters release–level reprints with art and flavor text matched to the flavor of the plane or set they are included in. They have their own set code (SPG) and expansion symbol
2024-02-16 12:52:51 -06:00
Eduardo MG
a0b3c00211 Fixes to commander damage, deathtouch, MAT card variants.
March of the Machine: The Aftermath (MAT) card variants.
The previous implementation of the deathtouch ability had a bug that destroyed planeswalkers even with any amount of damage. This has been fixed.
If a player has been dealt 21 points of combat damage by a particular Commander during the game, that player loses a game. The damage rule with commanders was incorrect in counting any type of damage, not only combat damage.

Bug fixes:
Athreos, Shroud-Veiled
Endless Atlas
Natural State
Savage Gorger
Kytheon's Irregulars
Lion Sash
Pyrophobia
Minas Tirith
Sakashima of a Thousand Faces
2024-02-16 12:46:41 -06:00
Eduardo MG
603af22b79 Murders at Karlov Manor (MKM) and Murders at Karlov Manor Commander (MKC)
Murders at Karlov Manor (MKM) and Murders at Karlov Manor Commander (MKC) _cards.dat with official multiverseID
2024-02-12 18:31:29 -06:00
Eduardo MG
9cfc4ea321 New cards from recent sets like WOE and Karlov Manor (MKM)
Celebration cards and primitives from Murders at Karlov Manor (MKM)
2024-02-12 18:16:00 -06:00
Eduardo MG
0d05aeb329 Fixes to Kaldheim equipment, cast prevention, AI sacrificing
Kaldheim (KHM) equipment that creates tokens uses an ETB (Enter the Battlefield) ability, not a cast ability.
Cards that use maxCast(anytext)0 simply prevent any type of casting.
The AI sometimes hangs when sacrificing creatures, preventing game continuation. To address this, a restriction has been added to allow only the human player to use this effect.
Other bug fixes:
Doomsday
Perimeter Sergeant
Imposing Grandeur
Sacred armory text
2024-02-12 18:00:35 -06:00
Eduardo MG
667adfadce Bug fixes, Changes to Random Commander
You can now get non-basic lands in random commander, adds more diversity to the mode.
Bug fixes to "Choose one or both" cards
Helm of Kaldra AI just keeps activating the ability
Katsumasa, the Animator
Yidris, Maelstrom Wielder
Prismatic Omen
Retreat to Hagra
Condescend
Unnatural Aggression
Second Breakfast
Kitesail Skirmisher
Ezuri's Predation
Rohgahh, Kher Keep Overlord
Blight-Breath Catoblepas
2024-02-09 20:04:12 -06:00
Eduardo MG
30bef9f840 Bug fixes, adding a token for next MKM set
Devour creatures and similar cards that sacrifice should not target, or else you can't sacrifice permanents with shroud
Cavalier of Night
Titan Hunter
Somberwald Alpha
Irini Sengir
Brand
2024-02-05 19:47:43 -06:00
Eduardo MG
a6fe4a5de6 White vampire token macro, bug fixes and new cards
# White Vampire with lifelink Token
#AUTO_DEFINE _WHITEVAMPIRE_ create(vampire:creature vampire:1/1:white:lifelink)
Added Uchbenbak, the Great Mistake and other cards from WOE and LCI
Bug fixes to:
Aethershield Artificer
Shirei, Shizo's Caretaker still needs some work
The Scarab God
Corpsejack Menace
Lightning Javelin
Furious Bellow
Enemy of Enlightenment
Orcish Captain
Sun-Crested Pterodon
moonlight bargain
Haunted One
Criminal Past
Scion of Halaster
Moldgraf Monstrosity
Ashiok, Nightmare Muse
Thran Spider
Icon of Ancestry
Shark Typhoon
Farid, Enterprising Salvager
Over the Top
2024-01-31 17:22:57 -06:00
Eduardo MG
f0cbff2f91 Added buttons to display menus, new token macros.
Newer Android devices dont have phisical buttons, so added buttons to display menus that have the same behaviour of pressing the back button.
Bug fixes in primitives.
Created macros for Eldrazi Scion and Eldrazi Spawn tokens.
2024-01-20 11:47:28 -06:00
Eduardo MG
11352db948 Innistrad: Midnight Hunt _cards.dat update
Adding variant cards from MID
2024-01-18 08:38:22 -06:00
Eduardo MG
0322e58221 Bug fixes and three new legendary creatures
Spelling errors fixing
Akawalli, the Seething Tower
Alaundo the Seer
Basilica Skullbomb
Bishop of Wings
Dark Bargain
Dire Tactics
Goblin Bowling Team
Golos, Tireless Pilgrim
Hive of the Eye Tyrant
Iron Mastiff
Liliana's Defeat
Mist of Stagnation
Mudhole
Multiple Choice
Myconid Spore Tender
Ominous Sphinx
Prying Blade
Solemn Recruit
The Mouth of Sauron
Thwart the Grave
Virulent Swipe
Welkin Guide
2024-01-14 18:17:11 -06:00
Eduardo MG
682ed43f38 Commander decks by Bob Cyril
Here is a brand new AI commander deck with Graaz the Unstoppable Juggernaut as the commander. 
Here is another new commander deck with Shalai and Hallar as the commander.
2024-01-12 19:25:37 -06:00
Eduardo MG
cee669389e Merge pull request #1092 from Darthagnon/improve-docs
Improve docs
2024-01-12 16:02:46 -06:00
Eduardo MG
adbed735f3 Ravnica Remastered (RVR) image links, more The Lost Caverns of Ixalan (LCI) cards
adding more The Lost Caverns of Ixalan (LCI) cards
Card image links with the new Ravnica Remastered (RVR
Bug fixes
2024-01-12 13:07:52 -06:00
Eduardo MG
aadf372204 Ravnica Remastered (RVR)
Ravnica Remastered (RVR) _cards.dat
2024-01-10 17:15:01 -06:00
Eduardo MG
f5b9d91769 More cards from The Lost Caverns of Ixalan (LCI)
Bug fixes related to cards that need an additional discard to be cast and a typo in the word "veriable" -> "variable"
2024-01-08 18:14:06 -06:00
Eduardo MG
e06cc6ddae More cards from Wilds of Eldraine (WOE)
Bug Fixes to:
Ephara, Ever-Sheltering
Sidisi's Faithful
Supply Caravan
2024-01-07 14:11:24 -06:00
Eduardo MG
19f2267413 Some cards from Wilds of Eldraine (WOE)
Adding a subset of Wilds of Eldraine (WOE) cards, also a bug fix to Elven Chorus
2023-12-27 17:30:53 -06:00
Eduardo MG
96e9eebabb More cards from The Lost Caverns of Ixalan (LCI)
Bug fixes to:
Alpine Guide
Shimmerwing Chimera
Horn of Deafening
2023-12-25 22:56:41 -06:00
Eduardo MG
814fc96ed8 Adding some The Lost Caverns of Ixalan (LCI) primitives
Also bug fixes to Argoth, Sanctum of Nature and Creeperhulk
2023-12-22 12:24:12 -06:00
Eduardo MG
60ae2d5bef Update borderline.txt
leather armor
Cemetery Desecrator
Glamdring
Militia Bugler
Creeperhulk
2023-12-20 12:27:01 -06:00
Eduardo MG
560bb22cd7 Populating LCI and REX _cards.dat 2023-12-16 16:33:04 -06:00
Eduardo MG
298491d416 The Lost Caverns of Ixalan CardImageLinks
Images links for The Lost Caverns of Ixalan (LCI), The Lost Caverns of Ixalan Commander (LCC) and Jurassic World Collection (REX) sets
2023-12-16 12:14:21 -06:00
Eduardo MG
4929ab9991 The Lost Caverns of Ixalan (LCI) _cards.dat
The Lost Caverns of Ixalan (LCI), The Lost Caverns of Ixalan Commander (LCC) and Jurassic World Collection (REX) sets
2023-12-16 12:10:24 -06:00
Eduardo MG
7d4056d9ba Update borderline.txt
Bug fixes in primitives
Archon of Cruelty
Horned Stoneseeker
Loch Dragon
Smothering Tithe
Spectral Hunt-Caller
2023-11-15 18:41:18 -06:00
Eduardo MG
390c25608e Update CardImageLinks.csv
Image links for Wilds of Eldraine (WOE), Wilds of Eldraine: Enchanting Tales (WOT), and Wilds of Eldraine Commander (WOC).
2023-10-02 12:09:26 -06:00
Eduardo MG
4eddbdfc5d Wilds of Eldraine and it's complementary sets
Includes Wilds of Eldraine (WOE), Wilds of Eldraine: Enchanting Tales (WOT), and Wilds of Eldraine Commander (WOC). Only the _cards.dat
2023-10-02 11:58:07 -06:00
Eduardo MG
e1614c073b Bug fixes in primitives
Lead by Example
Aragorn, the Uniter
Clay Revenant
Risen Executioner
Avacyn token from Battle at the Helvault
2023-09-14 18:24:01 -06:00
Vittorio Alfieri
ac197179fb Fixed a crash on Shop when buying a new booster. 2023-08-11 12:25:24 +02:00
Eduardo MG
fd68b1d90a Bug fixes to primitives
Keruga, the Macrosage: other permanets so it shouldn't count itself
Mirkwood Spider: extra )
Meria, Scholar of Antiquity: using macro for __PLAY_TOP_FROM_EXILE__
Quarrel's End: was missing the draw 2
Leonin Bladetrap: was missing the {2} activation cost
Strixhaven Stadium: mana ability was not adding a point counter
Gorgon Recluse: should only kill nonblack with their ability
Mass Diminish: should be until your next turn
2023-08-09 16:58:01 -06:00
Vittorio Alfieri
dacb69721a Added last primitives from CMM set, fixed some prmitives, updated missing cards by set list. 2023-08-06 16:32:45 +02:00
Vittorio Alfieri
574ea034e2 Added CMM set, added some primitives from CMM set, fixed some primitives and macros, updated card images url list, updated missing cards by set list. 2023-08-05 18:26:35 +02:00
Vittorio Alfieri
bc6e354b9e Added new deck for AI, fixed some primitives from Discord. 2023-08-04 10:36:20 +02:00
Vittorio Alfieri
94fb44d1eb Fixed some primitives from issue #1085 2023-07-28 15:31:05 +02:00
Vittorio Alfieri
332f0542f7 Fixed some primitives from issue #1085, fixed _BLINK_UEOT_ macro, improved several abilities to allow the usage og "and" option. 2023-07-27 18:18:49 +02:00
Vittorio Alfieri
29262b4c78 Fixed some primitives from issue #1085, fixed some primitives from Discord channel. 2023-07-26 17:05:14 +02:00
Vittorio Alfieri
816c42b63b Fixed some primitives from issue #1085, fixed some primitives from Discord Channel, fixed "except" keyword for triggers, added "nocost" option for "totalcounteradded" event to avoid to trigger in case of counter cost (e.g. "Doubling Season"), added "removeallcolors" and "removeallsubtypes" options for "transforms" ability. 2023-07-25 17:38:25 +02:00
Vittorio Alfieri
751fda6521 Fixed some primitives from issue #1085, fixed some primitived from Discord channel, updated some AI decks, added new ability "canloyaltyasinst" to allow a planeswalker to activate loyalty abilities as instant (e.g. "The Wandering Emperor"), fixed a possible crash when a card change zone with different card types than its original version (e.g. morphed cards). 2023-07-24 19:08:20 +02:00
Vittorio Alfieri
6625907180 Fixed some primitives from issue #1085, improved some cards for AI combo (from Discord channel), added "isattacker" keyword to check if creature is attacking, added "couldattack" keyword to check if creature can attack, improved some triggers to add turnlimit option. 2023-07-21 21:12:38 +02:00
Vittorio Alfieri
7c697eb376 Fixed some primitives from issue #1085 and updated some AI decks. 2023-07-20 11:54:49 +02:00
Vittorio Alfieri
ab9002be79 Fixed some primitives from issue #1085 2023-07-18 18:27:34 +02:00
Vittorio Alfieri
8c5a089448 Fixed some primitives from issue #1085 and from Discord channel, updated some AI decks. 2023-07-17 17:40:50 +02:00
Vittorio Alfieri
fbfcb7d3ac Fixed some primitives from issue #1085 and from Discord channel, fixed all curses primitives and targets, added new keywords "oppotgt" and "ctrltgt" to check wich player has been targeted from a card, fixed an issue on "chooseaname" ability. 2023-07-13 17:24:11 +02:00
Vittorio Alfieri
c170733af6 Fixed some primitives from issue #1085 2023-07-11 15:27:19 +02:00
Vittorio Alfieri
d724263d65 Updated some AI commander decks, fixed a bug on "Noxious Field" primitive. 2023-07-10 17:13:46 +02:00
Vittorio Alfieri
2ed35bcaa2 Fixed all primitives that should target any target instead of player and creatures using the new implemented target "anytarget", added new target "propagation" for "propagate" ability, removed the duplicated "unsacrificable" basic ability to use the previous "cantbesacrified" one. 2023-07-08 19:19:17 +02:00
Vittorio Alfieri
17b4dbf55a Fixed primitive "Collected Company". 2023-07-07 18:43:32 +02:00
Vittorio Alfieri
b791da0786 Added new primitives from LTC set, improved "_GOAD_" macro, updated missing card by set list, added new keyword "permanent" to target permanents and nonpermanents, added "flashback" option to "castcard" ability, added new ability "unsacrificable" to forbid a player to sacrifice a card. 2023-07-07 18:22:58 +02:00
Vittorio Alfieri
deec348fea Added new AI commander deck, fixed some primitives. 2023-07-06 17:51:52 +02:00
Vittorio Alfieri
d478df4dc1 Added new primitives from LTR and LTC sets, updated missing card by set list. 2023-07-06 17:14:55 +02:00
Vittorio Alfieri
40f7d75bcf Fixed LTC dat file, updated Card images urls list.a 2023-07-05 17:10:29 +02:00
Vittorio Alfieri
ffb8047d2c Added new primitives from LTR and LTC sets, fixed LTC dat file, fixed primitives with scryed trigger, updated Card Image urls list. 2023-07-05 16:41:57 +02:00
Vittorio Alfieri
5da42e53be Added new primitives from LTR set, fixed primitives, updated missing cards by set list, updated Card image urls list, fixed LTR dat file, added new ability "eqpasinst" to allow usage of "equip" ability as an instant. 2023-07-04 17:40:17 +02:00
Vittorio Alfieri
eaef6a588d Added new primitives from LTR set, fixed a possible crash on "transforms" deletion from emblems and "ability$", fix source card for token creation inside ability$!!$ keyword. 2023-07-03 18:11:17 +02:00
Darren J. de Lima
44cf433b06 Add Discord, archival notice for forums 2023-07-01 18:36:16 +01:00
Darren J. de Lima
1c40e3a889 Fix URLs, minor formatting 2023-07-01 18:31:41 +01:00
Darren J. de Lima
e19519a39c Improve README, add Wiki as submodule
Ensures developers get a full offline copy of documentation when cloning repo.
2023-07-01 18:27:05 +01:00
Vittorio Alfieri
fe8144553a Updated AI commander deck. 2023-07-01 18:28:39 +02:00
Vittorio Alfieri
617ce45dbc Improved implementation for isCommander and RingBearer card status (now they are no longer basic abilities but inner card properties in order to avoid conflicts with abilitiy modificators), added a white border on commanders to highlight them during match in the various game zones. 2023-07-01 16:28:19 +02:00
Vittorio Alfieri
6731251d07 Added new primitives from LTR set, improved AMASS macrps for Zombie Army. 2023-06-30 21:50:11 +02:00
Vittorio Alfieri
7fab07638e Added new primitives from LTR set. 2023-06-29 22:59:47 +02:00
Vittorio Alfieri
1ab4e4ebfd Added new primitives from LTR set, added notrigger option for special tokens such as "The Monarch" and "The Ring" and "The Initiative", fixed LTR dat file, updated missing cards by sets list, added "untp" option for "rehook" and "retarget" ability to untap the equipped creature, added new restriction "oppoattacked" to check if your opponent has attacked during the current turn. 2023-06-28 17:07:09 +02:00
Vittorio Alfieri
9760ab39b7 Added new primitives from LTR set, improved "steal" ability with "and" option, printed the nember of ring temptations on "The Ring" card, improved "hasdead" restriction to calculate if a card of a specific type has died during the current turn. 2023-06-27 18:17:22 +02:00
Vittorio Alfieri
edc0aebf04 Fixed LTC and SIR dat files, added new primitives from LTR set, implemented the new abilities and trigers related to ring bearer and ring temptations for LTR and LTC sets. 2023-06-26 22:27:29 +02:00
Vittorio Alfieri
b00f142168 Merge branch 'master' of github.com:WagicProject/wagic 2023-06-25 20:51:44 +02:00
Vittorio Alfieri
197686962c Improved Android donwloader, updated Android manifest to fix release version, updated AI commander deck, added LTR and LTC sets, updated cards image url list, updated missing cards by sets list. 2023-06-25 20:51:01 +02:00
Eduardo MG
0d313bb34e Bug fixes to primitives
Kiora, the Crashing Wave
Ral, Storm Conduit
Ezuri, Stalker of Spheres ))
Staff of the Storyteller
Exuberant Wolfbear
2023-06-25 12:15:28 -06:00
Vittorio Alfieri
9a23c4b83b Fixed some primitives with conjure and phyrexian mana, fixed a bug on "conjure" ability, improved getCardbyName method for castcard with namedcard option, for meld and for flip/turnside ability. 2023-06-24 23:01:25 +02:00
Vittorio Alfieri
20fa180864 Improved Android downloader for token images. 2023-06-23 21:57:29 +02:00
Vittorio Alfieri
6a73b41724 Updated Card Image Url list for SIR set. 2023-06-23 17:38:56 +02:00
Vittorio Alfieri
df1a6c10a0 Added / fixed primitives from NEO set, improved Android downloader, updated missing cards by sets list, added SIR and SIS sets, updated card image url links, fixed MUL dat file, fixed a possible crash on "transforms" ability, added new trigger for ninjutsu ability, added new ability readytofight to set a creature tapped and attacking without being a ninja. 2023-06-23 17:25:04 +02:00
Vittorio Alfieri
c2d78db724 Added / fixed primitives from NEO set, added "mytgtforced" target for equipments and auras, added "numofactivation" keyword to give PT according to how many time an ability has triggred (e.g. "Bronze Cudgels"). 2023-06-22 18:39:11 +02:00
Vittorio Alfieri
797514521e Added / fixed primitives from NEO set, updated missing cards by sets list, improved "removesinglecountertype" ability (added "all" option to remove a specific amount of each kind of counter on a target). 2023-06-21 18:31:50 +02:00
Vittorio Alfieri
1458b4a872 Improved Android downloader for token images. 2023-06-20 19:14:02 +02:00
Vittorio Alfieri
f9bcaf53c2 Added / fixed primitives from NEO set, improved Android downloader for token images, fixed a problem with castcard copied option for permanents, fixed a bug on colorless mana calculation for AI during combo. 2023-06-20 17:29:44 +02:00
Vittorio Alfieri
721a3edefb Added new primitives from NEO set, fixed NEO dat file, updated card image url list. 2023-06-19 16:35:50 +02:00
Vittorio Alfieri
d4c2fecb69 Added primitives from ONE and NEO sets, fixed XLN dat file, updated missing cards by sets list. 2023-06-19 12:35:11 +02:00
Vittorio Alfieri
56a391193d Fixed MOC set dat file, updated Card Image Url list, improved Android Image Downloader. 2023-06-19 11:00:03 +02:00
Vittorio Alfieri
3b05932a8b Added / fixed primitives from ONE set, fixed Treasure name in all sets and primitives, updated missing cards by sets list, improved token creator ability by trying to retrieve the token id from the same set of source card (e.g. Urza's Saga), improved toxic ability adding a new target chooser "hastoxic" and adding a new keyword "toxicity" to retrieve the toxic amount of card. 2023-06-18 23:23:51 +02:00
Vittorio Alfieri
2ca092090d Added / fixed primitives from ONE set, updated missing cards by sets list. 2023-06-18 02:44:43 +02:00
Vittorio Alfieri
170987e418 Added new primitives from ONE set. 2023-06-16 15:16:40 +02:00
Vittorio Alfieri
8c85c56ff3 Fixed some typos in primitives. 2023-06-15 23:41:27 +02:00
Vittorio Alfieri
8a440d5d09 Added / fixed primitives from ONE set, updated missing card by sets list, improved triggers and added new trigger for proliferation effect. 2023-06-15 19:15:44 +02:00
Vittorio Alfieri
b7e8907877 Added / fixed primitives from J22 and ONE set, updated missing cards by sets list. 2023-06-13 14:11:20 +02:00
Vittorio Alfieri
67ab960608 Added new primitives from J22 and NEO sets, fixed some primitives. 2023-06-12 16:55:20 +02:00
Vittorio Alfieri
dacc76711c Updated an AI commander deck. 2023-06-10 23:43:06 +02:00
Eduardo MG
d42b5411d2 Bug Fixes to primitives, some reported in the Discord
Akki Battle Squad closing tag
Akki Ronin is not really missing, related to the missing closing tag
Ruthless Technomancer
Blossoming Defense
Ana Sanctuary
Spikefield Hazard
Headless Rider
Mishra's Research Desk
Simian Sling
2023-06-10 15:27:06 -06:00
Vittorio Alfieri
a5487311c4 Fixed several errors on primitives, fixed a bug on "mofified" target, restore a previous test on regenerate ability. 2023-06-10 22:52:49 +02:00
Vittorio Alfieri
1191d401c9 Update _tests.txt for a possible false problem on regenerate… 2023-06-09 23:44:50 +02:00
Vittorio Alfieri
0f607b2cbe Added/fixed primitives from NEC set, added new keyword "modified" to target creatures that are enchanted or geared or with counters, updated missing card by set list. 2023-06-09 22:45:08 +02:00
Vittorio Alfieri
2831ac12ae Added/fixed some primitives from J22 and NEC sets, fixed J22 and NEC dat file, updated card image url from NEC and J22 sets, fixed a bug on token copy, improved flip ability for tokens. 2023-06-05 17:55:11 +02:00
Vittorio Alfieri
f8fc173e86 Added / fixed some primitives, updated missing cards by set list, added new "reconfigure" ability based on "equip" one. 2023-06-04 20:11:40 +02:00
Eduardo MG
50251e460b Bug fixes to primitives
Pilot
Haunted One
Bane, Lord of Darkness
Bhaal, Lord of Murder
Humility
Redcap Melee
2023-06-03 19:28:06 -06:00
Vittorio Alfieri
a78110759b Improved Android downloader to use ScryFall APIs, fixed J22 dat file, updated card url links for J22 set. 2023-06-04 01:11:01 +02:00
Vittorio Alfieri
24c0684563 Improved Androd downloader for NES set, added new primitives from NEC and NEO sets, fixed NEC dat file, updated card url links. 2023-06-02 17:10:02 +02:00
Eduardo MG
d9af81007f Bug fixes to borderline file
Fixed unbalanced parentheses
Pegasus Courser
Season of Growth crashes
2023-06-01 14:10:35 -06:00
Vittorio Alfieri
c0f2635990 Fixed ONE, ONC, NEO and DMR dat file, added new primitives from ONC set, fixed primitives, improved Android downloader, updated missing card by set list, updated cards image url links, fixed a bug on parser when reading the substring "equip" with a different meaning. 2023-06-01 19:04:28 +02:00
Vittorio Alfieri
d3deae3a6a Added last primitives from BRC set, fixed some primitives, improved triggers for counters, fixed a bug on removesinglecounter ability, updated missing card by set list. 2023-06-01 10:29:35 +02:00
Vittorio Alfieri
aa87536c4a Fixed Android downloader for BRR set. 2023-05-31 15:41:48 +02:00
Vittorio Alfieri
ea9d053d76 Added new primitives from BRO and BRC sets, fixed some primitives, fixed BRR dat file, fixed castcard ability to avoid double activities activation, fixed a bug on "canloyaltytwice" ability. 2023-05-31 15:35:22 +02:00
Vittorio Alfieri
21687bc3ee Improved castcard "restricted" option for land cards, fixed fresh attribute reset on library cards, improved "can play" restriction, fixed BRO set dat file, updated card url file for BRO set, added/fixed some primitives from BRO set. 2023-05-30 23:27:18 +02:00
Eduardo MG
06b1a47a56 Bug fixes to primitives
Invocation of the Founders
Sanctifier of Souls
Rest for the Weary so you don't get double trigger on cards that care about lifegain
Raking Claws
2023-05-30 00:33:38 -06:00
Vittorio Alfieri
4f4addb8e9 Updated an AI commander deck, improved damage and life and manaproduce ability to send the correct source card on triggers when they are used inside the "ability$!!$" keyword, fixed issue #1090 about filtering cards with add{c} instead of add{1} ability. 2023-05-30 00:08:25 +02:00
Vittorio Alfieri
c17abc3dca Fixed image url list for BRO and BRC sets. 2023-05-29 18:19:59 +02:00
Vittorio Alfieri
2e09f489cb Added some new primitives from BRO set, fixed BRO and BRC card dat files, updated card image url links, added new keyword "prodmana" to count the specific amount of mana spent to cast a card. 2023-05-29 18:05:21 +02:00
Eduardo MG
961f00441f Sagas from Kamigawa: Neon Dynasty (NEO)
Still some missing
Cards added:
Fable of the Mirror-Breaker
Reflection of Kiki-Jiki
Okiba Reckoner Raid
Nezumi Road Captain
Era of Enlightenment
Hand of Enlightenment
Befriending the Moths
Imperial Moth
Tales of Master Seshiro
Seshiro's Living Legacy
The Modern Age
Vector Glider
The Shattered States Era
Nameless Conqueror
Bug fixes:
Fry
Liliana, the Last Hope
Brinelin, the Moon Kraken
2023-05-28 18:36:46 -06:00
Vittorio Alfieri
99f08276c6 Addes some new primitives from BRO set, fixes BRO and BRC dat files, updated image list url for BRO and BRS sets, imrpoved an AI deck, improved meld ability with "and" option, added new ability to allow a planeswalker to activate its loyalty abilities twice in a turn, improved Android downloader. 2023-05-28 23:17:21 +02:00
Vittorio Alfieri
066b30b1b7 Improved "Affinity" ability to support variables, fixed several primitives with affinity ability. 2023-05-27 21:24:25 +02:00
Eduardo MG
5785e413ec Bug fixes on primitives
Jace, Wielder of Mysteries
Chain Reaction
Rona, Tolarian Obliterator
Seize the Soul
Graveyard Marshal
Varina, Lich Queen
2023-05-27 00:11:31 -06:00
Vittorio Alfieri
9b162b434b Created a macro for going to adventure, 2023-05-26 21:47:48 +02:00
Vittorio Alfieri
c66387320f Merge branch 'master' of github.com:WagicProject/wagic 2023-05-26 21:36:36 +02:00
Vittorio Alfieri
ad9ea0f972 Fixed generic Affinity ability, fixzed some primitives with affinity abilities. 2023-05-26 21:36:11 +02:00
Eduardo MG
faa24acbc3 Fix for adventure cards
Some closing brackets and parenthesis were missing. Maybe going on an adventure could be a macros.

Also fixes on:
Soldevi Adnate
Poultrygeist
Goblin Cratermaker
2023-05-26 13:32:58 -06:00
Vittorio Alfieri
3dfd3253b2 Fixed transformation ability for instant and sorceries when the duration was uynt uent or forever, fixed several primitives to correctly set transformation duration of targeted cards. 2023-05-26 17:16:57 +02:00
Vittorio Alfieri
8df057f78a Added last primitives from MAT set, updated missing cards by set list, improved trigger and filtering for mana production abilities. 2023-05-25 18:48:00 +02:00
Eduardo MG
319cfe7889 Bug fixes in primitives
Heir to the Night
Indoctrination Attendant
Firecat Blitz
Ghalta and Mavren
2023-05-24 23:07:06 -06:00
Vittorio Alfieri
09f4c408cd Fixed some primitives, added new primitives from MAT set, improved filter for multicolored cards, added new keywords for handling multicolored cards. 2023-05-24 15:15:52 +02:00
Vittorio Alfieri
675705a6e5 Fixed several bugs, fixed several primitives, improved affnity for other types of cards, improved flip ability for token, added some new primitives from MAT set. 2023-05-23 20:29:43 +02:00
Vittorio Alfieri
1488bbc0f6 Fix compilation error on Android donwloader. 2023-05-22 16:14:21 +02:00
Vittorio Alfieri
1818bf4a5e Improved Android downloader, updated CardImageList.csv for some token urls. 2023-05-22 14:52:57 +02:00
Vittorio Alfieri
869e0309ec Fixed some primitives, added new keyword "hasdead" to allow restrictions based on the death of a specific card type, fixed type sorting on cards changing zones removing the side effect of new lands enter the battlefield on the left. 2023-05-22 10:42:10 +02:00
Eduardo MG
5f1371f914 Cards from Jumpstart 2022 (J22)
Michiko's Reign of Truth
Portrait of Michiko
Angelic Cub
Chains of Custody
Distinguished Conjurer
Biblioplex Kraken
Launch Mishap
Merfolk Pupil
Soul Read
Conductor of Cacophony
Creeping Bloodsucker
Deadly Plot
Suspicious Shambler
Ardoz, Cobbler of War
Coalborn Entity
Daring Piracy
Plundering Predator
Giant Ladybug
Mild-Mannered Librarian
Primeval Herald
Spectral Hunt-Caller
Towering Gibbon
Infernal Idol
2023-05-22 00:03:03 -06:00
Vittorio Alfieri
2374b00dfd Fixed some primitives, fixed several bug on damage management for planeswalkers and battle cards, added new keywords "noloyaltydamage" and "nodefensedamage" to avoid damage remove counters, 2023-05-22 01:19:15 +02:00
Vittorio Alfieri
dd28f274d1 Fixed some primitives, added some new primitives from MAT set, added new triggers to handle better counters, improved a lot of abilities for replacing atoi with WParserInt class, fixed bug on change types on xone changing, fixed bug on manacost during mutate and flip actions, fixed other minor bugs. 2023-05-21 18:52:16 +02:00
Eduardo MG
c3e8379258 Macros for surveil, bug fixes on primitives
Surveil, like scry, using parameters causes bugs so each value has to be indicated, updated some oracle text on cards that now use surveil.
Bug fixes:
Wolfwillow Haven
Karador, Ghost Chieftain
Ryusei, the Falling Star
Phyrexian Etchings
Pillar Of Flame. Exiles itself when it targets a player
Tuya Bearclaw
Dauthi Mindripper
2023-05-21 00:22:33 -06:00
Vittorio Alfieri
430589e64c Fixed Android downloader for BRO set. 2023-05-20 21:23:42 +02:00
Vittorio Alfieri
aafb88664c Added MAT set, fixed BRO set, updated CardImageLinks, Updated Android downloader, updated missing card by set list. 2023-05-20 19:06:50 +02:00
Eduardo MG
c81384ab1d Filter for snow type, adding battles into random decks
Bug fixes:
Boreas Charger
Heartfire Immolator
Scatter Ray
Pariah's Shield
Zimone and Dina
Aetherwing, Golden-Scale Flagship
2023-05-19 18:01:51 -06:00
Vittorio Alfieri
2d8a1a8a5f Added last primitives from MOM set, fixed some primitives, added new ability to send death card on bottom of library instead of graveyard. 2023-05-20 00:32:56 +02:00
Vittorio Alfieri
0e0b3a78fe Added some new primitives from MOM set, fixed some primitives, added new keyword "hasconvoke" to target spells which have convoke cost. 2023-05-19 20:43:26 +02:00
Vittorio Alfieri
3bd3933c66 Added new prmitives from MOM set, fixed primitives, improved flipacoin ability, imporved battle cards defeated trigger, added new filters for event to check permanents on graveyard. 2023-05-18 23:04:22 +02:00
Vittorio Alfieri
452cf4793f Fixed some primitives, added some new primitives from MOM set. 2023-05-17 15:13:25 +02:00
Eduardo MG
15588eda93 Bug fixes to primitives
Dreadfeast Demon not a may
Orzhov Advokist was getting every one of your creatures 2 counters
Baleful Stare
Energy Chamber shouldn't let you choose counters on artifact creatures if there are none on the field
2023-05-17 00:23:06 -06:00
Vittorio Alfieri
90e8292660 Improved toughness target filtering for Planeswalkers and Battles. 2023-05-16 13:08:25 +02:00
Vittorio Alfieri
19f7ee3615 Merge pull request #1088 from EduardoMunozGomez/master
Merged from EduardoMunozGomez: Condition to add a background to the commander deck
2023-05-16 09:48:10 +02:00
Eduardo MG
fa50c2f5df Temporal 2023-05-15 20:34:00 -06:00
Eduardo MG
01f3b23bea Condition to add a subtype=background to the commander deck 2023-05-15 20:17:50 -06:00
Eduardo MG
36fbb0d47d Merge branch 'WagicProject:master' into master 2023-05-15 20:12:26 -06:00
Eduardo MG
84c9667c71 Reduced sacrifice efficiency for AI. Bug fixes in primitives
The AI is too willing to sacrifice permanents.
The AI sometimes doesn't use a Planeswalker ability, increasing efficiency.
Gonti, Lord of Luxury. An effect that instructs you to "cast" a card doesn't allow you to play lands.
Rona, Tolarian Obliterator exra )
Oblivion Strike
Steel Seraph
True Love's Kiss
2023-05-15 20:10:42 -06:00
Eduardo MG
84c2c49581 Merge branch 'WagicProject:master' into master 2023-05-15 16:51:10 -06:00
Vittorio Alfieri
0a0c541f07 Now it's possible to use toughness target filtering even for planeswalkers and battles, added some new primitives from MOM set. 2023-05-15 23:04:24 +02:00
Vittorio Alfieri
546c755185 Fixed redirection of damage for battle cards, added 2 new keywords to target combined zones, added some new primitives from MOM set. 2023-05-15 16:37:10 +02:00
Vittorio Alfieri
a1d82d9f84 Fixed a problem of damage redirection from player to battle cards, added some new primitives from MOM set,fixed some primitives. 2023-05-15 11:23:38 +02:00
Eduardo MG
7a52f789b9 Fixed backgrounds so the enchantment itself doesn't get the ability, only the creature
Bug fixes:
Cultist of the Absolute
Depraved Harvester
transform Rona
Tainted Adversary
2023-05-14 23:36:04 -06:00
Vittorio Alfieri
0867265039 Added some new primitives from MOM set. 2023-05-15 00:56:25 +02:00
Vittorio Alfieri
ad6ae4e188 Fixed all battle cards, improved stun counter rule, added some new primitives from MOM set. 2023-05-14 18:10:39 +02:00
Vittorio Alfieri
efe9ad8bc4 Added some new primitives from MOM set, added new rule for Stun counter. 2023-05-14 15:56:38 +02:00
Eduardo MG
12f3a360ba Update borderline.txt
Overloaded Mage-Ring, cards like this crash the game, any permanent trying to copy an instant or sorcery with the syntax activate castcard(copied noevent), doing some testing transforms((,newability[clone])) oneshot seems to be working but you don't get to choose new targets for the copied instant or sorcery.
Karlach, Fury of Avernus
Mummy Paramount
Sunder the Gateway I guess the extra newability[ was a mistake
backgroundpartner was misspelt
2023-05-13 19:49:58 -06:00
Eduardo MG
e92191f38d Merge branch 'WagicProject:master' into master 2023-05-13 15:57:47 -06:00
Vittorio Alfieri
59e0f0902e Fixed CLB set for tokens, updated Android downloader, updated card image list. 2023-05-13 19:10:55 +02:00
Vittorio Alfieri
5a2a986ec6 Fixed card images url. 2023-05-13 15:59:46 +02:00
Vittorio Alfieri
c10054ae6f Added some new primitives from MOM set, updated Android downloader, fixed MOM and MOC card file to add tokens, updated Images links. 2023-05-13 15:52:25 +02:00
Vittorio Alfieri
24dac100f2 Fixed MH2 card file, fixed images links for MH2 set, added some new primitives from MOM set. 2023-05-13 11:02:18 +02:00
Eduardo MG
a0209fa158 MH2 alt art addition, CLB legends chooseabackground -> backgoundpartner
Modern Horizons 2 (MH2) to include alternative artwork
Some legends from CLB had a placeholder ability, changed to the implemented backgoundpartner
Bug Fixes:
Carnelian Orb of Dragonkind
Teferi, Temporal Pilgrim -12
Noxious Grasp
Nine-Fingers Keene
Song of the Dryads
2023-05-13 00:08:20 -06:00
Vittorio Alfieri
33103e648f Added Incubator and Phyrexian cards in MOM set, fixed icubate ability, updated card image list. 2023-05-12 17:50:45 +02:00
Vittorio Alfieri
f73b1869d5 Added some new primitives from MOM set, fixed some primitives. 2023-05-12 15:57:55 +02:00
Vittorio Alfieri
4ccad97eb0 Fix attacking menu for planeswalkers and battles, fixed MOM dat file. 2023-05-12 11:25:08 +02:00
Eduardo MG
967931a385 Macros replacements
_SPECTACLE_
_THOPTERTOKEN_
_AFTERLIFETOKEN_
2023-05-12 00:31:44 -06:00
Eduardo MG
e151790481 Bug fixes, correcting reminder text on mill cards
lifeleech when applicable
Teferi's Realm
Gorging Vulture
Kefnet's Monument
Rowdy Crew
Kjeldoran Gargoyle
Muxus, Goblin Grandee
2023-05-11 11:19:52 -06:00
Vittorio Alfieri
88099ce431 Fixed duplicated id on MOM cards. 2023-05-11 16:52:00 +02:00
Vittorio Alfieri
4e22b27783 Fixed compilation error on PSP/PSVITA. 2023-05-11 16:12:03 +02:00
Vittorio Alfieri
6ef8b45709 Implemented "Battle" type from MOM set (they are like planeswalkers), added some new primitives from MOM set, fixed some primitives targeting any target. 2023-05-11 15:57:08 +02:00
Vittorio Alfieri
f395274c0b Updated unsupported primitives and mmissing card by set list. 2023-05-10 22:18:12 +02:00
Vittorio Alfieri
b23014fcd6 Merge branch 'master' of github.com:WagicProject/wagic 2023-05-10 21:55:09 +02:00
Vittorio Alfieri
cf329e82a9 Added version to artifacts before automatic uploading on travis release. 2023-05-10 21:54:57 +02:00
Eduardo MG
32d18c9a68 Added cards from recent sets ONE, MOC, BRO
Didn't deleted any card but some seem out of order.

Tamiyo's Logbook
Venerated Rotpriest
Armored Scrapgorger
Vindictive Flamestoker
Fleshless Gladiator
Incisor Glider
Jor Kadeen, First Goldwarden
Kemba, Kha Enduring
Shrapnel Slinger
Ravenous Necrotitan
Urabrask's Anointer
Indoctrination Attendant
Ambulatory Edifice
Kuldotha Cackler
Benalish Faithbonder
Furnace Punisher
Phyrexian Atlas
Dokuchi Silencer
Shigeki, Jukai Visionary
Tameshi, Reality Architect
Planar Incision
Scavenged Brawler
Ramses, Assassin Lord
Hazezon, Shaper of Sand
Rohgahh, Kher Keep Overlord
Guardian Scalelord
Ichor Elixir
Deluxe Dragster
Liliana's Talent
Vivien's Talent
Path of the Ghosthunter
Path of the Animist
Path of the Enigma
Path of the Pyromancer
Path of the Schemer
Mine Worker
Power Plant Worker
Tower Worker
Shoot Down
Raze to the Ground
Recommission
Demolition Field
Skitterbeam Battalion
Tawnos's Tinkering
Battlefield Butcher
Carrion Locust
Kill-Zone Acrobat
2023-05-09 23:50:28 -06:00
Eduardo MG
836410dca7 Bug fixes in primitives @cycled
Marching Duodrone
Saddled Rimestag
Prickly Marmoset
reptilian reflection
Bane of the Living
2023-05-09 23:25:03 -06:00
Vittorio Alfieri
b0f5c1f7f7 Added some new primitives from MOC set, updated ai commander deck. 2023-05-09 16:38:29 +02:00
Vittorio Alfieri
82cff5659c Added CardImageLinks.csv to Travis-CI for automatic copy on travis-ci release. 2023-05-09 10:13:50 +02:00
Vittorio Alfieri
f51a024b03 Fixed DMC links. 2023-05-09 10:07:17 +02:00
Vittorio Alfieri
41e4f04aa3 Changed GITHUB token for travis, fixed DMC set. 2023-05-09 09:17:22 +02:00
Eduardo MG
c3802477c7 Update CardImageLinks.csv
Dominaria United Commander (DMC)
fixed null multiverseId that where not available
2023-05-08 22:39:28 -06:00
Eduardo MG
d9d8ab0b82 _cards.dat Dominaria United Commander (DMC)
LEGENDS RETOLD • 20 CARDS with multiverseId
2023-05-08 21:58:16 -06:00
Vittorio Alfieri
5e91b82a0e Merge branch 'master' of github.com:WagicProject/wagic 2023-05-09 01:01:54 +02:00
Vittorio Alfieri
2c68ea91f7 Fix Travis and reverted Rules.cpp due to many compilation error for pointers. 2023-05-09 01:01:39 +02:00
Eduardo MG
b6c733b397 Update checks for balanced parentheses, brackets, and curly braces in all files within primitives
This update can help prevent errors and improve the quality of the code within the primitives directory.

Other bug fixes:
Taigam, Sidisi's Hand
Grave Strength
Cry of Contrition
Dread Summons
Old Stickfingers so it doesn't trigger certain cards that care about 1/1 counters
2023-05-08 16:52:28 -06:00
Vittorio Alfieri
5f466399af Fix Travis Build. 2023-05-09 00:42:13 +02:00
Vittorio Alfieri
9995a2f9a6 Fix Travis Build. 2023-05-09 00:38:34 +02:00
Vittorio Alfieri
9808aea6d0 Fix Travis CI 2023-05-09 00:32:08 +02:00
Vittorio Alfieri
ee2fe3c722 Fix Travis, restored compatibility to Python 2.7 2023-05-09 00:28:04 +02:00
Vittorio Alfieri
95a37fd138 Fix Travis CI. 2023-05-09 00:19:40 +02:00
Vittorio Alfieri
103c8aa3c2 Fix Travis. 2023-05-09 00:12:02 +02:00
Vittorio Alfieri
39965be795 Fix Travis. 2023-05-09 00:09:27 +02:00
Vittorio Alfieri
cf39404441 Try to Fix Travis Errors. 2023-05-09 00:05:34 +02:00
Vittorio Alfieri
cea234e2ab Try to fix Travis Build CI. 2023-05-09 00:02:41 +02:00
Vittorio Alfieri
d988e9e359 Test for Travis CI build. 2023-05-08 23:57:40 +02:00
Vittorio Alfieri
9948b82c6b Test for Travis CI build. 2023-05-08 23:50:50 +02:00
Vittorio Alfieri
1fd88d1fab Test for travis error. 2023-05-08 23:46:49 +02:00
Vittorio Alfieri
0ced3bfb09 Fixed print on py script. 2023-05-08 23:27:07 +02:00
Eduardo MG
96ab9cf59d Bug fixes to primitives, Planar Guide doesn't lose eveyone into the AEther anymore
Brutal Cathar
Treasure Hunt casted by AI
Realm Seekers
Taigam, Sidisi's Hand
Unholy Indenture should not work with tokens
fixed hybrid mana in SNC
2023-05-08 00:21:34 -06:00
Eduardo MG
a19ede4c12 Update config.yml 2023-05-07 16:48:19 -06:00
Eduardo MG
5d41f6dfdb Update config.yml 2023-05-07 16:43:41 -06:00
Eduardo MG
ee86e7b478 Update config.yml 2023-05-07 16:38:10 -06:00
Eduardo MG
2eb719919c Update config.yml 2023-05-07 16:33:00 -06:00
Eduardo MG
6ae8984b41 Update config.yml 2023-05-07 16:27:54 -06:00
Eduardo MG
b8ea9e6b5f Update config.yml 2023-05-07 16:26:27 -06:00
Eduardo MG
203876aadb Update config.yml 2023-05-07 16:13:23 -06:00
Eduardo MG
ea6596a431 Update config.yml 2023-05-07 14:16:10 -06:00
Eduardo MG
d2e1cf34ca Update config.yml 2023-05-07 14:08:44 -06:00
Eduardo MG
4a9733b510 Update config.yml 2023-05-07 14:00:36 -06:00
Eduardo MG
5b56073243 Update config.yml 2023-05-07 13:57:17 -06:00
Eduardo MG
6e98e6f9e6 Update config.yml 2023-05-07 13:37:03 -06:00
Eduardo MG
8204d5a5c1 Update config.yml 2023-05-07 12:23:19 -06:00
Eduardo MG
b613da48db Update config.yml 2023-05-07 12:22:02 -06:00
Eduardo MG
b3712a8cf1 Update config.yml 2023-05-07 12:19:53 -06:00
Eduardo MG
bd76554186 Update config.yml 2023-05-07 12:18:18 -06:00
Eduardo MG
756a8907c8 Update config.yml 2023-05-07 12:17:06 -06:00
Eduardo MG
73b33bb0a0 Update circle-script.sh 2023-05-07 11:34:19 -06:00
Eduardo MG
9efd2bcfeb Update config.yml 2023-05-07 11:31:12 -06:00
Eduardo MG
05e857f735 Update config.yml 2023-05-07 11:25:13 -06:00
Eduardo MG
947277af5a Update config.yml 2023-05-07 11:24:42 -06:00
Eduardo MG
ecd4b85e22 Update config.yml 2023-05-07 11:22:48 -06:00
Eduardo MG
6eebfa77a4 Create circle-script.sh 2023-05-07 11:15:23 -06:00
Eduardo MG
61c4bff54e Update config.yml 2023-05-07 10:43:38 -06:00
Eduardo MG
b9f77513b6 Merge pull request #1 from EduardoMunozGomez/circleci-project-setup
Circleci project setup
2023-05-07 10:33:33 -06:00
Eduardo MG
d3caf2fb15 Merge branch 'WagicProject:master' into circleci-project-setup 2023-05-07 10:31:16 -06:00
Vittorio Alfieri
94d1267abf Fixed compilation issue on PSP/PSVITA after 76f5a6b commit. 2023-05-07 15:13:22 +02:00
Vittorio Alfieri
ab6f80c242 Fixed tab with blank spaces. 2023-05-06 23:13:45 +02:00
Vittorio Alfieri
c3d0fd91ae Fixed Cultist of the Absolute. 2023-05-06 23:09:46 +02:00
Eduardo MG
76f5a6b851 Update Rules.cpp
Replaces the use of raw pointers with std::unique_ptr smart pointers, which will automatically manage the memory deallocation for you. It also uses the release() method to transfer ownership of the tempDeck pointer to the Player object. Overall, these changes should help ensure that the code is safer and less prone to memory leaks.
2023-05-06 14:04:07 -06:00
Vittorio Alfieri
f5e5444734 Fixed MOC cards dat file. 2023-05-06 16:15:28 +02:00
Vittorio Alfieri
dca0d9c201 Updated missing card bt set list. 2023-05-06 16:06:01 +02:00
Eduardo MG
273d666bcc New cards from MOC, MOM
March of the Machine Commander (MOC)
March of the Machine (MOM)
A few others from BRO and ONE
Some old auras that get sacrificed at end of turn if you cast them as if they had flash
fixed Fire Prophecy
NEW:
Umori, the Collector
Rootwire Amalgam
Steel Seraph
Tyrranax Rex
Paladin of Predation
Axgard Artisan
Zephyr Winder
Phyrexian Pegasus
Orthion, Hero of Lavabrink
Surrak and Goreclaw
Angelic Intervention
Pile On
Terror of Towashi
Interdisciplinary Mascot
Fertilid's Favor
Vengeant Earth
Sidar Jabari of Zhalfir
Moira and Teshar
Shalai and Hallar
Vodalian Wave-Knight
Bitterthorn, Nissa's Animus
Herald of Hoofbeats
Chivalric Alliance
Darksteel Splicer
Mistmeadow Vanisher
Death-Greeter's Champion
Hedron Detonator
Pain Distributor
Locthwain Lancer
Schema Thief
Exsanguinator Cavalry
Nesting Dovehawk
Filigree Vector
Conjurer's Mantle
Infernal Sovereign
Firemane Commando
Goro-Goro and Satoru
Katilda and Lier
Slimefoot and Squee
Soar
Armor of Thorns
Grave Servitude
Lightning Reflexes
Spider Climb
Parapet
Mystic Veil
Relic Ward
Titania, Voice of Gaea
Titania, Gaea Incarnate
Professional Face-Breaker
Oracle's Vault
Volcanic Spite
2023-05-05 22:20:30 -06:00
Eduardo MG
1e6a8814de For some reason the engine can return tokens from exile
Changed the macros so a token doesn't learn the ability to return from exile while blinked
limited cards with shuffledfoeof or else their effect reproduces for every card in a deck
Liliana Vess, ability description
Domri, Chaos Bringer -8
Research Thief is a mandatory draw
_SERVOTOKEN_ replacements
2023-05-05 19:18:23 -06:00
Vittorio Alfieri
984c880efc Fixed duplicated wrong links for double cards of MOC set. 2023-05-05 23:01:06 +02:00
Vittorio Alfieri
c5b982c2b6 Updated missing cards by set list. 2023-05-05 22:48:10 +02:00
Vittorio Alfieri
aa722ee3f4 Added some new primitives from CLB set. 2023-05-05 22:42:46 +02:00
Eduardo MG
56be7d8c47 Update CardImageLinks.csv
Changes in March of the Machine Commander (MOC)
2023-05-05 08:32:30 -06:00
Eduardo MG
9f878f6145 Bug fixes and typos, Afterlife token macros
Wild Magic Surge had unbalanced parenthesis
# Afterlife
#AUTO_DEFINE _AFTERLIFETOKEN_ create(Spirit:Creature Spirit:1/1:white:black:flying)
Kaya, Ghost Assassin was crashing the game
Read the Bones
"Edict like" effects should not target, so you can select creatures with shroud

ALL test successful
2023-05-04 16:33:27 -06:00
Vittorio Alfieri
721adb8db0 Fixed initiative and undercity links. 2023-05-04 17:25:53 +02:00
Vittorio Alfieri
784eab6dbf Added some new cards from CLB set. 2023-05-04 16:41:04 +02:00
Vittorio Alfieri
be03648e11 Added some new planeswalker from CLB set. 2023-05-04 16:37:12 +02:00
Vittorio Alfieri
44ffc5d895 Fixed ai set commander for Belbe. 2023-05-04 16:23:24 +02:00
Vittorio Alfieri
d4be791e68 Added image links for initiative and undercity cards. 2023-05-04 16:18:53 +02:00
Vittorio Alfieri
16ba96b2f0 Fix initiative trigger. 2023-05-04 15:51:55 +02:00
Vittorio Alfieri
6af7acce0b Fix take the initiative ability and triggers. 2023-05-04 15:42:03 +02:00
Vittorio Alfieri
0efc61fda7 Coded the initiative ability from CLB set, added some condition to test if a card has been casted from exile or sideboard or commandzone. 2023-05-04 14:56:04 +02:00
Vittorio Alfieri
509e25d4cc Start to code "take the initiative" ability for CLB set. 2023-05-04 14:34:02 +02:00
Eduardo MG
0d29633793 Bug fixes, closed issue #518
Nissa's Defeat
Ornery Dilophosaur
Species Specialist
Phantom Wings
Sun Clasp
Trickster's Talisman sacrifice
Brain in a Jar
Dream Tides untap outside upkeep
Rain of Thorns
Sudden Spoiling
Power Taint,Slow Motion, closed issue #518
Barbed Lightning
Banish into Fable
2023-05-03 16:58:44 -06:00
Eduardo MG
723babac46 Macros for _MUST_BE_BLOCKD_, bug fixes
damage:x all(creature,player) produces a bug that does not damage creatures with hexproof or shroud
Exotic Orchard cannot produce colorless mana on its own. It can only produce mana of a color that a land an opponent controls could produce.
Stitched Mangler
Massive Might
Halana, Kessig Ranger
Animate Wall was falling off
Ram Through
Must be blocked this turn if able, changed previous version since that doesn't reflect the effect of the card, one creature that must be blocked is different to force all creatures opoonent controls to block.
_MUST_BE_BLOCKD_ notice the unique spelling, it is so it doesn't clashes with _BLOCKED_
Daretti, Ingenious Iconoclast -6 ability. Choose target artifact card in a graveyard or artifact on the battlefield. Create three tokens that are copies of it
Platoon Dispenser
Bloodline Necromancer
Tawnos, the Toymaker
Simic Manipulator
Urza's Tome
2023-05-02 19:01:37 -06:00
Eduardo MG
d1caf06660 Bug fixes, Gift of the Gargantuan crashed the game when casted by the AI
Gargos, Vicious Watcher
Grazilaxx, Illithid Scholar
Growing Rites of Itlimoc
Haywire Mite
Neyith of the Dire Hunt
Raff, Weatherlight Stalwart
The Prismatic Bridge
Gift of the Gargantuan
2023-05-01 22:59:06 -06:00
Eduardo MG
4132cf602b Revert "Update .travis.yml"
This reverts commit 6b109317bb.
2023-05-01 22:40:33 -06:00
Eduardo MG
6b109317bb Update .travis.yml 2023-05-01 17:11:00 -06:00
Vittorio Alfieri
c2d060f47d Added some new primitives from CLB set. 2023-05-01 12:24:02 +02:00
Vittorio Alfieri
ee4c3a0057 Fixed Dragon Cultist. 2023-05-01 10:59:31 +02:00
Eduardo MG
f8d515a7ed Brackets balance validations, macros _DISCARD&DRAW_
Using all(player) when applicable
Updated Oracle text for mill
Bug fixes in primitives
Sasaya's Essence
Sythis, Harvest's Hand
Ancient Animus
2023-04-30 19:54:38 -06:00
Vittorio Alfieri
49a618fc37 Added option to download latest core file from Android app (both at startup and from settings menu). 2023-04-30 20:52:52 +02:00
Vittorio Alfieri
800c2f9bf4 Added some ew cards from CLB set. 2023-04-30 19:37:20 +02:00
Eduardo MG
8ca0eaaf40 Fixed _SCAVENGE_, other bug fixes, macros for _ETERNALIZE_
Typo in successful
Lux Cannon so that the AI can use the destroy ability
Throatseeker
Icingdeath, Frost Tyrant you don't "cast" the token
Insubordination
Infectious Curse
Igneous Elemental
Abu Jafar both?
_ETERNALIZE_
2023-04-29 23:54:41 -06:00
Eduardo MG
73712f6bd5 Balanced brackets check, sanitization, bug fixes
Added bracket balancing checks to the program for opening and closing sequences of  parenthesis, square brackets, curly brackets, ,'ability$!' and '!$' characters, as well as for the 'and!(' opening sequence and the ')!' closing sequence.

Sanitization operations removing empty lines and spaces at end of line.

Pious Interdiction so the AI doesn't enchant own creatures.

All 724 Tests Succesful!
2023-04-28 19:49:01 -06:00
Eduardo MG
0b46cd255e Bug Fixes to Primitives
King Narfi's Betrayal
Korvold, Fae-Cursed King
Desecrated Tomb
Arlinn Kord emblem
Rowan, Fearless Sparkmage
2023-04-27 18:51:10 -06:00
Vittorio Alfieri
900a565c96 Added some new primitives from CLB set. 2023-04-27 22:02:10 +02:00
Vittorio Alfieri
8e3761c5f1 Added some new primitives from CLB set. 2023-04-27 14:35:16 +02:00
Vittorio Alfieri
24337d8e66 Fixed background partner ability, added some new cards from CLB set. 2023-04-27 09:19:34 +02:00
Eduardo MG
d9655ab833 Check for balanced brackets
Check for balanced square brackets [] and curly brackets {}.

Couldn't check for parentheses since the engine expects unbalanced parenthesis like in cards that have the string "this(cantargetcard" never closes the parentheses, balancing the parentheses makes the cards stop working, best example: Monstrous

All tests passed.

Morbid Opportunist
Ooze Garden
2023-04-26 17:22:31 -06:00
Eduardo MG
9514ea59d8 Updated 'mills' oracle text, fix typos and bugs, check for balanced brackets
Update some instances of 'puts the top cards of his or her library into his or her graveyard.' into mill cards text.
Using all(player) when applicable.
Check for Balanced Brackets
Liliana, Waker of the Dead does not damage the owner if it doesn't have cards in hand, only opponent
Shipbreaker Kraken
Rockcaster Platoon
Triskaidekaphobia
Cryptolith Fragment
Alpha Status
Flusterstorm
Caldera Hellion
Chronomantic Escape
Hero's Blade
Remember the Fallen
Master of Winds
Lorcan, Warlock Collector now turns revived card into warlock
Lier, Disciple of the Drowned
2023-04-26 08:16:57 -06:00
Vittorio Alfieri
cb3ab39df1 Added some missing primitives from CLB set. 2023-04-26 13:10:42 +02:00
Vittorio Alfieri
593d3c4d9c Merge branch 'master' of github.com:WagicProject/wagic 2023-04-26 13:05:18 +02:00
Vittorio Alfieri
8027ed4bdf Added Background partner ability for CLB commanders, fixed some tab with spaces 2023-04-26 13:05:07 +02:00
Eduardo MG
3ad8c76715 Changes on Scry macros, bug fixes on primitives
Seems like the engine didn't like the parametric macros for Scry as it did the ability twice
Balan, Wandering Knight
Alhammarret's Archive
Skyrider Patrol
Xyris, the Writhing Storm
Emiel the Blessed (this card just refuses to work)
Fight as One
Blizzard Brawl
Hermit of the Natterknolls // Lone Wolf of the Natterknolls
Elaborate Firecannon
Tectonic Reformation
2023-04-25 00:23:53 -06:00
Eduardo MG
5323668faa Add .circleci/config.yml 2023-04-24 18:32:46 -06:00
Vittorio Alfieri
2446443522 Added CardImageLinks.csv to git. 2023-04-24 13:04:58 +02:00
Vittorio Alfieri
4f9f93dcc8 Removed duplicated primitives in unsupported file. 2023-04-24 11:29:39 +02:00
Vittorio Alfieri
eb9788b667 Updated missing cards by set list. 2023-04-24 11:16:38 +02:00
Eduardo MG
9e4f486fa2 Added March of the Machine (MOM) and Connive cards
Aerial Boost
Alabaster Host Intercessor
Alabaster Host Sanctifier
Archangel Elspeth
Bola Slinger
Boon-Bringer Valkyrie
Dusk Legion Duelist
Elspeth's Smite
Golden-Scale Aeronaut
Guardian of Ghirapur
Heliod, the Radiant Dawn
Heliod, the Warped Eclipse
Kithkin Billyrider
Knight of the New Coalition
Kor Halberd
Phyrexian Censor
Realmbreaker's Grasp
Scrollshift
Seal from Existence
Seraph of New Capenna
Seraph of New Phyrexia
Sigiled Sentinel
Sun-Blessed Guardian
Furnace-Blessed Conqueror
Surge of Salvation
Tarkir Duneshaper
Burnished Dunestomper
Zhalfirin Lancer
Artistic Refusal
Astral Wingspan
Captive Weird
Compleated Conjurer
Change the Equation
Disturbing Conversion
Expedition Lookout
Faerie Mastermind
Furtive Analyst
Halo-Charged Skaab
Meeting of Minds
Moment of Truth
Order of the Mirror
Order of the Alabaster Host
Preening Champion
Saiba Cryptomancer
Skyclave Aerialist
Skyclave Invader
Stasis Field
Thunderhead Squadron
Tidal Terror
Transcendent Message
Xerex Strobe-Knight
Zhalfirin Shapecraft
Aetherblade Agent
Gitaxian Mindstinger
Archpriest of Shadows
Ayara, Widow of the Realm
Ayara, Furnace Queen
Bladed Battle-Fan
Blightreaper Thallid
Blightsower Thallid
Breach the Multiverse
Collective Nightmare
Consuming Aetherborn
Corrupted Conviction
Deadly Derision
Dreg Recycler
Etched Familiar
Etched Host Doombringer
Failed Conversion
Final Flourish
Glistening Deluge
Gloomfang Mauler
Grafted Butcher
Prickle Faeries
Mirrodin Avenged
Nezumi Freewheeler
Hideous Fleshwheeler
Nezumi Informant
Yargle and Multani
Tenured Oilcaster
Unseal the Necropolis
Raffine's Informant
Body Launderer
Echo Inspector
Hypnotic Grifter
Illuminator Virtuoso
Ledger Shredder
Psionic Snoop
Psychic Pickpocket
Raffine's Silencer
Revel Ruiner
Security Bypass
Obscura Interceptor
Akki Scrapchomper
Beamtown Beatstick
Bloodfeather Phoenix
Burning Sun's Fury
City on Fire
Coming In Hot
Fearless Skald
Furnace Host Charger
Furnace Reins
Hangar Scrounger
Harried Artisan
Phyrexian Skyflayer
Karsus Depthguard
Khenra Spellspear
Gitaxian Spellstalker
Lithomantic Barrage
Mirran Banesplitter
Onakke Javelineer
Pyretic Prankster
Glistening Goremonger
Ral's Reinforcements
Ramosian Greatsword
Rampaging Raptor
Redcap Heelslasher
Shivan Branch-Burner
Trailblazing Historian
Thrashing Frontliner
Shatter the Source
War-Trained Slasher
Wrenn's Resolve
Halo Hopper
Arachnoid Adaptation
Atraxa's Fall
Bonded Herdbeast
Plated Kilnbeast
Chomping Kavu
Copper Host Crusher
Cosmic Hunger
Crystal Carapace
Gnottvold Hermit
Chrome Host Hulk
Herbology Instructor
Malady Invoker
Iridescent Blademaster
Placid Rottentail
Polukranos Reborn
Polukranos, Engine of Ruin
Portent Tracker
Ravenous Sailback
Serpent-Blade Assailant
Storm the Seedcore
Streetwise Negotiator
Tandem Takedown
Timberland Ancient
Tribute to the World Tree
War Historian
Wary Thespian
Wildwood Escort
Errant and Giada
Marshal of Zhalfir
Rampaging Geoderm
Stormclaw Rager
Ruins Recluse
Phyrexian Archivist
Urn of Godfire
Sword of Once and Future
Flywheel Racer
Cragsmasher Yeti
Thalia and The Gitrog Monster
Kroxa and Kunoros
2023-04-23 23:37:34 -06:00
Eduardo MG
8aebeaf8fb Bug fixes on primitives
Misfortune
Cromat
Leafkin Druid
Cobbled Lancer
Skeletal Scrying
Wingfold Pteron
Zara, Renegade Recruiter was bouncing the creature even if it leaved the play
Mystic Subdual
Champion of Lambholt
Ranger-Captain of Eos
Najeela, the Blade-Blossom
Winter's Rest
Teferi's Time Twist
Shatter Assumptions
Titan's Presence
Boarded Window
Nim Deathmantle still missing rehook
Hollow Specter at least does something now
Urborg Uprising - You can cast Urborg Uprising with no targets if you want to only draw a card.
Grim Captain's Call
Avatar of Growth
Shining Armor
Alchemist's Gift
Jabari's Banner
Open into Wonder
Scroll of the Masters
2023-04-23 23:26:26 -06:00
Eduardo MG
9b704e1cb6 Bug fixes on primitives
Buy Your Silence
Rashmi, Eternities Crafter
Eliminate
Dennick, Pious Apparition
Consuming Aberration should not target
Derevi, Empyrial Tactician
Zurzoth, Chaos Rider
Aetherstorm Roc
2023-04-23 00:49:13 -06:00
Eduardo MG
8d940c381f March of the Machine Commander (MOC), March of the Machine (MOM), Multiverse Legends (MUL)
New _cards.dat for March of the Machine Commander (MOC), March of the Machine (MOM) and Multiverse Legends (MUL) with offical multiverseid.
2023-04-22 10:59:43 -06:00
Vittorio Alfieri
a55381ec66 Removed duplicated missingCardList.txt 2023-04-22 12:40:29 +02:00
Vittorio Alfieri
7641b29178 UYpdated missing cards by set list. 2023-04-22 12:32:53 +02:00
Vittorio Alfieri
01038e217e Merge branch 'master' of github.com:WagicProject/wagic 2023-04-22 12:25:50 +02:00
Vittorio Alfieri
91bd5cc6d6 Updated Missing Card by sets list. 2023-04-22 12:25:09 +02:00
Eduardo MG
21397fd6cf Bug fixes on primitives, extra spaces cleanup
Aetherflux Reservoir. The first ability counts the spell that caused it to trigger plus any other spells you cast earlier in the turn.
Barrier Breach
Kinjalli's Sunwing
Manglehorn
Angelic Ascension
Secure the Scene
Dance of the Skywise loseabilities, ueot before works(???)
Acorn Catapult was crashing the game
Wirewood Channeler
Return to the Ranks
Harmonious Archon
Rage-Scarred Berserker
Lutri, the Spellchaser
2023-04-22 00:14:08 -06:00
Eduardo MG
6e60d0e96c Bug fixes, _SCRY_, _BLINK_UEOT_ and _CONNIVES_ macros
Changed instances of scry for macros
Aetherling (blink)ueot not working
Cartouche of Strength
Quest for Ancient Secrets
Zar Ojanen, Scion of Efrava
Lord of Tresserhorn
Fa'adiyah Seer
Mystifying Maze
Alharu, Solemn Ritualist
Trap Digger
Gideon, Martial Paragon
Fell Flagship
Bone Splinters
Midnight Clock
Rosethorn Halberd
Instill Furor
2023-04-20 11:39:12 -06:00
Vittorio Alfieri
f9da0c3a1e Fixed a crash on random avatar AI selection. 2023-04-20 13:28:44 +02:00
Vittorio Alfieri
74840b353c Fixed version in Android about. 2023-04-20 10:32:42 +02:00
Vittorio Alfieri
74e9cffc50 Fixed Kor Spiritdance. 2023-04-19 23:11:42 +02:00
Vittorio Alfieri
459892264d Fixed CLB set. 2023-04-19 21:35:25 +02:00
Vittorio Alfieri
cc92f26035 Fixed DMC and TSR sets. 2023-04-19 21:01:20 +02:00
Vittorio Alfieri
fe57ffae3d Fix NCC set. 2023-04-19 20:03:23 +02:00
Vittorio Alfieri
3628dc36fd Fix orderindex of TSR set. 2023-04-19 18:42:20 +02:00
Eduardo MG
b87be5837a Bug Fixes on primitives, change in ADAPT macros
Modified _ADAPT_ macros to make it clearer
Trusty Retriever
Howl of the Hunt
Urza, Lord High Artificer
Puncturing Blow
Surge Engine
Temporal Machinations
Triumph of Gerrard
Burning Fields
Dragonlord Atarka
Cartouche of Strength
Tortured Existence
Search the Premises
Ordeal of Nylea
Ebondeath, Dracolich
Kraken of the Straits
Cleansing
2023-04-17 16:03:07 -06:00
Eduardo MG
791733c9bf New cards, mostly from Streets of New Capenna (SNC) and Dominaria United (DMU)
Light 'Em Up
Quick-Draw Dagger
Cabaretti Charm
Sticky Fingers
Rogues' Gallery
Brazen Upstart
Metropolis Angel
Cement Shoes
For the Family
Case the Joint
Cyberdrive Awakener
Explosive Entry
Return to Action
Gravelighter
Vodalian Hexcatcher
Balduvian Atrocity
Smash to Dust
Sheoldred's Restoration
Squee, Dubious Monarch
Recruitment Officer
Su-Chi Cave Guard
Tatyova, Steward of Tides
Talas Lookout
Bortuk Bonerattle
Floriferous Vinewall
Public Enemy
Revelation of Power
Ironsoul Enforcer
Silkguard
Concord with the Kami
Oxidda Finisher
2023-04-15 19:52:02 -06:00
Eduardo MG
c02ee99a87 Bug fixes, _KNIGHTTOKEN_ macros, removed problematic cards
_KNIGHTTOKEN_
Renown macros
spiritlink is different than lifelin, spiritlink uses the stack and can have multiple instanes
Apostle of Purifying Light
Farewell
Springleaf Drum
Pursued Whale token
Majestic Heliopterus
Bearded Axe
Mercurial Pretender
Vesuva
Kaho, Minamo Historian
You Meet in a Tavern
Gravitic Punch
Lair of the Hydra
Aquamorph Entity
Annihilating Glare
Kithkin Spellduster
Kithkin Zealot
Kjeldoran Gargoyle
Rakavolver
Run Aground
Somberwald Beastmaster
Into the Night draws before discard
Nissa's Pilgrimage
Kithkin Zephyrnaut
Dawn Evangel
Wings of Hubris
Disaster Radius
Chandra's Pyreling
Nature's Will
Thromok the Insatiable not even close to working
Reality Shift
Ferocious Tigorilla
Excavator
Serra's Emissary
2023-04-15 19:30:54 -06:00
Eduardo MG
6d134f5db7 List with all the cards not implemented
Funny sets are ignored. Unfinity (UNF) Unsanctioned (UND) Unstable (UST) Unhinged (UNH) Unglued (UGL)
2023-04-13 19:20:25 -06:00
Eduardo MG
d717dcad02 Bug fixes and new cards form ONE
token macros
Winter Orb
Imi Statue
Brago, King Eternal is so buggy, it revives cards and reattaches auras
Oketra's Avenger
Efreet Flamepainter
You must still pay the mana cost of the target instant in your graveyard to cast it using Toshiro’s ability.
Neonate's Rush
Grimlock, Dinobot Leader
Mazemind Tome
Grim Discovery
Devout Decree
Hydra's Growth
Wolfrider's Saddle
2023-04-09 17:47:35 -06:00
Eduardo MG
7b75936545 Update ZNR _cards.dat. New cards and fixed id's on flip cards 2023-04-09 12:16:42 -06:00
Eduardo MG
608817b9bc Updated Innistrad: Crimson Vow (VOW) _cards.dat
Removing cards with no multiverseid
2023-04-07 12:20:44 -06:00
Eduardo MG
078e359290 Updated Zendikar Rising (ZNR) _cards.dat 2023-04-07 12:00:13 -06:00
Eduardo MG
02a64542ef Update Time Spiral Remastered (TSR) _cards.dat
Restoring hard coded tokens, I want to find a better solution for the tokens than this.
2023-04-04 18:01:55 -06:00
Eduardo MG
a695397cb2 Updated Kaldheim (KHM) _cards.dat 2023-04-04 17:17:49 -06:00
Eduardo MG
81f39fc0a2 Update Adventures in the Forgotten Realms (AFR) _cards.dat 2023-04-04 16:27:43 -06:00
Eduardo MG
fefb18dc75 Update Core Set 2021 (M21) _cards.dat 2023-04-04 13:29:58 -06:00
Eduardo MG
fd4c4a15f8 Update Midnight Hunt Commander (MIC) _cards.dat 2023-04-04 13:19:13 -06:00
Eduardo MG
e462c31559 Update Crimson Vow Commander (VOC) _cards.dat 2023-04-04 00:38:29 -06:00
Eduardo MG
c711e661b1 Updated Innistrad: Crimson Vow (VOW) _cards.dat
BORDERLESS PLANESWALKERS • 3 CARDS
ALTERNATE-ART BORDERLESS CARDS • 5 CARDS
SHOWCASE CARDS • 43 CARDS
DRACULA SERIES • 17 CARDS
EXTENDED ART CARDS • 52 CARDS
BUY-A-BOX • 1 CARD
PROMOS • 4 CARDS
THE MOONLIT LANDS • 5 CARDS
2023-04-04 00:28:40 -06:00
Eduardo MG
6e98c0e19a Bug fixes and new cards, mostly from Phyrexia: All Will Be One (ONE)
Bulwark
Possessed Skaab
Skymarcher Aspirant
Sadistic Skymarcher
2023-04-03 19:49:31 -06:00
Eduardo MG
2a05bebf5c Update Phyrexia: All Will Be One (ONE) _cards.dat
Updates on multiverse_ids
2023-04-04 01:42:22 -06:00
Eduardo MG
5336b079f4 Bug fixes, _SCAVENGE_ need to be reverted, dislike of aicode it produces bugs and is hard to test
Moment of Triumph
Teysa, Envoy of Ghosts
Repeal
Mask of Memory
Hushwing Gryff
Drudge Spell
Wicked Guardian
Helvault
Shessra, Death's Whisper
2023-04-03 12:16:11 -06:00
Eduardo MG
da9c163ff1 Added Jumpstart 2022 (J22)
Anime Waifus
2023-04-02 19:15:07 -06:00
Eduardo MG
189c624d67 BRC update
=Staff of Titania is showing now and some rarity changes
2023-03-31 23:28:43 -06:00
Eduardo MG
98839c4e8c Bu fixes, removed extra parenthesis and spaces at end of line
Baron Sengir
Myr Moonvessel
Synod Artificer
Piston Sledge
Ichor Explosion
Boreas Charger
Captivating Crew
Gate to the Afterlife
Imaryll, Elfhame Elite
2023-03-31 00:06:14 -06:00
Eduardo MG
54d8c00aaa Update appveyor.yml 2023-03-27 19:16:40 -06:00
Eduardo MG
c5c05ca068 Update appveyor.yml 2023-03-27 19:13:47 -06:00
Eduardo MG
889259a3ef Updated Wagic Version and Python scripts
Updated Wagic to version 0.24.0 and the Python scripts to use the print syntax for Python 3 so the files could be build.
2023-03-26 22:30:20 -06:00
Eduardo MG
b23961c0ee Merge branch 'master' of https://github.com/WagicProject/wagic 2023-03-26 17:59:15 -06:00
Eduardo MG
7ea7431906 Bug Fixes and added cards from Phyrexia: All Will Be One (ONE)
Adriana, Captain of the Guard
Pyre of Heroes
Chime of Night
Arcum's Weathervane
Escape Routes
Judge Unworthy
Lair Delve
Reign of Terror
Trap Digger
Verdant Succession
Hull Breach
Redcap Raiders
Relentless Pursuit
Serpent of Yawning Depths
Bloodborn Scoundrels
Scrapwork Mutt
Merciless Eternal
Diabolic Servitude
Barbarian Bully
2023-03-26 17:58:51 -06:00
Eduardo MG
49168b6a22 Added Dominaria Remastered (DMR) and Phyrexia: All Will Be One Commander (ONC) 2023-03-26 17:34:29 -06:00
Eduardo MG
f642d41a71 Phyrexia: All Will Be One (ONE) 2023-02-13 22:23:27 -06:00
Eduardo MG
81b156ed3b New Cards, Prototype from BRO very borderline, can't change the mana value of cards on battlefield
Bug fixes:
Springleaf Drum
Sprouting Thrinax
Loyal Gryff
Golden Guardian
Crush Underfoot
Pride of Conquerors
Tower Above
Croaking Counterpart
Luxa River Shrine was crashing the game
2023-02-07 16:15:34 -06:00
Eduardo MG
79e560cc94 Bug fixes to primitives
Goblin Snowman
Gerrard, Weatherlight Hero
Fang of the Pack
Component Collector
Outpost Siege
Salvager of Ruin
Take Flight
Screeching Buzzard
Barrier Breach
Puncturing Light
2023-02-05 19:29:04 -06:00
Eduardo MG
9af579bb36 Removed extra spaces, dinosaur type errata, bug fixes
Ogre Errant
Brightwood Tracker
Visions of Dread ability$! is the correct syntax
14 Creatures Have Been Errata’d To Be Dinosaurs
Demanding Dragon
Remorseless Punishment
Custodi Lich
So Shiny
Stromkirk Bloodthief
Savage Swipe
Curious Herd target
Wand of Denial
Ornate Kanzashi
Map the Wastes
Misdirection
Tithe Taker
2023-02-03 19:52:31 -06:00
Eduardo MG
75a83d2861 Added cards mostly from The Brothers' War Commander (BRC) and Commander Legends: Battle for Baldur's Gate (CLB)
Rampant Rejuvenator
Hajar, Loyal Bodyguard
Expendable Lackey
Cutthroat Contender
Demon's Due
Mr. Orfeo, the Boulder
Deal Gone Bad
Topiary Stomper
Brokers Charm
Corpse Explosion
Maestros Initiate
Cleanup Crew
Titania, Nature's Force
Urza, Chief Artificer
Sardian Avenger
Staff of Titania
Mishra, Eminent One
March of Progress
Urza, Prince of Kroog
Zhentarim Bandit
Gray Harbor Merfolk
Insufferable Balladeer
Alora, Merry Thief
Faldorn, Dread Wolf Herald
Gut, True Soul Zealot
Amber Gristle O'Maul
Burakos, Party Leader
Displacer Kitten
Icewind Stalwart
Oji, the Exquisite Blade
Firbolg Flutist
Ancient Copper Dragon
Ancient Bronze Dragon
Ancient Gold Dragon
Ancient Silver Dragon
Coronation of Chaos
Oceanus Dragon
Giant Ankheg
Saddle of the Cavalier
Poison the Blade
Pack Attack
2023-02-03 00:01:08 -06:00
Eduardo MG
c757c2c2fc Macros for Ward and for play top of library from exile, bug fixes
Batterbone
Ormos, Archive Keeper crashes the game while drawing if you have less than 5 cards in library
Primal Command crashed the game
Austere Command not really supported
Shivan Wumpus crashed the game
Go-Shintai of Life's Origin
Diregraf Horde
Unblinking Observer
Cairn Wanderer
Old Man of the Sea
Grow from the Ashes
Scourge of Nel Toth
Faceless Butcher
Portal to Phyrexia
Avenging Druid
Teysa, Envoy of Ghosts
Siege Veteran
Sparring Regimen
Skinwing
Stampede
Collector Ouphe
Terror of Mount Velus
Vizier of the True
Demonic Vigor
2023-02-02 23:41:27 -06:00
Eduardo MG
ac9a7d1cea Update issue templates 2023-01-28 17:30:52 -06:00
Eduardo MG
0a1459dc7c Bug fixes in primitives and removed conflictive cards
Cranial Archive
Hex restrictions
Devastating Dreams crashes
Galestrike
Earthlore
Hatchet Bully
Daretti, Ingenious Iconoclast
Growing Rites of Itlimoc // Itlimoc, Cradle of the Sun
Dominate
Orim's Thunder
Errantry
Master of Cruelties
Ochre Jelly
Caller of the Claw
star pupil far from any effect
spectra ward
Chief Engineer
Dark Salvation
Sword of Hearth and Home you should always be able to search the land
Hall of the Bandit Lord
Boseiju, Who Shelters All
spelltwine
Runaway Steam-Kin
Arahbo, Roar of the World
2023-01-28 11:45:43 -06:00
Eduardo MG
4fd4619fd8 Bug fixes in primitives
Knight of Old Benalia
Scalelord Reckoner
Insurrection affects also your creatures
Scaretiller
Secrets of the Golden City
Trial of Ambition
Channeler Initiate
Hecatomb
Brash Taunter
Bonder's Ornament
Livio, Oathsworn Sentinel, may exile, still missing aegis counters
Rowan Kenrith not close to actual effect
fecundity is a may
Crypt Rats crashed the game
Sphere of Safety
Fairgrounds Trumpeter still needs the condition at end of turn
Cavalry Drillmaster
Bloodmist Infiltrator
Sudden Demise
Rishkar, Peema Renegade
Glowspore Shaman
Oracle of Bones
Jugan, the Rising Star should be a may
Corrupted Grafstone
Lantern of the Lost
2023-01-26 22:49:43 -06:00
Eduardo MG
35685bb2b2 Bug Fixes to primitives
Gadrak, the Crown-Scourge
Underhanded Designs
Raff, Weatherlight Stalwart
Casting of Bones
Storm World
Mogg Infestation
Pathbreaker Ibex
Mantle of the Wolf
Virulent Wound
Slumbering Tora
Balance of Power
Vandalize
Hull Breach
Cunning
Wishclaw Talisman
Bamboozle
Oath of Lieges
Chandra, Bold Pyromancer
Tyvar Kell
Backdraft Hellkite
2023-01-26 00:19:37 -06:00
Eduardo MG
022378b5a5 Update .travis.yml 2023-01-25 12:01:58 -06:00
Eduardo MG
cb81f8a7b0 Update .travis.yml 2023-01-25 11:57:36 -06:00
Eduardo MG
6fde3953cd Update .travis.yml 2023-01-25 11:28:47 -06:00
Eduardo MG
3a6f70bd32 Update .travis.yml 2023-01-25 11:14:52 -06:00
Eduardo MG
1baf82fb47 Update .travis.yml 2023-01-25 11:06:35 -06:00
Eduardo MG
8ca9d42d71 Update .travis.yml 2023-01-25 10:58:59 -06:00
Eduardo MG
87c2416da4 Update .travis.yml 2023-01-25 10:48:40 -06:00
Eduardo MG
9443fac3b5 Revert "Update .travis.yml"
This reverts commit 4b9f7de7c9.
2023-01-25 10:47:43 -06:00
Eduardo MG
4b9f7de7c9 Update .travis.yml 2023-01-25 10:44:31 -06:00
Eduardo MG
4d6d369ec0 Removed cards with no id that were generating a warning 2023-01-24 22:44:20 -06:00
Eduardo MG
067da7a444 Added more cards from sets released in 2022
Thopter Shop
Aggressive Sabotage
Prayer of Binding
Temporary Lockdown
Tura Kenner�d, Skyknight
Tori D'Avenant, Fury Rider
Leaf-Crowned Visionary
Monstrous War-Leech
Blight Pile
Bite Down
Shore Up
Pixie Illusionist
Viashino Branchrider
Tolarian Geyser
Strength of the Coalition
Take Up the Shield
Scout the Wilderness
Research Thief
Tempered in Solitude
Voltage Surge
Runic Shot
Protect the Negotiators
Timely Interference
Coral Colony
Herd Migration
Eerie Soultender
Sunbathing Rootwalla
Phyrexian Missionary
Sprouting Goblin
Meria, Scholar of Antiquity
Zamriel, Seraph of Steel
Maeve, Insidious Singer
Vogar, Necropolis Tyrant
Nogi, Draco-Zealot
Imaryll, Elfhame Elite
Tribute to Urborg
Urborg Repossession
Vineshaper Prodigy
Elvish Hydromancer
Tyrant of Kher Ridges
Transmogrant's Crown
Gaea's Gift
Awaken the Woods
Emergency Weld
Gruesome Realization
Argivian Avenger
Aeronaut's Wings
Tocasia's Welcome
Union of the Third Path
Tocasia's Dig Site
Argothian Sprite
Bushwhack
Spectrum Sentinel
Dwarven Forge-Chanter
Unleash Shell
Brotherhood's End
Fade from History
Urza, Lord Protector
Mishra's Foundry
Iridian Maelstrom
Wilson, Refined Grizzly
Erinis, Gloom Stalker
Sharpshooter Elf
Tiamat's Fanatics
Duke Ulder Ravengard
Ghastly Death Tyrant
Penregon Strongbull
Mishra, Excavation Prodigy
Mishra's Onslaught
Fateful Handoff
Swiftgear Drake
Fortified Beachhead
Bitter Reunion
Urza's Rebuff
Robe of the Archmagi
Emperor Mihail II
Moira, Urborg Haunt
Greensleeves, Maro-Sorcerer
False Floor
Junji, the Midnight Sky
Kami of Restless Shadows
Jin-Gitaxias, Progress Tyrant
Unquenchable Fury
2023-01-24 22:00:39 -06:00
Eduardo MG
489903ad9d Fixes to primitives, removed extra characters
Fixed equipment that attaches itself to a creature when it enters the battlefield, previously it just keep attaching to a creature after the original holder died as long as there was a creature in your battlefield, the free attach its just once when it enters
Ukkima, Stalking Shadow
Lady Sun
Repel Intruders
Exclusion Ritual
Sheoldred, the Apocalypse
2023-01-24 21:31:35 -06:00
Eduardo MG
8a295f3a14 Update .travis.yml
The resources are not being uploaded so changing things
2023-01-22 22:21:39 -06:00
Eduardo MG
ccd1a52856 Bug fixes in primitives
Shuffle effect on original Eldrazi Titans is clearer now when it happens
Replaced 'Put a token onto the battlefield' for 'Create a token' in cards text
Expedite
Purge
Gadrak, the Crown-Scourge
Angelic Exaltation
Proud Wildbonder
Guile threeblockers
Raphael, Fiendish Savior
Portable Hole
Dreamshackle Geist
Windreader Sphinx
2023-01-22 10:44:47 -06:00
Eduardo MG
ca7882c4da Bug fixes on primitives
The Ur-Dragon
Bloodline Necromancer
Befuddle
Thraben Exorcism
Kogla, the Titan Ape
Malfegor
Festival of the Guildpact
Wall of Resurgence
2023-01-17 11:03:31 -06:00
Eduardo MG
92751a088f Bug fixes in primitives
Coils of the Medusa crash
Well of Knowledge
Heraldic Banner
Retributive Wand
Valiant Rescuer
Tormod, the Desecrator
Angel of the Dawn
Nylea's Huntmaster
Heliod's Intervention
2023-01-09 20:09:39 -06:00
Eduardo MG
9be91880b2 Bug fixes in primitives
Goblin Firebomb
Boneyard Mycodrax
Heartless Pillage
Town-razer Tyrant
orcish hellraiser
Startling Development
Fireflux Squad
Valorous Stance
2022-12-27 00:18:54 -06:00
Eduardo MG
19a01ad90b Primitives from The Brothers' War (BRO)
Also some bug fixes
2022-12-07 11:51:03 -06:00
Eduardo MG
db523a8f4d The Brothers' War (BRO), The Brothers' War Commander (BRC) and The Brothers' War Retro Artifacts (BRR)
Adding The Brothers' War (BRO), The Brothers' War Commander (BRC) and The Brothers' War Retro Artifacts (BRR)  sets with their official multiverseID, the images for the sets are also updated in the image downloader
2022-11-29 18:34:01 -06:00
Eduardo MG
5db74fce39 Bug fixes and adding new cards
Adding more cards from Commander Legends: Battle for Baldur's Gate (CLB)
Adding cards with Blitz from Streets of New Capenna (SNC)
Fell Flagship
Vow of Torment
culling scales
Acrobatic Maneuver
Double Major
Tend the Pests
Demon's Disciple
mystical teachings
reoving cards that crash the game
Oracle's Vault crashes the game
Collective Defiance crashes the game
2022-11-19 19:38:45 -06:00
Eduardo MG
956351ef7c Fixes in primitives and more Kamigawa: Neon Dynasty (NEO) cards
Rank Officer
Rienne, Angel of Rebirth
Boreal Elemental
Duelcraft Trainer
Mox Lotus
Recruit the Worthy buyback
Worthy Cause buyback
Blast from the Past buyback
Hamlet Vanguard
secure the scene
Dihada, Binder of Wills
Jared Carthalion
Geralf's Masterpiece
Pilgrim of the Ages
2022-11-14 18:44:11 -06:00
Eduardo MG
30851bb2b2 Adding primitives for sets released in 2022
Sorted using tools from Vitty85, thanks for your contributions

Tested the cards in crappy and incorporated them into the borderline ones

This does not include any Brothers' War cards since it's not yet released with official multiverseID's
2022-11-11 18:03:39 -06:00
Eduardo MG
fd59b376e6 Bug fixes in primitives
Berserk Murlodont
Urborg Justice
Beledros Witherbloom
Mirror-Mad Phantasm
Phyrexian Metamorph
Mannichi, the Fevered Dream
The Circle of Loyalty
Riot Ringleader
Rionya, Fire Dancer
Etrata, the Silencer
Natural State
squallmonger
Steward of Solidarity
2022-11-11 12:07:53 -06:00
Eduardo MG
f212e633a1 Bug fixes and macros for servo token
Herald of the Forgotten crashed the game, the modifier * seems to work for this effect since it doesn't do anything while targeting instants or sorceries
Karona, False God
Excavating Anurid
Multiple Choice still neds scry 1 with x>=4
Quarantine Field
Optimus Prime, Inspiring Leader subtype
Gate Colossus
Harmonic Prodigy at least give them their own trigger twice
Faerie Artisans
Liliana, Death Wielder
Greven, Predator Captain
Verazol, the Split Current
Thunderstaff
Mask of Immolation
Purraj of Urborg
Ghired, Conclave Exile
Shatter Assumptions
Brawl-Bash Ogre
Tactical Advantage
The Birth of Meletis
Speaker of the Heavens
Superior Numbers
Flames of the Raze-Boar
Crushing Vines
Rite of Belzenlok
sacrifices should not target or else you can't sacrifice a permanent with shroud
2022-11-08 13:51:33 -06:00
Eduardo MG
bdd06ab70d Bug Fixes
Static Orb
Anje's Ravager
Sethron, Hurloon General
Vigorspore Wurm
coveted jewel
Island Sanctuary
Aeve, Progenitor Ooze
Ravenous Squirrel
Renegade Krasis
Clambassadors
Sarkhan's Dragonfire
geosurge
Syr Faren, the Hengehammer
Fertile Imagination AI doesn't like to target cards in the second option of a reveal
Deadeye Tormentor
2022-11-06 12:48:14 -06:00
Eduardo MG
0d9c17ab64 Bug fixes. Damage prevention was crashing the game on certain cards
Piston-Fist Cyclops
Leapfrog
Burrenton Forge-Tender was crashing the game
damage prevention doesn't work in the stack Burrenton Forge-Tender, Prahv, Spires of Order
Biblioplex Assistant
Rhonas's Monument was crashing the game
2022-11-03 23:53:40 -06:00
Eduardo MG
b171381b35 Bug fixes, changed counter(-1/-1,1) to counter(-1/-1)
Changed counter(-1/-1,1) to counter(-1/-1) since is the same thing with less code
Lord of the Forsaken
Aethersquall Ancient
Traverse the Outlands
Colossus Hammer
Feasting Troll King
Iwamori of the Open Fist
Chainer, Nightmare Adept
said-done
Wall of Corpses
Retrofitter Foundry
Nezahal, Primal Tide
generous gift
Run Away Together
Wulfgar of Icewind Dale
Veyran, Voice of Duality
Icon of Ancestry
Arcane Artisan
Kami of the Painted Road
Promise of Bunrei
2022-11-01 13:06:19 -06:00
Eduardo MG
a697c2a3a7 Bug fixes, changes in macros
macros for casting a historic spell
Pyroceratops
Mirko Vosk, Mind Drinker
Savage Gorger
Heraldic Banner
Blight Herder
Dire Wolf Prowler
Chandra, Roaring Flame
Footfall Crater
Supernatural Rescue
Quicksilver Dagger
mana crypt
scavenged blade and others with the rules "enters the battlefield, attach it to target creature you control"
equipment was just getting equiped for free when the hoked creature died
Soulshift stays as is, implementing it with macros lead to bugs
Farmstead Gleaner
Vizier of Tumbling Sands
Doomed Artisan
Frostveil Ambush
Avacyn, guardian angel crashes
2022-10-29 12:15:22 -05:00
Eduardo MG
85aacb9e1e Bug fixes and new macros for tokens
Pithing Needle and similar cards
Chicken Egg
Metalworker
Smothering Tithe
changed donothing' to donothing?
Aetherstorm Roc
Stomp and Howl
Sword of Sinew and Steel
Midnight Clock
Vulshok War Boar
Fendeep Summoner
Dread Summons
Kefnet's Last Word
Crushing Canopy
Genesis Hydra
Pondering Mage
Smell Fear
Tsabo Tavoc
Lithoform Engine
Team Pennant
2022-10-28 12:03:53 -05:00
Eduardo MG
15bdad348b Update appveyor.yml
Trying to make appveyor work
2022-10-26 17:41:10 -05:00
Eduardo MG
61bb41e88a Add _cards.dat files for sets released in 2022
I want to focus on sets with official multiverseId so no promos or secret lairs.
2022-10-26 17:38:49 -05:00
Eduardo MG
68823286a3 Random Commander rule file 2022-10-26 15:56:45 -05:00
Eduardo MG
51ede6a37f Added a new Random Commander game mode and fix to special rarity filter
You get a random legendary creature and get a 99 cards deck at random in the commander colors.

Some limitations by the engine makes you only get cards based on the mana cost of the card, not the full color identity.

Also sometimes you get fewer than 99 cards. Possible that you are getting repeated cards and end up with less than the desired 99?

Special rarity no longer shows basic land types.
2022-10-26 15:49:57 -05:00
Eduardo MG
5c691afe33 Fixes in primitives
Mire in Misery
Mask of Memory
Smiting Helix
Ring of Renewal
Pirate's Cutlass
Trash for Treasure
Sixth Sense
Life's Legacy
Kaseto, Orochi Archmage
Gristle Grinner
Tezzeret, Artifice Master
Commander's Sphere
Journey for the Elixir
Azra Bladeseeker
Indulgent Tormentor
Sidisi, Brood Tyrant
Martyr's Bond
Gruesome Scourger
Pull from Tomorrow
Conqueror's Flail
Trespasser's Curse
Tourach, Dread Cantor
Jerren, Corrupted Bishop
Feral Roar
Release to the Wind
Taborax, Hope's Demise
Magmatic Sinkhole
rage of purphoros
Farbog Boneflinger
Ruin Grinder
2022-10-26 15:40:47 -05:00
Eduardo MG
bada76ec85 Macros for loot (draw a card, discard a card.) bug fixes
Macros _LOOT_ for draw a card, discard a card.

Fixed typos in subttype

removed induced amnesia

Yawgmoth, Thran Physician
Rienne, Angel of Rebirth
Teysa, Envoy of Ghosts
Urza's Avenger
Reincarnation
Diabolic Servitude
Gate to the Afterlife
Tana, the Bloodsower
2022-10-24 13:00:38 -05:00
Eduardo MG
04c49f9031 Phyrexian Creature Type Update on tokens
Updated oracle text on tokens, also changing a test since now the creature is a Phyrexian germ, not just a germ.
2022-10-22 18:51:11 -05:00
Eduardo MG
c779dc3789 Phyrexian Creature Type Update
Also Ranger Type Update

Soulherder blinks a creature I stole from the opponent and returns it back to my battlefield
Klothys, God of Destiny
Rienne, Angel of Rebirth
Cankerous Thirst
magma jet scry
Grifter's Blade
Nightmare Unmaking
Runebound Wolf
Animating Faerie // Bring to Life
Oakshade Stalker
2022-10-22 11:24:31 -05:00
Eduardo MG
9f51e5b539 Updated "converted mana cost" to "mana value" in the oracle text, also reverted the changes to emerge creatures
The term "mana value" was introduced in Strixhaven: School of Mages. Thereafter, all cards prior to this set have their oracle text updated to reflect this change.

Emerge only functions for the human player not for the AI.

Fixes to:
Snakeskin Veil
King of the Pride
2022-10-21 12:15:05 -05:00
Eduardo MG
46283897da Macros for learn, bug fixes and oracle updates
#AUTO_DEFINE _LEARN_
Cruel Cut
Etali, Primal Storm
plant elemental
type=summon
heroes' podium
other={emerge} name(Emerge) otherrestriction
Epic Downfall
Feed the Swarm
Heartless Act
gateway plaza
Subversive Acolyte update
Frontline Medic
devious cover-up
Kaervek, the Spiteful
Kitesail Corsair this(attacking)
Grasping Scoundrel this(attacking)
Thorned Moloch this(attacking)
Vivid Flying Fish this(attacking)
2022-10-18 17:19:29 -05:00
Eduardo MG
950d80e530 Update Time Spiral Remaster _cards.dat
previous multiverseID was incorrect and caused collisions, will try to not mess with ID established but this set has official multiverseID and they were wrong
2022-10-17 16:55:08 -05:00
Eduardo MG
3a11453aa5 Bug fixes, more token creation macros
A file being borderline really doesn't mean much, also, after some testing, the cards under 'crappy' could be playable

Narfi, Betrayer King
Cavalier of Dawn
Imprisoned in the Moon
Bull's Strength
Bontu the Glorified could attack planeswalkers
Fists of Flame
Barbed-Back Wurm
old rutstein
Delraich restriction
consuming aberration
drowned secrets
ancestral anger
Flood Plain
Bad River
Grasslands
Rocky Tar Pit
Mountain Valley
Basri Ket
Colos Yearling
march of the drowned
2022-10-16 13:11:16 -05:00
Eduardo MG
d60b148ccc Bug fixes and macros for Extort, Angel Token and Saproling Token
Ishai, Ojutai Dragonspeaker
Instrument of the Bards
Psychic Theft
Zabaz, the Glimmerwasp
Harvester of Souls
Serra the Benevolent
2022-10-14 11:50:46 -05:00
Eduardo MG
491f42b717 Bug Fixes and introducing Foretell macros and zombie token macros
Dwarven Bloodboiler
Endling
Open the gates
bolt hound
Silverwing Squadron
Doomskar Oracle
glorious sunrise
river's rebuke
Bound in Gold
daxos of meletis
Thraben Watcher
Prowess of the Fair
2022-10-13 12:32:11 -05:00
Eduardo MG
605e22b067 Bug fixes in primitives, including cards that require an additional discard to be cast
As an additional cost to cast this spell, discard a card needed {D(other *|myhand)} restriction.
Ormos, Archive Keeper
eyekite
Inevitable End
sinous striker
Workshop Elders
dressed to kill
Vilis, Broker of Blood
pack leader
inspiring commander
surley badgersaur
Shoal Kraken
semester's end
timmy, power gamer
thrill of posibility
scourge of the throne
Lord of the Forsaken
Skyclave Shade
Smoke
Losheel, Clockwork Schola
Midvast Protector
Foe-Razer Regent
2022-10-09 12:48:38 -05:00
Eduardo MG
c0f262a0b1 Counters (1/1,1) changed to Counters (1/1) bug fixes
Counters (1/1,1) changed to Counters (1/1) since it's the same with less code.

Macross for Adapt().

Kiora bests the sea god
savior of ollen
Sevinne's Reclamation
Karplusan Hound
cleansing nova
Subterranean Tremors
2022-10-08 23:16:36 -05:00
Eduardo MG
d4cb3e8384 Merge pull request #1078 from fogobogo/cmake
Cmake update
2022-10-04 16:07:12 -05:00
fogobogo
d566524499 cmake build fixes
this brings the cmake branch in line with commit
8e551bb287 from the main branch.

This adds a few boons, most notably it allows compiling on Linux with
SDL2 instead of SDL.

That also allows for mouse support and can now be run without X, which
is mostly interesting in case you want to play some Wagic on say, a
Raspberry Pi.
2022-01-11 20:51:49 +01:00
fogobogo
f3bb5ccef9 Merge branch 'master' into cmake 2022-01-11 19:19:09 +01:00
Vittorio Alfieri
8e551bb287 Added/fixed primitives, updated the "missing_cards_by_sets" folder, moved AI avatar images to main graphics folder. 2021-12-21 14:14:38 +01:00
Vittorio Alfieri
fa7a0daae1 Added Y22 set, improved Android downloader for Y22 set, added new restriction "librarycast" to check if a card has been casted from library, added new keyword "startingplayer" to retrieve who was the starting player, added a new ability "nodamageremoved" to avoid damage is removed from a card (e.g. "Patient Zero"), fixed a possbile crash when using "andability" option in "moverandom" ability (e.g. cards with seek abilites), added "myname" option to conjure "ability" to refer the orginal source card name (e.g. "Clone Crafter"), added new zone definitions "myhandlibrary" and "opponenthandlibrary" to refer same time hand and library zone of a player, added new ability "nonight" to avoid it can become night (e.g. "Angel of Eternal Dawn"), improved all cards with "it becomes night" ability. 2021-12-20 18:55:54 +01:00
Vittorio Alfieri
7fa03e620d Fixed several primitives, added a new Commander Deck for AI, Fixed an issue on "blink" return ability (e.g. "Otherworldly Journey"), improved "exerted" trigger adding "turnlimited" option, added a new keyword "losesatype" to remove a specific type from a card (e.g. "Conversion"), improved "vanishing", "fading" and "bloodthirst" keywords in order to allow the usage of variables (e.g. "Tidewalker"), added new triggers "poisonedof" and "poisonedfoeof" to handle the event when a player gets a poison counter, added new keywords "countershroud" to avoid a card can get any kind of counter, added new keywords "expshroud" and "energyshroud" to avoid a player can get one of those counters, added new option "uent" for "transforms" keyword ability to allow transformation effects end at the end of your next turn, fixed an issue on "swap" keyword when a non-creature card is firstly transformed into a creature (e.g. "Wandering Fumarole"). 2021-12-18 13:45:58 +01:00
Eduardo
8551f55636 Fixes to primitives
ancestral blade not attaching to token
etherium spinner token wasn't artifact
Ichthyomorphosis
Jungle Creeper must activate from GY
Lightning Skelemental crashed the game
Vedalken Plotter
Steel-Plume Marshal is only for flying
Venser emblem created by the AI lets the player exile
Markov Purifier was drawing two cards
Jace, Mirror Mage clone was legendary
2021-12-08 23:16:00 -06:00
Vittorio Alfieri
059107b007 Fixed DBL set. 2021-12-08 09:44:06 +01:00
Eduardo
a4670f0b82 Fixes to primitives
Enemy of Enlightenment type
Bereaved Survivor type
Suppression Bonds target
Wintermoor Commander effect
Tibalt, Rakish Instigator token damage target
Zurzoth, Chaos Rider token damage target
Dega Sanctuary extra "}"
Ephara's Enlightenment bounce
the caster of Swan Song was getting the swan, still not 100 % accuarate in case you want to counter your card
Estrid, the Masked untap
2021-12-07 00:43:06 -06:00
Eduardo
5421c0cfda Fixes to primitives
Zacama, Primal Calamity
phylath
Dowsing Dagger
domri's ambush
tireless provisioner
cemetery desecrator
deadly brew
2021-12-05 20:16:18 -06:00
Vittorio Alfieri
b8435778fe Fixed "Jandor's Ring" primitive, added DBL set, improved Android downloader. 2021-12-03 18:29:33 +01:00
Eduardo
68e08783c6 Fixes to primitives
portal of sanctuary
zacama desc
All that glitters crashed the game
Dread Warlock
Song of the Dryads no need to teach a forest add G
Cavern Lampad
Inspired Ultimatum crashed the game
Sever the Bloodline
2021-12-03 01:38:06 -06:00
Vittorio Alfieri
6c0740c78c Fixed primitives, avoided a crash when destroying "transforms" ability for cards in library, added random deck selection to Stone Hewer Basic mode, fixed random deck selection from Commander mode, improved exclusive color filter to include monocolored artifacts, added PSP_LARGE_MEMORY define to Makefile to allow more RAM for PSP version. 2021-12-02 18:55:53 +01:00
Eduardo
d969b6ce7a Bug fixes and Egg creature type update
Ironroot Warlord
Cauldron Familiar
Feasting Troll King
archway commons
song of the dryads goes to the graveyard after turning the creature into forest
crack open targets
Roc Egg, Dragon Egg,other cards with type Egg
atla palani
wayward sword can attack PW
birthing boughs does not create artifacts
psychic symbiont
syphon essence
saryth hexproof
2021-11-30 16:30:48 -06:00
Vittorio Alfieri
b5c1b09c04 Fixed "Oko, Thief of Crowns" primitive. 2021-11-26 13:40:03 +01:00
Vittorio Alfieri
e47f3f5471 Improved zones management for commandzone and sideboard (e.g. now the game consider those zone as all the others for every ability such as "lord" and "aslongas"). 2021-11-22 16:17:10 +01:00
Vittorio Alfieri
217a5aa93e Fixed primitives. 2021-11-21 23:13:33 +01:00
Vittorio Alfieri
d11facd7d4 Fixed primitives, added a new keyword "eval()" in ManaCost parser to allow the usage of a variable in the manacost (e.g. "{eval(evictmc)}" in primitive "Prototype Portal"). 2021-11-21 13:38:09 +01:00
Vittorio Alfieri
6ca5291790 Updated the changelog. 2021-11-19 16:17:18 +01:00
Eduardo
14103a840d Bug fixes on primitives
Vance's Blasting Cannons
Vona, Butcher of Magan
Niambi, Faithful Healer
bone harvest and similar cards add a choose 0 targets option
Arborea Pegasus
Arcbound Shikari
Keldon Raider
Aurelia, Exemplar of Justice
Mu Yanling, Sky Dancer
Voldaren Pariah
Yarok's Fenlurker
2021-11-18 20:06:17 -06:00
Vittorio Alfieri
31b3a7e785 Fixed typos in primitives text, improved Deck Editor menu' commands (now select button toggle the Sideboard/Commanders/Dungeons view while the Note Button open the quick filter), added a new menu' option in Deck Editor to toggle Grid/Carousel view (useful on PSP/PSVita). 2021-11-18 20:42:21 +01:00
Vittorio Alfieri
152dafc90f Fixed primitives, fixed a commander deck for AI, improved all cards with partner ability, added a "partner=" key to associate the partner to a primitive, added new keywords "withpartner", "partname" and "haspartner" to improve the Target Chooser for cards with partner, improved the Commander rules to allow double commander just with specifc partner, improved background images management for game settings, deck selection, deck editor background, post-match credits, deck editor selection and trophies room (now it's possibile to randomly use up to 10 background images). 2021-11-18 11:48:27 +01:00
Vittorio Alfieri
477ffa6a0c Fixed primitives, updated italian lang file, added a new setting to sort decks by creation date (by default they will be sorted by name), added new filters to match cards that don't contain a particular color or that are multicolored, fixed an issue when the transformation with uynt is triggered by instant/sorcery or by card that left the battlefield before the ability ending turn, fixed a rendering overlap on mana symbols in deck editor, fixed some crashes on ManaCost parser (e.g. Filter by mana producer). 2021-11-15 21:38:04 +01:00
Vittorio Alfieri
2eed51dea6 Fixed "Mana Hellkite" and added its token primitive, fixed token in VOW set. 2021-11-14 19:13:25 +01:00
Vittorio Alfieri
c55c9c2507 Fixed primitives, improved background images management for game settings, deck selection, deck editor background, post-match credits, deck editor selection and trophies room (now it's possibile to randomly use up to 3 background images and if the chosen image is not available, it will be rendered the default one). 2021-11-14 14:24:27 +01:00
Eduardo
96f7072a77 fixed primitives, several bugs and crashes
The Locust God
Pest tokens should be black not blue
Shabraz, the Skyshark
Arlinn Kord
Tovolar, Dire Overlord
mystic skull
golden guardian
blink of an eye
Got arctic treeline in momir, the only cards that should have rarity=L are basic lands or else you get them in momir since they have basic subtypes
storm the festival desc
rise of the ants
dryad's revival shouldn't be able to retrive itself or play with an empty GY
shiny impetus
malevolent hermit
whirlwind of thought
kiora's dismissal description
glorious protector
Aurora Phoenix is not a partner
Bastion Protector auto=lord(creature[iscommander]|mybattlefield) indestructible
Golgari Findbroker auto=target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand)
Ulrich's Kindred auto={3}{G}:target(*[wolf;werewolf;attacking]) indestructible ueot
Hard Evidence
King of the Pride auto=lord(creature[cat]|myBattlefield) 2/1
Lathliss, Dragon Queen auto={1}{R}:all(dragon|myBattlefield) 1/0 ueot
2021-11-13 22:40:07 -06:00
Vittorio Alfieri
9957719e0c Fixed VOW set, added new AI deck, improved Android downloader for VOC and VOW sets. 2021-11-13 20:25:10 +01:00
Vittorio Alfieri
8b91048d12 Fixed VOW and VOC sets, improved Android downloader for VOC and VOW sets. 2021-11-11 19:36:16 +01:00
Vittorio Alfieri
6d46467861 Added/fixed primitives, added VOW and VOC sets, fixed order index of CC2 set, updated the "missing_cards_by_sets" folder, added new keyword "findlasttype" to find the index of latest card with specified type in target player graveyard (e.g. "Timothar, Baron of Bats"), improved Android downloader. 2021-11-10 18:25:47 +01:00
Vittorio Alfieri
8012672a70 Fixed primitives, fixed a problem on "flip" ability for some backside cards (e.g. "Edgar Markov's Coffin"), added new keywords "pnumcreswp" and "onumcreswp" to calculate the number of creatures that have toughness greater than their power. 2021-11-07 22:13:39 +01:00
Vittorio Alfieri
f371295f24 Fixed a bug related to the "turnlimited" option on several ability triggers (e.g. Vampired, Discarded, etc.), restored some test of regression suite after this bug resolution. 2021-11-03 23:52:55 +01:00
Vittorio Alfieri
79e560e2b2 Fixed primitives, added new ability "exploits" to sacrifice a creature, added new trigger "exploited" and improved all primitives with Exploit ability, improved "tokencreated" and "sacrificed" triggers to allow "turnlimited" option, improved "flip" ability in order to keep track of current zone before flip. 2021-11-03 22:17:18 +01:00
Vittorio Alfieri
3baa6acaaf Fixed primitives, added new macro "_TRAINING_" for new ability "Training", added new trigger "trained", added "trainer" restriction to check if player controls an attacking creature with greater power than the current one, improved "ninjutsu" ability when the targeted card is already in play (e.g. "Olivia, Crimson Bride"), improved "flip" ability in order to add the "andability" option and in ordeer to prevent flipped auras go to graveyard, improved "andability" option for "imprint", "haunt" and "conjure" ability, improved "retarget" and "newtarget" keywords with "fromplay" option (to use with flipped auras e.g. "Vengeful Strangler"), replaced old "praidcount" and "oraidcount" with new keywords "pattackedcount" and "oattackedcount". 2021-10-31 21:40:37 +01:00
Vittorio Alfieri
051f498e54 Fixed "Mindbreak Trap", "Summary Dismissa" and "Obeka, Brute Chronologis" primitives. 2021-10-27 15:43:07 +02:00
Vittorio Alfieri
0824ea3984 Fixed a Bug in MusicExist method of GameStateDuel class when filename parameter was empty (this could lead to a wrong check on which soundtrack has to be played). 2021-10-23 21:44:28 +02:00
Vittorio Alfieri
63c5ff2789 Renamed some decks for AI. 2021-10-23 11:58:00 +02:00
Vittorio Alfieri
31530215a5 Renamed a deck for AI, fixed test suite (one test seems to randomly fail on AI choice without a real bug). 2021-10-21 10:51:30 +02:00
Vittorio Alfieri
78658a6a9e Added/fixed primitives, updated the "missing_cards_by_sets" folder, renamed several decks for AI, added "noentertrg" and "nodietrg" keywords to allow creatures enter the battlefield or die without causing abilities to trigger (e.g. "Hushbringer"). 2021-10-21 09:53:39 +02:00
Vittorio Alfieri
41a89c7324 Added "Spell Queller" primitive, updated the "missing_cards_by_sets" folder. 2021-10-20 16:26:31 +02:00
Vittorio Alfieri
3130049c63 Added Q06 set, improved Android downloader, fixed bug for indestructible creatures that have to go different zone after death (e.g. if they have exiledeath ability), fixed a bug when indestructible creatures have toughness = 0 (e.g. "March of the Machines" with manacost = 0 artifacts). 2021-10-20 14:52:15 +02:00
Vittorio Alfieri
fcb073ccd6 Fixed "Krenko Commander" and "Plane of the Apes" decks for AI, added a commandline trace to check which soundtrack file is currently playing. 2021-10-18 11:33:15 +02:00
Vittorio Alfieri
5bf5e1dfba Added a new deck named "Krenko Commander" for AI (credits to Bob). 2021-10-17 11:39:07 +02:00
Vittorio Alfieri
6d1e16441e Fixed "Cursed Mirror". 2021-10-15 17:47:13 +02:00
Vittorio Alfieri
316e2b21b4 Fixed "Sylvan Awakening", "Sylvan Library" and "Sylvia Brightspear" primitives. 2021-10-15 16:53:45 +02:00
Vittorio Alfieri
984aac51f4 Fixed all primitives with damage modifier, improved "damaged" trigger for Planeswalkers. 2021-10-15 13:36:31 +02:00
Vittorio Alfieri
eb35e3589b Fixed primitives, improved Aftermath casting rule: now the casted card becomes instant or sorcery in the stack according to the casted half, fixed a bug with the previous zone of cards casted using the "putinplay" option of "castcard" keyword. 2021-10-14 15:39:58 +02:00
Vittorio Alfieri
9c2eee7d7e Fixed primitives, added new ability "hasaftermath" to implement Aftermath cost with Flashback and refactored all cards with Aftermath cost (now they use a special version of Flashback but they don't count as flashback spell), added a new ability "spellmover" to implement all cards that have to target a spell on stack to move to some other zone (they are not real counters so they don't care about "nofizzle" or "nofizzlealternative" abilites of their target), fixed all primitives with "spellmover" ability, added a new keyword "storedname" to target card with a specifc previously stored name, improved "fizzleto" ability in order to allow to move the fizzled card on second place from the top or to exile and imprint the target name. 2021-10-13 23:42:45 +02:00
Vittorio Alfieri
fbcb1feb88 Fixed primitives, fixed "proliferate" target chooser, improved "cycled" and "discarded" triggers, added new keywords "pcycledcount" and "ocycledcount" to calculate how may cards have been cycled this turn from a specific player, added new menu choices to instantly select/deselect and confirm all the possible targets (in any zone) during the target selection of an ability (e.g. Proliferation ability can target a lot of permanents and players so using that menu choice all the targets will be instantly chosen and then the current player will be able to remove any of them or confirm the entire selection). 2021-10-13 17:39:48 +02:00
Vittorio Alfieri
371d4c9f85 Fixed and improved the Deck Importer (from MTGO) in Android application. 2021-10-12 16:32:26 +02:00
Vittorio Alfieri
c1f3913295 Added a new menu choice to instantly choose all the possible targets (on battlefield) of an ability during its target selection (e.g. Proliferation ability can target a lot of permanents and players so using that menu choice all the targets will be instantly chosen and then the current player will be able to remove any of them or confirm the entire selection). 2021-10-12 15:51:12 +02:00
Vittorio Alfieri
4623167b0f Fixed the Proliferation and Damageable target chooser in order to avoid targeting permanents or players without counters and/or with some protections (e.g. hexproof, shroud and similar), fixed a Travis build toolchain error. 2021-10-09 13:31:30 +02:00
Vittorio Alfieri
4e18b6d799 Fixed the Proliferation and Damageable target chooser in order to avoid targeting permanents or players without counters and/or with some protections (e.g. hexproof, shroud and similar). 2021-10-09 13:03:14 +02:00
Vittorio Alfieri
45b077e930 Fixed "Tergrid, God of Fright" primitive. 2021-10-09 00:50:05 +02:00
Vittorio Alfieri
1f6db30277 Fixed "Force of Vigor" and "Slogurk, the Overslime" primitives. 2021-10-09 00:14:29 +02:00
Vittorio Alfieri
fd76775923 Fixed a bug on deck choosing menu when an AI deck has no avatar image (it will be used "baka.jpg"), added new default avatar images for AI decks (up to 200), fixed "_PROLIFERATE_" macro and fixed all primitives with "proliferate" ability, improved the "proliferation" keyword for target chooser in order to avoid targeting permanents or players without counters and/or with some protections (e.g. hexproof, shroud and similar). 2021-10-08 23:01:37 +02:00
Vittorio Alfieri
aafaadb76f Removed the previous limit of 99 avatars images, if "avatarXX.jpg" image is not present, for deckXX.txt of AI it will be used "baka.jpg" image instead. 2021-10-07 15:07:00 +02:00
Vittorio Alfieri
99b501105d Fixed primitive "Armament Master" (issue #1075 opened by @remigiusz-suwalski). 2021-10-06 10:34:27 +02:00
Vittorio Alfieri
b84745e063 Added "--no-check-certificate" option to download the PSP SDK. 2021-10-01 18:01:19 +02:00
Vittorio Alfieri
89024241a8 Added/fixed primitives, updated the "missing_cards_by_sets" folder. 2021-10-01 17:53:28 +02:00
Vittorio Alfieri
c60ffba70d Added/fixed primitives, updated the "missing_cards_by_sets" folder, added missing Conspicacy cards and tokens in CNS set, added Conspicacy cards management, added new ability "isconspiracy" to identify the Conspicacy cards into the Sideboard, added "Conspiracy" type in "Subtypes.h" enum definition, added a fix in "GameObserver::Affinity()" method in order to avoid a crash when the card is a Conspiracy in the commandzone. 2021-09-28 16:22:13 +02:00
Vittorio Alfieri
d3fad48367 Fixed typos on "Teferi, Who Slows the Sunset" primitive. 2021-09-27 15:01:10 +02:00
Vittorio Alfieri
79d353d3ee Fixed a bug on game achievements percentage calculation. 2021-09-27 11:33:35 +02:00
Vittorio Alfieri
9e3caa635d Added new decks for AI, improved "genrand", "altercost" and "changecost" keywords in order to allow the usage of a variable instead of a simple number (e.g. "altercost(colorless, -phandcount)"). 2021-09-26 12:22:28 +02:00
Vittorio Alfieri
8ae7439978 Fixed changelog after pull merge. 2021-09-24 23:11:37 +02:00
Vittorio Alfieri
f9f1f0f53d Fixed changelog after pull merge. 2021-09-24 23:08:45 +02:00
Vittorio Alfieri
1efc38ef0f Merge pull request #1074 from remigiusz-suwalski/refactor-202d46176
Upgrade AI decks 3, 30-36, 38 to modern frames
2021-09-25 00:04:47 +03:00
Vittorio Alfieri
6538f1625e Fixed primitives, fixed MIC set, improved Android downloader, added "Dungeon" and "Emblem" types in "Subtypes.h" enum definition, added a fix in "GameObserver::Affinity()" method in order to avoid a crash when the card is null or if it's a Dungeon in the commandzone. 2021-09-24 23:03:54 +02:00
Remigiusz Suwalski
5810a36610 Upgrade AI decks 3, 30-36, 38 to modern frames
Initially committed in 89dae6523 (Nov 3, 2008) and 202d46176 (Sep 22, 2009).

Major changes done only in deck3:
- Castle -> Builder's Blessing (functional reprint)
- Ironroot Treefolk (vanilla 3/5) -> Spitting Spider (reach, 3/5)
- Thicket Basilisk (deathtouch 2/4) -> Kessig Recluse (reach, deathtouch 2/3)
- Pearled Unicorn (cmc 3, 2/2) -> Ronom Unicorn (cmc 2, 2/2)
- Scryb Sprites (flying 1/1) -> Scute Mob (1/1, +4/+4 with 5 lands)
- Shanodin Dryads -> Jukai Messenger (functional reprint)
- War Mammoth (trample 3/3) -> Rhox Charger (trample, exalted 3/3)

Also deck34 (Kobolds) was kept with original frames because Kobolds were never reprinted.
2021-09-24 19:20:21 +02:00
Vittorio Alfieri
cd677111b7 Fixed primitives, improved "@discarded", "@counteradded" and "@counterremoved" triggers in order to user "all(trigger)" target. 2021-09-22 18:56:43 +02:00
Vittorio Alfieri
6be219f586 Added/fixed primitives, replaced all occurrences of "AEther" with "Aether" in each ".txt" and ".dat" file according to the new naming convention (pull request #1072 by @remigiusz-suwalski). 2021-09-22 14:33:54 +02:00
Vittorio Alfieri
e2ac10be95 Fixed primitives, fixed STA set, fixed a bug in new background images management. 2021-09-21 09:24:38 +02:00
Vittorio Alfieri
832d033488 Fixed primitives, improved background images management, now it's possbile to add a different background for opponent deck choosing (menupanel2.jpg) and added a new sub-folder "background" for custom themes where it will be possbile to store up to six new background images for battlefield (from "backdrop1.jpg" to "backdrop6.jpg") that will be randomly choosen when match starts. 2021-09-20 15:36:42 +02:00
Vittorio Alfieri
e2a1705b3f Fixed a bug on sound tracks for PSP/PSVita devices, removed a test on vampired trigger due to a fake error on test suite. 2021-09-19 18:17:12 +02:00
Vittorio Alfieri
ff47c0dd44 Fixed typos in several primitives, updated the "missing_cards_by_sets" folder, fixed MID, MIC and CC2 sets. 2021-09-19 16:54:43 +02:00
Vittorio Alfieri
c2482a50f5 Added/fixed primitives, updated the "missing_cards_by_sets" folder, added MID, MIC and CC2 sets, improved Android downloader for new added sets. 2021-09-19 15:54:37 +02:00
Vittorio Alfieri
ddda01dd86 Added/fixed primitives, added MID, MIC and CC2 sets, improved Andorid downloader for new added sets. 2021-09-19 14:30:56 +02:00
Vittorio Alfieri
8cc3a5b4e3 Merge pull request #1070 from remigiusz-suwalski/refactor-89dae6523
Upgraded AI decks 7, 9, 10 to modern frames in a human-friendly format.
2021-09-18 18:44:11 +03:00
Vittorio Alfieri
1306a43f33 Added/fixed primitives, updated the "missing_cards_by_sets" folder. 2021-09-18 17:42:21 +02:00
Remigiusz Suwalski
06923a0824 Upgrade AI decks 7, 9, 10 to modern frames
Initially committed in 89dae652 (Nov 3, 2008).
2021-09-17 21:47:31 +02:00
Vittorio Alfieri
f671f61713 Fixed primitives, improved sound tracks management, now it's possbile to add a custom tracks for Shop section (Track2.mp3), Option window (Track3.mp3) and Awards section (Track4.mp3) and it's also possible to add two subfolders "MainMenu" and "Battlefield" within "suound" folder where it's possbile to add twenty custom songs ("TrackMenuXX.mp3" and "TrackDuelXX.mp3") that will be played randomly in main menu windows and when match starts. 2021-09-16 22:11:43 +02:00
Vittorio Alfieri
2af470e42b Fixed AFR, STA, STX and J21 sets, fixed "_PROLIFERATE_" macro and fixed primitives with "proliferate" ability, fixed all primitives with "mutate" ability, improved "proliferate" and "duplicatecounters" keywords, added a new target "permanent" to target togheter a player and permanents on battlefield (e.g. cards with "proliferate"). 2021-09-13 18:56:16 +02:00
Vittorio Alfieri
04a6a4bfe2 Added/Fixed primitives, updated the "missing_cards_by_sets" folder, added a new option "keepname" to keep the original name after the copy (e.g. Olag, Ludevic's Hubris), implemented a fix to avoid triggering of oneshot abilities when "flip" ability is used to return from a copy, fixed an issue with colors and "transforms" keyword, implemented a fix to avoid crashes when the card paying extracost has also a cost alteration (e.g. combo with "Pirate's Pillage" and "Ruby Medallion"), added a new keyword "totmanaspent" to return the real amount of mana spent to cast a card (e.g. Memory Deluge), added new keywords "pnumofidentitycols" and "onumofidentitycols" to return the total amount of commander identity colors for controller or opponent (e.g. War Room), improved "totcnt" keyword, added new keywords "totalcololorsinplay" and "oppototalcololorsinplay" to return the total amount of colors on controller or opponent battlefield (e.g. Moonveil Regent), added new keywords "pcoven" and "ocoven" to return if a player controls three or more creatures with different powers (e.g. Augur of Autumn). 2021-09-12 21:18:43 +02:00
Vittorio Alfieri
9aa15766d4 Added/fixed primitives, updated the "missing_cards_by_sets" folder, added new ability "hasstrive" to implement Strive cost with multikicker and refactored all cards with Strive cost (now they use a special version of multikicker but they don't count as kicked spell), improved "targeted" and "vampired" trigger to allow the "turnlimited" option, improved Android gesture to emulate "option menu" button pressure (slide down) and emulate "back" button pressure (slide up). 2021-09-07 21:41:24 +02:00
Vittorio Alfieri
9dabf121d3 Fixed primitives, changed type of "isFlipped" card variable from bool to int and fixed a related bug on targeting cards with "isFlipped" attribute, improved "disturb" ability (now fi you counter a card casted with disturb it correctly goes to exile), added "decayed" ability, added two new zone alias "mycommandplay" and "opponentcommandplay" for targeting Battlefield and CommandZone at the same time. 2021-09-06 17:31:36 +02:00
Vittorio Alfieri
ccae9673e6 Fixed bug that was not correctly showing the full Commander decks list in the deck choosing menu page, added a new gesture for Android to emulate back button pressure: now sliding from down to up for almost all screen size will trigger the back button in game (e.g. pause match in gameplay, going back from shop, and so on). 2021-09-05 01:15:01 +02:00
Vittorio Alfieri
c211b2eaa4 Fixed several primitives with "castcard" ability, fixed a bug when using "noevent" and "copied" options togheter with "namedcard" option in "castcard" ability, allowed the usage of "and!()!" ability with "namedcard" option in "castcard" ability for permanents, added "daybound" and "nightbound" abilities. 2021-09-04 21:14:05 +02:00
Vittorio Alfieri
cc16db7256 Added/fixed primitives, refactored and improved almost all transforming human cards (included all the Werewolves), improved "flip ability and "doubleside" ability adding a new "backside" option, fixed a bug on "doubleside" ability for planeswalkers, added "backside=" key to CardPrimitive in order to specify the other side of double-faced cards, added "hasbackside" option to target chooser in order to find cards which have a back side, added "dualfaced" that return 1 if a card has a backside card, fixed loyalty counter ability on planeswalker flip (is was not resolving correctly), changed type of damageToController, damageToOpponent, damageToCreature, wasDealtDamage, combatdamageToOpponent from bool to int in order to retrieve those values if needed, added "totaldmg" keyword that returns the total amount of damage dealt by a creature in the current turn, added new restriction "coven in order to check if a player controls three or more creatures with different powers, added new ability "hasdisturb" when the Retrace cost of a card is a disturb cost (e.g. "Beloved Beggar"). 2021-09-04 01:48:47 +02:00
Vittorio Alfieri
236f677f2a Fixed primitives, fixed some possible crashes on Commander Format. 2021-09-03 00:33:53 +02:00
Vittorio Alfieri
001cea95bd Added/fixed primitives, updated the "missing_cards_by_sets" folder, fixed several crash on Commander Format, fixed a possible crash using "and!()!" with "imprint", added a new macros "_REBOUND_" and "_GOAD_" related to rebound and goad abilities and refactored all cards using them, implemented a new keywords "haunt", "hasprey", "preyname" and "isprey" related the haunting ability and improved all cards using it, Added "commander" and "\*" to HINT castpriority for AI decks in order to allow the user to give a cast priority to commanders. 2021-09-02 19:32:45 +02:00
Vittorio Alfieri
54d0c32035 Added/fixed primitives, updated the "missing_cards_by_sets" folder, improved all cards with replicate (now they use a special version of multikicker but they don't count as kicked spell), improved all cards with "fizzle" and "fizzleto" ability and improved engine for "fizzle" and "nofizzle" ability (e.g. now it's possible to grant a card the nofizzle ability on stack), added new keyword "mycolnum" to count the number colors of a card. 2021-08-31 20:06:33 +02:00
Vittorio Alfieri
45de20c8d3 Added/fixed primitives, updated the "missing_cards_by_sets" folder, added a new trigger when a player shuffles his/her library, added new keywords "plastshlturn" and "olastshlturn" to retrieve the last turn a player shuffled his/her library, refactoring of some source files. 2021-08-30 23:02:54 +02:00
Vittorio Alfieri
e1f91a50f6 Fixed dat file for J21 set, improved Android downloader for J21 set. 2021-08-30 12:15:43 +02:00
Vittorio Alfieri
790f02905a Fixed dat file for MB1, PRM and PSAL sets. 2021-08-29 23:54:35 +02:00
Vittorio Alfieri
32008496b3 Added/fixed primitives, fixed dat file of several sets, updated the "missing_cards_by_sets" folder, updated README.md file, improved Android downloader. 2021-08-29 19:51:13 +02:00
Vittorio Alfieri
ebc281da6e Added/fixed primitives, improved the way to limit the number of total primitives to load at startup using the file named LimitedCardList.txt (that has to be copied in User folder). This should help to run the game even on older devices with low RAM such as PSP-3000 (It needs also a lighter graphics sub-folder in Res folder). 2021-08-28 16:34:22 +02:00
Vittorio Alfieri
8d6e0122bb Added/fixed primitives. 2021-08-27 23:47:47 +02:00
Vittorio Alfieri
1ce0facf21 Added/fixed primitives, Added keywords "showopponenthand" and "showcontrollerhand" to allow controller and opponent to play with their hand revealed, added "mytarg" prefix to check values for a card target as like we do for "storedcard" prefix (e.g. "Redirect"), fixed "undocpy" keyoword for all cards (e.g. "Renegade Doppelganger") that have to be back from a previous copy. 2021-08-27 00:29:47 +02:00
Vittorio Alfieri
bbc25e2727 Added/fixed primitives, Improved AI: now it can plays cards using morph cost too. 2021-08-25 15:30:44 +02:00
Vittorio Alfieri
c7c2025fc9 Added/fixed primitives, improved "TurnSide", "Morph" and "Flip" abilities when dealing with Commanders, added "fresh" attribute to cards just put in Sideboard, added a put back rule when a Commander is put in Sideboard, allowed to cast a card with kicker or alternative or morph cost from the CommandZone: in case of Morphed or DoubleFace cards (e.g. "Tergrid, God of Fright"), they will be put in play but they won't be Commander, but when they will be put elsewhere (e.g. destroyed) they may be back to the CommandZone with the usual Commander put back rule. 2021-08-24 22:43:55 +02:00
Vittorio Alfieri
6331b1daf4 Updated changelog with last 3 years of modifications (issue #1067 by @remigiusz-suwalski), added tokens in ELD set, improved Android downloader for ELD set, fixed primitives with "asflash" ability, improved all cards with adventure: now they become instants or sorceries in stack to activate the correct trigger (e.g. with Magecraft combos), added "nomovetrigger" ability for all the "fake" cards (e.g. cards which are simple abilities) in order to don't trigger any event on their cast since they are not real cards. 2021-08-23 02:26:16 +02:00
Vittorio Alfieri
c978223b10 Updated changelog with last 3 years of modifications (issue #1067 by @remigiusz-suwalski), added tokens in ELD set, improved Android downloader for ELD set, fixed primitives with "asflash" ability, improved all cards with adventure: now they become instants or sorceries in stack to activate the correct trigger (e.g. with Magecraft combos), added "nomovetrigger" ability for all the "fake" cards (e.g. cards which are simple abilities) in order to don't trigger any event on their cast since they are not real cards. 2021-08-23 02:18:04 +02:00
Vittorio Alfieri
cd9e5fb2e5 Fixed "Cunning Rhetoric". 2021-08-20 09:39:28 +02:00
Vittorio Alfieri
7d465bfbc4 Fixed a crash on "Tevesh Szat, Doom of Fools" primitive. 2021-08-19 23:51:26 +02:00
Vittorio Alfieri
bdba322558 Fixed "City's Blessing" macros, fixed "Jared Carthalion, True Heir", added new keyoword "noncombatvigor" for cards such as "Stormwild Capridor". 2021-08-19 15:45:30 +02:00
Vittorio Alfieri
d3167bb4f4 Added/fixed primitives, renamed "The Monarch" and "City's Blessing" cards in CN2 and RIX sets, added 2 new macros for Monarch abilites, refactoring of all cards with _ASCEND_ and _MONARCH_ macros. 2021-08-19 14:09:57 +02:00
Vittorio Alfieri
f4c27968a1 Added/fixed primitives. 2021-08-18 14:46:03 +02:00
Vittorio Alfieri
2f4869434c Added/fixed primitives and macros, fixed RIX and CN2 sets in order to allow images for Monarch and City's Blessing ebmlems, updated all cards with "Monarch" and "Ascend" related abilities, improved "token" keyword in order to allow the usage of "notrigger" option even when we are creating a named token, moved Monarch rules from general txt files to the specific Monarch emblem, improved Android downloader for RIX set. 2021-08-17 23:34:05 +02:00
Vittorio Alfieri
cb74126544 Fixed "Migratory Greathorn". 2021-08-16 23:08:36 +02:00
Vittorio Alfieri
2fe8a0e473 Added/fixed primitives and switched "Hound" type to "Dog" type. 2021-08-16 15:32:44 +02:00
Vittorio Alfieri
73d9173aa0 Fixed "Fabled Passage". 2021-08-15 14:28:20 +02:00
Vittorio Alfieri
f7ce614df8 Fixed "Chance Encounte" and "Tavern Scoundrel". 2021-08-15 13:40:37 +02:00
Vittorio Alfieri
d85f3f7743 Fixed "Shadowspear" and other primitives related to shroud abilities. 2021-08-15 13:09:58 +02:00
Vittorio Alfieri
54b6aa0437 Fixed J21 set, added/fixed primitives. 2021-08-13 23:43:37 +02:00
Eduardo
b84ddc5687 Misspell Battalion 2021-08-12 20:22:54 -05:00
Eduardo
b7f80f3851 New macros and primitives fixes
Fixes to whenever you draw your second card each turn, batallion
2021-08-12 20:16:29 -05:00
Vittorio Alfieri
a296db349c Fixed "Pox" and "Blast Zone". 2021-08-12 20:19:56 +02:00
Vittorio Alfieri
1e0928b227 Added a way to limit the number of total primitives to load at startup using a file named LimitedCardList.txt (that has to be copied in User folder). This should help to run the game even on older devices with low RAM such as PSP-3000 and PSVita (with Adrenaline). 2021-08-12 19:10:48 +02:00
Vittorio Alfieri
ecc5ddfe28 Fixed "Tevesh Szat, Doom of Fools". 2021-08-11 12:18:50 +02:00
Eduardo
730ddd2b50 Changes to Random modes and improved filters
Improved search restriction by type, allow you to search for "enchantment creature" or "legendary artifact", the engine no longer excludes or prevents searching two "types".
2021-08-10 23:36:23 -05:00
Vittorio Alfieri
b3b127ac2f Fixed "Tergrid, God of Fright" and fixed some typos in primitives. 2021-08-10 20:08:22 +02:00
Vittorio Alfieri
3219360cd7 Added ZNR showcase cards, improved Android downloader for ZNR set, fixed primitives: "Tyrite Sanctum", "Tergrid, God of Fright" and "Liliana, Dreadhorde General". 2021-08-10 15:42:57 +02:00
Eduardo
cd55b4342c Fixes to primitives
Deep Forest Hermit
Elvish Rejuvenator
Force of Virtue
Potion of Healing
Quakefoot Cyclops
the mending of dominaria
titan hunter
valiant knight
Mausoleum Turnkey
Infested Roothold  is cast not just ETB
Treasured Find should be exiled
Mu Yanling, Sky Dancer + ability
2021-08-09 13:52:47 -05:00
Vittorio Alfieri
1727e11091 Fixed Plaguecrafter and Steel Hellkite. 2021-08-09 12:09:02 +02:00
Vittorio Alfieri
9db4b9e2d4 Improved Android downloader for J21 set. 2021-08-08 00:53:14 +02:00
Vittorio Alfieri
b7e0fc6d8b Added/fixes primitives. 2021-08-07 17:32:51 +02:00
Vittorio Alfieri
0f9b4c6ab2 Added J21 set and added/fixed primitives. 2021-08-07 15:55:28 +02:00
Vittorio Alfieri
a82636b099 Fixed "Jolrael, Mwonvuli Recluse", fixed "Corrosive Ooze", added new keyword "all(myeqp)" in order to target all the equipments attached to a creature (e.g. Corrosive Ooze). 2021-08-07 13:42:28 +02:00
Eduardo
b97bd275e4 Macros for Enraged and Blocked
Removing macros that are not necessary.
Added enrage and blocked macross.

Corrosive Ooze didn't have a code and was causing problems.
2021-08-06 20:36:03 -05:00
Vittorio Alfieri
b70e03a5cf Added/fixed primitives. 2021-08-05 17:33:25 +02:00
Vittorio Alfieri
946557acf2 Fixed Muxus, Goblin Grandee, fixed Time Wipe. 2021-08-05 14:11:07 +02:00
Eduardo
f792729f80 Primitive fiexes and macros replacements
Removing typos in firststrike, @@ and ==.
death's-head buzzard didn't gave creatures -1/-1
ponyback brigade morphed created 6 tokens
Cavalier of Flame wasn't working
Duplicate ability in Lone Revenant
Macros for:
_ADDENDUM_
CONSTELLATION_
_FEROCIOUS_
_POPULATE_
_RALLY_
2021-08-04 19:57:55 -05:00
Vittorio Alfieri
4458a6e780 Fix Mulligan when Human player is not the first one. 2021-08-04 15:24:21 +02:00
Vittorio Alfieri
2ca03bb1f0 Fixed Muxus, Goblin Grandee and fixed Liliana, the Last Hope, added conjure keyword for J21 set, added perpetual counters and abilities for J21 set, improved imprint keyword, improved moverandom keyword for J21 set. 2021-08-04 12:33:28 +02:00
Vittorio Alfieri
e6ffd056b5 Fixed MED and THB sets and fixed Liliana, the last Hope. 2021-08-04 09:07:37 +02:00
Eduardo
46ec7dc0c6 Adding missing Planeswalkers to Mythic Edition and replaced code for _ATTACKING_
WAR OF THE SPARK MYTHIC EDITION  8 Cards missing
Replaced @combat(attacking) source(this): for _ATTACKING_all
2021-08-03 18:58:30 -05:00
Eduardo
8ab49e021f Fixed Flipwalkers and some macros replacements
Legendary creatures that transforms into planeswalkers.

_LANDFALL_
_HEROIC_

If Lotus Field enters the battlefield while you control fewer than two other lands, you must sacrifice each land you control, including Lotus Field.
2021-08-02 20:38:25 -05:00
Eduardo
fb64821e0c Fixes to primitives
kykar, winds's fury
Portal of Sanctuary
Arasta of the Endless Web
The Binding of the Titans exiles opponent cards to my zone
miscast
Greenbelt Rampager
increasing ambition
Brago, king eternal no return of the king
enshrined memories
izzet charm loot
said // done
gallia of the endless dance
shatter the sky is green
Arasta of the Endless Web
Nylea, keen-eye puts creature into field instead of hand
2021-08-02 13:23:46 -05:00
Vittorio Alfieri
ef3e743980 Fixed primitives. 2021-07-30 14:30:14 +02:00
Eduardo
cffda7421f Fixes to Primitives
lesser masticore
auto=auto replaced for auto
Lady Caleria: Human Archer -> Elf Archer
Ridgescale Tusker: Beast -> Pangolin Beast
Yawgmoth, Thran Physician abilities=protection from(human)
Subtlety targets a spell not a permanent
dwarven mine and other similar lands from Eldraine
Gingerbread Cabin
Idyllic Grange
Mystic Sanctuary
Witch's Cottage
Blinding Radiance
Trial of Ambition should target
grasping scoundrel
Eater of the Dead exiles itself
corpseweft exiles itself
blur of blades
radiant destiny choose a creature type not a color
brush with death
amorphous axe
Excavation Technique
Conqueror's Foothold
shipwreck looter and other cards that loot (draw then discard)
rabid bite
2021-07-30 00:33:47 -05:00
Vittorio Alfieri
bb5a9dd31e Fixed issue #1065 by @DoidArthas: now on Flip keyword we try to keep auras and equipments effects on transformed card basic abilities (e.g. Pacifism on Werevolwf). 2021-07-29 10:06:28 +02:00
Vittorio Alfieri
2cbb011fe3 Added/fixed primitives, fixed crash with Taj-Nar Swordsmith, Fixed monarch switch after player takes combat damage, fixed allsubtypes in transforms keyword, fixed controllerdamager and opponentdamager keywords and all primitives using them, fixed Emerge alternative cost restriction, fixed Kinship condition on same creature subtype, added alterexperience keyword and fixed all primitives that use experience counters, fixed all primitives using ability counters from Ikoria, fixed mypoolsave keyword in order to don't finish effect at the end of turn, fixed all primitives using mypoolsave (e.g. Omnath, Locus of Mana), fixed Gravepurge and Daretti, Scrap Savant, in order to allow the player to discard zero cards while using their effects. 2021-07-29 03:33:33 +02:00
Vittorio Alfieri
d2fbaaf320 Improved Cursed Scroll and Magus of the Scroll, added/fixed primitives, solved Werewolf's Issues #1064 by @DoidArthas. 2021-07-27 14:37:18 +02:00
Eduardo
1c9da2e6e6 Fixes to primitives and oracle text update
Changed the subtype Hound to Dog
Added Bard and Ranger subtype

Kalitas, Traitor of Ghet
Champion of Stray Souls
Gingerbread Cabin
Idyllic Grange
Barrage Tyrant missing '}'
Lesser Masticore
Gisa and Geralf
Eliminate space in instances of "target ("
2021-07-27 00:39:01 -05:00
Vittorio Alfieri
d8f1ff33de Fixed promo sets order index. 2021-07-26 14:34:28 +02:00
Vittorio Alfieri
c1404ff082 Added PLG21 set, improved Android downloader, fixed Nicol Bolas, God-Pharaoh (issue #1063 by @DoidArthas) 2021-07-26 10:53:10 +02:00
Vittorio Alfieri
f499a1e52f Improved Cursed Scroll and Magus of the Scroll, fixed Android downloader. 2021-07-25 21:54:39 +02:00
Eduardo
9bdf0e0690 Fixes to primitives and useless comments removed
stingerfling spider
cliffhaven kitesail
Enlarge
The Akroan War second ability does nothing
Silas Renn, you still have to pay the cost
Urza's Saga shouldn't lose previous abilities
Rocky Tar Pit and similar fetchlands got interrupted
Grand Architect didn't turn creature blue
component pouch
scrapyard recombiner
Harmony of Nature
porcuparrot didn't work with (player,creature,planeswalker), other cards seems to work with that syntaxis
Taranika, Akroan Veteran
Elspeth Conquers Death
Phyrexian Ingester can exile opponents cards
Taborax, Hope's Demise (never use "another" to specify "other" target)
Inniaz, the Gale Force doesn't fly
frost titan
Gustrider Exuberant flying
Kasmina, Enigmatic Mentor crashes the game when the AI tries to use it
2021-07-25 14:09:40 -05:00
Eduardo
7e2162bcc3 Replacing for macros _DIES_
Replacing the string "@movedto(this|graveyard) from(battlefield):" for the macros _DIES_ for readability, consistency and bugs reduction.
2021-07-25 13:54:21 -05:00
Vittorio Alfieri
57b8178d86 Fixed primitives. 2021-07-24 00:03:26 +02:00
Eduardo
b2a4edae9f token(The Atropal)
token(The Atropal)
2021-07-21 18:47:31 -05:00
Eduardo
35a79cb723 Restore to previous modifications in borderline and bug fixes
Metamorphose should put cards at top of library
Dark-Dweller Oracle missing closing parenthesis
Chandra, Bold Pyromancer -3
Militant Angel before attacks used to create a token
Typos in some operators, (never should be a '=>')
2021-07-21 18:41:09 -05:00
Vittorio Alfieri
0057269361 Fixed "The Atropal" token card in AFR set, improved Android downloader. 2021-07-21 18:15:05 +02:00
Vittorio Alfieri
849194b8da Added/fixed primitives, removed deckmaster.info source from Android downloader, fixed HTR18 set, fixed "menace" blocking issue from AI, improved Graft ability from AI, fixed hangs on Offering costs for both human and AI, added a new keyword "ishuman" to distinguish if a card controller is human or AI (e.g. on Graft trigger), fixed a possbile hang on negative manacost payment. 2021-07-21 10:51:13 +02:00
Eduardo
cabc0757be Bug Fixes and replaced instances of a creature dying for the macros _DIES_
Errors Fixed:

Vicious Rumors doesn't mill
Barrin, Tolarian Archmage should not return itself
Thassa, Deep-Dwelling is wrong
Bruse Tarl, Boorish Herder
Spiteful Sliver targets creatures
Karn, Scion of Urza -2 ability
Grand Master of Flowers was blue
Forsaken Monument has CMC of zero
Shadowspear can't equip
You Happen On a Glade
Disease Carriers
Desperate Castaways
Grim Physician targets a card in graveyard
Legion's Judgment had a typo
2021-07-21 00:17:54 -05:00
Vittorio Alfieri
23fa7f9f6e Added/fixed primitives. 2021-07-18 14:21:39 +02:00
Vittorio Alfieri
3442e7cb16 Fix proliferate ability. 2021-07-17 02:56:15 +02:00
Vittorio Alfieri
31ab9edc81 Added HTR18, HT19, AFR and AFC sets, added/fixed old primitives, improved Android dowloader, fixed it lang file, fixed IMA rarities, fixed order index of some old sets, added all features from D&D such as Dungeon Cards and Dice (d20,d10, adn so on). 2021-07-17 02:33:08 +02:00
Eduardo
d98956a1b8 Fixes to primitives
Dwarven Mine, no need to tap for red since it's a mountain
Mystic Sanctuary, no need to tap for blue since it's an island
Earthshaker Giant does not work
Ranger-Captain of Eos puts card into play not into hand
Jorn, God of Winter has wrong stats
Enemy of Enlightenment subtype misspell
Heavenly Qilin subtype misspell
Urza's Saga subtype misspell
Spirit of the Aldergard subtype misspell
dire tactics loses life even with human on board
piercing rays taps 2 creatures
shipwreck moray should grant +2/-2
sorin, vampire lord text is wrong
spontaneous artist grants 2 energy
Spinerock Knoll does nothing
2021-07-09 20:32:16 -05:00
Vittorio Alfieri
f0ee95b483 Fixed Mana Drain (issue #1060 by @Gourajiro), fixed Reinterpret, fixed the taskboard menu choice during game. 2021-06-29 16:38:58 +02:00
Vittorio Alfieri
5b7d8662b7 Improved in-game menu (now the Cancel choice is on top and it's possibile to open/close the taskboard during game), improved add/remove "counter" keyword in order to avoid the trigger if needed (e.g. loop avoidance), fixed Italian and Spanish languages. 2021-06-18 12:22:16 +02:00
Vittorio Alfieri
5f0883943a Added H1R set, added/fixed prmitives, improved Android downloader. 2021-06-17 11:14:09 +02:00
Vittorio Alfieri
9df5bb29ab Added MH2 set, improved Android downloader, added/fixed primitives, improved coin flip event trigger, improved discarded attribute, improved castcard keyword (now it's possible to specify the x value in cost), improved add/remove/mod counter trigger, improved the "spent" and "converge" keyword for spell still in the stack. 2021-06-16 17:07:44 +02:00
Vittorio Alfieri
55edfc6374 Added HA5 set and imnproved Android downloader. 2021-05-22 20:40:04 +02:00
Vittorio Alfieri
79716a4533 Added a new rule to flip back modal dual face card on each phase and after each action, fixed "Aladdin's Lamp" and "Turntimber Symbiosis" primitives, allowed the AI to play back side of modal dual face cards, improved the "doubleside" keyword to flip modal dual face cards, improved filters to target flipped cards using the "isflipped" keyword, fixed a crash when zone pointer was null in GameObserver::logAction method. 2021-04-28 17:03:29 +02:00
Vittorio Alfieri
ac273b1947 Fixed a bug: It's not allowed to turn side of double faced cards when they are on battlefield. 2021-04-27 21:08:51 +02:00
Vittorio Alfieri
8b358b3d1c Fixed a bug: AI does not have to use the doubleside ability to avoid loops. 2021-04-27 17:44:41 +02:00
Vittorio Alfieri
6fb3feef72 Added/Fixed primitives, improved the Double Face Modal cards management: now it's possibile to click on card to flip the side in odrer to read card infos such as name, manacost, text and types, improved the "moveto" keyword in order to allow the usage of the "temp" zone for removing unecessary cards from game (e.g. duplicated card generated from some dual face cards), added the option "nolegend" to the "copy" keyword in order to crerate copy of legendary cards that are not legendary (e.g. Echoing Equation), added the keywords "doublefacedeath" and "gaineddoublefacedeath" to send a card to temp zone after death (e.g. duplicated card generated from some dual face cards), added the keywords "lifefaker" to identify the cards wich modify the life increasement when a @lifeof triggers occours (e.g. Angel of Vitality). 2021-04-27 15:35:54 +02:00
Vittorio Alfieri
e265dc3e7f Completed STX set, fixed/added primitives, improved Android downloader, implemented the usage of ^ instead of , char (e.g. target multiple zones within transforms keyword), improved the code to avoid the multiple triggers in case of abilities gained from other cards (e.g. Kasmina, Enigma Sage). 2021-04-26 19:23:31 +02:00
Vittorio Alfieri
68a64238cb Added/fixed primitives, added new keywords "fourtimes", "fivetimes", "thirdpaid", fixed Tavis-CI build. 2021-04-21 18:27:33 +02:00
Vittorio Alfieri
abe8b580c8 Fixed Travis-CI build. 2021-04-21 11:41:59 +02:00
Vittorio Alfieri
71ff7baf85 Fix error import QTOpenGL 2021-04-21 11:32:13 +02:00
Vittorio Alfieri
286ccaafb2 Fixed Travis-CI build 2021-04-21 11:13:49 +02:00
Vittorio Alfieri
2c80570cf4 Fixed Travis-CI build 2021-04-21 11:12:02 +02:00
Vittorio Alfieri
6a311f2cd6 Fixed Travic-CI build. 2021-04-21 11:08:55 +02:00
Vittorio Alfieri
2028c5c79d Update travis-script.sh 2021-04-21 11:05:59 +02:00
Vittorio Alfieri
a6bec1a96e Update .travis.yml 2021-04-21 10:56:21 +02:00
Vittorio Alfieri
d11ac6cf8b Update .travis.yml 2021-04-21 10:52:12 +02:00
Vittorio Alfieri
ff63f98b56 Update .travis.yml 2021-04-21 10:45:57 +02:00
Vittorio Alfieri
e8f853eb37 Try to change java version. 2021-04-21 10:42:54 +02:00
Vittorio Alfieri
568dd65173 Update .travis.yml 2021-04-21 10:38:43 +02:00
Vittorio Alfieri
2a45b9f8df Update .travis.yml 2021-04-21 10:34:08 +02:00
Vittorio Alfieri
372715fab7 Update .travis.yml 2021-04-21 10:32:04 +02:00
Vittorio Alfieri
59c3926f16 Update .travis.yml 2021-04-21 10:30:02 +02:00
Vittorio Alfieri
03fbbbb2bb Update .travis.yml 2021-04-21 10:27:20 +02:00
Vittorio Alfieri
74da665ec9 Changed target and source java version from 1.5 to 1.6 2021-04-21 09:58:25 +02:00
Vittorio Alfieri
8d2cc7124e Fixed Travis-CI build. 2021-04-21 09:21:53 +02:00
Vittorio Alfieri
7ae1a6137e Update .travis.yml 2021-04-21 09:18:57 +02:00
Vittorio Alfieri
c802be4a9d Test Travis-CI compilation. 2021-04-21 09:13:33 +02:00
Vittorio Alfieri
9ba9008126 Update .travis.yml 2021-04-21 09:05:42 +02:00
Vittorio Alfieri
8ee1d185d5 Try to solve Travis-CI environment problems. 2021-04-21 08:53:30 +02:00
Vittorio Alfieri
66e0a88809 Update .travis.yml
Fix compilation issue.
2021-04-21 00:10:43 +02:00
Vittorio Alfieri
34765237e0 Update .travis.yml
Fix compilation issue.
2021-04-21 00:07:49 +02:00
Vittorio Alfieri
5153c3b9c0 Update .travis.yml
Test to fix compilation.
2021-04-21 00:01:05 +02:00
Vittorio Alfieri
9da159a607 Added C21, STA and STX (still in progress) sets, improved Android downloader, added/fixed primitives, added a keyword to get if a card has "X" in its cost, fixed a crash while targeting a spell on stack, added a new option "nolegend" to clone keyword in order to create a token without legendary type and rule, improved "hascnt" keyword with "anycnt" option to count all counters on a card, added a new keyword "hasstorecard" to get if a card has a stored card or not(e.g. fizzlers), added a new keyword "pgmanainstantsorcery" to count the mana value of all instants and sorceries in player graveyard, added a new keyword "currentphase" to get the current game phase. 2021-04-20 23:34:30 +02:00
xawotihs
4709295598 Adds ios cmake toolchain 2017-09-08 22:47:29 +02:00
Xawotihs
af0c423359 Switch back to java oracle 8 to build android app 2017-09-08 18:23:09 +02:00
Xawotihs
45253e0008 Reupdate pip calls to use them for osx as well 2017-09-08 17:56:20 +02:00
Xawotihs
e32e5c2a47 Readding sudo pip ... lalala ... 2017-09-07 22:12:25 +02:00
Xawotihs
3a4f9f06cb reordered pip install 2017-09-07 22:01:36 +02:00
Xawotihs
a563030440 Removing pip cache 2017-09-07 21:44:55 +02:00
Xawotihs
80d43896ff Reordered pip installs around 2017-09-07 20:56:37 +02:00
Xawotihs
1c5949411f Fixed some ] and space 2017-09-07 20:22:25 +02:00
Xawotihs
699b151939 With a couple of ; 2017-09-07 20:15:32 +02:00
Xawotihs
e6af1a08b9 Use sudo pip for Android and pip with linux without Android 2017-09-07 20:09:56 +02:00
Xawotihs
7eac02f8d4 Trying pip install without sudo 2017-09-06 19:44:00 +02:00
Xawotihs
58e70e2500 replacing sudo pip by sudo -H pip 2017-09-06 19:36:12 +02:00
Xawotihs
56ca2021dc Let's try with openjdk7 2017-09-06 19:18:13 +02:00
Xawotihs
e4e431dcee Let's try jdk_switcher 2017-09-06 00:21:24 +02:00
Xawotihs
abfff205ee Readding ant, it seems the android worker needs it 2017-09-06 00:05:16 +02:00
Xawotihs
6416e4e0d9 Removed ant installation 2017-09-05 23:37:47 +02:00
Xawotihs
86f4730db7 Removings traces and ant errors 2017-09-05 23:06:22 +02:00
Xawotihs
33a5479512 Sounds like JAVA_HOME is wrong, let's try to use the default one 2017-09-05 22:59:06 +02:00
Xawotihs
891859f4ca Let's display ant errors 2017-09-05 22:48:06 +02:00
Xawotihs
d5bfb8201b Some echo traces 2017-09-05 22:36:19 +02:00
Xawotihs
f49ef92f90 sudo required on linux 2017-09-05 22:26:38 +02:00
Xawotihs
02d004b5bf Fixed os in build matrix for Android 2017-09-05 22:11:24 +02:00
Xawotihs
55f8a8a1d0 Only used brew if osx is defined 2017-09-04 20:16:31 +02:00
Xawotihs
068a69c80b Adding ant as it somehow disappeared ... 2017-09-04 19:43:41 +02:00
Xawotihs
375e66489f Changed memory to be 16 MB 2017-09-03 23:55:43 +02:00
Xawotihs
cbbd034862 Removed chmod on binary 2017-09-03 14:44:45 +02:00
Xawotihs
f7fe948da5 Update psp sdk link, don't install theos for all mac builds 2017-09-03 14:21:15 +02:00
Xawotihs
478ce0863b Replace cmake installation script 2017-09-03 14:04:32 +02:00
Xawotihs
329011460f Update .travis.yml 2017-09-03 13:55:39 +02:00
xawotihs
48ec51a923 Shold fix travis script 2017-09-03 12:49:31 +02:00
xawotihs
9936962c56 Should fix cmake issues on linux 2017-09-03 12:44:30 +02:00
xawotihs
15111d1b20 Merge branch 'master' of https://github.com/WagicProject/wagic into cmake 2017-09-02 21:15:47 +02:00
Xawotihs
2b342ca33b Fixed typo 2016-07-05 23:57:53 +02:00
xawotihs
97e6df7f59 Should fix PSP artifact build and upload 2016-07-05 23:49:33 +02:00
xawotihs
a2bb67a828 Removed duplicate blacklist and added some cache 2016-07-04 23:21:34 +02:00
Xawotihs
d14e28d7b3 Should fix android package upload 2016-07-04 04:18:26 +02:00
xawotihs
0a0ee3cc98 Merge branch 'master' into cmake 2016-07-03 16:44:21 +02:00
Xawotihs
99e6a254e1 Update android package upload 2016-07-01 00:18:44 +02:00
Xawotihs
68714ebad8 Added android SDK tools to path 2016-06-30 23:08:56 +02:00
Xawotihs
48ef4144bc Update .travis.yml 2016-06-30 22:04:08 +02:00
Xawotihs
78a4da4945 Avoid rebuilding after targging 2016-06-30 22:01:17 +02:00
xawotihs
af0861877a Merge branch 'master' into cmake 2016-06-29 21:36:47 +02:00
xawotihs
a23b96ba75 Merge branch 'master' into cmake 2016-06-26 11:25:23 +02:00
Xawotihs
47704f7591 Changed git add cmd 2016-06-26 10:28:50 +02:00
Xawotihs
755f90f38b Updated repo cleanup 2016-06-25 22:53:18 +02:00
Xawotihs
8a56406c19 Added missing REPO variable 2016-06-25 21:03:43 +02:00
xawotihs
887ea94a4d Add execution right to the new script 2016-06-25 20:11:24 +02:00
xawotihs
499b3ddf3e Added a script to upload emscripten build automatically to gh_pages 2016-06-25 16:54:35 +02:00
xawotihs
83e55b1074 Merge branch 'cmake' of https://github.com/WagicProject/wagic into cmake 2016-06-25 11:50:54 +02:00
xawotihs
1f87ed77e4 Fixed windows package and but in SDL frontend 2016-06-25 11:50:07 +02:00
Xawotihs
93b7d210dc Should fix indentation issue 2016-06-24 19:32:32 +02:00
xawotihs
10d9d84f84 Fixed emscripten memory and updated python upload script to include cmake branch 2016-06-23 23:32:57 +02:00
xawotihs
fc9a4d5431 Removed redudant builds and removed -j4 to try to compile emscripten 2016-06-23 21:20:12 +02:00
Xawotihs
4b3a2531a6 Switched to debug emscripten build 2016-06-23 08:20:24 +02:00
Xawotihs
ed4871548e Decreased optimisation level to avoid crashes 2016-06-23 07:48:11 +02:00
xawotihs
1284b8da8b Should fix emscripten build in Travis 2016-06-22 22:19:09 +02:00
Xawotihs
95455603a1 Tries to build emscripten on linux as macosx fails 2016-06-21 23:45:37 +02:00
xawotihs
813c54a166 Removed GL_CLAMP usage, update of the Android cmake package file 2016-06-19 12:46:17 +02:00
xawotihs
fa2a2d51a5 Fixed Downloader. 2016-06-19 12:08:45 +02:00
xawotihs
4b68b636ce Merge branch 'master' into cmake 2016-06-19 11:39:56 +02:00
xawotihs
0a01b0af69 Tries to fix SDL and Qt builds, introduces Emscripten in Travis. 2016-06-19 10:25:22 +02:00
xawotihs
e4e809f3fe Emscripten seems to work, should also fix PSP and Qt builds 2016-06-19 00:41:35 +02:00
xawotihs
1667b79fa8 Improved Emscripten port... still not there yet. 2016-06-18 17:24:51 +02:00
Xawotihs
31272ff0fe Removed suspicious references to thirdparty libs 2016-06-11 14:29:48 +02:00
xawotihs
9335063d68 Should fix PSP build and Windows ZIP creation 2016-06-09 21:26:11 +02:00
xawotihs
39dfaf3acb Forgot this file 2016-06-08 23:47:53 +02:00
xawotihs
3e7ecd51fd Fixed windows SDL2 build, finished removing fmod dependency 2016-06-08 23:45:42 +02:00
xawotihs
c9ee4a304e Merge branch 'master' into cmake 2016-06-07 23:35:26 +02:00
xawotihs
2f1bf7bdbe Fixed iOS build 2016-06-07 23:31:42 +02:00
xawotihs
41890f6bb4 Removed main() function in zipFS 2016-06-07 22:49:59 +02:00
xawotihs
24cd7cab58 Merges iOS modifications with Windows modifications 2016-06-07 22:48:02 +02:00
xawotihs
473d9387d4 Removed references to fmod libs for Windows builds 2016-06-07 21:00:15 +02:00
Xawotihs
f5495adce1 Enable _DEBUG in debug only 2016-06-06 22:52:39 +02:00
Xawotihs
d802ec4b59 Fixed theos path 2016-06-04 22:05:04 +02:00
xawotihs
8f69e2a204 Should fix iOS build 2016-06-04 21:44:35 +02:00
xawotihs
c3fc579907 Pulled down update for SDL2 2016-05-29 18:01:51 +02:00
Xawotihs
cc06370bcd Update CMakeLists.txt 2015-11-24 00:14:48 +01:00
Xawotihs
ed15ec2469 Fixed issue in SDL2 replacement. 2015-11-23 10:15:47 +01:00
Xawotihs
3f7d5ff041 Decreased -j option for Android 2015-11-22 22:37:55 +01:00
Xawotihs
d5bcf40cbb Replaced SDL2 flavor when compiling for Android 2015-11-22 21:30:58 +01:00
ubuntu
49c196814f Couple of fixed around Android build with cmake. 2015-11-22 02:22:44 +01:00
Xawotihs
c4282ce936 Update android.toolchain.cmake 2015-11-21 14:02:06 +01:00
Xawotihs
cd1c09127f Removed dependencies on Boost on Android 2015-11-20 12:59:26 +01:00
xawotihs
9afebe0851 Removed sdl_main_android.cpp 2015-11-19 22:38:06 +01:00
Xawotihs
9a7382ea06 Added ANDROID_NDK variable for cmake toolchain 2015-11-18 23:57:55 +01:00
Xawotihs
7a7e723009 Fixed android cmake usage 2015-11-18 23:36:39 +01:00
Xawotihs
9d772284cc Removed any sudo actions on Android 2015-11-18 23:22:45 +01:00
Xawotihs
a981761deb Trying to activate android build in matrix 2015-11-18 22:59:17 +01:00
Xawotihs
fc13ffa242 Update appveyor.yml 2015-11-17 23:31:33 +01:00
Xawotihs
878b2cd639 Update FindOrBuild.cmake 2015-11-17 23:16:51 +01:00
Xawotihs
995922d2d7 Update appveyor.yml 2015-11-17 22:54:53 +01:00
Xawotihs
0d100aa9be Update appveyor.yml 2015-11-17 22:54:18 +01:00
Xawotihs
d4fabed317 Split android sdk update in 4 2015-11-17 22:01:54 +01:00
Xawotihs
9eff781103 Update travis-script.sh 2015-11-16 23:20:20 +01:00
Xawotihs
0353da3d27 Update travis-script.sh 2015-11-16 22:56:30 +01:00
xawotihs
3cbdc6e9fe Merge branch 'cmake' of https://github.com/WagicProject/wagic into cmake 2015-11-04 22:33:26 +01:00
xawotihs
ce71afd704 Tries to activate zlib compiling on mac 2015-11-04 22:32:49 +01:00
Xawotihs
603d491bed Without quotes 2015-11-03 23:06:14 +01:00
Xawotihs
20a792f135 Refering DXSDK and not windows SDK 2015-11-03 23:02:12 +01:00
xawotihs
87f5e7f3a6 Emscripten flavor now compiles correctly 2015-11-02 23:00:57 +01:00
xawotihs
e272925f3d Removed extra/stdint.h 2015-11-02 00:00:26 +01:00
xawotihs
19091ade7b Updated appveyor to use SDL2.0.3 release and not SDL head. 2015-11-01 23:51:07 +01:00
xawotihs
e62c065e2c Should fix git submodules 2015-11-01 23:34:03 +01:00
xawotihs
2312381b82 Updated git submodules 2015-11-01 23:26:03 +01:00
xawotihs
639942d444 Merge branch 'master' into cmake 2015-11-01 22:55:08 +01:00
xawotihs
55a5b9d0ba Now uses unofficial SDL mirror 2015-11-01 22:49:14 +01:00
Xawotihs
a33517e5d0 Added prefix variable so that QT5 is found with brew 2015-10-31 23:02:31 +01:00
Xawotihs
c981586bcf Moved apt-get of Qt into linux part 2015-10-31 21:45:36 +01:00
Xawotihs
b473238f02 Replaced all " 2015-10-31 21:02:29 +01:00
Xawotihs
1d9b92080f Missed on " 2015-10-31 20:56:23 +01:00
Xawotihs
7f89d4d39f Uses "" everywhere 2015-10-31 20:51:12 +01:00
Xawotihs
4f00ec2277 Added matrix subsection in env 2015-10-31 20:37:54 +01:00
Xawotihs
26db10a083 Removed empty lines 2015-10-31 20:32:18 +01:00
xawotihs
3ec2ceb725 Activate matrix and multi-os in travis 2015-10-31 20:15:47 +01:00
xawotihs
667ac39e06 Removed reference to x64 platform 2015-10-25 18:07:30 +01:00
xawotihs
993d62a8c8 Added checkout of modules 2015-10-25 17:59:40 +01:00
xawotihs
09a70d4573 Merge branch 'cmake' of https://github.com/WagicProject/wagic into cmake 2015-10-25 17:30:59 +01:00
xawotihs
3afa730751 Updated appveyor to use cmake 2015-10-25 17:29:33 +01:00
Xawotihs
3245ddbfe7 Reducing the -j parameter to try helping g++ internal compiler issues 2015-10-25 10:51:34 +01:00
xawotihs
def55943ed Activated building SDL2 directly from submodule on Unix as well 2015-10-25 10:18:21 +01:00
xawotihs
4accc9c018 Merge branch 'master' into cmake 2015-10-25 00:22:57 +02:00
xawotihs
579d612397 Worked on windows and emscripten builds, still not perfect. 2015-10-24 23:33:31 +02:00
Xawotihs
daabce1d2f Merge pull request #647 from ZobyTwo/opencv_leftovers
Remove some leftovers from OpenCV
2015-10-17 21:46:47 +02:00
Tobias Loose
5885829585 Remove some leftovers from OpenCV 2015-10-17 18:12:31 +02:00
xawotihs
3e7b9e68d5 Fixed compilation issue with Qt. 2015-10-13 23:32:56 +02:00
Xawotihs
4a52139457 Update g++ to 4.8 2015-10-13 23:04:58 +02:00
xawotihs
79ea403273 Commented out GLUT dependency 2015-10-11 15:54:32 +02:00
xawotihs
397d7fa6c8 Added build of SDL2 in UNIX config 2015-10-11 15:31:58 +02:00
xawotihs
ac787a6f51 Added SDL2DIR env variable. 2015-10-11 15:20:27 +02:00
xawotihs
0418e77d34 Removed tabs 2015-10-11 14:29:59 +02:00
xawotihs
a2c6a3669b Reactivated SDL2 download 2015-10-11 14:27:40 +02:00
xawotihs
b8d22240a8 Fixed typo 2015-10-11 14:21:09 +02:00
xawotihs
b458d570a1 Deactivated again Android build, added a SDL build 2015-10-11 14:15:43 +02:00
xawotihs
5022df0d14 Moved tgz unpackaging away from android SDK update. 2015-10-11 12:34:52 +02:00
xawotihs
220b48b144 Updated android SDK and build tools versions 2015-10-11 12:14:58 +02:00
xawotihs
8aeed46181 Reactivates android build 2015-10-11 11:54:40 +02:00
xawotihs
38b34eae2f Split macosx config from unix one. 2015-10-11 11:38:32 +02:00
xawotihs
648b21f972 Trying something else with new repositories 2015-10-11 10:38:40 +02:00
xawotihs
09717a966b Added install of cmake 3.3 on Travis. 2015-10-11 10:08:33 +02:00
xawotihs
eef46fe743 Revert previous change and just removed inline on the function 2015-10-10 18:41:43 +02:00
xawotihs
5f91566fa7 Move vrelptr implementation in header file so that it can be used outside of JGE lib 2015-10-10 18:35:33 +02:00
xawotihs
c83a476ebe Put SwizzlePlot in the WFont header. 2015-10-10 18:23:59 +02:00
xawotihs
954bba274c Tries to fix includes 2015-10-10 18:08:45 +02:00
xawotihs
d370a5c13d Fixed png include in JGE 2015-10-10 16:15:45 +02:00
xawotihs
181189bee0 Fixed boost include path 2015-10-10 16:05:34 +02:00
xawotihs
c678f5e85a Fixed vram 2015-10-10 15:32:01 +02:00
xawotihs
0fabf83c62 Fixed decoder_prx 2015-10-10 15:25:08 +02:00
xawotihs
b7e8d19290 Fix for travis build 2015-10-10 15:15:43 +02:00
Xawotihs
d0db71602a Deactive android build as travis does not like it those days 2015-10-10 14:51:40 +02:00
Xawotihs
112efddb4e Removed typo 2015-10-09 13:32:51 +02:00
Xawotihs
4cea81e564 Moved SDL2 download away from the Android SDK download 2015-10-09 07:56:44 +02:00
Xawotihs
3a40a34566 should fix script syntax 2015-10-08 23:33:17 +02:00
Xawotihs
a4ff87a7d5 Replaced libsdl2-dev dependency by a direct download 2015-10-08 23:29:47 +02:00
xawotihs
797077c47b Various fixes and activated cmake in travis. 2015-10-08 23:08:09 +02:00
xawotihs
075d950249 Got SDL2 version compiling on Mac. 2015-10-06 23:25:40 +02:00
xawotihs
22d14b2a4f - Updated SDL dependency to SDL2
- fixed compilation issues with cmake and visual studio 2015
2015-10-04 23:10:45 +02:00
xawotihs
4272e2e2b2 Activated zlib build only on windows 2015-09-28 19:39:26 +02:00
xawotihs
34279cfacf Additional work with cmake on Windows, still does not work 2015-09-27 23:23:31 +02:00
xawotihs
85f4a4c36a Started to merge @ZobyTwo cmake branch 2015-09-26 21:52:07 +02:00
3991 changed files with 376568 additions and 83017 deletions

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

10
.github/ISSUE_TEMPLATE/custom.md vendored Normal file
View File

@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

12
.gitmodules vendored Normal file
View File

@@ -0,0 +1,12 @@
[submodule "thirdparty/zlib"]
path = thirdparty/zlib
url = https://github.com/madler/zlib
[submodule "thirdparty/SDL2"]
path = thirdparty/SDL2
url = https://github.com/libsdl-org/SDL
[submodule "docs/wiki"]
path = docs/wiki
url = https://github.com/WagicProject/wagic.wiki
[submodule "thirdparty/curl"]
path = thirdparty/curl
url = https://github.com/curl/curl.git

View File

@@ -1,64 +1,159 @@
language: cpp
dist: trusty
dist: xenial
branches:
except:
- latest-master
- latest-cmake
matrix:
include:
- os: linux
env: BUILD_TYPE=PSP
sudo: required
- os: linux
env: BUILD_TYPE=SDL
sudo: required
- os: linux
env: BUILD_TYPE=Qt
sudo: required
- os: osx
env: BUILD_TYPE=Qt
- os: osx
env: BUILD_TYPE=iOS
- os: linux
language: android
env: BUILD_TYPE=ANDROID
sudo: required
- os: osx
env: BUILD_TYPE=Emscripten
android:
components:
- platform-tools
- build-tools-23.0.1
- android-10
cache:
directories:
- opt/pspsdk
- android-ndk-r9
before_install:
- export BUILD_PSP=YES
- export BUILD_ANDROID=YES
- export BUILD_Qt=YES
- export BUILD_MAC=NO
# Only building on Mac when not handling pull request
# - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
# export BUILD_MAC=YES;
# fi
- sudo apt-get update -qq
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main" &&
sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test &&
sudo apt-get -qq update &&
sudo apt-get -qq install g++-4.8 &&
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90;
fi
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew update &&
brew install dpkg &&
pwd &&
ls;
fi
- if [ "$BUILD_TYPE" == "iOS" ]; then
curl -s -f -L https://raw.github.com/r-plus/dotfiles/master/install_theos.sh | bash &&
pwd &&
ls;
fi
# Building for PSP here
- if [ "$BUILD_PSP" == "YES" ]; then
- if [ "$BUILD_TYPE" == "PSP" ]; then
export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk" &&
export PSPSDK="$PSPDEV/psp/sdk" &&
export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin" &&
wget -O sdk.lzma http://downloads.sourceforge.net/project/minpspw/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma;
fi
# Building for Qt here
- if [ "$BUILD_Qt" == "YES" ]; then
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main" &&
sudo apt-get -qq update &&
sudo apt-get -qq install qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev pulseaudio libpulse-dev &&
export QMAKE="qmake -qt=qt5";
wget -O sdk.lzma https://sourceforge.net/projects/minpspw/files/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma/download;
fi
# Building for Android here
- if [ "$BUILD_ANDROID" == "YES" ]; then
export ANDROID="android-sdk-linux/tools/android" &&
if [ `uname -m` = x86_64 ]; then
sudo dpkg --add-architecture i386 && sudo apt-get update &&
sudo apt-get install -qq --force-yes libgd2-xpm-dev libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jq ant; fi &&
wget https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip -nv &&
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -nv;
- if [ "$BUILD_TYPE" == "ANDROID" ]; then
export ANDROID="/usr/local/android-sdk-linux/tools/android" &&
export PATH=$PATH:"/usr/local/android-sdk-linux/tools" &&
wget https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip -nv &&
wget https://bitbucket.org/ewing/sdl_androidcmake/get/4e9e88c03f04.zip -nv;
fi
# Building for Qt here
- if [ "$BUILD_TYPE" == "Qt" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew install qt5 &&
export QMAKE="qmake -qt=qt5";
fi
- if [ "$BUILD_TYPE" == "Qt" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu xenial universe" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu xenial main" &&
sudo apt-get -qq update &&
sudo apt-get -qq install qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev libqt5opengl5 libqt5opengl5-dev pulseaudio libpulse-dev &&
export QMAKE="qmake -qt=qt5";
fi
# Building for SDL here
- if [ "$BUILD_TYPE" == "SDL" ]; then
export SDL2DIR="$TRAVIS_BUILD_DIR/thirdparty/SDL2";
fi
# Building for Emscripten here
- if [ "$BUILD_TYPE" == "Emscripten" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew install emscripten && export LLVM=/usr/local/opt/emscripten/libexec/llvm/bin && emcc;
fi
install:
- if [ "$BUILD_PSP" == "YES" ]; then
tar -x --xz -f sdk.lzma;
fi
- if [ "$BUILD_ANDROID" == "YES" ]; then
unzip android-ndk-r22-linux-x86_64.zip &&
tar -zxf android-sdk_r24.4.1-linux.tgz &&
$ANDROID list sdk --extended -a &&
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.0.1,android-23 --no-ui --force --no-https;
fi
- sudo python -m easy_install --upgrade pyOpenSSL
- sudo pip install pyjavaproperties
- sudo pip install github3.py
- sudo pip install cpp-coveralls
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
if [[ -z "$(ls -A ${DEPS_DIR}/cmake/bin)" ]]; then
CMAKE_URL="https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.tar.gz"
mkdir -p cmake && travis_retry wget --no-check-certificate --quiet -O - "${CMAKE_URL}" | tar --strip-components=1 -xz -C cmake
fi
export PATH="${DEPS_DIR}/cmake/bin:${PATH}"
fi
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi
fi
- if [ "$BUILD_TYPE" == "PSP" ]; then
tar -x --xz -f sdk.lzma;
fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_TYPE" == "ANDROID" ]; then
jdk_switcher use openjdk7 %%
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
export ANDROID_NDK=`pwd`/android-ndk-r9 &&
unzip 4e9e88c03f04.zip &&
rm -rf thirdparty/SDL2/* &&
mv ewing-sdl_androidcmake-4e9e88c03f04/* thirdparty/SDL2/ &&
sudo pip install cpp-coveralls &&
sudo apt-get install --force-yes -qq libtinyxml-dev libjpeg-dev libpng-dev libgif-dev libz-dev libboost-system-dev libboost-thread-dev libboost-date-time-dev ant;
fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_TYPE" != "ANDROID" ]; then
jdk_switcher use openjdk7 &&
sudo pip install cpp-coveralls &&
sudo apt-get install --force-yes -qq libtinyxml-dev libjpeg-dev libpng-dev libgif-dev libz-dev libboost-system-dev libboost-thread-dev libboost-date-time-dev ant;
fi
- sudo pip install pyjavaproperties
- sudo pip install github3.py
env:
global:
# - JAVA_HOME=/usr/lib/jvm/java-7-oracle # Force set JVM version to comply with Travis Ant version (1.8.2)
- secure: "EBzr1+qjQsOhn0s+tcFmXR1jP9B0xiOSXuXbRXWZ1OEHNvp8+A5/pS84LYVFlaZqmxr5dApxvPtwhgLIUbQ3EPXm8LpC3KgSD4dS+9/QMbxhe5TK4oczgFRGcDTMJQZsCzhOh7hp3tbcbJg5Gp+VT7aFjFQSHDGwhzSJXsXwh/8="
- secure: "X5dTQfofqAutnXxmu11Ep2MQ5QYnMN8m0AITRtwymhEF2UclcOudI1+skPtuhAGbWQnSO+lhunV3cvMfw2/Ml3k/VDz6VdFSKFrzAu7ja1VLJfcxr7chi0s8q30pVBb66tGydjIBac3B+RQyqgmZQW1frbRrhC/kPFQ6wPWOJdQ="
- secure: "T97NUPnxCpVZ/c5HH0zfo0FO3DPSRMSmze58ubW5EUTZOjAMtEt+OFdsrNZvUTCugUj2M1agtonZbAbczpaAL+lgZcHDgXgWMkfO0pMnsWX1yyCNqMuE/iTMpJr/xsLQeyWlftWjJLsseQU45abZsd1XVmda/G+ZhrDLF1y55SA="
script: "tools/travis-script.sh"
after_success:
- coveralls -b . -e JGE/src -e JGE/include -i projects/mtg/include -i projects/mtg/src --gcov-options '\-lp'
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l core.zip -r Wagic-core.zip -b $TRAVIS_BRANCH
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/Android/bin/Wagic-debug.apk -r Wagic-android.apk -b $TRAVIS_BRANCH
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/psprelease.zip -r Wagic-psp.zip -b $TRAVIS_BRANCH
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l qt-gui-build/linuxqtrelease.zip -r Wagic-linux-QT.zip -b $TRAVIS_BRANCH
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_TYPE" == "Qt" ]; then
coveralls -b . -e JGE/src -e JGE/include -i projects/mtg/include -i projects/mtg/src --gcov-options '\-lp';
fi
- if [ "$BUILD_TYPE" == "ANDROID" ]; then
python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l core.zip -r Wagic-core.zip -b $TRAVIS_BRANCH &&
python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l build_android/package/bin/Wagic_*.apk -r Wagic-android.apk -b $TRAVIS_BRANCH;
fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_TYPE" == "PSP" ]; then
python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l build_psp/psprelease.zip -r Wagic-psp.zip -b $TRAVIS_BRANCH;
fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$BUILD_TYPE" == "iOS" ]; then
python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l net.wagic_0.19.2-1_iphoneos-arm.deb -r Wagic-iOS.deb -b $TRAVIS_BRANCH;
fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$BUILD_TYPE" == "Qt" ]; then
python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l build_qt_widget/wagic.dmg -r Wagic-macosx.dmg -b $TRAVIS_BRANCH;
fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$BUILD_TYPE" == "Emscripten" ]; then
./tools/deploy-emscripten.sh;
fi

File diff suppressed because it is too large Load Diff

242
CMakeLists.txt Normal file
View File

@@ -0,0 +1,242 @@
cmake_minimum_required(VERSION 4.0)
if(CMAKE_MAJOR_VERSION STRGREATER 3)
cmake_policy(SET CMP0054 NEW)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeModules)
#this block will fix install prefixes to install everything in a subdirectory
#of cmake_binary_dir if we are on windows/android to make packaging more easy
if(NOT CMAKE_TOOLCHAIN_FILE)
if(WIN32)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Install directory")
else()
set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install directory")
endif()
else() #we are cross-compiling (psp/android)
#Android: set output folder for platform/android to pick up
set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "library output root")
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Install directory")
endif()
#set available build types (debug/release)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
if(DEFINED CMAKE_BUILD_TYPE)
set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
endif()
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Application output directory")
project(wagic CXX C)
#todo: somehow determine wagics version
set(WAGIC_VERSION "0.19")
#add standard paths to search for libraries. borrowed from opencv
if(UNIX AND NOT ANDROID)
if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
if(EXISTS /lib64)
list(APPEND CMAKE_LIBRARY_PATH /lib64)
else()
list(APPEND CMAKE_LIBRARY_PATH /lib)
endif()
if(EXISTS /usr/lib64)
list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
else()
list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
endif()
elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
if(EXISTS /lib32)
list(APPEND CMAKE_LIBRARY_PATH /lib32)
else()
list(APPEND CMAKE_LIBRARY_PATH /lib)
endif()
if(EXISTS /usr/lib32)
list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
else()
list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
endif()
endif()
endif()
if(ANDROID OR PSP OR IOS)
#to allow finding of pathes/headers/libs within the source tree
#even if only search for target platform libs
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SOURCE_DIR} ${CMAKE_FIND_ROOT_PATH})
endif()
#also borrowed from opencv
if(MINGW)
if(EXISTS /mingw)
list(APPEND CMAKE_INCLUDE_PATH /mingw)
endif()
if(EXISTS /mingw32)
list(APPEND CMAKE_INCLUDE_PATH /mingw32)
endif()
if(EXISTS /mingw64)
list(APPEND CMAKE_INCLUDE_PATH /mingw64)
endif()
endif()
include(utils)
#select the target backend
if(PSP)
WAGIC_OPTION(backend_psp "build for psp" ON)
endif()
if(WIN32 OR ANDROID OR UNIX)
WAGIC_OPTION(backend_sdl "build for sdl" (WIN32 OR ANDROID OR EMSCRIPTEN))
endif()
if(NOT backend_sdl AND UNIX AND NOT ANDROID AND NOT IOS)
WAGIC_OPTION(backend_qt_console "build qt-console version with testsuit" ON)
WAGIC_OPTION(backend_qt_widget "build qt-widget version" OFF)
endif()
#third party build options
WAGIC_OPTION(BUILD_ZLIB "build zlib from source" ((NOT MINGW) AND (WIN32 OR APPLE)))
WAGIC_OPTION(BUILD_JPEG "build jpeg from source" (WIN32 OR APPLE OR PSP OR ANDROID OR EMSCRIPTEN))
WAGIC_OPTION(BUILD_PNG "build png from source" (WIN32 OR APPLE OR PSP OR ANDROID OR EMSCRIPTEN))
WAGIC_OPTION(BUILD_UNZIP "build unzip from source" ON)
WAGIC_OPTION(BUILD_TINYXML "build tinyxml from source" (WIN32 OR APPLE OR PSP OR ANDROID OR EMSCRIPTEN OR IOS))
WAGIC_OPTION(BUILD_ZIPFS "build zipfs from source" ON)
WAGIC_OPTION(BUILD_SDL2 "build SDL2 from source" (backend_sdl AND (UNIX OR WIN32 OR ANDROID) AND (NOT EMSCRIPTEN AND NOT IOS)))
#WAGIC_OPTION(BUILD_CURL "build curl from source" (backend_sdl AND WIN32))
#project options
if(ANDROID)
WAGIC_OPTION(BUILD_ANDROID_PACKAGE "put the compiled code in an android package" ON)
endif()
if(ANDROID)
set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
set(3P_LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
set(WAGIC_LIB_INSTALL_PATH sdk/native/libs/${ANDROID_NDK_ABI_NAME})
set(WAGIC_3P_LIB_INSTALL_PATH sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
set(WAGIC_CONFIG_INSTALL_PATH sdk/native/jni)
set(WAGIC_INCLUDE_INSTALL_PATH sdk/native/jni/include)
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/package/bin")
else()
set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib")
set(3P_LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
set(WAGIC_LIB_INSTALL_PATH lib${LIB_SUFFIX})
set(WAGIC_3P_LIB_INSTALL_PATH share/wagic/3rdparty/${WAGIC_LIB_INSTALL_PATH})
set(WAGIC_INCLUDE_INSTALL_PATH "include")
set(WAGIC_CONFIG_INSTALL_PATH share/wagic)
endif()
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WAGIC_LIB_INSTALL_PATH}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#if no build type is specified, we assume debug
if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Debug)
endif()
include(FindOrBuild)
#set platform dependend configurations
if(PSP)
FindOrBuildPSPSDK()
include(platforms/psp/configure.cmake)
elseif(EMSCRIPTEN)
include(platforms/emscripten/configure.cmake)
elseif(WIN32)
include(platforms/win/configure.cmake)
elseif(APPLE)
include(platforms/macosx/configure.cmake)
elseif(UNIX AND NOT ANDROID)
include(platforms/unix/configure.cmake)
elseif(ANDROID)
include(platforms/android/configure.cmake)
endif()
#set backend dependend configurations
if(backend_qt_console OR backend_qt_widget)
add_definitions(-DQT_CONFIG)
if(backend_qt_console)
add_definitions(-DTESTSUITE -D_DEBUG)
add_definitions(-DCONSOLE_CONFIG -DCAPTURE_STDERR)
endif()
elseif(backend_sdl)
add_definitions(-DSDL_CONFIG)
endif()
# find or build 3rd party libraries
FindOrBuildZLIB()
FindOrBuildOpenGL()
FindOrBuildTinyXML()
FindOrBuildZipFS()
FindOrBuildUNZIP()
FindOrBuildPNG()
FindOrBuildJPEG()
FindOrBuildBoost()
#FindOrBuildCurl()
if(PSP)
FindOrBuildGIF()
endif()
if(ANDROID)
FindOrBuildOpenSL()
endif()
if(backend_sdl)
FindOrBuildSDL2()
endif()
if(backend_psp)
FindOrBuildFreetype()
FindOrBuildHgeTools()
FindOrBuildMikMod()
endif()
if(backend_qt_console OR backend_qt_widget)
FindOrBuildQt()
endif()
if(ANDROID)
include(DetectAndroidSDK)
endif()
if(BUILD_ANDROID_PACKAGE)
find_package(Ant REQUIRED)
endif()
#add jge and mtg projects
add_subdirectory(JGE)
add_subdirectory(projects/mtg)
if(BUILD_ANDROID_PACKAGE)
add_subdirectory(platforms/android/package)
endif()
if(EMSCRIPTEN)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
endif()
if(IOS)
list_add_prefix(JGE_SOURCES " JGE/")
list_add_prefix(MTG_generic_src " projects/mtg/")
list_add_prefix(JGE_INCLUDE_DIRS " -IJGE/")
list_add_prefix(MTG_INCLUDE_DIRS " -Iprojects/mtg/")
list_add_prefix(TINYXML_SRC " thirdparty/tinyxml/")
list_add_prefix(UNZIP_SRC " thirdparty/unzip/")
list_add_prefix(ZIPFS_SRC " thirdparty/zipFS/")
file(WRITE makefile.ios
"ARCHS= armv7 armv7s \n"
"include ${THEOS_PATH}/makefiles/common.mk\n"
"TARGET= iphone:clang:latest:8.0 \n"
"APPLICATION_NAME = " ${PROJECT_NAME} "\n"
${PROJECT_NAME} "_FILES =" ${ZIPFS_SRC} ${UNZIP_SRC} ${TINYXML_SRC} ${JGE_SOURCES} ${MTG_generic_src} " thirdparty/Boost/lib/pthread/once.cpp thirdparty/Boost/lib/pthread/thread.cpp\n"
${PROJECT_NAME} "_LDFLAGS = -lz\n"
${PROJECT_NAME} "_FRAMEWORKS = UIKit CoreGraphics OpenGLES Foundation CFNetwork MobileCoreServices AVFoundation OpenAL AudioToolbox QuartzCore SystemConfiguration\n"
"include ${THEOS_PATH}/makefiles/application.mk\n"
"ADDITIONAL_CFLAGS = " ${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} " -I" ${ZIPFS_INCLUDE_DIR} " -I" ${UNZIP_INCLUDE_DIR} " -I" ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} " -I" ${ZLIB_INCLUDE_DIRS} ${BOOST_INCLUDE_DIRS} " "
"-DIOS -D__arm__ -DTIXML_USE_STL -DVERSION=\"$(GIT_VERSION)\" "
"-Wno-parentheses-equality -Wno-delete-non-virtual-dtor "
"-Wno-tautological-undefined-compare -Wno-undefined-bool-conversion "
"-Wno-visibility -Wno-deprecated-declarations -Wno-non-literal-null-conversion "
"-Wno-format -Wno-distributed-object-modifiers -Wno-missing-braces -Wno-uninitialized "
"-Wno-unused-const-variable -Wno-unused-function -Wno-unknown-warning-option -Wno-unused-local-typedef "
"-x objective-c++ \n"
"_THEOS_TARGET_ONLY_OBJCFLAGS :=\"\"\n"
)
endif()

View File

@@ -0,0 +1,373 @@
if(EXISTS "${ANDROID_EXECUTABLE}")
set(ANDROID_SDK_DETECT_QUIET TRUE)
endif()
file(TO_CMAKE_PATH "$ENV{ProgramFiles}" ProgramFiles_ENV_PATH)
file(TO_CMAKE_PATH "$ENV{HOME}" HOME_ENV_PATH)
if(CMAKE_HOST_WIN32)
set(ANDROID_SDK_OS windows)
elseif(CMAKE_HOST_APPLE)
set(ANDROID_SDK_OS macosx)
else()
set(ANDROID_SDK_OS linux)
endif()
#find android SDK: search in ANDROID_SDK first
find_host_program(ANDROID_EXECUTABLE
NAMES android.bat android
PATH_SUFFIXES tools
PATHS
ENV ANDROID_SDK
DOC "Android SDK location"
NO_DEFAULT_PATH
)
# Now search default paths
find_host_program(ANDROID_EXECUTABLE
NAMES android.bat android
PATH_SUFFIXES android-sdk-${ANDROID_SDK_OS}/tools
android-sdk-${ANDROID_SDK_OS}_x86/tools
android-sdk-${ANDROID_SDK_OS}_86/tools
android-sdk/tools
PATHS /opt
"${HOME_ENV_PATH}/NVPACK"
"$ENV{SystemDrive}/NVPACK"
"${ProgramFiles_ENV_PATH}/Android"
DOC "Android SDK location"
)
if(ANDROID_EXECUTABLE)
if(NOT ANDROID_SDK_DETECT_QUIET)
message(STATUS "Found android tool: ${ANDROID_EXECUTABLE}")
endif()
get_filename_component(ANDROID_SDK_TOOLS_PATH "${ANDROID_EXECUTABLE}" PATH)
#read source.properties
if(EXISTS "${ANDROID_SDK_TOOLS_PATH}/source.properties")
file(STRINGS "${ANDROID_SDK_TOOLS_PATH}/source.properties" ANDROID_SDK_TOOLS_SOURCE_PROPERTIES_LINES REGEX "^[ ]*[^#].*$")
foreach(line ${ANDROID_SDK_TOOLS_SOURCE_PROPERTIES_LINES})
string(REPLACE "\\:" ":" line ${line})
string(REPLACE "=" ";" line ${line})
list(GET line 0 line_name)
list(GET line 1 line_value)
string(REPLACE "." "_" line_name ${line_name})
SET(ANDROID_TOOLS_${line_name} "${line_value}" CACHE INTERNAL "from ${ANDROID_SDK_TOOLS_PATH}/source.properties")
MARK_AS_ADVANCED(ANDROID_TOOLS_${line_name})
endforeach()
endif()
#fix missing revision (SDK tools before r9 don't set revision number correctly)
if(NOT ANDROID_TOOLS_Pkg_Revision)
SET(ANDROID_TOOLS_Pkg_Revision "Unknown" CACHE INTERNAL "")
MARK_AS_ADVANCED(ANDROID_TOOLS_Pkg_Revision)
endif()
#fix missing description
if(NOT ANDROID_TOOLS_Pkg_Desc)
SET(ANDROID_TOOLS_Pkg_Desc "Android SDK Tools, revision ${ANDROID_TOOLS_Pkg_Revision}." CACHE INTERNAL "")
MARK_AS_ADVANCED(ANDROID_TOOLS_Pkg_Desc)
endif()
#warn about outdated SDK
if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
SET(ANDROID_TOOLS_Pkg_Desc "${ANDROID_TOOLS_Pkg_Desc} It is recommended to update your SDK tools to revision 14 or newer." CACHE INTERNAL "")
endif()
if(ANDROID_TOOLS_Pkg_Revision GREATER 13)
SET(ANDROID_PROJECT_PROPERTIES_FILE project.properties)
SET(ANDROID_ANT_PROPERTIES_FILE ant.properties)
else()
SET(ANDROID_PROJECT_PROPERTIES_FILE default.properties)
SET(ANDROID_ANT_PROPERTIES_FILE build.properties)
endif()
set(ANDROID_MANIFEST_FILE AndroidManifest.xml)
set(ANDROID_LIB_PROJECT_FILES build.xml local.properties proguard-project.txt ${ANDROID_PROJECT_PROPERTIES_FILE})
set(ANDROID_PROJECT_FILES ${ANDROID_LIB_PROJECT_FILES})
#get installed targets
if(ANDROID_TOOLS_Pkg_Revision GREATER 11)
execute_process(COMMAND ${ANDROID_EXECUTABLE} list target -c
RESULT_VARIABLE ANDROID_PROCESS
OUTPUT_VARIABLE ANDROID_SDK_TARGETS
ERROR_VARIABLE ANDROID_PROCESS_ERRORS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX MATCHALL "[^\n]+" ANDROID_SDK_TARGETS "${ANDROID_SDK_TARGETS}")
else()
#old SDKs (r11 and older) don't provide compact list
execute_process(COMMAND ${ANDROID_EXECUTABLE} list target
RESULT_VARIABLE ANDROID_PROCESS
OUTPUT_VARIABLE ANDROID_SDK_TARGETS_FULL
ERROR_VARIABLE ANDROID_PROCESS_ERRORS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX MATCHALL "(^|\n)id: [0-9]+ or \"([^\n]+[0-9+])\"(\n|$)" ANDROID_SDK_TARGETS_FULL "${ANDROID_SDK_TARGETS_FULL}")
SET(ANDROID_SDK_TARGETS "")
if(ANDROID_PROCESS EQUAL 0)
foreach(line ${ANDROID_SDK_TARGETS_FULL})
string(REGEX REPLACE "(^|\n)id: [0-9]+ or \"([^\n]+[0-9+])\"(\n|$)" "\\2" line "${line}")
list(APPEND ANDROID_SDK_TARGETS "${line}")
endforeach()
endif()
endif()
if(NOT ANDROID_PROCESS EQUAL 0)
message(ERROR "Failed to get list of installed Android targets.")
set(ANDROID_EXECUTABLE "ANDROID_EXECUTABLE-NOTFOUND")
endif()
# clear ANDROID_SDK_TARGET if no target is provided by user
if(NOT ANDROID_SDK_TARGET)
set(ANDROID_SDK_TARGET "" CACHE STRING "Android SDK target for the Wagic Java API and samples")
endif()
if(ANDROID_SDK_TARGETS)
set_property( CACHE ANDROID_SDK_TARGET PROPERTY STRINGS ${ANDROID_SDK_TARGETS} )
endif()
endif(ANDROID_EXECUTABLE)
# finds minimal installed SDK target compatible with provided names or API levels
# usage:
# get_compatible_android_api_level(VARIABLE [level1] [level2] ...)
macro(android_get_compatible_target VAR)
set(${VAR} "${VAR}-NOTFOUND")
if(ANDROID_SDK_TARGETS)
list(GET ANDROID_SDK_TARGETS 0 __lvl)
string(REGEX MATCH "[0-9]+$" __lvl "${__lvl}")
#find minimal level mathing to all provided levels
foreach(lvl ${ARGN})
string(REGEX MATCH "[0-9]+$" __level "${lvl}")
if(__level GREATER __lvl)
set(__lvl ${__level})
endif()
endforeach()
#search for compatible levels
foreach(lvl ${ANDROID_SDK_TARGETS})
string(REGEX MATCH "[0-9]+$" __level "${lvl}")
if(__level EQUAL __lvl)
#look for exact match
foreach(usrlvl ${ARGN})
if("${usrlvl}" STREQUAL "${lvl}")
set(${VAR} "${lvl}")
break()
endif()
endforeach()
if("${${VAR}}" STREQUAL "${lvl}")
break() #exact match was found
elseif(NOT ${VAR})
set(${VAR} "${lvl}")
endif()
elseif(__level GREATER __lvl)
if(NOT ${VAR})
set(${VAR} "${lvl}")
endif()
break()
endif()
endforeach()
unset(__lvl)
unset(__level)
endif()
endmacro()
unset(__android_project_chain CACHE)
# add_android_project(target_name ${path} NATIVE_DEPS opencv_core LIBRARY_DEPS ${Wagic_BINARY_DIR} SDK_TARGET 11)
macro(add_android_project target path)
# parse arguments
set(android_proj_arglist NATIVE_DEPS LIBRARY_DEPS SDK_TARGET IGNORE_JAVA IGNORE_MANIFEST)
set(__varname "android_proj_")
foreach(v ${android_proj_arglist})
set(${__varname}${v} "")
endforeach()
foreach(arg ${ARGN})
set(__var "${__varname}")
foreach(v ${android_proj_arglist})
if("${v}" STREQUAL "${arg}")
set(__varname "android_proj_${v}")
break()
endif()
endforeach()
if(__var STREQUAL __varname)
list(APPEND ${__var} "${arg}")
endif()
endforeach()
# get compatible SDK target
android_get_compatible_target(android_proj_sdk_target ${ANDROID_NATIVE_API_LEVEL} ${android_proj_SDK_TARGET})
if(NOT android_proj_sdk_target)
message(WARNING "Can not find any SDK target compatible with: ${ANDROID_NATIVE_API_LEVEL} ${android_proj_SDK_TARGET}
The project ${target} will not be build")
endif()
# check native dependencies
if(android_proj_IGNORE_JAVA)
ocv_check_dependencies(${android_proj_NATIVE_DEPS})
else()
ocv_check_dependencies(${android_proj_NATIVE_DEPS} opencv_java)
endif()
if(EXISTS "${path}/jni/Android.mk" )
# find if native_app_glue is used
file(STRINGS "${path}/jni/Android.mk" NATIVE_APP_GLUE REGEX ".*(call import-module,android/native_app_glue)" )
if(NATIVE_APP_GLUE)
if(ANDROID_NATIVE_API_LEVEL LESS 9 OR NOT EXISTS "${ANDROID_NDK}/sources/android/native_app_glue")
set(OCV_DEPENDENCIES_FOUND FALSE)
endif()
endif()
endif()
if(OCV_DEPENDENCIES_FOUND AND android_proj_sdk_target AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND ANDROID_TOOLS_Pkg_Revision GREATER 13 AND EXISTS "${path}/${ANDROID_MANIFEST_FILE}")
project(${target})
set(android_proj_bin_dir "${CMAKE_CURRENT_BINARY_DIR}/.build")
# get project sources
file(GLOB_RECURSE android_proj_files RELATIVE "${path}" "${path}/res/*" "${path}/src/*")
if(NOT android_proj_IGNORE_MANIFEST)
list(APPEND android_proj_files ${ANDROID_MANIFEST_FILE})
endif()
# copy sources out from the build tree
set(android_proj_file_deps "")
foreach(f ${android_proj_files})
add_custom_command(
OUTPUT "${android_proj_bin_dir}/${f}"
COMMAND ${CMAKE_COMMAND} -E copy "${path}/${f}" "${android_proj_bin_dir}/${f}"
MAIN_DEPENDENCY "${path}/${f}"
COMMENT "Copying ${f}")
list(APPEND android_proj_file_deps "${path}/${f}" "${android_proj_bin_dir}/${f}")
endforeach()
set(android_proj_lib_deps_commands "")
set(android_proj_target_files ${ANDROID_PROJECT_FILES})
ocv_list_add_prefix(android_proj_target_files "${android_proj_bin_dir}/")
# process Android library dependencies
foreach(dep ${android_proj_LIBRARY_DEPS})
file(RELATIVE_PATH __dep "${android_proj_bin_dir}" "${dep}")
list(APPEND android_proj_lib_deps_commands
COMMAND ${ANDROID_EXECUTABLE} --silent update project --path "${android_proj_bin_dir}" --library "${__dep}")
endforeach()
# fix Android project
add_custom_command(
OUTPUT ${android_proj_target_files}
COMMAND ${CMAKE_COMMAND} -E remove ${android_proj_target_files}
COMMAND ${ANDROID_EXECUTABLE} --silent update project --path "${android_proj_bin_dir}" --target "${android_proj_sdk_target}" --name "${target}"
${android_proj_lib_deps_commands}
MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}"
DEPENDS "${path}/${ANDROID_MANIFEST_FILE}"
COMMENT "Updating Android project at ${path}. SDK target: ${android_proj_sdk_target}"
)
list(APPEND android_proj_file_deps ${android_proj_target_files})
# build native part
file(GLOB_RECURSE android_proj_jni_files "${path}/jni/*.c" "${path}/jni/*.h" "${path}/jni/*.cpp" "${path}/jni/*.hpp")
ocv_list_filterout(android_proj_jni_files "\\\\.svn")
if(android_proj_jni_files AND EXISTS ${path}/jni/Android.mk AND NOT DEFINED JNI_LIB_NAME)
# find local module name in Android.mk file to build native lib
file(STRINGS "${path}/jni/Android.mk" JNI_LIB_NAME REGEX "LOCAL_MODULE[ ]*:=[ ]*.*" )
string(REGEX REPLACE "LOCAL_MODULE[ ]*:=[ ]*([a-zA-Z_][a-zA-Z_0-9]*)[ ]*" "\\1" JNI_LIB_NAME "${JNI_LIB_NAME}")
if(JNI_LIB_NAME)
ocv_include_modules_recurse(${android_proj_NATIVE_DEPS})
ocv_include_directories("${path}/jni")
if(NATIVE_APP_GLUE)
include_directories(${ANDROID_NDK}/sources/android/native_app_glue)
list(APPEND android_proj_jni_files ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
ocv_warnings_disable(CMAKE_C_FLAGS -Wstrict-prototypes -Wunused-parameter -Wmissing-prototypes)
set(android_proj_NATIVE_DEPS ${android_proj_NATIVE_DEPS} android)
endif()
add_library(${JNI_LIB_NAME} MODULE ${android_proj_jni_files})
target_link_libraries(${JNI_LIB_NAME} ${OPENCV_LINKER_LIBS} ${android_proj_NATIVE_DEPS})
set_target_properties(${JNI_LIB_NAME} PROPERTIES
OUTPUT_NAME "${JNI_LIB_NAME}"
LIBRARY_OUTPUT_DIRECTORY "${android_proj_bin_dir}/libs/${ANDROID_NDK_ABI_NAME}"
)
get_target_property(android_proj_jni_location "${JNI_LIB_NAME}" LOCATION)
if (NOT (CMAKE_BUILD_TYPE MATCHES "debug"))
add_custom_command(TARGET ${JNI_LIB_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} --strip-unneeded "${android_proj_jni_location}")
endif()
endif()
endif()
# build java part
if(android_proj_IGNORE_JAVA)
add_custom_command(
OUTPUT "${android_proj_bin_dir}/bin/${target}-debug.apk"
COMMAND ${ANT_EXECUTABLE} -q -noinput -k debug
COMMAND ${CMAKE_COMMAND} -E touch "${android_proj_bin_dir}/bin/${target}-debug.apk" # needed because ant does not update the timestamp of updated apk
WORKING_DIRECTORY "${android_proj_bin_dir}"
MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}"
DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME})
else()
add_custom_command(
OUTPUT "${android_proj_bin_dir}/bin/${target}-debug.apk"
COMMAND ${ANT_EXECUTABLE} -q -noinput -k debug
COMMAND ${CMAKE_COMMAND} -E touch "${android_proj_bin_dir}/bin/${target}-debug.apk" # needed because ant does not update the timestamp of updated apk
WORKING_DIRECTORY "${android_proj_bin_dir}"
MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}"
DEPENDS "${Wagic_BINARY_DIR}/bin/classes.jar.dephelper" opencv_java # as we are part of Wagic we can just force this dependency
DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME})
endif()
unset(JNI_LIB_NAME)
add_custom_target(${target} ALL SOURCES "${android_proj_bin_dir}/bin/${target}-debug.apk" )
if(NOT android_proj_IGNORE_JAVA)
add_dependencies(${target} opencv_java)
endif()
if(android_proj_native_deps)
add_dependencies(${target} ${android_proj_native_deps})
endif()
if(__android_project_chain)
add_dependencies(${target} ${__android_project_chain})
endif()
set(__android_project_chain ${target} CACHE INTERNAL "auxiliary variable used for Android progects chaining")
# put the final .apk to the Wagic's bin folder
add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${android_proj_bin_dir}/bin/${target}-debug.apk" "${Wagic_BINARY_DIR}/bin/${target}.apk")
if(INSTALL_ANDROID_EXAMPLES AND "${target}" MATCHES "^example-")
#apk
install(FILES "${Wagic_BINARY_DIR}/bin/${target}.apk" DESTINATION "samples" COMPONENT main)
get_filename_component(sample_dir "${path}" NAME)
#java part
list(REMOVE_ITEM android_proj_files ${ANDROID_MANIFEST_FILE})
foreach(f ${android_proj_files} ${ANDROID_MANIFEST_FILE})
get_filename_component(install_subdir "${f}" PATH)
install(FILES "${android_proj_bin_dir}/${f}" DESTINATION "samples/${sample_dir}/${install_subdir}" COMPONENT main)
endforeach()
#jni part + eclipse files
file(GLOB_RECURSE jni_files RELATIVE "${path}" "${path}/jni/*" "${path}/.cproject")
ocv_list_filterout(jni_files "\\\\.svn")
foreach(f ${jni_files} ".classpath" ".project" ".settings/org.eclipse.jdt.core.prefs")
get_filename_component(install_subdir "${f}" PATH)
install(FILES "${path}/${f}" DESTINATION "samples/${sample_dir}/${install_subdir}" COMPONENT main)
endforeach()
#update proj
if(android_proj_lib_deps_commands)
set(inst_lib_opt " --library ../../sdk/java")
endif()
install(CODE "EXECUTE_PROCESS(COMMAND ${ANDROID_EXECUTABLE} --silent update project --path . --target \"${android_proj_sdk_target}\" --name \"${target}\" ${inst_lib_opt}
WORKING_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/samples/${sample_dir}\"
)" COMPONENT main)
#empty 'gen'
install(CODE "MAKE_DIRECTORY(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/samples/${sample_dir}/gen\")" COMPONENT main)
endif()
endif()
endmacro()

View File

@@ -0,0 +1,13 @@
find_host_program(ANT_EXECUTABLE "ant")
if(ANT_EXECUTABLE)
set(ANT_FOUND ON)
else()
set(ANT_FOUND OFF)
endif()
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ANT REQUIRED_VARS ANT_EXECUTABLE)
mark_as_advanced(ANT_EXECUTABLE ANT_FOUND)

View File

@@ -0,0 +1,29 @@
# - Find OpenSL (actually OpenSLES)
# Find the OpenSLES includes and libraries
#
# OPENSL_INCLUDE_DIR - where to find dsound.h
# OPENSL_LIBRARIES - List of libraries when using dsound.
# OPENSL_FOUND - True if dsound found.
if(OPENSL_INCLUDE_DIR)
# Already in cache, be silent
set(OPENSL_FIND_QUIETLY TRUE)
endif(OPENSL_INCLUDE_DIR)
find_path(OPENSL_INCLUDE_DIR SLES/OpenSLES.h)
find_library(OPENSL_LIBRARY NAMES OpenSLES)
# Handle the QUIETLY and REQUIRED arguments and set OPENSL_FOUND to TRUE if
# all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OPENSL DEFAULT_MSG
OPENSL_INCLUDE_DIR OPENSL_LIBRARY)
if(OPENSL_FOUND)
set(OPENSL_LIBRARIES ${OPENSL_LIBRARY})
else(OPENSL_FOUND)
set(OPENSL_LIBRARIES)
endif(OPENSL_FOUND)
mark_as_advanced(OPENSL_INCLUDE_DIR OPENSL_LIBRARY)

View File

@@ -0,0 +1,267 @@
macro(FindOrBuildZipFS)
if(BUILD_ZIPFS)
add_subdirectory(
${CMAKE_SOURCE_DIR}/thirdparty/zipFS
${CMAKE_BINARY_DIR}/thirdparty/zipFS)
set(ZIPFS_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/zipFS)
set(ZIPFS_LIBRARY zipFS)
else()
message(WARNING "ZIPFS must get build")
endif()
endmacro()
macro(FindOrBuildTinyXML)
if(BUILD_TINYXML)
add_definitions(-DTIXML_USE_STL)
add_subdirectory(
${CMAKE_SOURCE_DIR}/thirdparty/tinyxml
${CMAKE_BINARY_DIR}/thirdparty/tinyxml)
set(TINYXML_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/tinyxml)
set(TINYXML_LIBRARIES tinyxml)
else()
find_package(TinyXML REQUIRED)
endif()
endmacro()
macro(FindOrBuildSDL2)
if(BUILD_SDL2)
if(WIN32)
#SDL2 DirectX build is somehow broken...
set(SDL_AUDIO FALSE)
set(SDL_JOYSTICK FALSE)
set(SDL_HAPTIC FALSE)
# Forcing static build on Windows as SDL2main is often needed and easier to link statically.
# Set SDL_SHARED to OFF *before* adding the subdirectory to influence its build.
set(SDL_SHARED OFF CACHE BOOL "Build SDL2 as a static library" FORCE)
endif()
# Add the subdirectory. This creates targets like SDL2::SDL2, SDL2::SDL2-static, SDL2::SDL2main
add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/SDL2 ${CMAKE_BINARY_DIR}/thirdparty/SDL2)
set(SDL2_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/SDL2/include ${CMAKE_BINARY_DIR}/thirdparty/SDL2)
# Linking against SDL2::SDL2 below handles includes automatically.
if(EMSCRIPTEN)
# Emscripten typically uses static linking
set(SDL2_LIBRARY SDL2::SDL2-static) # Use the CMake target
else()
# Link against SDL2 (shared or static based on SDL_SHARED) and SDL2main
# SDL2::SDL2 resolves to the correct shared/static target.
# SDL2::SDL2main is needed on many platforms, especially Windows.
set(SDL2_LIBRARY SDL2::SDL2 SDL2::SDL2main) # Use the CMake targets
endif()
elseif(NOT EMSCRIPTEN)
# If not building from source, use the find_package module
find_package(SDL2)
endif()
endmacro()
macro(FindOrBuildUNZIP)
if(BUILD_UNZIP)
add_subdirectory(
${CMAKE_SOURCE_DIR}/thirdparty/unzip
${CMAKE_BINARY_DIR}/thirdparty/unzip)
set(UNZIP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/unzip)
set(UNZIP_LIBRARY unzip)
else()
message(WARNING "UNZIP must get build")
endif()
endmacro()
macro(FindOrBuildBoost)
if(PSP OR UNIX OR WIN32 OR IOS)
#the psp build does not need more than a few headers
#todo: remove from the repository
set(BOOST_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/Boost)
# elseif(WIN32)
#set BOOST_ROOT to the root of boost
# set(Boost_USE_STATIC_LIBS ON)
# set(Boost_USE_MULTITHREADED ON)
# set(BOOST_ROOT $ENV{BOOST_ROOT})
# set(BOOST_LIBRARYDIR ${BOOST_ROOT}/libs)
# set(BOOST_INCLUDEDIR ${BOOST_ROOT})
# find_package(Boost COMPONENTS system thread date_time REQUIRED)
# if(NOT Boost_FOUND)
# message("Set the BOOST_ROOT environment variable to point to your boost installation.")
# message("We need system thread and date_time compiled static libs")
# message("These libs are compiler specific.")
# endif()
# elseif(UNIX AND NOT ANDROID)
# find_package(Boost COMPONENTS system thread date_time REQUIRED)
elseif(ANDROID)
#this is a hack. we compile a few boost libds directly into
#the application. we should require static libs for android
#to be available. maybe we could add the build option to
#download and build a compatible boost version
find_path(BOOST_INCLUDE_DIRS NAMES bind.hpp HINTS $ENV{ANDROID_BOOST_ROOT} PATH_SUFFIXES boost)
if(BOOST_INCLUDE_DIRS)
get_filename_component(BOOST_INCLUDE_DIRS ${BOOST_INCLUDE_DIRS} PATH)
set(ANDROID_BOOST_PTHREAD_SRC_DIR ${BOOST_INCLUDE_DIRS}/libs/thread/src/pthread)
set(ANDROID_BOOST_SYSTEM_SRC_DIR ${BOOST_INCLUDE_DIRS}/libs/system/src/)
else()
message(SEND_ERROR "We require a few boost sources to get compiled into wagic. Please point the ANDROID_BOOST_ROOT environment variable to a boost-source copy root.")
endif()
endif()
endmacro()
macro(FindOrBuildZLIB)
if(BUILD_ZLIB)
add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/zlib ${CMAKE_BINARY_DIR}/thirdparty/zlib)
set(ZLIB_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/zlib)
set(ZLIB_LIBRARIES ZLIB::ZLIBSTATIC)
else()
if(WIN32 AND NOT MINGW)
set(ZLIB_ROOT ${CMAKE_SOURCE_DIR}/thirdparty/binary/win)
find_package(ZLIB)
else()
if(MINGW)
set(ZLIB_USE_STATIC_LIBS TRUE)
find_package(ZLIB REQUIRED)
else()
if(backend_qt_console OR backend_qt_widget OR EMSCRIPTEN)
set(ZLIB_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/zlib)
else()
find_package(ZLIB)
endif()
endif()
endif()
endif()
endmacro()
macro(FindOrBuildGIF)
if(BUILD_GIF)
message(WARNING "GIF sources are currently not included within the wagic tree")
else()
if(PSP)
find_package(GIF)
endif()
endif()
endmacro()
macro(FindOrBuildJPEG)
if(BUILD_JPEG)
add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/libjpeg ${CMAKE_BINARY_DIR}/thirdparty/libjpeg)
set(JPEG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/libjpeg)
set(JPEG_LIBRARY jpeg)
else()
if(WIN32)
#findJPEG does currently not provide prefix vars to guide it
find_path(JPEG_INCLUDE_DIR jpeglib.h HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/include)
find_library(JPEG_LIBRARY NAMES libjpeg-static-mt HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/lib)
if(JPEG_INCLUDE_DIR AND JPEG_LIBRARY)
set(JPEG_FOUND ON)
mark_as_advanced(JPEG_INCLUDE_DIR JPEG_LIBRARY)
else()
message(FATAL_ERROR "Could not find JPEG on windows")
endif()
else()
find_package(JPEG)
endif()
endif()
endmacro()
macro(FindOrBuildPNG)
if(BUILD_PNG)
add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/libpng ${CMAKE_BINARY_DIR}/thirdparty/libpng)
set(PNG_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/libpng)
# find_path(PNG_INCLUDE_DIRS NAMES png.h HINTS ${CMAKE_SOURCE_DIR}/thirdparty/libpng)
set(PNG_LIBRARIES png)
else()
if(WIN32)
#findPNG does currently not provide prefix vars. so we find
find_path(PNG_INCLUDE_DIRS png.h HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/include)
find_library(PNG_LIBRARIES libpng HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/lib)
if (PNG_LIBRARIES AND PNG_INCLUDE_DIRS)
set(PNG_FOUND ON)
mark_as_advanced(PNG_INCLUDE_DIRS PNG_LIBRARIES)
else()
message(FATAL_ERROR "Could not find PNG on windows")
endif()
else()
find_package(PNG)
endif()
endif()
endmacro()
macro(FindOrBuildCurl)
if(BUILD_CURL)
add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/curl ${CMAKE_BINARY_DIR}/thirdparty/curl)
set(CURL curl_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/curl)
set(CURL_LIBRARIES curl)
else()
if(WIN32)
#findPNG does currently not provide prefix vars. so we find
find_path(CURL CURL_INCLUDE_DIRS curl.h HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/include)
find_library(CURL_LIBRARIES libcurl HINTS ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/lib)
if (CURL_LIBRARIES AND CURL_INCLUDE_DIRS)
set(CURL_FOUND ON)
mark_as_advanced(CURL_INCLUDE_DIRS CURL_LIBRARIES)
else()
message(FATAL_ERROR "Could not find CURL on windows")
endif()
else()
find_package(CURL)
endif()
endif()
endmacro()
macro(FindOrBuildFreetype)
if(PSP)
set(ENV{FREETYPE_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/include)
set(ENV{FREETYPE_LIBRARIES} freetype)
endif()
endmacro()
macro(FindOrBuildHgeTools)
if(PSP)
find_library(HGETOOLS_LIBRARY NAMES hgetools HINTS "${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/lib")
set(HGETOOLS_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/include")
endif()
endmacro()
macro(FindOrBuildMikMod)
if(PSP)
find_library(MIKMOD_LIBRARY NAMES mikmod HINTS "${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/lib")
set(MIKMOD_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/include")
endif()
endmacro()
macro(FindOrBuildQt)
if(backend_qt_console)
add_definitions(-DCONSOLE_CONFIG -DTESTSUITE)
find_package(Qt5Core REQUIRED)
find_package(Qt5 COMPONENTS Core Network Multimedia REQUIRED)
elseif(backend_qt_widget)
add_definitions(-DQT_WIDGET)
find_package(OpenGL REQUIRED)
find_package(X11 REQUIRED)
find_package(Qt5 COMPONENTS Core Gui OpenGL Network Multimedia REQUIRED)
endif()
# include(${QT_USE_FILE})
endmacro()
macro(FindOrBuildOpenGL)
if(backend_sdl OR backend_qt_console OR backend_qt_widget)
if(ANDROID)
#find openglesv on android
set(OPENGL_LIBRARIES "-ldl -lGLESv1_CM -lGLESv2 -llog -landroid")
elseif(EMSCRIPTEN)
set(OPENGL_LIBRARIES "")
else()
find_package(OpenGL)
# find_package(GLUT)
endif()
endif()
endmacro()
macro(FindOrBuildOpenSL)
find_package(OpenSL)
endmacro()
macro(FindOrBuildPSPSDK)
find_package(PSPSDK COMPONENTS psppower pspmpeg pspaudiocodec pspaudiolib pspaudio pspmp3 pspgum pspgu psprtc pspfpu REQUIRED)
endmacro()

View File

@@ -0,0 +1,62 @@
# - Try to find PSPSDK
# Once done this will define
# PSPSDK_FOUND - System has PSPSDK
# PSPSDK_INCLUDE_DIR - The PSPSDK include directories
# PSPSDK_LIB - The libraries requested with the components field
# PSPSDK_REQUIRED_LIB - The libriries the PSPSDK needs always
# PSPSDK_CFLAGS - The CFLAGS to use
# PSPSDK_PATH - The output of psp-config --pspsdk-path
# PSPSDK_PREFIX - The output of psp-config --psp-prefix
# PSPSDK_CXX_COMPILER - The PSPSDK CXX Compilers path
# PSPSDK_CXX_LINKER - The PSPSDK CXX Linker command
# PSPSDK_FIXUP_IMPORTS_COMMAND - psp-fixup-imports command
# PSPSDK_PRXGEN_COMMAND - psp-prxgen command
# PSPSDK_PACK_PBP_COMMAND - pack-pbp command
# PSPSDK_MKSFO_COMMAND - mksfo command
#find the psp-config progams absolute path
#psp-config needs to be reachable via the system shell (PATH)
find_program(PSP_CONFIG_PROGRAM psp-config)
#TODO: check if something is REQUIRED and throw errors instead of messages
if(PSP_CONFIG_PROGRAM)
find_program(PSPSDK_CXX_COMPILER psp-g++)
find_program(PSPSDK_CXX_LINKER psp-gcc)
find_program(PSPSDK_FIXUP_IMPORTS_COMMAND psp-fixup-imports)
find_program(PSPSDK_PRXGEN_COMMAND psp-prxgen)
find_program(PSPSDK_PACK_PBP_COMMAND pack-pbp)
find_program(PSPSDK_MKSFO_COMMAND mksfo)
#ask psp-config for the
execute_process(COMMAND psp-config --pspsdk-path OUTPUT_VARIABLE PSPSDK_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPSDK_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
set(PSPSDK_INCLUDE_DIR "${PSPSDK_PATH}/include")
foreach(_COMPONENT ${PSPSDK_FIND_COMPONENTS})
find_library(PSPSDK_${_COMPONENT} NAMES ${_COMPONENT})
if(NOT PSPSDK_${_COMPONENT})
message(SEND_ERROR "PSPSDK: ${_COMPONENT} not found")
else()
set(PSPSDK_LIB ${PSPSDK_LIB} ${PSPSDK_${_COMPONENT}})
endif()
endforeach()
#find libs which pspsdk does require to link even if the programs does not need one of them directly
foreach(_COMPONENT pspdebug pspdisplay pspge pspctrl pspsdk c pspnet pspnet_inet pspnet_apctl pspnet_resolver psputility pspuser)
find_library(PSPSDK_${_COMPONENT} NAMES ${_COMPONENT})
if(NOT PSPSDK_${_COMPONENT})
message(SEND_ERROR "PSPSDK: ${_COMPONENT} not found")
else()
set(PSPSDK_REQUIRED_LIB ${PSPSDK_REQUIRED_LIB} ${PSPSDK_${_COMPONENT}})
endif()
endforeach()
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(PSPSDK DEFAULT_MSG
PSPSDK_CXX_LINKER PSPSDK_CXX_COMPILER PSPSDK_PATH PSPSDK_PREFIX PSPSDK_LIB PSPSDK_REQUIRED_LIB PSPSDK_INCLUDE_DIR)
mark_as_advanced(PSPSDK_CXX_LINKER PSPSDK_CXX_COMPILER PSPSDK_PATH PSPSDK_PREFIX PSPSDK_LIB PSPSDK_REQUIRED_LIB PSPSDK_INCLUDE_DIR)

181
CMakeModules/FindSDL2.cmake Normal file
View File

@@ -0,0 +1,181 @@
# Locate SDL2 library
# This module defines
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL2
# SDL2_INCLUDE_DIR, where to find SDL.h
#
# This module responds to the the flag:
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2_main will be linked in because
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the the proper link flags
# as part of the returned SDL2_LIBRARY variable.
#
# Don't forget to include SDL2main.h and SDL2main.m your project for the
# OS X framework based version. (Other versions link to -lSDL2main which
# this module will try to find on your behalf.) Also for OS X, this
# module will automatically add the -framework Cocoa on your behalf.
#
#
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration
# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library
# (SDL2.dll, libsdl2.so, SDL2.framework, etc).
# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again.
# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value
# as appropriate. These values are used to generate the final SDL2_LIBRARY
# variable, but when these values are unset, SDL2_LIBRARY does not get created.
#
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
# l.e.galup 9-20-02
#
# Modified by Eric Wing.
# Added code to assist with automated building by using environmental variables
# and providing a more controlled/consistent search behavior.
# Added new modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).
# Also corrected the header search path to follow "proper" SDL2 guidelines.
# Added a search for SDL2main which is needed by some platforms.
# Added a search for threads which is needed by some platforms.
# Added needed compile switches for MinGW.
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of
# SDL2_LIBRARY to override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# Note that the header path has changed from SDL2/SDL.h to just SDL.h
# This needed to change because "proper" SDL2 convention
# is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
# reasons because not all systems place things in SDL2/ (see FreeBSD).
#
# Ported by Johnny Patterson. This is a literal port for SDL2 of the FindSDL.cmake
# module with the minor edit of changing "SDL" to "SDL2" where necessary. This
# was not created for redistribution, and exists temporarily pending official
# SDL2 CMake modules.
#=============================================================================
# Copyright 2003-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
FIND_PATH(SDL2_INCLUDE_DIR SDL.h
HINTS
$ENV{SDL2DIR}
PATH_SUFFIXES include/SDL2 include
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local/include/SDL2
/usr/include/SDL2
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
FIND_LIBRARY(SDL2_LIBRARY_TEMP
NAMES SDL2
HINTS
$ENV{SDL2DIR}
PATH_SUFFIXES lib64 lib
PATHS
/sw
/opt/local
/opt/csw
/opt
)
#MESSAGE("SDL2_LIBRARY_TEMP is ${SDL2_LIBRARY_TEMP}")
IF(NOT SDL2_BUILDING_LIBRARY)
IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
# Non-OS X framework versions expect you to also dynamically link to
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDL2main for compatibility even though they don't
# necessarily need it.
FIND_LIBRARY(SDL2MAIN_LIBRARY
NAMES SDL2main
HINTS
$ENV{SDL2DIR}
PATH_SUFFIXES lib64 lib
PATHS
/sw
/opt/local
/opt/csw
/opt
)
ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
ENDIF(NOT SDL2_BUILDING_LIBRARY)
# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
IF(NOT APPLE)
FIND_PACKAGE(Threads)
ENDIF(NOT APPLE)
# MinGW needs an additional library, mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows
# (Actually on second look, I think it only needs one of the m* libraries.)
IF(MINGW)
SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW")
ENDIF(MINGW)
SET(SDL2_FOUND "NO")
IF(SDL2_LIBRARY_TEMP)
# For SDL2main
IF(NOT SDL2_BUILDING_LIBRARY)
IF(SDL2MAIN_LIBRARY)
SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP})
ENDIF(SDL2MAIN_LIBRARY)
ENDIF(NOT SDL2_BUILDING_LIBRARY)
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
IF(APPLE)
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
ENDIF(APPLE)
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
IF(NOT APPLE)
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
ENDIF(NOT APPLE)
# For MinGW library
IF(MINGW)
SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
ENDIF(MINGW)
# Set the final string here so the GUI reflects the final state.
SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found")
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
SET(SDL2_FOUND "YES")
ENDIF(SDL2_LIBRARY_TEMP)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)
mark_as_advanced(SDL2MAIN_LIBRARY SDL2_LIBRARY SDL2_INCLUDE_DIR)

26
CMakeModules/FindTinyXML.cmake Executable file
View File

@@ -0,0 +1,26 @@
# - Find TinyXML
# Find the native TinyXML includes and library
#
# TINYXML_FOUND - True if TinyXML found.
# TINYXML_INCLUDE_DIR - where to find tinyxml.h, etc.
# TINYXML_LIBRARIES - List of libraries when using TinyXML.
#
IF( TINYXML_INCLUDE_DIR )
# Already in cache, be silent
SET( TinyXML_FIND_QUIETLY TRUE )
ENDIF( TINYXML_INCLUDE_DIR )
FIND_PATH( TINYXML_INCLUDE_DIR "tinyxml.h"
PATH_SUFFIXES "tinyxml" )
FIND_LIBRARY( TINYXML_LIBRARIES
NAMES "tinyxml"
PATH_SUFFIXES "tinyxml" )
# handle the QUIETLY and REQUIRED arguments and set TINYXML_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE( "FindPackageHandleStandardArgs" )
FIND_PACKAGE_HANDLE_STANDARD_ARGS( "TinyXML" DEFAULT_MSG TINYXML_INCLUDE_DIR TINYXML_LIBRARIES )
MARK_AS_ADVANCED( TINYXML_INCLUDE_DIR TINYXML_LIBRARIES )

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,48 @@
include(CMakeForceCompiler)
# this one is important
SET(CMAKE_SYSTEM_NAME "Generic")
#this one not so much
SET(CMAKE_SYSTEM_VERSION 1)
set (CMAKE_SYSTEM_NAME Generic)
# Just point to anything that exists.
# We don't need CMake to generate proper build files.
set(CMAKE_C_COMPILER ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_CXX_COMPILER ${CMAKE_CURRENT_SOURCE_DIR})
# Skip the platform compiler checks
set (CMAKE_CXX_COMPILER_WORKS TRUE)
set (CMAKE_C_COMPILER_WORKS TRUE)
#how libraries look
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
SET(CMAKE_SYSTEM_INCLUDE_PATH
${THEOS_PATH}/include
${CMAKE_INSTALL_PREFIX}/include
${CMAKE_SYSTEM_INCLUDE_PATH})
# where is the target environment
SET(CMAKE_SYSTEM_LIBRARY_PATH
${THEOS_PATH}/lib
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_SYSTEM_LIBRARY_PATH})
SET(CMAKE_FIND_ROOT_PATH
${CMAKE_SOURCE_DIR}
${THEOS_PATH}
${THEOS_PATH}/lib
${THEOS_PATH}/include
)
# search for programs in the build host directories
# for libraries and headers in the target directories and then in the host
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST)
set(IOS 1)

View File

@@ -0,0 +1,333 @@
# This file is part of the ios-cmake project. It was retrieved from
# https://github.com/cristeab/ios-cmake.git, which is a fork of
# https://code.google.com/p/ios-cmake/. Which in turn is based off of
# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which
# are included with CMake 2.8.4
#
# The ios-cmake project is licensed under the new BSD license.
#
# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software,
# Kitware, Inc., Insight Software Consortium. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# This file is based off of the Platform/Darwin.cmake and
# Platform/UnixPaths.cmake files which are included with CMake 2.8.4
# It has been altered for iOS development.
#
# Updated by Alex Stewart (alexs.mac@gmail.com).
# The following variables control the behaviour of this toolchain:
#
# IOS_PLATFORM: OS (default) or SIMULATOR or SIMULATOR64
# OS = Build for iPhoneOS.
# SIMULATOR = Build for x86 i386 iPhone Simulator.
# SIMULATOR64 = Build for x86 x86_64 iPhone Simulator.
# CMAKE_OSX_SYSROOT: Path to the iOS SDK to use. By default this is
# automatically determined from IOS_PLATFORM and xcodebuild, but
# can also be manually specified (although this should not be required).
# CMAKE_IOS_DEVELOPER_ROOT: Path to the Developer directory for the iOS platform
# being compiled for. By default this is automatically determined from
# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should
# not be required).
# ENABLE_BITCODE: (true|false) Enables or disables bitcode support. Default true
#
# This toolchain defines the following variables for use externally:
#
# XCODE_VERSION: Version number (not including Build version) of Xcode detected.
# IOS_SDK_VERSION: Version of iOS SDK being used.
# CMAKE_OSX_ARCHITECTURES: Architectures being compiled for (generated from
# IOS_PLATFORM).
#
# This toolchain defines the following macros for use externally:
#
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT)
# A convenience macro for setting xcode specific properties on targets.
# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all").
#
# find_host_package (PROGRAM ARGS)
# A macro used to find executable programs on the host system, not within the
# iOS environment. Thanks to the android-cmake project for providing the
# command.
# Fix for PThread library not in path
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
# Get the Xcode version being used.
execute_process(COMMAND xcodebuild -version
OUTPUT_VARIABLE XCODE_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
message(STATUS "Building with Xcode version: ${XCODE_VERSION}")
# Default to building for iPhoneOS if not specified otherwise, and we cannot
# determine the platform from the CMAKE_OSX_ARCHITECTURES variable. The use
# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly
# determine the value of IOS_PLATFORM from the root project, as
# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake.
if (NOT DEFINED IOS_PLATFORM)
if (CMAKE_OSX_ARCHITECTURES)
if (CMAKE_OSX_ARCHITECTURES MATCHES ".*arm.*")
set(IOS_PLATFORM "OS")
elseif (CMAKE_OSX_ARCHITECTURES MATCHES "i386")
set(IOS_PLATFORM "SIMULATOR")
elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
set(IOS_PLATFORM "SIMULATOR64")
endif()
endif()
if (NOT IOS_PLATFORM)
set(IOS_PLATFORM "OS")
endif()
endif()
set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING
"Type of iOS platform for which to build.")
# Determine the platform name and architectures for use in xcodebuild commands
# from the specified IOS_PLATFORM name.
if (IOS_PLATFORM STREQUAL "OS")
set(XCODE_IOS_PLATFORM iphoneos)
set(IOS_ARCH armv7 armv7s arm64)
elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
set(XCODE_IOS_PLATFORM iphonesimulator)
set(IOS_ARCH i386)
elseif(IOS_PLATFORM STREQUAL "SIMULATOR64")
set(XCODE_IOS_PLATFORM iphonesimulator)
set(IOS_ARCH x86_64)
else()
message(FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}")
endif()
message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, "
"architecture(s): ${IOS_ARCH}")
# If user did not specify the SDK root to use, then query xcodebuild for it.
if (NOT CMAKE_OSX_SYSROOT)
execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
endif()
if (NOT EXISTS ${CMAKE_OSX_SYSROOT})
message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
"does not exist.")
endif()
# Specify minimum version of deployment target.
if (NOT DEFINED IOS_DEPLOYMENT_TARGET)
# Unless specified, SDK version 8.0 is used by default as minimum target version.
set(IOS_DEPLOYMENT_TARGET "8.0"
CACHE STRING "Minimum iOS version to build for." )
message(STATUS "Using the default min-version since IOS_DEPLOYMENT_TARGET not provided!")
endif()
# Use bitcode or not
if (NOT DEFINED ENABLE_BITCODE)
# Unless specified, enable bitcode support by default
set(ENABLE_BITCODE TRUE CACHE BOOL "Wheter or not to enable bitcode")
message(STATUS "Enabling bitcode support by default. ENABLE_BITCODE not provided!")
endif()
# Get the SDK version information.
execute_process(COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
OUTPUT_VARIABLE IOS_SDK_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Find the Developer root for the specific iOS platform being compiled for
# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in
# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain
# this information from xcrun or xcodebuild.
if (NOT CMAKE_IOS_DEVELOPER_ROOT)
get_filename_component(IOS_PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT} PATH)
get_filename_component(CMAKE_IOS_DEVELOPER_ROOT ${IOS_PLATFORM_SDK_DIR} PATH)
endif()
if (NOT EXISTS ${CMAKE_IOS_DEVELOPER_ROOT})
message(FATAL_ERROR "Invalid CMAKE_IOS_DEVELOPER_ROOT: "
"${CMAKE_IOS_DEVELOPER_ROOT} does not exist.")
endif()
# Find the C & C++ compilers for the specified SDK.
if (NOT CMAKE_C_COMPILER)
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang
OUTPUT_VARIABLE CMAKE_C_COMPILER
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
endif()
if (NOT CMAKE_CXX_COMPILER)
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang++
OUTPUT_VARIABLE CMAKE_CXX_COMPILER
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
endif()
# Find (Apple's) libtool.
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find libtool
OUTPUT_VARIABLE IOS_LIBTOOL
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using libtool: ${IOS_LIBTOOL}")
# Configure libtool to be used instead of ar + ranlib to build static libraries.
# This is required on Xcode 7+, but should also work on previous versions of
# Xcode.
set(CMAKE_C_CREATE_STATIC_LIBRARY
"${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS> ")
set(CMAKE_CXX_CREATE_STATIC_LIBRARY
"${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS> ")
# Get the version of Darwin (OS X) of the host.
execute_process(COMMAND uname -r
OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Standard settings.
set(CMAKE_SYSTEM_NAME Darwin CACHE INTERNAL "")
set(CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION} CACHE INTERNAL "")
set(UNIX TRUE CACHE BOOL "")
set(APPLE TRUE CACHE BOOL "")
set(IOS TRUE CACHE BOOL "")
set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
# Force unset of OS X-specific deployment target (otherwise autopopulated),
# required as of cmake 2.8.10.
set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING
"Must be empty for iOS builds." FORCE)
# Set the architectures for which to build.
set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
# Skip the platform compiler checks for cross compiling.
set(CMAKE_CXX_COMPILER_FORCED TRUE)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_C_COMPILER_FORCED TRUE)
set(CMAKE_C_COMPILER_WORKS TRUE)
# All iOS/Darwin specific settings - some may be redundant.
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
set(CMAKE_SHARED_MODULE_PREFIX "lib")
set(CMAKE_SHARED_MODULE_SUFFIX ".so")
set(CMAKE_MODULE_EXISTS 1)
set(CMAKE_DL_LIBS "")
set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}"
" (SDK version: ${IOS_SDK_VERSION})")
# Note that only Xcode 7+ supports the newer more specific:
# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use:
# -m(ios/ios-simulator)-version-min instead.
if (IOS_PLATFORM STREQUAL "OS")
if (XCODE_VERSION VERSION_LESS 7.0)
set(XCODE_IOS_PLATFORM_VERSION_FLAGS
"-mios-version-min=${IOS_DEPLOYMENT_TARGET}")
else()
# Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
set(XCODE_IOS_PLATFORM_VERSION_FLAGS
"-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
endif()
else()
# SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
set(XCODE_IOS_PLATFORM_VERSION_FLAGS
"-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
endif()
message(STATUS "Version flags set to: ${XCODE_IOS_PLATFORM_VERSION_FLAGS}")
if (ENABLE_BITCODE)
set(BITCODE "-fembed-bitcode")
message(STATUS "Enabling bitcode support.")
else()
set(BITCODE "")
message(STATUS "Disabling bitcode support.")
endif()
set(CMAKE_C_FLAGS
"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 -fobjc-arc ${CMAKE_C_FLAGS}")
# Hidden visibilty is required for C++ on iOS.
set(CMAKE_CXX_FLAGS
"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fvisibility=hidden -fvisibility-inlines-hidden -fobjc-abi-version=2 -fobjc-arc ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 -fomit-frame-pointer -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
set(CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
# In order to ensure that the updated compiler flags are used in try_compile()
# tests, we have to forcibly set them in the CMake cache, not merely set them
# in the local scope.
list(APPEND VARS_TO_FORCE_IN_CACHE
CMAKE_C_FLAGS
CMAKE_CXX_FLAGS
CMAKE_CXX_RELEASE
CMAKE_C_LINK_FLAGS
CMAKE_CXX_LINK_FLAGS)
foreach(VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE})
set(${VAR_TO_FORCE} "${${VAR_TO_FORCE}}" CACHE STRING "" FORCE)
endforeach()
set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
# Hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old
# build tree (where install_name_tool was hardcoded) and where
# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't fail in
# CMakeFindBinUtils.cmake (because it isn't rerun) hardcode
# CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did
# before, Alex.
if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
# Set the find root to the iOS developer roots and to user defined paths.
set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT}
${CMAKE_PREFIX_PATH} CACHE string "iOS find search path root" FORCE)
# Default to searching for frameworks first.
set(CMAKE_FIND_FRAMEWORK FIRST)
# Set up the default search directories for frameworks.
set(CMAKE_SYSTEM_FRAMEWORK_PATH
${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks)
# Only search the specified iOS SDK, not the remainder of the host filesystem.
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# This little macro lets you set any XCode specific property.
macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION)
set(XCODE_RELVERSION_I "${XCODE_RELVERSION}")
if (XCODE_RELVERSION_I STREQUAL "All")
set_property(TARGET ${TARGET} PROPERTY
XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}")
else()
set_property(TARGET ${TARGET} PROPERTY
XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}")
endif()
endmacro(set_xcode_property)
# This macro lets you find executable programs on the host system.
macro(find_host_package)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
set(IOS FALSE)
find_package(${ARGN})
set(IOS TRUE)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endmacro(find_host_package)

View File

@@ -0,0 +1,62 @@
include(CMakeForceCompiler)
# this one is important
SET(CMAKE_SYSTEM_NAME "Generic")
#this one not so much
SET(CMAKE_SYSTEM_VERSION 1)
find_program(PSP_CONFIG_PROGRAM psp-config)
execute_process(COMMAND psp-config --pspsdk-path OUTPUT_VARIABLE PSPSDK_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPSDK_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
# specify compiler and linker:
find_program(PSP_GPP psp-g++)
find_program(PSP_GCC psp-gcc)
CMAKE_FORCE_C_COMPILER(${PSP_GCC} GNU)
CMAKE_FORCE_CXX_COMPILER(${PSP_GPP} GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -G0")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
set(CMAKE_CXX_LINK_EXECUTABLE "${PSP_GCC} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
#how libraries look
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
# where is the target environment
SET(CMAKE_SYSTEM_INCLUDE_PATH
${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/include
${PSPSDK_PATH}/include
${PSPSDK_PREFIX}/include
${CMAKE_INSTALL_PREFIX}/include
${CMAKE_SYSTEM_INCLUDE_PATH})
SET(CMAKE_SYSTEM_LIBRARY_PATH
${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/lib
${PSPSDK_PATH}/lib
${PSPSDK_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_SYSTEM_LIBRARY_PATH})
SET(CMAKE_FIND_ROOT_PATH
${CMAKE_SOURCE_DIR}/thirdparty/binary/psp
${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/lib
${CMAKE_SOURCE_DIR}/thirdparty/binary/psp/include
${PSPSDK_PATH}
${PSPSDK_PATH}/lib
${PSPSDK_PATH}/include
${PSPSDK_PREFIX}
${PSPSDK_PREFIX}/lib
${PSPSDK_PREFIX}/include
)
# search for programs in the build host directories
# for libraries and headers in the target directories and then in the host
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST)
set(PSP 1)

57
CMakeModules/utils.cmake Normal file
View File

@@ -0,0 +1,57 @@
macro(WAGIC_OPTION variable description value)
set(__value ${value})
set(__condition "")
set(__varname "__value")
foreach(arg ${ARGN})
if(arg STREQUAL "IF" OR arg STREQUAL "if")
set(__varname "__condition")
else()
list(APPEND ${__varname} ${arg})
endif()
endforeach()
unset(__varname)
if("${__condition}" STREQUAL "")
set(__condition 2 GREATER 1)
endif()
if(${__condition})
if("${__value}" MATCHES ";")
if(${__value})
option(${variable} "${description}" ON)
else()
option(${variable} "${description}" OFF)
endif()
elseif(DEFINED ${__value})
if(${__value})
option(${variable} "${description}" ON)
else()
option(${variable} "${description}" OFF)
endif()
else()
option(${variable} "${description}" ${__value})
endif()
else()
unset(${variable} CACHE)
endif()
unset(__condition)
unset(__value)
endmacro()
# add prefix to each item in the list
macro(list_add_prefix LST PREFIX)
set(__tmp "")
foreach(item ${${LST}})
list(APPEND __tmp "${PREFIX}${item}")
endforeach()
set(${LST} ${__tmp})
unset(__tmp)
endmacro()
macro(find_host_program)
set(_find_program ${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
find_program(${ARGN})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${_find_program})
unset(_find_program)
endmacro()

165
JGE/CMakeLists.txt Normal file
View File

@@ -0,0 +1,165 @@
#the sources, jge will need always
set(JGE_generic_src
src/Encoding.cpp
src/JAnimator.cpp
src/JApp.cpp
src/JDistortionMesh.cpp
src/JFileSystem.cpp
src/JGameObject.cpp
src/JGE.cpp
src/JGui.cpp
src/JLogger.cpp
src/JLBFont.cpp
src/JOBJModel.cpp
src/JParticle.cpp
src/JParticleEffect.cpp
src/JParticleEmitter.cpp
src/JParticleSystem.cpp
src/JResourceManager.cpp
src/JSpline.cpp
src/JSprite.cpp
src/Vector2D.cpp)
set(JGE_hge_src
src/hge/hgecolor.cpp
src/hge/hgedistort.cpp
src/hge/hgefont.cpp
src/hge/hgeparticle.cpp
src/hge/hgerect.cpp
src/hge/hgevector.cpp)
#the sources we need to get graphical output desktops
#used by qt-widget build option
set(JGE_graphics_src
src/Downloader.cpp
include/Downloader.h
src/JMD2Model.cpp
src/pc/JGfx.cpp)
#the sources we need to fake graphical output on desktops
#these are used for the console-only testsuit
set(JGE_console_src
src/OutputCapturer.cpp
src/JGfx-fake.cpp)
#the sources we need on linux
set(JGE_linux_src
src/JNetwork.cpp
src/pc/JSocket.cpp
src/pc/JSfx.cpp)
set(JGE_android_src
src/JNetwork.cpp
src/JSocket.cpp
src/android/JSfx.cpp)
#the sources we need if we compile for psp
#note: main.cpp contains the main-function.
#the other main functions reside in projects/mtg to reduce cross-library dependencies.
#there may be a way to get all main-functions into the same project
set(JGE_psp_src
src/JNetwork.cpp
src/JSocket.cpp
src/JGfx.cpp
src/JSfx.cpp
src/JAudio.cpp
src/JMP3.cpp
src/decoder_prx.cpp
src/main.cpp
src/vram.cpp)
set(JGE_ios_src
src/iOS/main.m
src/iOS/wagicAppDelegate.m
src/iOS/ES2Renderer.m
src/iOS/EAGLView.m
src/iOS/EAGLViewController.m
src/iOS/JSfx.cpp)
set(JGE_windows_src
src/JNetwork.cpp
src/pc/JSocket.cpp
src/windows/JSfx.cpp)
set(JGE_INCLUDE_DIRS include include/hge)
set(EXTRA_INCLUDE_DIR ../projects/mtg/extra)
#turn moc on
if(backend_qt_console OR backend_qt_widget)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC TRUE)
endif()
if(backend_qt_console)
if(UNIX AND NOT ANDROID)
set(JGE_INTERNAL_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${UNZIP_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS})
set(JGE_SOURCES ${JGE_generic_src} ${JGE_console_src} ${JGE_linux_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Multimedia_LIBRARIES} ${ZIPFS_LIBRARY} ${UNZIP_LIRARY}
${JPEG_LIBRARIES} ${PNG_LIBRARIES})
else()
message(FATAL_ERROR "qt builds of jge platforms other than linux are not supported")
endif()
endif()
if(backend_qt_widget)
if(UNIX AND NOT ANDROID)
set(JGE_INTERNAL_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${UNZIP_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${Qt5OpenGL_INCLUDE_DIRS} )
set(JGE_SOURCES ${JGE_generic_src} ${JGE_graphics_src} ${JGE_linux_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Multimedia_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${ZIPFS_LIBRARY} ${UNZIP_LIRARY}
${JPEG_LIBRARIES} ${PNG_LIBRARIES})
else()
message(FATAL_ERROR "qt builds of jge platforms other than linux are not supported")
endif()
endif()
if(backend_sdl)
if((UNIX OR EMSCRIPTEN) AND NOT ANDROID)
set(JGE_INTERNAL_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR}
${SDL2_INCLUDE_DIR} ${UNZIP_INCLUDE_DIR} ${PNG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
set(JGE_SOURCES ${JGE_generic_src} ${JGE_graphics_src} ${JGE_linux_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${ZIPFS_LIBRARY} ${UNZIP_LIRARY} ${JPEG_LIBRARY}
${PNG_LIBRARIES} ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})
elseif(ANDROID)
set(JGE_INTERNAL_INCLUDE_DIRS ${BOOST_INCLUDE_DIRS} ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${SDL2_INCLUDE_DIR} ${UNZIP_INCLUDE_DIR} ${PNG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR}
${OPENSL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
set(JGE_SOURCES ${JGE_generic_src} ${JGE_android_src} ${JGE_graphics_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${ZIPFS_LIBRARY} ${UNZIP_LIRARY} ${JPEG_LIBRARY} ${PNG_LIBRARIES}
${OPENSL_LIBRARIES})
elseif(WIN32)
set(JGE_INTERNAL_INCLUDE_DIRS ${EXTRA_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${SDL2_INCLUDE_DIR}
${UNZIP_INCLUDE_DIR} ${PNG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/thirdparty/binary/win/include)
set(JGE_SOURCES ${JGE_generic_src} ${JGE_graphics_src} ${JGE_windows_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${ZIPFS_LIBRARY} ${UNZIP_LIRARY} ${JPEG_LIBRARY} ${PNG_LIBRARIES})
set(JGE_LINK_DIRECTORIES ${Boost_LIBRARY_DIR})
endif()
endif()
if(backend_psp)
if(PSP)
#${PSPSDK_PATH}/include should be in system pathes
set(JGE_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/psp/include ${TINYXML_INCLUDE_DIR}
${ZIPFS_INCLUDE_DIR} ${UNZIP_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${GIF_INCLUDE_DIR} ${PNG_INCLUDE_DIRS} )
set(JGE_SOURCES ${JGE_generic_src} ${JGE_psp_src} ${JGE_hge_src})
set(JGE_LINK_LIBRARIES ${TINYXML_LIBRARIES} ${ZIPFS_LIBRARY} ${UNZIP_LIRARY})
else()
message(FATAL_ERROR "use the cross-compile toolchain to build as the psp target")
endif()
endif()
if(IOS)
set(JGE_SOURCES ${JGE_generic_src} ${JGE_ios_src} ${JGE_hge_src} src/pc/JGfx.cpp)
set(JGE_SOURCES ${JGE_SOURCES} PARENT_SCOPE)
set(JGE_INCLUDE_DIRS ${JGE_INCLUDE_DIRS} src/iOS PARENT_SCOPE)
set(JGE_LINK_LIBRARIES ${TINYXML_LIBRARIES} ${ZIPFS_LIBRARY} ${UNZIP_LIRARY})
endif()
add_library(jge STATIC ${JGE_SOURCES})
include_directories(${JGE_INTERNAL_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS})
target_link_libraries(jge ${JGE_LINK_LIBRARIES})
link_directories(${JGE_LINK_DIRECTORIES})
set(${JGE_LIBRARIES} jge)

Binary file not shown.

View File

@@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -25,6 +25,7 @@ std::string ToHex(T* pointer)
#ifdef LINUX
#define OutputDebugString(val) (std::cerr << val);
#define OutputDebugStringA(val) (std::cerr << val);
#endif
#ifdef _DEBUG

View File

@@ -41,7 +41,7 @@ class DownloadRequest
private slots:
#endif
void fileDownloaded();
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
void downloadProgress(int64_t bytesReceived, int64_t bytesTotal);
#ifdef QT_CONFIG
signals:
@@ -72,7 +72,13 @@ protected:
QNetworkReply* mNetworkReply;
static QNetworkAccessManager networkAccessManager;
#endif
#ifdef __EMSCRIPTEN__
static void onLoadCb(unsigned int handle, DownloadRequest* req, const char *buffer, unsigned int size);
static void onErrorCb(unsigned int handle, DownloadRequest* req, int errorCode, const char* errorText);
static void onProgressCb(unsigned int handle, DownloadRequest* req, int bytesReceived, int bytesTotal);
#endif
void processError(int errorCode, const char* errorText);
void processBufferDownloaded(unsigned int size, const char*buffer);
public:
DownloadRequest(string localPath="",

View File

@@ -31,7 +31,7 @@ typedef u32 LocalKeySym;
#elif defined(SDL_CONFIG)
#include <SDL.h>
typedef SDLKey LocalKeySym;
typedef SDL_Keycode LocalKeySym;
#define LOCAL_KEY_NONE SDLK_UNKNOWN
#elif defined(WIN32)

View File

@@ -16,7 +16,7 @@
#include <string.h>
#include <stdarg.h>
#if (!defined IOS) && (!defined ANDROID) && (!defined QT_CONFIG)
#if (!defined IOS) && (!defined ANDROID) && (!defined QT_CONFIG) && (!defined SDL_CONFIG)
#include <gif_lib.h>
#endif //IOS ANDROID
@@ -567,7 +567,7 @@ private:
#if (!defined IOS) && (!defined QT_CONFIG)
void LoadJPG(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT);
int LoadPNG(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT);
#if (!defined ANDROID) && (!defined QT_CONFIG)
#if (!defined ANDROID) && (!defined QT_CONFIG) && (!defined SDL_CONFIG)
void LoadGIF(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT);
int image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bgcolor, InputFunc readFunc,int mode = 0, int TextureFormat = TEXTURE_FORMAT);
#endif // (ANDROID) How can we get gif support for android ?

View File

@@ -42,9 +42,9 @@ private:
// convert the socket into non-blocking state
bool SetNonBlocking(int sock);
// socket handle
#ifdef WIN32
#if (defined WIN32) && (!defined __GNUG__)
SOCKET mfd;
#elif LINUX || PSP
#elif LINUX || PSP || __GNUG__
int mfd;
#endif
};

View File

@@ -18,20 +18,20 @@
#include "JTypes.h"
#ifdef ANDROID
#include <SLES/OpenSLES.h>
#include "SLES/OpenSLES_Android.h"
#elif defined USE_PHONON
#elif defined(USE_PHONON)
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
#elif (defined QT_CONFIG)
#elif defined (QT_CONFIG)
#include "QMediaPlayer"
#include "QMediaPlaylist"
#include "QSoundEffect"
#elif defined WIN32
#elif defined(WIN32)
#include <windows.h>
#define WITH_FMOD
//#define WITH_FMOD
#elif defined (PSP)
#include <pspgu.h>
#include <pspkernel.h>
@@ -48,7 +48,7 @@
#endif
#ifdef WITH_FMOD
#include "../Dependencies/include/fmod.h"
#include "fmod.h"
#endif
//------------------------------------------------------------------------------------------------
@@ -79,20 +79,26 @@ public slots:
std::string filename;
std::string key;
std::string ext;
void* mTrack;
#elif defined WITH_FMOD
FSOUND_SAMPLE* mTrack; // MP3 needed to be of "sample" type for FMOD, FMUSIC_MODULE is for MODs
void* mTrack;
#elif defined ANDROID
SLObjectItf playerObject;
SLPlayItf playInterface;
SLSeekItf seekInterface;
SLVolumeItf musicVolumeInterface;
void* mTrack;
#elif (defined QT_CONFIG)
QMediaPlaylist* playlist;
QMediaPlayer* player;
string fullpath;
#else
void* mTrack;
#endif //WITH_FMOD
void* mTrack;
#elif (defined WIN32)
std::string filename;
void* mTrack;
#endif
//#endif //WITH_FMOD
};
@@ -107,28 +113,30 @@ public:
unsigned long fileSize();
#if (defined QT_CONFIG) && (!defined USE_PHONON)
QMediaPlayer* effect;
void* mSample;
void* mSample;
#elif defined (PSP)
WAVDATA *mSample;
WAVDATA* mSample;
#elif defined (IOS)
std::string filename;
std::string key;
std::string ext;
void* mSample;
void* mSample;
#elif defined (WITH_FMOD)
FSOUND_SAMPLE *mSample;
#elif defined (USE_PHONON)
Phonon::AudioOutput* mOutput;
Phonon::MediaObject* mMediaObject;
void* mSample;
void* mSample;
#elif defined ANDROID
SLObjectItf playerObject;
SLPlayItf playInterface;
SLVolumeItf sampleVolumeInterface;
void* mSample;
void* mSample;
#elif (defined WIN32)
std::string filename;
void* mSample;
#else
void* mSample;
void* mSample;
#endif
};

View File

@@ -26,8 +26,16 @@
#include "JAudio.h"
#else
#include <stdint.h>
//#define __STDC_LIMIT_MACROS
#ifdef IOS
#include <tr1/cstdint>
#else
#include <cstdint>
#endif
//#include <stdint.h>
//the MSC version might only define _MSC_STDINT_H_
//and that might cause redefinition of standard types
//#define _STDINT_H_
#endif
@@ -104,6 +112,7 @@ enum {
#endif // CONSOLE_CONFIG
#if (defined WIN32) && (!defined LINUX)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#if defined(LINUX) && (!defined WIN32) || defined(IOS) || defined (ANDROID)
@@ -140,9 +149,14 @@ typedef uint32_t u32;
#include <GLES/gl.h>
#include <GLES/glext.h>
#elif defined (WIN32) || defined (LINUX)
#if defined(__APPLE__)
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
#include <GL/gl.h>
#include <GL/glu.h>
#endif
#endif
#else
#include <QtOpenGL>
#endif

View File

@@ -0,0 +1,29 @@
#ifndef PRECOMPILEDHEADER_H
#define PRECOMPILEDHEADER_H
#include <algorithm>
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include "DebugRoutines.h"
#include <assert.h>
#include "JGE.h"
#include "JFileSystem.h"
#include "JLogger.h"
//#ifndef WP8
//#include <boost/shared_ptr.hpp>
//#endif
#if defined (WP8) || defined (IOS) || defined (ANDROID) || defined (QT_CONFIG) || defined (SDL_CONFIG)
#define TOUCH_ENABLED
#endif
#endif //PRECOMPILEDHEADER_H

View File

@@ -1,7 +1,7 @@
#ifndef THREADING_H
#define THREADING_H
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L)
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L) && !(_MSC_VER >= 1700)
#include <boost/date_time.hpp>
#ifdef WIN32
@@ -537,7 +537,7 @@ namespace boost
}
}
#elif (__cplusplus > 199711L)
#elif (__cplusplus > 199711L) || (_MSC_VER >= 1700)
#include <thread>
#include <mutex>

View File

@@ -33,6 +33,7 @@ extern "C" {
#endif
void* vrelptr( void *ptr ); // make a pointer relative to memory base address (ATTENTION: A NULL rel ptr is not illegal/invalid!)
void* vabsptr( void *ptr ); // make a pointer absolute (default return type of valloc)
void* valloc( size_t size );

View File

@@ -7,6 +7,9 @@
#ifdef QT_CONFIG
QNetworkAccessManager DownloadRequest::networkAccessManager;
#endif
#ifdef __EMSCRIPTEN__
#include "emscripten.h"
#endif
DownloadRequest::DownloadRequest(string localPath,
string remoteResourceURL,
@@ -48,15 +51,71 @@ void DownloadRequest::startGet()
JFileSystem::GetInstance()->Remove(getTempLocalPath());
JFileSystem::GetInstance()->openForWrite(mFile, getTempLocalPath());
#ifdef QT_CONFIG
connect(mNetworkReply, SIGNAL(downloadProgress(qint64, qint64)),
SLOT(downloadProgress(qint64, qint64)));
connect(mNetworkReply, SIGNAL(downloadProgress(int64_t, int64_t)),
SLOT(downloadProgress(int64_t, int64_t)));
connect(mNetworkReply, SIGNAL(finished()), SLOT(fileDownloaded()));
#endif
#ifdef __EMSCRIPTEN__
emscripten_async_wget2_data(mRemoteResourceURL.c_str(), "GET", 0, this, 1,
(em_async_wget2_data_onload_func)DownloadRequest::onLoadCb,
(em_async_wget2_data_onerror_func)DownloadRequest::onErrorCb,
(em_async_wget2_data_onprogress_func)DownloadRequest::onProgressCb);
#endif
}
#ifdef __EMSCRIPTEN__
void DownloadRequest::onLoadCb(unsigned int handle, DownloadRequest* req, const char *buffer, unsigned int size)
{
DebugTrace("DownloadRequest::onLoadCb: " << size);
req->processBufferDownloaded(size, buffer);
Downloader::GetInstance()->Update();
}
void DownloadRequest::onErrorCb(unsigned int handle, DownloadRequest* req, int errorCode, const char* errorText)
{
DebugTrace("DownloadRequest::onErrorCb");
req->processError(errorCode, errorText);
Downloader::GetInstance()->Update();
}
void DownloadRequest::onProgressCb(unsigned int handle, DownloadRequest* req, int bytesReceived, int bytesTotal)
{
DebugTrace("DownloadRequest::onProgressCb");
req->DownloadRequest::downloadProgress(bytesReceived, bytesTotal);
}
#endif
void DownloadRequest::processError(int errorCode, const char* errorText)
{
DebugTrace(errorText);
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
mFile.close();
JFileSystem::GetInstance()->Remove(getTempLocalPath());
}
void DownloadRequest::processBufferDownloaded(unsigned int size, const char*buffer)
{
if(mFile.is_open())
{
mTotalSize = size;
mFile.write(buffer, size);
mFile.close();
if(!JFileSystem::GetInstance()->Rename(getTempLocalPath(), mLocalPath)) {
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
return;
}
}
mDownloadStatus = DownloadRequest::DOWNLOADED;
}
void DownloadRequest::fileDownloaded()
{
do {
#ifdef QT_CONFIG
do {
QByteArray eTagByteArray = mNetworkReply->rawHeader("ETag");
if(!eTagByteArray.isEmpty()) {
string oldETag = mETag;
@@ -67,10 +126,7 @@ void DownloadRequest::fileDownloaded()
// let's check some error
if(mNetworkReply->error() != QNetworkReply::NoError) {
DebugTrace(mNetworkReply->errorString().toStdString());
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
mFile.close();
JFileSystem::GetInstance()->Remove(getTempLocalPath());
processError((int)mNetworkReply->error(), mNetworkReply->errorString().toStdString().c_str());
break;
}
@@ -89,35 +145,31 @@ void DownloadRequest::fileDownloaded()
return;
}
if(mFile.is_open())
{
QByteArray byteArray = mNetworkReply->readAll();
mFile.write(byteArray.constData(), byteArray.size());
mFile.close();
if(!JFileSystem::GetInstance()->Rename(getTempLocalPath(), mLocalPath)) {
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
break;
}
}
mDownloadStatus = DownloadRequest::DOWNLOADED;
QByteArray byteArray = mNetworkReply->readAll();
processBufferDownloaded(byteArray.size(), byteArray.constData());
} while(0);
Downloader::GetInstance()->Update();
mNetworkReply->deleteLater();
mNetworkReply->deleteLater();
emit statusChanged((int)mDownloadStatus);
#endif
}
void DownloadRequest::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
void DownloadRequest::downloadProgress(int64_t bytesReceived, int64_t bytesTotal)
{
QByteArray byteArray = mNetworkReply->readAll();
#ifdef QT_CONFIG
QByteArray byteArray = mNetworkReply->readAll();
mFile.write(byteArray.constData(), byteArray.size());
#endif
mCurrentSize = bytesReceived;
mTotalSize = bytesTotal;
int percent = 0;
if(bytesTotal)
percent = (bytesReceived/bytesTotal)*100;
#ifdef QT_CONFIG
emit percentChanged(percent);
#endif
}
Downloader* Downloader::mInstance = 0;

View File

@@ -15,7 +15,7 @@
#include "../include/JSprite.h"
#include "../include/JAnimator.h"
#include "tinyxml/tinyxml.h"
#include "tinyxml.h"
//////////////////////////////////////////////////////////////////////////

View File

@@ -16,14 +16,7 @@ User folder is the only one that is really needed to guarantee both read and wri
The content that users should not be touching.
*/
#if defined (ANDROID)
#include "PrecompiledHeader.h"
#endif //ANDROID
#if defined (LINUX)
#include "../../projects/mtg/include/PrecompiledHeader.h"
#endif //LINUX
#include "dirent.h"
#ifdef WIN32
#pragma warning(disable : 4786)
@@ -37,7 +30,8 @@ The content that users should not be touching.
#include "../include/JGE.h"
#include "../include/JFileSystem.h"
#include "../include/JLogger.h"
#include <dirent.h>
#include "DebugRoutines.h"
#ifdef QT_CONFIG
#include <QDir>
@@ -130,6 +124,10 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
userPath = [[documentsDirectory stringByAppendingString: @"/User/"] cStringUsingEncoding:1];
systemPath = [[documentsDirectory stringByAppendingString: @"/Res/"] cStringUsingEncoding:1];
#elif defined (__EMSCRIPTEN__)
systemPath = "/";
DebugTrace("User path " << userPath);
DebugTrace("System path " << systemPath);
#elif defined (ANDROID)
userPath = JGE::GetInstance()->getFileUserFolderPath();
systemPath = JGE::GetInstance()->getFileSystemLocation();
@@ -146,9 +144,9 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
userPath = QDir::toNativeSeparators(dir.absolutePath()).toStdString();
systemPath = QDir::toNativeSeparators(sysDir.absolutePath()).toStdString();
DebugTrace("User path " << userPath);
DebugTrace("System path " << systemPath);
DebugTrace("Current path " << QDir::currentPath().toStdString());
DebugTrace("User path " + userPath);
DebugTrace("System path " + systemPath);
DebugTrace("Current path " + QDir::currentPath().toStdString());
#else
//Find the Res.txt file and matching Res folders for backwards compatibility
ifstream mfile("Res.txt");
@@ -304,6 +302,7 @@ void JFileSystem::DetachZipFile()
bool JFileSystem::openForRead(izfstream & File, const string & FilePath) {
DebugTrace("JFileSystem::openForRead " << FilePath);
File.open(FilePath.c_str(), mUserFS);
if (File)
return true;
@@ -414,7 +413,6 @@ bool JFileSystem::OpenFile(const string &filename)
mCurrentFileInZip = &(it2->second);
mFileSize = it2->second.m_Size;
return true;
}

View File

@@ -34,7 +34,7 @@
//////////////////////////////////////////////////////////////////////////
#if defined (WIN32) // WIN32 specific code
#include "../../Dependencies/include/fmod.h"
#include "fmod.h"
u8 JGE::GetAnalogX()
{
@@ -54,7 +54,7 @@ u8 JGE::GetAnalogY()
#elif defined (LINUX) // Unix specific code
#include <sys/time.h>
#ifdef WITH_FMOD
#include "../Dependencies/include/fmod.h"
#include "fmod.h"
#endif //WITH_FMOD

View File

@@ -10,6 +10,7 @@
#include <pspaudio.h>
#include <pspmp3.h>
#include <psputility.h>
#include <unistd.h>
#else
#define PSP_AUDIO_VOLUME_MAX 100

View File

@@ -42,7 +42,7 @@ bool JNetwork::isConnected(){
void JNetwork::getServerIp(string& aString)
{
#ifdef WIN32
#if (defined WIN32) && (!defined __GNUG__)
char ac[80];
if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) {
DebugTrace("Error " << WSAGetLastError() <<

View File

@@ -19,7 +19,7 @@
#include "../include/JFileSystem.h"
#include "../include/JResourceManager.h"
#include "tinyxml/tinyxml.h"
#include "tinyxml.h"
//-------------------------------------------------------------------------------------

View File

@@ -14,9 +14,9 @@
#include "../include/JResourceManager.h"
#include "../include/JFileSystem.h"
#include "../include/JLBFont.h"
#include "tinyxml/tinyxml.h"
#include "tinyxml.h"
#if defined (_DEBUG) && defined (WIN32) && (!defined LINUX)
#if defined (_DEBUG) && defined (WIN32) && (!defined LINUX) && (!defined __GNUG__)
#include "crtdbg.h"
#define NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#else

View File

@@ -13,7 +13,7 @@
#include "../include/JFileSystem.h"
#include "../include/JSpline.h"
#include "tinyxml/tinyxml.h"
#include "tinyxml.h"
#define SMALL_NUMBER 0.0001f

View File

@@ -19,7 +19,8 @@
*
*/
#include "../include/decoder_prx.h"
#include "decoder_prx.h"
#include <psputility.h>
char *prx_static_init()
{

View File

@@ -12,7 +12,7 @@
#if (!defined IOS) && (!defined QT_CONFIG)
#ifdef WIN32
#pragma warning(disable : 4786)
#pragma comment( lib, "giflib.lib" )
//#pragma comment( lib, "giflib.lib" )
#endif
#include <png.h>
@@ -35,7 +35,7 @@ extern "C" {
#include "../../include/JFileSystem.h"
#include "../../include/JAssert.h"
#if (defined WIN32) && (!defined QT_CONFIG)
#if (defined WIN32) && (!defined QT_CONFIG) && (!defined SDL_CONFIG)
#ifndef __attribute__
#define __attribute__((a))
#endif
@@ -1665,7 +1665,7 @@ static void jpeg_mem_src(j_decompress_ptr cinfo, byte *mem, int len)
cinfo->src->resync_to_restart = jpeg_resync_to_restart;
cinfo->src->term_source = jpg_null;
cinfo->src->bytes_in_buffer = len;
cinfo->src->next_input_byte = mem;
cinfo->src->next_input_byte = (const JOCTET*)mem;
}
/*
@@ -1702,7 +1702,7 @@ void JRenderer::LoadJPG(TextureInfo &textureInfo, const char *filename, int mode
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_mem_src(&cinfo, rawdata, rawsize);
jpeg_mem_src(&cinfo, (byte*)rawdata, rawsize);
// Process JPEG header
jpeg_read_header(&cinfo, true);
@@ -1740,7 +1740,7 @@ void JRenderer::LoadJPG(TextureInfo &textureInfo, const char *filename, int mode
// Pass sizes to output
// Allocate Scanline buffer
scanline = (byte *)malloc(cinfo.output_width * 3);
scanline = (BYTE *)malloc(cinfo.output_width * 3);
if(!scanline)
{
//// ri.Con_Printf(PRINT_ALL, "Insufficient RAM for JPEG scanline buffer\n");

View File

@@ -75,7 +75,7 @@ static int __largest_block = __MEM_BLOCKS;
static int __mem_free = __MEM_BLOCKS;
inline void* vrelptr( void *ptr )
void* vrelptr( void *ptr )
{
return (void*)((unsigned int)ptr & ~__MEM_START);
}

182
JGE/src/windows/JSfx.cpp Normal file
View File

@@ -0,0 +1,182 @@
#include <Windows.h>
#include <Mmsystem.h>
#include <mciapi.h>
//these two headers are already included in the <Windows.h> header
#pragma comment(lib, "Winmm.lib")
#include "DebugRoutines.h"
#include "../../include/JSoundSystem.h"
#include "../../include/JFileSystem.h"
//////////////////////////////////////////////////////////////////////////
JMusic::JMusic()
:
mTrack(0)
{
}
void JMusic::Update(){
}
int JMusic::getPlayTime(){
return 0;
}
JMusic::~JMusic()
{
}
//////////////////////////////////////////////////////////////////////////
JSample::JSample()
{
}
JSample::~JSample()
{
}
unsigned long JSample::fileSize()
{
return 0;
}
//////////////////////////////////////////////////////////////////////////
JSoundSystem* JSoundSystem::mInstance = NULL;
JSoundSystem* JSoundSystem::GetInstance()
{
if (mInstance == NULL)
{
mInstance = new JSoundSystem();
mInstance->InitSoundSystem();
}
return mInstance;
}
void JSoundSystem::Destroy()
{
if (mInstance)
{
mInstance->DestroySoundSystem();
delete mInstance;
mInstance = NULL;
}
}
JSoundSystem::JSoundSystem()
{
mVolume = 0;
mSampleVolume = 0;
}
JSoundSystem::~JSoundSystem()
{
}
void JSoundSystem::InitSoundSystem()
{
}
void JSoundSystem::DestroySoundSystem()
{
}
JMusic *JSoundSystem::LoadMusic(const char *fileName)
{
JMusic* music = NULL;
music = new JMusic();
if (music)
{
music->filename = JFileSystem::GetInstance()->GetResourceFile(fileName);
std::string aString = "open \"" + music->filename + "\" type mpegvideo alias mp3";
mciSendString(aString.c_str(), NULL, 0, NULL);
music->mTrack = (void*)-1;
}
return music;
}
void JSoundSystem::PlayMusic(JMusic *music, bool looping)
{
if (music && music->mTrack)
{
if(looping)
mciSendString("play mp3 repeat", NULL, 0, NULL);
else
mciSendString("play mp3", NULL, 0, NULL);
}
}
void JSoundSystem::StopMusic(JMusic *music)
{
if (music && music->mTrack)
{
mciSendString("stop mp3", NULL, 0, NULL);
}
}
void JSoundSystem::PauseMusic(JMusic *music)
{
if (music && music->mTrack)
{
mciSendString("pause mp3", NULL, 0, NULL);
}
}
void JSoundSystem::ResumeMusic(JMusic *music)
{
if (music && music->mTrack)
{
mciSendString("resume mp3", NULL, 0, NULL);
}
}
void JSoundSystem::SetVolume(int volume)
{
SetMusicVolume(volume);
SetSfxVolume(volume);
}
void JSoundSystem::SetMusicVolume(int volume)
{
mVolume = volume;
}
void JSoundSystem::SetSfxVolume(int volume)
{
mSampleVolume = volume;
SetMusicVolume(mVolume);
}
JSample *JSoundSystem::LoadSample(const char *fileName)
{
JSample* sample = NULL;
sample = new JSample();
if (sample)
{
sample->filename = JFileSystem::GetInstance()->GetResourceFile(fileName);
}
return sample;
}
void JSoundSystem::PlaySample(JSample *sample)
{
if(sample)
{
sndPlaySound(sample->filename.c_str(), SND_FILENAME | SND_ASYNC);
}
}

View File

@@ -1,28 +1,45 @@
#Wagic the Homebrew
# Wagic the Homebrew
[![Build Status](https://travis-ci.com/WagicProject/wagic.png?branch=master)](https://travis-ci.com/WagicProject/wagic)
[![Build Status](https://travis-ci.org/WagicProject/wagic.png?branch=master)](https://travis-ci.com/WagicProject/wagic)
[![Build status](https://ci.appveyor.com/api/projects/status/7j4fbr6m62aqej59/branch/master)](https://ci.appveyor.com/project/xawotihs/wagic/branch/master)
[![Coverage Status](https://coveralls.io/repos/WagicProject/wagic/badge.png?branch=master)](https://coveralls.io/r/WagicProject/wagic?branch=master)
## Description
Wagic, the Homebrew, is a C++ game engine that allows to play card games against an AI on
**Wagic, the Homebrew** is a C++ game engine that allows to play card games against an AI on:
- Android (phones and tablets)
- iOS (iPhone/iPad)
- Sony PSP
- Windows desktops
- MacOS
- Linux and derivated like Maemo or Meego
- Linux and derivatives like Maemo or Meego
It is highly customizable and allows the player to tweak the rules / create their own cards, their own themes, etc...
It is highly customizable and allows the player to tweak the rules, create their own cards, their own themes, etc...
#### [Download from GitHub Releases!](https://github.com/WagicProject/wagic/releases)
![Screenshot of shop from wololo.net](docs/img/shop.jpg)
Info, downloads, discussions and more at http://wololo.net/forum/index.php
### Documentation
![alt text](http://wololo.net/wagic/wp-content/uploads/2009/10/shop.jpg "Screenshot")
Info, downloads, discussions and more at http://wololo.net/forum/index.php (archived as of 16 Nov 2022).
Chat with the community on the [**Wagic - MTG Game** Discord](https://discord.com/invite/JHK5pVaK5p) (Feb 2023).
Developer information from the [Wagic Wiki](https://github.com/WagicProject/wagic/wiki) is also included in the [wagic/docs/](docs) folder.
### Sample round play-through video
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/WUFSAPZuDIk/0.jpg)](http://www.youtube.com/watch?v=WUFSAPZuDIk)
[![Wagic, The Homebrew sample playthrough](docs/img/Wagic%2C%20The%20Homebrew%20sample%20playthrough.jpg)](http://www.youtube.com/watch?v=WUFSAPZuDIk)
*Wagic, The Homebrew sample playthrough on YouTube by Rolz73, 6 Feb 2014*
## Sister projects
- [WagicSyntaxPlugin
](https://github.com/Vitty85/WagicSyntaxPlugin), a Wagic developer tool by Vitty85 for [Notepad++](https://notepad-plus-plus.org/downloads/)
- [Forge](https://www.slightlymagic.net/forum/viewforum.php?f=26), a Java-based game engine similar to Wagic ([Source](https://github.com/Card-Forge/forge/))
- [XMage](http://xmage.today/), a Java-based online multiplayer digital CCG ([Source](https://github.com/magefree/mage))

View File

@@ -17,15 +17,20 @@ skip_tags: true
#---------------------------------#
environment:
DXSDK_DIR: "C:/Program Files (x86)/Microsoft DirectX SDK/"
GH_TOKEN:
secure: dYnBDQkiY5oVjIlswzBX9BJigNtBGXgGlp1tK3XbHzrDEDrs2vaKD5m+Oz5OSz1C
# scripts that run after cloning repository
install:
- ps: (new-object net.webclient).DownloadFile('https://bootstrap.pypa.io/get-pip.py', 'C:/get-pip.py')
- "C:/Python27/python.exe C:/get-pip.py"
- powershell -Command "& {(new-object net.webclient).DownloadFile('https://bootstrap.pypa.io/get-pip.py', 'C:/get-pip.py')}"
- powershell -Command "& {C:/Python27/python.exe C:/get-pip.py}"
- "C:/Python27/Scripts/pip.exe install pyjavaproperties"
- "C:/Python27/Scripts/pip.exe install github3.py"
- git submodule update --init --recursive
- cd thirdparty/SDL2
# - git checkout release-2.0.3
- cd ../..
#---------------------------------#
# build configuration #
@@ -34,8 +39,16 @@ install:
# build Configuration, i.e. Debug, Release, etc.
configuration: Release
# scripts to run before build
before_build:
- echo Running cmake...
- mkdir build
- cd build
- cmake -Dbackend_sdl=ON ..
- cd ..
build:
project: projects/mtg/mtg_vs2010.sln # path to Visual Studio solution or project
project: build/wagic.sln # path to Visual Studio solution or project
#---------------------------------#
# tests configuration #
@@ -61,7 +74,7 @@ artifacts:
# scripts to run before deployment
before_deploy:
- cd projects/mtg/bin
- "C:/Python27/python.exe createWindowsZip.py"
- "C:/Python27/python.exe createWindowsZip.py -b ../../../build"
- cd ../../..
# scripts to run after deployment

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/img/shop.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

1
docs/wiki Submodule

Submodule docs/wiki added at 0244ca1874

View File

@@ -0,0 +1,3 @@
add_definitions(-DANDROID -DLINUX)
add_definitions(-D_STLP_USE_SIMPLE_NODE_ALLOC -D__arm__ -D_REENTRANT -D_GLIBCXX__PTHREADS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="0192" android:versionName="@string/app_version" package="net.wagic.app">
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:label="@string/app_name" android:name="org.libsdl.app.SDLActivity" android:screenOrientation="sensorLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:name="com.google.ads.AdActivity" android:screenOrientation="sensorLandscape"/>
</application>
<uses-sdk android:minSdkVersion="@ANDROID_NATIVE_API_LEVEL@" android:targetSdkVersion="@ANDROID_NATIVE_API_LEVEL@"/>
</manifest>

View File

@@ -0,0 +1,121 @@
if(NOT ANDROID_PACKAGE_RELEASE)
set(ANDROID_PACKAGE_RELEASE 1)
endif()
if(NOT ANDROID_PACKAGE_PLATFORM)
if(ARMEABI_V7A)
if(NEON)
set(ANDROID_PACKAGE_PLATFORM armv7a_neon)
else()
set(ANDROID_PACKAGE_PLATFORM armv7a)
endif()
elseif(ARMEABI_V6)
set(ANDROID_PACKAGE_PLATFORM armv6)
elseif(ARMEABI)
set(ANDROID_PACKAGE_PLATFORM armv5)
elseif(X86)
set(ANDROID_PACKAGE_PLATFORM x86)
elseif(MIPS)
set(ANDROID_PACKAGE_PLATFORM mips)
else()
message(ERROR "Can not automatically determine the value for ANDROID_PACKAGE_PLATFORM")
endif()
endif()
if(NOT ANDROID_PACKAGE_PLATFORM_NAME)
if(ARMEABI_V7A)
if(NEON)
set(ANDROID_PACKAGE_PLATFORM_NAME "armeabi-v7a with NEON")
else()
set(ANDROID_PACKAGE_PLATFORM_NAME "armeabi-v7a")
endif()
elseif(ARMEABI_V6)
set(ANDROID_PACKAGE_PLATFORM_NAME "armeabi-v6")
elseif(ARMEABI)
set(ANDROID_PACKAGE_PLATFORM_NAME "armeabi")
elseif(X86)
set(ANDROID_PACKAGE_PLATFORM_NAME "x86")
elseif(MIPS)
set(ANDROID_PACKAGE_PLATFORM_NAME "mips")
else()
message(ERROR "Can not automatically determine the value for ANDROID_PACKAGE_PLATFORM_NAME")
endif()
endif()
if("${ANDROID_NATIVE_API_LEVEL}" MATCHES "[1-9][0-9]*$")
set(ANDROID_SDK_VERSION ${CMAKE_MATCH_0})
endif()
if(NOT ANDROID_SDK_VERSION GREATER 7)
set(ANDROID_SDK_VERSION 8)
endif()
set(PACKAGE_DIR "${CMAKE_BINARY_DIR}/package")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml"
"${PACKAGE_DIR}/AndroidManifest.xml" @ONLY)
#configure_file("${CMAKE_CURRENT_SOURCE_DIR}/build.xml"
# "${PACKAGE_DIR}/build.xml" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml"
"${PACKAGE_DIR}/res/values/strings.xml" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/drawable-hdpi/icon.png"
"${PACKAGE_DIR}/res/drawable-hdpi/icon.png" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/drawable-ldpi/icon.png"
"${PACKAGE_DIR}/res/drawable-ldpi/icon.png" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/drawable-mdpi/icon.png"
"${PACKAGE_DIR}/res/drawable-mdpi/icon.png" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/layout/main.xml"
"${PACKAGE_DIR}/res/layout/main.xml" COPYONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/assets/_keystore/wagic-release.keystore"
"${PACKAGE_DIR}/assets/_keystore/wagic-release.keystore" COPYONLY)
string( REGEX MATCH "[0-9]+" ANDROID_NATIVE_API_LEVEL_NUMBER "${ANDROID_NATIVE_API_LEVEL}" )
set(target_name "Wagic_${WAGIC_VERSION}_binary_pack_${ANDROID_PACKAGE_PLATFORM}")
get_target_property(wagic_location wagic LOCATION)
string(TOLOWER ${CMAKE_BUILD_TYPE} android_build_type)
set(android_proj_target_files ${ANDROID_PROJECT_FILES})
list_add_prefix(android_proj_target_files "${PACKAGE_DIR}/")
set(APK_NAME "${PACKAGE_DIR}/bin/${target_name}-${android_build_type}-unsigned.apk")
file(GLOB camera_wrappers "${OpenCV_SOURCE_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}/libnative_camera_r*.so")
set(CAMERA_LIB_COMMANDS "")
foreach(wrapper ${camera_wrappers})
list(APPEND CAMERA_LIB_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${wrapper}" "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/")
endforeach()
add_custom_command(
OUTPUT "${APK_NAME}"
COMMAND ${CMAKE_COMMAND} -E remove_directory "${PACKAGE_DIR}/libs"
COMMAND ${CMAKE_COMMAND} -E remove_directory "${PACKAGE_DIR}/bin"
COMMAND ${CMAKE_COMMAND} -E remove_directory "${PACKAGE_DIR}/gen"
COMMAND ${CMAKE_COMMAND} -E remove ${android_proj_target_files}
COMMAND ${CMAKE_COMMAND} -E make_directory "${PACKAGE_DIR}/src"
COMMAND ${CMAKE_COMMAND} -E make_directory "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
# COMMAND ${CMAKE_COMMAND} -E copy "${SDL2_LIBRARY}" "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
# COMMAND ${CMAKE_COMMAND} -E copy "${ZLIB_LIBRARY}" "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
# COMMAND ${CMAKE_COMMAND} -E copy "${OPENSL_LIBRARY}" "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
COMMAND ${CMAKE_COMMAND} -E copy "${wagic_location}" "${PACKAGE_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/src" "${PACKAGE_DIR}/src"
# COMMAND ${ANDROID_EXECUTABLE} --silent update project --path "${PACKAGE_DIR}" --target "android-${ANDROID_NATIVE_API_LEVEL}" --name "${target_name}"
COMMAND ${ANDROID_EXECUTABLE} --silent update project --path "${PACKAGE_DIR}" --target "android-10" --name "${target_name}"
COMMAND ${ANT_EXECUTABLE} -noinput -k ${android_build_type}
COMMAND ${CMAKE_COMMAND} -E touch "${APK_NAME}"
WORKING_DIRECTORY "${PACKAGE_DIR}"
MAIN_DEPENDENCY "${PACKAGE_DIR}/${ANDROID_MANIFEST_FILE}"
DEPENDS
"${PACKAGE_DIR}/res/values/strings.xml"
"${PACKAGE_DIR}/res/layout/main.xml"
"${PACKAGE_DIR}/res/drawable-mdpi/icon.png"
"${PACKAGE_DIR}/res/drawable-ldpi/icon.png"
"${PACKAGE_DIR}/res/drawable-hdpi/icon.png"
"${PACKAGE_DIR}/${ANDROID_MANIFEST_FILE}"
wagic
)
install(FILES "${APK_NAME}" DESTINATION "apk/" COMPONENT main)
add_custom_target(android_package ALL SOURCES "${APK_NAME}" )
add_dependencies(android_package wagic)

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Wagic"
/>
</LinearLayout>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Wagic</string>
<string name="app_version">0.19.2</string>
<string name="info_text">Wagic v0.19.2\\nAll Rights Reserved.</string>
</resources>

View File

@@ -0,0 +1,174 @@
package net.wagic.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import android.os.Environment;
import android.util.Log;
public class StorageOptions
{
private static ArrayList<String> mMounts = new ArrayList<String>();
private static ArrayList<String> mVold = new ArrayList<String>();
public static String[] labels;
public static String[] paths;
public static int count = 0;
public static String defaultMountPoint;
public static void determineStorageOptions()
{
initializeMountPoints();
readMountsFile();
readVoldFile();
compareMountsWithVold();
testAndCleanMountsList();
setProperties();
}
private static void initializeMountPoints()
{
try
{
defaultMountPoint = Environment.getExternalStorageDirectory().getCanonicalPath();
} catch (Exception ioEx)
{
// an error occurred trying to get the canonical path, use '/mnt/sdcard' instead
defaultMountPoint = "/mnt/sdcard";
}
}
private static void readMountsFile()
{
/*
* Scan the /proc/mounts file and look for lines like this: /dev/block/vold/179:1 /mnt/sdcard vfat
* rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
*
* When one is found, split it into its elements and then pull out the path to the that mount point and add it to the arraylist
*/
try
{
Scanner scanner = new Scanner(new File("/proc/mounts"));
while (scanner.hasNext())
{
String line = scanner.nextLine();
if (line.startsWith("/dev/block/vold/"))
{
String[] lineElements = line.split(" ");
lineElements[1].replaceAll(":.*$", "");
mMounts.add(lineElements[1]);
}
}
} catch (FileNotFoundException fnfex)
{
// if proc/mount doesn't exist we just use
Log.i(StorageOptions.class.getCanonicalName(), fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
mMounts.add(defaultMountPoint);
} catch (Exception e)
{
Log.e(StorageOptions.class.getCanonicalName(), e.getMessage() + ": unknown exception while reading mounts file");
mMounts.add(defaultMountPoint);
}
}
private static void readVoldFile()
{
/*
* Scan the /system/etc/vold.fstab file and look for lines like this: dev_mount sdcard /mnt/sdcard 1 /devices/platform/s3c-sdhci.0/mmc_host/mmc0
*
* When one is found, split it into its elements and then pull out the path to the that mount point and add it to the arraylist
*/
try
{
Scanner scanner = new Scanner(new File("/system/etc/vold.fstab"));
while (scanner.hasNext())
{
String line = scanner.nextLine();
if (line.startsWith("dev_mount"))
{
String[] lineElements = line.split(" ");
lineElements[2] = lineElements[2].replaceAll(":.*$", "");
mVold.add(lineElements[2]);
}
}
} catch (FileNotFoundException fnfex)
{
// if vold.fstab doesn't exist we use the value gathered from the Environment
Log.i(StorageOptions.class.getCanonicalName(), fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
mMounts.add(defaultMountPoint);
} catch (Exception e)
{
Log.e(StorageOptions.class.getCanonicalName(), e.getMessage() + ": unknown exception while reading mounts file");
mMounts.add(defaultMountPoint);
}
}
private static void compareMountsWithVold()
{
/*
* Sometimes the two lists of mount points will be different. We only want those mount points that are in both list.
*
* Compare the two lists together and remove items that are not in both lists.
*/
for (int i = 0; i < mMounts.size(); i++)
{
String mount = mMounts.get(i);
if (!mVold.contains(mount))
mMounts.remove(i--);
}
// don't need this anymore, clear the vold list to reduce memory
// use and to prepare it for the next time it's needed.
mVold.clear();
}
private static void testAndCleanMountsList()
{
/*
* Now that we have a cleaned list of mount paths Test each one to make sure it's a valid and available path. If it is not, remove it from the list.
*/
for (int i = 0; i < mMounts.size(); i++)
{
String mount = mMounts.get(i);
File root = new File(mount);
if (!root.exists() || !root.isDirectory() || !root.canWrite())
mMounts.remove(i--);
}
}
private static void setProperties()
{
/*
* At this point all the paths in the list should be valid. Build the public properties.
*/
ArrayList<String> mLabels = new ArrayList<String>();
int i = 1;
for (String path : mMounts)
{ // TODO: /mnt/sdcard is assumed to always mean internal storage. Use this comparison until there is a better way to do this
if ("/mnt/sdcard".equalsIgnoreCase(path))
mLabels.add("Built-in Storage");
else
mLabels.add("External SD Card " + i++);
}
labels = new String[mLabels.size()];
mLabels.toArray(labels);
paths = new String[mMounts.size()];
mMounts.toArray(paths);
count = Math.min(labels.length, paths.length);
// don't need this anymore, clear the mounts list to reduce memory
// use and to prepare it for the next time it's needed.
mMounts.clear();
}
}

View File

@@ -0,0 +1,771 @@
package org.libsdl.app;
import java.util.Arrays;
import android.app.*;
import android.content.*;
import android.view.*;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsoluteLayout;
import android.os.*;
import android.util.Log;
import android.graphics.*;
import android.media.*;
import android.hardware.*;
/**
SDL Activity
*/
public class SDLActivity extends Activity {
private static final String TAG = "SDL";
// Keep track of the paused state
public static boolean mIsPaused = false, mIsSurfaceReady = false, mHasFocus = true;
// Main components
protected static SDLActivity mSingleton;
protected static SDLSurface mSurface;
protected static View mTextEdit;
protected static ViewGroup mLayout;
// This is what SDL runs in. It invokes SDL_main(), eventually
protected static Thread mSDLThread;
// Audio
protected static Thread mAudioThread;
protected static AudioTrack mAudioTrack;
// Load the .so
static {
System.loadLibrary("SDL2");
//System.loadLibrary("SDL2_image");
//System.loadLibrary("SDL2_mixer");
//System.loadLibrary("SDL2_net");
//System.loadLibrary("SDL2_ttf");
System.loadLibrary("wagic");
}
// Setup
@Override
protected void onCreate(Bundle savedInstanceState) {
//Log.v("SDL", "onCreate()");
super.onCreate(savedInstanceState);
// So we can call stuff from static callbacks
mSingleton = this;
// Set up the surface
mSurface = new SDLSurface(getApplication());
mLayout = new AbsoluteLayout(this);
mLayout.addView(mSurface);
setContentView(mLayout);
}
// Events
@Override
protected void onPause() {
Log.v("SDL", "onPause()");
super.onPause();
SDLActivity.handlePause();
}
@Override
protected void onResume() {
Log.v("SDL", "onResume()");
super.onResume();
SDLActivity.handleResume();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.v("SDL", "onWindowFocusChanged(): " + hasFocus);
SDLActivity.mHasFocus = hasFocus;
if (hasFocus) {
SDLActivity.handleResume();
}
}
@Override
public void onLowMemory() {
Log.v("SDL", "onLowMemory()");
super.onLowMemory();
SDLActivity.nativeLowMemory();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("SDL", "onDestroy()");
// Send a quit message to the application
SDLActivity.nativeQuit();
// Now wait for the SDL thread to quit
if (mSDLThread != null) {
try {
mSDLThread.join();
} catch(Exception e) {
Log.v("SDL", "Problem stopping thread: " + e);
}
mSDLThread = null;
//Log.v("SDL", "Finished waiting for SDL thread");
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
// Ignore certain special keys so they're handled by Android
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
keyCode == KeyEvent.KEYCODE_VOLUME_UP ||
keyCode == KeyEvent.KEYCODE_CAMERA ||
keyCode == 168 || /* API 11: KeyEvent.KEYCODE_ZOOM_IN */
keyCode == 169 /* API 11: KeyEvent.KEYCODE_ZOOM_OUT */
) {
return false;
}
return super.dispatchKeyEvent(event);
}
/** Called by onPause or surfaceDestroyed. Even if surfaceDestroyed
* is the first to be called, mIsSurfaceReady should still be set
* to 'true' during the call to onPause (in a usual scenario).
*/
public static void handlePause() {
if (!SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady) {
SDLActivity.mIsPaused = true;
SDLActivity.nativePause();
mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, false);
}
}
/** Called by onResume or surfaceCreated. An actual resume should be done only when the surface is ready.
* Note: Some Android variants may send multiple surfaceChanged events, so we don't need to resume
* every time we get one of those events, only if it comes after surfaceDestroyed
*/
public static void handleResume() {
if (SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady && SDLActivity.mHasFocus) {
SDLActivity.mIsPaused = false;
SDLActivity.nativeResume();
mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true);
}
}
// Messages from the SDLMain thread
static final int COMMAND_CHANGE_TITLE = 1;
static final int COMMAND_UNUSED = 2;
static final int COMMAND_TEXTEDIT_HIDE = 3;
protected static final int COMMAND_USER = 0x8000;
/**
* This method is called by SDL if SDL did not handle a message itself.
* This happens if a received message contains an unsupported command.
* Method can be overwritten to handle Messages in a different class.
* @param command the command of the message.
* @param param the parameter of the message. May be null.
* @return if the message was handled in overridden method.
*/
protected boolean onUnhandledMessage(int command, Object param) {
return false;
}
/**
* A Handler class for Messages from native SDL applications.
* It uses current Activities as target (e.g. for the title).
* static to prevent implicit references to enclosing object.
*/
protected static class SDLCommandHandler extends Handler {
@Override
public void handleMessage(Message msg) {
Context context = getContext();
if (context == null) {
Log.e(TAG, "error handling message, getContext() returned null");
return;
}
switch (msg.arg1) {
case COMMAND_CHANGE_TITLE:
if (context instanceof Activity) {
((Activity) context).setTitle((String)msg.obj);
} else {
Log.e(TAG, "error handling message, getContext() returned no Activity");
}
break;
case COMMAND_TEXTEDIT_HIDE:
if (mTextEdit != null) {
mTextEdit.setVisibility(View.GONE);
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
}
break;
default:
if ((context instanceof SDLActivity) && !((SDLActivity) context).onUnhandledMessage(msg.arg1, msg.obj)) {
Log.e(TAG, "error handling message, command is " + msg.arg1);
}
}
}
}
// Handler for the messages
Handler commandHandler = new SDLCommandHandler();
// Send a message from the SDLMain thread
boolean sendCommand(int command, Object data) {
Message msg = commandHandler.obtainMessage();
msg.arg1 = command;
msg.obj = data;
return commandHandler.sendMessage(msg);
}
// C functions we call
public static native void nativeInit();
public static native void nativeLowMemory();
public static native void nativeQuit();
public static native void nativePause();
public static native void nativeResume();
public static native void onNativeResize(int x, int y, int format);
public static native void onNativeKeyDown(int keycode);
public static native void onNativeKeyUp(int keycode);
public static native void onNativeKeyboardFocusLost();
public static native void onNativeTouch(int touchDevId, int pointerFingerId,
int action, float x,
float y, float p);
public static native void onNativeAccel(float x, float y, float z);
public static native void onNativeSurfaceChanged();
public static native void onNativeSurfaceDestroyed();
public static native void nativeFlipBuffers();
public static void flipBuffers() {
SDLActivity.nativeFlipBuffers();
}
public static boolean setActivityTitle(String title) {
// Called from SDLMain() thread and can't directly affect the view
return mSingleton.sendCommand(COMMAND_CHANGE_TITLE, title);
}
public static boolean sendMessage(int command, int param) {
return mSingleton.sendCommand(command, Integer.valueOf(param));
}
public static Context getContext() {
return mSingleton;
}
static class ShowTextInputTask implements Runnable {
/*
* This is used to regulate the pan&scan method to have some offset from
* the bottom edge of the input region and the top edge of an input
* method (soft keyboard)
*/
static final int HEIGHT_PADDING = 15;
public int x, y, w, h;
public ShowTextInputTask(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
@Override
public void run() {
AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(
w, h + HEIGHT_PADDING, x, y);
if (mTextEdit == null) {
mTextEdit = new DummyEdit(getContext());
mLayout.addView(mTextEdit, params);
} else {
mTextEdit.setLayoutParams(params);
}
mTextEdit.setVisibility(View.VISIBLE);
mTextEdit.requestFocus();
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mTextEdit, 0);
}
}
public static boolean showTextInput(int x, int y, int w, int h) {
// Transfer the task to the main thread as a Runnable
return mSingleton.commandHandler.post(new ShowTextInputTask(x, y, w, h));
}
public static Surface getNativeSurface() {
return SDLActivity.mSurface.getNativeSurface();
}
// Audio
public static int audioInit(int sampleRate, boolean is16Bit, boolean isStereo, int desiredFrames) {
int channelConfig = isStereo ? AudioFormat.CHANNEL_CONFIGURATION_STEREO : AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT;
int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1);
Log.v("SDL", "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + (sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer");
// Let the user pick a larger buffer if they really want -- but ye
// gods they probably shouldn't, the minimums are horrifyingly high
// latency already
desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize);
if (mAudioTrack == null) {
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate,
channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
// Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid
// Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java
// Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState()
if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) {
Log.e("SDL", "Failed during initialization of Audio Track");
mAudioTrack = null;
return -1;
}
mAudioTrack.play();
}
Log.v("SDL", "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + (mAudioTrack.getSampleRate() / 1000f) + "kHz, " + desiredFrames + " frames buffer");
return 0;
}
public static void audioWriteShortBuffer(short[] buffer) {
for (int i = 0; i < buffer.length; ) {
int result = mAudioTrack.write(buffer, i, buffer.length - i);
if (result > 0) {
i += result;
} else if (result == 0) {
try {
Thread.sleep(1);
} catch(InterruptedException e) {
// Nom nom
}
} else {
Log.w("SDL", "SDL audio: error return from write(short)");
return;
}
}
}
public static void audioWriteByteBuffer(byte[] buffer) {
for (int i = 0; i < buffer.length; ) {
int result = mAudioTrack.write(buffer, i, buffer.length - i);
if (result > 0) {
i += result;
} else if (result == 0) {
try {
Thread.sleep(1);
} catch(InterruptedException e) {
// Nom nom
}
} else {
Log.w("SDL", "SDL audio: error return from write(byte)");
return;
}
}
}
public static void audioQuit() {
if (mAudioTrack != null) {
mAudioTrack.stop();
mAudioTrack = null;
}
}
// Input
/**
* @return an array which may be empty but is never null.
*/
public static int[] inputGetInputDeviceIds(int sources) {
int[] ids = InputDevice.getDeviceIds();
int[] filtered = new int[ids.length];
int used = 0;
for (int i = 0; i < ids.length; ++i) {
InputDevice device = InputDevice.getDevice(ids[i]);
if ((device != null) && ((device.getSources() & sources) != 0)) {
filtered[used++] = device.getId();
}
}
return Arrays.copyOf(filtered, used);
}
}
/**
Simple nativeInit() runnable
*/
class SDLMain implements Runnable {
@Override
public void run() {
// Runs SDL_main()
SDLActivity.nativeInit();
//Log.v("SDL", "SDL thread terminated");
}
}
/**
SDLSurface. This is what we draw on, so we need to know when it's created
in order to do anything useful.
Because of this, that's where we set up the SDL thread
*/
class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
View.OnKeyListener, View.OnTouchListener, SensorEventListener {
// Sensors
protected static SensorManager mSensorManager;
protected static Display mDisplay;
// Keep track of the surface size to normalize touch events
protected static float mWidth, mHeight;
// Startup
public SDLSurface(Context context) {
super(context);
getHolder().addCallback(this);
setFocusable(true);
setFocusableInTouchMode(true);
requestFocus();
setOnKeyListener(this);
setOnTouchListener(this);
mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
// Some arbitrary defaults to avoid a potential division by zero
mWidth = 1.0f;
mHeight = 1.0f;
}
public Surface getNativeSurface() {
return getHolder().getSurface();
}
// Called when we have a valid drawing surface
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.v("SDL", "surfaceCreated()");
holder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
}
// Called when we lose the surface
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.v("SDL", "surfaceDestroyed()");
// Call this *before* setting mIsSurfaceReady to 'false'
SDLActivity.handlePause();
SDLActivity.mIsSurfaceReady = false;
SDLActivity.onNativeSurfaceDestroyed();
}
// Called when the surface is resized
@Override
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {
Log.v("SDL", "surfaceChanged()");
int sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565 by default
switch (format) {
case PixelFormat.A_8:
Log.v("SDL", "pixel format A_8");
break;
case PixelFormat.LA_88:
Log.v("SDL", "pixel format LA_88");
break;
case PixelFormat.L_8:
Log.v("SDL", "pixel format L_8");
break;
case PixelFormat.RGBA_4444:
Log.v("SDL", "pixel format RGBA_4444");
sdlFormat = 0x15421002; // SDL_PIXELFORMAT_RGBA4444
break;
case PixelFormat.RGBA_5551:
Log.v("SDL", "pixel format RGBA_5551");
sdlFormat = 0x15441002; // SDL_PIXELFORMAT_RGBA5551
break;
case PixelFormat.RGBA_8888:
Log.v("SDL", "pixel format RGBA_8888");
sdlFormat = 0x16462004; // SDL_PIXELFORMAT_RGBA8888
break;
case PixelFormat.RGBX_8888:
Log.v("SDL", "pixel format RGBX_8888");
sdlFormat = 0x16261804; // SDL_PIXELFORMAT_RGBX8888
break;
case PixelFormat.RGB_332:
Log.v("SDL", "pixel format RGB_332");
sdlFormat = 0x14110801; // SDL_PIXELFORMAT_RGB332
break;
case PixelFormat.RGB_565:
Log.v("SDL", "pixel format RGB_565");
sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565
break;
case PixelFormat.RGB_888:
Log.v("SDL", "pixel format RGB_888");
// Not sure this is right, maybe SDL_PIXELFORMAT_RGB24 instead?
sdlFormat = 0x16161804; // SDL_PIXELFORMAT_RGB888
break;
default:
Log.v("SDL", "pixel format unknown " + format);
break;
}
mWidth = width;
mHeight = height;
SDLActivity.onNativeResize(width, height, sdlFormat);
Log.v("SDL", "Window size:" + width + "x"+height);
// Set mIsSurfaceReady to 'true' *before* making a call to handleResume
SDLActivity.mIsSurfaceReady = true;
SDLActivity.onNativeSurfaceChanged();
if (SDLActivity.mSDLThread == null) {
// This is the entry point to the C app.
// Start up the C app thread and enable sensor input for the first time
SDLActivity.mSDLThread = new Thread(new SDLMain(), "SDLThread");
enableSensor(Sensor.TYPE_ACCELEROMETER, true);
SDLActivity.mSDLThread.start();
}
}
// unused
@Override
public void onDraw(Canvas canvas) {}
// Key events
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//Log.v("SDL", "key down: " + keyCode);
SDLActivity.onNativeKeyDown(keyCode);
return true;
}
else if (event.getAction() == KeyEvent.ACTION_UP) {
//Log.v("SDL", "key up: " + keyCode);
SDLActivity.onNativeKeyUp(keyCode);
return true;
}
return false;
}
// Touch events
@Override
public boolean onTouch(View v, MotionEvent event) {
final int touchDevId = event.getDeviceId();
final int pointerCount = event.getPointerCount();
// touchId, pointerId, action, x, y, pressure
int actionPointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; /* API 8: event.getActionIndex(); */
int pointerFingerId = event.getPointerId(actionPointerIndex);
int action = (event.getAction() & MotionEvent.ACTION_MASK); /* API 8: event.getActionMasked(); */
float x = event.getX(actionPointerIndex) / mWidth;
float y = event.getY(actionPointerIndex) / mHeight;
float p = event.getPressure(actionPointerIndex);
if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) {
// TODO send motion to every pointer if its position has
// changed since prev event.
for (int i = 0; i < pointerCount; i++) {
pointerFingerId = event.getPointerId(i);
x = event.getX(i) / mWidth;
y = event.getY(i) / mHeight;
p = event.getPressure(i);
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
}
} else {
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
}
return true;
}
// Sensor events
public void enableSensor(int sensortype, boolean enabled) {
// TODO: This uses getDefaultSensor - what if we have >1 accels?
if (enabled) {
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(sensortype),
SensorManager.SENSOR_DELAY_GAME, null);
} else {
mSensorManager.unregisterListener(this,
mSensorManager.getDefaultSensor(sensortype));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float x, y;
switch (mDisplay.getRotation()) {
case Surface.ROTATION_90:
x = -event.values[1];
y = event.values[0];
break;
case Surface.ROTATION_270:
x = event.values[1];
y = -event.values[0];
break;
case Surface.ROTATION_180:
x = -event.values[1];
y = -event.values[0];
break;
default:
x = event.values[0];
y = event.values[1];
break;
}
SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
y / SensorManager.GRAVITY_EARTH,
event.values[2] / SensorManager.GRAVITY_EARTH - 1);
}
}
}
/* This is a fake invisible editor view that receives the input and defines the
* pan&scan region
*/
class DummyEdit extends View implements View.OnKeyListener {
InputConnection ic;
public DummyEdit(Context context) {
super(context);
setFocusableInTouchMode(true);
setFocusable(true);
setOnKeyListener(this);
}
@Override
public boolean onCheckIsTextEditor() {
return true;
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// This handles the hardware keyboard input
if (event.isPrintingKey()) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1);
}
return true;
}
if (event.getAction() == KeyEvent.ACTION_DOWN) {
SDLActivity.onNativeKeyDown(keyCode);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
SDLActivity.onNativeKeyUp(keyCode);
return true;
}
return false;
}
//
@Override
public boolean onKeyPreIme (int keyCode, KeyEvent event) {
// As seen on StackOverflow: http://stackoverflow.com/questions/7634346/keyboard-hide-event
// FIXME: Discussion at http://bugzilla.libsdl.org/show_bug.cgi?id=1639
// FIXME: This is not a 100% effective solution to the problem of detecting if the keyboard is showing or not
// FIXME: A more effective solution would be to change our Layout from AbsoluteLayout to Relative or Linear
// FIXME: And determine the keyboard presence doing this: http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android
// FIXME: An even more effective way would be if Android provided this out of the box, but where would the fun be in that :)
if (event.getAction()==KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
if (SDLActivity.mTextEdit != null && SDLActivity.mTextEdit.getVisibility() == View.VISIBLE) {
SDLActivity.onNativeKeyboardFocusLost();
}
}
return super.onKeyPreIme(keyCode, event);
}
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
ic = new SDLInputConnection(this, true);
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
| 33554432 /* API 11: EditorInfo.IME_FLAG_NO_FULLSCREEN */;
return ic;
}
}
class SDLInputConnection extends BaseInputConnection {
public SDLInputConnection(View targetView, boolean fullEditor) {
super(targetView, fullEditor);
}
@Override
public boolean sendKeyEvent(KeyEvent event) {
/*
* This handles the keycodes from soft keyboard (and IME-translated
* input from hardkeyboard)
*/
int keyCode = event.getKeyCode();
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (event.isPrintingKey()) {
commitText(String.valueOf((char) event.getUnicodeChar()), 1);
}
SDLActivity.onNativeKeyDown(keyCode);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
SDLActivity.onNativeKeyUp(keyCode);
return true;
}
return super.sendKeyEvent(event);
}
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
nativeCommitText(text.toString(), newCursorPosition);
return super.commitText(text, newCursorPosition);
}
@Override
public boolean setComposingText(CharSequence text, int newCursorPosition) {
nativeSetComposingText(text.toString(), newCursorPosition);
return super.setComposingText(text, newCursorPosition);
}
public native void nativeCommitText(String text, int newCursorPosition);
public native void nativeSetComposingText(String text, int newCursorPosition);
}

View File

@@ -0,0 +1,8 @@
set(CMAKE_CXX_FLAGS "-s USE_SDL=2 -s USE_ZLIB=1 -s FULL_ES2=1 -std=c++11 -s TOTAL_MEMORY=16777216 -O0 --preload-file ../../../projects/mtg/bin/Res@/")
#set(CMAKE_CXX_FLAGS "-s USE_SDL=2 -s FULL_ES2=1 -std=c++11 -g4 -s ALLOW_MEMORY_GROWTH=1 --preload-file ../../../projects/mtg/bin/Res@/")
set(CMAKE_EXECUTABLE_SUFFIX ".html")
add_definitions(-DLINUX)
add_definitions(-D_DEBUG)
add_definitions(-DUSERDIR=".wagic")
add_definitions(-DRESDIR="/")
add_definitions(-DGL_ES_VERSION_2_0)

View File

@@ -0,0 +1,5 @@
add_definitions(-DLINUX)
add_definitions(-DUSERDIR=".wagic")
add_definitions(-DRESDIR="Res")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -std=c++0x")
set(CMAKE_PREFIX_PATH "/usr/local/opt/qt5")

View File

@@ -0,0 +1,5 @@
add_definitions(-DPSP -G0)
add_definitions(-D_PSP_FW_VERSION=371)
add_definitions(-DDEVHOOK -DPSPFW3XX)
include_directories(${PSPSDK_PATH}/include)

View File

@@ -0,0 +1,4 @@
add_definitions(-DLINUX)
add_definitions(-DUSERDIR=".wagic")
add_definitions(-DRESDIR="Res")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

View File

@@ -0,0 +1,3 @@
add_definitions(-DWIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="0231"
android:versionCode="0240"
android:installLocation="preferExternal"
android:versionName="@string/app_version"
package="net.wagic.app">

View File

@@ -1,6 +1,9 @@
APP_PROJECT_PATH := $(call my-dir)/..
APP_CPPFLAGS += -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_ABI := arm64-v8a
APP_PLATFORM := android-21
APP_CFLAGS += -march=armv8.1-a
APP_CPPFLAGS += -D__ARM_FEATURE_LSE=1
#APP_ABI := x86 # mainly for emulators
APP_STL := c++_static
APP_MODULES := libpng libjpeg main SDL

Binary file not shown.

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Wagic</string>
<string name="app_version">0.23.1</string>
<string name="app_version">0.20.0</string>
<string name="info_text">All Rights Reserved.</string>
</resources>

View File

@@ -38,9 +38,9 @@ public class DeckImporter
line = line.trim();
if (line.equals("")) {
line = scanner.nextLine();
prefix = "#SB:"; // Sideboard started from next card.
if (line.equals("")) {
line = scanner.nextLine();
prefix = "#SB:"; // Sideboard started from next card (we assumed that there are 2 blank lines from main deck and sideboard).
line = scanner.nextLine(); // Sometimes there are 2 blank lines from main deck and sideboard.
}
}
if (!line.equals("")) // don't write out blank lines

File diff suppressed because it is too large Load Diff

View File

@@ -110,6 +110,7 @@ public class SDLActivity extends Activity implements OnKeyListener {
public static final String kSaveDataPathPreference = "StorageDataLocation";
public static final String kWagicDataStorageOptionsKey = "dataStorageOptions";
public static final int kStorageDataOptionsMenuId = 2000;
public static final int kdownloadResOptionsMenuId = 4000;
public static final int kOtherOptionsMenuId = 3000;
static {
@@ -170,6 +171,7 @@ public class SDLActivity extends Activity implements OnKeyListener {
MenuItem downloader;
MenuItem about;
MenuItem storage;
MenuItem resource;
// Handler for the messages
Handler commandHandler = new Handler() {
@@ -951,6 +953,9 @@ public class SDLActivity extends Activity implements OnKeyListener {
about = menu.add(Menu.NONE, 4, 4, "About");
storage = settingsMenu.add(kStorageDataOptionsMenuId,
kStorageDataOptionsMenuId, Menu.NONE, "Storage Data Options");
resource = settingsMenu.add(kdownloadResOptionsMenuId,
kdownloadResOptionsMenuId, Menu.NONE, "Download Core & Quit");
}
@Override
@@ -966,6 +971,10 @@ public class SDLActivity extends Activity implements OnKeyListener {
if (itemId == kStorageDataOptionsMenuId) {
displayStorageOptions();
} else if (itemId == kdownloadResOptionsMenuId) {
File oldRes = new File(getSystemStorageLocation() + RES_FILENAME);
oldRes.delete();
startDownload();
} else if (itemId == 2) {
importDeckOptions();
} else if (itemId == 3) {
@@ -1000,7 +1009,7 @@ public class SDLActivity extends Activity implements OnKeyListener {
public void showSettingsSubMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Settings Menu");
String[] choices = { "Storage Data Options" };
String[] choices = { "Storage Data Options", "Download Core & Quit" };
builder.setItems(choices,
new DialogInterface.OnClickListener() {
@Override
@@ -1009,6 +1018,9 @@ public class SDLActivity extends Activity implements OnKeyListener {
case 0:
onOptionsItemSelected(storage);
break;
case 1:
onOptionsItemSelected(resource);
break;
}
}
});
@@ -1122,13 +1134,41 @@ public class SDLActivity extends Activity implements OnKeyListener {
prepareOptionMenu(null);
}
public void forceResDownload(final File oldRes) {
AlertDialog.Builder resChooser = new AlertDialog.Builder(this);
final SDLActivity parent = this;
resChooser.setTitle("Do you want to download latest core file?");
resChooser.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
FrameLayout _videoLayout = new FrameLayout(parent);
setContentView(_videoLayout,
new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
oldRes.delete();
startDownload();
}
});
resChooser.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mainDisplay();
}
});
resChooser.create().show();
}
public void initializeGame() {
String coreFileLocation = getSystemStorageLocation() + RES_FILENAME;
File file = new File(coreFileLocation);
if (file.exists()) {
mainDisplay();
forceResDownload(file);
} else {
FrameLayout _videoLayout = new FrameLayout(this);
setContentView(_videoLayout,
@@ -1811,7 +1851,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
// Touch events
public boolean onTouch(View v, MotionEvent event) {
// Show Menu for devices without sidebar (e.g. Android 10)
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
@@ -1821,8 +1860,13 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
case MotionEvent.ACTION_POINTER_UP:
y2 = event.getY();
float deltaY = y2 - y1;
if (deltaY > DELTA_Y)
parent.showOptionMenu();
if (deltaY > DELTA_Y) {
parent.showOptionMenu(); // Emulate Android "optionmenu" button pressure (for devices without sidebar, e.g. like Android 10).
return true;
} else if (deltaY < -DELTA_Y){
SDLActivity.onNativeKeyDown(KeyEvent.KEYCODE_BACK); // Emulate Android "back" button pressure (for devices without sidebar, e.g. like Android 10).
return true;
}
break;
}

244
projects/mtg/CMakeLists.txt Normal file
View File

@@ -0,0 +1,244 @@
#MTGs common sources
set(MTG_generic_src
src/AbilityParser.cpp
src/ActionElement.cpp
src/ActionLayer.cpp
src/ActionStack.cpp
src/AIHints.cpp
src/AIMomirPlayer.cpp
src/AIPlayer.cpp
src/AIPlayerBaka.cpp
src/AIStats.cpp
src/AllAbilities.cpp
src/CardDescriptor.cpp
src/CardDisplay.cpp
src/CardGui.cpp
src/CardPrimitive.cpp
src/CardSelector.cpp
src/CardSelectorSingleton.cpp
src/CarouselDeckView.cpp
src/Closest.cpp
src/Counters.cpp
src/Credits.cpp
src/Damage.cpp
src/DamagerDamaged.cpp
src/DeckDataWrapper.cpp
src/DeckEditorMenu.cpp
src/DeckManager.cpp
src/DeckMenu.cpp
src/DeckMenuItem.cpp
src/DeckMetaData.cpp
src/DeckStats.cpp
src/DeckView.cpp
src/DuelLayers.cpp
src/ExtraCost.cpp
src/GameApp.cpp
src/GameLauncher.cpp
src/GameObserver.cpp
src/GameOptions.cpp
src/GameStateAwards.cpp
src/GameState.cpp
src/GameStateDeckViewer.cpp
src/GameStateDuel.cpp
src/GameStateMenu.cpp
src/GameStateOptions.cpp
src/GameStateShop.cpp
src/GameStateStory.cpp
src/GameStateTransitions.cpp
src/GridDeckView.cpp
src/GuiAvatars.cpp
src/GuiBackground.cpp
src/GuiCardsController.cpp
src/GuiCombat.cpp
src/GuiFrame.cpp
src/GuiHand.cpp
src/GuiLayers.cpp
src/GuiMana.cpp
src/GuiPhaseBar.cpp
src/GuiPlay.cpp
src/GuiStatic.cpp
src/IconButton.cpp
src/InteractiveButton.cpp
src/ManaCost.cpp
src/ManaCostHybrid.cpp
src/MenuItem.cpp
src/ModRules.cpp
src/MTGAbility.cpp
src/MTGCard.cpp
src/MTGCardInstance.cpp
src/MTGDeck.cpp
src/MTGDefinitions.cpp
src/MTGGamePhase.cpp
src/MTGGameZones.cpp
src/MTGPack.cpp
src/MTGRules.cpp
src/ObjectAnalytics.cpp
src/OptionItem.cpp
src/PhaseRing.cpp
src/Player.cpp
src/PlayerData.cpp
src/PlayGuiObject.cpp
src/PlayGuiObjectController.cpp
src/PlayRestrictions.cpp
src/Pos.cpp
src/PriceList.cpp
src/ReplacementEffects.cpp
src/Rules.cpp
src/SimpleMenu.cpp
src/SimpleMenuItem.cpp
src/SimpleButton.cpp
src/SimplePad.cpp
src/SimplePopup.cpp
src/StoryFlow.cpp
src/Subtypes.cpp
src/StyleManager.cpp
src/TargetChooser.cpp
src/TargetsList.cpp
src/Tasks.cpp
src/TextScroller.cpp
src/ThisDescriptor.cpp
src/Token.cpp
src/Translate.cpp
src/TranslateKeys.cpp
src/Trash.cpp
src/utils.cpp
src/WCachedResource.cpp
src/WDataSrc.cpp
src/WEvent.cpp
src/WFilter.cpp
src/WFont.cpp
src/WGui.cpp
src/WResourceManager.cpp
src/WParsedInt.cpp
)
set(MTG_network_src src/NetworkPlayer.cpp)
#the sources we need if we compile a graphical qt version
#TODO: add declarative version since this only works with QWidget right now
set(MTG_qt_graphic_src
src/qt/filedownloader.cpp
src/qt/corewrapper.cpp
include/qt/corewrapper.h #so automoc finds it
include/qt/filedownloader.h
src/Qtmain.cpp)
#the sources we need to compile the testsuit
set(MTG_qt_console_src
src/Qtconsole.cpp
src/TestSuiteAI.cpp)
set(MTG_sdl_src
src/SDLmain.cpp)
set(MTG_android_sdl_src
src/SDLmain.cpp)
set(MTG_iOS_src
iOS/UI/WagicDownloadProgressViewController.m
iOS/asi-http-request/ASIAuthenticationDialog.m
iOS/asi-http-request/ASIDataCompressor.m
iOS/asi-http-request/ASIDataDecompressor.m
iOS/asi-http-request/ASIDownloadCache.m
iOS/asi-http-request/ASIFormDataRequest.m
iOS/asi-http-request/ASIHTTPRequest.m
iOS/asi-http-request/ASIInputStream.m
iOS/asi-http-request/ASINetworkQueue.m
iOS/SoundManager/SoundManager.m
iOS/SoundManager/MyOpenALSupport.c
iOS/Reachability/Reachability/Reachability.m
iOS/ZipArchive/ZipArchive.mm)
set(MTG_iOS_INCLUDE_DIRS iOS/UI iOS/Reachability/Reachability iOS/asi-http-request iOS/ZipArchive iOS/SoundManager)
set(MTG_INCLUDE_DIRS include include/qt)
set(JGE_INCLUDE_DIRS ../../JGE/include ../../JGE/include/hge)
set(JGE_LIBRARY jge)
set(EXTRA_INCLUDE_DIR extra)
#turn moc on
if(backend_qt_console OR backend_qt_widget)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC TRUE)
endif()
if(backend_qt_console)
if(UNIX AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${ZIPFS_INCLUDE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS}
${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default)
add_executable(wagic ${MTG_generic_src} ${MTG_qt_console_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${TINYXML_LIBRARIES}
${HGE_LIBRARY} ${ZLIB_LIBRARIES})
else()
message(FATAL_ERROR "qt-console builds are only supported on unix platforms")
endif()
elseif(backend_qt_widget)
if(UNIX AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${ZIPFS_INCLUDE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS}
${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default)
add_executable(wagic ${MTG_generic_src} ${MTG_qt_graphic_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES}
${HGE_LIBRARY} ${ZLIB_LIBRARIES})# ${X11_LIBRARIES})
else()
message(FATAL_ERROR "qt-widget builds are only supported on unix platforms")
endif()
elseif(backend_sdl)
if((UNIX OR EMSCRIPTEN) AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_sdl_src} ${MTG_network_src} src/TestSuiteAI.cpp src/AIPlayerBakaB.cpp)
target_link_libraries(wagic ${JGE_LIBRARY} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES} ${HGE_LIBRARY} ${ZLIB_LIBRARIES})
elseif(ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR})
#we should try to get rid of this hack
add_library(wagic SHARED ${MTG_generic_src} ${MTG_network_src} ${MTG_android_sdl_src} src/TestSuiteAI.cpp)
target_link_libraries(wagic ${JGE_LIBRARY} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES} ${HGE_LIBRARY} ${ZLIB_LIBRARIES})
elseif(WIN32)
include_directories(${EXTRA_INCLUDE_DIR} ${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${Boost_INCLUDE_DIRS} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_sdl_src} src/TestSuiteAI.cpp src/AIPlayerBakaB.cpp)
link_directories(${Boost_LIBRARY_DIR} ${SDL2_LIBRARY_DIR})
target_link_libraries(wagic PRIVATE
${JGE_LIBRARY}
${PNG_LIBRARIES} # Explicitly link libpng
${ZIPFS_LIBRARY} # Explicitly link libzipFS
${SDL2_LIBRARY}
${OPENGL_LIBRARIES}
${TINYXML_LIBRARIES}
${HGE_LIBRARY}
${BOOST_date_time}
${ZLIB_LIBRARIES} # Ensure zlib is linked
)
endif()
elseif(backend_psp)
if(PSP)
#${PSPSDK_PATH}/include
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${UNZIP_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${GIF_INCLUDE_DIR} ${HGETOOLS_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${PSPSDK_LIB} ${HGETOOLS_LIBRARY} ${FREETYPE_LIB} ${JPEG_LIBRARY}
${GIF_LIBRARIES} ${PNG_LIBRARIES} z m ${MIKMOD_LIBRARY} ${TINYXML_LIBRARIES}
stdc++ ${PSPSDK_REQUIRED_LIB})
set(PRXSPECS_FILE "${PSPSDK_PATH}/lib/prxspecs")
set(LINKFILE_FILE "${PSPSDK_PATH}/lib/linkfile.prx")
get_property(wagic_elf_location TARGET wagic PROPERTY LOCATION)
get_filename_component(wagic_elf_directory ${wagic_elf_location} PATH)
set_target_properties(wagic PROPERTIES LINK_FLAGS "-specs=${PRXSPECS_FILE} -Wl,-q,-T${LINKFILE_FILE}")
add_custom_command(TARGET wagic POST_BUILD
COMMAND ${PSPSDK_MKSFO_COMMAND} ARGS "'Wagic, the Homebrew?!'" "${wagic_elf_directory}/PARAM.SFO"
COMMAND ${PSPSDK_FIXUP_IMPORTS_COMMAND} ARGS ${wagic_elf_location}
COMMAND ${PSPSDK_PRXGEN_COMMAND} ARGS ${wagic_elf_location} "${wagic_elf_directory}/wagic.prx"
COMMAND ${PSPSDK_PACK_PBP_COMMAND} ARGS ${wagic_elf_directory}/EBOOT.PBP ${wagic_elf_directory}/PARAM.SFO ${CMAKE_CURRENT_SOURCE_DIR}/icon.png NULL ${CMAKE_CURRENT_SOURCE_DIR}/pic0.png ${CMAKE_CURRENT_SOURCE_DIR}/pic1.png NULL "${wagic_elf_directory}/wagic.prx" NULL)
else()
message(FATAL_ERROR "use the cross-compile toolchain to build as the psp target")
endif()
endif()
if(IOS)
set(MTG_generic_src ${MTG_generic_src} ${MTG_iOS_src} PARENT_SCOPE)
set(MTG_INCLUDE_DIRS ${MTG_INCLUDE_DIRS} ${MTG_iOS_INCLUDE_DIRS} PARENT_SCOPE)
endif()

File diff suppressed because it is too large Load Diff

View File

@@ -68,6 +68,7 @@ EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Wagic, the Homebrew?!
PSP_EBOOT_ICON = icon.png
#PSP_EBOOT_ICON1 = icon1.pmf
PSP_LARGE_MEMORY = 1
PSP_EBOOT_UNKPNG = pic0.png
PSP_EBOOT_PIC1 = pic1.png
INCDIR = ../../JGE/include ../../JGE/src/zipFS ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src ../../projects/mtg/include ../../Boost

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -7,75 +7,24 @@
# (would've been better to add creatures, but all creatures in the
# deck were already at 4 pieces))
#Spark Elemental
129577
129577
129577
129577
#Raging Goblin
129688
129688
129688
129688
#Goblin Piker
129580
129580
129580
129580
#Goblin King
129578
129578
129578
129578
#Goblin Striker
48592
48592
48592
48592
#Lightning Bolt
1303
1303
1303
1303
#Wheel of Fate
1326
#Black Vise
1097
1097
1097
1097
#Hearthfire Hobgoblin
157201
157201
157201
157201
#Howling Mine
129598
129598
129598
#Goblin Mountaineer
174938
174938
174938
174938
#Mountain
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
1390
# Land(s)
Mountain (8ED) * 20
# Creature(s)
Goblin King (8ED) * 4
Goblin Mountaineer (9ED) * 4
Goblin Piker (9ED) * 4
Goblin Striker (MRD) * 4
Hearthfire Hobgoblin (EVE) * 4
Raging Goblin (8ED) * 4
Spark Elemental (5DN) * 4
# Artifact(s)
Black Vise (V10) * 4
Howling Mine (8ED) * 3
# Instant(s)
Lightning Bolt (M10) * 4
# Sorcery(s)
Wheel of Fortune (VMA) * 1

View File

@@ -1,26 +1,84 @@
#NAME:The KOR
#DESC:The Kor never stand down.Golem-Skin Gauntlets (MRD) *1
Plains (8ED) *4
Plains (8ED) *4
Bonesplitter (MRD) *2
Vulshok Battlegear (MRD) *1
Plains (MRD) *4
Plains (MRD) *4
Plains (MRD) *4
Cranial Plating (5DN) *2
Skyhunter Skirmisher (5DN) *2
Paradise Mantle (5DN) *2
Shuko (BOK) *2
Umezawa's Jitte (BOK) *2
Kor Duelist (ZEN) *2
Spidersilk Net (ZEN) *1
Bone Saw (CFX) *2
Armament Master (ZEN) *3
Lone Missionary (ROE) *2
Pennon Blade (ROE) *1
Kor Line-Slinger (ROE) *2
Kitesail Apprentice (WWK) *2
Stoneforge Mystic (WWK) *2
Accorder's Shield (SOM) *2
Swords to Plowshares (EVT) *2
Kor Hookmaster (EVT) *2
#NAME:Tergrid Commander
#DESC:The Tergrid Commander Deck
#DESC:Refined for Wagic by Bob
#HINT:castpriority(commander,*)
Ancient Tomb (EXP) *1
Animate Dead (VMA) *1
Arcane Signet (AFC) *1
Archon of Cruelty (MH2) *1
Barren Moor (C19) *1
Blackblade Reforged (SS2) *1
Bojuka Bog (C19) *1
Braids, Cabal Minion (EMA) *1
Butcher of Malakir *1
Charcoal Diamond *1
Command Beacon (PZ1) *1
Commander's Sphere (C19) *1
Corrupt *1
Crypt Ghast (GTC) *1
Damnation (MM3) *1
Dreadhorde Invasion (WAR) *1
Elvish Doomsayer *1
Fell Specter *1
Geier Reach Sanitarium (C19) *1
Gilded Lotus *1
Grave Pact (CMD) *1
Gray Merchant of Asphodel *1
Hedron Archive (C19) *1
Hymn to Tourach *1
Hypnotic Specter *1
Korlash, Heir to Blackblade *1
Leaden Myr *1
Lightning Greaves (AFC) *1
Liliana of the Dark Realms *1
Liliana, Dreadhorde General (WAR) *1
Liliana's Triumph (WAR) *1
Lotus Petal (MB1) *1
Megrim *1
Memory Jar (FVR) *1
Mind Stone (AFC) *1
Mortuary Mire *1
Mox Jet *1
Necrogen Mists (MRD) *1
Night's Whisper (EMA) *1
No Mercy (MP2) *1
Oppression (7ED) *1
Painful Quandary *1
Palladium Myr (MB1) *1
Phyrexian Arena (TD0) *1
Phyrexian Obliterator *1
Plaguecrafter (C19) *1
Pox (ME1) *1
Ravenous Chupacabra (MB1) *1
Reliquary Tower (M13) *1
Sangromancer (MBS) *1
Shadowspear (THB) *1
Sheoldred, Whispering One *1
Smallpox (M12) *1
Sol Ring (C19) *1
Solemn Simulacrum (TSR) *1
Soul Shatter (ZNR) *1
Steel Hellkite (C17) *1
Strip Mine (EXP) *1
Swamp (2XM) *4
Swamp (OTJ) *4
Swamp (MKM) *4
Swamp (WOE) *4
Swamp (LCI) *4
Swamp (DSK) *4
Swamp (BLB) *3
Sword of Feast and Famine (MPS) *1
Syr Konrad, the Grim *1
Temple of the False God *1
The Eldest Reborn *1
Thought Vessel (MB1) *1
Thoughtseize (2XM) *1
Thran Dynamo (C19) *1
Tinybones, Trinket Thief (JMP) *1
Tourach, Dread Cantor (MH2) *1
Urborg, Tomb of Yawgmoth (TSR) *1
Whip of Erebos (THS) *1
Witch of the Moors (JMP) *1
Witch's Cottage (ELD) *1
Worn Powerstone (PZ1) *1
#CMD:Tergrid, God of Fright (KHM) *1

View File

@@ -1,4 +1,4 @@
#NAME:Smoke and mirrors
#NAME:Smoke & Mirrors
Order of the Ebon Hand (FEM) *2
Combat Medic (FEM) *1
Combat Medic (FEM) *1

View File

@@ -1,4 +1,4 @@
#NAME:Kill by Numbers
#NAME:Kazandu the Redeemed
#DESC:They just keep multiplying.
#HINT:castpriority(enchantment,instant,sorcery,artifact,creature)
#HINT:dontattackwith(Rhys the Redeemed)

View File

@@ -1,4 +1,4 @@
#NAME:Infected wounds
#NAME:Infected Wounds
Forest (UGL) *4
Forest (ALA) *1
Forest (ALA) *1

View File

@@ -1,4 +1,4 @@
#NAME:Red Deck Wins
#NAME:Hellrider
#DESC:Standard R Aggro
#DESC:ISD-M13-RTR
#HINT:combo hold(Hellrider|myhand)^until(creature|mybattlefield)^cast(Hellrider|myhand)^restriction{type(creature|mybattlefield)~morethan~2}^totalmananeeded({2}{R}{R})
@@ -23,4 +23,4 @@ Searing Spear * 4
Krenko's Command * 4
#20 lands
Mountain (RTR) * 20
Mountain (RTR) * 20

View File

@@ -1,40 +1,81 @@
#NAME:Sweep The Tomb
#DESC:Modern RBW Control
#HINT:castpriority(enchantment,sorcery,artifact,instant)
#HINT:combo hold(Devour Flesh|myhand)^until(creature|opponentbattlefield)^cast(Devour Flesh|myhand)^totalmananeeded({1}{B})
#HINT:combo hold(Pyroclasm|myhand)^cast(Pyroclasm|myhand)^restriction{type(creature[toughness<=2]|opponentbattlefield)~morethan~1}~totalmananeeded({1}{R})
#HINT:combo hold(Wrath of God|myhand)^cast(Wrath of God|myhand)^restriction{type(creature|opponentbattlefield)~morethan~1}^totalmananeeded({2}{W}{W})
#HINT:combo hold(Damnation|myhand)^cast(Damnation|myhand)^restriction{type(creature|opponentbattlefield)~morethan~1}^totalmananeeded({2}{B}{B})
#HINT:combo hold(Final Judgment|myhand)^cast(Final Judgment|myhand)^restriction{type(creature|opponentbattlefield)~morethan~1}^totalmananeeded({4}{W}{W})
#22 spells
#8 2-cc
Devour Flesh * 4
Pyroclasm (M11) * 4
#8 4-cc
Damnation * 4
Wrath of God (10E) * 4
#2 6-cc
Final Judgment * 2
#4 x-cc
Black Sun's Zenith * 2
Rakdos's Return * 2
#8 artifacts
Elixir of Immortality * 2
Staff of Nin * 4
Venser's Journal * 2
#4 enchantments
Lightmine Field * 4
#26 lands
Plateau (ME4) * 4
Badlands (ME4) * 4
Scrubland (ME4) * 4
Akoum Refuge * 4
Isolated Chapel * 4
Clifftop Retreat * 2
Urborg, Tomb of Yawgmoth * 1
Plains (CHK) * 2
Swamp (RTR) * 1
#NAME:Belbe Commander
#DESC:Deck by apparently (tappedout.net)
#DESC:Refined for Wagic by Bob
#HINT:castpriority(commander,*)
Ancient Stone Idol
Apex Devastator
Archetype of Endurance
Artisan of Kozilek
Bane of Bala Ged
Beacon of Unrest
Bellowing Tanglewurm
Cabal Conditioning
Caller of the Pack
Colossus of Akros
Command Tower
Conduit of Ruin
Copper Myr
Court of Ambition
Cultivate
Dread Defiler
Eldrazi Conscription
Exsanguinate
Farseek
Fierce Empath
Forest (4ED) *4
Forest (NEO) *4
Forest (ONE) *4
Forest (SNC) *4
Garruk's Uprising
Gilanra, Caller of Wirewood
God-Pharaoh's Statue
Grave Betrayal
Helm of the Host
Hooded Blightfang
Horizon Stone
In Garruk's Wake
Josu Vess, Lich Knight
Kodama's Reach (CMD)
Leaden Myr
Leechridden Swamp
Lim-Dul's Hex
Loxodon Warhammer (10E)
Loyal Subordinate
Mardu Shadowspear
Mirror Shield
Night Market Lookout
Oblivion Sower
Pathrazer of Ulamog
Phyrexian Juggernaut
Phyrexian Triniform
Plague Spitter
Planar Bridge
Platinum Emperion
Polyraptor
Pulse Tracker
Rampant Growth
Return of the Wildspeaker
Sanctum of Stone Fangs
Sandstone Oracle
Sandwurm Convergence
Skull Storm
Skyclave Relic
Sol Ring
Staff of Nin
Swamp (ONE) *4
Swamp (NEO) *4
Swamp (SNC) *4
Swamp (4ED) *3
The Immortal Sun
Thornbow Archer
Thought Vessel
Three Visits
Thunderfoot Baloth
Torment of Hailfire
Ulamog's Crusher
Undergrowth Stadium
Urborg, Tomb of Yawgmoth
Vicious Conquistador
Yavimaya, Cradle of Growth
Zendikar Resurgent
#CMD:Belbe, Corrupted Observer (*) *1

View File

@@ -0,0 +1,19 @@
#NAME:Budde's Ponza
#DESC:Deck by Kai Budde, 2003
Dwarven Blastminer *2
Rorix Bladewing *2
Siege-Gang Commander *3
Hammer of Bogardan *2
Lay Waste *4
Molten Rain *4
Pyrite Spellbomb *4
Spark Spray *3
Starstorm *4
Stone Rain (8ED) *4
Talisman of Impulse *4
Mountain (8ED) *4
Mountain (7ED) *4
Mountain (MRD) *4
Mountain (ONS) *4
Mountain (ODY) *4
Forgotten Cave (ONS) *4

View File

@@ -0,0 +1,22 @@
#NAME: Mind Control
#DESC: The Best Counter Deck Ever
Aetherize (*) *4
Artificer's Epiphany (*) *4
Counterspell (*) *2
Dissipate (*) *2
Downsize (*) *3
Elixir of Immortality (*) *3
Essence Scatter (*) *3
Guttersnipe (*) *3
Hydrolash (*) *2
Island (*) *14
Mountain (*) *8
Opportunity (*) *2
Prism Ring (*) *4
Young Pyromancer (*) *3
Cyclonic Rift (*) *3
#SB: Aetherling (*) *1
#SB: Spellheart Chimera (*) *1
#SB: Flashfreeze (*) *3
#SB: Negate (*) *2

View File

@@ -0,0 +1,16 @@
#NAME: Ajani's Chaplain
#DESC: The First M20 Deck
Ajani, Inspiring Leader (M20) *1
Serra's Guardian (M20) *1
Daybreak Chaplain (M20) *4
Fencing Ace (M20) *3
Impassioned Orator (M20) *3
Loxodon Lifechanter (M20) *1
Goldmane Griffin (M20) *2
Angel of Vitality (M20) *3
Dawning Angel (M20) *3
Savannah Sage (M20) *4
Twinblade Paladin (M20) *3
Moment of Heroism (M20) *4
Pacifism (M20) *3
Plains (M20) *25

View File

@@ -0,0 +1,28 @@
#NAME: Phyrexian Asphodel
#DESC: The First MH1 Deck
Bloodghast (*) *4
Geralf's Messenger (*) *4
Phyrexian Obliterator (*) *4
Gray Merchant of Asphodel (*) *4
Yawgmoth, Thran Physician (*) *2
Liliana of the Veil (*) *3
Liliana, the Last Hope (*) *2
Fatal Push (*) *4
Inquisition of Kozilek (*) *4
Thoughtseize (*) *4
Collective Brutality (*) *1
Phyrexian Arena (*) *1
Bloodstained Mire (*) *2
Polluted Delta (*) *2
Verdant Catacombs (*) *2
Marsh Flats (*) *1
Urborg, Tomb of Yawgmoth (*) *1
Snow-Covered Swamp (*) *15
#SB: Surgical Extraction (*) *3
#SB: Collective Brutality (*) *2
#SB: Ashiok, Dream Render (*) *1
#SB: Dead of Winter (*) *2
#SB: Force of Despair (*) *1
#SB: Fulminator Mage (*) *4
#SB: Plague Engineer (*) *2

View File

@@ -0,0 +1,37 @@
#NAME: Urza's Control
#DESC: Hellsau, 1st MTGO
#DESC: Pauper League
Dinrova Horror (*) *1
Stonehorn Dignitary (*) *1
Mnemonic Wall (*) *3
Mulldrifter (*) *4
Condescend (*) *2
Forbidden Alchemy (*) *2
Ghostly Flicker (*) *2
Mystical Teachings (*) *2
Counterspell (*) *2
Impulse (*) *3
Moment's Peace (*) *4
Compelling Argument (*) *1
Pulse of Murasa (*) *2
Expedition Map (*) *4
Prophetic Prism (*) *4
Remote Isle (*) *1
Island (*) *3
Unknown Shores (*) *3
Thornwood Falls (*) *4
Urza's Mine (*) *4
Urza's Power Plant (*) *4
Urza's Tower (*) *4
#SB: Dinrova Horror (*) *1
#SB: Stonehorn Dignitary (*) *1
#SB: Pulse of Murasa (*) *1
#SB: Circle of Protection: Red (*) *2
#SB: Dispel (*) *1
#SB: Electrickery (*) *1
#SB: Hydroblast (*) *2
#SB: Pyroblast (*) *3
#SB: Shattering Pulse (*) *1
#SB: Sprout Swarm (*) *1
#SB: Tangle (*) *1

View File

@@ -0,0 +1,31 @@
#NAME: Modern Snow
#DESC: First Snow Deck
Flooded Strand (*) *2
Misty Rainforest (*) *3
Prismatic Vista (*) *4
Scrying Sheets (*) *1
Snow-Covered Forest (*) *4
Snow-Covered Island (*) *2
Snow-Covered Plains (*) *2
Windswept Heath (*) *2
Glacial Revelation (*) *4
Into the North (*) *4
Abominable Treefolk (*) *4
Boreal Druid (*) *2
Diamond Faerie (*) *2
Ice-Fang Coatl (*) *4
Icehide Golem (*) *4
Ohran Viper (*) *4
Gelid Shackles (*) *1
Force of Negation (*) *4
Search for Azcanta (*) *3
Arcum's Astrolabe (*) *4
#SB: Diamond Faerie (*) *1
#SB: On Thin Ice (*) *4
#SB: Gelid Shackles (*) *3
#SB: Mouth of Ronom (*) *1
#SB: Negate (*) *3
#SB: Scrying Sheets (*) *2
#SB: Search for Azcanta (*) *1
#SB: Spell Pierce (*) *2

View File

@@ -0,0 +1,29 @@
#NAME: Yarok of Pranks
#DESC: The First Eldraine Deck
Midnight Reaper (*) *2
Cavalier of Night (*) *3
Dread Presence (*) *4
Knight of the Ebon Legion (*) *4
Yarok's Fenlurker (*) *4
Foulmire Knight (*) *3
Rankle, Master of Pranks (*) *3
Murderous Rider (*) *4
Ritual of Soot (*) *2
Mausoleum Secrets (*) *1
Command the Dreadhorde (*) *1
Legion's End (*) *2
Swamp (*) *19
Witch's Cottage (*) *4
Castle Locthwain (*) *2
Ugin, the Ineffable (*) *1
Liliana, Dreadhorde General (*) *1
#SB: Massacre Girl (*) *1
#SB: Ayara, First of Locthwain (*) *1
#SB: The Elderspell (*) *1
#SB: Duress (*) *2
#SB: Noxious Grasp (*) *3
#SB: Covetous Urge (*) *2
#SB: Witch's Vengeance (*) *2
#SB: Epic Downfall (*) *2
#SB: The Cauldron of Eternity (*) *1

View File

@@ -0,0 +1,26 @@
#NAME: Selesnya Adventures
#DESC: First Adventure Deck
Edgewall Innkeeper (*) *4
Faerie Guidemother // Gift of the Fae (ELD) *4
Flaxen Intruder // Welcome Home (ELD) *2
Giant Killer // Chop Down (ELD) *4
Lovestruck Beast // Heart's Desire (ELD) *4
Shepherd of the Flock // Usher to Safety (ELD) *1
Venerated Loxodon (*) *4
Emmara, Soul of the Accord (*) *1
Trostani Discordant (*) *2
Forest (*) *8
Plains (*) *8
Castle Ardenvale (*) *1
Temple Garden (*) *4
March of the Multitudes (*) *4
Once Upon a Time (*) *4
Unbreakable Formation (*) *1
Flower // Flourish (*) *4
#SB: Knight of Autumn (*) *2
#SB: Unbreakable Formation (*) *1
#SB: Veil of Summer (*) *3
#SB: Questing Beast (*) *3
#SB: Gideon Blackblade (*) *2
#SB: Devout Decree (*) *4

View File

@@ -0,0 +1,92 @@
#NAME:Bello Commander
#DESC:Bloomburrow Precon Deck
#DESC:Refined for Wagic by Bob
#HINT:castpriority(commander,*)
#HINT:alwaysattackwith(creature[Elemental])
Abrade (BLC) (*) * 1
Arcane Signet (BLC) (*) * 1
Beast Within (BLC) (*) * 1
Berserkers' Onslaught (BLC) (*) * 1
Big Score (BLC) (*) * 1
Blasphemous Act (*) * 1
Bristling Backwoods (*) * 1
Burnished Hart (BLC) (*) * 1
Chaos Warp (*) * 1
Cinder Glade (BLC) (*) * 1
Command Tower (BLC) (*) * 1
Copperline Gorge (BLC) (*) * 1
Court of Embereth (*) * 1
Cultivate (BLC) (*) * 1
Decimate (BLC) (*) * 1
Domri, Anarch of Bolas (BLC) (*) * 1
Esika's Chariot (BLC) (*) * 1
Etali, Primal Storm (BLC) (*) * 1
Evercoat Ursine (BLC) (*) * 1
Evolving Wilds (BLC) (*) * 1
Exotic Orchard (BLC) (*) * 1
Explore (BLC) (*) * 1
Fanatic of Rhonas (*) * 1
Farseek (BLC) (*) * 1
Fellwar Stone (BLC) (*) * 1
Forest (BLB) (*) * 10
Forest (MH3) (*) * 4
Forest (LCI) (*) * 2
Forgotten Cave (BLC) (*) * 1
Frontier Warmonger (*) * 1
Game Trail (BLC) (*) * 1
Garruk's Packleader (BLC) (*) * 1
Garruk's Uprising (BLC) (*) * 1
Ghalta, Primal Hunger (BLC) (*) * 1
Gilded Lotus (BLC) (*) * 1
Goblin Anarchomancer (*) * 1
Goreclaw, Terror of Qal Sisma (BLC) (*) * 1
Grumgully, the Generous (BLC) (*) * 1
Gruul Signet (BLC) (*) * 1
Gruul Turf (BLC) (*) * 1
Gruul War Chant (*() * 1
Harmonize (BLC) (*) * 1
Hedron Archive (BLC) (*) * 1
Kodama of the East Tree (BLC) (*) * 1
Kona, Rescue Beastie (*) * 1
Llanowar Loamspeaker (BLC) (*) * 1
Lotus Cobra (BLC) (*) * 1
Mind Stone (BLC) (*) * 1
Mossfire Valley (BLC) (*) * 1
Mosswort Bridge (BLC) (*) * 1
Mountain (BLB) (*) * 4
Mountain (MH3) (*) * 4
Nature's Will (*) * 1
Ohran Frostfang (*) * 1
Outpost Siege (BLC) (*) * 1
Path of Discovery (BLC) (*) * 1
Primeval Bounty (BLC) (*) * 1
Prosperous Bandit (BLC) (*) * 1
Rampaging Baloths (BLC) (*) * 1
Rampant Growth (BLC) (*) * 1
Reliquary Tower (BLC) (*) * 1
Rolling Hamsphere (BLC) (*) * 1
Rootbound Crag (BLC) (*) * 1
Rugged Highlands (*) * 1
Sakura-Tribe Elder (BLC) (*) * 1
Sheltered Thicket (BLC) (*) * 1
Sol Ring (BLC) (*) * 1
Spine of Ish Sah (BLC) (*) * 1
Starstorm (BLC) (*) * 1
Street Riot (*) * 1
Sunbird's Invocation (BLC) (*) * 1
Taiga (*) * 1
Talisman of Impulse (BLC) (*) * 1
Temple of Abandon (BLC) (*) * 1
Tendershoot Dryad (BLC) (*) * 1
Terramorphic Expanse (BLC) (*) * 1
The Immortal Sun (*) * 1
The Shattered States Era (*) * 1
Thickest in the Thicket (BLC) (*) * 1
Thought Vessel (BLC) (*) * 1
Thran Dynamo (BLC) (*) * 1
Tranquil Thicket (BLC) (*) * 1
Unnatural Growth (BLC) (*) * 1
Warstorm Surge (BLC) (*) * 1
Wildsear, Scouring Maw (BLC) (*) * 1
Wooded Ridgeline (BLC) (*) * 1
#CMD:Bello, Bard of the Brambles (*) * 1

View File

@@ -0,0 +1,26 @@
#NAME:Mutants
#DESC: The First Ikoria Mutation Deck
Arboreal Grazer (*) *4
Pollywog Symbiote (*) *3
Dryad of the Ilysian Grove (*) *2
Vadrok, Apex of Thunder (*) *2
Everquill Phoenix (*) *3
Gemrazer (*) *4
Migratory Greathorn (*) *4
Snapdax, Apex of the Hunt (*) *2
Brokkos, Apex of Forever (*) *2
Illuna, Apex of Wishes (*) *2
Nethroi, Apex of Death (*) *2
Beanstalk Giant // Fertile Footsteps (*) *4
Nissa, Who Shakes the World (*) *2
Breeding Pool (*) *2
Forest (*) *3
Island (*) *2
Mountain (*) *2
Overgrown Tomb (*) *2
Plains (*) *2
Sacred Foundry (*) *2
Steam Vents (*) *1
Stomping Ground (*) *3
Swamp (*) *2
Temple Garden (*) *3

View File

@@ -0,0 +1,28 @@
#NAME:Wipe Them Out!
#DESC:Modern RBW Control
#HINT:castpriority(creature,enchantment,sorcery,artifact)
#HINT:combo hold(Cruel Edict|myhand)^until(creature|opponentbattlefield)^cast(Cruel Edict|myhand)^totalmananeeded({1}{B})
#HINT:combo hold(Pyroclasm|myhand)^cast(Pyroclasm|myhand)^restriction{type(creature[toughness<=2]|opponentbattlefield)~morethan~1}~totalmananeeded({1}{R})
#HINT:combo hold(Wrath of God|myhand)^cast(Wrath of God|myhand)^restriction{type(creature|opponentbattlefield)~morethan~1}^totalmananeeded({2}{W}{W})
#HINT:combo hold(Damnation|myhand)^cast(Damnation|myhand)^restriction{type(creature|opponentbattlefield)~morethan~1}^totalmananeeded({2}{B}{B})
#HINT:alwaysattackwith(Blightsteel Colossus)
Blightsteel Colossus * 2
Cruel Edict (10E) * 4
Pyroclasm *4
Damnation * 4
Wrath of God (10E) * 4
Black Sun's Zenith * 2
Rakdos's Return * 2
Elixir of Immortality * 2
Staff of Nin * 4
Venser's Journal * 2
Lightmine Field * 4
Plateau (ME4) * 4
Badlands (ME4) * 4
Scrubland (ME4) * 4
Akoum Refuge * 4
Isolated Chapel * 4
Clifftop Retreat * 2
Urborg, Tomb of Yawgmoth * 1
Plains (CHK) * 2
Swamp (RTR) * 1

View File

@@ -0,0 +1,82 @@
#NAME:Omnath Commander
#DESC:Deck concept by HurricaneHands
#DESC:(tappedout.net)
#DESC:Refined for Wagic by Bob
#HINT:castpriority(commander,*)
Ancient Greenwarden
Avenger of Zendikar
Azusa, Lost but Seeking
Blighted Woodland
Cinder Glade
Circuitous Route
Command Tower
Commander's Sphere
Court of Bounty
Courser of Kruphix
Crash of Rhino Beetles
Crucible of Worlds
Cultivate
Doubling Season
Dragonmaster Outcast
Elvish Reclaimer
Evolving Wilds
Explore
Farseek
Far Wanderings
Feed the Clan
Fiery Emancipation
Forest (ZEN) *4
Forest (ONE) *4
Forest (NEO) *4
Forest (SNC) *4
Forest (M10) *4
Forest
Gaea's Revenge
Gruul Guildgate
Harrow
Incandescent Soulstoke
Khalni Heart Expedition
Liege of the Tangle
Lotus Cobra
Mina and Denn, Wildborn
Mountain (ONE) *4
Mountain (NEO) *4
Mountain *4
Multani, Yavimaya's Avatar
Myriad Landscape
Naturalize (8ED)
Nissa's Renewal
Nissa, Vastwood Seer
Nissa, Worldwaker
Nissa's Zendikon
Nyxbloom Ancient
Phylath, World Sculpture
Phytotitan
Radha, Heart of Keld
Rampaging Baloths
Rampant Growth
Ranger's Path
Rhythm of the Wild
Rites of Flourishing
Roiling Regrowth
Rootbound Crag
Rubblehulk
Sarkhan's Unsealing
Scute Mob
Scute Swarm
Second Harvest
Skyshroud Claim
Sol Ring
Temple of Abandon
Terramorphic Expanse
Terror of the Peaks
Thicket Crasher
Tornado Elemental
Undergrowth Champion
Vandalblast
Warstorm Surge
Where Ancients Tread
Wooded Foothills
Zendikar Incarnate
Zendikar's Roil
#CMD:Omnath, Locus of Rage (*) *1

View File

@@ -0,0 +1,87 @@
#NAME:Lyra Commander
#DESC:Deck by guitrunks01
#DESC:(archidekt.com)
#DESC:Refined for Wagic by Bob
#HINT:castpriority(commander,*)
#HINT:combo hold(Mass Calcify|myhand)^cast(Mass Calcify|myhand)^restriction{type(creature|opponentbattlefield)~morethan~2}^totalmananeeded({2}{W}{W})
#HINT:combo hold(Blinding Light|myhand)^cast(Blinding Light|myhand)^restriction{type(creature|opponentbattlefield)~morethan~2}^totalmananeeded({3}{W}{W})
Always Watching (*) * 1
Akroma's Memorial (m13) (*) * 1
Akroma, Angel of Wrath (c20) (*) * 1
Angel of Finality (moc) (*) * 1
Angel of Invention (kld) (*) * 1
Angel of Jubilation (avr) (*) * 1
Angel of Serenity (c21) (*) * 1
Angel of the Dire Hour (plst) (*) * 1
Angel of the Ruins (c21) (*) * 1
Angelic Accord (plst) (*) * 1
Angelic Arbiter (m11) (*) * 1
Angelic Field Marshal (*) * 1
Arcane Signet (blc) (*) * 1
Avacyn, Angel of Hope (cmm) (*) * 1
Baneslayer Angel (m21) (*) * 1
Bishop of Wings (plst) (*) * 1
Blinding Light (*) * 1
Boon-Bringer Valkyrie (mom) (*) * 1
Burnished Hart (dsc) (*) * 1
Command Tower (*) * 1
Cosmos Elixir (khm) (*) * 1
Court of Grace (*) * 1
Crush Contraband (scd) (*) * 1
Darksteel Citadel (c18) (*) * 1
Divine Sacrament (*) * 1
Emeria Shepherd (znc) (*) * 1
Emeria, the Sky Ruin (plst) (*) * 1
Endless Atlas (cmm) (*) * 1
Entreat the Angels (avr) (*) * 1
Firemane Commando (moc) (*) * 1
Generous Gift (*) * 1
Ghostly Prison (*) * 1
Herald of War (mic) (*) * 1
Inspiring Overseer (blc) (*) * 1
Karmic Guide (ulg) (*) * 1
Lightning Greaves (m3c) (*) * 1
Linvala, Keeper of Silence (*) * 1
Luminarch Ascension (a25) (*) * 1
Marble Diamond (*) * 1
Mass Calcify (m15) (*) * 1
Minas Tirith (ltr) (*) * 1
Path to Exile (pf20) (*) * 1
Plains (bro) (*) * 4
Plains (woe) (*) * 4
Plains (dsk) (*) * 4
Plains (lci) (*) * 4
Plains (mkm) (*) * 4
Plains (blb) (*) * 3
Platinum Angel (plst) (*) * 1
Pristine Talisman (*) * 1
Quicksilver Amulet (brr) (*) * 1
Radiant Fountain (*) * 1
Rebuff the Wicked (tsr) (*) * 1
Revitalize (*) * 1
Righteous Valkyrie (khm) (*) * 1
Segovian Angel (plst) (*) * 1
Sephara, Sky's Blade (cmm) (*) * 1
Seraph Sanctuary (*) * 1
Serra Angel (*) * 1
Serra Ascendant (*) * 1
Serra Avenger (*) * 1
Serra the Benevolent (mh1) (*) * 1
Shadowspear (plst) (*) * 1
Sigarda's Splendor (mid) (*) * 1
Silence (m14) (*) * 1
Sol Ring (m3c) (*) * 1
Solemn Simulacrum (dsc) (*) * 1
Snow-Covered Plains (mh1) (*) * 4
Starnheim Aspirant (j22) (*) * 1
Steel Seraph (bro) (*) * 1
Swiftfoot Boots (blc) (*) * 1
Swords to Plowshares (cns) (*) * 1
Test of Endurance (*) * 1
The Book of Exalted Deeds (afr) (*) * 1
Thraben Watcher (mh2) (*) * 1
Thran Dynamo (uds) (*) * 1
Valkyrie Harbinger (j22) (*) * 1
Worn Powerstone (*) * 1
Youthful Valkyrie (fdn) (*) * 1
#CMD:Lyra Dawnbringer (dmr) (*) * 1

Some files were not shown because too many files have changed in this diff Show More