diff --git a/JGE/include/JFileSystem.h b/JGE/include/JFileSystem.h index 17a91bd4c..7c4b9c523 100644 --- a/JGE/include/JFileSystem.h +++ b/JGE/include/JFileSystem.h @@ -11,7 +11,7 @@ #ifndef _FILE_SYSTEM_H_ #define _FILE_SYSTEM_H_ -#define JGE_GET_RES(filename) JFileSystem::GetInstance()->GetResourceFile(filename) +#define JGE_GET_RES(filename) JFileSystem::GetInstance()->GetResourceFile(filename) #define JGE_GET_RESPATH() JFileSystem::GetInstance()->GetResourceRoot() #include @@ -19,7 +19,7 @@ #include #include -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined(IOS) #else #include @@ -130,7 +130,7 @@ private: char *mPassword; bool mZipAvailable; void preloadZip(string filename); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined(IOS) FILE *mFile; #else SceUID mFile; diff --git a/JGE/include/JGE.h b/JGE/include/JGE.h index af44a36b4..d86d241df 100644 --- a/JGE/include/JGE.h +++ b/JGE/include/JGE.h @@ -51,7 +51,7 @@ u8 JGEGetAnalogX(); u8 JGEGetAnalogY(); bool JGEToggleFullscreen(); -#if !defined(WIN32) && !defined(LINUX) +#if !defined(WIN32) && !defined(LINUX) && !defined(IOS) #include #include diff --git a/JGE/include/JGui.h b/JGE/include/JGui.h index d5ca0bbad..b6a901721 100644 --- a/JGE/include/JGui.h +++ b/JGE/include/JGui.h @@ -1,124 +1,124 @@ -//------------------------------------------------------------------------------------- -// -// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows. -// -// Licensed under the BSD license, see LICENSE in JGE root for details. -// -// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) -// -//------------------------------------------------------------------------------------- - - -#ifndef _JGUI_H -#define _JGUI_H - -#include -#include "JGE.h" -#include "JSprite.h" - -#define MAX_GUIOBJECT 64 - -#define JGUI_STYLE_LEFTRIGHT 0x01 -#define JGUI_STYLE_UPDOWN 0x02 -#define JGUI_STYLE_WRAPPING 0x04 - -#define JGUI_INITIAL_DELAY 0.4 -#define JGUI_REPEAT_DELAY 0.2 - -const int kCancelMenuID = -1; -const int kInfoMenuID = -200; - -class JGuiListener -{ -public: - virtual ~JGuiListener() - { - } - virtual void ButtonPressed(int controllerId, int controlId) = 0; -}; - -class JGuiObject -{ -protected: - static JGE* mEngine; - -private: - int mId; - -public: - JGuiObject(int id); - virtual ~JGuiObject(); - - virtual void Render() = 0; - virtual std::ostream& toString(std::ostream&) const = 0; - virtual void Update(float dt); - - virtual void Entering(); // when focus is transferring to this obj - virtual bool Leaving(JButton key); // when focus is transferring away from this obj, true to go ahead - virtual bool ButtonPressed(); // action button pressed, return false to ignore - - // Used for mouse support so that the GUI engine can found out which Object was selected - virtual bool getTopLeft(int& top, int& left) - { - return false; - } - ; - - int GetId(); -}; - -class JGuiController -{ -protected: - static JGE* mEngine; - - int mId; - bool mActive; - - JButton mActionButton; - JButton mCancelButton; - int mCurr; - int mStyle; - - JSprite* mCursor; - bool mShowCursor; - int mCursorX; - int mCursorY; - - int mBgX; - int mBgY; - const JTexture* mBg; - PIXEL_TYPE mShadingColor; - Rect* mShadingBg; - - JGuiListener* mListener; - //int mKeyHoldTime; - -public: - vector mObjects; - int mCount; - - JGuiController(int id, JGuiListener* listener); - ~JGuiController(); - - virtual void Render(); - virtual void Update(float dt); - virtual bool CheckUserInput(JButton key); - - void Add(JGuiObject* ctrl); - void RemoveAt(int i); - void Remove(int id); - void Remove(JGuiObject* ctrl); - - void SetActionButton(JButton button); - void SetStyle(int style); - void SetCursor(JSprite* cursor); - - bool IsActive(); - void SetActive(bool flag); - -}; - -ostream& operator<<(ostream &out, const JGuiObject &j); - -#endif +//------------------------------------------------------------------------------------- +// +// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows. +// +// Licensed under the BSD license, see LICENSE in JGE root for details. +// +// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) +// +//------------------------------------------------------------------------------------- + + +#ifndef _JGUI_H +#define _JGUI_H + +#include +#include "JGE.h" +#include "JSprite.h" + +#define MAX_GUIOBJECT 64 + +#define JGUI_STYLE_LEFTRIGHT 0x01 +#define JGUI_STYLE_UPDOWN 0x02 +#define JGUI_STYLE_WRAPPING 0x04 + +#define JGUI_INITIAL_DELAY 0.4 +#define JGUI_REPEAT_DELAY 0.2 + +const int kCancelMenuID = -1; +const int kInfoMenuID = -200; + +class JGuiListener +{ +public: + virtual ~JGuiListener() + { + } + virtual void ButtonPressed(int controllerId, int controlId) = 0; +}; + +class JGuiObject +{ +protected: + static JGE* mEngine; + +private: + int mId; + +public: + JGuiObject(int id); + virtual ~JGuiObject(); + + virtual void Render() = 0; + virtual std::ostream& toString(std::ostream&) const = 0; + virtual void Update(float dt); + + virtual void Entering(); // when focus is transferring to this obj + virtual bool Leaving(JButton key); // when focus is transferring away from this obj, true to go ahead + virtual bool ButtonPressed(); // action button pressed, return false to ignore + + // Used for mouse support so that the GUI engine can found out which Object was selected + virtual bool getTopLeft(int& top, int& left) + { + return false; + } + ; + + int GetId(); +}; + +class JGuiController +{ +protected: + static JGE* mEngine; + + int mId; + bool mActive; + + JButton mActionButton; + JButton mCancelButton; + int mCurr; + int mStyle; + + JSprite* mCursor; + bool mShowCursor; + int mCursorX; + int mCursorY; + + int mBgX; + int mBgY; + const JTexture* mBg; + PIXEL_TYPE mShadingColor; + JgeRect* mShadingBg; + + JGuiListener* mListener; + //int mKeyHoldTime; + +public: + vector mObjects; + int mCount; + + JGuiController(int id, JGuiListener* listener); + ~JGuiController(); + + virtual void Render(); + virtual void Update(float dt); + virtual bool CheckUserInput(JButton key); + + void Add(JGuiObject* ctrl); + void RemoveAt(int i); + void Remove(int id); + void Remove(JGuiObject* ctrl); + + void SetActionButton(JButton button); + void SetStyle(int style); + void SetCursor(JSprite* cursor); + + bool IsActive(); + void SetActive(bool flag); + +}; + +ostream& operator<<(ostream &out, const JGuiObject &j); + +#endif diff --git a/JGE/include/JMD2Model.h b/JGE/include/JMD2Model.h index ca0ce9194..52c1a67c5 100644 --- a/JGE/include/JMD2Model.h +++ b/JGE/include/JMD2Model.h @@ -11,7 +11,7 @@ #ifndef _MD2MODEL_H #define _MD2MODEL_H -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #else @@ -236,7 +236,7 @@ private: void CheckNextState(); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) void CalculateNormal(float *p1, float *p2, float *p3); #else void CalculateNormal(ScePspFVector3* normal, float *p1, float *p2, float *p3); diff --git a/JGE/include/JOBJModel.h b/JGE/include/JOBJModel.h index b4aed5320..ca5392f26 100644 --- a/JGE/include/JOBJModel.h +++ b/JGE/include/JOBJModel.h @@ -15,7 +15,7 @@ using namespace std; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #else diff --git a/JGE/include/JRenderer.h b/JGE/include/JRenderer.h index 0bf90a806..569f6fad0 100644 --- a/JGE/include/JRenderer.h +++ b/JGE/include/JRenderer.h @@ -16,7 +16,9 @@ #include #include +#ifndef IOS #include +#endif //IOS #include "JTypes.h" @@ -25,7 +27,7 @@ #include -#elif defined (LINUX) +#elif defined (LINUX) || defined(IOS) #else @@ -78,7 +80,7 @@ protected: public: -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #else int PixelSize(int textureMode); #endif @@ -560,16 +562,17 @@ private: bool mVRAM; }; +#ifndef IOS void LoadJPG(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT); int LoadPNG(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT); void LoadGIF(TextureInfo &textureInfo, const char *filename, int mode = 0, int TextureFormat = TEXTURE_FORMAT); int image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bgcolor, InputFunc readFunc,int mode = 0, int TextureFormat = TEXTURE_FORMAT); - +#endif //(IOS) + static JRenderer* mInstance; - -#if defined (WIN32) || defined (LINUX) - +#if defined (WIN32) || defined (LINUX) || defined (IOS) + GLuint mCurrentTex; #if (defined GL_ES_VERSION_2_0) || (defined GL_VERSION_2_0) || (defined WIN32) // MVP matrix diff --git a/JGE/include/JSoundSystem.h b/JGE/include/JSoundSystem.h index b9c2ab1ff..6b22b0f2c 100644 --- a/JGE/include/JSoundSystem.h +++ b/JGE/include/JSoundSystem.h @@ -27,7 +27,8 @@ #include #define WITH_FMOD -#elif defined (LINUX) +#elif defined (LINUX) || defined (IOS) + #else #include @@ -72,12 +73,12 @@ public: #else -#if defined (WIN32) || defined (LINUX) - #ifdef WITH_FMOD +#if defined (WIN32) || defined (LINUX) || defined (IOS) +#ifdef WITH_FMOD FSOUND_SAMPLE* mTrack; // MP3 needed to be of "sample" type for FMOD, FMUSIC_MODULE is for MODs #else void* mTrack; - #endif +#endif #else JMP3* mTrack; #endif @@ -96,8 +97,8 @@ class JSample int mVoice; unsigned long fileSize(); -#if defined (WIN32) || defined (LINUX) - #ifdef WITH_FMOD +#if defined (WIN32) || defined (LINUX) || defined (IOS) +#ifdef WITH_FMOD FSOUND_SAMPLE *mSample; #else #ifdef USE_PHONON diff --git a/JGE/include/JSprite.h b/JGE/include/JSprite.h index 640abde78..d515b9f61 100644 --- a/JGE/include/JSprite.h +++ b/JGE/include/JSprite.h @@ -11,7 +11,7 @@ #ifndef _SPRITE_H_ #define _SPRITE_H_ -#if defined (WIN32) || defined(LINUX) +#if defined (WIN32) || defined(LINUX) || defined(IOS) #include #else #include diff --git a/JGE/include/JTypes.h b/JGE/include/JTypes.h index 3e5bc2eb7..596d413f2 100644 --- a/JGE/include/JTypes.h +++ b/JGE/include/JTypes.h @@ -11,7 +11,7 @@ #ifndef _JTYPES_H #define _JTYPES_H -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #include @@ -81,15 +81,24 @@ enum { #ifdef WIN32 #include #endif -#ifdef LINUX +#if defined(LINUX) || defined(IOS) typedef uint8_t byte; typedef uint32_t DWORD; typedef uint8_t BYTE; - typedef bool BOOL; +#ifndef IOS + typedef bool BOOL; +#endif #endif + + #ifndef QT_CONFIG -#if defined (WIN32) || defined (LINUX) +#if defined (IOS) + #import + #import + #import +# import +#elif defined (WIN32) || defined (LINUX) #include #include #endif @@ -97,7 +106,7 @@ enum { # include #endif -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) typedef int8_t s8; typedef int16_t s16; @@ -329,7 +338,7 @@ public: int mFilter; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) GLuint mTexId; #else int mTextureFormat; @@ -439,7 +448,7 @@ public: JTexture* mTex; -#if defined (WIN32) || defined(LINUX) +#if defined (WIN32) || defined(LINUX) || defined(IOS) float mTX0; float mTY0; float mTX1; @@ -499,7 +508,7 @@ public: //------------------------------------------------------------------------------------------------ -class Rect +class JgeRect { public: int x; @@ -508,7 +517,7 @@ public: int height; public: - Rect(int _x, int _y, int _width, int _height): x(_x), y(_y), width(_width), height(_height) {} + JgeRect(int _x, int _y, int _width, int _height): x(_x), y(_y), width(_width), height(_height) {} }; diff --git a/JGE/include/Vector2D.h b/JGE/include/Vector2D.h index 405736f21..89a76ba31 100644 --- a/JGE/include/Vector2D.h +++ b/JGE/include/Vector2D.h @@ -13,7 +13,7 @@ #ifdef WIN32 #include -#elif defined LINUX +#elif (defined LINUX) || (defined IOS) #include #else #include diff --git a/JGE/src/JFileSystem.cpp b/JGE/src/JFileSystem.cpp index e3387874e..00157cf9e 100644 --- a/JGE/src/JFileSystem.cpp +++ b/JGE/src/JFileSystem.cpp @@ -85,7 +85,7 @@ void JFileSystem::Destroy() JFileSystem::JFileSystem() { mZipAvailable = false; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mFile = NULL; #else mFile = -1; @@ -95,9 +95,9 @@ JFileSystem::JFileSystem() mFileSize = 0; #ifdef RESPATH - mResourceRoot = RESPATH"/"; + SetResourceRoot(RESPATH"/"); #else - mResourceRoot = "Res/"; // default root folder + SetResourceRoot("Res/"); // default root folder #endif } @@ -186,7 +186,7 @@ bool JFileSystem::OpenFile(const string &filename) } else { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX)|| defined (IOS) mFile = fopen(path.c_str(), "rb"); if (mFile != NULL) { @@ -220,7 +220,7 @@ void JFileSystem::CloseFile() return; } - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) if (mFile != NULL) fclose(mFile); #else @@ -238,7 +238,7 @@ int JFileSystem::ReadFile(void *buffer, int size) } else { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) return fread(buffer, 1, size, mFile); #else return sceIoRead(mFile, buffer, size); @@ -255,7 +255,14 @@ int JFileSystem::GetFileSize() void JFileSystem::SetResourceRoot(const string& resourceRoot) { +#ifdef IOS + NSString *pathUTF8 = [NSString stringWithUTF8String: resourceRoot.c_str()]; + NSString *fullpath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:pathUTF8]; + mResourceRoot = [fullpath cStringUsingEncoding:1]; + mResourceRoot += "/"; +#else mResourceRoot = resourceRoot; +#endif } string JFileSystem::GetResourceRoot() diff --git a/JGE/src/JGBKFont.cpp b/JGE/src/JGBKFont.cpp index 3df563843..7063e0ef4 100644 --- a/JGE/src/JGBKFont.cpp +++ b/JGE/src/JGBKFont.cpp @@ -188,7 +188,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) if (mCurr >= mCacheSize) mCurr = 0; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) int x = 0; int y = 0; @@ -225,7 +225,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) BYTE bitMask = 0x80; for (int z=0;z<8&&bitCount;z++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) if ((bits & bitMask) != 0) mCharBuffer[y*mFontSize+x] = ARGB(255,255,255,255); else @@ -257,7 +257,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) for (int i=0;imX; @@ -269,7 +269,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) for (n=0;n<(mFontSize-8)/2;n++) { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y*mFontSize+x] = ARGB(0,0,0,0); #else SwizzlePlot(pTexture, ARGB(0,0,0,0), x*PIXEL_SIZE, y, mTexture->mTexWidth*PIXEL_SIZE); @@ -286,7 +286,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) BYTE bitMask = 0x80; for (int z=0;z<8&&bitCount;z++) { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) if ((bits & bitMask) != 0) mCharBuffer[y*mFontSize+x] = ARGB(255,255,255,255); else @@ -308,7 +308,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) for (n=0;n<(mFontSize-8)/2;n++) { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y*mFontSize+x] = ARGB(0,0,0,0); #else SwizzlePlot(pTexture, ARGB(0,0,0,0), x*PIXEL_SIZE, y, mTexture->mTexWidth*PIXEL_SIZE); @@ -324,7 +324,7 @@ int JGBKFont::PreCacheChar(const BYTE *ch) mGBCode[index] = code; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) x = (int)mSprites[index]->mX; y = (int)mSprites[index]->mY; diff --git a/JGE/src/JGE.cpp b/JGE/src/JGE.cpp index a935806e3..7f403e025 100644 --- a/JGE/src/JGE.cpp +++ b/JGE/src/JGE.cpp @@ -309,7 +309,8 @@ JGE::~JGE() -#if defined (WIN32) || defined (LINUX) // Non-PSP code +#if defined (WIN32) || defined (LINUX) || defined (IOS) +// Non-PSP code void JGE::Init() { diff --git a/JGE/src/JMD2Model.cpp b/JGE/src/JMD2Model.cpp index 7d1f7cedd..d27537fb5 100644 --- a/JGE/src/JMD2Model.cpp +++ b/JGE/src/JMD2Model.cpp @@ -219,7 +219,7 @@ bool JMD2Model::Load(char *filename, char *textureName) //------------------------------------------------------------------------------------------------- // given 3 points, calculates the normal to the points -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) void JMD2Model::CalculateNormal(float *p1, float *p2, float *p3) #else void JMD2Model::CalculateNormal(ScePspFVector3 *normal, float *p1, float *p2, float *p3) @@ -243,7 +243,7 @@ void JMD2Model::CalculateNormal(ScePspFVector3 *normal, float *p1, float *p2, fl // calculate the length of the normal length = (float)sqrt(result[0]*result[0] + result[1]*result[1] + result[2]*result[2]); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) // normalize and specify the normal #if (!defined GL_ES_VERSION_2_0) && (!defined GL_VERSION_2_0) glNormal3f(result[0]/length, result[1]/length, result[2]/length); @@ -277,7 +277,7 @@ void JMD2Model::Render(int frameNum) mRenderer->BindTexture(mModel->modelTex); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) // display the textured model with proper lighting normals #if (defined GL_ES_VERSION_2_0) || (defined GL_VERSION_2_0) @@ -481,7 +481,7 @@ void JMD2Model::Render() mRenderer->BindTexture(mModel->modelTex); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #if (defined GL_ES_VERSION_2_0) || (defined GL_VERSION_2_0) // FIXME diff --git a/JGE/src/JSprite.cpp b/JGE/src/JSprite.cpp index e2a40cc87..00b8cf513 100644 --- a/JGE/src/JSprite.cpp +++ b/JGE/src/JSprite.cpp @@ -145,7 +145,7 @@ void JSprite::Render() // //mQuad->SetColor(ARGB(alpha,255,255,255)); -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mFrames[mCurrentFrame]->SetColor(alpha<<24 | mColor); // mQuad->SetFlip(mFlipped[mCurrentFrame], false); #else @@ -306,7 +306,7 @@ void JSprite::SetHotSpot(float x, float y, int index) } -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) void JSprite::SetColor(PIXEL_TYPE color) { mColor = (color&0x00ffffff); } #else void JSprite::SetColor(PIXEL_TYPE color) { mColor = (color&~MASK_ALPHA); } diff --git a/JGE/src/JTTFont.cpp b/JGE/src/JTTFont.cpp index bff50c381..dff36419e 100644 --- a/JGE/src/JTTFont.cpp +++ b/JGE/src/JTTFont.cpp @@ -258,7 +258,7 @@ int JTTFont::PreCacheChar(u16 ch, u16 cachedCode) FT_GlyphSlot slot = mFace->glyph; - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) DWORD *texBuffer = new DWORD[mMaxCharWidth*mMaxCharHeight]; memset(texBuffer, 0, mMaxCharWidth*mMaxCharHeight*sizeof(DWORD)); #else @@ -278,7 +278,7 @@ int JTTFont::PreCacheChar(u16 ch, u16 cachedCode) { int top = mSize-slot->bitmap_top+1; - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) int offset = top*mMaxCharWidth + slot->bitmap_left + 2; #else int xx = x + slot->bitmap_left + 2; @@ -303,7 +303,7 @@ int JTTFont::PreCacheChar(u16 ch, u16 cachedCode) { grey = slot->bitmap.buffer[i * slot->bitmap.width + j]; - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) texBuffer[i*mMaxCharWidth+j+offset] = RGBA(255, 255, 255, grey); #else SwizzlePlot(pTexture, ARGB(grey,255,255,255), (xx+j)*PIXEL_SIZE, yy+i, mTexWidth*PIXEL_SIZE); @@ -326,7 +326,7 @@ int JTTFont::PreCacheChar(u16 ch, u16 cachedCode) { if (bits&mask) { - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) texBuffer[i*mMaxCharWidth+j*8+k+offset] = RGBA(255, 255, 255, 255); #else SwizzlePlot(pTexture, ARGB(255,255,255,255), (xx+j*8+k)*PIXEL_SIZE, yy+i, mTexWidth*PIXEL_SIZE); @@ -344,7 +344,7 @@ int JTTFont::PreCacheChar(u16 ch, u16 cachedCode) mXAdvance[mCurr] = (u8)(slot->advance.x>>6); - #if defined (WIN32) || defined (LINUX) + #if defined (WIN32) || defined (LINUX) || defined (IOS) glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, mMaxCharWidth, mMaxCharHeight, GL_RGBA, GL_UNSIGNED_BYTE, texBuffer); #else sceKernelDcacheWritebackAll(); diff --git a/JGE/src/hge/hgepmanager.cpp b/JGE/src/hge/hgepmanager.cpp index 627e548cf..45972a1dc 100644 --- a/JGE/src/hge/hgepmanager.cpp +++ b/JGE/src/hge/hgepmanager.cpp @@ -7,7 +7,7 @@ */ -#include "..\..\include\hge\hgeparticle.h" +#include "../../include/hge/hgeparticle.h" hgeParticleManager::hgeParticleManager() diff --git a/JGE/src/pc/JGfx.cpp b/JGE/src/pc/JGfx.cpp index 541f3609f..2dbb864cb 100644 --- a/JGE/src/pc/JGfx.cpp +++ b/JGE/src/pc/JGfx.cpp @@ -9,6 +9,7 @@ //------------------------------------------------------------------------------------- #define GL_GLEXT_PROTOTYPES +#ifndef IOS #ifdef WIN32 #pragma warning(disable : 4786) #pragma comment( lib, "giflib.lib" ) @@ -26,7 +27,7 @@ extern "C" { #ifdef __cplusplus } #endif - +#endif //IOS #include "../../include/JGE.h" #include "../../include/JRenderer.h" @@ -1469,7 +1470,7 @@ static int getNextPower2(int width) } - +#ifndef IOS static void jpg_null(j_decompress_ptr cinfo __attribute__((unused))) { } @@ -1649,7 +1650,6 @@ static void PNGCustomReadDataFn(png_structp png_ptr, png_bytep data, png_size_t } } - JTexture* JRenderer::LoadTexture(const char* filename, int mode, int TextureFormat __attribute__((unused))) { TextureInfo textureInfo; @@ -1663,10 +1663,10 @@ JTexture* JRenderer::LoadTexture(const char* filename, int mode, int TextureForm else if(strstr(filename, ".png")!=NULL || strstr(filename, ".PNG")!=NULL) LoadPNG(textureInfo, filename); - if (textureInfo.mBits == NULL) { - printf("Texture %s failed to load\n", filename); - return NULL; - } + if (textureInfo.mBits == NULL) { + printf("Texture %s failed to load\n", filename); + return NULL; + } bool ret = false; @@ -1720,10 +1720,10 @@ JTexture* JRenderer::LoadTexture(const char* filename, int mode, int TextureForm glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureInfo.mTexWidth, textureInfo.mTexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureInfo.mBits); - } + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureInfo.mTexWidth, textureInfo.mTexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureInfo.mBits); + } - ret = TRUE; + ret = true; } else @@ -2038,7 +2038,92 @@ void JRenderer::LoadGIF(TextureInfo &textureInfo, const char *filename, int mode return ;//*/ } +#else //IOS +#include + +JTexture* JRenderer::LoadTexture(const char* filename, int mode, int TextureFormat __attribute__((unused))) +{ + TextureInfo textureInfo; + + textureInfo.mBits = NULL; + + NSString *path = [NSString stringWithUTF8String: JGE_GET_RES(filename).c_str()]; +// NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:newString2]; + NSData *texData = [[NSData alloc] initWithContentsOfFile:path]; + UIImage *image = [[UIImage alloc] initWithData:texData]; + if (image == nil) + NSLog(@"Do real error checking here"); + + textureInfo.mWidth = CGImageGetWidth(image.CGImage); + textureInfo.mHeight = CGImageGetHeight(image.CGImage); + textureInfo.mTexWidth = textureInfo.mWidth; + textureInfo.mTexHeight = textureInfo.mHeight; + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + textureInfo.mBits = new u8 [ textureInfo.mHeight * textureInfo.mWidth * 4 ]; + CGContextRef context = CGBitmapContextCreate( textureInfo.mBits, textureInfo.mWidth, textureInfo.mHeight, 8, 4 * textureInfo.mWidth, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big ); + CGColorSpaceRelease( colorSpace ); + CGContextClearRect( context, CGRectMake( 0, 0, textureInfo.mWidth, textureInfo.mHeight ) ); + CGContextTranslateCTM( context, 0, textureInfo.mHeight - textureInfo.mHeight ); + CGContextDrawImage( context, CGRectMake( 0, 0, textureInfo.mWidth, textureInfo.mHeight ), image.CGImage ); + + if (textureInfo.mBits == NULL) { + printf("Texture %s failed to load\n", filename); + return NULL; + } + + bool ret = false; + + JTexture *tex = new JTexture(); + + if (tex) + { + if (mImageFilter != NULL) + mImageFilter->ProcessImage((PIXEL_TYPE*)textureInfo.mBits, textureInfo.mWidth, textureInfo.mHeight); + + tex->mFilter = TEX_FILTER_LINEAR; + tex->mWidth = textureInfo.mWidth; + tex->mHeight = textureInfo.mHeight; + tex->mTexWidth = textureInfo.mTexWidth; + tex->mTexHeight = textureInfo.mTexHeight; + + GLuint texid; + checkGlError(); + glGenTextures(1, &texid); + tex->mTexId = texid; + // glError = glGetError(); + + glBindTexture(GL_TEXTURE_2D, texid); // Bind To The Texture ID + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureInfo.mTexWidth, textureInfo.mTexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureInfo.mBits); + + ret = true; + } + + CGContextRelease(context); + + delete [] textureInfo.mBits; + //delete textureInfo; + + [image release]; + [texData release]; + + if (!ret) + { + if (tex) + delete tex; + tex = NULL; + } + + checkGlError(); + return tex; +} +#endif //IOS JTexture* JRenderer::CreateTexture(int width, int height, int mode __attribute__((unused))) { diff --git a/projects/mtg/include/ActionStack.h b/projects/mtg/include/ActionStack.h index 16872b5d6..ffd0052e6 100644 --- a/projects/mtg/include/ActionStack.h +++ b/projects/mtg/include/ActionStack.h @@ -60,7 +60,7 @@ class Interruptible: public PlayGuiObject, public Targetable{ virtual const string getDisplayName() const; void Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad = false); virtual int receiveEvent(WEvent * event) {return 0;}; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) virtual void Dump(); #endif }; @@ -181,8 +181,8 @@ class ActionStack :public GuiLayer{ int has(Interruptible * action); int has(MTGAbility * ability); int receiveEventPlus(WEvent * event); -#if defined (WIN32) || defined (LINUX) - void Dump(); +#if defined (WIN32) || defined (LINUX) || defined (IOS) + void Dump(); #endif }; diff --git a/projects/mtg/include/Tasks.h b/projects/mtg/include/Tasks.h index 405331f2c..be58b599d 100644 --- a/projects/mtg/include/Tasks.h +++ b/projects/mtg/include/Tasks.h @@ -51,7 +51,7 @@ public: Task(char _type = ' '); - static Task* createFromStr(string params, bool rand = FALSE); + static Task* createFromStr(string params, bool rand = false); virtual string toString(); string getDesc(); virtual string createDesc() = 0; @@ -89,7 +89,7 @@ public: int load(string _fileName = ""); int save(string _fileName = ""); int getState() {return mState;}; - void addTask(string params, bool rand = FALSE); + void addTask(string params, bool rand = false); void addTask(Task *task); void addRandomTask(int diff = 100); void removeTask(Task *task); diff --git a/projects/mtg/include/utils.h b/projects/mtg/include/utils.h index 2a24a4576..18fddf16e 100644 --- a/projects/mtg/include/utils.h +++ b/projects/mtg/include/utils.h @@ -3,7 +3,7 @@ #include -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #else #include diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index a2cfcd9b3..ece53eecb 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -1091,7 +1091,7 @@ void ActionStack::Render() } } -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) void Interruptible::Dump() { diff --git a/projects/mtg/src/GameApp.cpp b/projects/mtg/src/GameApp.cpp index e70f05689..a496333dd 100644 --- a/projects/mtg/src/GameApp.cpp +++ b/projects/mtg/src/GameApp.cpp @@ -3,7 +3,7 @@ #include #include #include -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) #include #else #include @@ -78,7 +78,7 @@ GameApp::~GameApp() void GameApp::Create() { srand((unsigned int) time(0)); // initialize random -#ifndef QT_CONFIG +#if not defined(QT_CONFIG) && not defined(IOS) #if defined (WIN32) _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #elif not defined (LINUX) diff --git a/projects/mtg/src/GameStateMenu.cpp b/projects/mtg/src/GameStateMenu.cpp index 3f28fdc39..eba513614 100644 --- a/projects/mtg/src/GameStateMenu.cpp +++ b/projects/mtg/src/GameStateMenu.cpp @@ -278,7 +278,7 @@ int GameStateMenu::nextDirectory(const char * root, const char * file) int found = 0; if (!mDip) { - mDip = opendir(root); + mDip = opendir(JGE_GET_RES(root).c_str()); } while (!found && (mDit = readdir(mDip))) diff --git a/projects/mtg/src/Tasks.cpp b/projects/mtg/src/Tasks.cpp index a6e5b7f68..44111a48b 100644 --- a/projects/mtg/src/Tasks.cpp +++ b/projects/mtg/src/Tasks.cpp @@ -55,7 +55,7 @@ Task::Task(char _type) { reward = 0; expiresIn = 1; - accepted = FALSE; + accepted = false; if (_type == ' ') { type = TASK_BASIC; @@ -603,7 +603,7 @@ void TaskList::addRandomTask(int diff) string s(TASKS_ALL); char taskType[2]; sprintf(taskType, "%c", s[rand() % s.length()]); - addTask(string(taskType), TRUE); + addTask(string(taskType), true); } TaskList::~TaskList() @@ -742,7 +742,7 @@ TaskDelay::TaskDelay(int _opponent, int _turn) : { type = TASK_DELAY; turn = _turn; - afterTurn = TRUE; + afterTurn = true; } int TaskDelay::computeReward() diff --git a/projects/mtg/src/TranslateKeys.cpp b/projects/mtg/src/TranslateKeys.cpp index 2fc414804..86481a869 100644 --- a/projects/mtg/src/TranslateKeys.cpp +++ b/projects/mtg/src/TranslateKeys.cpp @@ -10,7 +10,7 @@ using std::map; static map fattable; static map slimtable; -#ifdef LINUX +#if defined(LINUX) || defined (IOS) const KeyRep& translateKey(LocalKeySym key) { { @@ -20,7 +20,7 @@ const KeyRep& translateKey(LocalKeySym key) } char* str = NULL; -#ifndef QT_CONFIG +#if not defined(QT_CONFIG) && not defined(IOS) str = XKeysymToString(key); #endif // QT_CONFIG if (!str) diff --git a/projects/mtg/src/WCachedResource.cpp b/projects/mtg/src/WCachedResource.cpp index 87f59e324..401c7b925 100644 --- a/projects/mtg/src/WCachedResource.cpp +++ b/projects/mtg/src/WCachedResource.cpp @@ -233,7 +233,7 @@ unsigned long WCachedTexture::size() if (!texture) return 0; unsigned int pixel_size = 4; -#if defined WIN32 || defined LINUX +#if defined WIN32 || defined LINUX || defined IOS #else pixel_size = JRenderer::GetInstance()->PixelSize(texture->mTextureFormat); #endif diff --git a/projects/mtg/src/WFont.cpp b/projects/mtg/src/WFont.cpp index 20b632f9b..5c2e7ea2a 100644 --- a/projects/mtg/src/WFont.cpp +++ b/projects/mtg/src/WFont.cpp @@ -249,7 +249,7 @@ int WFBFont::PreCacheChar(const u8 *ch) int index = mCurr++; if (mCurr >= mCacheSize) mCurr = 0; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) int x = 0; int y = 0; memset(mCharBuffer, 0, sizeof(u32) * mFontSize * mFontSize); @@ -285,7 +285,7 @@ int WFBFont::PreCacheChar(const u8 *ch) #if 1 for (; j < offset; j++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(0, 0, 0, 0); #else SwizzlePlot(pTexture, ARGB(0, 0, 0, 0), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -300,7 +300,7 @@ int WFBFont::PreCacheChar(const u8 *ch) gray = src[(i * size + j - offset) / 2]; gray = ((j - offset) & 1) ? (gray & 0xF0) : ((gray & 0x0F) << 4); if (gray) gray |= 0x0F; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(gray, 255, 255, 255); #else SwizzlePlot(pTexture, ARGB(gray, 255, 255, 255), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -309,7 +309,7 @@ int WFBFont::PreCacheChar(const u8 *ch) } for (; j < mFontSize; j++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(0, 0, 0, 0); #else SwizzlePlot(pTexture, ARGB(0, 0, 0, 0), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -321,7 +321,7 @@ int WFBFont::PreCacheChar(const u8 *ch) mGBCode[index] = code; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) x = (int)mSprites[index]->mX; y = (int)mSprites[index]->mY; glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, mFontSize, mFontSize, GL_RGBA, GL_UNSIGNED_BYTE, mCharBuffer); @@ -601,7 +601,7 @@ WGBKFont::WGBKFont(int inFontID, const char *fontname, int lineheight, bool useV mSprites = NEW JQuad*[mCacheSize]; mGBCode = NEW int[mCacheSize]; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer = NEW u32[mFontSize*mFontSize]; #endif @@ -657,7 +657,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) int index = mCurr++; if (mCurr >= mCacheSize) mCurr = 0; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) int x = 0; int y = 0; memset(mCharBuffer, 0, sizeof(u32) * mFontSize * mFontSize); @@ -685,7 +685,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) // set up the font texture buffer for (unsigned int i = 0; i < mFontSize; i++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) x = 0; #else x = (int) mSprites[index]->mX; @@ -694,7 +694,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) #if 1 for (; j < offset; j++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(0, 0, 0, 0); #else SwizzlePlot(pTexture, ARGB(0, 0, 0, 0), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -709,7 +709,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) gray = src[(i * size + j - offset) / 2]; gray = ((j - offset) & 1) ? (gray & 0xF0) : ((gray & 0x0F) << 4); if (gray) gray |= 0x0F; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(gray, 255, 255, 255); #else SwizzlePlot(pTexture, ARGB(gray, 255, 255, 255), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -718,7 +718,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) } for (; j < mFontSize; j++) { -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) mCharBuffer[y * mFontSize + x] = ARGB(0, 0, 0, 0); #else SwizzlePlot(pTexture, ARGB(0, 0, 0, 0), x * PIXEL_SIZE, y, mTexture->mTexWidth * PIXEL_SIZE); @@ -730,7 +730,7 @@ int WGBKFont::PreCacheChar(const u8 *ch) mGBCode[index] = code; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) x = (int)mSprites[index]->mX; y = (int)mSprites[index]->mY; glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, mFontSize, mFontSize, GL_RGBA, GL_UNSIGNED_BYTE, mCharBuffer); diff --git a/projects/mtg/src/utils.cpp b/projects/mtg/src/utils.cpp index c7ae978fd..f327bab13 100644 --- a/projects/mtg/src/utils.cpp +++ b/projects/mtg/src/utils.cpp @@ -43,7 +43,7 @@ int WRand() int filesize(const char * filename) { int file_size = 0; -#if defined (WIN32) || defined (LINUX) +#if defined (WIN32) || defined (LINUX) || defined (IOS) FILE * file = fopen(filename, "rb"); if (file != NULL) { diff --git a/projects/mtg/wagic.pro b/projects/mtg/wagic.pro index ab72161b7..2113a6a4f 100644 --- a/projects/mtg/wagic.pro +++ b/projects/mtg/wagic.pro @@ -84,7 +84,6 @@ SOURCES += \ src/GuiPhaseBar.cpp\ src/GuiPlay.cpp\ src/GuiStatic.cpp\ - src/Logger.cpp\ src/ManaCost.cpp\ src/ManaCostHybrid.cpp\ src/MenuItem.cpp\ @@ -110,6 +109,7 @@ SOURCES += \ src/SimpleMenu.cpp\ src/SimpleMenuItem.cpp\ src/SimplePad.cpp\ + src/SimplePopup.cpp\ src/StoryFlow.cpp\ src/Subtypes.cpp\ src/StyleManager.cpp\ @@ -234,6 +234,7 @@ HEADERS += \ include/StyleManager.h\ include/WFont.h\ include/DeckManager.h\ + include/SimplePopup.h\ include/SimpleMenu.h # JGE, could probably be moved outside