2 Commits

Author SHA1 Message Date
xawotihs
25c844c1f5 Activates SDL build in travis 2014-02-10 22:57:53 +01:00
xawotihs
34492d9096 Adds Threading implementation on SDL 2014-02-03 23:08:17 +01:00
613 changed files with 26875 additions and 81232 deletions

View File

@@ -2,64 +2,29 @@ language: cpp
branches:
except:
- latest-master
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
# Building for PSP here
- if [ "$BUILD_PSP" == "YES" ]; 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://superb-sea2.dl.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";
fi
# Building for Android here
- if [ "$BUILD_ANDROID" == "YES" ]; then
export ANDROID="android-sdk-linux/tools/android" &&
if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq; fi &&
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv &&
wget http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz -nv;
fi
- export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk"
- export PSPSDK="$PSPDEV/psp/sdk"
- export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
- export ANDROID="android-sdk-linux/tools/android"
install:
- if [ "$BUILD_PSP" == "YES" ]; then
tar -x --xz -f sdk.lzma;
fi
- if [ "$BUILD_ANDROID" == "YES" ]; then
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
tar -zxf android-sdk_r24.3.4-linux.tgz &&
$ANDROID list sdk --extended -a &&
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.0.1,android-10 --no-ui --force --no-https;
fi
- sudo add-apt-repository ppa:tobydox/mingw -y
- sudo apt-get update -qq
- if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq mingw32-x-gcc mingw32-x-qt; fi
- sudo ln -s /opt/mingw32/bin/moc /opt/mingw32/bin/i686-w64-mingw32-moc
- wget -O sdk.lzma http://sourceforge.net/projects/minpspw/files/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma/download
- tar -x --xz -f sdk.lzma
- wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv
- wget http://dl.google.com/android/android-sdk_r22-linux.tgz -nv
- tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2
- tar -zxf android-sdk_r22-linux.tgz
- $ANDROID list sdk --extended -a
- echo yes | $ANDROID update sdk -a --filter "tools","platform-tools","build-tools-19.0.1","android-10" --no-ui --force > log.txt
- sudo pip install pyjavaproperties
- sudo pip install github3.py
- sudo pip install cpp-coveralls
script: ./travis-script.sh
env:
global:
- 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="
secure: "fJgWlCFbde96OSQNGKUmowGX+ERPeqP+n1EOMf1+FJzOU4DdkTLRAlV5+5qnEX9jB/3mWN6iPpmG1qEz/SdDG3KHxJYs4ZU/Lu485O24zZ/+GdYBNsrvhPD9ckPGEMLDa1foEVTDnW0Dlkz3BCFcszjhtXGUJv7v6Pj6LRk1Mg8="
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
script: "./travis-script.sh"
after_success: ./upload-binaries.sh

View File

