Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9cc2c6cc4d |
+13
-20
@@ -1,24 +1,17 @@
|
|||||||
language: cpp
|
language: cpp
|
||||||
before_install:
|
before_install:
|
||||||
- export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk"
|
- export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk"
|
||||||
- export PSPSDK="$PSPDEV/psp/sdk"
|
- export PSPSDK="$PSPDEV/psp/sdk"
|
||||||
- export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
|
- export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
|
||||||
- export ANDROID="android-sdk-linux/tools/android"
|
- export ANDROID="android-sdk-linux/tools/android"
|
||||||
install:
|
install:
|
||||||
- sudo apt-get update -qq
|
- 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; fi
|
- if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch; fi
|
||||||
- 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
|
- 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
|
- 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/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv
|
||||||
- wget http://dl.google.com/android/android-sdk_r22-linux.tgz -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 --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2
|
||||||
- tar -zxf android-sdk_r22-linux.tgz
|
- tar -zxf android-sdk_r22-linux.tgz
|
||||||
- $ANDROID list sdk -a
|
- echo yes | $ANDROID update sdk --filter 1,2,3,8 --no-ui --force > log.txt
|
||||||
- echo yes | $ANDROID update sdk -a --filter 1,2,4,18 --no-ui --force > log.txt
|
|
||||||
- sudo pip install pyjavaproperties
|
|
||||||
script: ./travis-script.sh
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
secure: YocijVYZa1oDPviFubPIpmBmXyw0gQ7D0YA6tC01wExXvY+8tGUh1HQ5uXn8LotRZ+Ob5HLHDaCzkKWF8+57ILSMeHrnf6tcRyyeO7wjNY9P7WvSZyCjvqnWzsUN9tiMmsEzhTz2MaUgsY6ocB/4nbWZwfQvL7z+s7z41R4J1I4=
|
|
||||||
script: "./travis-script.sh"
|
script: "./travis-script.sh"
|
||||||
after_success: ./upload-binaries.sh
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+3
-3
@@ -73,7 +73,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<PrecompiledHeader>
|
<PrecompiledHeader>
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
<Optimization>Full</Optimization>
|
<Optimization>Full</Optimization>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>src/zipFS;Dependencies/SDL/include;Dependencies/include;$(JGEEXTRAS);../Boost;../projects/mtg/include;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_ITERATOR_DEBBUGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_ITERATOR_DEBBUGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ HGE_OBJS = src/hge/hgecolor.o src/hge/hgeparticle.o \
|
|||||||
|
|
||||||
|
|
||||||
CXXFLAGS = -W -Wall -Werror -Wno-unused
|
CXXFLAGS = -W -Wall -Werror -Wno-unused
|
||||||
CXXFLAGS += -DTIXML_USE_STL
|
|
||||||
|
|
||||||
ifdef DEBUG
|
ifdef DEBUG
|
||||||
CXXFLAGS += -ggdb3
|
CXXFLAGS += -ggdb3
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ std::string ToHex(T* pointer)
|
|||||||
{ \
|
{ \
|
||||||
std::ostringstream stream; \
|
std::ostringstream stream; \
|
||||||
stream << inString << std::endl; \
|
stream << inString << std::endl; \
|
||||||
OutputDebugStringA(stream.str().c_str()); \
|
OutputDebugString(stream.str().c_str()); \
|
||||||
}
|
}
|
||||||
#endif // QT_CONFIG
|
#endif // QT_CONFIG
|
||||||
#endif // Win32, Linux
|
#endif // Win32, Linux
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ bool JAnimator::Load(const char* scriptFile)
|
|||||||
element = script->ToElement();
|
element = script->ToElement();
|
||||||
printf("---- Loading %s:%s\n", element->Value(), element->Attribute("name"));
|
printf("---- Loading %s:%s\n", element->Value(), element->Attribute("name"));
|
||||||
|
|
||||||
string type[] =
|
const char *type[] =
|
||||||
{
|
{
|
||||||
"ANIMATION_TYPE_LOOPING",
|
"ANIMATION_TYPE_LOOPING",
|
||||||
"ANIMATION_TYPE_ONCE_AND_STAY",
|
"ANIMATION_TYPE_ONCE_AND_STAY",
|
||||||
@@ -78,7 +78,7 @@ bool JAnimator::Load(const char* scriptFile)
|
|||||||
|
|
||||||
const char* aniType = element->Attribute("type");
|
const char* aniType = element->Attribute("type");
|
||||||
for (int i=0;i<5;i++)
|
for (int i=0;i<5;i++)
|
||||||
if (type[i] == aniType)
|
if (strcmp(type[i], aniType)==0)
|
||||||
{
|
{
|
||||||
SetAnimationType(i);
|
SetAnimationType(i);
|
||||||
break;
|
break;
|
||||||
@@ -108,7 +108,7 @@ bool JAnimator::Load(const char* scriptFile)
|
|||||||
element = param->ToElement();
|
element = param->ToElement();
|
||||||
if (element != NULL)
|
if (element != NULL)
|
||||||
{
|
{
|
||||||
if (element->ValueStr() == "settings")
|
if (strcmp(element->Value(), "settings")==0)
|
||||||
{
|
{
|
||||||
const char* quadName = element->Attribute("quad");
|
const char* quadName = element->Attribute("quad");
|
||||||
JQuad* quad = mResource->GetQuad(quadName);
|
JQuad* quad = mResource->GetQuad(quadName);
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
|||||||
DebugTrace("User path " << userPath);
|
DebugTrace("User path " << userPath);
|
||||||
#elif defined (QT_CONFIG)
|
#elif defined (QT_CONFIG)
|
||||||
|
|
||||||
QDir sysDir(RESDIR);
|
QDir sysDir("projects/mtg/bin/Res");
|
||||||
QDir dir(QDir::homePath());
|
QDir dir(QDir::homePath());
|
||||||
dir.mkdir(USERDIR);
|
dir.mkdir(USERDIR);
|
||||||
dir.cd(USERDIR);
|
dir.cd(USERDIR);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void JQuad::SetHotSpot(float x, float y)
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
JTexture::JTexture() : mWidth(0), mHeight(0), mBuffer(NULL)
|
JTexture::JTexture() : mBuffer(NULL)
|
||||||
{
|
{
|
||||||
mTexId = -1;
|
mTexId = -1;
|
||||||
}
|
}
|
||||||
@@ -305,12 +305,14 @@ void JRenderer::TransferTextureToGLContext(JTexture& inTexture)
|
|||||||
JTexture* JRenderer::CreateTexture(int width, int height, int mode __attribute__((unused)))
|
JTexture* JRenderer::CreateTexture(int width, int height, int mode __attribute__((unused)))
|
||||||
{
|
{
|
||||||
JTexture *tex = new JTexture();
|
JTexture *tex = new JTexture();
|
||||||
|
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
JTexture* JRenderer::LoadTexture(const char* filename, int mode, int textureFormat)
|
JTexture* JRenderer::LoadTexture(const char* filename, int mode, int textureFormat)
|
||||||
{
|
{
|
||||||
JTexture *tex = new JTexture();
|
JTexture *tex = new JTexture();
|
||||||
|
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,16 +89,16 @@ bool JOBJModel::Load(const char *modelName, const char *textureName)
|
|||||||
|
|
||||||
if (count == 4)
|
if (count == 4)
|
||||||
{
|
{
|
||||||
if (string("vn") == s1)
|
if (strcmp(s1, "vn") == 0)
|
||||||
normalList.push_back(vert);
|
normalList.push_back(vert);
|
||||||
else if (string("vt") == s1)
|
else if (strcmp(s1, "vt") == 0)
|
||||||
texList.push_back(vert);
|
texList.push_back(vert);
|
||||||
else if (string("v") == s1)
|
else if (strcmp(s1, "v") == 0)
|
||||||
vertList.push_back(vert);
|
vertList.push_back(vert);
|
||||||
}
|
}
|
||||||
else if (count == 3)
|
else if (count == 3)
|
||||||
{
|
{
|
||||||
if (string("vt") == s1)
|
if (strcmp(s1, "vt") == 0)
|
||||||
texList.push_back(vert);
|
texList.push_back(vert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-16
@@ -90,7 +90,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
// FIELD_COUNT
|
// FIELD_COUNT
|
||||||
// };
|
// };
|
||||||
|
|
||||||
const string lifeValues[] =
|
const char* lifeValues[] =
|
||||||
{
|
{
|
||||||
"speed",
|
"speed",
|
||||||
"size",
|
"size",
|
||||||
@@ -104,7 +104,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
"gravity"
|
"gravity"
|
||||||
};
|
};
|
||||||
|
|
||||||
const string typeNames[] =
|
const char* typeNames[] =
|
||||||
{
|
{
|
||||||
"POINT",
|
"POINT",
|
||||||
"AREA",
|
"AREA",
|
||||||
@@ -113,7 +113,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
"CIRCLE"
|
"CIRCLE"
|
||||||
};
|
};
|
||||||
|
|
||||||
const string modeNames[] =
|
const char* modeNames[] =
|
||||||
{
|
{
|
||||||
"REPEAT",
|
"REPEAT",
|
||||||
"ONCE",
|
"ONCE",
|
||||||
@@ -149,32 +149,32 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
{
|
{
|
||||||
element = param->ToElement();
|
element = param->ToElement();
|
||||||
|
|
||||||
if (string("settings") == element->Attribute("name"))
|
if (strcmp(element->Attribute("name"), "settings")==0)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (string("NORMAL") == element->Attribute("blend"))
|
if (strcmp(element->Attribute("blend"), "NORMAL")==0)
|
||||||
mParticleEmitters[mEmitterCount]->SetBlending(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
mParticleEmitters[mEmitterCount]->SetBlending(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||||
else if (string("ADDITIVE") == element->Attribute("blend"))
|
else if (strcmp(element->Attribute("blend"), "ADDITIVE")==0)
|
||||||
mParticleEmitters[mEmitterCount]->SetBlending(BLEND_SRC_ALPHA, BLEND_ONE);
|
mParticleEmitters[mEmitterCount]->SetBlending(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||||
|
|
||||||
for (unsigned int i=0;i<sizeof(modeNames)/sizeof(char*);i++)
|
for (unsigned int i=0;i<sizeof(modeNames)/sizeof(char*);i++)
|
||||||
{
|
{
|
||||||
if (modeNames[i] == element->Attribute("mode"))
|
if (strcmp(element->Attribute("mode"), modeNames[i])==0)
|
||||||
{
|
{
|
||||||
mParticleEmitters[mEmitterCount]->mEmitterMode = i;
|
mParticleEmitters[mEmitterCount]->mEmitterMode = i;
|
||||||
#if defined (_DEBUG)
|
#if defined (_DEBUG)
|
||||||
printf("emitter mode:%s\n", modeNames[i].c_str());
|
printf("emitter mode:%s\n", modeNames[i]);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (unsigned i=0;i<sizeof(typeNames)/sizeof(char*);i++)
|
for (unsigned i=0;i<sizeof(typeNames)/sizeof(char*);i++)
|
||||||
{
|
{
|
||||||
if (typeNames[i] == element->Attribute("type"))
|
if (strcmp(element->Attribute("type"), typeNames[i])==0)
|
||||||
{
|
{
|
||||||
mParticleEmitters[mEmitterCount]->mType = i;
|
mParticleEmitters[mEmitterCount]->mType = i;
|
||||||
#if defined (_DEBUG)
|
#if defined (_DEBUG)
|
||||||
printf("emitter type:%s\n", typeNames[i].c_str());
|
printf("emitter type:%s\n", typeNames[i]);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (string("quantity") == element->Attribute("name"))
|
else if (strcmp(element->Attribute("name"), "quantity")==0)
|
||||||
{
|
{
|
||||||
for (key = param->FirstChild(); key; key = key->NextSibling())
|
for (key = param->FirstChild(); key; key = key->NextSibling())
|
||||||
{
|
{
|
||||||
@@ -227,7 +227,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (string("lifex") == element->Attribute("name"))
|
else if (strcmp(element->Attribute("name"), "lifex")==0)
|
||||||
{
|
{
|
||||||
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
||||||
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
||||||
@@ -236,7 +236,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
mParticleEmitters[mEmitterCount]->mLifeMax= value;
|
mParticleEmitters[mEmitterCount]->mLifeMax= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (string("anglex") == element->Attribute("name"))
|
else if (strcmp(element->Attribute("name"), "anglex")==0)
|
||||||
{
|
{
|
||||||
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
||||||
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
||||||
@@ -245,7 +245,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
mParticleEmitters[mEmitterCount]->mAngleMax= value*DEG2RAD;
|
mParticleEmitters[mEmitterCount]->mAngleMax= value*DEG2RAD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (string("speedx") == element->Attribute("name"))
|
else if (strcmp(element->Attribute("name"), "speedx")==0)
|
||||||
{
|
{
|
||||||
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
||||||
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
||||||
@@ -254,7 +254,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
mParticleEmitters[mEmitterCount]->mSpeedMax= value;
|
mParticleEmitters[mEmitterCount]->mSpeedMax= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (string("sizex") == element->Attribute("name"))
|
else if (strcmp(element->Attribute("name"), "sizex")==0)
|
||||||
{
|
{
|
||||||
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
if (element->QueryFloatAttribute("base", &baseValue) == TIXML_SUCCESS &&
|
||||||
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
element->QueryFloatAttribute("max", &value) == TIXML_SUCCESS)
|
||||||
@@ -267,7 +267,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
{
|
{
|
||||||
for (int i=0;i<FIELD_COUNT;i++)
|
for (int i=0;i<FIELD_COUNT;i++)
|
||||||
{
|
{
|
||||||
if (lifeValues[i] == element->Attribute("name"))
|
if (strcmp(element->Attribute("name"), lifeValues[i])==0)
|
||||||
{
|
{
|
||||||
for (key = param->FirstChild(); key; key = key->NextSibling())
|
for (key = param->FirstChild(); key; key = key->NextSibling())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,11 +119,11 @@ bool JResourceManager::LoadResource(const string& resourceName)
|
|||||||
element = node->ToElement();
|
element = node->ToElement();
|
||||||
if (element != NULL)
|
if (element != NULL)
|
||||||
{
|
{
|
||||||
if (element->ValueStr() == "texture")
|
if (strcmp(element->Value(), "texture")==0)
|
||||||
{
|
{
|
||||||
CreateTexture(element->Attribute("name"));
|
CreateTexture(element->Attribute("name"));
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "quad")
|
else if (strcmp(element->Value(), "quad")==0)
|
||||||
{
|
{
|
||||||
string quadName = element->Attribute("name");
|
string quadName = element->Attribute("name");
|
||||||
string textureName = element->Attribute("texture");
|
string textureName = element->Attribute("texture");
|
||||||
@@ -170,7 +170,7 @@ bool JResourceManager::LoadResource(const string& resourceName)
|
|||||||
GetQuad(id)->SetHotSpot(hotspotX, hotspotY);
|
GetQuad(id)->SetHotSpot(hotspotX, hotspotY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "font")
|
else if (strcmp(element->Value(), "font")==0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,8 +96,9 @@ int main(int argc, char* argv[])
|
|||||||
options.reloadProfile();
|
options.reloadProfile();
|
||||||
TestSuite testSuite("test/_tests.txt");
|
TestSuite testSuite("test/_tests.txt");
|
||||||
result = testSuite.run();
|
result = testSuite.run();
|
||||||
|
int totalTests = testSuite.nbTests + testSuite.nbAITests;
|
||||||
delete wagicCore;
|
delete wagicCore;
|
||||||
DebugTrace("TestSuite done: failed test: " << result << " out of " << testSuite.nbTests + testSuite.nbAITests << " total");
|
DebugTrace("TestSuite done: failed test: " << result << " out of " << totalTests << " total");
|
||||||
#ifdef CAPTURE_STDERR
|
#ifdef CAPTURE_STDERR
|
||||||
OutputCapturer::debugAndClear();
|
OutputCapturer::debugAndClear();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
#endif //QT_WIDGET
|
#endif //QT_WIDGET
|
||||||
|
|
||||||
if(argc >= 2 && string(argv[1]) == "testsuite")
|
if(argc >= 2 && strcmp(argv[1], "testsuite")==0)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
result += WagicCore::runTestSuite();
|
result += WagicCore::runTestSuite();
|
||||||
|
|||||||
+18
-4
@@ -166,11 +166,12 @@ void DestroyGame(void)
|
|||||||
[menuKeyRecognizer requireGestureRecognizerToFail: selectKeyRecognizer];
|
[menuKeyRecognizer requireGestureRecognizerToFail: selectKeyRecognizer];
|
||||||
[self addGestureRecognizer:menuKeyRecognizer];
|
[self addGestureRecognizer:menuKeyRecognizer];
|
||||||
|
|
||||||
/*
|
// initialize the scaling factor
|
||||||
|
lastScale = 1.f;
|
||||||
UIPinchGestureRecognizer *pinchZoomRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchZoom:)];
|
UIPinchGestureRecognizer *pinchZoomRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchZoom:)];
|
||||||
[self addGestureRecognizer:pinchZoomRecognizer];
|
[self addGestureRecognizer:pinchZoomRecognizer];
|
||||||
[pinchZoomRecognizer release];
|
[pinchZoomRecognizer release];
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Create a single tap recognizer to select the nearest object.
|
Create a single tap recognizer to select the nearest object.
|
||||||
@@ -391,8 +392,6 @@ void DestroyGame(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
||||||
{
|
{
|
||||||
return YES;
|
return YES;
|
||||||
@@ -425,6 +424,21 @@ void DestroyGame(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Gesture Recognizer callbacks
|
#pragma mark Gesture Recognizer callbacks
|
||||||
|
- (void)handlePinchZoom: (UIPinchGestureRecognizer *) pinchGesture {
|
||||||
|
[[[pinchGesture view] layer] removeAllAnimations];
|
||||||
|
CGFloat currentScaleFactor = [pinchGesture scale];
|
||||||
|
|
||||||
|
if (pinchGesture.state == UIGestureRecognizerStateEnded) {
|
||||||
|
if (lastScale < 1.3f) {
|
||||||
|
lastScale *= currentScaleFactor;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lastScale = 1;
|
||||||
|
[self displayGameMenu];
|
||||||
|
}
|
||||||
|
pinchGesture.scale = 1.f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (void)handlePanMotion: (UIPanGestureRecognizer *) panGesture
|
- (void)handlePanMotion: (UIPanGestureRecognizer *) panGesture
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
NSLog(@"EAGL ViewController - view Did Load");
|
NSLog(@"EAGL ViewController - view Did Load");
|
||||||
|
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +55,6 @@
|
|||||||
[self.view resumeGame];
|
[self.view resumeGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)viewWillDisappear:(BOOL)animated
|
- (void)viewWillDisappear:(BOOL)animated
|
||||||
{
|
{
|
||||||
[self.view pauseGame];
|
[self.view pauseGame];
|
||||||
@@ -77,6 +75,10 @@
|
|||||||
[self.view endGame];
|
[self.view endGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (UIStatusBarStyle)preferredStatusBarStyle {
|
||||||
|
return UIStatusBarStyleLightContent;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)viewDidAppear:(BOOL)animated {
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
|
|
||||||
NSLog(@"EAGL ViewController - view Did Appear");
|
NSLog(@"EAGL ViewController - view Did Appear");
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "JFileSystem.h"
|
#include "JFileSystem.h"
|
||||||
#include "JRenderer.h"
|
#include "JRenderer.h"
|
||||||
#include "JGameLauncher.h"
|
#include "JGameLauncher.h"
|
||||||
|
#include "UIScreen+Util.h"
|
||||||
|
|
||||||
#define ACTUAL_SCREEN_WIDTH (SCREEN_WIDTH)
|
#define ACTUAL_SCREEN_WIDTH (SCREEN_WIDTH)
|
||||||
#define ACTUAL_SCREEN_HEIGHT (SCREEN_HEIGHT)
|
#define ACTUAL_SCREEN_HEIGHT (SCREEN_HEIGHT)
|
||||||
@@ -61,7 +62,7 @@ bool checkFramebufferStatus();
|
|||||||
// for retina devices. because of the 568 px, the ratio between height-width skews the
|
// for retina devices. because of the 568 px, the ratio between height-width skews the
|
||||||
// frame a bit
|
// frame a bit
|
||||||
|
|
||||||
if ( backingHeight == 568 || backingWidth == 568) {
|
if ( [UIScreen isRetinaDisplay]) {
|
||||||
viewPort.left = 0;
|
viewPort.left = 0;
|
||||||
viewPort.top = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2 + 22; // account for status bar
|
viewPort.top = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2 + 22; // account for status bar
|
||||||
viewPort.right = backingWidth;
|
viewPort.right = backingWidth;
|
||||||
|
|||||||
+2
-2
@@ -343,7 +343,7 @@ void JQuad::SetHotSpot(float x, float y)
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
JTexture::JTexture() : mWidth(0), mHeight(0), mBuffer(NULL)
|
JTexture::JTexture() : mBuffer(NULL)
|
||||||
{
|
{
|
||||||
mTexId = -1;
|
mTexId = -1;
|
||||||
}
|
}
|
||||||
@@ -2486,7 +2486,7 @@ void JRenderer::Enable2D()
|
|||||||
#if (defined GL_VERSION_ES_CM_1_1) || (defined GL_OES_VERSION_1_1)
|
#if (defined GL_VERSION_ES_CM_1_1) || (defined GL_OES_VERSION_1_1)
|
||||||
glOrthof(0.0f, SCREEN_WIDTH_F, 0.0f, SCREEN_HEIGHT_F-1.0f, -1.0f, 1.0f);
|
glOrthof(0.0f, SCREEN_WIDTH_F, 0.0f, SCREEN_HEIGHT_F-1.0f, -1.0f, 1.0f);
|
||||||
#else
|
#else
|
||||||
glOrtho(0.0f, SCREEN_WIDTH_F, 0.0f, SCREEN_HEIGHT_F-1.0f, -1.0f, 1.0f);
|
gluOrtho2D(0.0f, SCREEN_WIDTH_F, 0.0f, SCREEN_HEIGHT_F-1.0f);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glMatrixMode (GL_MODELVIEW); // Select The Modelview Matrix
|
glMatrixMode (GL_MODELVIEW); // Select The Modelview Matrix
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ void WagicCore::resizeGL(int width, int height)
|
|||||||
#if (defined GL_VERSION_ES_CM_1_1 || defined GL_OES_VERSION_1_1)
|
#if (defined GL_VERSION_ES_CM_1_1 || defined GL_OES_VERSION_1_1)
|
||||||
glOrthof(0.0f, (float) (m_viewPort.right()-m_viewPort.left())-1.0f, 0.0f, (float) (m_viewPort.bottom()-m_viewPort.top())-1.0f, -1.0f, 1.0f);
|
glOrthof(0.0f, (float) (m_viewPort.right()-m_viewPort.left())-1.0f, 0.0f, (float) (m_viewPort.bottom()-m_viewPort.top())-1.0f, -1.0f, 1.0f);
|
||||||
#else
|
#else
|
||||||
glOrtho(0.0f, (float) (m_viewPort.right()-m_viewPort.left())-1.0f, 0.0f, (float) (m_viewPort.bottom()-m_viewPort.top())-1.0f, -1.0f, 1.0f);
|
gluOrtho2D(0.0f, (float) (m_viewPort.right()-m_viewPort.left())-1.0f, 0.0f, (float) (m_viewPort.bottom()-m_viewPort.top())-1.0f);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glMatrixMode (GL_MODELVIEW); // Select The Modelview Matrix
|
glMatrixMode (GL_MODELVIEW); // Select The Modelview Matrix
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ PNG_PATH := $(JGE_PATH)/Dependencies/libpng
|
|||||||
DEBUG ?= DEBUG
|
DEBUG ?= DEBUG
|
||||||
|
|
||||||
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG -D_$(DEBUG)
|
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG -D_$(DEBUG)
|
||||||
LOCAL_CFLAGS += -D_STLP_USE_SIMPLE_NODE_ALLOC -DTIXML_USE_STL
|
LOCAL_CFLAGS += -D_STLP_USE_SIMPLE_NODE_ALLOC
|
||||||
LOCAL_CFLAGS += -D__arm__ -D_REENTRANT -D_GLIBCXX__PTHREADS
|
LOCAL_CFLAGS += -D__arm__ -D_REENTRANT -D_GLIBCXX__PTHREADS
|
||||||
LOCAL_STATIC_LIBRARIES := libpng libjpeg
|
LOCAL_STATIC_LIBRARIES := libpng libjpeg
|
||||||
LOCAL_SHARED_LIBRARIES := SDL
|
LOCAL_SHARED_LIBRARIES := SDL
|
||||||
@@ -136,9 +136,6 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
|
|||||||
$(MTG_PATH)/src/WFont.cpp \
|
$(MTG_PATH)/src/WFont.cpp \
|
||||||
$(MTG_PATH)/src/WGui.cpp \
|
$(MTG_PATH)/src/WGui.cpp \
|
||||||
$(MTG_PATH)/src/WResourceManager.cpp \
|
$(MTG_PATH)/src/WResourceManager.cpp \
|
||||||
$(MTG_PATH)/src/DeckView.cpp \
|
|
||||||
$(MTG_PATH)/src/CarouselDeckView.cpp \
|
|
||||||
$(MTG_PATH)/src/GridDeckView.cpp \
|
|
||||||
$(JGE_PATH)/src/SDLmain.cpp \
|
$(JGE_PATH)/src/SDLmain.cpp \
|
||||||
$(JGE_PATH)/src/Encoding.cpp \
|
$(JGE_PATH)/src/Encoding.cpp \
|
||||||
$(JGE_PATH)/src/JAnimator.cpp \
|
$(JGE_PATH)/src/JAnimator.cpp \
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ OBJS = objs/InteractiveButton.o objs/AbilityParser.o objs/ActionElement.o\
|
|||||||
objs/ThisDescriptor.o objs/Token.o objs/Translate.o objs/TranslateKeys.o\
|
objs/ThisDescriptor.o objs/Token.o objs/Translate.o objs/TranslateKeys.o\
|
||||||
objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o\
|
objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o\
|
||||||
objs/WCachedResource.o objs/WDataSrc.o objs/WGui.o objs/WFilter.o objs/Tasks.o\
|
objs/WCachedResource.o objs/WDataSrc.o objs/WGui.o objs/WFilter.o objs/Tasks.o\
|
||||||
objs/WFont.o objs/CarouselDeckView.o objs/GridDeckView.o objs/DeckView.o
|
objs/WFont.o
|
||||||
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
||||||
|
|
||||||
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
||||||
@@ -73,7 +73,7 @@ PSP_EBOOT_UNKPNG = pic0.png
|
|||||||
PSP_EBOOT_PIC1 = pic1.png
|
PSP_EBOOT_PIC1 = pic1.png
|
||||||
INCDIR = ../../JGE/include ../../JGE/src/zipFS ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src ../../projects/mtg/include ../../Boost
|
INCDIR = ../../JGE/include ../../JGE/src/zipFS ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src ../../projects/mtg/include ../../Boost
|
||||||
LIBDIR = ../../JGE/lib/psp
|
LIBDIR = ../../JGE/lib/psp
|
||||||
CFLAGS = -O2 -G0 -DPSPFW3XX -DDEVHOOK -DUSE_PRECOMPILED_HEADERS=1 -DPSP -DTIXML_USE_STL
|
CFLAGS = -O2 -G0 -DPSPFW3XX -DDEVHOOK -DUSE_PRECOMPILED_HEADERS=1 -DPSP
|
||||||
else
|
else
|
||||||
OBJS += objs/TestSuiteAI.o
|
OBJS += objs/TestSuiteAI.o
|
||||||
INCDIR = -I../../JGE/include -I../../JGE/src -I/usr/X11/include -I../../projects/mtg/include -I../../Boost -I../../JGE/src/zipFS
|
INCDIR = -I../../JGE/include -I../../JGE/src -I/usr/X11/include -I../../projects/mtg/include -I../../Boost -I../../JGE/src/zipFS
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ auto=flashbackrule
|
|||||||
auto=retracerule
|
auto=retracerule
|
||||||
auto=suspendrule
|
auto=suspendrule
|
||||||
auto=morphrule
|
auto=morphrule
|
||||||
auto=playfromgraveyardrule
|
|
||||||
auto=attackrule
|
auto=attackrule
|
||||||
auto=blockrule
|
auto=blockrule
|
||||||
auto=combattriggerrule
|
auto=combattriggerrule
|
||||||
|
|||||||
@@ -18104,13 +18104,6 @@ mana={3}{R}
|
|||||||
type=Enchantment
|
type=Enchantment
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Crucible of Worlds
|
|
||||||
auto=lord(land|mygraveyard) CanPlayFromGraveyard
|
|
||||||
text=You may play land cards from your graveyard.
|
|
||||||
mana={3}
|
|
||||||
type=Artifact
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Crude Rampart
|
name=Crude Rampart
|
||||||
abilities=defender
|
abilities=defender
|
||||||
facedown={3}
|
facedown={3}
|
||||||
@@ -103475,15 +103468,6 @@ mana={1}{B}
|
|||||||
type=Enchantment
|
type=Enchantment
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Yawgmoth's Will
|
|
||||||
auto=lord(*|mygraveyard) canPlayFromGraveyard
|
|
||||||
auto=emblem transforms((,newability[@movedTo(*|mygraveyard):all(trigger[to]) moveTo(exile)])) ueot
|
|
||||||
auto=moveTo(exile)
|
|
||||||
text=Until end of turn, you may play cards from your graveyard. -- If a card would be put into your graveyard from anywhere this turn, exile that card instead.
|
|
||||||
mana={2}{B}
|
|
||||||
type=Sorcery
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Yawning Fissure
|
name=Yawning Fissure
|
||||||
auto=ability$!name(sacrifice land) notatarget(land|mybattlefield) sacrifice!$ opponent
|
auto=ability$!name(sacrifice land) notatarget(land|mybattlefield) sacrifice!$ opponent
|
||||||
text=Each opponent sacrifices a land.
|
text=Each opponent sacrifices a land.
|
||||||
|
|||||||
@@ -3187,6 +3187,19 @@ mana={2}
|
|||||||
type=Artifact
|
type=Artifact
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Crucible of Worlds
|
||||||
|
auto={0}:may moveTo(myBattlefield) target(land|mygraveyard) limit:1 myTurnOnly
|
||||||
|
# Above line does not work: "May moveto" from graveyards does
|
||||||
|
# not work due to interface issues. The "limit:1" doesn't work
|
||||||
|
# here either. Even if both worked, then the card would allow
|
||||||
|
# you to play lands *in addition* to the 1 land you can play per
|
||||||
|
# turn. Instead it should just give you the option to play this
|
||||||
|
# 1 land from your hand or your graveyard.
|
||||||
|
text=You may play land cards from your graveyard.
|
||||||
|
mana={3}
|
||||||
|
type=Artifact
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Cruel Deceiver
|
name=Cruel Deceiver
|
||||||
text={1}: Look at the top card of your library. -- {2}: Reveal the top card of your library. If it's a land card, Cruel Deceiver gains "Whenever Cruel Deceiver deals damage to a creature, destroy that creature" until end of turn. Activate this ability only once each turn.
|
text={1}: Look at the top card of your library. -- {2}: Reveal the top card of your library. If it's a land card, Cruel Deceiver gains "Whenever Cruel Deceiver deals damage to a creature, destroy that creature" until end of turn. Activate this ability only once each turn.
|
||||||
mana={1}{B}
|
mana={1}{B}
|
||||||
|
|||||||
@@ -249,7 +249,6 @@ curiosity2_i217.txt
|
|||||||
crimson_kobolds.txt
|
crimson_kobolds.txt
|
||||||
crosis_s_catacombs_1.txt
|
crosis_s_catacombs_1.txt
|
||||||
crosis_s_catacombs_2.txt
|
crosis_s_catacombs_2.txt
|
||||||
crucible_of_worlds.txt
|
|
||||||
crumble.txt
|
crumble.txt
|
||||||
crystal_rod_i172.txt
|
crystal_rod_i172.txt
|
||||||
cursed_land1_i188.txt
|
cursed_land1_i188.txt
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
# Testing crucible of worlds (keyword: CANPLAYFROMGRAVEYARD)
|
|
||||||
|
|
||||||
# name=Crucible of Worlds
|
|
||||||
# text=You may play land cards from your graveyard.
|
|
||||||
|
|
||||||
[INIT]
|
|
||||||
FIRSTMAIN
|
|
||||||
[PLAYER1]
|
|
||||||
hand:island,plains
|
|
||||||
inplay:crucible of worlds
|
|
||||||
graveyard:forest,mountain
|
|
||||||
[PLAYER2]
|
|
||||||
[DO]
|
|
||||||
forest
|
|
||||||
# all next lands shouldn't be played
|
|
||||||
island
|
|
||||||
mountain
|
|
||||||
plains
|
|
||||||
[ASSERT]
|
|
||||||
FIRSTMAIN
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:crucible of worlds,forest
|
|
||||||
hand:island,plains
|
|
||||||
graveyard:mountain
|
|
||||||
[PLAYER2]
|
|
||||||
[END]
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
<!-- build.properties should contain the values for major, minor and point -->
|
<!-- build.properties should contain the values for major, minor and point -->
|
||||||
<property file="build.properties" />
|
<property file="build.properties" />
|
||||||
<property file="build.number.properties" />
|
<property file="build.number.properties" />
|
||||||
<property environment="env"/>
|
|
||||||
|
|
||||||
<path id="groovy.class.path" >
|
<path id="groovy.class.path" >
|
||||||
<fileset dir="${groovy.dir}" />
|
<fileset dir="${groovy.dir}" />
|
||||||
@@ -77,16 +76,15 @@ Author: Michael Nguyen
|
|||||||
#define WAGIC_VERSION_MAJOR ${build.major}
|
#define WAGIC_VERSION_MAJOR ${build.major}
|
||||||
#define WAGIC_VERSION_MEDIUM ${build.minor}
|
#define WAGIC_VERSION_MEDIUM ${build.minor}
|
||||||
#define WAGIC_VERSION_MINOR ${build.point}
|
#define WAGIC_VERSION_MINOR ${build.point}
|
||||||
#define WAGIC_VERSION_REVISION ${env.TRAVIS_BUILD_NUMBER}
|
|
||||||
|
|
||||||
#define VERSION_DOT(a, b, c, d) a ##.## b ##.## c ##.## d
|
#define VERSION_DOT(a, b, c) a ##.## b ##.## c
|
||||||
#define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c
|
#define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c
|
||||||
#define VERSION_GAME(a, b, c, d) VERSION_DOT(a, b, c, d)
|
#define VERSION_GAME(a, b, c) VERSION_DOT(a, b, c)
|
||||||
#define VERSION_FILE(a, b, c) VERSION_WITHOUT_DOT(a, b, c)
|
#define VERSION_FILE(a, b, c) VERSION_WITHOUT_DOT(a, b, c)
|
||||||
#define VERSION_TOSTRING(a) #a
|
#define VERSION_TOSTRING(a) #a
|
||||||
#define VERSION_STRINGIFY(a) VERSION_TOSTRING(a)
|
#define VERSION_STRINGIFY(a) VERSION_TOSTRING(a)
|
||||||
|
|
||||||
#define WAGIC_VERSION VERSION_GAME(WAGIC_VERSION_MAJOR, WAGIC_VERSION_MEDIUM, WAGIC_VERSION_MINOR, WAGIC_VERSION_REVISION)
|
#define WAGIC_VERSION VERSION_GAME(WAGIC_VERSION_MAJOR, WAGIC_VERSION_MEDIUM, WAGIC_VERSION_MINOR)
|
||||||
#define WAGIC_RESOURCE_VERSION VERSION_FILE(WAGIC_VERSION_MAJOR, WAGIC_VERSION_MEDIUM, WAGIC_VERSION_MINOR)
|
#define WAGIC_RESOURCE_VERSION VERSION_FILE(WAGIC_VERSION_MAJOR, WAGIC_VERSION_MEDIUM, WAGIC_VERSION_MINOR)
|
||||||
#define WAGIC_VERSION_STRING VERSION_STRINGIFY(WAGIC_VERSION)
|
#define WAGIC_VERSION_STRING VERSION_STRINGIFY(WAGIC_VERSION)
|
||||||
#define WAGIC_CORE_VERSION_STRING "core_" VERSION_STRINGIFY(WAGIC_RESOURCE_VERSION)
|
#define WAGIC_CORE_VERSION_STRING "core_" VERSION_STRINGIFY(WAGIC_RESOURCE_VERSION)
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
//
|
||||||
|
// UIScreen+Util.h
|
||||||
|
// wagic
|
||||||
|
//
|
||||||
|
// Created by Michael Nguyen on 11/27/13.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
@interface UIScreen (Util)
|
||||||
|
|
||||||
|
+(BOOL)isRetinaDisplay;
|
||||||
|
@end
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// UIScreen+Util.m
|
||||||
|
// wagic
|
||||||
|
//
|
||||||
|
// Created by Michael Nguyen on 11/27/13.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
#include "UIScreen+Util.h"
|
||||||
|
|
||||||
|
static BOOL isRetinaScreen = NO;
|
||||||
|
static BOOL didRetinaCheck = NO;
|
||||||
|
|
||||||
|
@implementation UIScreen (Util)
|
||||||
|
+ (BOOL)isRetinaDisplay
|
||||||
|
{
|
||||||
|
if (!didRetinaCheck) {
|
||||||
|
isRetinaScreen = ([[self mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
|
||||||
|
([self mainScreen].scale == 2.0));
|
||||||
|
didRetinaCheck = YES;
|
||||||
|
}
|
||||||
|
return isRetinaScreen;
|
||||||
|
}
|
||||||
|
@end
|
||||||
@@ -72,7 +72,7 @@ public:
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
virtual const string getMenuText()
|
virtual const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Ability";
|
return "Ability";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1081,7 +1081,7 @@ public:
|
|||||||
ManaCost * cost = NULL);
|
ManaCost * cost = NULL);
|
||||||
|
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AACounter * clone() const;
|
AACounter * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1100,7 +1100,7 @@ public:
|
|||||||
bool all,ManaCost * cost = NULL);
|
bool all,ManaCost * cost = NULL);
|
||||||
|
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AARemoveAllCounter * clone() const;
|
AARemoveAllCounter * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1110,7 +1110,7 @@ class AAResetDamage: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AAResetDamage(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, ManaCost * cost = NULL);
|
AAResetDamage(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AAResetDamage * clone() const;
|
AAResetDamage * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1120,7 +1120,7 @@ public:
|
|||||||
string named;
|
string named;
|
||||||
AAFakeAbility(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target,string _newName, ManaCost * cost = NULL);
|
AAFakeAbility(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target,string _newName, ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AAFakeAbility * clone() const;
|
AAFakeAbility * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1131,7 +1131,7 @@ public:
|
|||||||
|
|
||||||
AAFizzler(GameObserver* observer, int _id, MTGCardInstance * card, Spell * _target, ManaCost * _cost = NULL);
|
AAFizzler(GameObserver* observer, int _id, MTGCardInstance * card, Spell * _target, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAFizzler* clone() const;
|
AAFizzler* clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1160,7 +1160,7 @@ public:
|
|||||||
string Cond;
|
string Cond;
|
||||||
IfThenAbility(GameObserver* observer, int _id,MTGAbility * delayedAbility = NULL,MTGAbility * delayedElseAbility = NULL, MTGCardInstance * _source=NULL, Targetable * target = NULL, int type = 1,string Cond = "");
|
IfThenAbility(GameObserver* observer, int _id,MTGAbility * delayedAbility = NULL,MTGAbility * delayedElseAbility = NULL, MTGCardInstance * _source=NULL, Targetable * target = NULL, int type = 1,string Cond = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
IfThenAbility * clone() const;
|
IfThenAbility * clone() const;
|
||||||
~IfThenAbility();
|
~IfThenAbility();
|
||||||
};
|
};
|
||||||
@@ -1179,7 +1179,7 @@ public:
|
|||||||
|
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
|
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
|
|
||||||
int isReactingToTargetClick(Targetable * card);
|
int isReactingToTargetClick(Targetable * card);
|
||||||
@@ -1209,7 +1209,7 @@ public:
|
|||||||
bool CheckUserInput(JButton key);
|
bool CheckUserInput(JButton key);
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
int isReactingToTargetClick(Targetable * card);
|
int isReactingToTargetClick(Targetable * card);
|
||||||
int reactToTargetClick(Targetable * object);
|
int reactToTargetClick(Targetable * object);
|
||||||
@@ -1225,7 +1225,7 @@ class AAProliferate: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AAProliferate(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target,ManaCost * cost = NULL);
|
AAProliferate(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target,ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AAProliferate * clone() const;
|
AAProliferate * clone() const;
|
||||||
~AAProliferate();
|
~AAProliferate();
|
||||||
};
|
};
|
||||||
@@ -1243,7 +1243,7 @@ public:
|
|||||||
int resolve();
|
int resolve();
|
||||||
int addToGame();
|
int addToGame();
|
||||||
int destroy();
|
int destroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
MultiAbility * clone() const;
|
MultiAbility * clone() const;
|
||||||
~MultiAbility();
|
~MultiAbility();
|
||||||
};
|
};
|
||||||
@@ -1258,9 +1258,8 @@ public:
|
|||||||
|
|
||||||
GenericActivatedAbility(GameObserver* observer, string newName,string castRestriction,int _id, MTGCardInstance * card, MTGAbility * a, ManaCost * _cost, string limit = "",MTGAbility * sideEffects = NULL,string usesBeforeSideEffects = "",
|
GenericActivatedAbility(GameObserver* observer, string newName,string castRestriction,int _id, MTGCardInstance * card, MTGAbility * a, ManaCost * _cost, string limit = "",MTGAbility * sideEffects = NULL,string usesBeforeSideEffects = "",
|
||||||
int restrictions = 0, MTGGameZone * dest = NULL);
|
int restrictions = 0, MTGGameZone * dest = NULL);
|
||||||
GenericActivatedAbility(const GenericActivatedAbility& other);
|
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
@@ -1275,7 +1274,7 @@ class AALibraryBottom: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AALibraryBottom(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
AALibraryBottom(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AALibraryBottom * clone() const;
|
AALibraryBottom * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1285,7 +1284,7 @@ class AACopier: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AACopier(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
AACopier(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AACopier * clone() const;
|
AACopier * clone() const;
|
||||||
};
|
};
|
||||||
//imprint
|
//imprint
|
||||||
@@ -1294,7 +1293,7 @@ class AAPhaseOut: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AAPhaseOut(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
AAPhaseOut(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAPhaseOut * clone() const;
|
AAPhaseOut * clone() const;
|
||||||
};
|
};
|
||||||
//cloning...this makes a token thats a copy of the target.
|
//cloning...this makes a token thats a copy of the target.
|
||||||
@@ -1311,7 +1310,7 @@ public:
|
|||||||
AACloner(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL, int who = 0,
|
AACloner(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL, int who = 0,
|
||||||
string abilitiesStringList = "",string typeslist = "");
|
string abilitiesStringList = "",string typeslist = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
AACloner * clone() const;
|
AACloner * clone() const;
|
||||||
~AACloner();
|
~AACloner();
|
||||||
@@ -1327,7 +1326,7 @@ public:
|
|||||||
AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string _name, ManaCost * _cost = NULL);
|
AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string _name, ManaCost * _cost = NULL);
|
||||||
MTGGameZone * destinationZone(Targetable * target = NULL);
|
MTGGameZone * destinationZone(Targetable * target = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
const char * getMenuText(TargetChooser * fromTc);
|
const char * getMenuText(TargetChooser * fromTc);
|
||||||
AAMover * clone() const;
|
AAMover * clone() const;
|
||||||
~AAMover();
|
~AAMover();
|
||||||
@@ -1343,7 +1342,7 @@ public:
|
|||||||
AARandomMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string tcs, string from, string to);
|
AARandomMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string tcs, string from, string to);
|
||||||
MTGGameZone * destinationZone(Targetable * target = NULL,string zone = "");
|
MTGGameZone * destinationZone(Targetable * target = NULL,string zone = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AARandomMover * clone() const;
|
AARandomMover * clone() const;
|
||||||
~AARandomMover();
|
~AARandomMover();
|
||||||
};
|
};
|
||||||
@@ -1357,7 +1356,7 @@ public:
|
|||||||
string menu;
|
string menu;
|
||||||
AABuryCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
AABuryCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AABuryCard * clone() const;
|
AABuryCard * clone() const;
|
||||||
~AABuryCard();
|
~AABuryCard();
|
||||||
};
|
};
|
||||||
@@ -1368,7 +1367,7 @@ public:
|
|||||||
MTGAbility * andAbility;
|
MTGAbility * andAbility;
|
||||||
AADestroyCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
AADestroyCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADestroyCard * clone() const;
|
AADestroyCard * clone() const;
|
||||||
~AADestroyCard();
|
~AADestroyCard();
|
||||||
};
|
};
|
||||||
@@ -1379,7 +1378,7 @@ public:
|
|||||||
MTGAbility * andAbility;
|
MTGAbility * andAbility;
|
||||||
AASacrificeCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
AASacrificeCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AASacrificeCard * clone() const;
|
AASacrificeCard * clone() const;
|
||||||
~AASacrificeCard();
|
~AASacrificeCard();
|
||||||
};
|
};
|
||||||
@@ -1390,7 +1389,7 @@ public:
|
|||||||
MTGAbility * andAbility;
|
MTGAbility * andAbility;
|
||||||
AADiscardCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
AADiscardCard(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADiscardCard * clone() const;
|
AADiscardCard * clone() const;
|
||||||
~AADiscardCard();
|
~AADiscardCard();
|
||||||
};
|
};
|
||||||
@@ -1410,7 +1409,7 @@ public:
|
|||||||
string tcString;
|
string tcString;
|
||||||
|
|
||||||
GenericTargetAbility(GameObserver* observer, string newName, string castRestriction, int _id, MTGCardInstance * _source, TargetChooser * _tc, MTGAbility * a, ManaCost * _cost = NULL, string limit = "",MTGAbility * sideEffects = NULL,string usesBeforeSideEffects = "", int restrictions = 0, MTGGameZone * dest = NULL,string tcString ="");
|
GenericTargetAbility(GameObserver* observer, string newName, string castRestriction, int _id, MTGCardInstance * _source, TargetChooser * _tc, MTGAbility * a, ManaCost * _cost = NULL, string limit = "",MTGAbility * sideEffects = NULL,string usesBeforeSideEffects = "", int restrictions = 0, MTGGameZone * dest = NULL,string tcString ="");
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
~GenericTargetAbility();
|
~GenericTargetAbility();
|
||||||
GenericTargetAbility * clone() const;
|
GenericTargetAbility * clone() const;
|
||||||
int resolve();
|
int resolve();
|
||||||
@@ -1448,7 +1447,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Ninjutsu";
|
return "Ninjutsu";
|
||||||
}
|
}
|
||||||
@@ -1480,7 +1479,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Remove From Combat";
|
return "Remove From Combat";
|
||||||
}
|
}
|
||||||
@@ -1502,7 +1501,7 @@ public:
|
|||||||
AADrawer(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost,string nbcardsStr, int who =
|
AADrawer(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost,string nbcardsStr, int who =
|
||||||
TargetChooser::UNSET,bool noReplace = false);
|
TargetChooser::UNSET,bool noReplace = false);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADrawer * clone() const;
|
AADrawer * clone() const;
|
||||||
int getNumCards();
|
int getNumCards();
|
||||||
};
|
};
|
||||||
@@ -1522,7 +1521,7 @@ public:
|
|||||||
ACastRestriction(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, TargetChooser * _restrictionsScope, WParsedInt * _value, bool _modifyExisting, int _zoneId, int who = TargetChooser::UNSET);
|
ACastRestriction(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, TargetChooser * _restrictionsScope, WParsedInt * _value, bool _modifyExisting, int _zoneId, int who = TargetChooser::UNSET);
|
||||||
int addToGame();
|
int addToGame();
|
||||||
int destroy();
|
int destroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ACastRestriction * clone() const;
|
ACastRestriction * clone() const;
|
||||||
~ACastRestriction();
|
~ACastRestriction();
|
||||||
|
|
||||||
@@ -1537,7 +1536,7 @@ public:
|
|||||||
|
|
||||||
AInstantCastRestrictionUEOT(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, TargetChooser * _restrictionsScope, WParsedInt * _value, bool _modifyExisting, int _zoneId, int who = TargetChooser::UNSET);
|
AInstantCastRestrictionUEOT(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, TargetChooser * _restrictionsScope, WParsedInt * _value, bool _modifyExisting, int _zoneId, int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AInstantCastRestrictionUEOT * clone() const;
|
AInstantCastRestrictionUEOT * clone() const;
|
||||||
~AInstantCastRestrictionUEOT();
|
~AInstantCastRestrictionUEOT();
|
||||||
};
|
};
|
||||||
@@ -1550,7 +1549,7 @@ public:
|
|||||||
AALifer(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string life_s, ManaCost * _cost = NULL,
|
AALifer(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string life_s, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AALifer * clone() const;
|
AALifer * clone() const;
|
||||||
int getLife();
|
int getLife();
|
||||||
|
|
||||||
@@ -1563,7 +1562,7 @@ public:
|
|||||||
AAWinGame(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost = NULL, int who =
|
AAWinGame(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost = NULL, int who =
|
||||||
TargetChooser::UNSET);
|
TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAWinGame * clone() const;
|
AAWinGame * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1604,7 +1603,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return Constants::MTGBasicAbilities[ability];
|
return Constants::MTGBasicAbilities[ability];
|
||||||
}
|
}
|
||||||
@@ -1646,7 +1645,7 @@ public:
|
|||||||
return InstantAbility::addToGame();
|
return InstantAbility::addToGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return Constants::MTGBasicAbilities[ability];
|
return Constants::MTGBasicAbilities[ability];
|
||||||
}
|
}
|
||||||
@@ -1707,7 +1706,7 @@ public:
|
|||||||
return ActivatedAbility::addToGame();
|
return ActivatedAbility::addToGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -1863,7 +1862,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
sprintf(menuText,"Protection from %s",tcstr.c_str());
|
sprintf(menuText,"Protection from %s",tcstr.c_str());
|
||||||
return menuText;
|
return menuText;
|
||||||
@@ -2055,7 +2054,7 @@ public:
|
|||||||
((MTGCardInstance *) target)->addToToughness(-wppt->toughness.getValue());
|
((MTGCardInstance *) target)->addToToughness(-wppt->toughness.getValue());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
if(PT.size())
|
if(PT.size())
|
||||||
{
|
{
|
||||||
@@ -2148,7 +2147,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -2190,7 +2189,7 @@ public:
|
|||||||
return toAdd->addToGame();
|
return toAdd->addToGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -2288,7 +2287,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Regenerate";
|
return "Regenerate";
|
||||||
}
|
}
|
||||||
@@ -2495,7 +2494,7 @@ public:
|
|||||||
SAFE_DELETE(ability);
|
SAFE_DELETE(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
if(ability)
|
if(ability)
|
||||||
{
|
{
|
||||||
@@ -2608,8 +2607,7 @@ public:
|
|||||||
|
|
||||||
int removed(MTGCardInstance * card)
|
int removed(MTGCardInstance * card)
|
||||||
{
|
{
|
||||||
if (abilities.find(card) != abilities.end()
|
if (abilities.find(card) != abilities.end() && !(forceDestroy == -1 && forcedAlive == 1))//only embelms have forcedestroy = -1 and forcedalive = 1
|
||||||
&& !(forceDestroy == -1 && forcedAlive == 1)) //only embelms have forcedestroy = -1 and forcedalive = 1
|
|
||||||
{
|
{
|
||||||
game->removeObserver(abilities[card]);
|
game->removeObserver(abilities[card]);
|
||||||
abilities.erase(card);
|
abilities.erase(card);
|
||||||
@@ -2622,7 +2620,7 @@ public:
|
|||||||
SAFE_DELETE(ability);
|
SAFE_DELETE(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
//Special case for move
|
//Special case for move
|
||||||
if (AAMover * move = dynamic_cast<AAMover *>(ability))
|
if (AAMover * move = dynamic_cast<AAMover *>(ability))
|
||||||
@@ -2808,7 +2806,7 @@ public:
|
|||||||
int equip(MTGCardInstance * equipped);
|
int equip(MTGCardInstance * equipped);
|
||||||
|
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
|
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
int destroy();
|
int destroy();
|
||||||
@@ -3036,7 +3034,7 @@ public:
|
|||||||
card->setAttacker(1);
|
card->setAttacker(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
sprintf(menuText, "Create %s", name.c_str());
|
sprintf(menuText, "Create %s", name.c_str());
|
||||||
return menuText;
|
return menuText;
|
||||||
@@ -3137,7 +3135,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
if(name.size())
|
if(name.size())
|
||||||
return name.c_str();
|
return name.c_str();
|
||||||
@@ -3310,7 +3308,7 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -3522,7 +3520,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -3545,7 +3543,7 @@ public:
|
|||||||
AASetHand(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int hand, ManaCost * _cost = NULL,
|
AASetHand(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int hand, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AASetHand * clone() const;
|
AASetHand * clone() const;
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -3559,7 +3557,7 @@ public:
|
|||||||
AALifeSet(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt * life, ManaCost * _cost = NULL,
|
AALifeSet(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt * life, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AALifeSet * clone() const;
|
AALifeSet * clone() const;
|
||||||
~AALifeSet();
|
~AALifeSet();
|
||||||
|
|
||||||
@@ -3576,7 +3574,7 @@ public:
|
|||||||
AADamager(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, string d, ManaCost * _cost = NULL,
|
AADamager(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, string d, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
int getDamage();
|
int getDamage();
|
||||||
AADamager * clone() const;
|
AADamager * clone() const;
|
||||||
|
|
||||||
@@ -3590,7 +3588,7 @@ public:
|
|||||||
|
|
||||||
AADamagePrevent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int preventing, ManaCost * _cost = NULL, int who = TargetChooser::UNSET);
|
AADamagePrevent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int preventing, ManaCost * _cost = NULL, int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADamagePrevent * clone() const;
|
AADamagePrevent * clone() const;
|
||||||
~AADamagePrevent();
|
~AADamagePrevent();
|
||||||
};
|
};
|
||||||
@@ -3604,7 +3602,7 @@ public:
|
|||||||
AAAlterPoison(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int poison, ManaCost * _cost = NULL,
|
AAAlterPoison(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int poison, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAAlterPoison * clone() const;
|
AAAlterPoison * clone() const;
|
||||||
~AAAlterPoison();
|
~AAAlterPoison();
|
||||||
};
|
};
|
||||||
@@ -3632,7 +3630,7 @@ class AATapper: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AATapper(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
AATapper(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AATapper * clone() const;
|
AATapper * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -3642,7 +3640,7 @@ class AAUntapper: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AAUntapper(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
AAUntapper(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAUntapper * clone() const;
|
AAUntapper * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -3663,7 +3661,7 @@ class AAFrozen: public ActivatedAbility
|
|||||||
public:
|
public:
|
||||||
AAFrozen(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
AAFrozen(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAFrozen * clone() const;
|
AAFrozen * clone() const;
|
||||||
};
|
};
|
||||||
/* ghetto new target*/
|
/* ghetto new target*/
|
||||||
@@ -3673,7 +3671,7 @@ public:
|
|||||||
bool retarget;
|
bool retarget;
|
||||||
AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target,bool retarget = false, ManaCost * _cost = NULL);
|
AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target,bool retarget = false, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AANewTarget * clone() const;
|
AANewTarget * clone() const;
|
||||||
};
|
};
|
||||||
/* morph*/
|
/* morph*/
|
||||||
@@ -3684,7 +3682,7 @@ public:
|
|||||||
AAMorph(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
AAMorph(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAMorph * clone() const;
|
AAMorph * clone() const;
|
||||||
};
|
};
|
||||||
/* flip*/
|
/* flip*/
|
||||||
@@ -3696,7 +3694,7 @@ public:
|
|||||||
AAFlip(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target,string flipStats);
|
AAFlip(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target,string flipStats);
|
||||||
int resolve();
|
int resolve();
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAFlip * clone() const;
|
AAFlip * clone() const;
|
||||||
};
|
};
|
||||||
/* dynamic ability build*/
|
/* dynamic ability build*/
|
||||||
@@ -3761,7 +3759,7 @@ string menu;
|
|||||||
int resolve();
|
int resolve();
|
||||||
int activateMainAbility(MTGAbility * toActivate,MTGCardInstance * source , Damageable * target);
|
int activateMainAbility(MTGAbility * toActivate,MTGCardInstance * source , Damageable * target);
|
||||||
int activateStored();
|
int activateStored();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADynamic * clone() const;
|
AADynamic * clone() const;
|
||||||
~AADynamic();
|
~AADynamic();
|
||||||
};
|
};
|
||||||
@@ -3814,7 +3812,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Swap power and toughness";
|
return "Swap power and toughness";
|
||||||
}
|
}
|
||||||
@@ -3830,7 +3828,7 @@ public:
|
|||||||
AAExchangeLife(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, ManaCost * _cost = NULL,
|
AAExchangeLife(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAExchangeLife * clone() const;
|
AAExchangeLife * clone() const;
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -4066,7 +4064,7 @@ public:
|
|||||||
int reapplyCountersBonus(MTGCardInstance * rtarget= NULL,bool powerapplied=false,bool toughnessapplied=false);
|
int reapplyCountersBonus(MTGCardInstance * rtarget= NULL,bool powerapplied=false,bool toughnessapplied=false);
|
||||||
int testDestroy();
|
int testDestroy();
|
||||||
int destroy();
|
int destroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ATransformer * clone() const;
|
ATransformer * clone() const;
|
||||||
~ATransformer();
|
~ATransformer();
|
||||||
};
|
};
|
||||||
@@ -4089,7 +4087,7 @@ public:
|
|||||||
|
|
||||||
ATransformerInstant(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, string types = "", string abilities = "",string newpower = "",bool newpowerfound = false,string newtoughness = "",bool newtoughnessfound = false,vector<string>newAbilitiesList = vector<string>(),bool newAbilityFound = false,bool aForever = false, bool UYNT = false,string menutext = "");
|
ATransformerInstant(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, string types = "", string abilities = "",string newpower = "",bool newpowerfound = false,string newtoughness = "",bool newtoughnessfound = false,vector<string>newAbilitiesList = vector<string>(),bool newAbilityFound = false,bool aForever = false, bool UYNT = false,string menutext = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ATransformerInstant * clone() const;
|
ATransformerInstant * clone() const;
|
||||||
~ATransformerInstant();
|
~ATransformerInstant();
|
||||||
};
|
};
|
||||||
@@ -4105,7 +4103,7 @@ public:
|
|||||||
WParsedPT * newWppt;
|
WParsedPT * newWppt;
|
||||||
PTInstant(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, WParsedPT * wppt,string s = "",bool nonstatic = false);
|
PTInstant(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, WParsedPT * wppt,string s = "",bool nonstatic = false);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
PTInstant * clone() const;
|
PTInstant * clone() const;
|
||||||
~PTInstant();
|
~PTInstant();
|
||||||
};
|
};
|
||||||
@@ -4164,7 +4162,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Exalted";
|
return "Exalted";
|
||||||
}
|
}
|
||||||
@@ -4182,7 +4180,7 @@ public:
|
|||||||
ASwapPT * ability;
|
ASwapPT * ability;
|
||||||
ASwapPTUEOT(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target);
|
ASwapPTUEOT(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ASwapPTUEOT * clone() const;
|
ASwapPTUEOT * clone() const;
|
||||||
~ASwapPTUEOT();
|
~ASwapPTUEOT();
|
||||||
};
|
};
|
||||||
@@ -4259,7 +4257,7 @@ public:
|
|||||||
APreventDamageTypesUEOT(GameObserver* observer, int id, MTGCardInstance * source, string to, string from, int type = 0);
|
APreventDamageTypesUEOT(GameObserver* observer, int id, MTGCardInstance * source, string to, string from, int type = 0);
|
||||||
int resolve();
|
int resolve();
|
||||||
int destroy();
|
int destroy();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
APreventDamageTypesUEOT * clone() const;
|
APreventDamageTypesUEOT * clone() const;
|
||||||
~APreventDamageTypesUEOT();
|
~APreventDamageTypesUEOT();
|
||||||
};
|
};
|
||||||
@@ -4276,7 +4274,7 @@ public:
|
|||||||
AVanishing(GameObserver* observer, int _id, MTGCardInstance * card, ManaCost * _cost, int restrictions = 0,int amount = 0,string counterName = "");
|
AVanishing(GameObserver* observer, int _id, MTGCardInstance * card, ManaCost * _cost, int restrictions = 0,int amount = 0,string counterName = "");
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AVanishing * clone() const;
|
AVanishing * clone() const;
|
||||||
~AVanishing();
|
~AVanishing();
|
||||||
};
|
};
|
||||||
@@ -4298,7 +4296,7 @@ public:
|
|||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
AUpkeep * clone() const;
|
AUpkeep * clone() const;
|
||||||
~AUpkeep();
|
~AUpkeep();
|
||||||
@@ -4324,7 +4322,7 @@ public:
|
|||||||
MTG_PHASE_UPKEEP,bool forcedestroy = false,bool next = true,bool myturn = true,bool opponentturn = true,bool once = false);
|
MTG_PHASE_UPKEEP,bool forcedestroy = false,bool next = true,bool myturn = true,bool opponentturn = true,bool once = false);
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
APhaseAction * clone() const;
|
APhaseAction * clone() const;
|
||||||
~APhaseAction();
|
~APhaseAction();
|
||||||
};
|
};
|
||||||
@@ -4338,7 +4336,7 @@ public:
|
|||||||
APhaseActionGeneric(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * target, string sAbility, int restrictions = 0, int _phase =
|
APhaseActionGeneric(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * target, string sAbility, int restrictions = 0, int _phase =
|
||||||
MTG_PHASE_UPKEEP,bool forcedestroy = false,bool next = true,bool myturn = false,bool opponentturn = false,bool once = false);
|
MTG_PHASE_UPKEEP,bool forcedestroy = false,bool next = true,bool myturn = false,bool opponentturn = false,bool once = false);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
APhaseActionGeneric * clone() const;
|
APhaseActionGeneric * clone() const;
|
||||||
~APhaseActionGeneric();
|
~APhaseActionGeneric();
|
||||||
|
|
||||||
@@ -4358,7 +4356,7 @@ public:
|
|||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
void resolveBlink();
|
void resolveBlink();
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ABlink * clone() const;
|
ABlink * clone() const;
|
||||||
~ABlink();
|
~ABlink();
|
||||||
private:
|
private:
|
||||||
@@ -4376,7 +4374,7 @@ public:
|
|||||||
MTGAbility * stored;
|
MTGAbility * stored;
|
||||||
ABlinkGeneric(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target,bool blinkueot=false,bool blinkForSource = false,bool blinkhand = false,MTGAbility * stored = NULL);
|
ABlinkGeneric(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target,bool blinkueot=false,bool blinkForSource = false,bool blinkhand = false,MTGAbility * stored = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
ABlinkGeneric * clone() const;
|
ABlinkGeneric * clone() const;
|
||||||
~ABlinkGeneric();
|
~ABlinkGeneric();
|
||||||
|
|
||||||
@@ -5282,7 +5280,7 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "phase alter";
|
return "phase alter";
|
||||||
}
|
}
|
||||||
@@ -5301,7 +5299,7 @@ public:
|
|||||||
AADepleter(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbcardsStr, ManaCost * _cost = NULL,
|
AADepleter(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbcardsStr, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AADepleter * clone() const;
|
AADepleter * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5314,7 +5312,7 @@ public:
|
|||||||
AAModTurn(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbTurnStr, ManaCost * _cost = NULL,
|
AAModTurn(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbTurnStr, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAModTurn * clone() const;
|
AAModTurn * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5325,7 +5323,7 @@ public:
|
|||||||
AAShuffle(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost = NULL, int who =
|
AAShuffle(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost = NULL, int who =
|
||||||
TargetChooser::UNSET);
|
TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AAShuffle * clone() const;
|
AAShuffle * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5338,7 +5336,7 @@ public:
|
|||||||
|
|
||||||
AARemoveMana(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, string ManaDesc, int who = TargetChooser::UNSET);
|
AARemoveMana(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, string ManaDesc, int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AARemoveMana * clone() const;
|
AARemoveMana * clone() const;
|
||||||
~AARemoveMana();
|
~AARemoveMana();
|
||||||
|
|
||||||
@@ -5353,7 +5351,7 @@ public:
|
|||||||
AARandomDiscarder(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbcardsStr, ManaCost * _cost = NULL,
|
AARandomDiscarder(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target,string nbcardsStr, ManaCost * _cost = NULL,
|
||||||
int who = TargetChooser::UNSET);
|
int who = TargetChooser::UNSET);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
AARandomDiscarder * clone() const;
|
AARandomDiscarder * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5525,7 +5523,7 @@ public:
|
|||||||
|
|
||||||
int testDestroy(){return 0;};
|
int testDestroy(){return 0;};
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
int isReactingToTargetClick(Targetable * card);
|
int isReactingToTargetClick(Targetable * card);
|
||||||
int reactToTargetClick(Targetable * object);
|
int reactToTargetClick(Targetable * object);
|
||||||
MTGCardInstance * makeCard();
|
MTGCardInstance * makeCard();
|
||||||
@@ -5642,7 +5640,7 @@ public:
|
|||||||
MTGAbility * abilityAltered;
|
MTGAbility * abilityAltered;
|
||||||
AASetColorChosen(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int _color = 0 ,string toAdd = "");
|
AASetColorChosen(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int _color = 0 ,string toAdd = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AASetColorChosen * clone() const;
|
AASetColorChosen * clone() const;
|
||||||
~AASetColorChosen();
|
~AASetColorChosen();
|
||||||
};
|
};
|
||||||
@@ -5655,7 +5653,7 @@ public:
|
|||||||
MTGAbility * abilityAltered;
|
MTGAbility * abilityAltered;
|
||||||
AASetTypeChosen(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int _type = 0,string menu = "error" ,string toAdd = "");
|
AASetTypeChosen(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int _type = 0,string menu = "error" ,string toAdd = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AASetTypeChosen * clone() const;
|
AASetTypeChosen * clone() const;
|
||||||
~AASetTypeChosen();
|
~AASetTypeChosen();
|
||||||
};
|
};
|
||||||
@@ -5669,7 +5667,7 @@ public:
|
|||||||
bool ANonWall;
|
bool ANonWall;
|
||||||
GenericChooseTypeColor(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "",bool chooseColor = false,bool nonwall = false, ManaCost * cost = NULL);
|
GenericChooseTypeColor(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "",bool chooseColor = false,bool nonwall = false, ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
GenericChooseTypeColor * clone() const;
|
GenericChooseTypeColor * clone() const;
|
||||||
~GenericChooseTypeColor();
|
~GenericChooseTypeColor();
|
||||||
|
|
||||||
@@ -5686,7 +5684,7 @@ public:
|
|||||||
MTGAbility * abilityAltered;
|
MTGAbility * abilityAltered;
|
||||||
AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1,string toAdd = "");
|
AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1,string toAdd = "");
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AASetCoin * clone() const;
|
AASetCoin * clone() const;
|
||||||
~AASetCoin();
|
~AASetCoin();
|
||||||
};
|
};
|
||||||
@@ -5697,7 +5695,7 @@ public:
|
|||||||
AASetCoin * setCoin;
|
AASetCoin * setCoin;
|
||||||
GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL);
|
GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
GenericFlipACoin * clone() const;
|
GenericFlipACoin * clone() const;
|
||||||
~GenericFlipACoin();
|
~GenericFlipACoin();
|
||||||
|
|
||||||
@@ -5716,7 +5714,7 @@ public:
|
|||||||
|
|
||||||
GenericPaidAbility(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target,string _newName,string _castRestriction,string _mayCost, string toAdd, ManaCost * cost = NULL);
|
GenericPaidAbility(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target,string _newName,string _castRestriction,string _mayCost, string toAdd, ManaCost * cost = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
GenericPaidAbility * clone() const;
|
GenericPaidAbility * clone() const;
|
||||||
~GenericPaidAbility();
|
~GenericPaidAbility();
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ protected:
|
|||||||
/*
|
/*
|
||||||
** Tries to render the Big version of a card picture, backups to text version in case of failure
|
** Tries to render the Big version of a card picture, backups to text version in case of failure
|
||||||
*/
|
*/
|
||||||
static void RenderBig(MTGCard * card, const Pos& pos, bool thumb = false);
|
static void RenderBig(MTGCard * card, const Pos& pos);
|
||||||
|
|
||||||
static void RenderCountersBig(MTGCard * card, const Pos& pos, int drawMode = DrawMode::kNormal);
|
static void RenderCountersBig(MTGCard * card, const Pos& pos, int drawMode = DrawMode::kNormal);
|
||||||
static void AlternateRender(MTGCard * card, const Pos& pos);
|
static void AlternateRender(MTGCard * card, const Pos& pos);
|
||||||
@@ -55,8 +55,8 @@ public:
|
|||||||
virtual void Render();
|
virtual void Render();
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
|
|
||||||
void DrawCard(const Pos& inPosition, int inMode = DrawMode::kNormal, bool thumb = false);
|
void DrawCard(const Pos& inPosition, int inMode = DrawMode::kNormal);
|
||||||
static void DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode = DrawMode::kNormal, bool thumb = false);
|
static void DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode = DrawMode::kNormal);
|
||||||
|
|
||||||
static JQuadPtr AlternateThumbQuad(MTGCard * card);
|
static JQuadPtr AlternateThumbQuad(MTGCard * card);
|
||||||
virtual ostream& toString(ostream&) const;
|
virtual ostream& toString(ostream&) const;
|
||||||
|
|||||||
@@ -101,9 +101,10 @@ public:
|
|||||||
int removeType(string value, int removeAll = 0);
|
int removeType(string value, int removeAll = 0);
|
||||||
int removeType(int value, int removeAll = 0);
|
int removeType(int value, int removeAll = 0);
|
||||||
bool hasSubtype(int _subtype);
|
bool hasSubtype(int _subtype);
|
||||||
|
bool hasSubtype(const char * _subtype);
|
||||||
bool hasSubtype(const string& _subtype);
|
bool hasSubtype(const string& _subtype);
|
||||||
bool hasType(int _type);
|
bool hasType(int _type);
|
||||||
bool hasType(const string& type);
|
bool hasType(const char * type);
|
||||||
|
|
||||||
void setManaCost(const string& value);
|
void setManaCost(const string& value);
|
||||||
ManaCost * getManaCost();
|
ManaCost * getManaCost();
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
#ifndef _CAROUSEL_DECK_VIEW_H_
|
|
||||||
#define _CAROUSEL_DECK_VIEW_H_
|
|
||||||
|
|
||||||
#include "DeckView.h"
|
|
||||||
#include "Easing.h"
|
|
||||||
|
|
||||||
class CarouselDeckView : public DeckView
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
static const float max_scale;
|
|
||||||
static const float x_center;
|
|
||||||
static const float right_border;
|
|
||||||
static const float slide_animation_duration;
|
|
||||||
|
|
||||||
public:
|
|
||||||
CarouselDeckView();
|
|
||||||
virtual ~CarouselDeckView();
|
|
||||||
void Reset();
|
|
||||||
|
|
||||||
void UpdateViewState(float dt);
|
|
||||||
void UpdateCardPosition(CardRep &rep, int index);
|
|
||||||
void renderCard(int index)
|
|
||||||
{
|
|
||||||
int alpha = (int) (255 * (getCardRep(index).scale + 1.0 - max_scale));
|
|
||||||
DeckView::renderCard(index, alpha);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Render();
|
|
||||||
|
|
||||||
MTGCard * Click(int x, int y);
|
|
||||||
|
|
||||||
void changePosition(int offset);
|
|
||||||
void changeFilter(int offset);
|
|
||||||
|
|
||||||
MTGCard *getActiveCard();
|
|
||||||
private:
|
|
||||||
float mScrollOffset, mSlideOffset;
|
|
||||||
InOutQuadEasing mScrollEasing;
|
|
||||||
InOutQuadEasing mSlideEasing;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //_CAROUSEL_DECK_VIEW_H_
|
|
||||||
@@ -17,7 +17,7 @@ private:
|
|||||||
StatsWrapper *stw;
|
StatsWrapper *stw;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DeckEditorMenu(int id, JGuiListener* listener = NULL, int fontId = 1, const string& _title = "", DeckDataWrapper *selectedDeck = NULL, StatsWrapper *stats = NULL);
|
DeckEditorMenu(int id, JGuiListener* listener = NULL, int fontId = 1, const char * _title = "", DeckDataWrapper *selectedDeck = NULL, StatsWrapper *stats = NULL);
|
||||||
void Render();
|
void Render();
|
||||||
virtual ~DeckEditorMenu();
|
virtual ~DeckEditorMenu();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public:
|
|||||||
virtual void Render();
|
virtual void Render();
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
using JGuiController::Add;
|
using JGuiController::Add;
|
||||||
virtual void Add(int id, const string& Text, const string& desc = "", bool forceFocus = false, DeckMetaData *deckMetaData = NULL);
|
virtual void Add(int id, const char * Text, string desc = "", bool forceFocus = false, DeckMetaData *deckMetaData = NULL);
|
||||||
virtual void Close();
|
virtual void Close();
|
||||||
void updateScroller();
|
void updateScroller();
|
||||||
void RenderBackground();
|
void RenderBackground();
|
||||||
|
|||||||
@@ -77,7 +77,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
void setDescription( const string& description ) { mDescription = description; }
|
void setDescription( const string description ) { mDescription = description; };
|
||||||
|
|
||||||
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public:
|
|||||||
string getManaColorIndex();
|
string getManaColorIndex();
|
||||||
void updateStats(string filename, MTGAllCards * collection);
|
void updateStats(string filename, MTGAllCards * collection);
|
||||||
void updateStats(DeckDataWrapper *mtgDeck);
|
void updateStats(DeckDataWrapper *mtgDeck);
|
||||||
int countCardsByType(const string& _type, DeckDataWrapper * myDeck);
|
int countCardsByType(const char * _type, DeckDataWrapper * myDeck);
|
||||||
float noLuck(int n, int a, int x);
|
float noLuck(int n, int a, int x);
|
||||||
|
|
||||||
vector<string> aiDeckNames;
|
vector<string> aiDeckNames;
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
#ifndef _DECK_VIEW_H_
|
|
||||||
#define _DECK_VIEW_H_
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "MTGCard.h"
|
|
||||||
#include "DeckDataWrapper.h"
|
|
||||||
#include "WFont.h"
|
|
||||||
#include "WResourceManager.h"
|
|
||||||
#include "Pos.h"
|
|
||||||
|
|
||||||
|
|
||||||
class DeckView
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
static const float no_user_activity_show_card_delay;
|
|
||||||
|
|
||||||
public:
|
|
||||||
struct CardRep{
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
float scale;
|
|
||||||
MTGCard * card;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool dirtyFilters;
|
|
||||||
bool dirtyCardPos;
|
|
||||||
|
|
||||||
DeckView(int numberOfCards);
|
|
||||||
virtual ~DeckView();
|
|
||||||
virtual void Reset();
|
|
||||||
|
|
||||||
//advances the view and card representations
|
|
||||||
void Update(float dt);
|
|
||||||
virtual void SetDeck(DeckDataWrapper *toShow);
|
|
||||||
DeckDataWrapper *deck();
|
|
||||||
void SwitchFilter(int delta);
|
|
||||||
void SwitchPosition(int delta);
|
|
||||||
int filter();
|
|
||||||
void reloadIndexes();
|
|
||||||
int getPosition();
|
|
||||||
|
|
||||||
virtual void Render() = 0;
|
|
||||||
virtual MTGCard * Click(int x, int y) = 0;
|
|
||||||
bool ButtonPressed(Buttons button);
|
|
||||||
virtual MTGCard *getActiveCard() = 0;
|
|
||||||
virtual void changePosition(int offset) = 0;
|
|
||||||
virtual void changeFilter(int offset) = 0;
|
|
||||||
protected:
|
|
||||||
float last_user_activity;
|
|
||||||
int mFilter;
|
|
||||||
DeckDataWrapper *mCurrentDeck;
|
|
||||||
vector<CardRep> mCards;
|
|
||||||
|
|
||||||
CardRep& getCardRep(unsigned int index);
|
|
||||||
void renderCard(int index, int alpha, bool asThumbnail = false);
|
|
||||||
int getCardIndexNextTo(int x, int y);
|
|
||||||
private:
|
|
||||||
virtual void UpdateViewState(float dt) = 0;
|
|
||||||
virtual void UpdateCardPosition(CardRep& rep, int index) = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _DECK_VIEW_H_
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
#ifndef _EASING_H_
|
|
||||||
#define _EASING_H_
|
|
||||||
|
|
||||||
/*! \brief A class for eased floats for use in animations
|
|
||||||
*
|
|
||||||
* Animations often defines values a floating point variable
|
|
||||||
* should have at given times and interpolates between them to
|
|
||||||
* calculate the value of that variable at any given intermediate
|
|
||||||
* time step.
|
|
||||||
*
|
|
||||||
* The simplest case would be linear interpolation:
|
|
||||||
* Suppose a float "position" should be a at time = 0 and
|
|
||||||
* b at time = x. If the current time is y, the value of
|
|
||||||
* "position" is then a + (b-a)*y/x.
|
|
||||||
*
|
|
||||||
* This class defines the interface needed to implement different
|
|
||||||
* kind of interpolations with a common interface. See
|
|
||||||
* http://www.gizma.com/easing/ for more information for a few
|
|
||||||
* examples.
|
|
||||||
*/
|
|
||||||
class Easing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/*! \brief The value at the start of an animation.
|
|
||||||
*
|
|
||||||
* start_value is undefined if no animation is running.
|
|
||||||
*/
|
|
||||||
float start_value;
|
|
||||||
|
|
||||||
/*! \brief The amount the value should change during the animation.
|
|
||||||
*
|
|
||||||
* delta_value is undefined if no animation is running.
|
|
||||||
*/
|
|
||||||
float delta_value;
|
|
||||||
|
|
||||||
/*! \brief The current value.
|
|
||||||
*
|
|
||||||
* Use this member to read the value or to write the value without
|
|
||||||
* to animate intermediate values and. Make sure that the easing
|
|
||||||
* is not used once value is deleted.
|
|
||||||
*/
|
|
||||||
float& value;
|
|
||||||
|
|
||||||
/*! \brief The duration the animation should take
|
|
||||||
*
|
|
||||||
* It is not relevant which unit is used. This value is undefined
|
|
||||||
* if no animation is running.
|
|
||||||
*/
|
|
||||||
float duration;
|
|
||||||
|
|
||||||
/*! \brief The accumulated time the animation did run until now.
|
|
||||||
*
|
|
||||||
* It is not relevant which unit is used. This values is undefined
|
|
||||||
* if no animation is running.
|
|
||||||
*/
|
|
||||||
float time_acc;
|
|
||||||
|
|
||||||
/*! \brief Sets Easing::float to val and sets the animation as not running.
|
|
||||||
*
|
|
||||||
* Make sure that the easing is not used once value is deleted.
|
|
||||||
*
|
|
||||||
* \param val The value to ease
|
|
||||||
*/
|
|
||||||
Easing(float& val): start_value(val), delta_value(0), value(val), duration(0), time_acc(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Resets the animation to its initial value
|
|
||||||
*
|
|
||||||
* This method does set the value to the start value and sets the passed time to 0.
|
|
||||||
* If there is no animation animation running, the resulting value is undefined.
|
|
||||||
*/
|
|
||||||
void reset()
|
|
||||||
{
|
|
||||||
value = start_value;
|
|
||||||
time_acc = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Finishes the animation immediately
|
|
||||||
*
|
|
||||||
* Sets the value to the animations target value and the passed time to the
|
|
||||||
* animations duration. If there is no animation running, the behaviour is undefined.
|
|
||||||
*/
|
|
||||||
void finish()
|
|
||||||
{
|
|
||||||
value = start_value + delta_value;
|
|
||||||
time_acc = duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Lets dt time pass
|
|
||||||
*
|
|
||||||
* Advances the animation by dt time units and updates the value accordingly.
|
|
||||||
*
|
|
||||||
* \val dt The amount of time to jump forward
|
|
||||||
*/
|
|
||||||
void update(float dt)
|
|
||||||
{
|
|
||||||
if(duration > 0)
|
|
||||||
{
|
|
||||||
time_acc += dt;
|
|
||||||
|
|
||||||
if(time_acc > duration)
|
|
||||||
{
|
|
||||||
time_acc = duration;
|
|
||||||
value = start_value + delta_value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updateValue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Calculates the value from all other members.
|
|
||||||
*
|
|
||||||
* This method gets implemented by all specific easing classes.
|
|
||||||
*/
|
|
||||||
virtual void updateValue() = 0;
|
|
||||||
|
|
||||||
/*! \brief Starts the animation.
|
|
||||||
*
|
|
||||||
* Starts the interpolation from the current value (now) to
|
|
||||||
* targetValue (in now + _duration).
|
|
||||||
*
|
|
||||||
* If the animation is currently running, it gets replaced.
|
|
||||||
*
|
|
||||||
* \param targetValue The value to interpolate to
|
|
||||||
* \param _duration The duration the interpolation should take
|
|
||||||
*/
|
|
||||||
void start(float targetValue, float _duration)
|
|
||||||
{
|
|
||||||
start_value = value;
|
|
||||||
delta_value = targetValue - start_value;
|
|
||||||
time_acc = 0;
|
|
||||||
duration = _duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Translates the current value and the target value by delta_value
|
|
||||||
*
|
|
||||||
* This method is mainly used for trickery. Suppose there is one object in the
|
|
||||||
* middle of the screen that should move to the top until it is outside of the
|
|
||||||
* screen and gets replaced by a second one entering the screen from the lower
|
|
||||||
* side once the first one disappeared. This method can be used to simulate this
|
|
||||||
* effect with one animation by translating (i.e. moving) the animation from the
|
|
||||||
* top to the bottom:
|
|
||||||
*
|
|
||||||
* Object1 and object2 are the same object: object1 whose y position is bound to value
|
|
||||||
* To start the transition, use start(SCREEN_HEIGHT, desired time); Once the first
|
|
||||||
* object left the screen (i.e. object.y < 0), change objects appearance to object2
|
|
||||||
* and translate the easing by (SCREEN_HEIGHT).
|
|
||||||
*
|
|
||||||
* \param delta_value The change in start_value and value
|
|
||||||
*/
|
|
||||||
void translate(float delta_value)
|
|
||||||
{
|
|
||||||
start_value += delta_value;
|
|
||||||
value += delta_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Returns if the passed time exceeds duration.
|
|
||||||
*
|
|
||||||
* If ther is no animation running, it is ensured that this is true.
|
|
||||||
*/
|
|
||||||
bool finished()
|
|
||||||
{
|
|
||||||
return time_acc >= duration;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! \brief This class defines an easing with quadratic acceleration and decceleration.
|
|
||||||
*/
|
|
||||||
class InOutQuadEasing : public Easing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/*! \brief Calls Easing::Easing(val).
|
|
||||||
*
|
|
||||||
* \see Easing::Easing(float& val)
|
|
||||||
*/
|
|
||||||
InOutQuadEasing(float& val): Easing(val) {}
|
|
||||||
|
|
||||||
/*! \brief Implements the value calculation.
|
|
||||||
*
|
|
||||||
* \see Easing::updateValue()
|
|
||||||
*/
|
|
||||||
void updateValue()
|
|
||||||
{
|
|
||||||
float time_tmp = (time_acc * 2) / duration;
|
|
||||||
if (time_tmp < 1)
|
|
||||||
{
|
|
||||||
value = (float)(delta_value * 0.5 * time_tmp * time_tmp + start_value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
time_tmp -= 1;
|
|
||||||
value = (float)(- delta_value * 0.5 * (time_tmp * (time_tmp - 2) - 1) + start_value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_EASING_H_
|
|
||||||
@@ -98,8 +98,8 @@ class GameObserver{
|
|||||||
int cardClick(MTGCardInstance * card,Targetable * _object = NULL, bool log = true);
|
int cardClick(MTGCardInstance * card,Targetable * _object = NULL, bool log = true);
|
||||||
GamePhase getCurrentGamePhase();
|
GamePhase getCurrentGamePhase();
|
||||||
void setCurrentGamePhase(GamePhase phase) { mCurrentGamePhase = phase; };
|
void setCurrentGamePhase(GamePhase phase) { mCurrentGamePhase = phase; };
|
||||||
const string& getCurrentGamePhaseName();
|
const char * getCurrentGamePhaseName();
|
||||||
const string& getNextGamePhaseName();
|
const char * getNextGamePhaseName();
|
||||||
void nextCombatStep();
|
void nextCombatStep();
|
||||||
void userRequestNextGamePhase(bool allowInterrupt = true, bool log = true);
|
void userRequestNextGamePhase(bool allowInterrupt = true, bool log = true);
|
||||||
void cleanupPhase();
|
void cleanupPhase();
|
||||||
|
|||||||
@@ -19,7 +19,22 @@
|
|||||||
#include "WGui.h"
|
#include "WGui.h"
|
||||||
#include "InteractiveButton.h"
|
#include "InteractiveButton.h"
|
||||||
|
|
||||||
class DeckView;
|
#define NO_USER_ACTIVITY_HELP_DELAY 10
|
||||||
|
#define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
STAGE_TRANSITION_RIGHT = 0,
|
||||||
|
STAGE_TRANSITION_LEFT = 1,
|
||||||
|
STAGE_WAITING = 2,
|
||||||
|
STAGE_TRANSITION_UP = 3,
|
||||||
|
STAGE_TRANSITION_DOWN = 4,
|
||||||
|
STAGE_ONSCREEN_MENU = 5,
|
||||||
|
STAGE_WELCOME = 6,
|
||||||
|
STAGE_MENU = 7,
|
||||||
|
STAGE_FILTERS = 8,
|
||||||
|
STAGE_TRANSITION_SELECTED = 9
|
||||||
|
};
|
||||||
|
|
||||||
// TODO: need a better name for MENU_FIRST_MENU, this is reused for the 1st submenu of
|
// TODO: need a better name for MENU_FIRST_MENU, this is reused for the 1st submenu of
|
||||||
// available options in the duel menu
|
// available options in the duel menu
|
||||||
@@ -29,7 +44,7 @@ enum
|
|||||||
MENU_DECK_SELECTION = 10,
|
MENU_DECK_SELECTION = 10,
|
||||||
MENU_DECK_BUILDER = 11,
|
MENU_DECK_BUILDER = 11,
|
||||||
MENU_FIRST_DUEL_SUBMENU = 102,
|
MENU_FIRST_DUEL_SUBMENU = 102,
|
||||||
MENU_LANGUAGE_SELECTION = 103
|
MENU_LANGUAGE_SELECTION = 103,
|
||||||
};
|
};
|
||||||
|
|
||||||
// enums for menu options
|
// enums for menu options
|
||||||
@@ -49,69 +64,79 @@ enum DECK_VIEWER_MENU_ITEMS
|
|||||||
MENU_ITEM_NO = 21,
|
MENU_ITEM_NO = 21,
|
||||||
MENU_ITEM_FILTER_BY = 22,
|
MENU_ITEM_FILTER_BY = 22,
|
||||||
MENUITEM_MORE_INFO = kInfoMenuID
|
MENUITEM_MORE_INFO = kInfoMenuID
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define ALL_COLORS -1
|
||||||
|
|
||||||
|
#define ROTATE_LEFT 1;
|
||||||
|
#define ROTATE_RIGHT 0;
|
||||||
|
|
||||||
|
#define HIGH_SPEED 15.0
|
||||||
|
#define MED_SPEED 5.0f
|
||||||
|
#define LOW_SPEED 1.5
|
||||||
|
|
||||||
|
#define MAX_SAVED_FILTERS Constants::NB_Colors + 1
|
||||||
|
#define CARDS_DISPLAYED 10
|
||||||
|
|
||||||
class GameStateDeckViewer: public GameState, public JGuiListener
|
class GameStateDeckViewer: public GameState, public JGuiListener
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
enum DeckViewerStages
|
|
||||||
{
|
|
||||||
STAGE_WAITING = 0,
|
|
||||||
STAGE_ONSCREEN_MENU,
|
|
||||||
STAGE_WELCOME,
|
|
||||||
STAGE_MENU,
|
|
||||||
STAGE_FILTERS
|
|
||||||
};
|
|
||||||
|
|
||||||
vector<JQuadPtr> mIcons;
|
vector<JQuadPtr> mIcons;
|
||||||
JQuadPtr pspIcons[8];
|
JQuadPtr pspIcons[8];
|
||||||
JTexture * pspIconsTexture;
|
JTexture * pspIconsTexture;
|
||||||
float last_user_activity;
|
float last_user_activity;
|
||||||
float onScreenTransition;
|
float onScreenTransition;
|
||||||
DeckViewerStages mStage;
|
float mRotation;
|
||||||
|
float mSlide;
|
||||||
|
int mAlpha;
|
||||||
|
int mStage;
|
||||||
|
int useFilter;
|
||||||
JMusic * bgMusic;
|
JMusic * bgMusic;
|
||||||
|
int lastPos;
|
||||||
|
int lastTotal;
|
||||||
|
int mSelected;
|
||||||
|
|
||||||
InteractiveButton *toggleDeckButton, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton;
|
InteractiveButton *toggleDeckButton, *sellCardButton, *statsPrevButton, *filterButton;
|
||||||
|
|
||||||
WGuiFilters * filterMenu;
|
WGuiFilters * filterMenu;
|
||||||
WSrcDeckViewer * source;
|
WSrcDeckViewer * source;
|
||||||
|
|
||||||
DeckEditorMenu * welcome_menu;
|
DeckEditorMenu * welcome_menu;
|
||||||
SimpleMenu * subMenu;
|
SimpleMenu * subMenu;
|
||||||
DeckEditorMenu * deckMenu;
|
DeckEditorMenu * menu;
|
||||||
PriceList* pricelist;
|
PriceList* pricelist;
|
||||||
PlayerData * playerdata;
|
PlayerData * playerdata;
|
||||||
|
int price;
|
||||||
|
DeckDataWrapper * displayed_deck;
|
||||||
DeckDataWrapper * myDeck;
|
DeckDataWrapper * myDeck;
|
||||||
DeckDataWrapper * myCollection;
|
DeckDataWrapper * myCollection;
|
||||||
StatsWrapper * mStatsWrapper;
|
MTGCard * cardIndex[CARDS_DISPLAYED];
|
||||||
|
StatsWrapper *stw;
|
||||||
|
|
||||||
int hudAlpha;
|
int hudAlpha;
|
||||||
string newDeckname;
|
string newDeckname;
|
||||||
bool isAIDeckSave;
|
bool isAIDeckSave;
|
||||||
bool mSwitching;
|
bool mSwitching;
|
||||||
|
|
||||||
enum AvailableView{
|
|
||||||
CAROUSEL_VIEW,
|
|
||||||
GRID_VIEW
|
|
||||||
};
|
|
||||||
DeckView* mView;
|
|
||||||
AvailableView mCurrentView;
|
|
||||||
|
|
||||||
void saveDeck(); //Saves the deck and additional necessary information
|
void saveDeck(); //Saves the deck and additional necessary information
|
||||||
void saveAsAIDeck(string deckName); // saves deck as an AI Deck
|
void saveAsAIDeck(string deckName); // saves deck as an AI Deck
|
||||||
|
int getCurrentPos();
|
||||||
void sellCard();
|
void sellCard();
|
||||||
void setButtonState(bool state);
|
void setButtonState(bool state);
|
||||||
bool userPressedButton();
|
bool userPressedButton();
|
||||||
void RenderButtons();
|
void RenderButtons();
|
||||||
void setupView(AvailableView view, DeckDataWrapper *deck);
|
|
||||||
void toggleView();
|
pair<float, float> cardsCoordinates[CARDS_DISPLAYED];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GameStateDeckViewer(GameApp* parent);
|
GameStateDeckViewer(GameApp* parent);
|
||||||
virtual ~GameStateDeckViewer();
|
virtual ~GameStateDeckViewer();
|
||||||
void updateDecks();
|
void updateDecks();
|
||||||
|
void rotateCards(int direction);
|
||||||
|
void loadIndexes();
|
||||||
void updateFilters();
|
void updateFilters();
|
||||||
void rebuildFilters();
|
void rebuildFilters();
|
||||||
void toggleCollection();
|
void switchDisplay();
|
||||||
void Start();
|
void Start();
|
||||||
virtual void End();
|
virtual void End();
|
||||||
void addRemove(MTGCard * card);
|
void addRemove(MTGCard * card);
|
||||||
@@ -120,8 +145,11 @@ public:
|
|||||||
void renderSlideBar();
|
void renderSlideBar();
|
||||||
void renderDeckBackground();
|
void renderDeckBackground();
|
||||||
void renderOnScreenMenu();
|
void renderOnScreenMenu();
|
||||||
|
virtual void renderCard(int id, float rotation);
|
||||||
|
virtual void renderCard(int id);
|
||||||
virtual void Render();
|
virtual void Render();
|
||||||
int loadDeck(int deckid);
|
int loadDeck(int deckid);
|
||||||
|
void LoadDeckStatistics(int deckId);
|
||||||
|
|
||||||
void OnScroll(int inXVelocity, int inYVelocity);
|
void OnScroll(int inXVelocity, int inYVelocity);
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
#ifndef _GRID_DECK_VIEW_H
|
|
||||||
#define _GRID_DECK_VIEW_H
|
|
||||||
|
|
||||||
#include "DeckView.h"
|
|
||||||
#include "Easing.h"
|
|
||||||
|
|
||||||
class GridDeckView : public DeckView
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
static const float scroll_animation_duration;
|
|
||||||
static const float slide_animation_duration;
|
|
||||||
static const float card_scale_small;
|
|
||||||
static const float card_scale_big;
|
|
||||||
public:
|
|
||||||
GridDeckView();
|
|
||||||
virtual ~GridDeckView();
|
|
||||||
void Reset();
|
|
||||||
|
|
||||||
void UpdateViewState(float dt);
|
|
||||||
void UpdateCardPosition(CardRep &rep, int index);
|
|
||||||
|
|
||||||
void Render();
|
|
||||||
MTGCard * Click(int x, int y);
|
|
||||||
|
|
||||||
void changePosition(int offset);
|
|
||||||
void changeFilter(int offset);
|
|
||||||
|
|
||||||
MTGCard *getActiveCard();
|
|
||||||
private:
|
|
||||||
int mCols;
|
|
||||||
int mRows;
|
|
||||||
float mScrollOffset, mSlideOffset;
|
|
||||||
InOutQuadEasing mScrollEasing;
|
|
||||||
InOutQuadEasing mSlideEasing;
|
|
||||||
int mCurrentSelection;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //_GRID_DECK_VIEW_H
|
|
||||||
@@ -6,9 +6,8 @@
|
|||||||
#include <hge/hgeparticle.h>
|
#include <hge/hgeparticle.h>
|
||||||
#include "JGE.h"
|
#include "JGE.h"
|
||||||
#include "MTGDefinitions.h"
|
#include "MTGDefinitions.h"
|
||||||
#include "Pos.h"
|
#include "GameApp.h"
|
||||||
#include "GuiLayers.h"
|
#include "GuiLayers.h"
|
||||||
#include "WResource_Fwd.h"
|
|
||||||
|
|
||||||
class ManaIcon : public Pos
|
class ManaIcon : public Pos
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ const int kNextStatsButtonId = 10005;
|
|||||||
const int kPrevStatsButtonId = 10006;
|
const int kPrevStatsButtonId = 10006;
|
||||||
const int kCycleCardsButtonId = 10007;
|
const int kCycleCardsButtonId = 10007;
|
||||||
const int kShowCardListButtonId = 10008;
|
const int kShowCardListButtonId = 10008;
|
||||||
const int kSwitchViewButton = 10009;
|
|
||||||
|
|
||||||
class InteractiveButton: public SimpleButton
|
class InteractiveButton: public SimpleButton
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ public:
|
|||||||
virtual TargetAbility* clone() const = 0;
|
virtual TargetAbility* clone() const = 0;
|
||||||
virtual void Render();
|
virtual void Render();
|
||||||
virtual int resolve();
|
virtual int resolve();
|
||||||
virtual const string getMenuText();
|
virtual const char * getMenuText();
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ public:
|
|||||||
|
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
virtual GenericTriggeredAbility* clone() const;
|
virtual GenericTriggeredAbility* clone() const;
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
~GenericTriggeredAbility();
|
~GenericTriggeredAbility();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -525,7 +525,7 @@ public:
|
|||||||
int isReactingToClick(MTGCardInstance * _card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * _card, ManaCost * mana = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
int reactToClick(MTGCardInstance* _card);
|
int reactToClick(MTGCardInstance* _card);
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
~AManaProducer();
|
~AManaProducer();
|
||||||
virtual AManaProducer * clone() const;
|
virtual AManaProducer * clone() const;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -129,11 +129,11 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//types
|
//types
|
||||||
void addType(const string& type_text);
|
void addType(char * type_text);
|
||||||
virtual void addType(int id);
|
virtual void addType(int id);
|
||||||
void setType(const string& type_text);
|
void setType(const char * type_text);
|
||||||
void setSubtype(const string &value);
|
void setSubtype( string value);
|
||||||
int removeType(const string &value, int removeAll = 0);
|
int removeType(string value, int removeAll = 0);
|
||||||
int removeType(int value, int removeAll = 0);
|
int removeType(int value, int removeAll = 0);
|
||||||
|
|
||||||
//dangerranking is a hint to Ai which creatures are the ones it should be targetting for effects.
|
//dangerranking is a hint to Ai which creatures are the ones it should be targetting for effects.
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#define MTG_ERROR -1
|
#define MTG_ERROR -1
|
||||||
|
|
||||||
#include "MTGDefinitions.h"
|
#include "MTGDefinitions.h"
|
||||||
|
#include "GameApp.h"
|
||||||
#include "WResourceManager.h"
|
#include "WResourceManager.h"
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <Threading.h>
|
#include <Threading.h>
|
||||||
@@ -18,7 +19,7 @@ class MTGPack;
|
|||||||
class MTGSetInfo
|
class MTGSetInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MTGSetInfo(const string& _id);
|
MTGSetInfo(string _id);
|
||||||
~MTGSetInfo();
|
~MTGSetInfo();
|
||||||
string id; //Short name: 10E, RAV, etc. Automatic from folder.
|
string id; //Short name: 10E, RAV, etc. Automatic from folder.
|
||||||
string author; //Author of set, for crediting mod makers, etc.
|
string author; //Author of set, for crediting mod makers, etc.
|
||||||
@@ -69,7 +70,7 @@ public:
|
|||||||
MTGSets();
|
MTGSets();
|
||||||
~MTGSets();
|
~MTGSets();
|
||||||
|
|
||||||
int Add(const string& subtype);
|
int Add(const char * subtype);
|
||||||
int findSet(string value);
|
int findSet(string value);
|
||||||
int findBlock(string s);
|
int findBlock(string s);
|
||||||
int size();
|
int size();
|
||||||
@@ -126,10 +127,8 @@ public:
|
|||||||
MTGCard * getCardByName(string name);
|
MTGCard * getCardByName(string name);
|
||||||
void loadFolder(const string& folder, const string& filename="" );
|
void loadFolder(const string& folder, const string& filename="" );
|
||||||
|
|
||||||
int load(const string& config_file);
|
int load(const char * config_file, const char * setName = NULL, int autoload = 1);
|
||||||
int load(const string& config_file, const string& setName);
|
int countByType(const char * _type);
|
||||||
int load(const string& config_file, int set_id);
|
|
||||||
int countByType(const string& _type);
|
|
||||||
int countByColor(int color);
|
int countByColor(int color);
|
||||||
int countBySet(int setId);
|
int countBySet(int setId);
|
||||||
int totalCards();
|
int totalCards();
|
||||||
@@ -219,8 +218,8 @@ public:
|
|||||||
int totalCards();
|
int totalCards();
|
||||||
int totalPrice();
|
int totalPrice();
|
||||||
MTGDeck(MTGAllCards * _allcards);
|
MTGDeck(MTGAllCards * _allcards);
|
||||||
MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_only = 0,int difficultySetting = 0);
|
MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only = 0,int difficultySetting = 0);
|
||||||
int addRandomCards(int howmany, int * setIds = NULL, int nbSets = 0, int rarity = -1, const string& subtype = "",
|
int addRandomCards(int howmany, int * setIds = NULL, int nbSets = 0, int rarity = -1, const char * subtype = NULL,
|
||||||
int * colors = NULL, int nbcolors = 0);
|
int * colors = NULL, int nbcolors = 0);
|
||||||
int add(int cardid);
|
int add(int cardid);
|
||||||
int add(MTGDeck * deck); // adds the contents of "deck" into myself
|
int add(MTGDeck * deck); // adds the contents of "deck" into myself
|
||||||
|
|||||||
@@ -218,8 +218,7 @@ class Constants
|
|||||||
soulbond = 100,
|
soulbond = 100,
|
||||||
LURE = 101,
|
LURE = 101,
|
||||||
NOLEGEND = 102,
|
NOLEGEND = 102,
|
||||||
CANPLAYFROMGRAVEYARD = 103,
|
NB_BASIC_ABILITIES = 103,
|
||||||
NB_BASIC_ABILITIES = 104,
|
|
||||||
|
|
||||||
|
|
||||||
RARITY_S = 'S', //Special Rarity
|
RARITY_S = 'S', //Special Rarity
|
||||||
@@ -294,7 +293,7 @@ class Constants
|
|||||||
|
|
||||||
static map<string,int> MTGBasicAbilitiesMap;
|
static map<string,int> MTGBasicAbilitiesMap;
|
||||||
static const char* MTGBasicAbilities[];
|
static const char* MTGBasicAbilities[];
|
||||||
static const string MTGPhaseNames[];
|
static const char* MTGPhaseNames[];
|
||||||
static const char* MTGPhaseCodeNames[];
|
static const char* MTGPhaseCodeNames[];
|
||||||
|
|
||||||
static int GetBasicAbilityIndex(string mtgAbility);
|
static int GetBasicAbilityIndex(string mtgAbility);
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ class MTGGameZone {
|
|||||||
void cleanupPhase();
|
void cleanupPhase();
|
||||||
void beforeBeginPhase();
|
void beforeBeginPhase();
|
||||||
|
|
||||||
unsigned int countByType(const string &value);
|
unsigned int countByType(const char * value);
|
||||||
unsigned int countByCanTarget(TargetChooser * tc);
|
unsigned int countByCanTarget(TargetChooser * tc);
|
||||||
unsigned int countTotalManaSymbols(TargetChooser * tc, int color);
|
unsigned int countTotalManaSymbols(TargetChooser * tc, int color);
|
||||||
MTGCardInstance * findByName(string name);
|
MTGCardInstance * findByName(string name);
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ public:
|
|||||||
MTGEventBonus(GameObserver* observer, int _id);
|
MTGEventBonus(GameObserver* observer, int _id);
|
||||||
virtual MTGEventBonus * clone() const;
|
virtual MTGEventBonus * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MTGPutInPlayRule: public PermanentAbility
|
class MTGPutInPlayRule: public PermanentAbility
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -74,7 +73,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGPutInPlayRule(GameObserver* observer, int _id);
|
MTGPutInPlayRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "cast card normally";
|
return "cast card normally";
|
||||||
}
|
}
|
||||||
@@ -88,7 +87,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGKickerRule(GameObserver* observer, int _id);
|
MTGKickerRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "pay kicker";
|
return "pay kicker";
|
||||||
}
|
}
|
||||||
@@ -106,7 +105,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGAlternativeCostRule(GameObserver* observer, int _id);
|
MTGAlternativeCostRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
if(alternativeName.size())
|
if(alternativeName.size())
|
||||||
return alternativeName.c_str();
|
return alternativeName.c_str();
|
||||||
@@ -122,7 +121,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGBuyBackRule(GameObserver* observer, int _id);
|
MTGBuyBackRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "cast and buy back";
|
return "cast and buy back";
|
||||||
}
|
}
|
||||||
@@ -137,7 +136,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGFlashBackRule(GameObserver* observer, int _id);
|
MTGFlashBackRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "flash back";
|
return "flash back";
|
||||||
}
|
}
|
||||||
@@ -151,7 +150,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGRetraceRule(GameObserver* observer, int _id);
|
MTGRetraceRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "retrace";
|
return "retrace";
|
||||||
}
|
}
|
||||||
@@ -166,28 +165,13 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGMorphCostRule(GameObserver* observer, int _id);
|
MTGMorphCostRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "play morphed";
|
return "play morphed";
|
||||||
}
|
}
|
||||||
virtual MTGMorphCostRule * clone() const;
|
virtual MTGMorphCostRule * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MTGPlayFromGraveyardRule: public MTGAlternativeCostRule
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
|
||||||
int reactToClick(MTGCardInstance * card);
|
|
||||||
virtual ostream& toString(ostream& out) const;
|
|
||||||
MTGPlayFromGraveyardRule(GameObserver* observer, int _id);
|
|
||||||
const string getMenuText()
|
|
||||||
{
|
|
||||||
return "cast card from graveyard";
|
|
||||||
}
|
|
||||||
virtual MTGPlayFromGraveyardRule * clone() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class MTGSuspendRule: public MTGAlternativeCostRule
|
class MTGSuspendRule: public MTGAlternativeCostRule
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -197,7 +181,7 @@ public:
|
|||||||
string suspendmenu;
|
string suspendmenu;
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGSuspendRule(GameObserver* observer, int _id);
|
MTGSuspendRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
virtual MTGSuspendRule * clone() const;
|
virtual MTGSuspendRule * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -211,7 +195,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGAttackRule(GameObserver* observer, int _id);
|
MTGAttackRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Attacker";
|
return "Attacker";
|
||||||
}
|
}
|
||||||
@@ -229,7 +213,7 @@ public:
|
|||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
MTGPlaneswalkerAttackRule(GameObserver* observer, int _id);
|
MTGPlaneswalkerAttackRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Attack Planeswalker";
|
return "Attack Planeswalker";
|
||||||
}
|
}
|
||||||
@@ -242,7 +226,7 @@ public:
|
|||||||
MTGCardInstance* attacker;
|
MTGCardInstance* attacker;
|
||||||
AAPlaneswalkerAttacked(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target);
|
AAPlaneswalkerAttacked(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const char* getMenuText();
|
||||||
AAPlaneswalkerAttacked * clone() const;
|
AAPlaneswalkerAttacked * clone() const;
|
||||||
~AAPlaneswalkerAttacked();
|
~AAPlaneswalkerAttacked();
|
||||||
};
|
};
|
||||||
@@ -268,7 +252,7 @@ public:
|
|||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGBlockRule(GameObserver* observer, int _id);
|
MTGBlockRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText();
|
const char * getMenuText();
|
||||||
virtual MTGBlockRule * clone() const;
|
virtual MTGBlockRule * clone() const;
|
||||||
~MTGBlockRule();
|
~MTGBlockRule();
|
||||||
};
|
};
|
||||||
@@ -402,7 +386,7 @@ public:
|
|||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
int reactToClick(MTGCardInstance * card, int id);
|
int reactToClick(MTGCardInstance * card, int id);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Momir";
|
return "Momir";
|
||||||
}
|
}
|
||||||
@@ -422,7 +406,7 @@ public:
|
|||||||
MTGCardInstance * genEquip(int id);
|
MTGCardInstance * genEquip(int id);
|
||||||
MTGStoneHewerRule(GameObserver* observer, int _id, MTGAllCards * _collection);
|
MTGStoneHewerRule(GameObserver* observer, int _id, MTGAllCards * _collection);
|
||||||
int receiveEvent(WEvent * event);
|
int receiveEvent(WEvent * event);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Stone Hewer";
|
return "Stone Hewer";
|
||||||
}
|
}
|
||||||
@@ -435,7 +419,7 @@ class MTGHermitRule: public PermanentAbility
|
|||||||
public:
|
public:
|
||||||
MTGHermitRule(GameObserver* observer, int _id);
|
MTGHermitRule(GameObserver* observer, int _id);
|
||||||
int receiveEvent(WEvent * event);
|
int receiveEvent(WEvent * event);
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Hermit";
|
return "Hermit";
|
||||||
}
|
}
|
||||||
@@ -463,7 +447,7 @@ public:
|
|||||||
|
|
||||||
int receiveEvent(WEvent * event);
|
int receiveEvent(WEvent * event);
|
||||||
|
|
||||||
const string getMenuText()
|
const char * getMenuText()
|
||||||
{
|
{
|
||||||
return "Deathtouch";
|
return "Deathtouch";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
#ifndef OBJECTANALYTICS_H
|
#ifndef OBJECTANALYTICS_H
|
||||||
#define OBJECTANALYTICS_H
|
#define OBJECTANALYTICS_H
|
||||||
|
|
||||||
#include <boost/cstdint.hpp>
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
#define TRACK_OBJECT_USAGE
|
#define TRACK_OBJECT_USAGE
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <JGui.h>
|
#include <JGui.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include "GameApp.h"
|
||||||
#include "GameStateOptions.h"
|
#include "GameStateOptions.h"
|
||||||
#include "WFilter.h"
|
#include "WFilter.h"
|
||||||
#include "WDataSrc.h"
|
#include "WDataSrc.h"
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
int addCombatAfter(Player* player, int after_id, bool withMain = false);
|
int addCombatAfter(Player* player, int after_id, bool withMain = false);
|
||||||
int addPhaseAfter(GamePhase id, Player* player, int after_id);
|
int addPhaseAfter(GamePhase id, Player* player, int after_id);
|
||||||
int removePhase(int id);
|
int removePhase(int id);
|
||||||
const string& phaseName(int id);
|
const char * phaseName(int id);
|
||||||
static GamePhase phaseStrToInt(string s);
|
static GamePhase phaseStrToInt(string s);
|
||||||
static string phaseIntToStr(int id);
|
static string phaseIntToStr(int id);
|
||||||
|
|
||||||
|
|||||||
@@ -20,18 +20,16 @@ public:
|
|||||||
~PriceList();
|
~PriceList();
|
||||||
int save();
|
int save();
|
||||||
int getSellPrice(int cardid);
|
int getSellPrice(int cardid);
|
||||||
int getSellPrice(MTGCard* card);
|
|
||||||
int getPurchasePrice(int cardid);
|
int getPurchasePrice(int cardid);
|
||||||
int getPrice(MTGCard *card);
|
|
||||||
int getPrice(int cardId);
|
int getPrice(int cardId);
|
||||||
int setPrice(int cardId, int price);
|
int setPrice(int cardId, int price);
|
||||||
int setPrice(MTGCard *card, int price);
|
|
||||||
int getOtherPrice(int amt);
|
int getOtherPrice(int amt);
|
||||||
static float difficultyScalar(float price, int cardid = 0);
|
static float difficultyScalar(float price, int cardid = 0);
|
||||||
static void updateKey()
|
static void updateKey()
|
||||||
{
|
{
|
||||||
randomKey = rand();
|
randomKey = rand();
|
||||||
}
|
}
|
||||||
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public:
|
|||||||
virtual bool CheckUserInput(JButton key);
|
virtual bool CheckUserInput(JButton key);
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
using JGuiController::Add;
|
using JGuiController::Add;
|
||||||
virtual void Add(int id, const string &Text, string desc = "", bool forceFocus = false);
|
virtual void Add(int id, const char * Text, string desc = "", bool forceFocus = false);
|
||||||
int getmCurr(){return mCurr;}
|
int getmCurr(){return mCurr;}
|
||||||
float getWidth(){return mWidth; }
|
float getWidth(){return mWidth; }
|
||||||
virtual void Close();
|
virtual void Close();
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class GameObserver;
|
|
||||||
|
|
||||||
// Task type constant
|
// Task type constant
|
||||||
|
|
||||||
#define TASK_BASIC 'B'
|
#define TASK_BASIC 'B'
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
#include "MTGDeck.h"
|
|
||||||
|
|
||||||
#ifndef _WFILTER_H_
|
#ifndef _WFILTER_H_
|
||||||
#define _WFILTER_H_
|
#define _WFILTER_H_
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
class hgeDistortionMesh;
|
class hgeDistortionMesh;
|
||||||
class GameStateOptions;
|
class GameStateOptions;
|
||||||
class SimpleMenu;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@defgroup WGui Basic Gui
|
@defgroup WGui Basic Gui
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <list>
|
|
||||||
|
|
||||||
#include "DebugRoutines.h"
|
#include "DebugRoutines.h"
|
||||||
|
|
||||||
@@ -141,20 +140,4 @@ template <class T> istream& operator>>(istream& in, T& p)
|
|||||||
/* replace_all ... replacement to avoid depending on boost for that */
|
/* replace_all ... replacement to avoid depending on boost for that */
|
||||||
void ReplaceString(std::string& subject, const std::string& search, const std::string& replace);
|
void ReplaceString(std::string& subject, const std::string& search, const std::string& replace);
|
||||||
|
|
||||||
/*! \brief Returns true if base starts with start, otherwise false
|
|
||||||
*
|
|
||||||
* Compares the first strlen(start) characters of base with start and
|
|
||||||
* returns true if both match.
|
|
||||||
*/
|
|
||||||
bool StartsWith(const std::string& base, const char *start);
|
|
||||||
|
|
||||||
/*! \brief Returns true if base starts with start, otherwise false
|
|
||||||
*
|
|
||||||
* This version is slightly more efficient as strlen does not need to
|
|
||||||
* get called. Otherwise, it behaves exactly like
|
|
||||||
* StartsWith(const std::string& base, const char *start)
|
|
||||||
*
|
|
||||||
* \see StartsWith(const std::string& base, const char *start)
|
|
||||||
*/
|
|
||||||
bool StartsWith(const std::string& base, const std::string& start);
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ void NextGamePhase::Render()
|
|||||||
if (observer->currentActionPlayer == observer->players[1])
|
if (observer->currentActionPlayer == observer->players[1])
|
||||||
playerId = 2;
|
playerId = 2;
|
||||||
|
|
||||||
sprintf(buffer, "%s %i : %s", _("Player").c_str(), playerId, observer->getNextGamePhaseName().c_str());
|
sprintf(buffer, "%s %i : %s", _("Player").c_str(), playerId, observer->getNextGamePhaseName());
|
||||||
|
|
||||||
mFont->DrawString(buffer, x + 15, y+10, JGETEXT_LEFT);
|
mFont->DrawString(buffer, x + 15, y+10, JGETEXT_LEFT);
|
||||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||||
@@ -675,7 +675,6 @@ ActionStack::ActionStack(GameObserver* game)
|
|||||||
currentState = -1;
|
currentState = -1;
|
||||||
mode = ACTIONSTACK_STANDARD;
|
mode = ACTIONSTACK_STANDARD;
|
||||||
checked = 0;
|
checked = 0;
|
||||||
lastActionController = NULL;
|
|
||||||
|
|
||||||
if(!observer->getResourceManager()) return;
|
if(!observer->getResourceManager()) return;
|
||||||
for (int i = 0; i < 8; ++i)
|
for (int i = 0; i < 8; ++i)
|
||||||
|
|||||||
@@ -55,12 +55,6 @@ GenericActivatedAbility::GenericActivatedAbility(GameObserver* observer, string
|
|||||||
target = ability->target;
|
target = ability->target;
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericActivatedAbility::GenericActivatedAbility(const GenericActivatedAbility &other):
|
|
||||||
ActivatedAbility(other), NestedAbility(other), activeZone(other.activeZone), newName(other.newName)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int GenericActivatedAbility::resolve()
|
int GenericActivatedAbility::resolve()
|
||||||
{
|
{
|
||||||
//Note: I've seen a similar block in some other MTGAbility, can this be refactored .
|
//Note: I've seen a similar block in some other MTGAbility, can this be refactored .
|
||||||
@@ -77,7 +71,7 @@ int GenericActivatedAbility::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericActivatedAbility::getMenuText()
|
const char * GenericActivatedAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if(newName.size())
|
if(newName.size())
|
||||||
return newName.c_str();
|
return newName.c_str();
|
||||||
@@ -111,7 +105,6 @@ int GenericActivatedAbility::testDestroy()
|
|||||||
GenericActivatedAbility * GenericActivatedAbility::clone() const
|
GenericActivatedAbility * GenericActivatedAbility::clone() const
|
||||||
{
|
{
|
||||||
GenericActivatedAbility * a = NEW GenericActivatedAbility(*this);
|
GenericActivatedAbility * a = NEW GenericActivatedAbility(*this);
|
||||||
|
|
||||||
a->ability = ability->clone();
|
a->ability = ability->clone();
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
@@ -140,7 +133,7 @@ int AAAlterPoison::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAAlterPoison::getMenuText()
|
const char * AAAlterPoison::getMenuText()
|
||||||
{
|
{
|
||||||
return "Poison";
|
return "Poison";
|
||||||
}
|
}
|
||||||
@@ -172,7 +165,7 @@ int AADamagePrevent::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADamagePrevent::getMenuText()
|
const char * AADamagePrevent::getMenuText()
|
||||||
{
|
{
|
||||||
return "Prevent Damage";
|
return "Prevent Damage";
|
||||||
}
|
}
|
||||||
@@ -244,7 +237,7 @@ AADamager::AADamager(GameObserver* observer, int _id, MTGCardInstance * _source,
|
|||||||
return damage.getValue();
|
return damage.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADamager::getMenuText()
|
const char * AADamager::getMenuText()
|
||||||
{
|
{
|
||||||
MTGCardInstance * _target = dynamic_cast<MTGCardInstance*>(target);
|
MTGCardInstance * _target = dynamic_cast<MTGCardInstance*>(target);
|
||||||
if(_target && _target->hasType(Subtypes::TYPE_PLANESWALKER))
|
if(_target && _target->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||||
@@ -283,7 +276,7 @@ AADepleter::AADepleter(GameObserver* observer, int _id, MTGCardInstance * card,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADepleter::getMenuText()
|
const char * AADepleter::getMenuText()
|
||||||
{
|
{
|
||||||
return "Deplete";
|
return "Deplete";
|
||||||
}
|
}
|
||||||
@@ -318,7 +311,7 @@ AAModTurn::AAModTurn(GameObserver* observer, int _id, MTGCardInstance * card, Ta
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAModTurn::getMenuText()
|
const char * AAModTurn::getMenuText()
|
||||||
{
|
{
|
||||||
WParsedInt numTurns(nbTurnStr, NULL, source);
|
WParsedInt numTurns(nbTurnStr, NULL, source);
|
||||||
if(numTurns.getValue() > 0)
|
if(numTurns.getValue() > 0)
|
||||||
@@ -361,7 +354,7 @@ int AALibraryBottom::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AALibraryBottom::getMenuText()
|
const char * AALibraryBottom::getMenuText()
|
||||||
{
|
{
|
||||||
return "Bottom Of Library";
|
return "Bottom Of Library";
|
||||||
}
|
}
|
||||||
@@ -389,7 +382,7 @@ int AACopier::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AACopier::getMenuText()
|
const char * AACopier::getMenuText()
|
||||||
{
|
{
|
||||||
return "Copy";
|
return "Copy";
|
||||||
}
|
}
|
||||||
@@ -422,7 +415,7 @@ int AAPhaseOut::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAPhaseOut::getMenuText()
|
const char * AAPhaseOut::getMenuText()
|
||||||
{
|
{
|
||||||
return "Phase Out";
|
return "Phase Out";
|
||||||
}
|
}
|
||||||
@@ -513,7 +506,7 @@ AACounter::AACounter(GameObserver* observer, int id, MTGCardInstance * source, M
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AACounter::getMenuText()
|
const char* AACounter::getMenuText()
|
||||||
{
|
{
|
||||||
if (menu.size())
|
if (menu.size())
|
||||||
{
|
{
|
||||||
@@ -702,7 +695,7 @@ int AARemoveAllCounter::resolve()
|
|||||||
return nb;
|
return nb;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AARemoveAllCounter::getMenuText()
|
const char* AARemoveAllCounter::getMenuText()
|
||||||
{
|
{
|
||||||
if (menu.size())
|
if (menu.size())
|
||||||
{
|
{
|
||||||
@@ -780,7 +773,7 @@ int AAProliferate::resolve()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAProliferate::getMenuText()
|
const char* AAProliferate::getMenuText()
|
||||||
{
|
{
|
||||||
return "Proliferate";
|
return "Proliferate";
|
||||||
}
|
}
|
||||||
@@ -823,7 +816,7 @@ int GenericChooseTypeColor::resolve()
|
|||||||
for (size_t i = 0; i < values.size(); ++i)
|
for (size_t i = 0; i < values.size(); ++i)
|
||||||
{
|
{
|
||||||
string menu = values[i];
|
string menu = values[i];
|
||||||
if (!ANonWall || (menu != "wall" && menu != "Wall"))
|
if(!ANonWall || (menu != "wall" && menu != "Wall"))
|
||||||
{
|
{
|
||||||
setType = NEW AASetTypeChosen(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i,menu,baseAbility);
|
setType = NEW AASetTypeChosen(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i,menu,baseAbility);
|
||||||
MTGAbility * set = setType->clone();
|
MTGAbility * set = setType->clone();
|
||||||
@@ -844,7 +837,7 @@ int GenericChooseTypeColor::resolve()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericChooseTypeColor::getMenuText()
|
const char* GenericChooseTypeColor::getMenuText()
|
||||||
{
|
{
|
||||||
if(chooseColor)
|
if(chooseColor)
|
||||||
return "Choose a color";
|
return "Choose a color";
|
||||||
@@ -906,7 +899,7 @@ int AASetColorChosen::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AASetColorChosen::getMenuText()
|
const char* AASetColorChosen::getMenuText()
|
||||||
{
|
{
|
||||||
return Constants::MTGColorStrings[color];
|
return Constants::MTGColorStrings[color];
|
||||||
}
|
}
|
||||||
@@ -963,7 +956,7 @@ int AASetTypeChosen::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AASetTypeChosen::getMenuText()
|
const char* AASetTypeChosen::getMenuText()
|
||||||
{
|
{
|
||||||
return menutext.c_str();
|
return menutext.c_str();
|
||||||
}
|
}
|
||||||
@@ -1010,7 +1003,7 @@ int GenericFlipACoin::resolve()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericFlipACoin::getMenuText()
|
const char* GenericFlipACoin::getMenuText()
|
||||||
{
|
{
|
||||||
return "Flip A Coin";
|
return "Flip A Coin";
|
||||||
}
|
}
|
||||||
@@ -1102,7 +1095,7 @@ int AASetCoin::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AASetCoin::getMenuText()
|
const char* AASetCoin::getMenuText()
|
||||||
{
|
{
|
||||||
if(side == 1)
|
if(side == 1)
|
||||||
return "Tails";
|
return "Tails";
|
||||||
@@ -1193,7 +1186,7 @@ int GenericPaidAbility::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericPaidAbility::getMenuText()
|
const char* GenericPaidAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if (newName.size())
|
if (newName.size())
|
||||||
return newName.c_str();
|
return newName.c_str();
|
||||||
@@ -1295,7 +1288,7 @@ int AAResetDamage::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAResetDamage::getMenuText()
|
const char* AAResetDamage::getMenuText()
|
||||||
{
|
{
|
||||||
return "Reset Damages";
|
return "Reset Damages";
|
||||||
}
|
}
|
||||||
@@ -1316,7 +1309,7 @@ int AAFakeAbility::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAFakeAbility::getMenuText()
|
const char* AAFakeAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if(named.size())
|
if(named.size())
|
||||||
return named.c_str();
|
return named.c_str();
|
||||||
@@ -1363,7 +1356,7 @@ int AAFizzler::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAFizzler::getMenuText()
|
const char * AAFizzler::getMenuText()
|
||||||
{
|
{
|
||||||
return "Fizzle";
|
return "Fizzle";
|
||||||
}
|
}
|
||||||
@@ -1410,7 +1403,7 @@ int AABuryCard::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AABuryCard::getMenuText()
|
const char * AABuryCard::getMenuText()
|
||||||
{
|
{
|
||||||
if(menu.size())
|
if(menu.size())
|
||||||
return menu.c_str();
|
return menu.c_str();
|
||||||
@@ -1466,7 +1459,7 @@ int AADestroyCard::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADestroyCard::getMenuText()
|
const char * AADestroyCard::getMenuText()
|
||||||
{
|
{
|
||||||
return "Destroy";
|
return "Destroy";
|
||||||
}
|
}
|
||||||
@@ -1522,7 +1515,7 @@ int AASacrificeCard::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AASacrificeCard::getMenuText()
|
const char * AASacrificeCard::getMenuText()
|
||||||
{
|
{
|
||||||
return "Sacrifice";
|
return "Sacrifice";
|
||||||
}
|
}
|
||||||
@@ -1577,7 +1570,7 @@ int AADiscardCard::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADiscardCard::getMenuText()
|
const char * AADiscardCard::getMenuText()
|
||||||
{
|
{
|
||||||
return "Discard";
|
return "Discard";
|
||||||
}
|
}
|
||||||
@@ -1641,7 +1634,7 @@ AADrawer::AADrawer(GameObserver* observer, int _id, MTGCardInstance * card, Targ
|
|||||||
return numCards.getValue();
|
return numCards.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADrawer::getMenuText()
|
const char * AADrawer::getMenuText()
|
||||||
{
|
{
|
||||||
return "Draw";
|
return "Draw";
|
||||||
}
|
}
|
||||||
@@ -1670,7 +1663,7 @@ int AAFrozen::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAFrozen::getMenuText()
|
const char * AAFrozen::getMenuText()
|
||||||
{
|
{
|
||||||
return "Freeze";
|
return "Freeze";
|
||||||
}
|
}
|
||||||
@@ -1735,7 +1728,7 @@ int AANewTarget::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AANewTarget::getMenuText()
|
const char * AANewTarget::getMenuText()
|
||||||
{
|
{
|
||||||
return "New Target";
|
return "New Target";
|
||||||
}
|
}
|
||||||
@@ -1816,7 +1809,7 @@ int AAMorph::testDestroy()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAMorph::getMenuText()
|
const char * AAMorph::getMenuText()
|
||||||
{
|
{
|
||||||
return "Morph";
|
return "Morph";
|
||||||
}
|
}
|
||||||
@@ -1953,7 +1946,7 @@ int AAFlip::testDestroy()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAFlip::getMenuText()
|
const char * AAFlip::getMenuText()
|
||||||
{
|
{
|
||||||
string s = flipStats;
|
string s = flipStats;
|
||||||
sprintf(menuText, "Transform:%s", s.c_str());
|
sprintf(menuText, "Transform:%s", s.c_str());
|
||||||
@@ -2259,7 +2252,7 @@ int AADynamic::activateStored()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AADynamic::getMenuText()
|
const char * AADynamic::getMenuText()
|
||||||
{
|
{
|
||||||
if (menu.size())
|
if (menu.size())
|
||||||
{
|
{
|
||||||
@@ -2374,7 +2367,7 @@ int AALifer::getLife()
|
|||||||
return life.getValue();
|
return life.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AALifer::getMenuText()
|
const char * AALifer::getMenuText()
|
||||||
{
|
{
|
||||||
if(getLife() < 0)
|
if(getLife() < 0)
|
||||||
return "Life Loss";
|
return "Life Loss";
|
||||||
@@ -2407,7 +2400,7 @@ int AASetHand::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AASetHand::getMenuText()
|
const char * AASetHand::getMenuText()
|
||||||
{
|
{
|
||||||
return "Set Hand Size";
|
return "Set Hand Size";
|
||||||
}
|
}
|
||||||
@@ -2438,7 +2431,7 @@ int AALifeSet::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AALifeSet::getMenuText()
|
const char * AALifeSet::getMenuText()
|
||||||
{
|
{
|
||||||
return "Set Life";
|
return "Set Life";
|
||||||
}
|
}
|
||||||
@@ -2520,7 +2513,7 @@ int AACloner::resolve()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AACloner::getMenuText()
|
const char * AACloner::getMenuText()
|
||||||
{
|
{
|
||||||
if (who == 1)
|
if (who == 1)
|
||||||
return "Clone For Opponent";
|
return "Clone For Opponent";
|
||||||
@@ -2595,7 +2588,7 @@ int ACastRestriction::destroy()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string ACastRestriction::getMenuText()
|
const char * ACastRestriction::getMenuText()
|
||||||
{
|
{
|
||||||
if (modifyExisting)
|
if (modifyExisting)
|
||||||
return "Additional Lands"; //hardoced because only the lands rule allows to modify existing rule for now
|
return "Additional Lands"; //hardoced because only the lands rule allows to modify existing rule for now
|
||||||
@@ -2630,7 +2623,7 @@ int AInstantCastRestrictionUEOT::resolve()
|
|||||||
wrapper->addToGame();
|
wrapper->addToGame();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
const string AInstantCastRestrictionUEOT::getMenuText()
|
const char * AInstantCastRestrictionUEOT::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -2724,14 +2717,14 @@ int AAMover::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAMover::getMenuText()
|
const char * AAMover::getMenuText()
|
||||||
{
|
{
|
||||||
if(named.size())
|
if(named.size())
|
||||||
return named.c_str();
|
return named.c_str();
|
||||||
return "Move";
|
return "Move";
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* AAMover::getMenuText(TargetChooser * tc)
|
const char * AAMover::getMenuText(TargetChooser * tc)
|
||||||
{
|
{
|
||||||
if(named.size())
|
if(named.size())
|
||||||
return named.c_str();
|
return named.c_str();
|
||||||
@@ -2871,7 +2864,7 @@ int AARandomMover::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AARandomMover::getMenuText()
|
const char * AARandomMover::getMenuText()
|
||||||
{
|
{
|
||||||
return "Dig";
|
return "Dig";
|
||||||
}
|
}
|
||||||
@@ -2909,7 +2902,7 @@ int AARandomDiscarder::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AARandomDiscarder::getMenuText()
|
const char * AARandomDiscarder::getMenuText()
|
||||||
{
|
{
|
||||||
return "Discard Random";
|
return "Discard Random";
|
||||||
}
|
}
|
||||||
@@ -2936,7 +2929,7 @@ int AAShuffle::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAShuffle::getMenuText()
|
const char * AAShuffle::getMenuText()
|
||||||
{
|
{
|
||||||
return "Shuffle";
|
return "Shuffle";
|
||||||
}
|
}
|
||||||
@@ -3034,7 +3027,7 @@ int AARemoveMana::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AARemoveMana::getMenuText()
|
const char * AARemoveMana::getMenuText()
|
||||||
{
|
{
|
||||||
if (mRemoveAll && !mManaDesc)
|
if (mRemoveAll && !mManaDesc)
|
||||||
return "Empty Manapool";
|
return "Empty Manapool";
|
||||||
@@ -3073,7 +3066,7 @@ int AATapper::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AATapper::getMenuText()
|
const char * AATapper::getMenuText()
|
||||||
{
|
{
|
||||||
return "Tap";
|
return "Tap";
|
||||||
}
|
}
|
||||||
@@ -3103,7 +3096,7 @@ int AAUntapper::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAUntapper::getMenuText()
|
const char * AAUntapper::getMenuText()
|
||||||
{
|
{
|
||||||
return "Untap";
|
return "Untap";
|
||||||
}
|
}
|
||||||
@@ -3184,7 +3177,7 @@ int AAWinGame::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAWinGame::getMenuText()
|
const char * AAWinGame::getMenuText()
|
||||||
{
|
{
|
||||||
return "Win Game";
|
return "Win Game";
|
||||||
}
|
}
|
||||||
@@ -3275,7 +3268,7 @@ int IfThenAbility::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string IfThenAbility::getMenuText()
|
const char * IfThenAbility::getMenuText()
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -3327,7 +3320,7 @@ void MayAbility::Update(float dt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const string MayAbility::getMenuText()
|
const char * MayAbility::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -3463,7 +3456,7 @@ int MenuAbility::resolve()
|
|||||||
return a->addToGame();
|
return a->addToGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string MenuAbility::getMenuText()
|
const char * MenuAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if((abilities.size() > 1 && must)||(abilities.size() > 2 && !must))
|
if((abilities.size() > 1 && must)||(abilities.size() > 2 && !must))
|
||||||
return "choose one";
|
return "choose one";
|
||||||
@@ -3664,7 +3657,7 @@ int MultiAbility::destroy()
|
|||||||
return ActivatedAbility::destroy();
|
return ActivatedAbility::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string MultiAbility::getMenuText()
|
const char * MultiAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if (abilities.size() && abilities[0])
|
if (abilities.size() && abilities[0])
|
||||||
return abilities[0]->getMenuText();
|
return abilities[0]->getMenuText();
|
||||||
@@ -3703,7 +3696,7 @@ GenericTargetAbility::GenericTargetAbility(GameObserver* observer, string newNam
|
|||||||
counters = 0;
|
counters = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericTargetAbility::getMenuText()
|
const char * GenericTargetAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if (!ability)
|
if (!ability)
|
||||||
return "Error";
|
return "Error";
|
||||||
@@ -4256,7 +4249,7 @@ int ATransformer::destroy()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string ATransformer::getMenuText()
|
const char * ATransformer::getMenuText()
|
||||||
{
|
{
|
||||||
if(menutext.size())
|
if(menutext.size())
|
||||||
return menutext.c_str();
|
return menutext.c_str();
|
||||||
@@ -4289,7 +4282,7 @@ int ATransformerInstant::resolve()
|
|||||||
wrapper->addToGame();
|
wrapper->addToGame();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
const string ATransformerInstant::getMenuText()
|
const char * ATransformerInstant::getMenuText()
|
||||||
{
|
{
|
||||||
if(menu.size())
|
if(menu.size())
|
||||||
return menu.c_str();
|
return menu.c_str();
|
||||||
@@ -4323,7 +4316,7 @@ int PTInstant::resolve()
|
|||||||
wrapper->addToGame();
|
wrapper->addToGame();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
const string PTInstant::getMenuText()
|
const char * PTInstant::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -4354,7 +4347,7 @@ int ASwapPTUEOT::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string ASwapPTUEOT::getMenuText()
|
const char * ASwapPTUEOT::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -4424,7 +4417,7 @@ int AAExchangeLife::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAExchangeLife::getMenuText()
|
const char * AAExchangeLife::getMenuText()
|
||||||
{
|
{
|
||||||
return "Exchange life";
|
return "Exchange life";
|
||||||
}
|
}
|
||||||
@@ -4662,7 +4655,7 @@ int APreventDamageTypesUEOT::destroy()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string APreventDamageTypesUEOT::getMenuText()
|
const char * APreventDamageTypesUEOT::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -4732,7 +4725,7 @@ int AVanishing::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AVanishing::getMenuText()
|
const char * AVanishing::getMenuText()
|
||||||
{
|
{
|
||||||
if(counterName.find("fade") != string::npos)
|
if(counterName.find("fade") != string::npos)
|
||||||
return "Fading";
|
return "Fading";
|
||||||
@@ -4828,7 +4821,7 @@ int AUpkeep::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AUpkeep::getMenuText()
|
const char * AUpkeep::getMenuText()
|
||||||
{
|
{
|
||||||
return "Upkeep";
|
return "Upkeep";
|
||||||
}
|
}
|
||||||
@@ -4928,7 +4921,7 @@ int APhaseAction::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string APhaseAction::getMenuText()
|
const char * APhaseAction::getMenuText()
|
||||||
{
|
{
|
||||||
if(psMenuText.size())
|
if(psMenuText.size())
|
||||||
return psMenuText.c_str();
|
return psMenuText.c_str();
|
||||||
@@ -4965,7 +4958,7 @@ int APhaseActionGeneric::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string APhaseActionGeneric::getMenuText()
|
const char * APhaseActionGeneric::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -5123,7 +5116,7 @@ int ABlink::resolve()
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
const string ABlink::getMenuText()
|
const char * ABlink::getMenuText()
|
||||||
{
|
{
|
||||||
return "Blink";
|
return "Blink";
|
||||||
}
|
}
|
||||||
@@ -5154,7 +5147,7 @@ int ABlinkGeneric::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string ABlinkGeneric::getMenuText()
|
const char * ABlinkGeneric::getMenuText()
|
||||||
{
|
{
|
||||||
return "Blink";
|
return "Blink";
|
||||||
}
|
}
|
||||||
@@ -5323,7 +5316,6 @@ int AEquip::unequip()
|
|||||||
{
|
{
|
||||||
MTGAbility * a = currentAbilities[i];
|
MTGAbility * a = currentAbilities[i];
|
||||||
if (dynamic_cast<AEquip *> (a) || dynamic_cast<ATeach *> (a) || dynamic_cast<AAConnect *> (a)
|
if (dynamic_cast<AEquip *> (a) || dynamic_cast<ATeach *> (a) || dynamic_cast<AAConnect *> (a)
|
||||||
|| dynamic_cast<AANewTarget *> (AbilityFactory::getCoreAbility(a))
|
|
||||||
|| (a->aType == MTGAbility::STANDARD_TOKENCREATOR && a->oneShot))
|
|| (a->aType == MTGAbility::STANDARD_TOKENCREATOR && a->oneShot))
|
||||||
{
|
{
|
||||||
SAFE_DELETE(a);
|
SAFE_DELETE(a);
|
||||||
@@ -5377,7 +5369,7 @@ int AEquip::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AEquip::getMenuText()
|
const char * AEquip::getMenuText()
|
||||||
{
|
{
|
||||||
if (isAttach)
|
if (isAttach)
|
||||||
return "Attach";
|
return "Attach";
|
||||||
@@ -5419,8 +5411,8 @@ AACastCard::AACastCard(GameObserver* observer, int _id, MTGCardInstance * _sourc
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AACastCard::Update(float dt)
|
void AACastCard::Update(float dt)
|
||||||
{
|
{
|
||||||
MTGAbility::Update(dt);
|
MTGAbility::Update(dt);
|
||||||
if (processed)
|
if (processed)
|
||||||
return;
|
return;
|
||||||
@@ -5468,10 +5460,10 @@ void AACastCard::Update(float dt)
|
|||||||
resolveSpell();
|
resolveSpell();
|
||||||
this->forceDestroy = 1;
|
this->forceDestroy = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int AACastCard::isReactingToTargetClick(Targetable * card){return 0;}
|
int AACastCard::isReactingToTargetClick(Targetable * card){return 0;}
|
||||||
int AACastCard::reactToTargetClick(Targetable * object)
|
int AACastCard::reactToTargetClick(Targetable * object)
|
||||||
{
|
{
|
||||||
if (MTGCardInstance * cObject = dynamic_cast<MTGCardInstance *>(object))
|
if (MTGCardInstance * cObject = dynamic_cast<MTGCardInstance *>(object))
|
||||||
return reactToClick(cObject);
|
return reactToClick(cObject);
|
||||||
|
|
||||||
@@ -5486,16 +5478,16 @@ int AACastCard::reactToTargetClick(Targetable * object)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGCardInstance * AACastCard::makeCard()
|
MTGCardInstance * AACastCard::makeCard()
|
||||||
{
|
{
|
||||||
MTGCardInstance * card = NULL;
|
MTGCardInstance * card = NULL;
|
||||||
MTGCard * cardData = MTGCollection()->getCardByName(cardNamed);
|
MTGCard * cardData = MTGCollection()->getCardByName(cardNamed);
|
||||||
card = NEW MTGCardInstance(cardData, source->controller()->game);
|
card = NEW MTGCardInstance(cardData, source->controller()->game);
|
||||||
source->controller()->game->temp->addCard(card);
|
source->controller()->game->temp->addCard(card);
|
||||||
return card;
|
return card;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AACastCard::resolveSpell()
|
int AACastCard::resolveSpell()
|
||||||
{
|
{
|
||||||
@@ -5591,7 +5583,7 @@ int AACastCard::resolveSpell()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AACastCard::getMenuText()
|
const char * AACastCard::getMenuText()
|
||||||
{
|
{
|
||||||
if(nameThis.size())
|
if(nameThis.size())
|
||||||
return nameThis.c_str();
|
return nameThis.c_str();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
#include "Counters.h"
|
#include "Counters.h"
|
||||||
#include "ModRules.h"
|
#include "ModRules.h"
|
||||||
#include "CardDescriptor.h"
|
#include "CardDescriptor.h"
|
||||||
#include "GameApp.h"
|
|
||||||
|
|
||||||
const float CardGui::Width = 28.0;
|
const float CardGui::Width = 28.0;
|
||||||
const float CardGui::Height = 40.0;
|
const float CardGui::Height = 40.0;
|
||||||
@@ -111,17 +110,17 @@ void CardGui::Update(float dt)
|
|||||||
PlayGuiObject::Update(dt);
|
PlayGuiObject::Update(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardGui::DrawCard(const Pos& inPosition, int inMode, bool thumb)
|
void CardGui::DrawCard(const Pos& inPosition, int inMode)
|
||||||
{
|
{
|
||||||
DrawCard(card, inPosition, inMode, thumb);
|
DrawCard(card, inPosition, inMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardGui::DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode, bool thumb)
|
void CardGui::DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode)
|
||||||
{
|
{
|
||||||
switch (inMode)
|
switch (inMode)
|
||||||
{
|
{
|
||||||
case DrawMode::kNormal:
|
case DrawMode::kNormal:
|
||||||
RenderBig(inCard, inPosition, thumb);
|
RenderBig(inCard, inPosition);
|
||||||
break;
|
break;
|
||||||
case DrawMode::kText:
|
case DrawMode::kText:
|
||||||
AlternateRender(inCard, inPosition);
|
AlternateRender(inCard, inPosition);
|
||||||
@@ -958,7 +957,7 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Renders a big card on screen. Defaults to the "alternate" rendering if no image is found
|
//Renders a big card on screen. Defaults to the "alternate" rendering if no image is found
|
||||||
void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb)
|
void CardGui::RenderBig(MTGCard* card, const Pos& pos)
|
||||||
{
|
{
|
||||||
JRenderer * renderer = JRenderer::GetInstance();
|
JRenderer * renderer = JRenderer::GetInstance();
|
||||||
//GameObserver * game = GameObserver::GetInstance();
|
//GameObserver * game = GameObserver::GetInstance();
|
||||||
@@ -967,8 +966,7 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb)
|
|||||||
//i want this but ai targets cards so quickly that it can crash the game.
|
//i want this but ai targets cards so quickly that it can crash the game.
|
||||||
float x = pos.actX;
|
float x = pos.actX;
|
||||||
|
|
||||||
JQuadPtr quad = thumb ? WResourceManager::Instance()->RetrieveCard(card, RETRIEVE_THUMB)
|
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||||
: WResourceManager::Instance()->RetrieveCard(card);
|
|
||||||
MTGCardInstance * kcard = dynamic_cast<MTGCardInstance*>(card);
|
MTGCardInstance * kcard = dynamic_cast<MTGCardInstance*>(card);
|
||||||
if(kcard && !kcard->isToken && kcard->name != kcard->model->data->name)
|
if(kcard && !kcard->isToken && kcard->name != kcard->model->data->name)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "MTGDeck.h"
|
#include "MTGDeck.h"
|
||||||
#include "Subtypes.h"
|
#include "Subtypes.h"
|
||||||
#include "Translate.h"
|
#include "Translate.h"
|
||||||
#include "GameApp.h"
|
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
@@ -85,9 +84,6 @@ int CardPrimitive::init()
|
|||||||
alias = 0;
|
alias = 0;
|
||||||
restrictions = NULL;
|
restrictions = NULL;
|
||||||
dredgeAmount = 0;
|
dredgeAmount = 0;
|
||||||
|
|
||||||
power = 0;
|
|
||||||
toughness = 0;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,9 +225,6 @@ void CardPrimitive::setSubtype(const string& value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// "Artifact Creature" should have "Creature" as parent type
|
|
||||||
if (parentType == Subtypes::TYPE_ARTIFACT && isCreature())
|
|
||||||
parentType = Subtypes::TYPE_CREATURE;
|
|
||||||
|
|
||||||
int id = MTGAllCards::add(value, parentType);
|
int id = MTGAllCards::add(value, parentType);
|
||||||
addType(id);
|
addType(id);
|
||||||
@@ -351,12 +344,18 @@ bool CardPrimitive::hasSubtype(int _subtype)
|
|||||||
return hasType(_subtype);
|
return hasType(_subtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CardPrimitive::hasType(const string& _type)
|
bool CardPrimitive::hasType(const char * _type)
|
||||||
{
|
{
|
||||||
int id = MTGAllCards::findType(_type);
|
int id = MTGAllCards::findType(_type);
|
||||||
return hasType(id);
|
return hasType(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CardPrimitive::hasSubtype(const char * _subtype)
|
||||||
|
{
|
||||||
|
int id = MTGAllCards::findType(_subtype);
|
||||||
|
return hasType(id);
|
||||||
|
}
|
||||||
|
|
||||||
bool CardPrimitive::hasSubtype(const string& _subtype)
|
bool CardPrimitive::hasSubtype(const string& _subtype)
|
||||||
{
|
{
|
||||||
int id = MTGAllCards::findType(_subtype);
|
int id = MTGAllCards::findType(_subtype);
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ CardSelector::SelectorMemory::SelectorMemory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
CardSelector::CardSelector(GameObserver *observer, DuelLayers* duel) :
|
CardSelector::CardSelector(GameObserver *observer, DuelLayers* duel) :
|
||||||
CardSelectorBase(observer), active(NULL), duel(duel), limitor(NULL), bigpos(300, 145, 1.0, 0.0, 220), timer(0.0f)
|
CardSelectorBase(observer), active(NULL), duel(duel), limitor(NULL), bigpos(300, 145, 1.0, 0.0, 220)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,166 +0,0 @@
|
|||||||
#include "CarouselDeckView.h"
|
|
||||||
|
|
||||||
const float CarouselDeckView::max_scale = 0.96f;
|
|
||||||
const float CarouselDeckView::x_center = 180;
|
|
||||||
const float CarouselDeckView::right_border = SCREEN_WIDTH + 180;
|
|
||||||
const float CarouselDeckView::slide_animation_duration = 0.6f;
|
|
||||||
|
|
||||||
CarouselDeckView::CarouselDeckView() :
|
|
||||||
DeckView(10), mScrollOffset(0), mSlideOffset(0), mScrollEasing(mScrollOffset), mSlideEasing(mSlideOffset)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CarouselDeckView::~CarouselDeckView()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void CarouselDeckView::UpdateViewState(float dt)
|
|
||||||
{
|
|
||||||
if(!mScrollEasing.finished())
|
|
||||||
{
|
|
||||||
mScrollEasing.update(dt);
|
|
||||||
|
|
||||||
if(mScrollOffset <= -1.0f)
|
|
||||||
{
|
|
||||||
SwitchPosition(-1);
|
|
||||||
mScrollEasing.translate(1.0f);
|
|
||||||
}
|
|
||||||
else if(mScrollOffset >= 1.0f)
|
|
||||||
{
|
|
||||||
SwitchPosition(1);
|
|
||||||
mScrollEasing.translate(-1.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
dirtyCardPos = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!mSlideEasing.finished())
|
|
||||||
{
|
|
||||||
mSlideEasing.update(dt);
|
|
||||||
|
|
||||||
if(mSlideOffset < mSlideEasing.start_value)
|
|
||||||
{
|
|
||||||
//going downwards
|
|
||||||
if(mSlideOffset < -1.0f)
|
|
||||||
{
|
|
||||||
mSlideEasing.translate(2.0f);
|
|
||||||
SwitchFilter(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(mSlideOffset > mSlideEasing.start_value)
|
|
||||||
{
|
|
||||||
//upwards
|
|
||||||
if(mSlideOffset > 1.0f)
|
|
||||||
{
|
|
||||||
mSlideEasing.translate(-2.0f);
|
|
||||||
SwitchFilter(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dirtyCardPos = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CarouselDeckView::UpdateCardPosition(CardRep &rep, int index)
|
|
||||||
{
|
|
||||||
float rotation = mScrollOffset + 8 - index;
|
|
||||||
|
|
||||||
rep.x = x_center + cos((rotation) * M_PI / 12) * (right_border - x_center);
|
|
||||||
rep.scale = max_scale / 1.12f * cos((rep.x - x_center) * 1.5f / (right_border - x_center)) + 0.2f * max_scale * cos(
|
|
||||||
cos((rep.x - x_center) * 0.15f / (right_border - x_center)));
|
|
||||||
rep.y = (SCREEN_HEIGHT_F) / 2.0f + SCREEN_HEIGHT_F * mSlideOffset * (rep.scale + 0.2f);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CarouselDeckView::Reset()
|
|
||||||
{
|
|
||||||
mSlideEasing.finish();
|
|
||||||
mScrollEasing.finish();
|
|
||||||
|
|
||||||
DeckView::Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CarouselDeckView::Render()
|
|
||||||
{
|
|
||||||
// even though we want to draw the cards in a particular z order for layering, we want to prefetch them
|
|
||||||
// in a different order, ie the center card should appear first, then the adjacent ones
|
|
||||||
if (WResourceManager::Instance()->IsThreaded())
|
|
||||||
{
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(0).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(3).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(4).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(2).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(5).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(1).card);
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(6).card);
|
|
||||||
}
|
|
||||||
|
|
||||||
renderCard(6);
|
|
||||||
renderCard(5);
|
|
||||||
renderCard(4);
|
|
||||||
renderCard(0);
|
|
||||||
|
|
||||||
if (mScrollOffset < 0.5 && mScrollOffset > -0.5)
|
|
||||||
{
|
|
||||||
renderCard(1);
|
|
||||||
renderCard(3);
|
|
||||||
renderCard(2);
|
|
||||||
}
|
|
||||||
else if (mScrollOffset < -0.5)
|
|
||||||
{
|
|
||||||
renderCard(3);
|
|
||||||
renderCard(2);
|
|
||||||
renderCard(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
renderCard(1);
|
|
||||||
renderCard(2);
|
|
||||||
renderCard(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MTGCard * CarouselDeckView::Click(int x, int y)
|
|
||||||
{
|
|
||||||
int n = getCardIndexNextTo(x, y);
|
|
||||||
last_user_activity = 0;
|
|
||||||
|
|
||||||
//clicked active card, and no animation is running
|
|
||||||
if(mSlideEasing.finished() && mScrollEasing.finished())
|
|
||||||
{
|
|
||||||
if(n == 2)
|
|
||||||
{
|
|
||||||
return getActiveCard();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
changePosition(n - 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CarouselDeckView::changePosition(int offset)
|
|
||||||
{
|
|
||||||
mScrollEasing.start((float)offset, (float)(0.3f*abs(offset)));
|
|
||||||
|
|
||||||
last_user_activity = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CarouselDeckView::changeFilter(int offset)
|
|
||||||
{
|
|
||||||
if(offset < 0)
|
|
||||||
{
|
|
||||||
mSlideEasing.start(-2.0f, slide_animation_duration);
|
|
||||||
}
|
|
||||||
else if(offset > 0)
|
|
||||||
{
|
|
||||||
mSlideEasing.start(2.0f, slide_animation_duration);
|
|
||||||
}
|
|
||||||
last_user_activity = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
MTGCard *CarouselDeckView::getActiveCard()
|
|
||||||
{
|
|
||||||
return getCardRep(2).card;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include "Translate.h"
|
#include "Translate.h"
|
||||||
|
|
||||||
DeckEditorMenu::DeckEditorMenu(int id, JGuiListener* listener, int fontId, const string& _title, DeckDataWrapper *_selectedDeck, StatsWrapper *stats) :
|
DeckEditorMenu::DeckEditorMenu(int id, JGuiListener* listener, int fontId, const char * _title, DeckDataWrapper *_selectedDeck, StatsWrapper *stats) :
|
||||||
DeckMenu(id, listener, fontId, _title), selectedDeck(_selectedDeck), stw(stats)
|
DeckMenu(id, listener, fontId, _title), selectedDeck(_selectedDeck), stw(stats)
|
||||||
{
|
{
|
||||||
backgroundName = "DeckEditorMenuBackdrop";
|
backgroundName = "DeckEditorMenuBackdrop";
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ void DeckMenu::Update(float dt)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckMenu::Add(int id, const string& text, const string& desc, bool forceFocus, DeckMetaData * deckMetaData)
|
void DeckMenu::Add(int id, const char * text, string desc, bool forceFocus, DeckMetaData * deckMetaData)
|
||||||
{
|
{
|
||||||
DeckMenuItem * menuItem = NEW DeckMenuItem(this, id, fontId, text, 0,
|
DeckMenuItem * menuItem = NEW DeckMenuItem(this, id, fontId, text, 0,
|
||||||
mY + DeckMenuConst::kVerticalMargin + mCount * DeckMenuConst::kLineHeight, (mCount == 0), mAutoTranslate, deckMetaData);
|
mY + DeckMenuConst::kVerticalMargin + mCount * DeckMenuConst::kLineHeight, (mCount == 0), mAutoTranslate, deckMetaData);
|
||||||
|
|||||||
@@ -287,8 +287,8 @@ void StatsWrapper::initValues()
|
|||||||
countCreatures = countSpells = countInstants = countEnchantments = countSorceries = countArtifacts = 0;
|
countCreatures = countSpells = countInstants = countEnchantments = countSorceries = countArtifacts = 0;
|
||||||
|
|
||||||
//this works only with 0.0f on floats
|
//this works only with 0.0f on floats
|
||||||
memset(noLandsProbInTurn, (int)0.0f, sizeof(float) * Constants::STATS_FOR_TURNS);
|
memset(noLandsProbInTurn, 0.0f, sizeof(float) * Constants::STATS_FOR_TURNS);
|
||||||
memset(noCreaturesProbInTurn, (int)0.0f, sizeof(float) * Constants::STATS_FOR_TURNS);
|
memset(noCreaturesProbInTurn, 0.0f, sizeof(float) * Constants::STATS_FOR_TURNS);
|
||||||
|
|
||||||
memset(countCardsPerCost, 0, sizeof(int) * (Constants::STATS_MAX_MANA_COST + 1));
|
memset(countCardsPerCost, 0, sizeof(int) * (Constants::STATS_MAX_MANA_COST + 1));
|
||||||
memset(countCreaturesPerCost, 0, sizeof(int) * (Constants::STATS_MAX_MANA_COST + 1));
|
memset(countCreaturesPerCost, 0, sizeof(int) * (Constants::STATS_MAX_MANA_COST + 1));
|
||||||
@@ -587,7 +587,7 @@ void StatsWrapper::updateStats(DeckDataWrapper *myDeck)
|
|||||||
|
|
||||||
// This should probably be cached in DeckDataWrapper
|
// This should probably be cached in DeckDataWrapper
|
||||||
// or at least be calculated for all common types in one go
|
// or at least be calculated for all common types in one go
|
||||||
int StatsWrapper::countCardsByType(const string& _type, DeckDataWrapper * myDeck)
|
int StatsWrapper::countCardsByType(const char * _type, DeckDataWrapper * myDeck)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
for (int i = 0; i < myDeck->Size(true); i++)
|
for (int i = 0; i < myDeck->Size(true); i++)
|
||||||
|
|||||||
@@ -1,244 +0,0 @@
|
|||||||
#include "DeckView.h"
|
|
||||||
|
|
||||||
#include "GameOptions.h"
|
|
||||||
#include "CardGui.h"
|
|
||||||
|
|
||||||
const float DeckView::no_user_activity_show_card_delay = 0.1f;
|
|
||||||
|
|
||||||
DeckView::DeckView(int numberOfCards)
|
|
||||||
: dirtyFilters(true), dirtyCardPos(true), last_user_activity(0.0f), mFilter(0), mCurrentDeck(NULL)
|
|
||||||
{
|
|
||||||
mCards.resize(numberOfCards);
|
|
||||||
}
|
|
||||||
|
|
||||||
DeckView::~DeckView()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::Reset()
|
|
||||||
{
|
|
||||||
dirtyFilters = true;
|
|
||||||
dirtyCardPos = true;
|
|
||||||
last_user_activity = 0;
|
|
||||||
mFilter = 0;
|
|
||||||
mCurrentDeck = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::Update(float dt)
|
|
||||||
{
|
|
||||||
last_user_activity += dt;
|
|
||||||
|
|
||||||
UpdateViewState(dt);
|
|
||||||
|
|
||||||
if(dirtyCardPos)
|
|
||||||
{
|
|
||||||
for(unsigned int i = 0; i < mCards.size(); ++i)
|
|
||||||
{
|
|
||||||
UpdateCardPosition(mCards[i], i);
|
|
||||||
}
|
|
||||||
dirtyCardPos = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DeckView::ButtonPressed(Buttons button)
|
|
||||||
{
|
|
||||||
switch(button)
|
|
||||||
{
|
|
||||||
case JGE_BTN_LEFT:
|
|
||||||
changePosition(-1);
|
|
||||||
last_user_activity = 0;
|
|
||||||
break;
|
|
||||||
case JGE_BTN_RIGHT:
|
|
||||||
changePosition(1);
|
|
||||||
last_user_activity = 0;
|
|
||||||
break;
|
|
||||||
case JGE_BTN_UP:
|
|
||||||
changeFilter(1);
|
|
||||||
last_user_activity = 0;
|
|
||||||
break;
|
|
||||||
case JGE_BTN_DOWN:
|
|
||||||
changeFilter(-1);
|
|
||||||
last_user_activity = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::SetDeck(DeckDataWrapper *toShow)
|
|
||||||
{
|
|
||||||
mCurrentDeck = toShow;
|
|
||||||
dirtyCardPos = true;
|
|
||||||
dirtyFilters = true;
|
|
||||||
reloadIndexes();
|
|
||||||
}
|
|
||||||
|
|
||||||
DeckDataWrapper* DeckView::deck()
|
|
||||||
{
|
|
||||||
return mCurrentDeck;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::SwitchFilter(int delta)
|
|
||||||
{
|
|
||||||
unsigned int FilterCount = Constants::NB_Colors + 1;
|
|
||||||
mFilter = (FilterCount + mFilter + delta) % FilterCount;
|
|
||||||
dirtyFilters = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::SwitchPosition(int delta)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < delta; ++i)
|
|
||||||
{
|
|
||||||
mCurrentDeck->next();
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i > delta; --i)
|
|
||||||
{
|
|
||||||
mCurrentDeck->prev();
|
|
||||||
}
|
|
||||||
|
|
||||||
reloadIndexes();
|
|
||||||
}
|
|
||||||
|
|
||||||
int DeckView::filter()
|
|
||||||
{
|
|
||||||
return mFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::reloadIndexes()
|
|
||||||
{
|
|
||||||
if(mCurrentDeck != NULL)
|
|
||||||
{
|
|
||||||
for (unsigned int i = 0; i < mCards.size(); i++)
|
|
||||||
{
|
|
||||||
mCards[i].card = deck()->getCard(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DeckView::CardRep& DeckView::getCardRep(unsigned int index)
|
|
||||||
{
|
|
||||||
return mCards[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckView::renderCard(int index, int alpha, bool asThumbnail)
|
|
||||||
{
|
|
||||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
|
|
||||||
|
|
||||||
const CardRep& cardPosition = getCardRep(index);
|
|
||||||
|
|
||||||
if (!cardPosition.card) return;
|
|
||||||
|
|
||||||
if (!WResourceManager::Instance()->IsThreaded())
|
|
||||||
{
|
|
||||||
JQuadPtr backQuad = WResourceManager::Instance()->GetQuad(kGenericCardID);
|
|
||||||
JQuadPtr quad;
|
|
||||||
|
|
||||||
int cacheError = CACHE_ERROR_NONE;
|
|
||||||
|
|
||||||
if (!options[Options::DISABLECARDS].number)
|
|
||||||
{
|
|
||||||
quad = WResourceManager::Instance()->RetrieveCard(cardPosition.card, RETRIEVE_EXISTING);
|
|
||||||
cacheError = WResourceManager::Instance()->RetrieveError();
|
|
||||||
if (!quad.get() && cacheError != CACHE_ERROR_404)
|
|
||||||
{
|
|
||||||
if (last_user_activity > (abs(2 - index) + 1) * no_user_activity_show_card_delay)
|
|
||||||
quad = WResourceManager::Instance()->RetrieveCard(cardPosition.card);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
quad = backQuad;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (quad.get())
|
|
||||||
{
|
|
||||||
if (quad == backQuad)
|
|
||||||
{
|
|
||||||
quad->SetColor(ARGB(255,255,255,255));
|
|
||||||
float _scale = cardPosition.scale * (285 / quad->mHeight);
|
|
||||||
JRenderer::GetInstance()->RenderQuad(quad.get(), cardPosition.x, cardPosition.y, 0.0f, _scale, _scale);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Pos pos = Pos(cardPosition.x, cardPosition.y, cardPosition.scale * 285 / 250, 0.0, 255);
|
|
||||||
CardGui::DrawCard(cardPosition.card, pos, asThumbnail);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Pos pos = Pos(cardPosition.x, cardPosition.y, cardPosition.scale * 285 / 250, 0.0, 255);
|
|
||||||
CardGui::DrawCard(cardPosition.card, pos, DrawMode::kText, asThumbnail);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int mode = !options[Options::DISABLECARDS].number ? DrawMode::kNormal : DrawMode::kText;
|
|
||||||
|
|
||||||
Pos pos = Pos(cardPosition.x, cardPosition.y, cardPosition.scale * 285 / 250, 0.0, 255);
|
|
||||||
CardGui::DrawCard(cardPosition.card, pos, mode, asThumbnail);
|
|
||||||
}
|
|
||||||
|
|
||||||
int quadAlpha = alpha;
|
|
||||||
if (!deck()->count(cardPosition.card)) quadAlpha /= 2;
|
|
||||||
quadAlpha = 255 - quadAlpha;
|
|
||||||
if (quadAlpha > 0)
|
|
||||||
{
|
|
||||||
JRenderer::GetInstance()->FillRect(cardPosition.x - cardPosition.scale * 100.0f, cardPosition.y - cardPosition.scale * 142.5f, cardPosition.scale * 200.0f, cardPosition.scale * 285.0f,
|
|
||||||
ARGB(quadAlpha,0,0,0));
|
|
||||||
}
|
|
||||||
if (last_user_activity < 3)
|
|
||||||
{
|
|
||||||
int fontAlpha = alpha;
|
|
||||||
float qtY = cardPosition.y - 135 * cardPosition.scale;
|
|
||||||
float qtX = cardPosition.x + 40 * cardPosition.scale;
|
|
||||||
char buffer[4096];
|
|
||||||
sprintf(buffer, "x%i", deck()->count(cardPosition.card));
|
|
||||||
WFont * font = mFont;
|
|
||||||
font->SetColor(ARGB(fontAlpha/2,0,0,0));
|
|
||||||
JRenderer::GetInstance()->FillRect(qtX, qtY, font->GetStringWidth(buffer) + 6, 16, ARGB(fontAlpha/2,0,0,0));
|
|
||||||
font->DrawString(buffer, qtX + 4, qtY + 4);
|
|
||||||
font->SetColor(ARGB(fontAlpha,255,255,255));
|
|
||||||
font->DrawString(buffer, qtX + 2, qtY + 2);
|
|
||||||
font->SetColor(ARGB(255,255,255,255));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int DeckView::getCardIndexNextTo(int x, int y)
|
|
||||||
{
|
|
||||||
int bestCardIndex = -1;
|
|
||||||
float bestDistance = 0;
|
|
||||||
|
|
||||||
for(unsigned int i = 0; i < mCards.size(); i++)
|
|
||||||
{
|
|
||||||
const CardRep& cardPosition = getCardRep(i);
|
|
||||||
|
|
||||||
float dx = (x - cardPosition.x);
|
|
||||||
float dy = (y - cardPosition.y);
|
|
||||||
float dist = dx*dx + dy*dy;
|
|
||||||
|
|
||||||
if(dist < bestDistance || bestCardIndex == -1)
|
|
||||||
{
|
|
||||||
bestDistance = dist;
|
|
||||||
bestCardIndex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return bestCardIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DeckView::getPosition()
|
|
||||||
{
|
|
||||||
if(!mCurrentDeck)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int total = mCurrentDeck->Size();
|
|
||||||
int currentPos = (mCurrentDeck->getOffset() + 3) % total;
|
|
||||||
|
|
||||||
while (currentPos <= 0) currentPos += total;
|
|
||||||
return currentPos;
|
|
||||||
}
|
|
||||||
@@ -110,12 +110,12 @@ GamePhase GameObserver::getCurrentGamePhase()
|
|||||||
return mCurrentGamePhase;
|
return mCurrentGamePhase;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& GameObserver::getCurrentGamePhaseName()
|
const char* GameObserver::getCurrentGamePhaseName()
|
||||||
{
|
{
|
||||||
return phaseRing->phaseName(mCurrentGamePhase);
|
return phaseRing->phaseName(mCurrentGamePhase);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& GameObserver::getNextGamePhaseName()
|
const char* GameObserver::getNextGamePhaseName()
|
||||||
{
|
{
|
||||||
return phaseRing->phaseName((mCurrentGamePhase + 1) % MTG_PHASE_CLEANUP);
|
return phaseRing->phaseName((mCurrentGamePhase + 1) % MTG_PHASE_CLEANUP);
|
||||||
}
|
}
|
||||||
@@ -1042,7 +1042,7 @@ void GameObserver::Affinity()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
reduce = card->controller()->game->battlefield->countByType(type);
|
reduce = card->controller()->game->battlefield->countByType(type.c_str());
|
||||||
}
|
}
|
||||||
for(int i = 0; i < reduce;i++)
|
for(int i = 0; i < reduce;i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -818,9 +818,9 @@ void GameSettings::createUsersFirstDeck(int setId)
|
|||||||
mCollection->addRandomCards(10, 0, 0, Constants::RARITY_L, "Island");
|
mCollection->addRandomCards(10, 0, 0, Constants::RARITY_L, "Island");
|
||||||
|
|
||||||
//Starter Deck
|
//Starter Deck
|
||||||
mCollection->addRandomCards(3, sets, 1, Constants::RARITY_R);
|
mCollection->addRandomCards(3, sets, 1, Constants::RARITY_R, NULL);
|
||||||
mCollection->addRandomCards(9, sets, 1, Constants::RARITY_U);
|
mCollection->addRandomCards(9, sets, 1, Constants::RARITY_U, NULL);
|
||||||
mCollection->addRandomCards(48, sets, 1, Constants::RARITY_C);
|
mCollection->addRandomCards(48, sets, 1, Constants::RARITY_C, NULL);
|
||||||
|
|
||||||
//Boosters
|
//Boosters
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
@@ -956,7 +956,7 @@ OptionMaxGrade::OptionMaxGrade()
|
|||||||
|
|
||||||
// MARK: OptionASkipPhase
|
// MARK: OptionASkipPhase
|
||||||
|
|
||||||
OptionASkipPhase OptionASkipPhase::mDef = OptionASkipPhase();
|
OptionASkipPhase OptionASkipPhase::mDef;
|
||||||
OptionASkipPhase::OptionASkipPhase()
|
OptionASkipPhase::OptionASkipPhase()
|
||||||
{
|
{
|
||||||
mDef.values.push_back(EnumDefinition::assoc(Constants::ASKIP_NONE, "Off"));
|
mDef.values.push_back(EnumDefinition::assoc(Constants::ASKIP_NONE, "Off"));
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ void GameState::renderDeckMenu(DeckMenu * _menu, const vector<DeckMetaData *>& d
|
|||||||
// deck sorting routines
|
// deck sorting routines
|
||||||
bool sortByName(DeckMetaData * d1, DeckMetaData * d2)
|
bool sortByName(DeckMetaData * d1, DeckMetaData * d2)
|
||||||
{
|
{
|
||||||
return d1->getName() < d2->getName();
|
return strcmp(d1->getName().c_str(), d2->getName().c_str()) < 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,6 @@
|
|||||||
#include "Translate.h"
|
#include "Translate.h"
|
||||||
#include "Rules.h"
|
#include "Rules.h"
|
||||||
#include "ModRules.h"
|
#include "ModRules.h"
|
||||||
#include "GameApp.h"
|
|
||||||
|
|
||||||
#ifdef TESTSUITE
|
#ifdef TESTSUITE
|
||||||
#include "TestSuiteAI.h"
|
#include "TestSuiteAI.h"
|
||||||
|
|||||||
@@ -259,8 +259,8 @@ void GameStateShop::cancelCard(int controlId)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
price = price - (rnd * price) / 100;
|
price = price - (rnd * price) / 100;
|
||||||
if (price < pricelist->getPrice(c)) //filters have a tendancy to increase the price instead of lowering it!
|
if (price < pricelist->getPrice(c->getMTGId())) //filters have a tendancy to increase the price instead of lowering it!
|
||||||
pricelist->setPrice(c, price);
|
pricelist->setPrice(c->getMTGId(), price);
|
||||||
//Prices do not immediately go down when you ignore something.
|
//Prices do not immediately go down when you ignore something.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -768,16 +768,20 @@ void GameStateShop::Render()
|
|||||||
r->FillRect(0, SCREEN_HEIGHT - 17, SCREEN_WIDTH, 17, ARGB(128,0,0,0));
|
r->FillRect(0, SCREEN_HEIGHT - 17, SCREEN_WIDTH, 17, ARGB(128,0,0,0));
|
||||||
std::ostringstream stream;
|
std::ostringstream stream;
|
||||||
stream << kCreditsString << playerdata->credits;
|
stream << kCreditsString << playerdata->credits;
|
||||||
mFont->SetColor(ARGB(255,255,255,255));
|
|
||||||
mFont->DrawString(stream.str(), 5, SCREEN_HEIGHT - 14);
|
|
||||||
|
|
||||||
#ifndef TOUCH_ENABLED
|
#ifndef TOUCH_ENABLED
|
||||||
float len = 4 + mFont->GetStringWidth(kOtherCardsString.c_str());
|
float len = 4 + mFont->GetStringWidth(kOtherCardsString.c_str());
|
||||||
r->RenderQuad(pspIcons[6].get(), SCREEN_WIDTH - len - 0.5 - 10, SCREEN_HEIGHT - 8, 0, kPspIconScaleFactor, kPspIconScaleFactor);
|
r->RenderQuad(pspIcons[6].get(), SCREEN_WIDTH - len - 0.5 - 10, SCREEN_HEIGHT - 8, 0, kPspIconScaleFactor, kPspIconScaleFactor);
|
||||||
mFont->DrawString(kOtherCardsString, SCREEN_WIDTH - len, SCREEN_HEIGHT - 14);
|
mFont->DrawString(kOtherCardsString, SCREEN_WIDTH - len, SCREEN_HEIGHT - 14);
|
||||||
#else
|
#else
|
||||||
|
#ifdef IOS
|
||||||
|
mFont->SetScale(1.2f); // for iOS devices.
|
||||||
|
#endif
|
||||||
|
|
||||||
enableButtons();
|
enableButtons();
|
||||||
#endif
|
#endif
|
||||||
|
mFont->SetColor(ARGB(255,255,255,255));
|
||||||
|
mFont->DrawString(stream.str(), 5, SCREEN_HEIGHT - 14);
|
||||||
|
|
||||||
mFont->SetColor(ARGB(255,255,255,0));
|
mFont->SetColor(ARGB(255,255,255,0));
|
||||||
mFont->DrawString(descPurchase(bigSync.getPos()).c_str(), SCREEN_WIDTH / 2, SCREEN_HEIGHT - 14, JGETEXT_CENTER);
|
mFont->DrawString(descPurchase(bigSync.getPos()).c_str(), SCREEN_WIDTH / 2, SCREEN_HEIGHT - 14, JGETEXT_CENTER);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void GameStateStory::Update(float dt)
|
|||||||
if (!menu && mEngine->GetButtonClick(JGE_BTN_MENU))
|
if (!menu && mEngine->GetButtonClick(JGE_BTN_MENU))
|
||||||
{
|
{
|
||||||
menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 100, this, Fonts::MENU_FONT, SCREEN_WIDTH / 2 - 100, 25);
|
menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 100, this, Fonts::MENU_FONT, SCREEN_WIDTH / 2 - 100, 25);
|
||||||
menu->Add(0, string("Back to main menu"));
|
menu->Add(0, "Back to main menu");
|
||||||
menu->Add(kCancelMenuID, "Cancel");
|
menu->Add(kCancelMenuID, "Cancel");
|
||||||
}
|
}
|
||||||
if (menu)
|
if (menu)
|
||||||
|
|||||||
@@ -1,199 +0,0 @@
|
|||||||
#include "GridDeckView.h"
|
|
||||||
|
|
||||||
const float GridDeckView::scroll_animation_duration = 0.3f;
|
|
||||||
const float GridDeckView::slide_animation_duration = 0.6f;
|
|
||||||
const float GridDeckView::card_scale_small = 0.48f;
|
|
||||||
const float GridDeckView::card_scale_big = 0.7f;
|
|
||||||
|
|
||||||
GridDeckView::GridDeckView()
|
|
||||||
: DeckView(16), mCols(8), mRows(2), mScrollOffset(0), mSlideOffset(0),
|
|
||||||
mScrollEasing(mScrollOffset), mSlideEasing(mSlideOffset), mCurrentSelection(-1)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
GridDeckView::~GridDeckView()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::Reset()
|
|
||||||
{
|
|
||||||
mSlideEasing.finish();
|
|
||||||
mScrollEasing.finish();
|
|
||||||
|
|
||||||
mCurrentSelection = 0;
|
|
||||||
|
|
||||||
DeckView::Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::UpdateViewState(float dt)
|
|
||||||
{
|
|
||||||
if(!mScrollEasing.finished())
|
|
||||||
{
|
|
||||||
mScrollEasing.update(dt);
|
|
||||||
|
|
||||||
if(mScrollOffset <= -1.0f)
|
|
||||||
{
|
|
||||||
SwitchPosition(2);
|
|
||||||
mScrollEasing.translate(1.0f);
|
|
||||||
mCurrentSelection = (mCurrentSelection >= 6) ? mCurrentSelection - 2 : -1;
|
|
||||||
}
|
|
||||||
else if(mScrollOffset >= 1.0f)
|
|
||||||
{
|
|
||||||
SwitchPosition(-2);
|
|
||||||
mScrollEasing.translate(-1.0f);
|
|
||||||
mCurrentSelection = (mCurrentSelection >= 0 && mCurrentSelection < 10) ? mCurrentSelection + 2 : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
dirtyCardPos = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!mSlideEasing.finished())
|
|
||||||
{
|
|
||||||
mSlideEasing.update(dt);
|
|
||||||
|
|
||||||
if(mSlideOffset < -1.0f)
|
|
||||||
{
|
|
||||||
mSlideEasing.translate(2.0f);
|
|
||||||
SwitchFilter(1);
|
|
||||||
}
|
|
||||||
else if(mSlideOffset > 1.0f)
|
|
||||||
{
|
|
||||||
mSlideEasing.translate(-2.0f);
|
|
||||||
SwitchFilter(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
dirtyCardPos = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::UpdateCardPosition(CardRep &rep, int index)
|
|
||||||
{
|
|
||||||
int col = index / mRows;
|
|
||||||
int row = index % mRows;
|
|
||||||
float colWidth = SCREEN_WIDTH_F / (mCols - 3);
|
|
||||||
float rowHeight = SCREEN_HEIGHT_F / mRows;
|
|
||||||
|
|
||||||
rep.x = (col + mScrollOffset) * colWidth - colWidth;
|
|
||||||
rep.y = row * rowHeight + mSlideOffset*SCREEN_HEIGHT + rowHeight/2;
|
|
||||||
|
|
||||||
if(mCurrentSelection == index)
|
|
||||||
{
|
|
||||||
rep.scale = card_scale_big;
|
|
||||||
if(row == 0)
|
|
||||||
{
|
|
||||||
rep.y += rowHeight * (card_scale_big - card_scale_small);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rep.y -= rowHeight * (card_scale_big - card_scale_small);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rep.scale = card_scale_small;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::Render()
|
|
||||||
{
|
|
||||||
int firstVisibleCard = 2;
|
|
||||||
int lastVisibleCard = mCards.size() - 2;
|
|
||||||
|
|
||||||
if(!mScrollEasing.finished())
|
|
||||||
{
|
|
||||||
if(mScrollEasing.delta_value > 0){
|
|
||||||
firstVisibleCard = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lastVisibleCard = mCards.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = firstVisibleCard; i < lastVisibleCard; ++i)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(mCurrentSelection != i)
|
|
||||||
{
|
|
||||||
if (WResourceManager::Instance()->IsThreaded())
|
|
||||||
{
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(i).card, RETRIEVE_THUMB);
|
|
||||||
}
|
|
||||||
renderCard(i, 255, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (WResourceManager::Instance()->IsThreaded())
|
|
||||||
{
|
|
||||||
WResourceManager::Instance()->RetrieveCard(getCardRep(i).card);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(2 <= mCurrentSelection && mCurrentSelection < 12)
|
|
||||||
{
|
|
||||||
renderCard(mCurrentSelection, 255, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MTGCard * GridDeckView::Click(int x, int y)
|
|
||||||
{
|
|
||||||
int n = getCardIndexNextTo(x, y);
|
|
||||||
last_user_activity = 0;
|
|
||||||
|
|
||||||
if(mScrollEasing.finished() && mSlideEasing.finished())
|
|
||||||
{ //clicked and no animations running
|
|
||||||
if(n == mCurrentSelection)
|
|
||||||
{
|
|
||||||
return getActiveCard();
|
|
||||||
}
|
|
||||||
else if(n < 4)
|
|
||||||
{
|
|
||||||
changePosition(-1);
|
|
||||||
}
|
|
||||||
else if(n >= 12)
|
|
||||||
{
|
|
||||||
changePosition(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mCurrentSelection = n;
|
|
||||||
dirtyCardPos = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::changePosition(int offset)
|
|
||||||
{
|
|
||||||
mScrollEasing.start(-1.0f * offset, scroll_animation_duration * abs(offset));
|
|
||||||
last_user_activity = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GridDeckView::changeFilter(int offset)
|
|
||||||
{
|
|
||||||
if(offset < 0)
|
|
||||||
{
|
|
||||||
mSlideEasing.start(-2.0f, slide_animation_duration);
|
|
||||||
}
|
|
||||||
else if(offset > 0)
|
|
||||||
{
|
|
||||||
mSlideEasing.start(2.0f, slide_animation_duration);
|
|
||||||
}
|
|
||||||
last_user_activity = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
MTGCard* GridDeckView::getActiveCard()
|
|
||||||
{
|
|
||||||
if(mCurrentSelection >= 0 && mCurrentSelection < int(mCards.size()))
|
|
||||||
{
|
|
||||||
return mCards[mCurrentSelection].card;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "GuiMana.h"
|
#include "GuiMana.h"
|
||||||
#include "OptionItem.h"
|
#include "OptionItem.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "GameApp.h"
|
|
||||||
|
|
||||||
//using std::cout;
|
//using std::cout;
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
|||||||
@@ -1039,12 +1039,6 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
observer->addObserver(NEW MTGMorphCostRule(observer, -1));
|
observer->addObserver(NEW MTGMorphCostRule(observer, -1));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
found = s.find("playfromgraveyardrule");
|
|
||||||
if(found != string::npos)
|
|
||||||
{
|
|
||||||
observer->addObserver(NEW MTGPlayFromGraveyardRule(observer, -1));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
//this rule handles attacking ability during attacker phase
|
//this rule handles attacking ability during attacker phase
|
||||||
found = s.find("attackrule");
|
found = s.find("attackrule");
|
||||||
if(found != string::npos)
|
if(found != string::npos)
|
||||||
@@ -1151,7 +1145,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (StartsWith(s, "chooseacolor ") || StartsWith(s, "chooseatype "))
|
if(strncmp(s.c_str(), "chooseacolor ", strlen("chooseacolor ")) == 0 || strncmp(s.c_str(), "chooseatype ", strlen("chooseatype ")) == 0)
|
||||||
{
|
{
|
||||||
MTGAbility * choose = parseChooseActionAbility(s,card,spell,target,0,id);
|
MTGAbility * choose = parseChooseActionAbility(s,card,spell,target,0,id);
|
||||||
choose = NEW GenericActivatedAbility(observer, "","",id, card,choose,NULL);
|
choose = NEW GenericActivatedAbility(observer, "","",id, card,choose,NULL);
|
||||||
@@ -4374,7 +4368,6 @@ MTGAbility::MTGAbility(GameObserver* observer, int id, MTGCardInstance * card) :
|
|||||||
aType = MTGAbility::UNKNOWN;
|
aType = MTGAbility::UNKNOWN;
|
||||||
mCost = NULL;
|
mCost = NULL;
|
||||||
forceDestroy = 0;
|
forceDestroy = 0;
|
||||||
forcedAlive = 0;
|
|
||||||
oneShot = 0;
|
oneShot = 0;
|
||||||
canBeInterrupted = true;
|
canBeInterrupted = true;
|
||||||
}
|
}
|
||||||
@@ -4388,7 +4381,6 @@ MTGAbility::MTGAbility(GameObserver* observer, int id, MTGCardInstance * _source
|
|||||||
aType = MTGAbility::UNKNOWN;
|
aType = MTGAbility::UNKNOWN;
|
||||||
mCost = NULL;
|
mCost = NULL;
|
||||||
forceDestroy = 0;
|
forceDestroy = 0;
|
||||||
forcedAlive = 0;
|
|
||||||
oneShot = 0;
|
oneShot = 0;
|
||||||
canBeInterrupted = true;
|
canBeInterrupted = true;
|
||||||
}
|
}
|
||||||
@@ -4901,7 +4893,7 @@ int TargetAbility::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string TargetAbility::getMenuText()
|
const char * TargetAbility::getMenuText()
|
||||||
{
|
{
|
||||||
if (ability)
|
if (ability)
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
@@ -5431,7 +5423,7 @@ GenericTriggeredAbility::~GenericTriggeredAbility()
|
|||||||
SAFE_DELETE(destroyCondition);
|
SAFE_DELETE(destroyCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string GenericTriggeredAbility::getMenuText()
|
const char * GenericTriggeredAbility::getMenuText()
|
||||||
{
|
{
|
||||||
return ability->getMenuText();
|
return ability->getMenuText();
|
||||||
}
|
}
|
||||||
@@ -5459,7 +5451,6 @@ AManaProducer::AManaProducer(GameObserver* observer, int id, MTGCardInstance * c
|
|||||||
aType = MTGAbility::MANA_PRODUCER;
|
aType = MTGAbility::MANA_PRODUCER;
|
||||||
setCost(_cost);
|
setCost(_cost);
|
||||||
output = _output;
|
output = _output;
|
||||||
tap = 0;
|
|
||||||
Producing = producing;
|
Producing = producing;
|
||||||
menutext = "";
|
menutext = "";
|
||||||
DoesntEmpty = doesntEmpty;
|
DoesntEmpty = doesntEmpty;
|
||||||
@@ -5525,7 +5516,7 @@ int AManaProducer::reactToClick(MTGCardInstance * _card)
|
|||||||
return ActivatedAbility::activateAbility();
|
return ActivatedAbility::activateAbility();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AManaProducer::getMenuText()
|
const char * AManaProducer::getMenuText()
|
||||||
{
|
{
|
||||||
if (menutext.size())
|
if (menutext.size())
|
||||||
return menutext.c_str();
|
return menutext.c_str();
|
||||||
|
|||||||
@@ -125,7 +125,6 @@ int MTGCardInstance::init()
|
|||||||
|
|
||||||
void MTGCardInstance::initMTGCI()
|
void MTGCardInstance::initMTGCI()
|
||||||
{
|
{
|
||||||
X = 0;
|
|
||||||
sample = "";
|
sample = "";
|
||||||
model = NULL;
|
model = NULL;
|
||||||
isToken = false;
|
isToken = false;
|
||||||
@@ -196,8 +195,6 @@ void MTGCardInstance::initMTGCI()
|
|||||||
lastController = NULL;
|
lastController = NULL;
|
||||||
regenerateTokens = 0;
|
regenerateTokens = 0;
|
||||||
blocked = false;
|
blocked = false;
|
||||||
graveEffects = false;
|
|
||||||
exileEffects = false;
|
|
||||||
currentZone = NULL;
|
currentZone = NULL;
|
||||||
cardsAbilities = vector<MTGAbility *>();
|
cardsAbilities = vector<MTGAbility *>();
|
||||||
data = this; //an MTGCardInstance point to itself for data, allows to update it without killing the underlying database item
|
data = this; //an MTGCardInstance point to itself for data, allows to update it without killing the underlying database item
|
||||||
@@ -257,22 +254,22 @@ void MTGCardInstance::addType(int type)
|
|||||||
SAFE_DELETE(e);
|
SAFE_DELETE(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MTGCardInstance::addType(const string& type_text)
|
void MTGCardInstance::addType(char * type_text)
|
||||||
{
|
{
|
||||||
setSubtype(type_text);
|
setSubtype(type_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MTGCardInstance::setType(const string& type_text)
|
void MTGCardInstance::setType(const char * type_text)
|
||||||
{
|
{
|
||||||
setSubtype(type_text);
|
setSubtype(type_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MTGCardInstance::setSubtype(const string& value)
|
void MTGCardInstance::setSubtype(string value)
|
||||||
{
|
{
|
||||||
int id = MTGAllCards::findType(value);
|
int id = MTGAllCards::findType(value);
|
||||||
addType(id);
|
addType(id);
|
||||||
}
|
}
|
||||||
int MTGCardInstance::removeType(const string& value, int removeAll)
|
int MTGCardInstance::removeType(string value, int removeAll)
|
||||||
{
|
{
|
||||||
int id = MTGAllCards::findType(value);
|
int id = MTGAllCards::findType(value);
|
||||||
return removeType(id, removeAll);
|
return removeType(id, removeAll);
|
||||||
|
|||||||
@@ -47,33 +47,33 @@ static inline int getGrade(int v)
|
|||||||
int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primitive)
|
int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primitive)
|
||||||
{
|
{
|
||||||
if ('#' == s[0]) return 1; // a comment shouldn't be treated as an error condition
|
if ('#' == s[0]) return 1; // a comment shouldn't be treated as an error condition
|
||||||
size_t del_pos = s.find_first_of('=');
|
size_t i = s.find_first_of('=');
|
||||||
if (del_pos == string::npos || 0 == del_pos)
|
if (i == string::npos || 0 == i)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
s[del_pos] = '\0';
|
char* key = const_cast<char*> (s.c_str()); // I know what I'm doing, let me do it
|
||||||
const string key = s.substr(0, del_pos);
|
key[i] = 0;
|
||||||
const string val = s.substr(del_pos + 1);
|
char* val = key + i + 1;
|
||||||
|
|
||||||
switch (key[0])
|
switch (key[0])
|
||||||
{
|
{
|
||||||
case 'a':
|
case 'a':
|
||||||
if (key == "auto")
|
if (0 == strcmp("auto", key))
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
primitive->addMagicText(val);
|
primitive->addMagicText(val);
|
||||||
}
|
}
|
||||||
else if (StartsWith(key, "auto"))
|
else if (0 == strncmp("auto", key, 4))
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
primitive->addMagicText(val, key.substr(4));
|
primitive->addMagicText(val, key + 4);
|
||||||
}
|
}
|
||||||
else if (key == "alias")
|
else if (0 == strcmp("alias", key))
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
primitive->alias = atoi(val.c_str());
|
primitive->alias = atoi(val);
|
||||||
}
|
}
|
||||||
else if (key == "abilities")
|
else if (0 == strcmp("abilities", key))
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
string value = val;
|
string value = val;
|
||||||
@@ -152,12 +152,12 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'g': //grade
|
case 'g': //grade
|
||||||
if (s.size() - del_pos - 1 > 2) currentGrade = getGrade(val[2]);
|
if (s.size() - i - 1 > 2) currentGrade = getGrade(val[2]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'i': //id
|
case 'i': //id
|
||||||
if (!card) card = NEW MTGCard();
|
if (!card) card = NEW MTGCard();
|
||||||
card->setMTGId(atoi(val.c_str()));
|
card->setMTGId(atoi(val));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'k': //kicker
|
case 'k': //kicker
|
||||||
@@ -222,7 +222,7 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
if (key[1] == 'r')
|
if ('r' == key[1])
|
||||||
{ // primitive
|
{ // primitive
|
||||||
if (!card) card = NEW MTGCard();
|
if (!card) card = NEW MTGCard();
|
||||||
map<string, CardPrimitive*>::iterator it = primitives.find(val);
|
map<string, CardPrimitive*>::iterator it = primitives.find(val);
|
||||||
@@ -231,18 +231,18 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
else
|
else
|
||||||
{ //power
|
{ //power
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
primitive->setPower(atoi(val.c_str()));
|
primitive->setPower(atoi(val));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'r': //retrace/rarity//restrictions
|
case 'r': //retrace/rarity//restrictions
|
||||||
if(key[2] == 's' && key[3] == 't')//restrictions
|
if('s' == key[2] && 't' == key[3])//restrictions
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
string value = val;
|
string value = val;
|
||||||
primitive->setRestrictions(value);
|
primitive->setRestrictions(value);
|
||||||
}
|
}
|
||||||
else if (key[1] == 'e' && key[2] == 't')
|
else if ('e' == key[1] && 't' == key[2])
|
||||||
{ //retrace
|
{ //retrace
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
if (ManaCost * cost = primitive->getManaCost())
|
if (ManaCost * cost = primitive->getManaCost())
|
||||||
@@ -279,7 +279,7 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
vector<string> values = split(val.c_str(), ' ');
|
vector<string> values = split(val, ' ');
|
||||||
for (size_t values_i = 0; values_i < values.size(); ++values_i)
|
for (size_t values_i = 0; values_i < values.size(); ++values_i)
|
||||||
primitive->setSubtype(values[values_i]);
|
primitive->setSubtype(values[values_i]);
|
||||||
}
|
}
|
||||||
@@ -288,21 +288,21 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
|
|
||||||
case 't':
|
case 't':
|
||||||
if (!primitive) primitive = NEW CardPrimitive();
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
if (key == "target")
|
if (0 == strcmp("target", key))
|
||||||
{
|
{
|
||||||
string value = val;
|
string value = val;
|
||||||
std::transform(value.begin(), value.end(), value.begin(), ::tolower);
|
std::transform(value.begin(), value.end(), value.begin(), ::tolower);
|
||||||
primitive->spellTargetType = value;
|
primitive->spellTargetType = value;
|
||||||
}
|
}
|
||||||
else if (key == "text")
|
else if (0 == strcmp("text", key))
|
||||||
primitive->setText(val);
|
primitive->setText(val);
|
||||||
else if (key == "type")
|
else if (0 == strcmp("type", key))
|
||||||
{
|
{
|
||||||
vector<string> values = split(val, ' ');
|
vector<string> values = split(val, ' ');
|
||||||
for (size_t values_i = 0; values_i < values.size(); ++values_i)
|
for (size_t values_i = 0; values_i < values.size(); ++values_i)
|
||||||
primitive->setType(values[values_i]);
|
primitive->setType(values[values_i]);
|
||||||
}
|
}
|
||||||
else if (key == "toughness") primitive->setToughness(atoi(val.c_str()));
|
else if (0 == strcmp("toughness", key)) primitive->setToughness(atoi(val));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -317,7 +317,7 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
tempPrimitive = primitive;
|
tempPrimitive = primitive;
|
||||||
tempCard = card;
|
tempCard = card;
|
||||||
|
|
||||||
return del_pos;
|
return i;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,20 +381,10 @@ void MTGAllCards::loadFolder(const string& infolder, const string& filename )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGAllCards::load(const string &config_file)
|
int MTGAllCards::load(const char * config_file, const char * set_name, int)
|
||||||
{
|
|
||||||
return load(config_file, MTGSets::INTERNAL_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MTGAllCards::load(const string& config_file, const string &set_name)
|
|
||||||
{
|
|
||||||
const int set_id = setlist.Add(set_name);
|
|
||||||
return load(config_file, set_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MTGAllCards::load(const string &config_file, int set_id)
|
|
||||||
{
|
{
|
||||||
conf_read_mode = 0;
|
conf_read_mode = 0;
|
||||||
|
const int set_id = set_name ? setlist.Add(set_name) : MTGSets::INTERNAL_SET;
|
||||||
MTGSetInfo *si = setlist.getInfo(set_id);
|
MTGSetInfo *si = setlist.getInfo(set_id);
|
||||||
|
|
||||||
int lineNumber = 0;
|
int lineNumber = 0;
|
||||||
@@ -542,16 +532,14 @@ int MTGAllCards::countBySet(int setId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO more efficient way ?
|
//TODO more efficient way ?
|
||||||
int MTGAllCards::countByType(const string &_type)
|
int MTGAllCards::countByType(const char * _type)
|
||||||
{
|
{
|
||||||
int type_id = findType(_type);
|
|
||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
map<int, MTGCard *>::iterator it;
|
map<int, MTGCard *>::iterator it;
|
||||||
for (it = collection.begin(); it != collection.end(); it++)
|
for (it = collection.begin(); it != collection.end(); it++)
|
||||||
{
|
{
|
||||||
MTGCard * c = it->second;
|
MTGCard * c = it->second;
|
||||||
if (c->data->hasType(type_id))
|
if (c->data->hasType(_type))
|
||||||
{
|
{
|
||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
@@ -784,7 +772,7 @@ int MTGDeck::totalPrice()
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGDeck::MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_only, int difficultyRating)
|
MTGDeck::MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only,int difficultyRating)
|
||||||
{
|
{
|
||||||
total_cards = 0;
|
total_cards = 0;
|
||||||
database = _allcards;
|
database = _allcards;
|
||||||
@@ -891,7 +879,7 @@ MTGCard * MTGDeck::getCardById(int mtgId)
|
|||||||
return database->getCardById(mtgId);
|
return database->getCardById(mtgId);
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, const string &_subtype, int * colors, int nbcolors)
|
int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, const char * _subtype, int * colors, int nbcolors)
|
||||||
{
|
{
|
||||||
if (howmany <= 0) return 1;
|
if (howmany <= 0) return 1;
|
||||||
|
|
||||||
@@ -912,8 +900,8 @@ int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, c
|
|||||||
int collectionTotal = database->totalCards();
|
int collectionTotal = database->totalCards();
|
||||||
if (!collectionTotal) return 0;
|
if (!collectionTotal) return 0;
|
||||||
|
|
||||||
string subtype;
|
char subtype[4096];
|
||||||
if (_subtype.size()) subtype = _subtype;
|
if (_subtype) sprintf(subtype, "%s", _subtype);
|
||||||
|
|
||||||
vector<int> subcollection;
|
vector<int> subcollection;
|
||||||
int subtotal = 0;
|
int subtotal = 0;
|
||||||
@@ -923,7 +911,7 @@ int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, c
|
|||||||
int r = card->getRarity();
|
int r = card->getRarity();
|
||||||
if (r != Constants::RARITY_T && (rarity == -1 || r == rarity) && // remove tokens
|
if (r != Constants::RARITY_T && (rarity == -1 || r == rarity) && // remove tokens
|
||||||
card->setId != MTGSets::INTERNAL_SET && //remove cards that are defined in primitives. Those are workarounds (usually tokens) and should only be used internally
|
card->setId != MTGSets::INTERNAL_SET && //remove cards that are defined in primitives. Those are workarounds (usually tokens) and should only be used internally
|
||||||
(!_subtype.size() || card->data->hasSubtype(subtype)))
|
(!_subtype || card->data->hasSubtype(subtype)))
|
||||||
{
|
{
|
||||||
int ok = 0;
|
int ok = 0;
|
||||||
|
|
||||||
@@ -1277,7 +1265,7 @@ MTGSetInfo* MTGSets::randomSet(int blockId, int atleast)
|
|||||||
|
|
||||||
int blockSize(int blockId);
|
int blockSize(int blockId);
|
||||||
|
|
||||||
int MTGSets::Add(const string& name)
|
int MTGSets::Add(const char * name)
|
||||||
{
|
{
|
||||||
int setid = findSet(name);
|
int setid = findSet(name);
|
||||||
if (setid != -1) return setid;
|
if (setid != -1) return setid;
|
||||||
@@ -1356,7 +1344,7 @@ MTGSetInfo::~MTGSetInfo()
|
|||||||
SAFE_DELETE(mPack);
|
SAFE_DELETE(mPack);
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGSetInfo::MTGSetInfo(const string& _id)
|
MTGSetInfo::MTGSetInfo(string _id)
|
||||||
{
|
{
|
||||||
string whitespaces(" \t\f\v\n\r");
|
string whitespaces(" \t\f\v\n\r");
|
||||||
id = _id;
|
id = _id;
|
||||||
|
|||||||
@@ -131,8 +131,7 @@ const char* Constants::MTGBasicAbilities[] = {
|
|||||||
"poisondamager",//deals damage to players as poison counters.
|
"poisondamager",//deals damage to players as poison counters.
|
||||||
"soulbond",
|
"soulbond",
|
||||||
"lure",
|
"lure",
|
||||||
"nolegend",
|
"nolegend"
|
||||||
"canplayfromgraveyard"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||||
@@ -163,7 +162,7 @@ int Constants::GetColorStringIndex(string mtgColor)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string Constants::MTGPhaseNames[] =
|
const char* Constants::MTGPhaseNames[] =
|
||||||
{
|
{
|
||||||
"---",
|
"---",
|
||||||
"Untap",
|
"Untap",
|
||||||
|
|||||||
@@ -529,7 +529,7 @@ size_t MTGGameZone::getIndex(MTGCardInstance * card)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned int MTGGameZone::countByType(const string &value)
|
unsigned int MTGGameZone::countByType(const char * value)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
int subTypeId = MTGAllCards::findType(value);
|
int subTypeId = MTGAllCards::findType(value);
|
||||||
@@ -539,7 +539,7 @@ unsigned int MTGGameZone::countByType(const string &value)
|
|||||||
{
|
{
|
||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
else if(value == "token" && cards[i]->isToken)
|
else if(strcmp(value, "token") == 0 && cards[i]->isToken)
|
||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ void MTGPacks::loadAll()
|
|||||||
sprintf(myFilename, "packs/%s",relative.c_str());
|
sprintf(myFilename, "packs/%s",relative.c_str());
|
||||||
if (relative[0] == '.')
|
if (relative[0] == '.')
|
||||||
continue;
|
continue;
|
||||||
if (relative == "default_booster.txt")
|
if (!strcmp(relative.c_str(), "default_booster.txt"))
|
||||||
continue;
|
continue;
|
||||||
MTGPack * p = NEW MTGPack(myFilename);
|
MTGPack * p = NEW MTGPack(myFilename);
|
||||||
if (!p->isValid())
|
if (!p->isValid())
|
||||||
|
|||||||
@@ -273,7 +273,6 @@ MTGEventBonus * MTGEventBonus::clone() const
|
|||||||
{
|
{
|
||||||
return NEW MTGEventBonus(*this);
|
return NEW MTGEventBonus(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGPutInPlayRule::MTGPutInPlayRule(GameObserver* observer, int _id) :
|
MTGPutInPlayRule::MTGPutInPlayRule(GameObserver* observer, int _id) :
|
||||||
PermanentAbility(observer, _id)
|
PermanentAbility(observer, _id)
|
||||||
{
|
{
|
||||||
@@ -717,6 +716,7 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alter
|
|||||||
copy->alternateCostPaid[alternateCostType] = 1;
|
copy->alternateCostPaid[alternateCostType] = 1;
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
SAFE_DELETE(spell);
|
SAFE_DELETE(spell);
|
||||||
|
game->mLayers->stackLayer()->addSpell(copy, NULL, NULL, alternateCostType, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -997,9 +997,9 @@ int MTGSuspendRule::reactToClick(MTGCardInstance * card)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string MTGSuspendRule::getMenuText()
|
const char * MTGSuspendRule::getMenuText()
|
||||||
{
|
{
|
||||||
return suspendmenu;
|
return suspendmenu.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
ostream& MTGSuspendRule::toString(ostream& out) const
|
ostream& MTGSuspendRule::toString(ostream& out) const
|
||||||
@@ -1140,49 +1140,8 @@ MTGMorphCostRule * MTGMorphCostRule::clone() const
|
|||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
MTGPlayFromGraveyardRule::MTGPlayFromGraveyardRule(GameObserver* observer, int _id) :
|
|
||||||
MTGAlternativeCostRule(observer, _id)
|
|
||||||
{
|
|
||||||
aType = MTGAbility::PUT_INTO_PLAY;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MTGPlayFromGraveyardRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
|
||||||
{
|
|
||||||
Player * player = game->currentlyActing();
|
|
||||||
ManaCost * cost = card->getManaCost();
|
|
||||||
|
|
||||||
if (!player->game->graveyard->hasCard(card))
|
|
||||||
return 0;
|
|
||||||
if (!card->has(Constants::CANPLAYFROMGRAVEYARD))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return MTGAlternativeCostRule::isReactingToClick(card, mana, cost);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MTGPlayFromGraveyardRule::reactToClick(MTGCardInstance * card)
|
|
||||||
{
|
|
||||||
if (!isReactingToClick(card))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
ManaCost * cost = card->getManaCost();
|
|
||||||
|
|
||||||
card->paymenttype = MTGAbility::PUT_INTO_PLAY;
|
|
||||||
|
|
||||||
return MTGAlternativeCostRule::reactToClick(card, cost, ManaCost::MANA_PAID);
|
|
||||||
}
|
|
||||||
|
|
||||||
ostream& MTGPlayFromGraveyardRule::toString(ostream& out) const
|
|
||||||
{
|
|
||||||
out << "MTGPlayFromGraveyardRule ::: (";
|
|
||||||
return MTGAbility::toString(out) << ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
MTGPlayFromGraveyardRule * MTGPlayFromGraveyardRule::clone() const
|
|
||||||
{
|
|
||||||
return NEW MTGPlayFromGraveyardRule(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
bool MTGAttackRule::select(Target* t)
|
bool MTGAttackRule::select(Target* t)
|
||||||
{
|
{
|
||||||
@@ -1374,9 +1333,9 @@ int AAPlaneswalkerAttacked::resolve()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AAPlaneswalkerAttacked::getMenuText()
|
const char* AAPlaneswalkerAttacked::getMenuText()
|
||||||
{
|
{
|
||||||
return menuText;
|
return menuText.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
AAPlaneswalkerAttacked * AAPlaneswalkerAttacked::clone() const
|
AAPlaneswalkerAttacked * AAPlaneswalkerAttacked::clone() const
|
||||||
@@ -1638,9 +1597,9 @@ int MTGBlockRule::reactToClick(MTGCardInstance * card)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string MTGBlockRule::getMenuText()
|
const char * MTGBlockRule::getMenuText()
|
||||||
{
|
{
|
||||||
return blockmenu;
|
return blockmenu.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
ostream& MTGBlockRule::toString(ostream& out) const
|
ostream& MTGBlockRule::toString(ostream& out) const
|
||||||
|
|||||||
@@ -25,23 +25,23 @@ bool ModRules::load(string filename)
|
|||||||
TiXmlElement* element = node->ToElement();
|
TiXmlElement* element = node->ToElement();
|
||||||
if (element != NULL)
|
if (element != NULL)
|
||||||
{
|
{
|
||||||
if (element->ValueStr() == "menu")
|
if (strcmp(element->Value(), "menu") == 0)
|
||||||
{
|
{
|
||||||
menu.parse(element);
|
menu.parse(element);
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "general")
|
else if (strcmp(element->Value(), "general") == 0)
|
||||||
{
|
{
|
||||||
general.parse(element);
|
general.parse(element);
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "cards")
|
else if (strcmp(element->Value(), "cards") == 0)
|
||||||
{
|
{
|
||||||
cards.parse(element);
|
cards.parse(element);
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "game")
|
else if (strcmp(element->Value(), "game") == 0)
|
||||||
{
|
{
|
||||||
game.parse(element);
|
game.parse(element);
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "cardgui")
|
else if (strcmp(element->Value(), "cardgui") == 0)
|
||||||
{
|
{
|
||||||
cardgui.parse(element);
|
cardgui.parse(element);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
#include "TranslateKeys.h"
|
#include "TranslateKeys.h"
|
||||||
#include "StyleManager.h"
|
#include "StyleManager.h"
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include "SimpleMenu.h"
|
|
||||||
|
|
||||||
//OptionItem
|
//OptionItem
|
||||||
OptionItem::OptionItem(int _id, string _displayValue) :
|
OptionItem::OptionItem(int _id, string _displayValue) :
|
||||||
|
|||||||
@@ -142,10 +142,9 @@ bool PhaseRing::extraDamagePhase(int id)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& PhaseRing::phaseName(int id)
|
const char * PhaseRing::phaseName(int id)
|
||||||
{
|
{
|
||||||
static const string combatPhase2("Combat Damage (2)");
|
if (extraDamagePhase(id)) return "Combat Damage (2)";
|
||||||
if (extraDamagePhase(id)) return combatPhase2;
|
|
||||||
return Constants::MTGPhaseNames[id];
|
return Constants::MTGPhaseNames[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,12 +47,12 @@ int PriceList::save()
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int PriceList::getPrice(MTGCard * card)
|
int PriceList::getPrice(int cardId)
|
||||||
{
|
{
|
||||||
map<int, int>::iterator it = prices.find(card->getId());
|
map<int, int>::iterator it = prices.find(cardId);
|
||||||
if (it != prices.end()) return (*it).second;
|
if (it != prices.end()) return (*it).second;
|
||||||
|
|
||||||
char rarity = card->getRarity();
|
char rarity = collection->getCardById(cardId)->getRarity();
|
||||||
switch (rarity)
|
switch (rarity)
|
||||||
{
|
{
|
||||||
case Constants::RARITY_M:
|
case Constants::RARITY_M:
|
||||||
@@ -77,11 +77,7 @@ int PriceList::getPrice(MTGCard * card)
|
|||||||
return Constants::PRICE_1C;
|
return Constants::PRICE_1C;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
int PriceList::getPrice(int cardId)
|
|
||||||
{
|
|
||||||
return getPrice(collection->getCardById(cardId));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int PriceList::setPrice(int cardId, int price)
|
int PriceList::setPrice(int cardId, int price)
|
||||||
@@ -89,23 +85,10 @@ int PriceList::setPrice(int cardId, int price)
|
|||||||
prices[cardId] = price;
|
prices[cardId] = price;
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PriceList::setPrice(MTGCard * card, int price)
|
|
||||||
{
|
|
||||||
prices[card->getId()] = price;
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
int PriceList::getSellPrice(int cardid)
|
int PriceList::getSellPrice(int cardid)
|
||||||
{
|
{
|
||||||
return getPrice(collection->getCardById(cardid));
|
return getPrice(cardid);
|
||||||
}
|
}
|
||||||
|
|
||||||
int PriceList::getSellPrice(MTGCard *card)
|
|
||||||
{
|
|
||||||
return getPrice(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
float PriceList::difficultyScalar(float price, int cardid)
|
float PriceList::difficultyScalar(float price, int cardid)
|
||||||
{
|
{
|
||||||
float badluck = (float) (abs(cardid + randomKey) % 201) / 100; //Float between 0 and 2.
|
float badluck = (float) (abs(cardid + randomKey) % 201) / 100; //Float between 0 and 2.
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "AIMomirPlayer.h"
|
#include "AIMomirPlayer.h"
|
||||||
|
|
||||||
#include "GameApp.h"
|
|
||||||
#include "MTGGameZones.h"
|
#include "MTGGameZones.h"
|
||||||
#include "MTGAbility.h"
|
#include "MTGAbility.h"
|
||||||
#include "AllAbilities.h"
|
#include "AllAbilities.h"
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ void SimpleMenu::Update(float dt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimpleMenu::Add(int id, const string& text, string desc, bool forceFocus)
|
void SimpleMenu::Add(int id, const char * text, string desc, bool forceFocus)
|
||||||
{
|
{
|
||||||
SimpleMenuItem * smi = NEW SimpleMenuItem(this, id, fontId, text, 0, mY + SimpleMenuConst::kVerticalMargin + mCount * SimpleMenuConst::kLineHeight,
|
SimpleMenuItem * smi = NEW SimpleMenuItem(this, id, fontId, text, 0, mY + SimpleMenuConst::kVerticalMargin + mCount * SimpleMenuConst::kLineHeight,
|
||||||
(mCount == 0), autoTranslate);
|
(mCount == 0), autoTranslate);
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
#include "PlayerData.h"
|
#include "PlayerData.h"
|
||||||
#include "MTGDeck.h"
|
#include "MTGDeck.h"
|
||||||
#include "WFont.h"
|
#include "WFont.h"
|
||||||
#include "GameApp.h"
|
|
||||||
#include <JFileSystem.h>
|
#include <JFileSystem.h>
|
||||||
|
|
||||||
#define LINE_SPACE 2
|
#define LINE_SPACE 2
|
||||||
@@ -334,15 +333,15 @@ StoryDuel::StoryDuel(TiXmlElement* root, StoryFlow * mParent) :
|
|||||||
if (element)
|
if (element)
|
||||||
{
|
{
|
||||||
const char* textC = element->GetText();
|
const char* textC = element->GetText();
|
||||||
if (element->ValueStr() == "onwin")
|
if (strcmp(element->Value(), "onwin") == 0)
|
||||||
{
|
{
|
||||||
onWin = textC;
|
onWin = textC;
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "onlose")
|
else if (strcmp(element->Value(), "onlose") == 0)
|
||||||
{
|
{
|
||||||
onLose = textC;
|
onLose = textC;
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "bg")
|
else if (strcmp(element->Value(), "bg") == 0)
|
||||||
{
|
{
|
||||||
string text = textC;
|
string text = textC;
|
||||||
bg = string("campaigns/").append(mParent->folder).append("/").append(text);
|
bg = string("campaigns/").append(mParent->folder).append("/").append(text);
|
||||||
@@ -397,10 +396,10 @@ int StoryPage::loadElement(TiXmlElement* element)
|
|||||||
if (!element) return 0;
|
if (!element) return 0;
|
||||||
const char* textC = element->GetText();
|
const char* textC = element->GetText();
|
||||||
string text = textC;
|
string text = textC;
|
||||||
if (element->ValueStr() == "music")
|
if (strcmp(element->Value(), "music") == 0)
|
||||||
{
|
{
|
||||||
musicFile = string("campaigns/").append(mParent->folder).append("/").append(text);
|
musicFile = string("campaigns/").append(mParent->folder).append("/").append(text);
|
||||||
if (!FileExists(musicFile)) musicFile = text;
|
if (!fileExists(musicFile.c_str())) musicFile = text;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -435,15 +434,15 @@ StoryDialog::StoryDialog(TiXmlElement* root, StoryFlow * mParent) :
|
|||||||
string sFont = safeAttribute(element, "font");
|
string sFont = safeAttribute(element, "font");
|
||||||
int font = atoi(sFont.c_str());
|
int font = atoi(sFont.c_str());
|
||||||
|
|
||||||
if (element->ValueStr() == "text")
|
if (strcmp(element->Value(), "text") == 0)
|
||||||
{
|
{
|
||||||
graphics.push_back(NEW StoryText(text, x, y, align, font));
|
graphics.push_back(NEW StoryText(text, x, y, align, font));
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "title")
|
else if (strcmp(element->Value(), "title") == 0)
|
||||||
{
|
{
|
||||||
graphics.push_back(NEW StoryText(text, x, y, "center", Fonts::MENU_FONT));
|
graphics.push_back(NEW StoryText(text, x, y, "center", Fonts::MENU_FONT));
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "img")
|
else if (strcmp(element->Value(), "img") == 0)
|
||||||
{
|
{
|
||||||
//special case to force center
|
//special case to force center
|
||||||
if (sX.compare("") == 0)
|
if (sX.compare("") == 0)
|
||||||
@@ -453,7 +452,7 @@ StoryDialog::StoryDialog(TiXmlElement* root, StoryFlow * mParent) :
|
|||||||
string img = string("campaigns/").append(mParent->folder).append("/").append(text);
|
string img = string("campaigns/").append(mParent->folder).append("/").append(text);
|
||||||
graphics.push_back(NEW StoryImage(img, x, y));
|
graphics.push_back(NEW StoryImage(img, x, y));
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "answer")
|
else if (strcmp(element->Value(), "answer") == 0)
|
||||||
{
|
{
|
||||||
string id = element->Attribute("goto");
|
string id = element->Attribute("goto");
|
||||||
if (!align.size()) align = "center";
|
if (!align.size()) align = "center";
|
||||||
@@ -462,7 +461,7 @@ StoryDialog::StoryDialog(TiXmlElement* root, StoryFlow * mParent) :
|
|||||||
graphics.push_back(sc);
|
graphics.push_back(sc);
|
||||||
Add(sc);
|
Add(sc);
|
||||||
}
|
}
|
||||||
else if (element->ValueStr() == "reward")
|
else if (strcmp(element->Value(), "reward") == 0)
|
||||||
{
|
{
|
||||||
string type = safeAttribute(element, "type");
|
string type = safeAttribute(element, "type");
|
||||||
string value = safeAttribute(element, "value");
|
string value = safeAttribute(element, "value");
|
||||||
@@ -554,7 +553,7 @@ StoryPage * StoryFlow::loadPage(TiXmlElement* element)
|
|||||||
if (!typeNode) return NULL;
|
if (!typeNode) return NULL;
|
||||||
StoryPage * result = NULL;
|
StoryPage * result = NULL;
|
||||||
const char* type = typeNode->ToElement()->GetText();
|
const char* type = typeNode->ToElement()->GetText();
|
||||||
if (string("duel") == type)
|
if (strcmp(type, "duel") == 0)
|
||||||
{
|
{
|
||||||
result = NEW StoryDuel(element, this);
|
result = NEW StoryDuel(element, this);
|
||||||
}
|
}
|
||||||
@@ -616,7 +615,7 @@ bool StoryFlow::parse(string path)
|
|||||||
TiXmlElement* element = node->ToElement();
|
TiXmlElement* element = node->ToElement();
|
||||||
if (element != NULL)
|
if (element != NULL)
|
||||||
{
|
{
|
||||||
if (element->ValueStr() == "page")
|
if (strcmp(element->Value(), "page") == 0)
|
||||||
{
|
{
|
||||||
string id = element->Attribute("id");
|
string id = element->Attribute("id");
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ void StyleManager::killRules()
|
|||||||
styles.clear();
|
styles.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
StyleManager::StyleManager(): topRule(0), topSize(0), playerSrc(0)
|
StyleManager::StyleManager()
|
||||||
{
|
{
|
||||||
loadRules();
|
loadRules();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ int Subtypes::add(string value, unsigned int parentType)
|
|||||||
}
|
}
|
||||||
if (isSubType(subtype) && (parentType == TYPE_CREATURE))
|
if (isSubType(subtype) && (parentType == TYPE_CREATURE))
|
||||||
{
|
{
|
||||||
if (value != "forest" && value != "Forest")
|
if(value != "forest" && value != "Forest")//http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=136196 one creature with a land subtype exist, but the card has special ruling.
|
||||||
//http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=136196
|
|
||||||
//one creature with a land subtype exist, but the card has special ruling.
|
|
||||||
subtypesCreature.push_back(value);
|
subtypesCreature.push_back(value);
|
||||||
}
|
}
|
||||||
return subtype;
|
return subtype;
|
||||||
@@ -117,7 +115,8 @@ void Subtypes::sortSubTypes()
|
|||||||
|
|
||||||
const vector<string>& Subtypes::getCreatureValuesById()
|
const vector<string>& Subtypes::getCreatureValuesById()
|
||||||
{
|
{
|
||||||
sortSubTypes();
|
sort(subtypesCreature.begin(),subtypesCreature.end());
|
||||||
|
subtypesCreature.erase(unique(subtypesCreature.begin(),subtypesCreature.end()),subtypesCreature.end());
|
||||||
return subtypesCreature;
|
return subtypesCreature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -350,8 +350,8 @@ void TestSuiteGame::assertGame()
|
|||||||
if (observer->getCurrentGamePhase() != endState.phase)
|
if (observer->getCurrentGamePhase() != endState.phase)
|
||||||
{
|
{
|
||||||
sprintf(result, "<span class=\"error\">==phase problem. Expected [ %s ](%i), got [ %s ](%i)==</span><br />",
|
sprintf(result, "<span class=\"error\">==phase problem. Expected [ %s ](%i), got [ %s ](%i)==</span><br />",
|
||||||
Constants::MTGPhaseNames[endState.phase].c_str(),endState.phase,
|
Constants::MTGPhaseNames[endState.phase],endState.phase,
|
||||||
Constants::MTGPhaseNames[observer->getCurrentGamePhase()].c_str(), observer->getCurrentGamePhase());
|
Constants::MTGPhaseNames[observer->getCurrentGamePhase()], observer->getCurrentGamePhase());
|
||||||
Log(result);
|
Log(result);
|
||||||
error++;
|
error++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,6 @@
|
|||||||
#include "Subtypes.h"
|
#include "Subtypes.h"
|
||||||
#include "TranslateKeys.h"
|
#include "TranslateKeys.h"
|
||||||
#include <hge/hgedistort.h>
|
#include <hge/hgedistort.h>
|
||||||
#include "SimpleMenu.h"
|
|
||||||
#include "Pos.h"
|
|
||||||
#include "CardGui.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Provides an interface to retrieve some standardized colors. The idea here is that a child of WGuiBase
|
Provides an interface to retrieve some standardized colors. The idea here is that a child of WGuiBase
|
||||||
|
|||||||
@@ -399,13 +399,3 @@ void ReplaceString(std::string& subject, const std::string& search, const std::s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StartsWith(const std::string& base, const char *start)
|
|
||||||
{
|
|
||||||
return base.compare(0, strlen(start), start) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool StartsWith(const std::string& base, const std::string& start)
|
|
||||||
{
|
|
||||||
return base.compare(0, start.length(), start) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
<PrecompiledHeaderOutputFile>.\Debug/template.pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\Debug/template.pch</PrecompiledHeaderOutputFile>
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
<Optimization>Full</Optimization>
|
<Optimization>Full</Optimization>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;NDEBUG;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBBUGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;NDEBUG;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBBUGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
@@ -261,7 +261,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./include;$(MTGEXTRAS);../../JGE/include;../../JGE/Dependencies/include;../../Boost;../../JGE/Dependencies/SDL/include;../../JGE/src/zipFS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>TIXML_USE_STL; SDL_CONFIG;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>SDL_CONFIG;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
@@ -318,12 +318,6 @@
|
|||||||
<ClCompile Include="src\CardPrimitive.cpp" />
|
<ClCompile Include="src\CardPrimitive.cpp" />
|
||||||
<ClCompile Include="src\CardSelector.cpp" />
|
<ClCompile Include="src\CardSelector.cpp" />
|
||||||
<ClCompile Include="src\CardSelectorSingleton.cpp" />
|
<ClCompile Include="src\CardSelectorSingleton.cpp" />
|
||||||
<ClCompile Include="src\CarouselDeckView.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='HQ Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\Counters.cpp" />
|
<ClCompile Include="src\Counters.cpp" />
|
||||||
<ClCompile Include="src\Credits.cpp" />
|
<ClCompile Include="src\Credits.cpp" />
|
||||||
<ClCompile Include="src\Damage.cpp" />
|
<ClCompile Include="src\Damage.cpp" />
|
||||||
@@ -335,12 +329,6 @@
|
|||||||
<ClCompile Include="src\DeckMenuItem.cpp" />
|
<ClCompile Include="src\DeckMenuItem.cpp" />
|
||||||
<ClCompile Include="src\DeckMetaData.cpp" />
|
<ClCompile Include="src\DeckMetaData.cpp" />
|
||||||
<ClCompile Include="src\DeckStats.cpp" />
|
<ClCompile Include="src\DeckStats.cpp" />
|
||||||
<ClCompile Include="src\DeckView.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='HQ Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\DuelLayers.cpp" />
|
<ClCompile Include="src\DuelLayers.cpp" />
|
||||||
<ClCompile Include="src\ExtraCost.cpp" />
|
<ClCompile Include="src\ExtraCost.cpp" />
|
||||||
<ClCompile Include="src\GameApp.cpp">
|
<ClCompile Include="src\GameApp.cpp">
|
||||||
@@ -374,12 +362,6 @@
|
|||||||
<ClCompile Include="src\GameStateShop.cpp" />
|
<ClCompile Include="src\GameStateShop.cpp" />
|
||||||
<ClCompile Include="src\GameStateStory.cpp" />
|
<ClCompile Include="src\GameStateStory.cpp" />
|
||||||
<ClCompile Include="src\GameStateTransitions.cpp" />
|
<ClCompile Include="src\GameStateTransitions.cpp" />
|
||||||
<ClCompile Include="src\GridDeckView.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='HQ Debug|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\GuiAvatars.cpp" />
|
<ClCompile Include="src\GuiAvatars.cpp" />
|
||||||
<ClCompile Include="src\GuiBackground.cpp" />
|
<ClCompile Include="src\GuiBackground.cpp" />
|
||||||
<ClCompile Include="src\GuiCardsController.cpp" />
|
<ClCompile Include="src\GuiCardsController.cpp" />
|
||||||
@@ -477,7 +459,6 @@
|
|||||||
<ClInclude Include="include\CardPrimitive.h" />
|
<ClInclude Include="include\CardPrimitive.h" />
|
||||||
<ClInclude Include="include\CardSelector.h" />
|
<ClInclude Include="include\CardSelector.h" />
|
||||||
<ClInclude Include="include\CardSelectorSingleton.h" />
|
<ClInclude Include="include\CardSelectorSingleton.h" />
|
||||||
<ClInclude Include="include\CarouselDeckView.h" />
|
|
||||||
<ClInclude Include="include\config.h" />
|
<ClInclude Include="include\config.h" />
|
||||||
<ClInclude Include="include\Counters.h" />
|
<ClInclude Include="include\Counters.h" />
|
||||||
<ClInclude Include="include\Credits.h" />
|
<ClInclude Include="include\Credits.h" />
|
||||||
@@ -490,9 +471,7 @@
|
|||||||
<ClInclude Include="include\DeckMenuItem.h" />
|
<ClInclude Include="include\DeckMenuItem.h" />
|
||||||
<ClInclude Include="include\DeckMetaData.h" />
|
<ClInclude Include="include\DeckMetaData.h" />
|
||||||
<ClInclude Include="include\DeckStats.h" />
|
<ClInclude Include="include\DeckStats.h" />
|
||||||
<ClInclude Include="include\DeckView.h" />
|
|
||||||
<ClInclude Include="include\DuelLayers.h" />
|
<ClInclude Include="include\DuelLayers.h" />
|
||||||
<ClInclude Include="include\Easing.h" />
|
|
||||||
<ClInclude Include="include\Effects.h" />
|
<ClInclude Include="include\Effects.h" />
|
||||||
<ClInclude Include="include\ExtraCost.h" />
|
<ClInclude Include="include\ExtraCost.h" />
|
||||||
<ClInclude Include="include\GameApp.h" />
|
<ClInclude Include="include\GameApp.h" />
|
||||||
@@ -507,7 +486,6 @@
|
|||||||
<ClInclude Include="include\GameStateShop.h" />
|
<ClInclude Include="include\GameStateShop.h" />
|
||||||
<ClInclude Include="include\GameStateStory.h" />
|
<ClInclude Include="include\GameStateStory.h" />
|
||||||
<ClInclude Include="include\GameStateTransitions.h" />
|
<ClInclude Include="include\GameStateTransitions.h" />
|
||||||
<ClInclude Include="include\GridDeckView.h" />
|
|
||||||
<ClInclude Include="include\GuiAvatars.h" />
|
<ClInclude Include="include\GuiAvatars.h" />
|
||||||
<ClInclude Include="include\GuiBackground.h" />
|
<ClInclude Include="include\GuiBackground.h" />
|
||||||
<ClInclude Include="include\GuiCardsController.h" />
|
<ClInclude Include="include\GuiCardsController.h" />
|
||||||
|
|||||||
@@ -331,15 +331,6 @@
|
|||||||
<ClCompile Include="src\NetworkPlayer.cpp">
|
<ClCompile Include="src\NetworkPlayer.cpp">
|
||||||
<Filter>src</Filter>
|
<Filter>src</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\CarouselDeckView.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\DeckView.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\GridDeckView.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="include\ActionElement.h">
|
<ClInclude Include="include\ActionElement.h">
|
||||||
@@ -690,18 +681,6 @@
|
|||||||
<ClInclude Include="include\NetworkPlayer.h">
|
<ClInclude Include="include\NetworkPlayer.h">
|
||||||
<Filter>inc</Filter>
|
<Filter>inc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="include\CarouselDeckView.h">
|
|
||||||
<Filter>inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="include\DeckView.h">
|
|
||||||
<Filter>inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="include\Easing.h">
|
|
||||||
<Filter>inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="include\GridDeckView.h">
|
|
||||||
<Filter>inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Makefile" />
|
<None Include="Makefile" />
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user