Commit Graph

2828 Commits

Author SHA1 Message Date
wrenczes@gmail.com
76cba56a1c Resuming on my threading support work with the card caching mechanism. This change unfortunately touches quite a few files, but I needed to get it out of the way before things got out of hand: one significant hurdle is the assumed lifetime of a JQuad pointer. In a single threaded model, the life time of the pointer is clear: you fetch it into the cache, the cache makes room, you use the pointer immediately. In a multithreaded context however, it's unsafe, as the drawing thread can request a few JQuads, and the cache operating on a separate thread can potentially bounce a JQuad out of the cache before the draw routine is done using it, which ends up in an access violation when you attempt to draw using an invalidated quad pointer. To prevent this, the bulk of this change swaps out the use of naked JQuad* pointers in the code with a JQuadPtr, which is basically a typedef to a boost shared_ptr<JQuad>.
This btw points out another circular dependancy between the texture and the JQuad - a texture owns a bunch of JQuads, yet the renderer uses JQuads and always assumes that the texture is valid.  We're going to need to add more defensiveness to JGE to protect against this.

Other changes in this check-in:  WResourceManager doesn't derive from JResourceManager anymore.  It actually didn't require anything from the base, so I killed the dependency.  Also cleaned up the notion of a WTrackedQuad in the WCachedResource - it didn't need a separate class, just a better container.

I've build this & tested against PSP, win, linux, QT (linux).  I haven't tried against iOS and QT Win, or Maemo.  If these other platforms are broken, I apologize in advance! - I'm hoping it should be fairly simple to put them back into play.
2011-02-01 10:37:21 +00:00
wrenczes
0b2f83c499 Adding an include path to Boost. 2011-02-01 09:56:05 +00:00
wrenczes@gmail.com
cfa7bc748a More logging calls to my threading header. 2011-02-01 05:58:19 +00:00
techdragon.nguyen@gmail.com
d9facfb73b * moved deck mana display code into separate method.
* since I rescaled the images down to 50%, I moved the display to the upper right
   info box on the last line to the right of the "# of games played" information.
   Things look like it will fit as long as the number of games is under 1000
2011-02-01 00:48:23 +00:00
techdragon.nguyen@gmail.com
6d50ddcda5 * adjusted mana icons to be 60% of the original size. The rest of the game apparently resizes the mana icons to 40% but
that makes it look a little blurred when viewed that way on the deck selection screen.
* adjusted debug message condition for the mana display
2011-01-31 16:52:01 +00:00
guzhenjie1@gmail.com
a2939cc93f Fixed the Wickerbough Elder:
(Wickerbough Elder enters the battlefield with a -1/-1 counter on it.)

auto=counter(-1/-1,2)
 ==> 
auto=counter(-1/-1,1)
2011-01-31 15:18:54 +00:00
linshier
6bde3d0ee6 moved the translator init code earlier; added some translation support for the code of r2517 and r2907; updated some Chinese translation. 2011-01-31 14:21:46 +00:00
solo81@web.de
6bf8a1209d Fixed several cards (reported by rawsugar):
Kamahl, Fist of Krosa
Mayael's Aria
Peat Bog
Vigor
Wash Out
Wickerbough Elder
2011-01-31 14:01:51 +00:00
omegablast2002@yahoo.com
7e21105460 fixed the 2 avatars, they were missing part of the secondary keyword for other restrictions checking opponent field. 2011-01-31 13:27:27 +00:00
omegablast2002@yahoo.com
1149f04df6 fixed a reported issue with regenerate...chooseBlockers appears as if it was never safegaurded at all...tho its understandable, wagic only made it "look" like ai was being offered a chance to interupt...in reality ai used to "check if it can interupt" then immedately "cancel interupt offer"...now its given a chance to interupt and cast instants...over looked in chooseblockers. 2011-01-31 13:02:40 +00:00
guzhenjie1@gmail.com
378fe1c600 Fixed the following cards reported by ph34rbot in forum:
1. Black Sun's Zenith
2. Blightwidow
3. Spiraling Duelist
4. Sword of the Meek
5. Vedalken Anatomist
6. White Sun's Zenith
7. Fixed Battle cry of following cards:
Accorder Paladin
Goblin Wardriver
Kuldotha Ringleader
Loxodon Partisan
Signal Pest
Hero of Bladehold
Hero of Oxida Ridge
Victory's Herald
2011-01-31 13:00:22 +00:00
techdragon.nguyen@gmail.com
fdd55dc22e added more debug information to ensure correct string length of MANA meta data 2011-01-31 10:30:20 +00:00
wagic.jeck
c68a989915 Jeck - Begun documentation for the WGui classes. Also updated doxygen config to support STL. 2011-01-31 10:24:06 +00:00
techdragon.nguyen@gmail.com
8af5870d48 * Added new options parameter. "SaveDetailedDeckInfo". This will force the system to save all
deck files in long format.  This is not configurable from the game.  It must be set manually
     inside options.txt.
     ie.  saveDetailedDeckInfo=1