@@ -1,190 +0,0 @@
# Changelog
## [latest-master] (https://github.com/WagicProject/wagic/tree/latest-master)
#### 7/7/16
- *Merged pull-request:* Sorted Primitives and Cleanup Tabs [#\727] (https://github.com/WagicProject/wagic/pull/719) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* push to wagicproject [#\725] (https://github.com/WagicProject/wagic/pull/725) ([zethfoxster](https://github.com/zethfoxster))
#### 7/4/16
- *Merged pull-request:* Sorted Primitives & Updated Premium Deck Series [#\719] (https://github.com/WagicProject/wagic/pull/719) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* Fails but I have no idea why [#\717] (https://github.com/WagicProject/wagic/pull/717) ([zethfoxster](https://github.com/zethfoxster))
- *Merged pull-request:* Updated Sets [#\715] (https://github.com/WagicProject/wagic/pull/715) ([kevlahnota](https://github.com/kevlahnota))
#### 7/2/16
- *Merged pull-request:* Updated Masters, Beginners, Duels and Vault Sets [#\714] (https://github.com/WagicProject/wagic/pull/714) ([kevlahnota](https://github.com/kevlahnota))
#### 7/1/16
- *Merged pull-request:* Cleaned and Sorted all Core and Expansion Sets [#\713] (https://github.com/WagicProject/wagic/pull/713) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* Soulbond Pair Indicator [#\712] (https://github.com/WagicProject/wagic/pull/712) ([kevlahnota](https://github.com/kevlahnota))
#### 6/30/16
- *Merged pull-request:* Sorted Primitives [#\711] (https://github.com/WagicProject/wagic/pull/711) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* Add Shackle Ability [#\710] (https://github.com/WagicProject/wagic/pull/710) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* Fix Cascade, Crash fix on lastController and some corrections [#\709] (https://github.com/WagicProject/wagic/pull/709) ([kevlahnota](https://github.com/kevlahnota))
#### 6/29/16
- *Merged pull-request:* Updated Primitives and Hide Highlight Border [#\707] (https://github.com/WagicProject/wagic/pull/707) ([kevlahnota](https://github.com/kevlahnota))
- *Committed:* Pretty huge patch here(sorry old habits never die :( ) [#\6ee00c1] (https://github.com/WagicProject/wagic/commit/6ee00c138ce374d54cb3ee034575ce440288ca0e) ([zethfoxster](https://github.com/zethfoxster))
#### 6/23/16
- *Merged pull-request:* Fix producecolor:color [#\704] (https://github.com/WagicProject/wagic/pull/704) ([kevlahnota](https://github.com/kevlahnota))
#### 6/17/16
- *Merged pull-request:* Force Mounting 2 [#\699] (https://github.com/WagicProject/wagic/pull/699) ([kevlahnota](https://github.com/kevlahnota))
#### 6/16/16
- *Merged pull-request:* Import Deck Options [#\697] (https://github.com/WagicProject/wagic/pull/697) ([kevlahnota](https://github.com/kevlahnota))
#### 6/11/16
- *Merged pull-request:* Refactor & Devotion [#\690] (https://github.com/WagicProject/wagic/pull/690) ([kevlahnota](https://github.com/kevlahnota))
#### 6/9/16
- *Closed issue:* Clone goes to graveyard before being able to copy anything [\#546](https://github.com/WagicProject/wagic/issues/546)
- *Closed issue:* Blinking an aura causes freeze [\#541](https://github.com/WagicProject/wagic/issues/541)
- *Closed issue:* Profile name at upper left side is not being updated correctly [\#469](https://github.com/WagicProject/wagic/issues/469)
- *Closed issue:* Giving card C protection from X does not remove cards attached to C which have quality X [\#464](https://github.com/WagicProject/wagic/issues/464)
- *Closed issue:* (graphical glitch) wood / gold textures [\#461](https://github.com/WagicProject/wagic/issues/461)
- *Closed issue:* Clone does not get all P/T bonuses [\#448](https://github.com/WagicProject/wagic/issues/448)
- *Closed issue:* Card "threaten" messes up the GUI [\#473](https://github.com/WagicProject/wagic/issues/473)
#### 6/7/16
- *Closed issue:* Emrakul isn't killed by creatures with deathtouch [\#597](https://github.com/WagicProject/wagic/issues/597)
#### 6/3/16
- *Merged pull-request:* Cost Increaser & Reducer Fix [#\676] (https://github.com/WagicProject/wagic/pull/676) ([kevlahnota](https://github.com/kevlahnota))
#### 5/30/16
- *Fixed Bug:* deckstats crash when "unlock cards" is used [#\668] (https://github.com/WagicProject/wagic/issues/668) ([zethfoxster](https://github.com/zethfoxster))
#### 5/26/16
- *Closed issue:* Nasty memleak crashing devices and its fix. [#\664] (https://github.com/WagicProject/wagic/issues/664) ([zethfoxster](https://github.com/zethfoxster))
#### 11/08/15
- *Merged pull-request:* produce mana for lands you/opponent could produce [#\658] (https://github.com/WagicProject/wagic/pull/658) ([kevlahnota](https://github.com/kevlahnota))
#### 11/07/15
- *Merged pull-request:* Manacost Changes, Anyzone for CDA, PayZero Cost [#\656] (https://github.com/WagicProject/wagic/pull/656) ([kevlahnota](https://github.com/kevlahnota))
#### 10/31/15
- *Merged pull-request:* Exile Zone, Altercost and Hand modifier [#\653] (https://github.com/WagicProject/wagic/pull/653) ([kevlahnota](https://github.com/kevlahnota))
#### 10/17/15
- *Merged pull-request:* Fix issue #473 #784 [#\646] (https://github.com/WagicProject/wagic/pull/646) ([kevlahnota](https://github.com/kevlahnota))
#### 10/15/15
- *Merged pull-request:* Bug Fix: Planeswalker Rule & ABlink return to play ability for Aura cards [#\644] (https://github.com/WagicProject/wagic/pull/644) ([kevlahnota](https://github.com/kevlahnota))
#### 10/14/15
- *Merged pull-request:* Fix Legend Rule [#\643] (https://github.com/WagicProject/wagic/pull/643) ([kevlahnota](https://github.com/kevlahnota))
#### 10/12/15
- *Merged pull-request:* Fix crash bug, support doubled res texture for background, avatars, menutitle [#\641] (https://github.com/WagicProject/wagic/pull/641) ([kevlahnota](https://github.com/kevlahnota))
#### 10/02/15
- *Merged pull-request:* LKI for power, toughness and basic abilities, produceextra ability [#\636] (https://github.com/WagicProject/wagic/pull/636) ([kevlahnota](https://github.com/kevlahnota))
#### 09/29/15
- *Merged pull-request:* Fix Recover Cards, Cloner, Copier, and Preliminary support for Madness [#\635] (https://github.com/WagicProject/wagic/pull/635) ([kevlahnota](https://github.com/kevlahnota))
#### 09/22/15
- *Merged pull-request:* Auraward, unattach event and statebased action for protection from quality [#\631] (https://github.com/WagicProject/wagic/pull/631) ([kevlahnota](https://github.com/kevlahnota))
#### 09/19/15
- *Merged pull-request:* PT Switch like Layer 7e and Token Indicator [#\626] (https://github.com/WagicProject/wagic/pull/626) ([kevlahnota](https://github.com/kevlahnota))
#### 09/18/15
- *Merged pull-request:* Token Cloning fix and colored PT [#\624] (https://github.com/WagicProject/wagic/pull/624) ([kevlahnota](https://github.com/kevlahnota))
#### 09/15/15
- *Merged pull-request:* CDA and X manacost on stack [\#623] (https://github.com/WagicProject/wagic/pull/623) ([kevlahnota](https://github.com/kevlahnota))
#### 08/12/14
- *Merged pull-request:* Fix for guild_keywords Devotion, added some "Chroma" cards [\#606](https://github.com/WagicProject/wagic/pull/606) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* added guild keywords, added specific life cost [\#605](https://github.com/WagicProject/wagic/pull/605) ([kevlahnota](https://github.com/kevlahnota))
- *Merged pull-request:* Buyback issue and a fix [\#604](https://github.com/WagicProject/wagic/pull/604) ([apollovy](https://github.com/apollovy))
- *Merged pull-request:* Feature/ios update xcode5.1 [\#602](https://github.com/WagicProject/wagic/pull/602) ([mjnguyen](https://github.com/mjnguyen))
- *Merged pull-request:* Remove dead code and fix circular initialization [\#601](https://github.com/WagicProject/wagic/pull/601) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* update android build tools version [\#600](https://github.com/WagicProject/wagic/pull/600) ([Rolzad73](https://github.com/Rolzad73))
- *Merged pull-request:* Attempt to make android tools fetching for TravisCI explicit and futureproof [\#599](https://github.com/WagicProject/wagic/pull/599) ([Rolzad73](https://github.com/Rolzad73))
- *Merged pull-request:* Damager keyword [\#598](https://github.com/WagicProject/wagic/pull/598) ([bjornsnoen](https://github.com/bjornsnoen))
- *Merged pull-request:* Fix a rarity mistake and a grammatical error [\#596](https://github.com/WagicProject/wagic/pull/596) ([bjornsnoen](https://github.com/bjornsnoen))
- *Merged pull-request:* Fix bug where the phase wheel got out of sync [\#588](https://github.com/WagicProject/wagic/pull/588) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* More easing [\#586](https://github.com/WagicProject/wagic/pull/586) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Added Avatar Tokens created by Ajani Goldmane. [\#585](https://github.com/WagicProject/wagic/pull/585) ([bjornsnoen](https://github.com/bjornsnoen))
- *Merged pull-request:* Cleanup, usability fixes and source code documentation for DeckView.h and GridDeckView.h [\#583](https://github.com/WagicProject/wagic/pull/583) ([ZobyTwo](https://github.com/ZobyTwo))
- *Fixed bug:* Blight does not destroy at the end of turn but right now [\#592](https://github.com/WagicProject/wagic/issues/592)
- *Fixed bug:* game freezes on Android when the phone returns from "sleep mode" [\#544](https://github.com/WagicProject/wagic/issues/544)
- *Fixed bug:* Android port needs to be able to respond to attaching/detaching devices to it [\#522](https://github.com/WagicProject/wagic/issues/522)
## [alpha-195] (https://github.com/WagicProject/wagic/tree/alpha-195)
#### 07/12/13
- *Merged pull-request:* Reset positions and filters when reopening the editor [\#578](https://github.com/WagicProject/wagic/pull/578) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Deck viewer [\#577](https://github.com/WagicProject/wagic/pull/577) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Do not specify the system directory in JGE [\#576](https://github.com/WagicProject/wagic/pull/576) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Changed Travis build file to use Android API 10 and Android build tools 18.1.1 [\#575](https://github.com/WagicProject/wagic/pull/575) ([Rolzad73](https://github.com/Rolzad73))
- *Merged pull-request:* Feature/play from grave [\#574](https://github.com/WagicProject/wagic/pull/574) ([pankdm](https://github.com/pankdm))
- *Merged pull-request:* Fix Valgrind warnings appearing during the test suit. [\#573](https://github.com/WagicProject/wagic/pull/573) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Strings 2 [\#572](https://github.com/WagicProject/wagic/pull/572) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Android travis ci [\#570](https://github.com/WagicProject/wagic/pull/570) ([xawotihs](https://github.com/xawotihs))
- *Merged pull-request:* Android NDK build fix [\#569](https://github.com/WagicProject/wagic/pull/569) ([Rolzad73](https://github.com/Rolzad73))
- *Merged pull-request:* Add a few namespaces and fix header guards. [\#564](https://github.com/WagicProject/wagic/pull/564) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Updated deckmenu.cpp to properly render deck description and summary [\#562](https://github.com/WagicProject/wagic/pull/562) ([citiral](https://github.com/citiral))
- *Merged pull-request:* Fix some valgrind memcheck warnings. However there remains one... [\#561](https://github.com/WagicProject/wagic/pull/561) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Remove some dead code [\#560](https://github.com/WagicProject/wagic/pull/560) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Show output only for failing tests [\#559](https://github.com/WagicProject/wagic/pull/559) ([pankdm](https://github.com/pankdm))
- *Merged pull-request:* Defines/Typos [\#557](https://github.com/WagicProject/wagic/pull/557) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Simplify Damage::resolve a bit [\#556](https://github.com/WagicProject/wagic/pull/556) ([ZobyTwo](https://github.com/ZobyTwo))
- *Merged pull-request:* Fix cranial plating [\#555](https://github.com/WagicProject/wagic/pull/555) ([pankdm](https://github.com/pankdm))
- *Merged pull-request:* Android cleanup [\#1](https://github.com/WagicProject/wagic/pull/1) ([Rolzad73](https://github.com/Rolzad73))
- *Fixed bug:* Iona and Nin don't work [\#527](https://github.com/WagicProject/wagic/issues/527)
- *Closed issue:* Less verbose output of tests at Travis [\#558](https://github.com/WagicProject/wagic/issues/558)
## [wagic-0.19.2] (https://github.com/WagicProject/wagic/tree/wagic-v0.19.2)
#### 28/10/13

View File

@@ -178,6 +178,8 @@ private:
float mSpacing;
PIXEL_TYPE mColor;
int mBlend;
int mBase;
};

View File

@@ -598,6 +598,8 @@ private:
GLint prog2_positionLoc;
GLint prog2_texCoordLoc;
GLint prog2_colorLoc;
// MVP matrix
ESMatrix prog2_mvpMatrix;
// Uniform locations
GLint prog2_mvpLoc;
@@ -610,11 +612,13 @@ private:
int mCurrentTextureFormat;
#endif
#ifdef PSP
bool mVsync;
int mTexCounter;
#endif
int mSwizzle;
int mTexCounter;
int mCurrentTextureFilter;
int mCurrTexBlendSrc;

View File

@@ -23,32 +23,28 @@
#include "SLES/OpenSLES_Android.h"
#elif defined USE_PHONON
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
#elif (defined QT_CONFIG)
#include "QMediaPlayer"
#include "QMediaPlaylist"
#include "QSoundEffect"
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
#elif defined WIN32
#include <windows.h>
#include <windows.h>
#define WITH_FMOD
#elif defined (PSP)
#include <pspgu.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <time.h>
#include <string.h>
#include <pspaudiolib.h>
#include <psprtc.h>
#include <pspgu.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <time.h>
#include <string.h>
#include <pspaudiolib.h>
#include <psprtc.h>
#include "JAudio.h"
#include "JMP3.h"
#include "JAudio.h"
#include "JMP3.h"
#endif
#ifdef WITH_FMOD
#include "../Dependencies/include/fmod.h"
#include "../Dependencies/include/fmod.h"
#endif
//------------------------------------------------------------------------------------------------
@@ -71,7 +67,7 @@ public:
#ifdef USE_PHONON
Phonon::AudioOutput* mOutput;
Phonon::MediaObject* mMediaObject;
public slots:
public slots:
void seekAtTheBegining();
#elif defined (PSP)
JMP3* mTrack;
@@ -86,10 +82,6 @@ public slots:
SLPlayItf playInterface;
SLSeekItf seekInterface;
SLVolumeItf musicVolumeInterface;
#elif (defined QT_CONFIG)
QMediaPlaylist* playlist;
QMediaPlayer* player;
string fullpath;
#else
void* mTrack;
#endif //WITH_FMOD
@@ -100,15 +92,13 @@ public slots:
//------------------------------------------------------------------------------------------------
class JSample
{
public:
public:
JSample();
~JSample();
unsigned long fileSize();
#if (defined QT_CONFIG) && (!defined USE_PHONON)
QMediaPlayer* effect;
void* mSample;
#elif defined (PSP)
#if defined (PSP)
WAVDATA *mSample;
#elif defined (IOS)
std::string filename;
@@ -143,130 +133,126 @@ class JSoundSystem
public:
//////////////////////////////////////////////////////////////////////////
/// Get the singleton instance
///
//////////////////////////////////////////////////////////////////////////
static JSoundSystem* GetInstance();
//////////////////////////////////////////////////////////////////////////
/// Get the singleton instance
///
//////////////////////////////////////////////////////////////////////////
static JSoundSystem* GetInstance();
static void Destroy();
static void Destroy();
//////////////////////////////////////////////////////////////////////////
/// Load music.
///
/// @note MP3 is the only supported format for the moment.
///
/// @param filename - Name of the music file.
///
//////////////////////////////////////////////////////////////////////////
JMusic *LoadMusic(const char *fileName);
//////////////////////////////////////////////////////////////////////////
/// Load music.
///
/// @note MP3 is the only supported format for the moment.
///
/// @param filename - Name of the music file.
///
//////////////////////////////////////////////////////////////////////////
JMusic *LoadMusic(const char *fileName);
//////////////////////////////////////////////////////////////////////////
/// Delete music from memory.
///
/// @param music - Music to be deleted.
///
//////////////////////////////////////////////////////////////////////////
//void FreeMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Delete music from memory.
///
/// @param music - Music to be deleted.
///
//////////////////////////////////////////////////////////////////////////
//void FreeMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Play music.
///
/// @param music - Music to be played.
/// @param looping - Play the music in a loop.
///
//////////////////////////////////////////////////////////////////////////
void PlayMusic(JMusic *music, bool looping = false);
//////////////////////////////////////////////////////////////////////////
/// Play music.
///
/// @param music - Music to be played.
/// @param looping - Play the music in a loop.
///
//////////////////////////////////////////////////////////////////////////
void PlayMusic(JMusic *music, bool looping = false);
//////////////////////////////////////////////////////////////////////////
/// Stop playing.
///
/// @param music - Music to be stopped.
///
//////////////////////////////////////////////////////////////////////////
void StopMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Stop playing.
///
/// @param music - Music to be stopped.
///
//////////////////////////////////////////////////////////////////////////
void StopMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Resume playing.
///
/// @param music - Music to be resumed.
///
//////////////////////////////////////////////////////////////////////////
void ResumeMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Resume playing.
///
/// @param music - Music to be resumed.
///
//////////////////////////////////////////////////////////////////////////
void ResumeMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Pause playing.
///
/// @param music - Music to be paused.
///
//////////////////////////////////////////////////////////////////////////
void PauseMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Pause playing.
///
/// @param music - Music to be paused.
///
//////////////////////////////////////////////////////////////////////////
void PauseMusic(JMusic *music);
//////////////////////////////////////////////////////////////////////////
/// Load sound effect.
///
/// @note WAV sound effect only.
///
/// @param fileName - Sound effect for loading.
///
//////////////////////////////////////////////////////////////////////////
JSample *LoadSample(const char *fileName);
//////////////////////////////////////////////////////////////////////////
/// Load sound effect.
///
/// @note WAV sound effect only.
///
/// @param fileName - Sound effect for loading.
///
//////////////////////////////////////////////////////////////////////////
JSample *LoadSample(const char *fileName);
//////////////////////////////////////////////////////////////////////////
/// Delete sound effect from memory.
///
/// @param sample - Sound to be deleted.
///
//////////////////////////////////////////////////////////////////////////
//void FreeSample(JSample *sample);
//////////////////////////////////////////////////////////////////////////
/// Delete sound effect from memory.
///
/// @param sample - Sound to be deleted.
///
//////////////////////////////////////////////////////////////////////////
//void FreeSample(JSample *sample);
//////////////////////////////////////////////////////////////////////////
/// Play sound effect.
///
/// @param sample - Sound for playing.
///
//////////////////////////////////////////////////////////////////////////
void PlaySample(JSample *sample);
//////////////////////////////////////////////////////////////////////////
/// Play sound effect.
///
/// @param sample - Sound for playing.
///
//////////////////////////////////////////////////////////////////////////
void PlaySample(JSample *sample);
//////////////////////////////////////////////////////////////////////////
/// Set volume for audio playback.
///
/// @param volume - New volume.
///
//////////////////////////////////////////////////////////////////////////
void SetVolume(int volume);
//////////////////////////////////////////////////////////////////////////
/// Set volume for audio playback.
///
/// @param volume - New volume.
///
//////////////////////////////////////////////////////////////////////////
void SetVolume(int volume);
void SetMusicVolume(int volume);
void SetMusicVolume(int volume);
void SetSfxVolume(int volume);
void SetSfxVolume(int volume);
int mChannel;
int mChannel;
protected:
JSoundSystem();
~JSoundSystem();
JSoundSystem();
~JSoundSystem();
void InitSoundSystem();
void DestroySoundSystem();
void InitSoundSystem();
void DestroySoundSystem();
private:
#if (defined PSP || defined ANDROID)
JMusic *mCurrentMusic;
JMusic *mCurrentMusic;
JSample *mCurrentSample;
#endif
int mVolume;
#ifndef IOS
int mMusicVolume;
#endif
int mSampleVolume;
int mVolume;
int mMusicVolume;
int mSampleVolume;
static JSoundSystem* mInstance;
static JSoundSystem* mInstance;
};
#endif

View File

@@ -18,11 +18,12 @@ using namespace std;
#define MID_POINT_THRESHOLD 1.0f
//////////////////////////////////////////////////////////////////////////
/// Position of a single dot on screen.
///
//////////////////////////////////////////////////////////////////////////
class JPoint
class Point
{
public:
@@ -33,13 +34,13 @@ public:
/// @param _y - Y position.
///
//////////////////////////////////////////////////////////////////////////
JPoint(float _x, float _y) { x = _x; y = _y; }
Point(float _x, float _y) { x = _x; y = _y; }
//////////////////////////////////////////////////////////////////////////
/// Constructor, set position to default (0.0f, 0.0f)
///
//////////////////////////////////////////////////////////////////////////
JPoint() { x = 0.0f; y = 0.0f; }
Point() { x = 0.0f; y = 0.0f; }
float x; ///< X position.
float y; ///< Y position.
@@ -94,7 +95,7 @@ public:
/// @param pt - Control point.
///
//////////////////////////////////////////////////////////////////////////
void AddControlPoint(const JPoint &pt);
void AddControlPoint(const Point &pt);
//////////////////////////////////////////////////////////////////////////
/// Get a control point of the spline.
@@ -104,7 +105,7 @@ public:
/// @return Control point.
///
//////////////////////////////////////////////////////////////////////////
void GetControlPoint(JPoint &point, int index);
void GetControlPoint(Point &point, int index);
//////////////////////////////////////////////////////////////////////////
/// Work out all pixels of the spline.
@@ -127,7 +128,7 @@ public:
/// @return Position of the desire point.
///
//////////////////////////////////////////////////////////////////////////
void PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3);
void PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3);
//////////////////////////////////////////////////////////////////////////
/// Get a number of pixels for this spline.
@@ -145,7 +146,7 @@ public:
/// @return Position of the desire point.
///
//////////////////////////////////////////////////////////////////////////
void GetPixel(JPoint &point, int index);
void GetPixel(Point &point, int index);
//////////////////////////////////////////////////////////////////////////
/// Render the spline to screen.
@@ -155,8 +156,8 @@ public:
private:
vector<JPoint> mMidPoints;
vector<JPoint> mPixels;
vector<Point> mMidPoints;
vector<Point> mPixels;
int mCount;
};

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) && !defined(SDL_CONFIG)
#include <boost/date_time.hpp>
#ifdef WIN32
@@ -311,7 +311,9 @@ namespace boost
#include <QMutex>
#include <QThread>
#include <QSharedPointer>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include "../include/JLogger.h"
@@ -418,25 +420,23 @@ namespace boost
virtual void run() = 0;
};
typedef boost::shared_ptr<detail::thread_data_base> thread_data_ptr;
typedef QSharedPointer<detail::thread_data_base> thread_data_ptr;
template<typename F, typename A1>
template<typename F>
class thread_data : public detail::thread_data_base
{
public:
thread_data(F f_, A1 a1_) : f(f_), a1(a1_)
thread_data(F f_) : f(f_)
{
}
void run()
{
f(a1);
f();
}
private:
F f;
A1 a1;
void operator=(thread_data&);
thread_data(thread_data&);
@@ -493,7 +493,7 @@ namespace boost
}
template <class F,class A1>
thread(F f, A1 a1) : mThreadInfo(make_thread_info(f, a1))
thread(F f, A1 a1) : mThreadInfo(make_thread_info(boost::bind(boost::type<void>(), f, a1)))
{
mpThread = new threadImpl(mThreadInfo);
LOG("Calling start func");
@@ -510,10 +510,10 @@ namespace boost
}
private:
template<typename F, typename A1>
static inline detail::thread_data_ptr make_thread_info(F f, A1 a1)
template<typename F>
static inline detail::thread_data_ptr make_thread_info(F f)
{
return detail::thread_data_ptr(new detail::thread_data<F, A1>(f, a1));
return detail::thread_data_ptr(new detail::thread_data<F>(f));
}
detail::thread_data_ptr mThreadInfo;
@@ -611,6 +611,226 @@ namespace boost
}
}
#elif defined(SDL_CONFIG)
#include "SDL_thread.h"
#include "SDL_timer.h"
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include "../include/JLogger.h"
namespace boost
{
template <class Mutex>
struct unique_lock
{
unique_lock(Mutex& inMutex) : mMutex(&inMutex)
{
mMutex->lock();
}
~unique_lock()
{
mMutex->unlock();
}
Mutex* mMutex;
};
class mutex
{
public:
typedef unique_lock<mutex> scoped_lock;
mutex()
: mpSDLMutex(0)
{
mpSDLMutex = SDL_CreateMutex();
}
~mutex()
{
SDL_DestroyMutex(mpSDLMutex);
}
void lock()
{
SDL_mutexP(mpSDLMutex);
}
void unlock()
{
SDL_mutexV(mpSDLMutex);
}
SDL_mutex* mpSDLMutex;
private:
mutex(mutex const&);
mutex& operator=(mutex const&);
};
class recursive_mutex
{
public:
typedef unique_lock<recursive_mutex> scoped_lock;
recursive_mutex()
: mpSDLMutex(0)
{
mpSDLMutex = SDL_CreateMutex();
}
~recursive_mutex()
{
SDL_DestroyMutex(mpSDLMutex);
}
void lock()
{
SDL_mutexP(mpSDLMutex);
}
void unlock()
{
SDL_mutexV(mpSDLMutex);
}
SDL_mutex* mpSDLMutex;
private:
recursive_mutex(recursive_mutex const&);
recursive_mutex& operator=(recursive_mutex const&);
};
/**
** Emulating boost::thread configuration glue, with some shortcuts
** This detail namespace is a distillation of boost's thread.hpp, thread_data.hpp.
*/
namespace detail
{
struct thread_data_base
{
thread_data_base()
{
}
virtual ~thread_data_base()
{
}
virtual void run() = 0;
};
typedef boost::shared_ptr<detail::thread_data_base> thread_data_ptr;
template<typename F>
class thread_data : public detail::thread_data_base
{
public:
thread_data(F f_) : f(f_)
{
}
void run()
{
f();
}
private:
F f;
void operator=(thread_data&);
thread_data(thread_data&);
};
} //namespace detail
/**
** A simplistic implementation of boost::thread, using QThread.
**
*/
class thread
{
/*
** Helper class for sceKernelStartThread, which passes args by value, not by reference
** We use this struct to wrap any pointers that we want to pass to the worker thread.
*/
struct CallbackData
{
CallbackData(detail::thread_data_ptr inThreadInfo)
: mThreadInfo(inThreadInfo)
{
}
detail::thread_data_ptr mThreadInfo;
};
public:
thread()
{
}
template <class F,class A1>
thread(F f, A1 a1) : mThreadInfo(make_thread_info(boost::bind(boost::type<void>(), f, a1)))
{
mpSDLThread = SDL_CreateThread(ThreadProc, &mThreadInfo);
}
~thread()
{
}
void join()
{
int status;
SDL_WaitThread(mpSDLThread, &status);
}
private:
static int ThreadProc(void *inParam)
{
detail::thread_data_ptr* threadInfo = reinterpret_cast<detail::thread_data_ptr* >(inParam);
CallbackData callbackData(*threadInfo);
LOG("Entering thread::ThreadProc");
callbackData.mThreadInfo->run();
return 0;
}
template<typename F>
static inline detail::thread_data_ptr make_thread_info(F f)
{
return detail::thread_data_ptr(new detail::thread_data<F>(f));
}
detail::thread_data_ptr mThreadInfo;
SDL_Thread* mpSDLThread;
};
namespace posix_time
{
typedef unsigned int milliseconds;
}
/**
** boost's platform neutral sleep call.
*/
namespace this_thread
{
inline void sleep(boost::posix_time::milliseconds const& time)
{
SDL_Delay(time);
}
}
}
#endif
#endif // THREADING_H

View File

@@ -137,14 +137,14 @@ private slots:
private:
int lastPosx(){
#if QT_VERSION >= 0x050100
#if QT_VERSION >= 0x050000
return m_lastPos.x()*devicePixelRatio();
#else
return m_lastPos.x();
#endif
}
int lastPosy(){
#if QT_VERSION >= 0x050100
#if QT_VERSION >= 0x050000
return m_lastPos.y()*devicePixelRatio();
#else
return m_lastPos.y();

View File

@@ -38,12 +38,6 @@ The content that users should not be touching.
#include <QDir>
#endif
/*
#ifdef IOS
#include <Foundation/Foundation.h>
#endif
*/
JFileSystem* JFileSystem::mInstance = NULL;
JZipCache::JZipCache()
@@ -254,7 +248,7 @@ void JFileSystem::clearZipCache()
bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL */)
{
if (mZipAvailable && mZipFile.is_open())
if (mZipAvailable && mZipFile != NULL)
{
if (mZipFileName != zipfile)
DetachZipFile(); // close the previous zip file

View File

@@ -71,7 +71,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
element->QueryFloatAttribute("x", &xx);
element->QueryFloatAttribute("y", &yy);
JPoint pt(xx*xscale, yy*yscale);
Point pt(xx*xscale, yy*yscale);
AddControlPoint(pt);
}
@@ -84,7 +84,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
void JSpline::PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3)
void JSpline::PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3)
{
float t2 = t * t;
float t3 = t2 * t;
@@ -113,8 +113,8 @@ void JSpline::GeneratePixels()
x = mMidPoints[1].x;
y = mMidPoints[1].y;
JPoint newPt(x, y);
JPoint extraPt;
Point newPt(x, y);
Point extraPt;
mPixels.push_back(newPt);
@@ -151,13 +151,13 @@ void JSpline::GeneratePixels()
}
void JSpline::AddControlPoint(const JPoint &pt)
void JSpline::AddControlPoint(const Point &pt)
{
mMidPoints.push_back(pt);
}
void JSpline::GetControlPoint(JPoint &point, int index)
void JSpline::GetControlPoint(Point &point, int index)
{
if (index < (int)mMidPoints.size())
{
@@ -167,7 +167,7 @@ void JSpline::GetControlPoint(JPoint &point, int index)
}
void JSpline::GetPixel(JPoint &point, int index)
void JSpline::GetPixel(Point &point, int index)
{
if (index < (int)mPixels.size())
{

View File

@@ -10,6 +10,5 @@ void resumeGame();
@property (nonatomic, retain) id eaglView;
@property (nonatomic, retain) UITextField *inputField;
@property (nonatomic, assign) BOOL bannerIsVisible;
- (void)toggleKeyboardWithState: (NSString *) initialText;
@end

View File

@@ -53,28 +53,28 @@
- (void)viewWillAppear:(BOOL)animated {
NSLog(@"EAGL ViewController - view Will Appear");
[(id)self.view resumeGame];
[self.view resumeGame];
}
- (void)viewWillDisappear:(BOOL)animated
{
[(id)self.view pauseGame];
[self.view pauseGame];
}
- (void)pauseGame
{
[(id)self.view pauseGame];
[self.view pauseGame];
}
- (void)resumeGame
{
[(id)self.view resumeGame];
[self.view resumeGame];
}
- (void)endGame
{
[(id)self.view endGame];
[self.view endGame];
}
- (void)viewDidAppear:(BOOL)animated {

View File

@@ -337,7 +337,7 @@
- (void)applicationWillTerminate:(UIApplication *)application
{
[(id)self.glViewController.view destroyGame];
[self.glViewController.view destroyGame];
}
- (void)initializeKeyboard: (id) initialState

View File

@@ -22,8 +22,6 @@
JMusic::JMusic()
#ifdef USE_PHONON
: mOutput(0), mMediaObject(0)
#elif defined QT_CONFIG
: playlist(0), player(0)
#endif
{
}
@@ -42,16 +40,11 @@ int JMusic::getPlayTime(){
JMusic::~JMusic()
{
#if defined USE_PHONON
#ifdef USE_PHONON
if(mOutput)
delete mOutput;
if(mMediaObject)
delete mMediaObject;
#elif defined QT_CONFIG
if(player)
delete player;
if(playlist)
delete playlist;
#elif defined WITH_FMOD
JSoundSystem::GetInstance()->StopMusic(this);
if (mTrack) FSOUND_Sample_Free(mTrack);
@@ -76,10 +69,7 @@ JSample::JSample()
JSample::~JSample()
{
#if (defined QT_CONFIG) && (!defined USE_PHONON)
if(effect)
delete effect;
#elif USE_PHONON
#ifdef USE_PHONON
if(mOutput)
delete mOutput;
if(mMediaObject)
@@ -154,84 +144,65 @@ void JSoundSystem::DestroySoundSystem()
JMusic *JSoundSystem::LoadMusic(const char *fileName)
{
JMusic* music = NULL;
#if (defined QT_CONFIG) && (!defined USE_PHONON)
music = new JMusic();
if (music)
{
music->player = new QMediaPlayer;
music->player->setVolume(100);
music->playlist = new QMediaPlaylist;
music->fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
music->playlist->addMedia(QUrl::fromLocalFile(music->fullpath.c_str()));
music->playlist->setCurrentIndex(0);
}
#elif defined USE_PHONON
music = new JMusic();
if (music)
{
music->mOutput = new Phonon::AudioOutput(Phonon::GameCategory, 0);
music->mMediaObject = new Phonon::MediaObject(0);
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
music->mMediaObject->setCurrentSource(QString(fullpath.c_str()));
Phonon::Path mediapath = Phonon::createPath(music->mMediaObject, music->mOutput);
Q_ASSERT(mediapath.isValid());
}
#ifdef USE_PHONON
JMusic* music = new JMusic();
if (music)
{
music->mOutput = new Phonon::AudioOutput(Phonon::GameCategory, 0);
music->mMediaObject = new Phonon::MediaObject(0);
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
music->mMediaObject->setCurrentSource(QString(fullpath.c_str()));
Phonon::Path mediapath = Phonon::createPath(music->mMediaObject, music->mOutput);
Q_ASSERT(mediapath.isValid());
}
return music;
#elif (defined WITH_FMOD)
music = new JMusic();
if (music)
JMusic* music = new JMusic();
if (music)
{
JFileSystem* fileSystem = JFileSystem::GetInstance();
if (fileSystem->OpenFile(fileName))
{
int size = fileSystem->GetFileSize();
char *buffer = new char[size];
fileSystem->ReadFile(buffer, size);
music->mTrack = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
JFileSystem* fileSystem = JFileSystem::GetInstance();
if (fileSystem->OpenFile(fileName))
{
int size = fileSystem->GetFileSize();
char *buffer = new char[size];
fileSystem->ReadFile(buffer, size);
music->mTrack = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
delete[] buffer;
fileSystem->CloseFile();
}
delete[] buffer;
fileSystem->CloseFile();
}
}
return music;
#else
cerr << fileName << endl;
return NULL;
#endif
return music;
}
void JSoundSystem::PlayMusic(JMusic *music, bool looping)
{
#if (defined QT_CONFIG) && (!defined USE_PHONON)
if(music && music->player && music->playlist)
#ifdef USE_PHONON
if (music && music->mMediaObject && music->mOutput)
{
if(looping)
{
if(looping)
music->playlist->setPlaybackMode(QMediaPlaylist::Loop);
music->player->setPlaylist(music->playlist);
music->player->play();
music->mMediaObject->connect(music->mMediaObject, SIGNAL(aboutToFinish()), music, SLOT(seekAtTheBegining()));
}
#elif USE_PHONON
if (music && music->mMediaObject && music->mOutput)
{
if(looping)
{
music->mMediaObject->connect(music->mMediaObject, SIGNAL(aboutToFinish()), music, SLOT(seekAtTheBegining()));
}
music->mOutput->setVolume((qreal)mVolume*0.01);
music->mMediaObject->play();
music->mOutput->setVolume((qreal)mVolume*0.01);
music->mMediaObject->play();
}
}
#elif (defined WITH_FMOD)
if (music && music->mTrack)
if (music && music->mTrack)
{
mChannel = FSOUND_PlaySound(mChannel, music->mTrack);
SetMusicVolume(mVolume);
mChannel = FSOUND_PlaySound(mChannel, music->mTrack);
SetMusicVolume(mVolume);
if (looping)
FSOUND_SetLoopMode(mChannel, FSOUND_LOOP_NORMAL);
else
FSOUND_SetLoopMode(mChannel, FSOUND_LOOP_OFF);
if (looping)
FSOUND_SetLoopMode(mChannel, FSOUND_LOOP_NORMAL);
else
FSOUND_SetLoopMode(mChannel, FSOUND_LOOP_OFF);
}
#else
music = 0;
@@ -242,12 +213,7 @@ void JSoundSystem::PlayMusic(JMusic *music, bool looping)
void JSoundSystem::StopMusic(JMusic *music)
{
#if (defined QT_CONFIG) && (!defined USE_PHONON)
if (music && music->player && music->playlist)
{
music->player->stop();
}
#elif defined USE_PHONON
#ifdef USE_PHONON
if (music && music->mMediaObject && music->mOutput)
{
music->mMediaObject->stop();
@@ -298,61 +264,47 @@ void JSoundSystem::SetSfxVolume(int volume){
JSample *JSoundSystem::LoadSample(const char *fileName)
{
JSample* sample = NULL;
#if (defined QT_CONFIG) && (!defined USE_PHONON)
sample = new JSample();
if (sample)
{
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
sample->effect = new QMediaPlayer;
sample->effect->setMedia(QUrl::fromLocalFile(fullpath.c_str()));
sample->effect->setVolume(100);
sample->mSample = &(sample->effect);
}
#elif (defined USE_PHONON)
sample = new JSample();
if (sample)
{
sample->mOutput = new Phonon::AudioOutput(Phonon::GameCategory, 0);
sample->mMediaObject = new Phonon::MediaObject(0);
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
sample->mMediaObject->setCurrentSource(QString(fullpath.c_str()));
Phonon::Path mediapath = Phonon::createPath(sample->mMediaObject, sample->mOutput);
Q_ASSERT(mediapath.isValid());
}
#if (defined USE_PHONON)
JSample* sample = new JSample();
if (sample)
{
sample->mOutput = new Phonon::AudioOutput(Phonon::GameCategory, 0);
sample->mMediaObject = new Phonon::MediaObject(0);
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
sample->mMediaObject->setCurrentSource(QString(fullpath.c_str()));
Phonon::Path mediapath = Phonon::createPath(sample->mMediaObject, sample->mOutput);
Q_ASSERT(mediapath.isValid());
}
return sample;
#elif (defined WITH_FMOD)
sample = new JSample();
if (sample)
JSample* sample = new JSample();
if (sample)
{
JFileSystem* fileSystem = JFileSystem::GetInstance();
if (fileSystem->OpenFile(fileName))
{
int size = fileSystem->GetFileSize();
char *buffer = new char[size];
fileSystem->ReadFile(buffer, size);
sample->mSample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
JFileSystem* fileSystem = JFileSystem::GetInstance();
if (fileSystem->OpenFile(fileName))
{
int size = fileSystem->GetFileSize();
char *buffer = new char[size];
fileSystem->ReadFile(buffer, size);
sample->mSample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
delete[] buffer;
fileSystem->CloseFile();
}else
sample->mSample = NULL;
delete[] buffer;
fileSystem->CloseFile();
}else
sample->mSample = NULL;
}
return sample;
#else
cerr << fileName << endl;
return NULL;
#endif
return sample;
}
void JSoundSystem::PlaySample(JSample *sample)
{
#if (defined QT_CONFIG) && (!defined USE_PHONON)
if(sample)
{
sample->effect->play();
}
#elif defined USE_PHONON
#ifdef USE_PHONON
if (sample && sample->mMediaObject && sample->mOutput)
{
sample->mOutput->setVolume((qreal)mSampleVolume*0.01);

View File

@@ -7,7 +7,6 @@
#include <winsock.h>
#include <fcntl.h>
#elif LINUX
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

View File

@@ -87,13 +87,13 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned lon
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
# endif
static int crypthead(
const char *passwd, /* password string */
unsigned char *buf, /* where to write header */
int bufSize,
unsigned long* pkeys,
const unsigned long* pcrc_32_tab,
unsigned long crcForCrypting)
static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting)
const char *passwd; /* password string */
unsigned char *buf; /* where to write header */
int bufSize;
unsigned long* pkeys;
const unsigned long* pcrc_32_tab;
unsigned long crcForCrypting;
{
int n; /* index in random header */
int t; /* temporary */

View File

@@ -65,10 +65,10 @@ int ZCALLBACK ferror_file_func OF((
voidpf stream));
voidpf ZCALLBACK fopen_file_func (
voidpf opaque,
const char* filename,
int mode)
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
voidpf opaque;
const char* filename;
int mode;
{
FILE* file = NULL;
const char* mode_fopen = NULL;
@@ -87,11 +87,11 @@ voidpf ZCALLBACK fopen_file_func (
}
uLong ZCALLBACK fread_file_func (
voidpf opaque,
voidpf stream,
void* buf,
uLong size)
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
voidpf opaque;
voidpf stream;
void* buf;
uLong size;
{
uLong ret;
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
@@ -99,31 +99,31 @@ uLong ZCALLBACK fread_file_func (
}
uLong ZCALLBACK fwrite_file_func (
voidpf opaque,
voidpf stream,
const void* buf,
uLong size)
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)
voidpf opaque;
voidpf stream;
const void* buf;
uLong size;
{
uLong ret;
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
return ret;
}
long ZCALLBACK ftell_file_func (
voidpf opaque,
voidpf stream)
long ZCALLBACK ftell_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
long ret;
ret = ftell((FILE *)stream);
return ret;
}
long ZCALLBACK fseek_file_func (
voidpf opaque,
voidpf stream,
uLong offset,
int origin)
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
voidpf opaque;
voidpf stream;
uLong offset;
int origin;
{
int fseek_origin=0;
long ret;
@@ -145,26 +145,26 @@ long ZCALLBACK fseek_file_func (
return ret;
}
int ZCALLBACK fclose_file_func (
voidpf opaque,
voidpf stream)
int ZCALLBACK fclose_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
int ret;
ret = fclose((FILE *)stream);
return ret;
}
int ZCALLBACK ferror_file_func (
voidpf opaque,
voidpf stream)
int ZCALLBACK ferror_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
int ret;
ret = ferror((FILE *)stream);
return ret;
}
void fill_fopen_filefunc (
zlib_filefunc_def* pzlib_filefunc_def)
void fill_fopen_filefunc (pzlib_filefunc_def)
zlib_filefunc_def* pzlib_filefunc_def;
{
pzlib_filefunc_def->zopen_file = fopen_file_func;
pzlib_filefunc_def->zread_file = fread_file_func;

View File

@@ -168,7 +168,10 @@ local int unzlocal_getByte OF((
voidpf filestream,
int *pi));
local int unzlocal_getByte(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,int *pi)
local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
int *pi;
{
unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
@@ -195,7 +198,10 @@ local int unzlocal_getShort OF((
voidpf filestream,
uLong *pX));
local int unzlocal_getShort (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
@@ -220,7 +226,10 @@ local int unzlocal_getLong OF((
voidpf filestream,
uLong *pX));
local int unzlocal_getLong (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
@@ -250,7 +259,9 @@ local int unzlocal_getLong (const zlib_filefunc_def* pzlib_filefunc_def,voidpf f
/* My own strcmpi / strcasecmp */
local int strcmpcasenosensitive_internal (const char* fileName1,const char* fileName2)
local int strcmpcasenosensitive_internal (fileName1,fileName2)
const char* fileName1;
const char* fileName2;
{
for (;;)
{
@@ -291,7 +302,10 @@ local int strcmpcasenosensitive_internal (const char* fileName1,const char* file
(like 1 on Unix, 2 on Windows)
*/
extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,const char* fileName2,int iCaseSensitivity)
extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity)
const char* fileName1;
const char* fileName2;
int iCaseSensitivity;
{
if (iCaseSensitivity==0)
iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
@@ -314,7 +328,9 @@ local uLong unzlocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream));
local uLong unzlocal_SearchCentralDir(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream)
local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
{
unsigned char* buf;
uLong uSizeFile;
@@ -378,7 +394,9 @@ local uLong unzlocal_SearchCentralDir(const zlib_filefunc_def* pzlib_filefunc_de
Else, the return value is a unzFile Handle, usable with other function
of this unzip package.
*/
extern unzFile ZEXPORT unzOpen2 (const char *path, zlib_filefunc_def* pzlib_filefunc_def)
extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
const char *path;
zlib_filefunc_def* pzlib_filefunc_def;
{
unz_s us;
unz_s *s;
@@ -479,7 +497,8 @@ extern unzFile ZEXPORT unzOpen2 (const char *path, zlib_filefunc_def* pzlib_file
}
extern unzFile ZEXPORT unzOpen (const char *path)
extern unzFile ZEXPORT unzOpen (path)
const char *path;
{
return unzOpen2(path, NULL);
}
@@ -489,7 +508,8 @@ extern unzFile ZEXPORT unzOpen (const char *path)
If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzClose (unzFile file)
extern int ZEXPORT unzClose (file)
unzFile file;
{
unz_s* s;
if (file==NULL)
@@ -509,7 +529,9 @@ extern int ZEXPORT unzClose (unzFile file)
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalInfo (unzFile file,unz_global_info *pglobal_info)
extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info)
unzFile file;
unz_global_info *pglobal_info;
{
unz_s* s;
if (file==NULL)
@@ -523,7 +545,9 @@ extern int ZEXPORT unzGetGlobalInfo (unzFile file,unz_global_info *pglobal_info)
/*
Translate date/time from Dos format to tm_unz (readable more easilty)
*/
local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz* ptm)
local void unzlocal_DosDateToTmuDate (ulDosDate, ptm)
uLong ulDosDate;
tm_unz* ptm;
{
uLong uDate;
uDate = (uLong)(ulDosDate>>16);
@@ -550,16 +574,21 @@ local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file,
char *szComment,
uLong commentBufferSize));
local int unzlocal_GetCurrentFileInfoInternal (
unzFile file,
unz_file_info *pfile_info,
unz_file_info_internal *pfile_info_internal,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
uLong commentBufferSize)
local int unzlocal_GetCurrentFileInfoInternal (file,
pfile_info,
pfile_info_internal,
szFileName, fileNameBufferSize,
extraField, extraFieldBufferSize,
szComment, commentBufferSize)
unzFile file;
unz_file_info *pfile_info;
unz_file_info_internal *pfile_info_internal;
char *szFileName;
uLong fileNameBufferSize;
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{
unz_s* s;
unz_file_info file_info;
@@ -717,15 +746,19 @@ local int unzlocal_GetCurrentFileInfoInternal (
No preparation of the structure is needed
return UNZ_OK if there is no problem.
*/
extern int ZEXPORT unzGetCurrentFileInfo (
unzFile file,
unz_file_info *pfile_info,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
uLong commentBufferSize)
extern int ZEXPORT unzGetCurrentFileInfo (file,
pfile_info,
szFileName, fileNameBufferSize,
extraField, extraFieldBufferSize,
szComment, commentBufferSize)
unzFile file;
unz_file_info *pfile_info;
char *szFileName;
uLong fileNameBufferSize;
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{
return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
szFileName,fileNameBufferSize,
@@ -737,7 +770,8 @@ extern int ZEXPORT unzGetCurrentFileInfo (
Set the current file of the zipfile to the first file.
return UNZ_OK if there is no problem
*/
extern int ZEXPORT unzGoToFirstFile (unzFile file)
extern int ZEXPORT unzGoToFirstFile (file)
unzFile file;
{
int err=UNZ_OK;
unz_s* s;
@@ -758,7 +792,8 @@ extern int ZEXPORT unzGoToFirstFile (unzFile file)
return UNZ_OK if there is no problem
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
*/
extern int ZEXPORT unzGoToNextFile (unzFile file)
extern int ZEXPORT unzGoToNextFile (file)
unzFile file;
{
unz_s* s;
int err;
@@ -791,7 +826,10 @@ extern int ZEXPORT unzGoToNextFile (unzFile file)
UNZ_OK if the file is found. It becomes the current file.
UNZ_END_OF_LIST_OF_FILE if the file is not found
*/
extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity)
unzFile file;
const char *szFileName;
int iCaseSensitivity;
{
unz_s* s;
int err;
@@ -867,7 +905,9 @@ typedef struct unz_file_pos_s
} unz_file_pos;
*/
extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos)
extern int ZEXPORT unzGetFilePos(file, file_pos)
unzFile file;
unz_file_pos* file_pos;
{
unz_s* s;
@@ -883,7 +923,9 @@ extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos)
return UNZ_OK;
}
extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos*file_pos)
extern int ZEXPORT unzGoToFilePos(file, file_pos)
unzFile file;
unz_file_pos* file_pos;
{
unz_s* s;
int err;
@@ -917,11 +959,13 @@ extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos*file_pos)
store in *piSizeVar the size of extra info in local header
(filename and size of extra field data)
*/
local int unzlocal_CheckCurrentFileCoherencyHeader (
unz_s* s,
uInt* piSizeVar,
uLong *poffset_local_extrafield,
uInt *psize_local_extrafield)
local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
poffset_local_extrafield,
psize_local_extrafield)
unz_s* s;
uInt* piSizeVar;
uLong *poffset_local_extrafield;
uInt *psize_local_extrafield;
{
uLong uMagic,uData,uFlags;
uLong size_filename;
@@ -1006,12 +1050,12 @@ local int unzlocal_CheckCurrentFileCoherencyHeader (
Open for reading data the current file in the zipfile.
If there is no error and the file is opened, the return value is UNZ_OK.
*/
extern int ZEXPORT unzOpenCurrentFile3 (
unzFile file,
int* method,
int* level,
int raw,
const char* password)
extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
unzFile file;
int* method;
int* level;
int raw;
const char* password;
{
int err=UNZ_OK;
uInt iSizeVar;
@@ -1092,7 +1136,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (
pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
pfile_in_zip_read_info->stream.zfree = (free_func)0;
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
pfile_in_zip_read_info->stream.next_in = (Bytef*)0;
pfile_in_zip_read_info->stream.next_in = (voidpf)0;
pfile_in_zip_read_info->stream.avail_in = 0;
err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
@@ -1151,21 +1195,24 @@ extern int ZEXPORT unzOpenCurrentFile3 (
return UNZ_OK;
}
extern int ZEXPORT unzOpenCurrentFile (unzFile file)
extern int ZEXPORT unzOpenCurrentFile (file)
unzFile file;
{
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
}
extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password)
extern int ZEXPORT unzOpenCurrentFilePassword (file, password)
unzFile file;
const char* password;
{
return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
}
extern int ZEXPORT unzOpenCurrentFile2 (
unzFile file,
int* method,
int* level,
int raw)
extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw)
unzFile file;
int* method;
int* level;
int raw;
{
return unzOpenCurrentFile3(file, method, level, raw, NULL);
}
@@ -1180,10 +1227,10 @@ extern int ZEXPORT unzOpenCurrentFile2 (
return <0 with error code if there is an error
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
*/
extern int ZEXPORT unzReadCurrentFile(
unzFile file,
voidp buf,
unsigned len)
extern int ZEXPORT unzReadCurrentFile (file, buf, len)
unzFile file;
voidp buf;
unsigned len;
{
int err=UNZ_OK;
uInt iRead = 0;
@@ -1341,7 +1388,8 @@ extern int ZEXPORT unzReadCurrentFile(
/*
Give the current position in uncompressed data
*/
extern z_off_t ZEXPORT unztell (unzFile file)
extern z_off_t ZEXPORT unztell (file)
unzFile file;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1360,7 +1408,8 @@ extern z_off_t ZEXPORT unztell (unzFile file)
/*
return 1 if the end of file was reached, 0 elsewhere
*/
extern int ZEXPORT unzeof (unzFile file)
extern int ZEXPORT unzeof (file)
unzFile file;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1392,10 +1441,10 @@ extern int ZEXPORT unzeof (unzFile file)
the return value is the number of bytes copied in buf, or (if <0)
the error code
*/
extern int ZEXPORT unzGetLocalExtrafield (
unzFile file,
voidp buf,
unsigned len)
extern int ZEXPORT unzGetLocalExtrafield (file,buf,len)
unzFile file;
voidp buf;
unsigned len;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1443,7 +1492,8 @@ extern int ZEXPORT unzGetLocalExtrafield (
Close the file in zip opened with unzipOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/
extern int ZEXPORT unzCloseCurrentFile (unzFile file)
extern int ZEXPORT unzCloseCurrentFile (file)
unzFile file;
{
int err=UNZ_OK;
@@ -1485,11 +1535,12 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
uSizeBuf is the size of the szComment buffer.
return the number of byte copied or an error code <0
*/
extern int ZEXPORT unzGetGlobalComment (
unzFile file,
char *szComment,
uLong uSizeBuf)
extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
unzFile file;
char *szComment;
uLong uSizeBuf;
{
int err=UNZ_OK;
unz_s* s;
uLong uReadThis ;
if (file==NULL)
@@ -1516,7 +1567,8 @@ extern int ZEXPORT unzGetGlobalComment (
}
/* Additions by RX '2004 */
extern uLong ZEXPORT unzGetOffset (unzFile file)
extern uLong ZEXPORT unzGetOffset (file)
unzFile file;
{
unz_s* s;
@@ -1531,9 +1583,9 @@ extern uLong ZEXPORT unzGetOffset (unzFile file)
return s->pos_in_central_dir;
}
extern int ZEXPORT unzSetOffset (
unzFile file,
uLong pos)
extern int ZEXPORT unzSetOffset (file, pos)
unzFile file;
uLong pos;
{
unz_s* s;
int err;

View File

@@ -172,7 +172,8 @@ local linkedlist_datablock_internal* allocate_new_datablock()
return ldi;
}
local void free_datablock(linkedlist_datablock_internal* ldi)
local void free_datablock(ldi)
linkedlist_datablock_internal* ldi;
{
while (ldi!=NULL)
{
@@ -182,24 +183,24 @@ local void free_datablock(linkedlist_datablock_internal* ldi)
}
}
local void init_linkedlist(
linkedlist_data* ll)
local void init_linkedlist(ll)
linkedlist_data* ll;
{
ll->first_block = ll->last_block = NULL;
}
local void free_linkedlist(
linkedlist_data* ll)
local void free_linkedlist(ll)
linkedlist_data* ll;
{
free_datablock(ll->first_block);
ll->first_block = ll->last_block = NULL;
}
local int add_data_in_datablock(
linkedlist_data* ll,
const void* buf,
uLong len)
local int add_data_in_datablock(ll,buf,len)
linkedlist_data* ll;
const void* buf;
uLong len;
{
linkedlist_datablock_internal* ldi;
const unsigned char* from_copy;
@@ -262,11 +263,11 @@ local int add_data_in_datablock(
local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream, uLong x, int nbByte));
local int ziplocal_putValue (
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong x,
int nbByte)
local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong x;
int nbByte;
{
unsigned char buf[4];
int n;
@@ -290,10 +291,10 @@ local int ziplocal_putValue (
}
local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte));
local void ziplocal_putValue_inmemory (
void* dest,
uLong x,
int nbByte)
local void ziplocal_putValue_inmemory (dest, x, nbByte)
void* dest;
uLong x;
int nbByte;
{
unsigned char* buf=(unsigned char*)dest;
int n;
@@ -314,9 +315,9 @@ local void ziplocal_putValue_inmemory (
/****************************************************************************/
local uLong ziplocal_TmzDateToDosDate(
const tm_zip* ptm,
uLong dosDate)
local uLong ziplocal_TmzDateToDosDate(ptm,dosDate)
const tm_zip* ptm;
uLong dosDate;
{
uLong year = (uLong)ptm->tm_year;
if (year>1980)
@@ -336,10 +337,10 @@ local int ziplocal_getByte OF((
voidpf filestream,
int *pi));
local int ziplocal_getByte(
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
int *pi)
local int ziplocal_getByte(pzlib_filefunc_def,filestream,pi)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
int *pi;
{
unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
@@ -366,10 +367,10 @@ local int ziplocal_getShort OF((
voidpf filestream,
uLong *pX));
local int ziplocal_getShort (
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX)
local int ziplocal_getShort (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
@@ -394,10 +395,10 @@ local int ziplocal_getLong OF((
voidpf filestream,
uLong *pX));
local int ziplocal_getLong (
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX)
local int ziplocal_getLong (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
@@ -436,9 +437,9 @@ local uLong ziplocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream));
local uLong ziplocal_SearchCentralDir(
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream)
local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
{
unsigned char* buf;
uLong uSizeFile;
@@ -495,11 +496,11 @@ local uLong ziplocal_SearchCentralDir(
#endif /* !NO_ADDFILEINEXISTINGZIP*/
/************************************************************/
extern zipFile ZEXPORT zipOpen2 (
const char *pathname,
int append,
zipcharpc* globalcomment,
zlib_filefunc_def* pzlib_filefunc_def)
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def)
const char *pathname;
int append;
zipcharpc* globalcomment;
zlib_filefunc_def* pzlib_filefunc_def;
{
zip_internal ziinit;
zip_internal* zi;
@@ -614,7 +615,7 @@ extern zipFile ZEXPORT zipOpen2 (
if (size_comment>0)
{
ziinit.globalcomment = (char*)ALLOC(size_comment+1);
ziinit.globalcomment = ALLOC(size_comment+1);
if (ziinit.globalcomment)
{
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
@@ -679,30 +680,35 @@ extern zipFile ZEXPORT zipOpen2 (
}
}
extern zipFile ZEXPORT zipOpen (
const char *pathname,
int append)
extern zipFile ZEXPORT zipOpen (pathname, append)
const char *pathname;
int append;
{
return zipOpen2(pathname,append,NULL,NULL);
}
extern int ZEXPORT zipOpenNewFileInZip3 (
zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level,
int raw,
int windowBits,
int memLevel,
int strategy,
const char* password,
uLong crcForCrypting)
extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, raw,
windowBits, memLevel, strategy,
password, crcForCrypting)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
int raw;
int windowBits;
int memLevel;
int strategy;
const char* password;
uLong crcForCrypting;
{
zip_internal* zi;
uInt size_filename;
@@ -890,18 +896,21 @@ extern int ZEXPORT zipOpenNewFileInZip3 (
return err;
}
extern int ZEXPORT zipOpenNewFileInZip2(
zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level,
int raw)
extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, raw)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
int raw;
{
return zipOpenNewFileInZip3 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
@@ -911,17 +920,20 @@ extern int ZEXPORT zipOpenNewFileInZip2(
NULL, 0);
}
extern int ZEXPORT zipOpenNewFileInZip (
zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level)
extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
{
return zipOpenNewFileInZip2 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
@@ -929,8 +941,8 @@ extern int ZEXPORT zipOpenNewFileInZip (
comment, method, level, 0);
}
local int zipFlushWriteBuffer(
zip_internal* zi)
local int zipFlushWriteBuffer(zi)
zip_internal* zi;
{
int err=ZIP_OK;
@@ -951,10 +963,10 @@ local int zipFlushWriteBuffer(
return err;
}
extern int ZEXPORT zipWriteInFileInZip (
zipFile file,
const void* buf,
unsigned len)
extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
zipFile file;
const void* buf;
unsigned len;
{
zip_internal* zi;
int err=ZIP_OK;
@@ -966,9 +978,9 @@ extern int ZEXPORT zipWriteInFileInZip (
if (zi->in_opened_file_inzip == 0)
return ZIP_PARAMERROR;
zi->ci.stream.next_in = (Bytef*)buf;
zi->ci.stream.next_in = (void*)buf;
zi->ci.stream.avail_in = len;
zi->ci.crc32 = crc32(zi->ci.crc32,(const Bytef*)buf,len);
zi->ci.crc32 = crc32(zi->ci.crc32,buf,len);
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
{
@@ -1016,10 +1028,10 @@ extern int ZEXPORT zipWriteInFileInZip (
return err;
}
extern int ZEXPORT zipCloseFileInZipRaw (
zipFile file,
uLong uncompressed_size,
uLong crc32)
extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
zipFile file;
uLong uncompressed_size;
uLong crc32;
{
zip_internal* zi;
uLong compressed_size;
@@ -1112,15 +1124,15 @@ extern int ZEXPORT zipCloseFileInZipRaw (
return err;
}
extern int ZEXPORT zipCloseFileInZip (
zipFile file)
extern int ZEXPORT zipCloseFileInZip (file)
zipFile file;
{
return zipCloseFileInZipRaw (file,0,0);
}
extern int ZEXPORT zipClose (
zipFile file,
const char* global_comment)
extern int ZEXPORT zipClose (file, global_comment)
zipFile file;
const char* global_comment;
{
zip_internal* zi;
int err = 0;

View File

@@ -42,6 +42,7 @@ filesystem * filesystem::pCurrentFS = NULL;
std::vector<filesystem::pooledBuffer *> filesystem::m_Buffers;
static const int STORED = 0;
static const int DEFLATED = 8;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction

View File

@@ -2,8 +2,6 @@
[![Build Status](https://travis-ci.org/WagicProject/wagic.png?branch=master)](https://travis-ci.org/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
@@ -21,8 +19,3 @@ It is highly customizable and allows the player to tweak the rules / create thei
Info, downloads, discussions and more at http://wololo.net/forum/index.php
-![alt text](http://wololo.net/wagic/wp-content/uploads/2009/10/shop.jpg "Screenshot")
### Sample round play-through video
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/WUFSAPZuDIk/0.jpg)](http://www.youtube.com/watch?v=WUFSAPZuDIk)

View File

@@ -1,76 +0,0 @@
# Notes:
# - Minimal appveyor.yml file is an empty file. All sections are optional.
# - Indent each level of configuration with 2 spaces. Do not use tabs!
# - All section names are case-sensitive.
# - Section names should be unique on each level.
# branches to build
branches:
# blacklist
except:
- travis_mac_osx
# Do not build on tags (GitHub only)
skip_tags: true
#---------------------------------#
# environment configuration #
#---------------------------------#
environment:
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"
- "C:/Python27/Scripts/pip.exe install pyjavaproperties"
- "C:/Python27/Scripts/pip.exe install github3.py"
#---------------------------------#
# build configuration #
#---------------------------------#
# build Configuration, i.e. Debug, Release, etc.
configuration: Release
build:
project: projects/mtg/mtg_vs2010.sln # path to Visual Studio solution or project
#---------------------------------#
# tests configuration #
#---------------------------------#
# to disable automatic tests
test: off
#---------------------------------#
# artifacts configuration #
#---------------------------------#
artifacts:
# pushing windows package
- path: projects\mtg\bin\Wagic-windows*.zip
#---------------------------------#
# deployment configuration #
#---------------------------------#
# scripts to run before deployment
before_deploy:
- cd projects/mtg/bin
- "C:/Python27/python.exe createWindowsZip.py"
- cd ../../..
# scripts to run after deployment
after_deploy:
# to run your custom scripts instead of provider deployments
deploy_script:
- "C:/Python27/python.exe tools/upload-binaries.py -t %GH_TOKEN% -s %APPVEYOR_REPO_COMMIT% -l projects/mtg/bin/Wagic-windows.zip -r Wagic-windows.zip -b %APPVEYOR_REPO_BRANCH%"
# to disable deployment
#deploy: off

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="0201" android:versionName="@string/app_version" package="net.wagic.app">
<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"/>

View File

@@ -57,6 +57,7 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
$(MTG_PATH)/src/DeckMetaData.cpp \
$(MTG_PATH)/src/DeckStats.cpp \
$(MTG_PATH)/src/DuelLayers.cpp \
$(MTG_PATH)/src/Effects.cpp \
$(MTG_PATH)/src/ExtraCost.cpp \
$(MTG_PATH)/src/GameApp.cpp \
$(MTG_PATH)/src/GameLauncher.cpp \

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.20.1</string>
<string name="info_text">Wagic v0.20.1\\nAll Rights Reserved.</string>
<string name="app_version">0.19.2</string>
<string name="info_text">Wagic v0.19.2\\nAll Rights Reserved.</string>
</resources>

View File

@@ -1,280 +0,0 @@
package net.wagic.utils;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import android.util.Log;
public class DeckImporter
{
public static String importDeck( File f, String mypath, String activePath )
{
String message = "";
String deck = "";
String deckname = "";
String prefix = "#SB:";
if(f.exists() && !f.isDirectory())
{
deckname = f.getName();
int pos = deckname.lastIndexOf(".");
if (pos > 0)
{
deckname = deckname.substring(0, pos);
}
deck += "#NAME:"+deckname+"\n";
try
{
Scanner scanner = new Scanner(new File(mypath));
if (scanner.hasNext())
{
while (scanner.hasNext())
{
String line = scanner.nextLine();
line = line.trim();
if (!line.equals("")) // don't write out blank lines
{
String[] slines = line.split("\\s+");
String arranged = "";
for(int idx = 1; idx < slines.length; idx++)
{
arranged += slines[idx] + " ";
}
if ((isNumeric(slines[0])) && arranged != null)
{
if (slines[1] != null && slines[1].startsWith("["))
{
arranged = arranged.substring(5);
slines[1] = slines[1].replaceAll("\\[", "").replaceAll("\\]","");
deck += arranged + " (" + renameSet(slines[1]) + ") * " + slines[0] + "\n";
}
else
{
deck += arranged + "(*) * " + slines[0] + "\n";
}
}
}
}
File profile = new File(activePath+"/Res/settings/options.txt");
if(profile.exists() && !profile.isDirectory())
{
String profileName = getActiveProfile(profile);
if(profileName != "Missing!")
{
File rootProfiles = new File(activePath+"/Res/profiles/"+profileName);
if(rootProfiles.exists() && rootProfiles.isDirectory())
{
//save deck
int countdeck = 1;
File[] files = rootProfiles.listFiles();
for (int i = 0; i < files.length; i++)
{//check if there is available deck...
if(files[i].getName().startsWith("deck"))
countdeck++;
}
File toSave = new File(rootProfiles+"/deck"+countdeck+".txt");
try
{
FileOutputStream fop = new FileOutputStream(toSave);
// if file doesn't exists, then create it
if (!toSave.exists()) {
toSave.createNewFile();
}
// get the content in bytes
byte[] contentInBytes = deck.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
message = "Import Deck Success!\n\n"+deck;
}
catch (IOException e)
{
message = e.getMessage();
}
}
else
{
message = "Missing Folder!";
}
}
}
else
{
message = "Invalid Profile!";
}
}
else
{
message = "No errors, and file EMPTY";
}
}
catch(IOException e)
{
message = e.getMessage();
}
}
return message;
}
private static boolean isNumeric(String input)
{
try
{
Integer.parseInt(input);
}
catch(NumberFormatException ex)
{
return false;
}
return true;
}
private static String getActiveProfile(File mypath)
{
String name = "";
try
{
Scanner scanner = new Scanner(new File(mypath.toString()));
if (scanner.hasNext())
{
String line = scanner.nextLine();
name = line.substring(8);
}
else
{
return "Missing!";
}
}
catch(IOException e)
{
return "Missing!";
}
return name;
}
private static String renameSet(String set)
{
if (set == "")
return "*";
if (set == "AL")
return "ALL";
if (set == "AQ")
return "ATQ";
if (set == "AP")
return "APC";
if (set == "AN")
return "ARN";
if (set == "AE")
return "ARC";
if (set == "BR")
return "BRB";
if (set == "BD")
return "BTD";
if (set == "CH")
return "CHR";
if (set == "6E")
return "6ED";
if (set == "CS")
return "CSP";
if (set == "DS")
return "DST";
if (set == "D2")
return "DD2";
if (set == "8E")
return "8ED";
if (set == "EX")
return "EXO";
if (set == "FE")
return "FEM";
if (set == "FD")
return "5DN";
if (set == "5E")
return "5ED";
if (set == "4E")
return "4ED";
if (set == "GP")
return "GPT";
if (set == "HL")
return "HML";
if (set == "IA")
return "ICE";
if (set == "IN")
return "INV";
if (set == "JU")
return "JUD";
if (set == "LG")
return "LEG";
if (set == "LE")
return "LGN";
if (set == "A")
return "LEA";
if (set == "B")
return "LEB";
if (set == "MM")
return "MMQ";
if (set == "MI")
return "MIR";
if (set == "MR")
return "MRD";
if (set == "NE")
return "NEM";
if (set == "9E")
return "9ED";
if (set == "OD")
return "ODY";
if (set == "ON")
return "ONS";
if (set == "PS")
return "PLS";
if (set == "PT")
return "POR";
if (set == "P2")
return "P02";
if (set == "P3")
return "PTK";
if (set == "PR")
return "PPR";
if (set == "PY")
return "PCY";
if (set == "R")
return "RV";
if (set == "SC")
return "SCG";
if (set == "7E")
return "7ED";
if (set == "ST")
return "S99";
if (set == "ST2K")
return "S00";
if (set == "SH")
return "STH";
if (set == "TE")
return "TMP";
if (set == "DK")
return "DRK";
if (set == "TO")
return "TOR";
if (set == "UG")
return "UGL";
if (set == "U")
return "2ED";
if (set == "UD")
return "UDS";
if (set == "UL")
return "ULG";
if (set == "US")
return "USG";
if (set == "VI")
return "VIS";
if (set == "WL")
return "WTH";
else
return set;
}
}

View File

@@ -5,10 +5,6 @@ import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
@@ -25,14 +21,8 @@ public class StorageOptions
public static void determineStorageOptions()
{
initializeMountPoints();
if (findForcemount()){
readMountsFileTest();
}
readMountsFile();
readVoldFile();
if (findForcemount()){
removeDuplicates(mMounts);
}
compareMountsWithVold();
testAndCleanMountsList();
setProperties();
@@ -50,42 +40,6 @@ public class StorageOptions
}
}
private static void readMountsFileTest()
{
/*
* Test mountpoints storage -kevlahnota
*/
try
{
Scanner scanner = new Scanner(new File("/proc/mounts"));
while (scanner.hasNext())
{
String line = scanner.nextLine();
if (line.startsWith("/"))
{
String[] lineElements = line.split("\\s+");
if ("vfat".equals(lineElements[2]) || "fuse".equals(lineElements[2]) || "sdcardfs".equals(lineElements[2]))
{
File mountPoint = new File(lineElements[1]);
if (!lineElements[1].equals(defaultMountPoint))
if (mountPoint.isDirectory() && mountPoint.canRead())
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 readMountsFile()
{
/*
@@ -152,23 +106,6 @@ public class StorageOptions
mMounts.add(defaultMountPoint);
}
}
private static ArrayList<String> removeDuplicates(ArrayList<String> list)
{
ArrayList<String> result = new ArrayList<String>();
HashSet<String> set = new HashSet<String>();
for (String item : list)
{
if (!set.contains(item))
{
result.add(item);
set.add(item);
}
}
return result;
}
private static void compareMountsWithVold()
{
@@ -195,54 +132,14 @@ public class StorageOptions
/*
* 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.
*/
int t = 0;
for (int i = 0; i < mMounts.size(); i++)
{
t++;
String mount = mMounts.get(i);
File root = new File(mount);
if (!root.exists() || !root.isDirectory() || !root.canWrite())
mMounts.remove(i--);
}
if (t == 0 && Build.VERSION.SDK_INT >= 16 && findForcemount())
{//if none is found lets force it for Jellybean and above...
if (System.getenv("EXTERNAL_STORAGE") != null)
{
File root = new File(System.getenv("EXTERNAL_STORAGE"));
if (root.exists() && root.isDirectory() && root.canWrite())
{
if(!isRooted())
{
File folder = new File(System.getenv("EXTERNAL_STORAGE")+"/Android/data/net.wagic.app/files");
folder.mkdirs();
mMounts.add(folder.toString());
}
else
{
mMounts.add(System.getenv("EXTERNAL_STORAGE"));
}
}
}
if (System.getenv("SECONDARY_STORAGE") != null)
{
File root = new File(System.getenv("SECONDARY_STORAGE"));
if (root.exists() && root.isDirectory() && root.canWrite())
{
if(!isRooted())
{
File folder = new File(System.getenv("SECONDARY_STORAGE")+"/Android/data/net.wagic.app/files");
folder.mkdirs();
mMounts.add(folder.toString());
}
else
{
mMounts.add(System.getenv("SECONDARY_STORAGE"));
}
}
}
}
}
private static void setProperties()
@@ -254,28 +151,14 @@ public class StorageOptions
ArrayList<String> mLabels = new ArrayList<String>();
int i = 1;
if(findForcemount()){
for (String path : mMounts)
{//with forcemount menu
if ("/mnt/sdcard".equalsIgnoreCase(path) || "/storage/sdcard0".equalsIgnoreCase(path))
mLabels.add("Internal SD " + "[" + path + "]");
else if (path.contains("emulated"))
mLabels.add("Emulated SD " + " [" + path + "]");
else
mLabels.add("External SD " + " [" + path + "]");
}
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++);
}
else
{
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);
@@ -288,106 +171,4 @@ public class StorageOptions
// use and to prepare it for the next time it's needed.
mMounts.clear();
}
private static boolean isExternalStorageReadOnly() {
String extStorageState = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
return true;
}
return false;
}
private static boolean isExternalStorageAvailable() {
String extStorageState = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
return true;
}
return false;
}
/**
* Checks if the device is rooted.
*
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
*/
public static boolean isRooted() {
// get from build info
String buildTags = android.os.Build.TAGS;
if (buildTags != null && buildTags.contains("test-keys")) {
return true;
}
// check if /system/app/Superuser.apk is present
try {
File file = new File("/system/app/Superuser.apk");
if (file.exists()) {
return true;
}
}
catch (Exception e1) {
// ignore
}
try {
File file = new File("/system/app/Superuser/Superuser.apk");
if (file.exists()) {
return true;
}
}
catch (Exception e1) {
// ignore
}
//SuperSU
try {
File file = new File("/system/app/SuperSU.apk");
if (file.exists()) {
return true;
}
}
catch (Exception e1) {
// ignore
}
try {
File file = new File("/system/app/SuperSU/SuperSU.apk");
if (file.exists()) {
return true;
}
}
catch (Exception e1) {
// ignore
}
// try executing commands
return canExecuteCommand("/system/xbin/which su")
|| canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su");
}
// executes a command on the system
private static boolean canExecuteCommand(String command) {
boolean executedSuccesfully;
try {
Runtime.getRuntime().exec(command);
executedSuccesfully = true;
}
catch (Exception e) {
executedSuccesfully = false;
}
return executedSuccesfully;
}
private static boolean findForcemount(){
try
{
File file = new File(System.getenv("EXTERNAL_STORAGE")+"/forcemount");
if (file.exists())
{
return true;
}
}
catch (Exception e1)
{
return false;
}
return false;
}
}
}

View File

@@ -1,20 +1,12 @@
package org.libsdl.app;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Scanner;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
@@ -24,7 +16,6 @@ import javax.microedition.khronos.egl.EGLSurface;
import net.wagic.app.R;
import net.wagic.utils.StorageOptions;
import net.wagic.utils.DeckImporter;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -68,10 +59,7 @@ import android.widget.FrameLayout.LayoutParams;
*/
public class SDLActivity extends Activity implements OnKeyListener
{
//import deck globals
public ArrayList<String> myresult = new ArrayList<String>();
public String myclickedItem = "";
// TAG used for debugging in DDMS
public static String TAG = Activity.class.getCanonicalName();
@@ -212,60 +200,7 @@ public class SDLActivity extends Activity implements OnKeyListener
setStorage.create().show();
}
private void importDeckOptions()
{
AlertDialog.Builder importDeck = new AlertDialog.Builder(this);
importDeck.setTitle("Choose Deck to Import:");
File root = new File(System.getenv("EXTERNAL_STORAGE")+"/Download");
File[] files = root.listFiles();
for( File f : files)
{
if( !myresult.contains(f.toString()) && (f.toString().contains(".txt")||f.toString().contains(".dck")||f.toString().contains(".dec")))
myresult.add(f.toString());
}
//get first item?
if(!myresult.isEmpty())
myclickedItem = myresult.get(0).toString();
importDeck.setSingleChoiceItems(myresult.toArray(new String[myresult.size()]), 0, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
myclickedItem = myresult.get(item).toString();
}
});
importDeck.setPositiveButton("Import Deck", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
processSelectedDeck( myclickedItem );
if (mSurface == null)
mSingleton.initializeGame();
}
});
importDeck.create().show();
}
private void processSelectedDeck(String mypath)
{
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);
infoDialog.setTitle("Imported Deck:");
String activePath = sdcardPath;
if(activePath == ""){
activePath = internalPath;
}
File f = new File(mypath);
//Call the deck importer....
String state = DeckImporter.importDeck(f, mypath, activePath);
infoDialog.setMessage(state);
infoDialog.show();
}
private void checkStorageLocationPreference()
{
SharedPreferences settings = getSharedPreferences(kWagicSharedPreferencesKey, MODE_PRIVATE);
@@ -399,8 +334,7 @@ public class SDLActivity extends Activity implements OnKeyListener
public boolean onCreateOptionsMenu(Menu menu)
{
SubMenu settingsMenu = menu.addSubMenu(Menu.NONE, 1, 1, "Settings");
menu.add(Menu.NONE, 2, 2, "Import");
menu.add(Menu.NONE, 3, 3, "About");
menu.add(Menu.NONE, 2, 2, "About");
settingsMenu.add(kStorageDataOptionsMenuId, kStorageDataOptionsMenuId, Menu.NONE, "Storage Data Options");
// buildStorageOptionsMenu(settingsMenu);
@@ -416,9 +350,6 @@ public class SDLActivity extends Activity implements OnKeyListener
{
displayStorageOptions();
} else if (itemId == 2)
{
importDeckOptions();
} else if (itemId == 3)
{
// display some info about the app
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);

View File

Before

Width:  |  Height:  |  Size: 820 KiB

After

Width:  |  Height:  |  Size: 820 KiB

View File

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

View File

Before

Width:  |  Height:  |  Size: 630 KiB

After

Width:  |  Height:  |  Size: 630 KiB

View File

Before

Width:  |  Height:  |  Size: 233 KiB

After

Width:  |  Height:  |  Size: 233 KiB

View File

Before

Width:  |  Height:  |  Size: 417 KiB

After

Width:  |  Height:  |  Size: 417 KiB

View File

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

View File

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>wagic.launcher</string>
<key>CFBundleIdentifier</key>
<string>wagic.wagic</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
</dict>
</plist>

Binary file not shown.

View File

@@ -1,5 +0,0 @@
#!/bin/bash
cd ${0%/*/*}/Resources
#cd ../Resources
exec ../MacOS/wagic -platformpluginpath ../PlugIns >> ../logs/out.log 2> ../logs/err.log

View File

@@ -6,7 +6,7 @@ OBJS = objs/InteractiveButton.o objs/AbilityParser.o objs/ActionElement.o\
objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o\
objs/DeckDataWrapper.o objs/DeckEditorMenu.o objs/DeckMenu.o\
objs/DeckMenuItem.o objs/DeckMetaData.o objs/DeckStats.o objs/DuelLayers.o\
objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o\
objs/Effects.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o\
objs/GameObserver.o objs/GameOptions.o objs/GameState.o\
objs/GameStateAwards.o objs/GameStateDeckViewer.o objs/GameStateDuel.o\
objs/DeckManager.o objs/GameStateMenu.o objs/GameStateOptions.o\
@@ -128,7 +128,7 @@ clean:
endif
define compile
$(CXX) -c $(CXXFLAGS) $< -o $@
$(CXX) -c $(CXXFLAGS) $< -o $@
endef
PrecompiledHeader.h.gch: ../../projects/mtg/include/PrecompiledHeader.h

View File

@@ -1,11 +1,5 @@
#NAME:Kill by Numbers
#DESC:They just keep multiplying.
#HINT:castpriority(enchantment,instant,sorcery,artifact,creature)
#HINT:dontattackwith(Rhys the Redeemed)
#HINT:dontblockwith(Rhys the Redeemed)
#HINT:dontattackwith(Kazandu Tuskcaller)
#HINT:dontblockwith(Kazandu Tuskcaller)
Mox Emerald (LEA) *2
Mox Pearl (LEA) *2
Forest (LEA) *15

View File

@@ -30,8 +30,8 @@ def createResZipFile(filename):
zip_file.close()
if rename:
os.rename('settings/options.txt', 'settings/options.orig.txt')
os.rename('player/options.txt', 'player/options.orig.txt')
os.rename('settings/options.txt', 'settings/options.orig.txt')
os.rename('player/options.txt', 'player/options.orig.txt')
def getFilename():
p = Properties();
@@ -44,18 +44,16 @@ def getFilename():
def createStandardResFile(filename):
print('Creating Standard Resource File')
if not filename:
filename = getFilename() + '.zip'
def createStandardResFile():
print "Creating Standard Resource File"
filename = getFilename() + '.zip'
createResZipFile( filename )
print >> sys.stderr, 'Created Resource Package for Standard Distribution: {0}'.format( filename)
def createIosResFile(filename):
print('Preparing Resource Package for iOS')
def createIosResFile():
print 'Preparing Resource Package for iOS'
utilities = ZipUtilities()
if not filename:
filename = getFilename() + '_iOS.zip'
filename = getFilename() + '_iOS.zip'
#createResZipFile( filename )
zip_file = zipfile.ZipFile(filename, 'a', zipfile.ZIP_STORED)
zip_file.write("../../iOS/Res/rules/modrules.xml", "rules/modrules.xml", zipfile.ZIP_STORED)
@@ -80,10 +78,10 @@ class ZipUtilities:
if file != '.svn':
full_path = os.path.join(folder, file)
if os.path.isfile(full_path):
print('File added: ' + str(full_path))
print 'File added: ' + str(full_path)
zip_file.write(full_path)
elif os.path.isdir(full_path):
print('Entering folder: ' + str(full_path))
print 'Entering folder: ' + str(full_path)
self.addFolderToZip(zip_file, full_path)
@@ -92,17 +90,16 @@ def main():
parser = OptionParser()
parser.add_option("-p", "--platform", help="PLATFORM: specify custom build. (eg ios, android, etc)", metavar="PLATFORM", dest="platform")
parser.add_option("-n", "--name", help="NAME: specify resource file name", metavar="NAME", dest="name")
(options, args) = parser.parse_args()
if (options.platform):
if (options.platform == "ios"):
createIosResFile(options.name)
else:
createStandardResFile(options.name)
if (options.platform == "ios"):
createIosResFile()
else:
createStandardResFile()
else:
createStandardResFile(options.name)
createStandardResFile()
if __name__ == "__main__":
main()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -5,6 +5,7 @@ wallpapers/wagic1.jpg
wallpapers/kaioshin_garruk.jpg
wallpapers/kaioshin_jace.jpg
graphics/shop.jpg
themes/Classic/backdrop.jpg
wallpapers/kaioshin_ravager.jpg
wallpapers/kaioshin_elsXIII.jpg
wallpapers/kaioshin_sorin.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1 +0,0 @@
here are the old themes.

View File

@@ -13,12 +13,8 @@ auto=flashbackrule
auto=retracerule
auto=suspendrule
auto=morphrule
auto=payzerorule
auto=overloadrule
auto=attackrule
auto=attackcostrule
auto=blockrule
auto=blockcostrule
auto=combattriggerrule
auto=legendrule
auto=planeswalkerrule

View File

@@ -12,12 +12,8 @@ auto=flashbackrule
auto=retracerule
auto=suspendrule
auto=morphrule
auto=payzerorule
auto=overloadrule
auto=attackrule
auto=attackcostrule
auto=blockrule
auto=blockcostrule
auto=combattriggerrule
auto=legendrule
auto=planeswalkerrule

View File

@@ -42,10 +42,6 @@
<item name="types" >
<position x="22" y="49"/>
</item>
<item name="cardid" >
<position x="22" y="237"/>
<formattedtext>mtgid</formattedtext>
</item>
<item name="expansionrarity" >
<position x="22" y="255"/>
<formattedtext>expansion rarity</formattedtext>

View File

@@ -16,12 +16,9 @@ auto=flashbackrule
auto=retracerule
auto=suspendrule
auto=morphrule
auto=payzerorule
auto=overloadrule
auto=playfromgraveyardrule
auto=attackrule
auto=attackcostrule
auto=blockrule
auto=blockcostrule
auto=combattriggerrule
auto=legendrule
auto=planeswalkerrule
@@ -35,7 +32,6 @@ auto=lifelinkrule
auto=deathtouchrule
auto=soulbondrule
auto=dredgerule
auto=bestowrule
[PLAYERS]
life:20

View File

@@ -1,8 +1,7 @@
[meta]
author=Wagic Team
name=Tenth Edition
name=10th Edition
year=2007
total=383
[/meta]
[card]
primitive=Abundance
@@ -60,11 +59,6 @@ id=129465
rarity=U
[/card]
[card]
primitive=Angel's Feather
id=129466
rarity=U
[/card]
[card]
primitive=Angelic Blessing
id=129711
rarity=C
@@ -80,6 +74,11 @@ id=129671
rarity=C
[/card]
[card]
primitive=Angel's Feather
id=129466
rarity=U
[/card]
[card]
primitive=Arcane Teachings
id=130530
rarity=U
@@ -575,16 +574,16 @@ id=134762
rarity=C
[/card]
[card]
primitive=Furnace Whelp
id=130386
rarity=U
[/card]
[card]
primitive=Furnace of Rath
id=129566
rarity=R
[/card]
[card]
primitive=Furnace Whelp
id=130386
rarity=U
[/card]
[card]
primitive=Gaea's Herald
id=129789
rarity=R
@@ -960,16 +959,16 @@ id=135272
rarity=R
[/card]
[card]
primitive=Might Weaver
id=130996
rarity=U
[/card]
[card]
primitive=Might of Oaks
id=129642
rarity=R
[/card]
[card]
primitive=Might Weaver
id=130996
rarity=U
[/card]
[card]
primitive=Millstone
id=129643
rarity=R

View File

@@ -1,8 +1,7 @@
[meta]
author=Wagic Team
name=Unlimited Edition
name=2nd Edition
year=1993
total=302
[/meta]
[card]
primitive=Air Elemental
@@ -461,7 +460,7 @@ rarity=R
[/card]
[card]
primitive=Forest
id=888
id=890
rarity=L
[/card]
[card]
@@ -471,7 +470,7 @@ rarity=L
[/card]
[card]
primitive=Forest
id=890
id=888
rarity=L
[/card]
[card]
@@ -645,13 +644,8 @@ id=756
rarity=C
[/card]
[card]
primitive=Island Sanctuary
id=854
rarity=R
[/card]
[card]
primitive=Island
id=894
id=896
rarity=L
[/card]
[card]
@@ -661,10 +655,15 @@ rarity=L
[/card]
[card]
primitive=Island
id=896
id=894
rarity=L
[/card]
[card]
primitive=Island Sanctuary
id=854
rarity=R
[/card]
[card]
primitive=Ivory Cup
id=619
rarity=U
@@ -846,7 +845,7 @@ rarity=C
[/card]
[card]
primitive=Mountain
id=891
id=893
rarity=L
[/card]
[card]
@@ -856,7 +855,7 @@ rarity=L
[/card]
[card]
primitive=Mountain
id=893
id=891
rarity=L
[/card]
[card]
@@ -976,7 +975,7 @@ rarity=C
[/card]
[card]
primitive=Plains
id=897
id=899
rarity=L
[/card]
[card]
@@ -986,7 +985,7 @@ rarity=L
[/card]
[card]
primitive=Plains
id=899
id=897
rarity=L
[/card]
[card]
@@ -1105,13 +1104,13 @@ id=866
rarity=C
[/card]
[card]
primitive=Savannah Lions
id=867
primitive=Savannah
id=881
rarity=R
[/card]
[card]
primitive=Savannah
id=881
primitive=Savannah Lions
id=867
rarity=R
[/card]
[card]
@@ -1241,7 +1240,7 @@ rarity=R
[/card]
[card]
primitive=Swamp
id=875
id=877
rarity=L
[/card]
[card]
@@ -1251,7 +1250,7 @@ rarity=L
[/card]
[card]
primitive=Swamp
id=877
id=875
rarity=L
[/card]
[card]

View File

@@ -1,8 +1,7 @@
[meta]
author=Wagic Team
name=Fourth Edition
name=4th Edition
year=1995
total=378
[/meta]
[card]
primitive=Abomination
@@ -75,13 +74,13 @@ id=2144
rarity=C
[/card]
[card]
primitive=Armageddon Clock
id=2018
primitive=Armageddon
id=2320
rarity=R
[/card]
[card]
primitive=Armageddon
id=2320
primitive=Armageddon Clock
id=2018
rarity=R
[/card]
[card]
@@ -510,13 +509,13 @@ id=2041
rarity=R
[/card]
[card]
primitive=El-Hajjaj
id=2101
primitive=Elder Land Wurm
id=2339
rarity=R
[/card]
[card]
primitive=Elder Land Wurm
id=2339
primitive=El-Hajjaj
id=2101
rarity=R
[/card]
[card]
@@ -631,7 +630,7 @@ rarity=R
[/card]
[card]
primitive=Forest
id=2377
id=2379
rarity=L
[/card]
[card]
@@ -641,7 +640,7 @@ rarity=L
[/card]
[card]
primitive=Forest
id=2379
id=2377
rarity=L
[/card]
[card]
@@ -840,18 +839,8 @@ id=2220
rarity=C
[/card]
[card]
primitive=Island Fish Jasconius
id=2161
rarity=R
[/card]
[card]
primitive=Island Sanctuary
id=2346
rarity=R
[/card]
[card]
primitive=Island
id=2389
id=2391
rarity=L
[/card]
[card]
@@ -861,10 +850,20 @@ rarity=L
[/card]
[card]
primitive=Island
id=2391
id=2389
rarity=L
[/card]
[card]
primitive=Island Fish Jasconius
id=2161
rarity=R
[/card]
[card]
primitive=Island Sanctuary
id=2346
rarity=R
[/card]
[card]
primitive=Ivory Cup
id=2050
rarity=U
@@ -1106,7 +1105,7 @@ rarity=C
[/card]
[card]
primitive=Mountain
id=2381
id=2383
rarity=L
[/card]
[card]
@@ -1116,7 +1115,7 @@ rarity=L
[/card]
[card]
primitive=Mountain
id=2383
id=2381
rarity=L
[/card]
[card]
@@ -1246,7 +1245,7 @@ rarity=C
[/card]
[card]
primitive=Plains
id=2384
id=2386
rarity=L
[/card]
[card]
@@ -1256,7 +1255,7 @@ rarity=L
[/card]
[card]
primitive=Plains
id=2386
id=2384
rarity=L
[/card]
[card]
@@ -1546,7 +1545,7 @@ rarity=C
[/card]
[card]
primitive=Swamp
id=2374
id=2376
rarity=L
[/card]
[card]
@@ -1556,7 +1555,7 @@ rarity=L
[/card]
[card]
primitive=Swamp
id=2376
id=2374
rarity=L
[/card]
[card]

View File

@@ -1,9 +1,7 @@
[meta]
author=Wagic Team
name=Fifth Dawn
block=Mirrodin
year=2004
total=165
block=Mirror
[/meta]
[card]
primitive=Abuna's Chant

View File

@@ -1,15 +1,9 @@
[meta]
author=Wagic Team
name=Fifth Edition
name=5th Edition
year=1997
total=449
[/meta]
[card]
primitive=AEther Storm
id=3891
rarity=U
[/card]
[card]
primitive=Abbey Gargoyles
id=4098
rarity=U
@@ -25,6 +19,11 @@ id=4175
rarity=R
[/card]
[card]
primitive=AEther Storm
id=3891
rarity=U
[/card]
[card]
primitive=Air Elemental
id=3892
rarity=U
@@ -55,16 +54,16 @@ id=3759
rarity=C
[/card]
[card]
primitive=An-Havva Constable
id=3960
rarity=R
[/card]
[card]
primitive=Angry Mob
id=4101
rarity=U
[/card]
[card]
primitive=An-Havva Constable
id=3960
rarity=R
[/card]
[card]
primitive=Animate Dead
id=3823
rarity=U
@@ -430,11 +429,6 @@ id=3835
rarity=U
[/card]
[card]
primitive=D'Avenant Archer
id=4120
rarity=C
[/card]
[card]
primitive=Dance of Many
id=3899
rarity=R
@@ -460,6 +454,11 @@ id=3836
rarity=C
[/card]
[card]
primitive=D'Avenant Archer
id=4120
rarity=C
[/card]
[card]
primitive=Death Speakers
id=4121
rarity=C
@@ -735,23 +734,18 @@ id=3976
rarity=C
[/card]
[card]
primitive=Force Spike
id=3909
rarity=C
[/card]
[card]
primitive=Force of Nature
id=3977
rarity=R
[/card]
[card]
primitive=Forest
id=4171
rarity=L
primitive=Force Spike
id=3909
rarity=C
[/card]
[card]
primitive=Forest
id=4172
id=4174
rarity=L
[/card]
[card]
@@ -761,7 +755,12 @@ rarity=L
[/card]
[card]
primitive=Forest
id=4174
id=4172
rarity=L
[/card]
[card]
primitive=Forest
id=4171
rarity=L
[/card]
[card]
@@ -900,13 +899,13 @@ id=4182
rarity=U
[/card]
[card]
primitive=Healing Salve
id=4130
primitive=Heal
id=4129
rarity=C
[/card]
[card]
primitive=Heal
id=4129
primitive=Healing Salve
id=4130
rarity=C
[/card]
[card]
@@ -1055,18 +1054,8 @@ id=3988
rarity=C
[/card]
[card]
primitive=Island Sanctuary
id=4136
rarity=R
[/card]
[card]
primitive=Island
id=4199
rarity=L
[/card]
[card]
primitive=Island
id=4200
id=4202
rarity=L
[/card]
[card]
@@ -1076,10 +1065,20 @@ rarity=L
[/card]
[card]
primitive=Island
id=4202
id=4200
rarity=L
[/card]
[card]
primitive=Island
id=4199
rarity=L
[/card]
[card]
primitive=Island Sanctuary
id=4136
rarity=R
[/card]
[card]
primitive=Ivory Cup
id=3792
rarity=U
@@ -1365,18 +1364,8 @@ id=4072
rarity=C
[/card]
[card]
primitive=Mountain Goat
id=4073
rarity=C
[/card]
[card]
primitive=Mountain
id=4195
rarity=L
[/card]
[card]
primitive=Mountain
id=4196
id=4198
rarity=L
[/card]
[card]
@@ -1386,10 +1375,20 @@ rarity=L
[/card]
[card]
primitive=Mountain
id=4198
id=4196
rarity=L
[/card]
[card]
primitive=Mountain
id=4195
rarity=L
[/card]
[card]
primitive=Mountain Goat
id=4073
rarity=C
[/card]
[card]
primitive=Murk Dwellers
id=3863
rarity=C
@@ -1546,12 +1545,7 @@ rarity=C
[/card]
[card]
primitive=Plains
id=4203
rarity=L
[/card]
[card]
primitive=Plains
id=4204
id=4206
rarity=L
[/card]
[card]
@@ -1561,7 +1555,12 @@ rarity=L
[/card]
[card]
primitive=Plains
id=4206
id=4204
rarity=L
[/card]
[card]
primitive=Plains
id=4203
rarity=L
[/card]
[card]
@@ -1795,16 +1794,16 @@ id=3810
rarity=U
[/card]
[card]
primitive=Shatterstorm
id=4087
rarity=U
[/card]
[card]
primitive=Shatter
id=4086
rarity=C
[/card]
[card]
primitive=Shatterstorm
id=4087
rarity=U
[/card]
[card]
primitive=Shield Bearer
id=4159
rarity=C
@@ -1921,12 +1920,7 @@ rarity=U
[/card]
[card]
primitive=Swamp
id=4167
rarity=L
[/card]
[card]
primitive=Swamp
id=4168
id=4170
rarity=L
[/card]
[card]
@@ -1936,7 +1930,12 @@ rarity=L
[/card]
[card]
primitive=Swamp
id=4170
id=4168
rarity=L
[/card]
[card]
primitive=Swamp
id=4167
rarity=L
[/card]
[card]

View File

@@ -1,15 +1,9 @@
[meta]
author=Wagic Team
name=Classic Sixth Edition
name=6th Edition
year=1999
total=350
[/meta]
[card]
primitive=AEther Flash
id=15447
rarity=U
[/card]
[card]
primitive=Abduction
id=14526
rarity=U
@@ -30,6 +24,11 @@ id=14727
rarity=R
[/card]
[card]
primitive=AEther Flash
id=15447
rarity=U
[/card]
[card]
primitive=Agonizing Memories
id=14586
rarity=U
@@ -125,13 +124,13 @@ id=14628
rarity=U
[/card]
[card]
primitive=Blighted Shaman
id=15385
primitive=Blight
id=15399
rarity=U
[/card]
[card]
primitive=Blight
id=15399
primitive=Blighted Shaman
id=15385
rarity=U
[/card]
[card]
@@ -290,11 +289,6 @@ id=15404
rarity=R
[/card]
[card]
primitive=D'Avenant Archer
id=14472
rarity=C
[/card]
[card]
primitive=Dancing Scimitar
id=14773
rarity=R
@@ -310,6 +304,11 @@ id=14552
rarity=R
[/card]
[card]
primitive=D'Avenant Archer
id=14472
rarity=C
[/card]
[card]
primitive=Deflection
id=16438
rarity=R
@@ -535,16 +534,16 @@ id=14626
rarity=C
[/card]
[card]
primitive=Flashfires
id=16446
rarity=U
[/card]
[card]
primitive=Flash
id=16440
rarity=R
[/card]
[card]
primitive=Flashfires
id=16446
rarity=U
[/card]
[card]
primitive=Flight
id=14515
rarity=C
@@ -555,13 +554,13 @@ id=14776
rarity=R
[/card]
[card]
primitive=Fog Elemental
id=16433
primitive=Fog
id=14682
rarity=C
[/card]
[card]
primitive=Fog
id=14682
primitive=Fog Elemental
id=16433
rarity=C
[/card]
[card]
@@ -995,11 +994,6 @@ id=15442
rarity=U
[/card]
[card]
primitive=Mountain Goat
id=16442
rarity=C
[/card]
[card]
primitive=Mountain
id=14745
rarity=L
@@ -1020,6 +1014,11 @@ id=14748
rarity=L
[/card]
[card]
primitive=Mountain Goat
id=16442
rarity=C
[/card]
[card]
primitive=Mystic Compass
id=15435
rarity=U
@@ -1365,16 +1364,16 @@ id=14670
rarity=C
[/card]
[card]
primitive=Shatterstorm
id=11497
rarity=R
[/card]
[card]
primitive=Shatter
id=14614
rarity=C
[/card]
[card]
primitive=Shatterstorm
id=11497
rarity=R
[/card]
[card]
primitive=Shock
id=14609
rarity=C

View File

@@ -1,15 +1,9 @@
[meta]
author=Wagic Team
name=Seventh Edition
name=7th Edition
year=2001
total=350
[/meta]
[card]
primitive=AEther Flash
id=25678
rarity=U
[/card]
[card]
primitive=Abyssal Horror
id=13111
rarity=R
@@ -25,6 +19,11 @@ id=11140
rarity=R
[/card]
[card]
primitive=AEther Flash
id=25678
rarity=U
[/card]
[card]
primitive=Agonizing Memories
id=12994
rarity=U

View File

@@ -1,8 +1,7 @@
[meta]
author=Wagic Team
name=Eighth Edition
name=8th Edition
year=2003
total=357
[/meta]
[card]
primitive=Abyssal Specter
@@ -895,16 +894,16 @@ id=45316
rarity=U
[/card]
[card]
primitive=Merchant Scroll
id=45275
rarity=U
[/card]
[card]
primitive=Merchant of Secrets
id=45231
rarity=C
[/card]
[card]
primitive=Merchant Scroll
id=45275
rarity=U
[/card]
[card]
primitive=Might of Oaks
id=45452
rarity=R
@@ -1275,16 +1274,16 @@ id=45187
rarity=C
[/card]
[card]
primitive=Sage Owl
id=45226
rarity=C
[/card]
[card]
primitive=Sage of Lat-Nam
id=45269
rarity=R
[/card]
[card]
primitive=Sage Owl
id=45226
rarity=C
[/card]
[card]
primitive=Salt Marsh
id=45492
rarity=U
@@ -1375,13 +1374,13 @@ id=45494
rarity=U
[/card]
[card]
primitive=Shock Troops
id=45350
primitive=Shock
id=45352
rarity=C
[/card]
[card]
primitive=Shock
id=45352
primitive=Shock Troops
id=45350
rarity=C
[/card]
[card]

View File

@@ -1,8 +1,7 @@
[meta]
author=Wagic Team
name=Ninth Edition
name=9th Edition
year=2005
total=359
[/meta]
[card]
primitive=Adarkar Wastes
@@ -45,16 +44,16 @@ id=82992
rarity=U
[/card]
[card]
primitive=Angel's Feather
id=83449
rarity=U
[/card]
[card]
primitive=Angelic Blessing
id=84583
rarity=C
[/card]
[card]
primitive=Angel's Feather
id=83449
rarity=U
[/card]
[card]
primitive=Annex
id=84564
rarity=U

View File

@@ -1,9 +1,7 @@
[meta]
author=Wagic Team
name=Shards of Alara
block=Shards of Alara
year=2008
total=249
block=Shards
[/meta]
[card]
primitive=Ad Nauseam
@@ -31,13 +29,13 @@ id=174986
rarity=U
[/card]
[card]
primitive=Angel's Herald
id=175141
primitive=Angelic Benediction
id=174826
rarity=U
[/card]
[card]
primitive=Angelic Benediction
id=174826
primitive=Angel's Herald
id=175141
rarity=U
[/card]
[card]
@@ -186,6 +184,11 @@ id=176448
rarity=U
[/card]
[card]
primitive=Corpse Connoisseur Unearthed
id=17644811
rarity=T
[/card]
[card]
primitive=Courier's Capsule
id=174800
rarity=C
@@ -281,6 +284,11 @@ id=174835
rarity=C
[/card]
[card]
primitive=Dregscape Zombie Unearthed
id=17483511
rarity=T
[/card]
[card]
primitive=Druid of the Anima
id=174903
rarity=C
@@ -356,6 +364,11 @@ id=176456
rarity=U
[/card]
[card]
primitive=Fatestitcher Unearthed
id=17645611
rarity=T
[/card]
[card]
primitive=Feral Hydra
id=174973
rarity=R
@@ -371,6 +384,11 @@ id=176447
rarity=U
[/card]
[card]
primitive=Fire-Field Ogre Unearthed
id=17644711
rarity=T
[/card]
[card]
primitive=Flameblast Dragon
id=177476
rarity=R
@@ -387,12 +405,12 @@ rarity=L
[/card]
[card]
primitive=Forest
id=174928
id=174929
rarity=L
[/card]
[card]
primitive=Forest
id=174929
id=174928
rarity=L
[/card]
[card]
@@ -466,14 +484,19 @@ id=174805
rarity=C
[/card]
[card]
primitive=Hellkite Overlord
id=175057
rarity=M
[/card]
[card]
primitive=Hell's Thunder
id=176455
rarity=R
[/card]
[card]
primitive=Hellkite Overlord
id=175057
rarity=M
primitive=Hell's Thunder Unearthed
id=17645511
rarity=T
[/card]
[card]
primitive=Hindering Light
@@ -517,12 +540,12 @@ rarity=L
[/card]
[card]
primitive=Island
id=174979
id=174980
rarity=L
[/card]
[card]
primitive=Island
id=174980
id=174979
rarity=L
[/card]
[card]
@@ -566,6 +589,11 @@ id=174837
rarity=C
[/card]
[card]
primitive=Kathari Screecher Unearthed
id=17483711
rarity=T
[/card]
[card]
primitive=Kederekt Creeper
id=179430
rarity=C
@@ -576,6 +604,11 @@ id=174882
rarity=R
[/card]
[card]
primitive=Kederekt Leviathan Unearthed
id=17488211
rarity=T
[/card]
[card]
primitive=Keeper of Progenitus
id=175033
rarity=R
@@ -677,7 +710,7 @@ rarity=C
[/card]
[card]
primitive=Mountain
id=175017
id=175019
rarity=L
[/card]
[card]
@@ -687,7 +720,7 @@ rarity=L
[/card]
[card]
primitive=Mountain
id=175019
id=175017
rarity=L
[/card]
[card]
@@ -951,6 +984,11 @@ id=174845
rarity=U
[/card]
[card]
primitive=Scourge Devil Unearthed
id=17484511
rarity=T
[/card]
[card]
primitive=Scourglass
id=174853
rarity=R
@@ -1097,7 +1135,7 @@ rarity=U
[/card]
[card]
primitive=Swamp
id=175088
id=175090
rarity=L
[/card]
[card]
@@ -1107,7 +1145,7 @@ rarity=L
[/card]
[card]
primitive=Swamp
id=175090
id=175088
rarity=L
[/card]
[card]
@@ -1181,6 +1219,11 @@ id=176452
rarity=C
[/card]
[card]
primitive=Undead Leotau Unearthed
id=17645211
rarity=T
[/card]
[card]
primitive=Vectis Silencers
id=175147
rarity=C
@@ -1211,11 +1254,21 @@ id=175144
rarity=C
[/card]
[card]
primitive=Viscera Dragger Unearthed
id=175144111
rarity=T
[/card]
[card]
primitive=Vithian Stinger
id=174922
rarity=C
[/card]
[card]
primitive=Vithian Stinger Unearthed
id=174922111
rarity=T
[/card]
[card]
primitive=Volcanic Submersion
id=174889
rarity=C

View File

@@ -1,9 +1,7 @@
[meta]
author=Wagic Team
name=Alliances
block=Ice Age
year=1996
total=199
block=Ice
[/meta]
[card]
primitive=Aesthir Glider
@@ -17,17 +15,12 @@ rarity=C
[/card]
[card]
primitive=Agent of Stromgald
id=3159
rarity=C
[/card]
[card]
primitive=Agent of Stromgald
id=3160
rarity=C
[/card]
[card]
primitive=Arcane Denial
id=3097
primitive=Agent of Stromgald
id=3159
rarity=C
[/card]
[card]
@@ -36,23 +29,23 @@ id=3098
rarity=C
[/card]
[card]
primitive=Arcane Denial
id=3097
rarity=C
[/card]
[card]
primitive=Ashnod's Cylix
id=3042
rarity=R
[/card]
[card]
primitive=Astrolabe
id=3043
rarity=C
[/card]
[card]
primitive=Astrolabe
id=3044
rarity=C
[/card]
[card]
primitive=Awesome Presence
id=3099
primitive=Astrolabe
id=3043
rarity=C
[/card]
[card]
@@ -61,6 +54,11 @@ id=3100
rarity=C
[/card]
[card]
primitive=Awesome Presence
id=3099
rarity=C
[/card]
[card]
primitive=Balduvian Dead
id=3066
rarity=U
@@ -77,17 +75,12 @@ rarity=R
[/card]
[card]
primitive=Balduvian War-Makers
id=3162
rarity=C
[/card]
[card]
primitive=Balduvian War-Makers
id=3163
rarity=C
[/card]
[card]
primitive=Benthic Explorers
id=3101
primitive=Balduvian War-Makers
id=3162
rarity=C
[/card]
[card]
@@ -96,8 +89,8 @@ id=3102
rarity=C
[/card]
[card]
primitive=Bestial Fury
id=3164
primitive=Benthic Explorers
id=3101
rarity=C
[/card]
[card]
@@ -106,6 +99,11 @@ id=3165
rarity=C
[/card]
[card]
primitive=Bestial Fury
id=3164
rarity=C
[/card]
[card]
primitive=Bounty of the Hunt
id=3128
rarity=U
@@ -122,17 +120,12 @@ rarity=U
[/card]
[card]
primitive=Carrier Pigeons
id=3190
rarity=C
[/card]
[card]
primitive=Carrier Pigeons
id=3191
rarity=C
[/card]
[card]
primitive=Casting of Bones
id=3067
primitive=Carrier Pigeons
id=3190
rarity=C
[/card]
[card]
@@ -141,6 +134,11 @@ id=3068
rarity=C
[/card]
[card]
primitive=Casting of Bones
id=3067
rarity=C
[/card]
[card]
primitive=Chaos Harlequin
id=3167
rarity=R
@@ -152,12 +150,12 @@ rarity=U
[/card]
[card]
primitive=Deadly Insect
id=3129
id=3130
rarity=C
[/card]
[card]
primitive=Deadly Insect
id=3130
id=3129
rarity=C
[/card]
[card]
@@ -187,12 +185,12 @@ rarity=U
[/card]
[card]
primitive=Elvish Ranger
id=3132
id=3133
rarity=C
[/card]
[card]
primitive=Elvish Ranger
id=3133
id=3132
rarity=C
[/card]
[card]
@@ -207,17 +205,12 @@ rarity=U
[/card]
[card]
primitive=Enslaved Scout
id=3169
rarity=C
[/card]
[card]
primitive=Enslaved Scout
id=3170
rarity=C
[/card]
[card]
primitive=Errand of Duty
id=3192
primitive=Enslaved Scout
id=3169
rarity=C
[/card]
[card]
@@ -226,18 +219,23 @@ id=3193
rarity=C
[/card]
[card]
primitive=Errand of Duty
id=3192
rarity=C
[/card]
[card]
primitive=Exile
id=3194
rarity=R
[/card]
[card]
primitive=False Demise
id=3105
id=3106
rarity=C
[/card]
[card]
primitive=False Demise
id=3106
id=3105
rarity=C
[/card]
[card]
@@ -247,17 +245,12 @@ rarity=R
[/card]
[card]
primitive=Feast or Famine
id=3073
rarity=C
[/card]
[card]
primitive=Feast or Famine
id=3074
rarity=C
[/card]
[card]
primitive=Fevered Strength
id=3075
primitive=Feast or Famine
id=3073
rarity=C
[/card]
[card]
@@ -266,6 +259,11 @@ id=3076
rarity=C
[/card]
[card]
primitive=Fevered Strength
id=3075
rarity=C
[/card]
[card]
primitive=Floodwater Dam
id=3045
rarity=R
@@ -277,17 +275,12 @@ rarity=U
[/card]
[card]
primitive=Foresight
id=3108
rarity=C
[/card]
[card]
primitive=Foresight
id=3109
rarity=C
[/card]
[card]
primitive=Fyndhorn Druid
id=3135
primitive=Foresight
id=3108
rarity=C
[/card]
[card]
@@ -296,23 +289,23 @@ id=3136
rarity=C
[/card]
[card]
primitive=Fyndhorn Druid
id=3135
rarity=C
[/card]
[card]
primitive=Gargantuan Gorilla
id=3137
rarity=R
[/card]
[card]
primitive=Gift of the Woods
id=3138
rarity=C
[/card]
[card]
primitive=Gift of the Woods
id=3139
rarity=C
[/card]
[card]
primitive=Gorilla Berserkers
id=3140
primitive=Gift of the Woods
id=3138
rarity=C
[/card]
[card]
@@ -321,8 +314,8 @@ id=3141
rarity=C
[/card]
[card]
primitive=Gorilla Chieftain
id=3142
primitive=Gorilla Berserkers
id=3140
rarity=C
[/card]
[card]
@@ -331,8 +324,8 @@ id=3143
rarity=C
[/card]
[card]
primitive=Gorilla Shaman
id=3171
primitive=Gorilla Chieftain
id=3142
rarity=C
[/card]
[card]
@@ -341,8 +334,8 @@ id=3172
rarity=C
[/card]
[card]
primitive=Gorilla War Cry
id=3173
primitive=Gorilla Shaman
id=3171
rarity=C
[/card]
[card]
@@ -351,18 +344,23 @@ id=3174
rarity=C
[/card]
[card]
primitive=Graveborn Token
id=-3066
primitive=Gorilla War Cry
id=3173
rarity=C
[/card]
[card]
primitive=Graveborn Token Balduvian Dead
id=3066111111
rarity=T
[/card]
[card]
primitive=Guerrilla Tactics
id=3175
id=3176
rarity=C
[/card]
[card]
primitive=Guerrilla Tactics
id=3176
id=3175
rarity=C
[/card]
[card]
@@ -392,12 +390,12 @@ rarity=U
[/card]
[card]
primitive=Insidious Bookworms
id=3077
id=3078
rarity=C
[/card]
[card]
primitive=Insidious Bookworms
id=3078
id=3077
rarity=C
[/card]
[card]
@@ -422,12 +420,12 @@ rarity=R
[/card]
[card]
primitive=Kjeldoran Escort
id=3198
id=3199
rarity=C
[/card]
[card]
primitive=Kjeldoran Escort
id=3199
id=3198
rarity=C
[/card]
[card]
@@ -442,12 +440,12 @@ rarity=R
[/card]
[card]
primitive=Kjeldoran Pride
id=3201
id=3202
rarity=C
[/card]
[card]
primitive=Kjeldoran Pride
id=3202
id=3201
rarity=C
[/card]
[card]
@@ -467,12 +465,12 @@ rarity=R
[/card]
[card]
primitive=Lat-Nam's Legacy
id=3110
id=3111
rarity=C
[/card]
[card]
primitive=Lat-Nam's Legacy
id=3111
id=3110
rarity=C
[/card]
[card]
@@ -482,12 +480,12 @@ rarity=R
[/card]
[card]
primitive=Lim-Dul's High Guard
id=3082
id=3083
rarity=C
[/card]
[card]
primitive=Lim-Dul's High Guard
id=3083
id=3082
rarity=C
[/card]
[card]
@@ -512,12 +510,12 @@ rarity=R
[/card]
[card]
primitive=Martyrdom
id=3203
id=3204
rarity=C
[/card]
[card]
primitive=Martyrdom
id=3204
id=3203
rarity=C
[/card]
[card]
@@ -557,12 +555,12 @@ rarity=R
[/card]
[card]
primitive=Noble Steeds
id=3205
id=3206
rarity=C
[/card]
[card]
primitive=Noble Steeds
id=3206
id=3205
rarity=C
[/card]
[card]
@@ -572,12 +570,12 @@ rarity=R
[/card]
[card]
primitive=Phantasmal Fiend
id=3085
id=3086
rarity=C
[/card]
[card]
primitive=Phantasmal Fiend
id=3086
id=3085
rarity=C
[/card]
[card]
@@ -592,12 +590,12 @@ rarity=R
[/card]
[card]
primitive=Phyrexian Boon
id=3087
id=3088
rarity=C
[/card]
[card]
primitive=Phyrexian Boon
id=3088
id=3087
rarity=C
[/card]
[card]
@@ -612,12 +610,12 @@ rarity=R
[/card]
[card]
primitive=Phyrexian War Beast
id=3053
id=3054
rarity=C
[/card]
[card]
primitive=Phyrexian War Beast
id=3054
id=3053
rarity=C
[/card]
[card]
@@ -637,17 +635,12 @@ rarity=U
[/card]
[card]
primitive=Reinforcements
id=3207
rarity=C
[/card]
[card]
primitive=Reinforcements
id=3208
rarity=C
[/card]
[card]
primitive=Reprisal
id=3209
primitive=Reinforcements
id=3207
rarity=C
[/card]
[card]
@@ -656,6 +649,11 @@ id=3210
rarity=C
[/card]
[card]
primitive=Reprisal
id=3209
rarity=C
[/card]
[card]
primitive=Ritual of the Machine
id=3089
rarity=R
@@ -672,12 +670,12 @@ rarity=R
[/card]
[card]
primitive=Royal Herbalist
id=3212
id=3213
rarity=C
[/card]
[card]
primitive=Royal Herbalist
id=3213
id=3212
rarity=C
[/card]
[card]
@@ -717,12 +715,12 @@ rarity=U
[/card]
[card]
primitive=Soldevi Adnate
id=3090
id=3091
rarity=C
[/card]
[card]
primitive=Soldevi Adnate
id=3091
id=3090
rarity=C
[/card]
[card]
@@ -737,17 +735,12 @@ rarity=R
[/card]
[card]
primitive=Soldevi Heretic
id=3114
rarity=C
[/card]
[card]
primitive=Soldevi Heretic
id=3115
rarity=C
[/card]
[card]
primitive=Soldevi Sage
id=3116
primitive=Soldevi Heretic
id=3114
rarity=C
[/card]
[card]
@@ -756,8 +749,8 @@ id=3117
rarity=C
[/card]
[card]
primitive=Soldevi Sentry
id=3059
primitive=Soldevi Sage
id=3116
rarity=C
[/card]
[card]
@@ -766,8 +759,8 @@ id=3060
rarity=C
[/card]
[card]
primitive=Soldevi Steam Beast
id=3061
primitive=Soldevi Sentry
id=3059
rarity=C
[/card]
[card]
@@ -776,6 +769,11 @@ id=3062
rarity=C
[/card]
[card]
primitive=Soldevi Steam Beast
id=3061
rarity=C
[/card]
[card]
primitive=Soldier of Fortune
id=3182
rarity=U
@@ -797,12 +795,12 @@ rarity=R
[/card]
[card]
primitive=Stench of Decay
id=3092
id=3093
rarity=C
[/card]
[card]
primitive=Stench of Decay
id=3093
id=3092
rarity=C
[/card]
[card]
@@ -812,12 +810,12 @@ rarity=R
[/card]
[card]
primitive=Storm Crow
id=3119
id=3120
rarity=C
[/card]
[card]
primitive=Storm Crow
id=3120
id=3119
rarity=C
[/card]
[card]
@@ -827,12 +825,12 @@ rarity=U
[/card]
[card]
primitive=Storm Shaman
id=3183
id=3184
rarity=C
[/card]
[card]
primitive=Storm Shaman
id=3184
id=3183
rarity=C
[/card]
[card]
@@ -857,12 +855,12 @@ rarity=R
[/card]
[card]
primitive=Swamp Mosquito
id=3095
id=3096
rarity=C
[/card]
[card]
primitive=Swamp Mosquito
id=3096
id=3095
rarity=C
[/card]
[card]
@@ -872,12 +870,12 @@ rarity=R
[/card]
[card]
primitive=Taste of Paradise
id=3149
id=3150
rarity=C
[/card]
[card]
primitive=Taste of Paradise
id=3150
id=3149
rarity=C
[/card]
[card]
@@ -902,12 +900,12 @@ rarity=R
[/card]
[card]
primitive=Undergrowth
id=3152
id=3153
rarity=C
[/card]
[card]
primitive=Undergrowth
id=3153
id=3152
rarity=C
[/card]
[card]
@@ -922,12 +920,12 @@ rarity=U
[/card]
[card]
primitive=Varchild's Crusader
id=3185
id=3186
rarity=C
[/card]
[card]
primitive=Varchild's Crusader
id=3186
id=3185
rarity=C
[/card]
[card]
@@ -942,17 +940,12 @@ rarity=T
[/card]
[card]
primitive=Veteran's Voice
id=3188
rarity=C
[/card]
[card]
primitive=Veteran's Voice
id=3189
rarity=C
[/card]
[card]
primitive=Viscerid Armor
id=3125
primitive=Veteran's Voice
id=3188
rarity=C
[/card]
[card]
@@ -961,6 +954,11 @@ id=3126
rarity=C
[/card]
[card]
primitive=Viscerid Armor
id=3125
rarity=C
[/card]
[card]
primitive=Viscerid Drone
id=3127
rarity=U
@@ -972,12 +970,12 @@ rarity=R
[/card]
[card]
primitive=Whip Vine
id=3154
id=3155
rarity=C
[/card]
[card]
primitive=Whip Vine
id=3155
id=3154
rarity=C
[/card]
[card]
@@ -987,12 +985,12 @@ rarity=U
[/card]
[card]
primitive=Wild Aesthir
id=3219
id=3220
rarity=C
[/card]
[card]
primitive=Wild Aesthir
id=3220
id=3219
rarity=C
[/card]
[card]
@@ -1002,12 +1000,12 @@ rarity=R
[/card]
[card]
primitive=Yavimaya Ancients
id=3156
id=3157
rarity=C
[/card]
[card]
primitive=Yavimaya Ancients
id=3157
id=3156
rarity=C
[/card]
[card]

View File

@@ -1,9 +1,7 @@
[meta]
author=Wagic Team
name=Apocalypse
block=Invasion
year=2001
total=143
block=Invasion
[/meta]
[card]
primitive=AEther Mutation
@@ -216,7 +214,12 @@ id=28011
rarity=R
[/card]
[card]
primitive=Fire // Ice
primitive=Fire // Ice (Fire)
id=27165
rarity=U
[/card]
[card]
primitive=Fire // Ice (Ice)
id=27166
rarity=U
[/card]
@@ -306,7 +309,12 @@ id=26447
rarity=U
[/card]
[card]
primitive=Illusion // Reality
primitive=Illusion // Reality (Illusion)
id=27163
rarity=U
[/card]
[card]
primitive=Illusion // Reality (Reality)
id=27164
rarity=U
[/card]
@@ -366,11 +374,16 @@ id=26424
rarity=R
[/card]
[card]
primitive=Life // Death
primitive=Life // Death (Death)
id=27162
rarity=U
[/card]
[card]
primitive=Life // Death (Life)
id=27161
rarity=U
[/card]
[card]
primitive=Lightning Angel
id=27650
rarity=R
@@ -446,16 +459,26 @@ id=25949
rarity=R
[/card]
[card]
primitive=Night // Day
primitive=Night // Day (Day)
id=26276
rarity=U
[/card]
[card]
primitive=Night // Day (Night)
id=26691
rarity=U
[/card]
[card]
primitive=Order // Chaos
primitive=Order // Chaos (Chaos)
id=27168
rarity=U
[/card]
[card]
primitive=Order // Chaos (Order)
id=27167
rarity=U
[/card]
[card]
primitive=Orim's Thunder
id=28751
rarity=C

View File

@@ -1,9 +1,7 @@
[meta]
author=Wagic Team
name=Alara Reborn
block=Shards of Alara
year=2009
total=145
block=Shards
[/meta]
[card]
primitive=Anathemancer
@@ -11,6 +9,11 @@ id=179538
rarity=U
[/card]
[card]
primitive=Anathemancer Unearthed
id=17953811
rarity=T
[/card]
[card]
primitive=Architects of Will
id=179597
rarity=C
@@ -186,6 +189,11 @@ id=179573
rarity=C
[/card]
[card]
primitive=Etherium Abomination Unearthed
id=17957311
rarity=T
[/card]
[card]
primitive=Ethersworn Shieldmage
id=179578
rarity=C
@@ -321,6 +329,11 @@ id=179602
rarity=C
[/card]
[card]
primitive=Kathari Bomber Unearthed
id=17960211
rarity=T
[/card]
[card]
primitive=Kathari Remnant
id=185060
rarity=U

View File

@@ -1,10 +1,13 @@
[meta]
author=Wagic Team
name=Archenemy
year=2010
total=150
[/meta]
[card]
primitive=A Display of My Dark Power
id=212578
rarity=C
[/card]
[card]
primitive=AEther Spellbomb
id=220525
rarity=C
@@ -15,6 +18,21 @@ id=220454
rarity=C
[/card]
[card]
primitive=All in Good Time
id=212648
rarity=C
[/card]
[card]
primitive=All Shall Smolder in My Wake
id=212617
rarity=C
[/card]
[card]
primitive=Approach My Molten Realm
id=212591
rarity=C
[/card]
[card]
primitive=Architects of Will
id=220517
rarity=C
@@ -65,6 +83,11 @@ id=220482
rarity=R
[/card]
[card]
primitive=Behold the Power of Destruction
id=212585
rarity=C
[/card]
[card]
primitive=Bituminous Blast
id=220518
rarity=U
@@ -86,7 +109,7 @@ rarity=U
[/card]
[card]
primitive=Cemetery Reaper
id=220476
id=220485
rarity=R
[/card]
[card]
@@ -100,6 +123,11 @@ id=220513
rarity=C
[/card]
[card]
primitive=Choose Your Champion
id=212581
rarity=C
[/card]
[card]
primitive=Colossal Might
id=220519
rarity=C
@@ -110,6 +138,11 @@ id=220567
rarity=U
[/card]
[card]
primitive=Dance, Pathetic Marionette
id=212610
rarity=C
[/card]
[card]
primitive=Dimir Signet
id=220548
rarity=C
@@ -150,6 +183,11 @@ id=220526
rarity=R
[/card]
[card]
primitive=Embrace My Diabolical Vision
id=212596
rarity=C
[/card]
[card]
primitive=Ethersworn Shieldmage
id=220520
rarity=C
@@ -160,13 +198,33 @@ id=220534
rarity=U
[/card]
[card]
primitive=Every Hope Shall Vanish
id=212593
rarity=C
[/card]
[card]
primitive=Every Last Vestige Shall Rot
id=212655
rarity=C
[/card]
[card]
primitive=Evil Comes to Fruition
id=212599
rarity=C
[/card]
[card]
primitive=Extractor Demon
id=220507
rarity=R
[/card]
[card]
primitive=Feed the Machine
id=212652
rarity=C
[/card]
[card]
primitive=Feral Hydra
id=220684
id=220532
rarity=R
[/card]
[card]
@@ -226,7 +284,7 @@ rarity=L
[/card]
[card]
primitive=Forgotten Ancient
id=220583
id=220476
rarity=R
[/card]
[card]
@@ -275,8 +333,33 @@ id=220563
rarity=U
[/card]
[card]
primitive=I Bask in Your Silent Awe
id=212614
rarity=C
[/card]
[card]
primitive=I Call on the Ancient Magics
id=212619
rarity=C
[/card]
[card]
primitive=I Delight in Your Convulsions
id=212580
rarity=C
[/card]
[card]
primitive=I Know All, I See All
id=212597
rarity=C
[/card]
[card]
primitive=Ignite the Cloneforge!
id=212587
rarity=C
[/card]
[card]
primitive=Imperial Hellkite
id=220464
id=220463
rarity=R
[/card]
[card]
@@ -300,6 +383,16 @@ id=220459
rarity=U
[/card]
[card]
primitive=Into the Earthen Maw
id=212582
rarity=C
[/card]
[card]
primitive=Introductions Are in Order
id=212603
rarity=C
[/card]
[card]
primitive=Island
id=221300
rarity=L
@@ -341,10 +434,15 @@ rarity=C
[/card]
[card]
primitive=Kilnmouth Dragon
id=220465
id=220464
rarity=R
[/card]
[card]
primitive=Know Naught but Fire
id=212600
rarity=C
[/card]
[card]
primitive=Krosan Tusker
id=220491
rarity=C
@@ -380,6 +478,11 @@ id=220536
rarity=R
[/card]
[card]
primitive=Look Skyward and Despair
id=212579
rarity=C
[/card]
[card]
primitive=Magister Sphinx
id=220509
rarity=R
@@ -400,8 +503,13 @@ id=220510
rarity=R
[/card]
[card]
primitive=May Civilization Collapse
id=212606
rarity=C
[/card]
[card]
primitive=Memnarch
id=220532
id=220471
rarity=R
[/card]
[card]
@@ -416,12 +524,17 @@ rarity=C
[/card]
[card]
primitive=Molimo, Maro-Sorcerer
id=220485
id=220503
rarity=R
[/card]
[card]
primitive=Mortal Flesh Is Weak
id=212608
rarity=C
[/card]
[card]
primitive=Mosswort Bridge
id=220570
id=220571
rarity=R
[/card]
[card]
@@ -440,11 +553,46 @@ id=221305
rarity=L
[/card]
[card]
primitive=My Crushing Masterstroke
id=212611
rarity=C
[/card]
[card]
primitive=My Genius Knows No Bounds
id=212661
rarity=C
[/card]
[card]
primitive=My Undead Horde Awakens
id=212620
rarity=C
[/card]
[card]
primitive=My Wish Is Your Command
id=212607
rarity=C
[/card]
[card]
primitive=Nantuko Monastery
id=220545
rarity=U
[/card]
[card]
primitive=Nature Demands an Offering
id=212601
rarity=C
[/card]
[card]
primitive=Nature Shields Its Own
id=212577
rarity=C
[/card]
[card]
primitive=Nothing Can Stop Me Now
id=212624
rarity=C
[/card]
[card]
primitive=Obelisk of Esper
id=220461
rarity=C
@@ -455,6 +603,11 @@ id=220586
rarity=C
[/card]
[card]
primitive=Only Blood Ends Your Nightmares
id=212622
rarity=C
[/card]
[card]
primitive=Pale Recluse
id=220523
rarity=C
@@ -481,7 +634,7 @@ rarity=C
[/card]
[card]
primitive=Primal Command
id=220571
id=220570
rarity=R
[/card]
[card]
@@ -505,6 +658,11 @@ id=220577
rarity=C
[/card]
[card]
primitive=Realms Befitting My Majesty
id=212653
rarity=C
[/card]
[card]
primitive=Reanimate
id=220576
rarity=U
@@ -515,8 +673,18 @@ id=220515
rarity=U
[/card]
[card]
primitive=Roots of All Evil
id=212602
rarity=C
[/card]
[card]
primitive=Rotted Ones, Lay Siege
id=212583
rarity=C
[/card]
[card]
primitive=Ryusei, the Falling Star
id=220471
id=220583
rarity=R
[/card]
[card]
@@ -536,7 +704,7 @@ rarity=U
[/card]
[card]
primitive=Scion of Darkness
id=220588
id=220465
rarity=R
[/card]
[card]
@@ -606,10 +774,15 @@ rarity=U
[/card]
[card]
primitive=Sundering Titan
id=220533
id=220472
rarity=R
[/card]
[card]
primitive=Surrender Your Thoughts
id=212598
rarity=C
[/card]
[card]
primitive=Swamp
id=221311
rarity=L
@@ -650,6 +823,31 @@ id=220481
rarity=C
[/card]
[card]
primitive=The Dead Shall Serve
id=212613
rarity=C
[/card]
[card]
primitive=The Fate of the Flammable
id=212576
rarity=C
[/card]
[card]
primitive=The Iron Guardian Stirs
id=212594
rarity=C
[/card]
[card]
primitive=The Pieces Are Coming Together
id=212604
rarity=C
[/card]
[card]
primitive=The Very Soil Shall Shake
id=212615
rarity=C
[/card]
[card]
primitive=Thelonite Hermit
id=220558
rarity=R
@@ -665,6 +863,11 @@ id=220581
rarity=U
[/card]
[card]
primitive=Tooth, Claw, and Tail
id=212590
rarity=C
[/card]
[card]
primitive=Torrent of Souls
id=220547
rarity=U
@@ -681,7 +884,7 @@ rarity=C
[/card]
[card]
primitive=Two-Headed Dragon
id=220472
id=220486
rarity=R
[/card]
[card]
@@ -730,11 +933,16 @@ id=220551
rarity=U
[/card]
[card]
primitive=Wax // Wane
primitive=Wax (Wax/Wane)
id=220502
rarity=U
[/card]
[card]
primitive=Which of You Burns Brightest?
id=212605
rarity=C
[/card]
[card]
primitive=Wickerbough Elder
id=220575
rarity=C
@@ -745,6 +953,21 @@ id=220560
rarity=U
[/card]
[card]
primitive=Your Fate Is Thrice Sealed
id=212618
rarity=C
[/card]
[card]
primitive=Your Puny Minds Cannot Fathom
id=212588
rarity=C
[/card]
[card]
primitive=Your Will Is Not Your Own
id=212609
rarity=C
[/card]
[card]
primitive=Zombie Infestation
id=220579
rarity=U

View File

@@ -1,8 +1,6 @@
[meta]
author=Wagic Team
name=Arabian Nights
year=1993
total=92
[/meta]
[card]
primitive=Abu Ja'far
@@ -10,6 +8,11 @@ id=968
rarity=U
[/card]
[card]
primitive=Aladdin
id=955
rarity=R
[/card]
[card]
primitive=Aladdin's Lamp
id=900
rarity=R
@@ -20,11 +23,6 @@ id=901
rarity=R
[/card]
[card]
primitive=Aladdin
id=955
rarity=R
[/card]
[card]
primitive=Ali Baba
id=956
rarity=U
@@ -36,12 +34,12 @@ rarity=R
[/card]
[card]
primitive=Army of Allah
id=969
id=970
rarity=C
[/card]
[card]
primitive=Army of Allah
id=970
id=969
rarity=C
[/card]
[card]
@@ -51,12 +49,12 @@ rarity=U
[/card]
[card]
primitive=Bird Maiden
id=958
id=959
rarity=C
[/card]
[card]
primitive=Bird Maiden
id=959
id=958
rarity=C
[/card]
[card]
@@ -105,6 +103,11 @@ id=929
rarity=C
[/card]
[card]
primitive=Desert
id=986
rarity=C
[/card]
[card]
primitive=Desert Nomads
id=960
rarity=C
@@ -115,11 +118,6 @@ id=943
rarity=U
[/card]
[card]
primitive=Desert
id=986
rarity=C
[/card]
[card]
primitive=Diamond Valley
id=987
rarity=U
@@ -135,19 +133,14 @@ id=906
rarity=R
[/card]
[card]
primitive=El-Hajjaj
id=915
rarity=R
[/card]
[card]
primitive=Elephant Graveyard
id=988
rarity=R
[/card]
[card]
primitive=Erg Raiders
id=916
rarity=C
primitive=El-Hajjaj
id=915
rarity=R
[/card]
[card]
primitive=Erg Raiders
@@ -155,6 +148,11 @@ id=917
rarity=C
[/card]
[card]
primitive=Erg Raiders
id=916
rarity=C
[/card]
[card]
primitive=Erhnam Djinn
id=945
rarity=R
@@ -166,12 +164,12 @@ rarity=U
[/card]
[card]
primitive=Fishliver Oil
id=930
id=931
rarity=C
[/card]
[card]
primitive=Fishliver Oil
id=931
id=930
rarity=C
[/card]
[card]
@@ -191,12 +189,12 @@ rarity=C
[/card]
[card]
primitive=Giant Tortoise
id=933
id=934
rarity=C
[/card]
[card]
primitive=Giant Tortoise
id=934
id=933
rarity=C
[/card]
[card]
@@ -206,12 +204,12 @@ rarity=R
[/card]
[card]
primitive=Hasran Ogress
id=919
id=920
rarity=C
[/card]
[card]
primitive=Hasran Ogress
id=920
id=919
rarity=C
[/card]
[card]
@@ -306,22 +304,17 @@ rarity=R
[/card]
[card]
primitive=Moorish Cavalry
id=975
id=976
rarity=C
[/card]
[card]
primitive=Moorish Cavalry
id=976
id=975
rarity=C
[/card]
[card]
primitive=Mountain
id=983
rarity=L
[/card]
[card]
primitive=Nafs Asp
id=949
rarity=C
[/card]
[card]
@@ -330,6 +323,11 @@ id=950
rarity=C
[/card]
[card]
primitive=Nafs Asp
id=949
rarity=C
[/card]
[card]
primitive=Oasis
id=991
rarity=U
@@ -341,17 +339,12 @@ rarity=R
[/card]
[card]
primitive=Oubliette
id=924
rarity=C
[/card]
[card]
primitive=Oubliette
id=925
rarity=C
[/card]
[card]
primitive=Piety
id=977
primitive=Oubliette
id=924
rarity=C
[/card]
[card]
@@ -360,6 +353,11 @@ id=978
rarity=C
[/card]
[card]
primitive=Piety
id=977
rarity=C
[/card]
[card]
primitive=Pyramids
id=911
rarity=R
@@ -376,12 +374,12 @@ rarity=R
[/card]
[card]
primitive=Rukh Egg
id=965
id=966
rarity=C
[/card]
[card]
primitive=Rukh Egg
id=966
id=965
rarity=C
[/card]
[card]
@@ -426,12 +424,12 @@ rarity=U
[/card]
[card]
primitive=Stone-Throwing Devils
id=927
id=928
rarity=C
[/card]
[card]
primitive=Stone-Throwing Devils
id=928
id=927
rarity=C
[/card]
[card]
@@ -441,17 +439,12 @@ rarity=C
[/card]
[card]
primitive=War Elephant
id=981
rarity=C
[/card]
[card]
primitive=War Elephant
id=982
rarity=C
[/card]
[card]
primitive=Wyluli Wolf
id=953
primitive=War Elephant
id=981
rarity=C
[/card]
[card]
@@ -460,6 +453,11 @@ id=954
rarity=C
[/card]
[card]
primitive=Wyluli Wolf
id=953
rarity=C
[/card]
[card]
primitive=Ydwen Efreet
id=967
rarity=R

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