* added extra debug information (line number inside text file) when card parser fails to recognize a line.
    - modified return value from "processConfLine()" to return 0 only when a true error occurs and print out
         "MTGDeck: Bad Line:
         [<line no>]: <line with error>"
    - processConfLine will now return 1 for lines starting with "#".  Previously it returned 0 which is incorrect
         as comments should not be considered as errors.

* removed DeckMetaDataList class from code.  This was duplicating the DeckMetaData storage in DeckManager
* new feature for deck selection screens.
   - player decks will now have an indication of what mana color it consists of.
   - Ai decks will show symbols once the player has played against the AI deck at least once.
   -- This is made possible with a new meta data inside each deck file.
        MANA:<string representing color switches - 0/1 >
2011-01-31 10:04:18 +00:00
techdragon.nguyen@gmail.com
2973158a62 added new utility to check if a file exists on system. 2011-01-31 08:53:06 +00:00
techdragon.nguyen@gmail.com
6ddaf8b74b removed draw method from GameObserver as it is no longer used since the refactor of the
player mulligan code.
2011-01-31 08:38:14 +00:00
solo81@web.de
6a5eeff8dd Added Avatar of Might. 2011-01-30 22:16:48 +00:00
solo81@web.de
015fdb7bfa Fixed Jackal Pup. 2011-01-30 21:17:48 +00:00
wrenczes@gmail.com
6675a7da31 Implemented a lazy load pattern for the deck stats - when the DeckMenu is displaying decks, it calls LoadStats() for only the ones visible in the list. This helps reduces the lag that occurs each time we attempt to load all the AI decks during match selection.
This still could be improved - DeckMetaData's constructor loads an MTGDeck object to parse out the name of a deck from its file.  This means that we crack open 106 files on the first attempt to show the list of opponent decks. I started optimizing this, but reverted, as the list itself is sorted alphabetically.  Currently, with these mods, it's still taking 4 1/2 seconds on my psp to load the opponent list on the first go around.

While at it, did some cleanup - removed the need for passing around a player pointer in some of the DeckStat functions, etc.
2011-01-30 13:06:21 +00:00
wagic.jeck
ebc7f93682 Jeck - Fixed icon indirection in Doxyfile. 2011-01-30 11:24:26 +00:00
wagic.jeck
e0f7bf26d8 Jeck - First doxygen commit, basic information on WFilter classes. Also added filter price adjustment for some of the newer basic abilities (the CANTLOSE varieties now cost more to filter). 2011-01-30 11:14:36 +00:00
solo81@web.de
329b0cf929 Added 9 cards based on rev2979.
Cloak and Dagger
Dragon Breath
Dragon Fangs
Dragon Scales
Dragon Shadow
Dragon Wings
Obsidian Battle-Axe
Sword the Meek
Veteran's Armaments
2011-01-30 10:39:16 +00:00
guzhenjie1@gmail.com
f5cfe6a3a9 Fixed Psychosis Crawler:
mana={6}
 ==> 
mana={5}
2011-01-30 09:36:05 +00:00
guzhenjie1@gmail.com
ae40e31d04 Fixed the following cards:
name=Contested Warzone
 ==> 
name=Contested War Zone

text={T}: Add {1} to your mana pool. -- {1}: Inkmoth Nexus becomes a 1/1 Blinkmoth artifact creature with flying and infect until end of turn. It's still a land.
 ==> 
text=Whenever a creature deals combat damage to you, that creature's controller gains control of Contested War Zone. -- {T}: Add {1} to your mana pool. -- {1}, {T}: Attacking creatures get +1/+0 until end of turn.

In MBS cards: 
primitive=Contested Warzone
 ==> 
primitive=Contested War Zone

[card]
primitive=Spine of Ish Sah
id=214069
rarity=R
[/card]
 ==> 
[card]
primitive=Spine of Ish Sah
id=214076
rarity=R
[/card]
2011-01-30 08:07:01 +00:00
omegablast2002@yahoo.com
c4ffc214ab moved token creator under aequip so i can do the same fix to livingweapon as i did for new target...
also refactored it a bit to remove the livingweapon and battleready copy paste code.
2011-01-30 00:01:57 +00:00
omegablast2002@yahoo.com
50aa62675e adding life loss event sending to damage from creature sources in combat. 2011-01-29 22:32:34 +00:00
omegablast2002@yahoo.com
4103a8964f fixed an oversight and an error...in lifelostthisturn for a player, if the life gain was less then 0 then i want to ADD the abs pos to the amount, not remove it...and damage from creatures is considered lifelost... 2011-01-29 22:21:18 +00:00
omegablast2002@yahoo.com
853b8ea5c6 fixed gravetitan bug reported, added new keyword "retarget" as another support for newtarget...
reworked the handling of new target...auras and equipments can not be treated the same...doing so allowed the player to then use the equip function of the card and gain a double bonus. now i call directly on the equip function to do the equiping so that it works with its own function to add the effects. keeping a person from gaining double bonus.
2011-01-29 21:58:29 +00:00
solo81@web.de
ed93646785 Reverted one unintended change from last revision. 2011-01-29 21:55:02 +00:00
solo81@web.de
938e31a258 Fixed old helm_of_kaldra.txt.
Now that Helm of Kaldra's code is complete i had to add a "choice 0" to this test.
2011-01-29 21:52:53 +00:00
solo81@web.de
ac3b65995b - Added MBS. 124 out of 155 could be added (that's over 80%).
- Added a test for livingweapon.

- Reverted one part of rev2975.
2011-01-29 20:46:37 +00:00
guzhenjie1@gmail.com
1c119f2ace Fixed Helm of Kaldra:
auto={1}:aslongas(Sword of Kaldra|mybattlefield) aslongas(Shield of Kaldra|mybattlefield):token(-47449)
 ==> 
auto=aslongas(Sword of Kaldra|mybattlefield)aslongas(Shield of Kaldra|mybattlefield)aslongas(Helm of 

Kaldra|mybattlefield) {1}:token(-47449)

Deleted id=-47449 of Kaldra token to make its card image show up.
2011-01-29 20:13:44 +00:00
solo81@web.de
5e4902c229 - Completed code for Helm of Kaldra.
- Added Kaldra token (keyword:"newtarget" --> rev2922).

- Added test for Kaldra.
2011-01-29 16:05:01 +00:00
guzhenjie1@gmail.com
11dc8ac671 Fixed Spiritual Asylum:
text=@attacking(creature|myBattlefield):sacrifice
 ==> 
auto=@attacking(creature|myBattlefield):sacrifice
text=Creatures and lands you control have shroud. (They can't be the targets of spells or abilities.) -- When a creature you control attacks, sacrifice Spiritual Asylum.
2011-01-29 15:32:32 +00:00
guzhenjie1@gmail.com
73025806ad Fixed the following cards:
Rally the Troops
Remove
Scorching Winds
Treetop Defense
Warrior's Stand
restriction=opponentblockeronly
 ==> 
restriction=opponentblockersonly

Heavy Fog
auto=preventalldamage to(controller) from(creature[attacking] ueot
 ==> 
auto=preventalldamage to(controller) from(creature[attacking]) ueot
2011-01-29 15:25:54 +00:00
solo81@web.de
d78138fe25 Added Spiritual Asylum. 2011-01-29 14:51:13 +00:00
omegablast2002@yahoo.com
4aa852ab0d the vampire restriction checks 2 or more, i had it checking for 3 or more. 2011-01-29 12:37:45 +00:00
omegablast2002@yahoo.com
4e511d2f37 fixed bloodchief acession trigger was coded wrong. 2011-01-29 12:36:44 +00:00
solo81@web.de
74bf7fdab3 Added 8 cards based on rev2963.
Artifact Ward
Avatar of Fury
Bartel Runeaxe
Gaea's Revenge
Karplusan Strider
Spellbane Centaur
Suq'Ata Firewalker
Tetsuo Umezawa
2011-01-28 23:03:45 +00:00
techdragon.nguyen@gmail.com
e74c63bc0b fixed mem leak 2011-01-28 22:57:10 +00:00
techdragon.nguyen@gmail.com
4d17ab9962 fixed a null pointer for deck editor on creating a new deck. 2011-01-28 22:23:09 +00:00
solo81@web.de
610d55d0ba Fixed several cards with cost alteration.
They were missing the restcost-part for the opponent.
2011-01-28 22:06:31 +00:00
solo81@web.de
5b2a50fbec Added 33 cards based on rev2926 (keyword "share").
[card]
name=Maelstrom Pulse
target=*[-land]
auto=all(*[share!name!]) destroy
text=Destroy target nonland permanent and all other permanents with the same name as that permanent.
mana={1}{B}{G}
type=Sorcery
[/card]


Card list --> First comment
2011-01-28 20:58:29 +00:00
omegablast2002@yahoo.com
7dfa655323 added support for cantbetargetof(something[optional])
for "this card cant be the target of green spells or abilities" style cards.

added poisoned status trigger for attacking, so far its the only place this is checked. we will see what the next set does with this keyword
2011-01-28 19:08:01 +00:00
omegablast2002@yahoo.com
6af545a797 fixed a bug that arose from giving the Ai the ability to actually interupt with something. found that ai was allowed to run "chooseBlockers()" and has been running this function EVERYTIME even before the update i made, when ever it was choosing actions during blockers. even when its blockers were already choosen and it no longer had proirity. 2011-01-28 18:26:34 +00:00
Xawotihs
cba0a59023 Removed useless attribute 2011-01-28 17:34:49 +00:00
techdragon.nguyen@gmail.com
5e651f03b2 moved mulligan code out of GameStateDuel and into Player base class. Taking a mulligan seems better
encapsulated as a player function rather than loose code inside the state transitions of GameStateDuel

Note: Inside of the mulligan code I assigned game to currentPlayerZones for clarification rather than
something functionally required.  "game" seems ambiguous as "game" is also referenced throughout the code for the GameObserver
keeping this change localized to this method until more analysis can be done.  The pattern that was here before was
game->currentPlayer->game
where the first "game" represented the GameObserver and the second the collection of zones (MTPPlayerCards) to the current player.
I would suggest changing the Player instance of game to something that represents its data, the game zones associated to the current player.
"game" seems too generic, as it can be interpreted to encompass many things rather than just dealing with the different zones (library, exile, discard, etc )
2011-01-28 13:30:29 +00:00
wrenczes@gmail.com
3187487987 Minor tweaks to Mike's map of maps cache work on stats. Mostly these changes are stylistic changes that favor more terse code, but there was one bug where a double-delete was happening - GameStateDeckViewer used to allocate its own StatsWrapper, and deleted it as part of teardown - now that the allocation is owned by the deck stats instance, it's not allowed to do the deletion anymore.
I'll also note that the mods I did to getDeckMetaDataById() are completely unnecessary - pragmatically speaking, it's doing the same thing.  The only difference is that I'm using std::find_if instead of brute iterator manipulation, and I'm using a predicate function.  For a simple check like this, it's kind of pointless, but if you need to do more complex comparisons, predicate operators can become quite powerful.
2011-01-28 10:21:23 +00:00
wrenczes@gmail.com
f4f1fdcd3d Another LF property change. 2011-01-28 06:07:14 +00:00
wrenczes@gmail.com
32cabc15c2 Forcing LF as the line ending style through SVN properties. No actual code changes here. 2011-01-28 06:00:51 +00:00