Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 14d4bede9a | |||
| 8636a99d0d | |||
| 73cdbd6b88 | |||
| 3482afeb84 | |||
| de40146462 | |||
| 94d5a85043 | |||
| 4811fbcc9f | |||
| 6fd136a211 | |||
| d98640fc01 | |||
| 685317b457 | |||
| a9a59d7b8e | |||
| fe9ad84ee5 | |||
| 3f43648b22 | |||
| afb4c4605b | |||
| fec4468aea |
+3
-2
@@ -12,14 +12,15 @@ 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 mingw32-x-gcc mingw32-x-qt; fi
|
- if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq mingw32-x-gcc mingw32-x-qt; fi
|
||||||
- sudo ln -s /opt/mingw32/bin/moc /opt/mingw32/bin/i686-w64-mingw32-moc
|
- sudo ln -s /opt/mingw32/bin/moc /opt/mingw32/bin/i686-w64-mingw32-moc
|
||||||
|
- sudo ln -s /opt/mingw32/bin/rcc /opt/mingw32/bin/i686-w64-mingw32-rcc
|
||||||
- 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 --extended -a
|
- $ANDROID list sdk -a
|
||||||
- echo yes | $ANDROID update sdk -a --filter "tools","platform-tools","build-tools-19.0.1","android-10" --no-ui --force > log.txt
|
- echo yes | $ANDROID update sdk -a --filter 1,2,5,19 --no-ui --force > log.txt
|
||||||
- sudo pip install pyjavaproperties
|
- sudo pip install pyjavaproperties
|
||||||
script: ./travis-script.sh
|
script: ./travis-script.sh
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -1,128 +0,0 @@
|
|||||||
#ifndef DOWNLOADER_H
|
|
||||||
#define DOWNLOADER_H
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// This class handles download of remote resources (any kind of file)
|
|
||||||
// All the resources are stored locally in the userPath
|
|
||||||
// For every resources, the downloader verifies if the resource was modifed
|
|
||||||
// on the server before downloading the update. The Downloader maintains a catalogue
|
|
||||||
// of resource downloaded to be able to check if they need to be updated.
|
|
||||||
//
|
|
||||||
// The interface can be used completly synchronously by the application and some
|
|
||||||
// context or message loop is needed in the implementation of this interface
|
|
||||||
//
|
|
||||||
// Note that the Downloader could in theory by implemented on top of JNetwork.
|
|
||||||
//
|
|
||||||
//-------------------------------------------------------------------------------------
|
|
||||||
#include <string>
|
|
||||||
#include <ostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <map>
|
|
||||||
#include "Threading.h"
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
#include <QObject>
|
|
||||||
#include <QNetworkRequest>
|
|
||||||
#include <QNetworkReply>
|
|
||||||
#include <QNetworkAccessManager>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class DownloadRequest
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
: public QObject
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
#endif
|
|
||||||
void fileDownloaded();
|
|
||||||
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
|
||||||
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
signals:
|
|
||||||
void percentChanged(int percent);
|
|
||||||
void statusChanged(int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
public:
|
|
||||||
typedef enum {
|
|
||||||
NOT_PRESENT,
|
|
||||||
DOWNLOADING,
|
|
||||||
DOWNLOADED,
|
|
||||||
DOWNLOAD_ERROR
|
|
||||||
} DownloadStatus;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
string mLocalPath;
|
|
||||||
string mRemoteResourceURL;
|
|
||||||
// previous one is the original, next one can change after redirection
|
|
||||||
string mRequestedRemoteResourceURL;
|
|
||||||
string mETag;
|
|
||||||
DownloadStatus mDownloadStatus;
|
|
||||||
bool mUpgradeAvailable;
|
|
||||||
size_t mTotalSize;
|
|
||||||
size_t mCurrentSize;
|
|
||||||
ofstream mFile;
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
QNetworkReply* mNetworkReply;
|
|
||||||
static QNetworkAccessManager networkAccessManager;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
DownloadRequest(string localPath="",
|
|
||||||
string remoteResourceURL="",
|
|
||||||
string ETag = "",
|
|
||||||
DownloadStatus downloadStatus=NOT_PRESENT,
|
|
||||||
size_t totalSize = 0,
|
|
||||||
size_t currentSize = 0);
|
|
||||||
~DownloadRequest();
|
|
||||||
static bool NetworkIsAccessible();
|
|
||||||
|
|
||||||
string getTempLocalPath() const { return (mLocalPath+".tmp"); };
|
|
||||||
string getLocalPath() const { return mLocalPath; };
|
|
||||||
string getRemoteResource() const { return mRemoteResourceURL; };
|
|
||||||
string getETag() const { return mETag; };
|
|
||||||
void startGet();
|
|
||||||
void startHead();
|
|
||||||
DownloadStatus getDownloadStatus() const { return mDownloadStatus; };
|
|
||||||
bool upgradeAvailable() const { return mUpgradeAvailable; };
|
|
||||||
void getSizes(size_t& totalSize, size_t¤tSize) {
|
|
||||||
totalSize = mTotalSize;
|
|
||||||
currentSize = mCurrentSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
friend ostream& operator<<(ostream& out, const DownloadRequest& d);
|
|
||||||
friend istream& operator>>(istream&, DownloadRequest&);
|
|
||||||
friend class Downloader;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class Downloader
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
Downloader(string globalRemoteURL="", string localCacheRecords="");
|
|
||||||
virtual ~Downloader();
|
|
||||||
static Downloader* mInstance;
|
|
||||||
string mGlobalRemoteURL;
|
|
||||||
string mLocalCacheRecords;
|
|
||||||
boost::mutex mMutex;
|
|
||||||
map<string, DownloadRequest*> mRequestMap;
|
|
||||||
|
|
||||||
public:
|
|
||||||
static Downloader* GetInstance();
|
|
||||||
static void Release();
|
|
||||||
|
|
||||||
void Update();
|
|
||||||
DownloadRequest* Get(string localPath, string remoteResourceURL="");
|
|
||||||
|
|
||||||
friend ostream& operator<<(ostream& out, const Downloader& d);
|
|
||||||
friend istream& operator>>(istream&, Downloader&);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // DOWNLOADER_H
|
|
||||||
+37
-12
@@ -1,6 +1,10 @@
|
|||||||
#ifndef _J_FILE_SYSTEM_H_
|
#ifndef _J_FILE_SYSTEM_H_
|
||||||
#define _J_FILE_SYSTEM_H_
|
#define _J_FILE_SYSTEM_H_
|
||||||
|
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
#include <QFile>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "zfsystem.h"
|
#include "zfsystem.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
using zip_file_system::filesystem;
|
using zip_file_system::filesystem;
|
||||||
@@ -18,13 +22,38 @@ using namespace std;
|
|||||||
/// archive file.
|
/// archive file.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
class JFile {
|
||||||
|
friend class JFileSystem;
|
||||||
|
filesystem::limited_file_info * mCurrentFileInZip;
|
||||||
|
izfstream mFile;
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
QFile *mpqFile;
|
||||||
|
#endif
|
||||||
|
public:
|
||||||
|
JFile() : mCurrentFileInZip(0)
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
, mpqFile(0)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
};
|
||||||
|
~JFile() {
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
if(mpqFile) {
|
||||||
|
mpqFile->close();
|
||||||
|
delete mpqFile;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (mFile)
|
||||||
|
mFile.close();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class JZipCache {
|
class JZipCache {
|
||||||
public:
|
public:
|
||||||
JZipCache();
|
JZipCache();
|
||||||
~JZipCache();
|
~JZipCache();
|
||||||
map<string, filesystem::limited_file_info> dir;
|
map<string, filesystem::limited_file_info> dir;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class JFileSystem {
|
class JFileSystem {
|
||||||
@@ -32,23 +61,21 @@ private:
|
|||||||
string mSystemFSPath, mUserFSPath;
|
string mSystemFSPath, mUserFSPath;
|
||||||
filesystem * mSystemFS, * mUserFS;
|
filesystem * mSystemFS, * mUserFS;
|
||||||
static JFileSystem* mInstance;
|
static JFileSystem* mInstance;
|
||||||
izfstream mFile;
|
|
||||||
|
|
||||||
map<string,JZipCache *>mZipCache;
|
map<string,JZipCache *>mZipCache;
|
||||||
unsigned int mZipCachedElementsCount;
|
unsigned int mZipCachedElementsCount;
|
||||||
string mZipFileName;
|
string mZipFileName;
|
||||||
int mFileSize;
|
|
||||||
char *mPassword;
|
char *mPassword;
|
||||||
bool mZipAvailable;
|
bool mZipAvailable;
|
||||||
void preloadZip(const string& filename);
|
void preloadZip(const string& filename);
|
||||||
izfstream mZipFile;
|
izfstream mZipFile;
|
||||||
filesystem::limited_file_info * mCurrentFileInZip;
|
|
||||||
|
|
||||||
std::vector<std::string>& scanRealFolder(const std::string& folderName, std::vector<std::string>& results);
|
std::vector<std::string>& scanRealFolder(const std::string& folderName, std::vector<std::string>& results);
|
||||||
|
bool openForRead(izfstream & File, const string & FilePath);
|
||||||
|
int GetFileSize(izfstream & file);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Attach ZIP archive to the file system.
|
/// Attach ZIP archive to the file system.
|
||||||
///
|
///
|
||||||
@@ -83,7 +110,7 @@ public:
|
|||||||
/// Open file for reading.
|
/// Open file for reading.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
bool OpenFile(const string &filename);
|
JFile* OpenFile(const string &filename);
|
||||||
|
|
||||||
//Fills the vector results with a list of children of the given folder
|
//Fills the vector results with a list of children of the given folder
|
||||||
std::vector<std::string>& scanfolder(const std::string& folderName, std::vector<std::string>& results);
|
std::vector<std::string>& scanfolder(const std::string& folderName, std::vector<std::string>& results);
|
||||||
@@ -97,20 +124,19 @@ public:
|
|||||||
/// @return Number of bytes read.
|
/// @return Number of bytes read.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
int ReadFile(void *buffer, int size);
|
int ReadFile(JFile*, void *buffer, int size);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Get size of file.
|
/// Get size of file.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
int GetFileSize();
|
int GetFileSize(JFile*);
|
||||||
int GetFileSize(izfstream & file);
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Close file.
|
/// Close file.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void CloseFile();
|
void CloseFile(JFile*);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Set root for all the following file operations
|
/// Set root for all the following file operations
|
||||||
@@ -124,11 +150,10 @@ public:
|
|||||||
void SetUSerRoot(const string& resourceRoot);
|
void SetUSerRoot(const string& resourceRoot);
|
||||||
string GetUserRoot() { return mUserFSPath; };
|
string GetUserRoot() { return mUserFSPath; };
|
||||||
|
|
||||||
bool openForRead(izfstream & File, const string & FilePath);
|
|
||||||
bool readIntoString(const string & FilePath, string & target);
|
bool readIntoString(const string & FilePath, string & target);
|
||||||
|
bool ReadFileLine(JFile*, string&);
|
||||||
bool openForWrite(ofstream & File, const string & FilePath, ios_base::openmode mode = ios_base::out );
|
bool openForWrite(ofstream & File, const string & FilePath, ios_base::openmode mode = ios_base::out );
|
||||||
bool Rename(string from, string to);
|
bool Rename(string from, string to);
|
||||||
bool Remove(string aFile);
|
|
||||||
|
|
||||||
//Returns true if strFilename exists somewhere in the fileSystem
|
//Returns true if strFilename exists somewhere in the fileSystem
|
||||||
bool FileExists(const string& strFilename);
|
bool FileExists(const string& strFilename);
|
||||||
|
|||||||
@@ -178,7 +178,6 @@ private:
|
|||||||
float mSpacing;
|
float mSpacing;
|
||||||
|
|
||||||
PIXEL_TYPE mColor;
|
PIXEL_TYPE mColor;
|
||||||
int mBlend;
|
|
||||||
|
|
||||||
int mBase;
|
int mBase;
|
||||||
|
|
||||||
|
|||||||
+1
-221
@@ -1,7 +1,7 @@
|
|||||||
#ifndef THREADING_H
|
#ifndef THREADING_H
|
||||||
#define THREADING_H
|
#define THREADING_H
|
||||||
|
|
||||||
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L) && !defined(SDL_CONFIG)
|
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L)
|
||||||
#include <boost/date_time.hpp>
|
#include <boost/date_time.hpp>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
@@ -611,226 +611,6 @@ namespace boost
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(SDL_CONFIG)
|
|
||||||
#include "SDL_thread.h"
|
|
||||||
#include "SDL_timer.h"
|
|
||||||
|
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/shared_ptr.hpp>
|
|
||||||
|
|
||||||
#include "../include/JLogger.h"
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
template <class Mutex>
|
|
||||||
struct unique_lock
|
|
||||||
{
|
|
||||||
unique_lock(Mutex& inMutex) : mMutex(&inMutex)
|
|
||||||
{
|
|
||||||
mMutex->lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
~unique_lock()
|
|
||||||
{
|
|
||||||
mMutex->unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
Mutex* mMutex;
|
|
||||||
};
|
|
||||||
|
|
||||||
class mutex
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
typedef unique_lock<mutex> scoped_lock;
|
|
||||||
|
|
||||||
mutex()
|
|
||||||
: mpSDLMutex(0)
|
|
||||||
{
|
|
||||||
mpSDLMutex = SDL_CreateMutex();
|
|
||||||
}
|
|
||||||
|
|
||||||
~mutex()
|
|
||||||
{
|
|
||||||
SDL_DestroyMutex(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lock()
|
|
||||||
{
|
|
||||||
SDL_mutexP(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void unlock()
|
|
||||||
{
|
|
||||||
SDL_mutexV(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_mutex* mpSDLMutex;
|
|
||||||
|
|
||||||
private:
|
|
||||||
mutex(mutex const&);
|
|
||||||
mutex& operator=(mutex const&);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class recursive_mutex
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
typedef unique_lock<recursive_mutex> scoped_lock;
|
|
||||||
|
|
||||||
recursive_mutex()
|
|
||||||
: mpSDLMutex(0)
|
|
||||||
{
|
|
||||||
mpSDLMutex = SDL_CreateMutex();
|
|
||||||
}
|
|
||||||
|
|
||||||
~recursive_mutex()
|
|
||||||
{
|
|
||||||
SDL_DestroyMutex(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lock()
|
|
||||||
{
|
|
||||||
SDL_mutexP(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void unlock()
|
|
||||||
{
|
|
||||||
SDL_mutexV(mpSDLMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_mutex* mpSDLMutex;
|
|
||||||
|
|
||||||
private:
|
|
||||||
recursive_mutex(recursive_mutex const&);
|
|
||||||
recursive_mutex& operator=(recursive_mutex const&);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
** Emulating boost::thread configuration glue, with some shortcuts
|
|
||||||
** This detail namespace is a distillation of boost's thread.hpp, thread_data.hpp.
|
|
||||||
*/
|
|
||||||
namespace detail
|
|
||||||
{
|
|
||||||
struct thread_data_base
|
|
||||||
{
|
|
||||||
thread_data_base()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~thread_data_base()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void run() = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef boost::shared_ptr<detail::thread_data_base> thread_data_ptr;
|
|
||||||
|
|
||||||
template<typename F>
|
|
||||||
class thread_data : public detail::thread_data_base
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
thread_data(F f_) : f(f_)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void run()
|
|
||||||
{
|
|
||||||
f();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
F f;
|
|
||||||
|
|
||||||
void operator=(thread_data&);
|
|
||||||
thread_data(thread_data&);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace detail
|
|
||||||
|
|
||||||
/**
|
|
||||||
** A simplistic implementation of boost::thread, using QThread.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
class thread
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
** Helper class for sceKernelStartThread, which passes args by value, not by reference
|
|
||||||
** We use this struct to wrap any pointers that we want to pass to the worker thread.
|
|
||||||
*/
|
|
||||||
struct CallbackData
|
|
||||||
{
|
|
||||||
CallbackData(detail::thread_data_ptr inThreadInfo)
|
|
||||||
: mThreadInfo(inThreadInfo)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
detail::thread_data_ptr mThreadInfo;
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
thread()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class F,class A1>
|
|
||||||
thread(F f, A1 a1) : mThreadInfo(make_thread_info(boost::bind(boost::type<void>(), f, a1)))
|
|
||||||
{
|
|
||||||
mpSDLThread = SDL_CreateThread(ThreadProc, &mThreadInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
~thread()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void join()
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
SDL_WaitThread(mpSDLThread, &status);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
static int ThreadProc(void *inParam)
|
|
||||||
{
|
|
||||||
detail::thread_data_ptr* threadInfo = reinterpret_cast<detail::thread_data_ptr* >(inParam);
|
|
||||||
CallbackData callbackData(*threadInfo);
|
|
||||||
|
|
||||||
LOG("Entering thread::ThreadProc");
|
|
||||||
callbackData.mThreadInfo->run();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename F>
|
|
||||||
static inline detail::thread_data_ptr make_thread_info(F f)
|
|
||||||
{
|
|
||||||
return detail::thread_data_ptr(new detail::thread_data<F>(f));
|
|
||||||
}
|
|
||||||
|
|
||||||
detail::thread_data_ptr mThreadInfo;
|
|
||||||
SDL_Thread* mpSDLThread;
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace posix_time
|
|
||||||
{
|
|
||||||
typedef unsigned int milliseconds;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
** boost's platform neutral sleep call.
|
|
||||||
*/
|
|
||||||
namespace this_thread
|
|
||||||
{
|
|
||||||
inline void sleep(boost::posix_time::milliseconds const& time)
|
|
||||||
{
|
|
||||||
SDL_Delay(time);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // THREADING_H
|
#endif // THREADING_H
|
||||||
|
|||||||
@@ -1,298 +0,0 @@
|
|||||||
#include "DebugRoutines.h"
|
|
||||||
#include "JFileSystem.h"
|
|
||||||
#include "Downloader.h"
|
|
||||||
|
|
||||||
#define RECORDS_DEFAULT_FILE "cache/records.txt"
|
|
||||||
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
QNetworkAccessManager DownloadRequest::networkAccessManager;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DownloadRequest::DownloadRequest(string localPath,
|
|
||||||
string remoteResourceURL,
|
|
||||||
string ETag,
|
|
||||||
DownloadStatus downloadStatus,
|
|
||||||
size_t totalSize,
|
|
||||||
size_t currentSize):
|
|
||||||
mLocalPath(localPath),
|
|
||||||
mRemoteResourceURL(remoteResourceURL),
|
|
||||||
mRequestedRemoteResourceURL(remoteResourceURL),
|
|
||||||
mETag(ETag),
|
|
||||||
mDownloadStatus(downloadStatus),
|
|
||||||
mUpgradeAvailable(false),
|
|
||||||
mTotalSize(totalSize),
|
|
||||||
mCurrentSize(currentSize)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
DownloadRequest::~DownloadRequest()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void DownloadRequest::startHead()
|
|
||||||
{
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
QNetworkRequest request(QUrl(QString(mRequestedRemoteResourceURL.c_str())));
|
|
||||||
request.setRawHeader("If-None-Match", mETag.c_str());
|
|
||||||
mNetworkReply = networkAccessManager.head(request);
|
|
||||||
connect(mNetworkReply, SIGNAL(finished()), SLOT(fileDownloaded()));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void DownloadRequest::startGet()
|
|
||||||
{
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
mNetworkReply = networkAccessManager.get(QNetworkRequest(QUrl(QString(mRequestedRemoteResourceURL.c_str()))));
|
|
||||||
#endif
|
|
||||||
mFile.close();
|
|
||||||
JFileSystem::GetInstance()->Remove(getTempLocalPath());
|
|
||||||
JFileSystem::GetInstance()->openForWrite(mFile, getTempLocalPath());
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
connect(mNetworkReply, SIGNAL(downloadProgress(qint64, qint64)),
|
|
||||||
SLOT(downloadProgress(qint64, qint64)));
|
|
||||||
connect(mNetworkReply, SIGNAL(finished()), SLOT(fileDownloaded()));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void DownloadRequest::fileDownloaded()
|
|
||||||
{
|
|
||||||
do {
|
|
||||||
QByteArray eTagByteArray = mNetworkReply->rawHeader("ETag");
|
|
||||||
if(!eTagByteArray.isEmpty()) {
|
|
||||||
string oldETag = mETag;
|
|
||||||
mETag = QString(eTagByteArray).toStdString();
|
|
||||||
if(oldETag!="" && oldETag != mETag)
|
|
||||||
mUpgradeAvailable = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// let's check some error
|
|
||||||
if(mNetworkReply->error() != QNetworkReply::NoError) {
|
|
||||||
DebugTrace(mNetworkReply->errorString().toStdString());
|
|
||||||
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
|
|
||||||
mFile.close();
|
|
||||||
JFileSystem::GetInstance()->Remove(getTempLocalPath());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if we're getting redirected
|
|
||||||
QVariant redirectionTarget = mNetworkReply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
|
||||||
if (!redirectionTarget.isNull()) {
|
|
||||||
QUrl newUrl = QUrl(mRequestedRemoteResourceURL.c_str()).resolved(redirectionTarget.toUrl());
|
|
||||||
DebugTrace(string("Redirect to ")+ newUrl.toString().toStdString());
|
|
||||||
|
|
||||||
mRequestedRemoteResourceURL = newUrl.toString().toStdString();
|
|
||||||
mNetworkReply->deleteLater();
|
|
||||||
if(mFile.is_open())
|
|
||||||
startGet();
|
|
||||||
else
|
|
||||||
startHead();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mFile.is_open())
|
|
||||||
{
|
|
||||||
QByteArray byteArray = mNetworkReply->readAll();
|
|
||||||
mFile.write(byteArray.constData(), byteArray.size());
|
|
||||||
mFile.close();
|
|
||||||
if(!JFileSystem::GetInstance()->Rename(getTempLocalPath(), mLocalPath)) {
|
|
||||||
mDownloadStatus = DownloadRequest::DOWNLOAD_ERROR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mDownloadStatus = DownloadRequest::DOWNLOADED;
|
|
||||||
} while(0);
|
|
||||||
|
|
||||||
Downloader::GetInstance()->Update();
|
|
||||||
mNetworkReply->deleteLater();
|
|
||||||
|
|
||||||
emit statusChanged((int)mDownloadStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DownloadRequest::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
|
|
||||||
{
|
|
||||||
QByteArray byteArray = mNetworkReply->readAll();
|
|
||||||
mFile.write(byteArray.constData(), byteArray.size());
|
|
||||||
mCurrentSize = bytesReceived;
|
|
||||||
mTotalSize = bytesTotal;
|
|
||||||
int percent = 0;
|
|
||||||
if(bytesTotal)
|
|
||||||
percent = (bytesReceived/bytesTotal)*100;
|
|
||||||
emit percentChanged(percent);
|
|
||||||
}
|
|
||||||
|
|
||||||
Downloader* Downloader::mInstance = 0;
|
|
||||||
|
|
||||||
Downloader::Downloader(string globalRemoteURL, string localcacheRecords):
|
|
||||||
mGlobalRemoteURL(globalRemoteURL),
|
|
||||||
mLocalCacheRecords(localcacheRecords)
|
|
||||||
{
|
|
||||||
JFileSystem::GetInstance()->MakeDir("cache");
|
|
||||||
|
|
||||||
izfstream downloadRecords;
|
|
||||||
if(mLocalCacheRecords.empty())
|
|
||||||
mLocalCacheRecords = RECORDS_DEFAULT_FILE;
|
|
||||||
if(JFileSystem::GetInstance()->openForRead(downloadRecords, mLocalCacheRecords))
|
|
||||||
{// File exists, let's read it.
|
|
||||||
downloadRecords >> (*this);
|
|
||||||
}
|
|
||||||
JFileSystem::GetInstance()->CloseFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
Downloader::~Downloader()
|
|
||||||
{
|
|
||||||
map<string, DownloadRequest*>::iterator ite;
|
|
||||||
for(ite = mRequestMap.begin(); ite != mRequestMap.end(); ite++)
|
|
||||||
{
|
|
||||||
delete (*ite).second;
|
|
||||||
}
|
|
||||||
mRequestMap.erase(mRequestMap.begin(), mRequestMap.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
Downloader* Downloader::GetInstance()
|
|
||||||
{
|
|
||||||
if(!mInstance)
|
|
||||||
{
|
|
||||||
mInstance = new Downloader();
|
|
||||||
}
|
|
||||||
return mInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Downloader::Release()
|
|
||||||
{
|
|
||||||
if(mInstance)
|
|
||||||
{
|
|
||||||
delete mInstance;
|
|
||||||
mInstance = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DownloadRequest::NetworkIsAccessible()
|
|
||||||
{
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
#ifdef QT_CONFIG
|
|
||||||
networkAccessManager.setNetworkAccessible(QNetworkAccessManager::Accessible);
|
|
||||||
result = networkAccessManager.networkAccessible();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
DownloadRequest* Downloader::Get(string localPath, string remoteResourceURL)
|
|
||||||
{
|
|
||||||
map<string, DownloadRequest*>::iterator ite = mRequestMap.find(localPath);
|
|
||||||
if(ite == mRequestMap.end())
|
|
||||||
{ // request does not exist, let's create it
|
|
||||||
DownloadRequest* request = new DownloadRequest(localPath, remoteResourceURL);
|
|
||||||
std::pair<std::map<string,DownloadRequest*>::iterator,bool> ret;
|
|
||||||
ret = mRequestMap.insert ( std::pair<string,DownloadRequest*>(localPath, request) );
|
|
||||||
if (ret.second==false) {
|
|
||||||
DebugTrace("Downloader::Get Error inserting request in Map");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
ite = ret.first;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now, we can check the server
|
|
||||||
if((*ite).second->getDownloadStatus() == DownloadRequest::NOT_PRESENT ||
|
|
||||||
(*ite).second->upgradeAvailable())
|
|
||||||
{ // File is not here or an update is available, let's get it
|
|
||||||
(*ite).second->startGet();
|
|
||||||
(*ite).second->mDownloadStatus = DownloadRequest::DOWNLOADING;
|
|
||||||
}
|
|
||||||
else if ((*ite).second->getDownloadStatus() == DownloadRequest::DOWNLOADED)
|
|
||||||
{ // File is here, let's check if there is some update without blocking the playback
|
|
||||||
(*ite).second->startHead();
|
|
||||||
}
|
|
||||||
|
|
||||||
return (*ite).second;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Downloader::Update()
|
|
||||||
{
|
|
||||||
ofstream downloadRecords;
|
|
||||||
if(JFileSystem::GetInstance()->openForWrite(downloadRecords, mLocalCacheRecords))
|
|
||||||
{
|
|
||||||
downloadRecords << (*this);
|
|
||||||
}
|
|
||||||
downloadRecords.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
ostream& operator<<(ostream& out, const DownloadRequest& d)
|
|
||||||
{
|
|
||||||
// HEAD request fails, so this line erase cache record after upgrade check :(
|
|
||||||
// if(d.getDownloadStatus() == DownloadRequest::DOWNLOADED)
|
|
||||||
{
|
|
||||||
out << "localPath=" << d.mLocalPath << endl;
|
|
||||||
out << "remoteResource=" << d.mRemoteResourceURL << endl;
|
|
||||||
out << "ETag=" << d.mETag << endl;
|
|
||||||
out << "upgradeAvailable=" << d.mUpgradeAvailable <<endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
istream& operator>>(istream& in, DownloadRequest& d)
|
|
||||||
{
|
|
||||||
string s;
|
|
||||||
|
|
||||||
while(std::getline(in, s))
|
|
||||||
{
|
|
||||||
size_t limiter = s.find("=");
|
|
||||||
string areaS;
|
|
||||||
if (limiter != string::npos)
|
|
||||||
{
|
|
||||||
areaS = s.substr(0, limiter);
|
|
||||||
if (areaS.compare("localPath") == 0)
|
|
||||||
{
|
|
||||||
d.mLocalPath = s.substr(limiter + 1);
|
|
||||||
}
|
|
||||||
else if (areaS.compare("remoteResource") == 0)
|
|
||||||
{
|
|
||||||
d.mRemoteResourceURL = s.substr(limiter + 1);
|
|
||||||
d.mRequestedRemoteResourceURL = d.mRemoteResourceURL;
|
|
||||||
}
|
|
||||||
else if (areaS.compare("ETag") == 0)
|
|
||||||
{
|
|
||||||
d.mETag = s.substr(limiter + 1);
|
|
||||||
d.mDownloadStatus = DownloadRequest::DOWNLOADED;
|
|
||||||
}
|
|
||||||
else if (areaS.compare("upgradeAvailable") == 0)
|
|
||||||
{
|
|
||||||
d.mUpgradeAvailable = (bool)atoi(s.substr(limiter + 1).c_str());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return in;
|
|
||||||
}
|
|
||||||
|
|
||||||
ostream& operator<<(ostream& out, const Downloader& d)
|
|
||||||
{
|
|
||||||
map<string, DownloadRequest*>::const_iterator ite;
|
|
||||||
for(ite = d.mRequestMap.begin(); ite != d.mRequestMap.end(); ite++)
|
|
||||||
{
|
|
||||||
out << (*(*ite).second) << endl;
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
istream& operator>>(istream& in, Downloader& d)
|
|
||||||
{
|
|
||||||
while(!in.eof())
|
|
||||||
{
|
|
||||||
DownloadRequest* downloadRequest = new DownloadRequest();
|
|
||||||
in >> (*downloadRequest);
|
|
||||||
|
|
||||||
if(!downloadRequest->getLocalPath().empty() &&
|
|
||||||
!downloadRequest->getRemoteResource().empty() &&
|
|
||||||
!downloadRequest->getETag().empty()) {
|
|
||||||
d.mRequestMap[downloadRequest->getLocalPath()] = downloadRequest;
|
|
||||||
} else {
|
|
||||||
delete downloadRequest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return in;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -44,11 +44,12 @@ bool JAnimator::Load(const char* scriptFile)
|
|||||||
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem == NULL) return false;
|
if (fileSystem == NULL) return false;
|
||||||
|
|
||||||
if (!fileSystem->OpenFile(scriptFile)) return false;
|
JFile* jFile = fileSystem->OpenFile(scriptFile);
|
||||||
|
if (!jFile) return false;
|
||||||
|
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *xmlBuffer = new char[size];
|
char *xmlBuffer = new char[size];
|
||||||
fileSystem->ReadFile(xmlBuffer, size);
|
fileSystem->ReadFile(jFile, xmlBuffer, size);
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
doc.Parse(xmlBuffer);
|
doc.Parse(xmlBuffer);
|
||||||
@@ -173,7 +174,7 @@ bool JAnimator::Load(const char* scriptFile)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
delete[] xmlBuffer;
|
delete[] xmlBuffer;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+17
-16
@@ -49,7 +49,8 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
{
|
{
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(fileName))
|
JFile* jFile = fileSystem->OpenFile(fileName);
|
||||||
|
if (!jFile)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
memset(p_wav, 0, sizeof(WAVDATA));
|
memset(p_wav, 0, sizeof(WAVDATA));
|
||||||
@@ -57,14 +58,14 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
char head[256];
|
char head[256];
|
||||||
memset(head, 0, 256);
|
memset(head, 0, 256);
|
||||||
//sceIoRead(fd, head, 20);
|
//sceIoRead(fd, head, 20);
|
||||||
fileSystem->ReadFile(head, 20);
|
fileSystem->ReadFile(jFile, head, 20);
|
||||||
char string[8];
|
char string[8];
|
||||||
memset(string, 0, 8);
|
memset(string, 0, 8);
|
||||||
memcpy(string, head, 4);
|
memcpy(string, head, 4);
|
||||||
if (0!=strcmp(string, "RIFF"))
|
if (0!=strcmp(string, "RIFF"))
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(string, 0, 8);
|
memset(string, 0, 8);
|
||||||
@@ -72,7 +73,7 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
if (0!=strcmp(string, "WAVE"))
|
if (0!=strcmp(string, "WAVE"))
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(string, 0, 8);
|
memset(string, 0, 8);
|
||||||
@@ -80,42 +81,42 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
if (0!=strcmp(string, "fmt"))
|
if (0!=strcmp(string, "fmt"))
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int fmtSize = 0;
|
int fmtSize = 0;
|
||||||
memcpy(&fmtSize, head+16, 4);
|
memcpy(&fmtSize, head+16, 4);
|
||||||
//sceIoRead(fd, head+20, fmtSize);
|
//sceIoRead(fd, head+20, fmtSize);
|
||||||
fileSystem->ReadFile(head+20,fmtSize );
|
fileSystem->ReadFile(jFile, head+20,fmtSize );
|
||||||
p_wav->headSize = 20+fmtSize;
|
p_wav->headSize = 20+fmtSize;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
//sceIoRead(fd, head+p_wav->headSize, 4);
|
//sceIoRead(fd, head+p_wav->headSize, 4);
|
||||||
fileSystem->ReadFile(head+p_wav->headSize, 4);
|
fileSystem->ReadFile(jFile, head+p_wav->headSize, 4);
|
||||||
memset(string, 0, 8);
|
memset(string, 0, 8);
|
||||||
memcpy(string, head+p_wav->headSize, 4);
|
memcpy(string, head+p_wav->headSize, 4);
|
||||||
p_wav->headSize += 4;
|
p_wav->headSize += 4;
|
||||||
if (0!=strcmp(string, "data"))
|
if (0!=strcmp(string, "data"))
|
||||||
{
|
{
|
||||||
//sceIoRead(fd, head+p_wav->headSize, 4);
|
//sceIoRead(fd, head+p_wav->headSize, 4);
|
||||||
fileSystem->ReadFile(head+p_wav->headSize, 4);
|
fileSystem->ReadFile(jFile, head+p_wav->headSize, 4);
|
||||||
memcpy(&fmtSize, head+p_wav->headSize, 4);
|
memcpy(&fmtSize, head+p_wav->headSize, 4);
|
||||||
p_wav->headSize += 4;
|
p_wav->headSize += 4;
|
||||||
//sceIoRead(fd, head+p_wav->headSize, fmtSize);
|
//sceIoRead(fd, head+p_wav->headSize, fmtSize);
|
||||||
fileSystem->ReadFile(head+p_wav->headSize, fmtSize);
|
fileSystem->ReadFile(jFile, head+p_wav->headSize, fmtSize);
|
||||||
p_wav->headSize += fmtSize;
|
p_wav->headSize += fmtSize;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//sceIoRead(fd, head+p_wav->headSize, 4);
|
//sceIoRead(fd, head+p_wav->headSize, 4);
|
||||||
fileSystem->ReadFile(head+p_wav->headSize, 4);
|
fileSystem->ReadFile(jFile, head+p_wav->headSize, 4);
|
||||||
p_wav->headSize += 4;
|
p_wav->headSize += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (p_wav->headSize>191)
|
if (p_wav->headSize>191)
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,7 +127,7 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
if (p_wav->channelCount!=1 && p_wav->channelCount!=2)
|
if (p_wav->channelCount!=1 && p_wav->channelCount!=2)
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memcpy(&p_wav->samplePerSecond, head+24, 4);
|
memcpy(&p_wav->samplePerSecond, head+24, 4);
|
||||||
@@ -136,7 +137,7 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
if (p_wav->bytePerSample!=1 && p_wav->bytePerSample!=2)
|
if (p_wav->bytePerSample!=1 && p_wav->bytePerSample!=2)
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
p_wav->nSample = 44100 / p_wav->samplePerSecond;
|
p_wav->nSample = 44100 / p_wav->samplePerSecond;
|
||||||
@@ -147,17 +148,17 @@ char loadWaveData(WAVDATA* p_wav, char* fileName, char memLoad) // WAVE加载,
|
|||||||
if (p_wav->soundSize>4096000)
|
if (p_wav->soundSize>4096000)
|
||||||
{
|
{
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
p_wav->buffer = (char*)malloc(p_wav->soundSize);
|
p_wav->buffer = (char*)malloc(p_wav->soundSize);
|
||||||
memset(p_wav->buffer, 0, p_wav->soundSize);
|
memset(p_wav->buffer, 0, p_wav->soundSize);
|
||||||
//sceIoRead(fd, p_wav->buffer, p_wav->soundSize);
|
//sceIoRead(fd, p_wav->buffer, p_wav->soundSize);
|
||||||
fileSystem->ReadFile(p_wav->buffer, p_wav->soundSize);
|
fileSystem->ReadFile(jFile, p_wav->buffer, p_wav->soundSize);
|
||||||
p_wav->bytePosition = 0;
|
p_wav->bytePosition = 0;
|
||||||
p_wav->fd = -1;
|
p_wav->fd = -1;
|
||||||
//sceIoClose(fd);
|
//sceIoClose(fd);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+159
-72
@@ -107,7 +107,6 @@ JFileSystem* JFileSystem::GetInstance()
|
|||||||
// Tries to set the system and user paths.
|
// Tries to set the system and user paths.
|
||||||
// On some OSes, the parameters get overriden by hardcoded values
|
// On some OSes, the parameters get overriden by hardcoded values
|
||||||
JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
||||||
|
|
||||||
{
|
{
|
||||||
string systemPath = _systemPath;
|
string systemPath = _systemPath;
|
||||||
string userPath = _userPath;
|
string userPath = _userPath;
|
||||||
@@ -131,8 +130,8 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
|||||||
dir.mkdir(USERDIR);
|
dir.mkdir(USERDIR);
|
||||||
dir.cd(USERDIR);
|
dir.cd(USERDIR);
|
||||||
|
|
||||||
userPath = QDir::toNativeSeparators(dir.absolutePath()).toStdString();
|
|
||||||
systemPath = QDir::toNativeSeparators(sysDir.absolutePath()).toStdString();
|
systemPath = QDir::toNativeSeparators(sysDir.absolutePath()).toStdString();
|
||||||
|
userPath = QDir::toNativeSeparators(dir.absolutePath()).toStdString();
|
||||||
|
|
||||||
DebugTrace("User path " << userPath);
|
DebugTrace("User path " << userPath);
|
||||||
DebugTrace("System path " << systemPath);
|
DebugTrace("System path " << systemPath);
|
||||||
@@ -192,9 +191,6 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
|||||||
mZipAvailable = false;
|
mZipAvailable = false;
|
||||||
mZipCachedElementsCount = 0;
|
mZipCachedElementsCount = 0;
|
||||||
mPassword = NULL;
|
mPassword = NULL;
|
||||||
mFileSize = 0;
|
|
||||||
mCurrentFileInZip = NULL;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void JFileSystem::Destroy()
|
void JFileSystem::Destroy()
|
||||||
@@ -208,14 +204,26 @@ void JFileSystem::Destroy()
|
|||||||
|
|
||||||
bool JFileSystem::DirExists(const string& strDirname)
|
bool JFileSystem::DirExists(const string& strDirname)
|
||||||
{
|
{
|
||||||
return (mSystemFS && mSystemFS->DirExists(strDirname)) || mUserFS->DirExists(strDirname);
|
return (
|
||||||
|
(mSystemFS && mSystemFS->DirExists(strDirname))
|
||||||
|
|| mUserFS->DirExists(strDirname)
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
|| QDir(QString(":/") + strDirname.c_str()).exists()
|
||||||
|
#endif
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JFileSystem::FileExists(const string& strFilename)
|
bool JFileSystem::FileExists(const string& strFilename)
|
||||||
{
|
{
|
||||||
if (strFilename.length() < 1 ) return false;
|
if (strFilename.length() < 1 ) return false;
|
||||||
|
|
||||||
return (mSystemFS && mSystemFS->FileExists(strFilename)) || mUserFS->FileExists(strFilename);
|
return (
|
||||||
|
(mSystemFS && mSystemFS->FileExists(strFilename))
|
||||||
|
|| mUserFS->FileExists(strFilename)
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
|| QFile(QString(":/") + strFilename.c_str()).exists()
|
||||||
|
#endif
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JFileSystem::MakeDir(const string & dir)
|
bool JFileSystem::MakeDir(const string & dir)
|
||||||
@@ -275,7 +283,6 @@ bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL
|
|||||||
}
|
}
|
||||||
mZipAvailable = true;
|
mZipAvailable = true;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -285,7 +292,6 @@ void JFileSystem::DetachZipFile()
|
|||||||
{
|
{
|
||||||
mZipFile.close();
|
mZipFile.close();
|
||||||
}
|
}
|
||||||
mCurrentFileInZip = NULL;
|
|
||||||
mZipAvailable = false;
|
mZipAvailable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,28 +313,58 @@ bool JFileSystem::openForRead(izfstream & File, const string & FilePath) {
|
|||||||
|
|
||||||
bool JFileSystem::readIntoString(const string & FilePath, string & target)
|
bool JFileSystem::readIntoString(const string & FilePath, string & target)
|
||||||
{
|
{
|
||||||
izfstream file;
|
bool result = false;
|
||||||
if (!openForRead(file, FilePath))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int fileSize = GetFileSize(file);
|
// Trying first with a izfstream
|
||||||
|
do {
|
||||||
|
izfstream file;
|
||||||
|
if (!openForRead(file, FilePath))
|
||||||
|
break;
|
||||||
|
|
||||||
|
int fileSize = GetFileSize(file);
|
||||||
|
|
||||||
#ifndef __MINGW32__
|
#ifndef __MINGW32__
|
||||||
try {
|
try {
|
||||||
#endif
|
#endif
|
||||||
target.resize((std::string::size_type) fileSize);
|
target.resize((std::string::size_type) fileSize);
|
||||||
#ifndef __MINGW32__
|
#ifndef __MINGW32__
|
||||||
} catch (bad_alloc&) {
|
} catch (bad_alloc&) {
|
||||||
return false;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (fileSize)
|
||||||
|
file.read(&target[0], fileSize);
|
||||||
|
|
||||||
|
file.close();
|
||||||
|
result = true;
|
||||||
|
} while (0);
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
// Now we try with qrc if we haven't finc anything yet
|
||||||
|
if (!result) do {
|
||||||
|
string path = string(":/") + FilePath.c_str();
|
||||||
|
QFile qfile(path.c_str());
|
||||||
|
qfile.open(QIODevice::ReadOnly);
|
||||||
|
if(!qfile.isReadable())
|
||||||
|
break;
|
||||||
|
int fileSize = qfile.size();
|
||||||
|
#ifndef __MINGW32__
|
||||||
|
try {
|
||||||
|
#endif
|
||||||
|
target.resize((std::string::size_type) fileSize);
|
||||||
|
#ifndef __MINGW32__
|
||||||
|
} catch (bad_alloc&) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (fileSize)
|
||||||
|
qfile.read(&target[0], fileSize);
|
||||||
|
|
||||||
if (fileSize)
|
qfile.close();
|
||||||
file.read(&target[0], fileSize);
|
result = true;
|
||||||
|
} while (0);
|
||||||
|
#endif //QT_CONFIG
|
||||||
|
|
||||||
file.close();
|
return result;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JFileSystem::openForWrite(ofstream & File, const string & FilePath, ios_base::openmode mode)
|
bool JFileSystem::openForWrite(ofstream & File, const string & FilePath, ios_base::openmode mode)
|
||||||
@@ -374,57 +410,72 @@ bool JFileSystem::openForWrite(ofstream & File, const string & FilePath, ios_bas
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JFileSystem::OpenFile(const string &filename)
|
JFile* JFileSystem::OpenFile(const string &filename)
|
||||||
{
|
{
|
||||||
mCurrentFileInZip = NULL;
|
bool result;
|
||||||
|
JFile* jFile = new JFile();
|
||||||
|
jFile->mCurrentFileInZip = NULL;
|
||||||
|
|
||||||
if (!mZipAvailable || !mZipFile)
|
do {
|
||||||
return openForRead(mFile, filename);
|
if (!mZipAvailable || !mZipFile) {
|
||||||
|
result = openForRead(jFile->mFile, filename);
|
||||||
|
if(!result) {
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
string path = string(":/") + filename.c_str();
|
||||||
|
jFile->mpqFile = new QFile(path.c_str());
|
||||||
|
jFile->mpqFile->open(QIODevice::ReadOnly);
|
||||||
|
result = jFile->mpqFile->isReadable();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
preloadZip(mZipFileName);
|
preloadZip(mZipFileName);
|
||||||
map<string,JZipCache *>::iterator it = mZipCache.find(mZipFileName);
|
map<string,JZipCache *>::iterator it = mZipCache.find(mZipFileName);
|
||||||
if (it == mZipCache.end())
|
if (it == mZipCache.end())
|
||||||
{
|
{
|
||||||
//DetachZipFile();
|
//DetachZipFile();
|
||||||
//return OpenFile(filename);
|
//return OpenFile(filename);
|
||||||
return openForRead(mFile, filename);
|
result = openForRead(jFile->mFile, filename);
|
||||||
}
|
break;
|
||||||
JZipCache * zc = it->second;
|
}
|
||||||
map<string, filesystem::limited_file_info>::iterator it2 = zc->dir.find(filename);
|
JZipCache * zc = it->second;
|
||||||
if (it2 == zc->dir.end())
|
map<string, filesystem::limited_file_info>::iterator it2 = zc->dir.find(filename);
|
||||||
{
|
if (it2 == zc->dir.end())
|
||||||
/*DetachZipFile();
|
{
|
||||||
|
/*DetachZipFile();
|
||||||
return OpenFile(filename); */
|
return OpenFile(filename); */
|
||||||
return openForRead(mFile, filename);
|
result = openForRead(jFile->mFile, filename);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
jFile->mCurrentFileInZip = &(it2->second);
|
||||||
|
result = true;
|
||||||
|
} while(0);
|
||||||
|
|
||||||
|
if(result)
|
||||||
|
return jFile;
|
||||||
|
else {
|
||||||
|
delete jFile;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mCurrentFileInZip = &(it2->second);
|
|
||||||
mFileSize = it2->second.m_Size;
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JFileSystem::CloseFile()
|
void JFileSystem::CloseFile(JFile* jFile)
|
||||||
{
|
{
|
||||||
if (mZipAvailable && mZipFile)
|
delete jFile;
|
||||||
{
|
|
||||||
mCurrentFileInZip = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mFile)
|
|
||||||
mFile.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//returns 0 if less than "size" bits were read
|
//returns 0 if less than "size" bits were read
|
||||||
int JFileSystem::ReadFile(void *buffer, int size)
|
int JFileSystem::ReadFile(JFile* jFile, void *buffer, int size)
|
||||||
{
|
{
|
||||||
if (mCurrentFileInZip)
|
if (jFile->mCurrentFileInZip)
|
||||||
{
|
{
|
||||||
assert(mZipFile);
|
assert(mZipFile);
|
||||||
if((size_t)size > mCurrentFileInZip->m_Size) //only support "store" method for zip inside zips
|
if((size_t)size > jFile->mCurrentFileInZip->m_Size) //only support "store" method for zip inside zips
|
||||||
return 0;
|
return 0;
|
||||||
std::streamoff offset = filesystem::SkipLFHdr(mZipFile, mCurrentFileInZip->m_Offset);
|
std::streamoff offset = filesystem::SkipLFHdr(mZipFile, jFile->mCurrentFileInZip->m_Offset);
|
||||||
if (!mZipFile.seekg(offset))
|
if (!mZipFile.seekg(offset))
|
||||||
return 0;
|
return 0;
|
||||||
mZipFile.read((char *) buffer, size);
|
mZipFile.read((char *) buffer, size);
|
||||||
@@ -432,16 +483,43 @@ int JFileSystem::ReadFile(void *buffer, int size)
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mFile)
|
#ifdef QT_CONFIG
|
||||||
|
if(jFile->mpqFile) {
|
||||||
|
return jFile->mpqFile->read((char*)buffer, size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!jFile->mFile)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
assert(!mFile.Zipped() || (size_t)size <= mFile.getUncompSize());
|
assert(!jFile->mFile.Zipped() || (size_t)size <= jFile->mFile.getUncompSize());
|
||||||
mFile.read((char *)buffer, size);
|
jFile->mFile.read((char *)buffer, size);
|
||||||
if (mFile.eof())
|
if (jFile->mFile.eof())
|
||||||
return 0;
|
return 0;
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool JFileSystem::ReadFileLine(JFile* jFile, string& s)
|
||||||
|
{
|
||||||
|
if(!jFile) return false;
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
if(jFile->mpqFile) {
|
||||||
|
QString qs = jFile->mpqFile->readLine();
|
||||||
|
if(qs.isEmpty())
|
||||||
|
return false;
|
||||||
|
else {
|
||||||
|
s = qs.toStdString();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if(!jFile->mFile)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
assert(!jFile->mFile.Zipped());
|
||||||
|
return std::getline(jFile->mFile, s);
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::string>& JFileSystem::scanRealFolder(const std::string& folderName, std::vector<std::string>& results)
|
std::vector<std::string>& JFileSystem::scanRealFolder(const std::string& folderName, std::vector<std::string>& results)
|
||||||
{
|
{
|
||||||
DIR *dip = opendir(folderName.c_str());
|
DIR *dip = opendir(folderName.c_str());
|
||||||
@@ -529,6 +607,15 @@ std::vector<std::string>& JFileSystem::scanfolder(const std::string& _folderName
|
|||||||
seen[systemReal[i]] = true;
|
seen[systemReal[i]] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef QT_CONFIG
|
||||||
|
string path = string(":/") + folderName;
|
||||||
|
QDir dir(path.c_str());
|
||||||
|
QStringList list = dir.entryList();
|
||||||
|
for(int i = 0; i < list.size(); i++)
|
||||||
|
{
|
||||||
|
seen[list.at(i).toStdString()] = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for(map<string,bool>::iterator it = seen.begin(); it != seen.end(); ++it)
|
for(map<string,bool>::iterator it = seen.begin(); it != seen.end(); ++it)
|
||||||
{
|
{
|
||||||
@@ -544,12 +631,18 @@ std::vector<std::string> JFileSystem::scanfolder(const std::string& folderName)
|
|||||||
return scanfolder(folderName, result);
|
return scanfolder(folderName, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int JFileSystem::GetFileSize()
|
int JFileSystem::GetFileSize(JFile* jFile)
|
||||||
{
|
{
|
||||||
if (mCurrentFileInZip)
|
if (jFile->mCurrentFileInZip)
|
||||||
return mFileSize;
|
return jFile->mCurrentFileInZip->m_Size;
|
||||||
|
|
||||||
return GetFileSize(mFile);
|
#ifdef QT_CONFIG
|
||||||
|
if(jFile->mpqFile) {
|
||||||
|
return jFile->mpqFile->size();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return GetFileSize(jFile->mFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JFileSystem::Rename(string _from, string _to)
|
bool JFileSystem::Rename(string _from, string _to)
|
||||||
@@ -557,13 +650,7 @@ bool JFileSystem::Rename(string _from, string _to)
|
|||||||
string from = mUserFSPath + _from;
|
string from = mUserFSPath + _from;
|
||||||
string to = mUserFSPath + _to;
|
string to = mUserFSPath + _to;
|
||||||
std::remove(to.c_str());
|
std::remove(to.c_str());
|
||||||
return (rename(from.c_str(), to.c_str()) == 0);
|
return rename(from.c_str(), to.c_str()) ? true: false;
|
||||||
}
|
|
||||||
|
|
||||||
bool JFileSystem::Remove(string aFile)
|
|
||||||
{
|
|
||||||
string toRemove = mUserFSPath + aFile;
|
|
||||||
return (std::remove(toRemove.c_str()) == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int JFileSystem::GetFileSize(izfstream & file)
|
int JFileSystem::GetFileSize(izfstream & file)
|
||||||
|
|||||||
+10
-9
@@ -116,25 +116,26 @@ bool JGBKFont::Init(const char* engFileName, const char* chnFileName, int fontsi
|
|||||||
int size;
|
int size;
|
||||||
|
|
||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(engFileName))
|
JFile* jFile = fileSys->OpenFile(engFileName);
|
||||||
|
if (!jFile)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
size = fileSys->GetFileSize();
|
size = fileSys->GetFileSize(jFile);
|
||||||
mEngFont = new BYTE[size];
|
mEngFont = new BYTE[size];
|
||||||
|
|
||||||
fileSys->ReadFile(mEngFont, size);
|
fileSys->ReadFile(jFile, mEngFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
|
jFile = fileSys->OpenFile(chnFileName);
|
||||||
if (!fileSys->OpenFile(chnFileName))
|
if (!jFile)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
size = fileSys->GetFileSize();
|
size = fileSys->GetFileSize(jFile);
|
||||||
|
|
||||||
mChnFont = new BYTE[size];
|
mChnFont = new BYTE[size];
|
||||||
|
|
||||||
fileSys->ReadFile(mChnFont, size);
|
fileSys->ReadFile(jFile, mChnFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
+25
-20
@@ -892,9 +892,10 @@ static void PNGCustomReadDataFn(png_structp png_ptr, png_bytep data, png_size_t
|
|||||||
{
|
{
|
||||||
png_size_t check;
|
png_size_t check;
|
||||||
|
|
||||||
JFileSystem *fileSystem = (JFileSystem*)png_ptr->io_ptr;
|
JFile* jFile = (JFile*)png_ptr->io_ptr;
|
||||||
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
|
|
||||||
check = fileSystem->ReadFile(data, length);
|
check = fileSystem->ReadFile(jFile, data, length);
|
||||||
|
|
||||||
if (check != length)
|
if (check != length)
|
||||||
{
|
{
|
||||||
@@ -1038,23 +1039,24 @@ void JRenderer::LoadJPG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
bits32 = NULL;
|
bits32 = NULL;
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rawsize = fileSystem->GetFileSize();
|
rawsize = fileSystem->GetFileSize(jFile);
|
||||||
|
|
||||||
rawdata = new u8[rawsize];
|
rawdata = new u8[rawsize];
|
||||||
|
|
||||||
if (!rawdata)
|
if (!rawdata)
|
||||||
{
|
{
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->ReadFile(rawdata, rawsize);
|
fileSystem->ReadFile(jFile, rawdata, rawsize);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
|
|
||||||
cinfo.err = jpeg_std_error(&jerr);
|
cinfo.err = jpeg_std_error(&jerr);
|
||||||
@@ -1362,24 +1364,25 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char* filename, int mode,
|
|||||||
u32* line;
|
u32* line;
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(filename)) return JGE_ERR_CANT_OPEN_FILE;
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile) return JGE_ERR_CANT_OPEN_FILE;
|
||||||
|
|
||||||
//JLOG("PNG opened - creating read struct");
|
//JLOG("PNG opened - creating read struct");
|
||||||
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
if (png_ptr == NULL) {
|
if (png_ptr == NULL) {
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return JGE_ERR_PNG;
|
return JGE_ERR_PNG;
|
||||||
}
|
}
|
||||||
//JLOG("Setting error callback func");
|
//JLOG("Setting error callback func");
|
||||||
png_set_error_fn(png_ptr, (png_voidp) NULL, (png_error_ptr) NULL, PNGCustomWarningFn);
|
png_set_error_fn(png_ptr, (png_voidp) NULL, (png_error_ptr) NULL, PNGCustomWarningFn);
|
||||||
info_ptr = png_create_info_struct(png_ptr);
|
info_ptr = png_create_info_struct(png_ptr);
|
||||||
if (info_ptr == NULL) {
|
if (info_ptr == NULL) {
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
||||||
return JGE_ERR_PNG;
|
return JGE_ERR_PNG;
|
||||||
}
|
}
|
||||||
png_init_io(png_ptr, NULL);
|
png_init_io(png_ptr, NULL);
|
||||||
png_set_read_fn(png_ptr, (png_voidp)fileSystem, PNGCustomReadDataFn);
|
png_set_read_fn(png_ptr, (png_voidp)jFile, PNGCustomReadDataFn);
|
||||||
|
|
||||||
png_set_sig_bytes(png_ptr, sig_read);
|
png_set_sig_bytes(png_ptr, sig_read);
|
||||||
png_read_info(png_ptr, info_ptr);
|
png_read_info(png_ptr, info_ptr);
|
||||||
@@ -1392,7 +1395,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char* filename, int mode,
|
|||||||
png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
|
png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
|
||||||
line = (u32*) malloc(width * 4);
|
line = (u32*) malloc(width * 4);
|
||||||
if (!line) {
|
if (!line) {
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
||||||
return JGE_ERR_MALLOC_FAILED;
|
return JGE_ERR_MALLOC_FAILED;
|
||||||
}
|
}
|
||||||
@@ -1430,7 +1433,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char* filename, int mode,
|
|||||||
std::ostringstream stream;
|
std::ostringstream stream;
|
||||||
stream << "Alloc failed for: Tex Width: " << texWidth << " Tex Height: " << kVerticalBlockSize << ", total bytes: " << texWidth * kVerticalBlockSize * sizeof(PIXEL_TYPE);
|
stream << "Alloc failed for: Tex Width: " << texWidth << " Tex Height: " << kVerticalBlockSize << ", total bytes: " << texWidth * kVerticalBlockSize * sizeof(PIXEL_TYPE);
|
||||||
JLOG(stream.str().c_str());
|
JLOG(stream.str().c_str());
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
||||||
return JGE_ERR_MALLOC_FAILED;
|
return JGE_ERR_MALLOC_FAILED;
|
||||||
}
|
}
|
||||||
@@ -1505,7 +1508,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char* filename, int mode,
|
|||||||
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
|
||||||
|
|
||||||
//JLOG("Closing PNG");
|
//JLOG("Closing PNG");
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
if (done)
|
if (done)
|
||||||
{
|
{
|
||||||
@@ -1725,9 +1728,9 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
|
|
||||||
int image_gif_read(GifFileType * ft, GifByteType * buf, int size)
|
int image_gif_read(GifFileType * ft, GifByteType * buf, int size)
|
||||||
{
|
{
|
||||||
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
JFileSystem *fileSys = (JFileSystem *)ft->UserData;
|
JFile* jFile = (JFile*)ft->UserData;
|
||||||
if (fileSys->ReadFile(buf, size))
|
if (fileSys->ReadFile(jFile, buf, size))
|
||||||
return size;
|
return size;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1740,15 +1743,17 @@ void JRenderer::LoadGIF(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
|
|
||||||
|
|
||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(filename))
|
JFile* jFile = fileSys->OpenFile(filename);
|
||||||
|
|
||||||
|
if (!jFile)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DWORD bkcol;
|
DWORD bkcol;
|
||||||
int result = image_readgif(fileSys, textureInfo, &bkcol, image_gif_read, mode);
|
int result = image_readgif(jFile, textureInfo, &bkcol, image_gif_read, mode);
|
||||||
|
|
||||||
if(result!=0)
|
if(result!=0)
|
||||||
textureInfo.mBits=NULL;
|
textureInfo.mBits=NULL;
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -42,10 +42,11 @@ JLBFont::JLBFont(const char *fontname, int lineheight, bool useVideoRAM)
|
|||||||
|
|
||||||
//FILE *file;
|
//FILE *file;
|
||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(filename)) return;
|
JFile* jFile = fileSys->OpenFile(filename);
|
||||||
|
if (!jFile) return;
|
||||||
|
|
||||||
fileSys->ReadFile((u8 *)buffer, 2048);
|
fileSys->ReadFile(jFile, (u8 *)buffer, 2048);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
sprintf(filename, "%s.png", fontname);
|
sprintf(filename, "%s.png", fontname);
|
||||||
mTexture = mRenderer->LoadTexture(filename, useVideoRAM);
|
mTexture = mRenderer->LoadTexture(filename, useVideoRAM);
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ bool JMD2Model::Load(char *filename, char *textureName)
|
|||||||
// open the model file
|
// open the model file
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile)
|
||||||
return false;
|
return false;
|
||||||
//filePtr = fopen(filename, "rb");
|
//filePtr = fopen(filename, "rb");
|
||||||
//if (filePtr == NULL)
|
//if (filePtr == NULL)
|
||||||
@@ -107,13 +108,13 @@ bool JMD2Model::Load(char *filename, char *textureName)
|
|||||||
//fileLen = ftell(filePtr);
|
//fileLen = ftell(filePtr);
|
||||||
//fseek(filePtr, 0, SEEK_SET);
|
//fseek(filePtr, 0, SEEK_SET);
|
||||||
|
|
||||||
fileLen = fileSystem->GetFileSize();
|
fileLen = fileSystem->GetFileSize(jFile);
|
||||||
|
|
||||||
// read entire file into buffer
|
// read entire file into buffer
|
||||||
buffer = (char*)malloc(fileLen + 1);
|
buffer = (char*)malloc(fileLen + 1);
|
||||||
//fread(buffer, sizeof(char), fileLen, filePtr);
|
//fread(buffer, sizeof(char), fileLen, filePtr);
|
||||||
fileSystem->ReadFile(buffer, fileLen);
|
fileSystem->ReadFile(jFile, buffer, fileLen);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
// extract model file header from buffer
|
// extract model file header from buffer
|
||||||
modelHeader = (modelHeader_t*)buffer;
|
modelHeader = (modelHeader_t*)buffer;
|
||||||
|
|||||||
@@ -47,14 +47,15 @@ bool JOBJModel::Load(const char *modelName, const char *textureName)
|
|||||||
{
|
{
|
||||||
|
|
||||||
JFileSystem* fileSys = JFileSystem::GetInstance();
|
JFileSystem* fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(modelName))
|
JFile* jFile = fileSys->OpenFile(modelName);
|
||||||
|
if (!jFile)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int size = fileSys->GetFileSize();
|
int size = fileSys->GetFileSize(jFile);
|
||||||
char *buffer = new char[size];
|
char *buffer = new char[size];
|
||||||
|
|
||||||
fileSys->ReadFile(buffer, size);
|
fileSys->ReadFile(jFile, buffer, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
Vector3D vert;
|
Vector3D vert;
|
||||||
|
|
||||||
|
|||||||
@@ -55,11 +55,12 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem == NULL) return false;
|
if (fileSystem == NULL) return false;
|
||||||
|
|
||||||
if (!fileSystem->OpenFile(filename)) return false;
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile) return false;
|
||||||
|
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *xmlBuffer = new char[size];
|
char *xmlBuffer = new char[size];
|
||||||
fileSystem->ReadFile(xmlBuffer, size);
|
fileSystem->ReadFile(jFile, xmlBuffer, size);
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
|
|
||||||
@@ -296,7 +297,7 @@ bool JParticleEffect::Load(const char* filename)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
delete[] xmlBuffer;
|
delete[] xmlBuffer;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -93,13 +93,13 @@ bool JResourceManager::LoadResource(const string& resourceName)
|
|||||||
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem == NULL) return false;
|
if (fileSystem == NULL) return false;
|
||||||
|
|
||||||
|
JFile* jFile = fileSystem->OpenFile(path.c_str());
|
||||||
|
|
||||||
|
if (!jFile) return false;
|
||||||
|
|
||||||
if (!fileSystem->OpenFile(path.c_str())) return false;
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
|
|
||||||
int size = fileSystem->GetFileSize();
|
|
||||||
char *xmlBuffer = new char[size];
|
char *xmlBuffer = new char[size];
|
||||||
fileSystem->ReadFile(xmlBuffer, size);
|
fileSystem->ReadFile(jFile, xmlBuffer, size);
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
doc.Parse(xmlBuffer);
|
doc.Parse(xmlBuffer);
|
||||||
@@ -179,7 +179,7 @@ bool JResourceManager::LoadResource(const string& resourceName)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
delete[] xmlBuffer;
|
delete[] xmlBuffer;
|
||||||
// JGERelease();
|
// JGERelease();
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -41,11 +41,12 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
|
|||||||
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
||||||
|
|
||||||
if (fileSystem == NULL) return false;
|
if (fileSystem == NULL) return false;
|
||||||
if (!fileSystem->OpenFile(filename)) return false;
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile) return false;
|
||||||
|
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *xmlBuffer = new char[size];
|
char *xmlBuffer = new char[size];
|
||||||
fileSystem->ReadFile(xmlBuffer, size);
|
fileSystem->ReadFile(jFile, xmlBuffer, size);
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
doc.Parse(xmlBuffer);
|
doc.Parse(xmlBuffer);
|
||||||
@@ -76,7 +77,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
delete[] xmlBuffer;
|
delete[] xmlBuffer;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+6
-5
@@ -199,15 +199,16 @@ bool JTTFont::Load(const char *filename, int size, int mode)
|
|||||||
|
|
||||||
if (FT_Init_FreeType( &mLibrary ) == 0)
|
if (FT_Init_FreeType( &mLibrary ) == 0)
|
||||||
{
|
{
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (jFile)
|
||||||
{
|
{
|
||||||
mFontBitsSize = fileSystem->GetFileSize();
|
mFontBitsSize = fileSystem->GetFileSize(jFile);
|
||||||
|
|
||||||
mFontBits = (FT_Byte*)malloc(mFontBitsSize);
|
mFontBits = (FT_Byte*)malloc(mFontBitsSize);
|
||||||
|
|
||||||
fileSystem->ReadFile(mFontBits, mFontBitsSize);
|
fileSystem->ReadFile(jFile, mFontBits, mFontBitsSize);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
if (FT_New_Memory_Face(mLibrary, mFontBits, mFontBitsSize, 0, &mFace ) == 0)
|
if (FT_New_Memory_Face(mLibrary, mFontBits, mFontBitsSize, 0, &mFace ) == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
+11
-18
@@ -9,11 +9,11 @@
|
|||||||
#include <QtDeclarative>
|
#include <QtDeclarative>
|
||||||
#include "qmlapplicationviewer.h"
|
#include "qmlapplicationviewer.h"
|
||||||
#endif //QT_WIDGET
|
#endif //QT_WIDGET
|
||||||
#include "Downloader.h"
|
#include "filedownloader.h"
|
||||||
#include "GameApp.h"
|
#include "GameApp.h"
|
||||||
#include "corewrapper.h"
|
#include "corewrapper.h"
|
||||||
|
|
||||||
WagicCore* g_glwidget = NULL;
|
QWidget* g_glwidget = NULL;
|
||||||
|
|
||||||
static const struct { LocalKeySym keysym; JButton keycode; } gDefaultBindings[] =
|
static const struct { LocalKeySym keysym; JButton keycode; } gDefaultBindings[] =
|
||||||
{
|
{
|
||||||
@@ -69,25 +69,18 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
#endif //QT_WIDGET
|
#endif //QT_WIDGET
|
||||||
|
|
||||||
|
if(argc >= 2 && string(argv[1]) == "testsuite")
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
result += WagicCore::runTestSuite();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
app->setApplicationName(WagicCore::getApplicationName());
|
app->setApplicationName(WagicCore::getApplicationName());
|
||||||
DownloadRequest* downloadRequest = NULL;
|
FileDownloader fileDownloader(USERDIR, WAGIC_RESOURCE_NAME);
|
||||||
#ifdef WAGIC_RESOURCE_URL
|
|
||||||
Downloader*downloader = Downloader::GetInstance();
|
|
||||||
downloadRequest = downloader->Get(
|
|
||||||
"core.zip",
|
|
||||||
WAGIC_RESOURCE_URL
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
#ifdef QT_WIDGET
|
#ifdef QT_WIDGET
|
||||||
g_glwidget = new WagicCore();
|
g_glwidget = new WagicCore();
|
||||||
if(!downloadRequest || downloadRequest->getDownloadStatus() == DownloadRequest::DOWNLOADED)
|
g_glwidget->connect(&fileDownloader, SIGNAL(finished(int)), SLOT(start(int)));
|
||||||
{
|
|
||||||
g_glwidget->start(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_glwidget->connect(downloadRequest, SIGNAL(statusChanged(int)), SLOT(start(int)));
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
qmlRegisterType<WagicCore>("CustomComponents", 1, 0, "WagicCore");
|
qmlRegisterType<WagicCore>("CustomComponents", 1, 0, "WagicCore");
|
||||||
|
|
||||||
|
|||||||
+1
-14
@@ -78,20 +78,7 @@ extern "C" void Java_org_libsdl_app_SDLActivity_nativeResume(
|
|||||||
{
|
{
|
||||||
if (!g_engine)
|
if (!g_engine)
|
||||||
return;
|
return;
|
||||||
g_engine->Resume();
|
g_engine->Resume();
|
||||||
}
|
|
||||||
|
|
||||||
#include "Wagic_Version.h"
|
|
||||||
extern "C" jstring Java_org_libsdl_app_SDLActivity_getResourceName(
|
|
||||||
JNIEnv* env, jclass cls)
|
|
||||||
{
|
|
||||||
return env->NewStringUTF (WAGIC_RESOURCE_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" jstring Java_org_libsdl_app_SDLActivity_getResourceUrl(
|
|
||||||
JNIEnv* env, jclass cls)
|
|
||||||
{
|
|
||||||
return env->NewStringUTF (WAGIC_RESOURCE_URL);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -57,19 +57,20 @@ hgeFont::hgeFont(const char *szFont, bool bMipmap __attribute__((unused)))
|
|||||||
// Load font description
|
// Load font description
|
||||||
|
|
||||||
JFileSystem* fileSys = JFileSystem::GetInstance();
|
JFileSystem* fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(szFont)) return;
|
JFile* jFile = fileSys->OpenFile(szFont);
|
||||||
|
if (!jFile) return;
|
||||||
|
|
||||||
//data=hge->Resource_Load(szFont, &size);
|
//data=hge->Resource_Load(szFont, &size);
|
||||||
//if(!data) return;
|
//if(!data) return;
|
||||||
size = fileSys->GetFileSize();
|
size = fileSys->GetFileSize(jFile);
|
||||||
|
|
||||||
desc = new char[size+1];
|
desc = new char[size+1];
|
||||||
//memcpy(desc,data,size);
|
//memcpy(desc,data,size);
|
||||||
fileSys->ReadFile(desc, size);
|
fileSys->ReadFile(jFile, desc, size);
|
||||||
desc[size]=0;
|
desc[size]=0;
|
||||||
|
|
||||||
//hge->Resource_Free(data);
|
//hge->Resource_Free(data);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
pdesc=_get_line(desc,linebuf);
|
pdesc=_get_line(desc,linebuf);
|
||||||
if(strcmp(linebuf, FNTHEADERTAG))
|
if(strcmp(linebuf, FNTHEADERTAG))
|
||||||
|
|||||||
+28
-33
@@ -50,46 +50,41 @@ float Random_Float(float min, float max)
|
|||||||
|
|
||||||
hgeParticleSystem::hgeParticleSystem(const char *filename, JQuad *sprite)
|
hgeParticleSystem::hgeParticleSystem(const char *filename, JQuad *sprite)
|
||||||
{
|
{
|
||||||
//void *psi;
|
JFileSystem* fileSys = JFileSystem::GetInstance();
|
||||||
//hgeParticleSystemInfo psi;
|
JFile* jFile = fileSys->OpenFile(filename);
|
||||||
|
if (!jFile) return;
|
||||||
|
|
||||||
JFileSystem* fileSys = JFileSystem::GetInstance();
|
//if(!psi) return;
|
||||||
//hge=hgeCreate(HGE_VERSION);
|
|
||||||
|
|
||||||
//psi=hge->Resource_Load(filename);
|
//memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
||||||
if (!fileSys->OpenFile(filename)) return;
|
//hge->Resource_Free(psi);
|
||||||
|
|
||||||
//if(!psi) return;
|
// Skip reading the pointer as it may be larger than 4 bytes in the structure
|
||||||
|
void *dummyPointer;
|
||||||
|
fileSys->ReadFile(jFile, &dummyPointer, 4);
|
||||||
|
// we're actually trying to read more than the file size now, but it's no problem.
|
||||||
|
// Note that this fix is only to avoid the largest problems, filling a structure
|
||||||
|
// by directly reading a file, is really a bad idea ...
|
||||||
|
fileSys->ReadFile(jFile, &(info.nEmission), sizeof(hgeParticleSystemInfo) - 4);
|
||||||
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
//memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
info.sprite=sprite;
|
||||||
//hge->Resource_Free(psi);
|
// info.fGravityMin *= 100;
|
||||||
|
// info.fGravityMax *= 100;
|
||||||
|
// info.fSpeedMin *= 100;
|
||||||
|
// info.fSpeedMax *= 100;
|
||||||
|
|
||||||
// Skip reading the pointer as it may be larger than 4 bytes in the structure
|
vecLocation.x=vecPrevLocation.x=0.0f;
|
||||||
void *dummyPointer;
|
vecLocation.y=vecPrevLocation.y=0.0f;
|
||||||
fileSys->ReadFile(&dummyPointer, 4);
|
fTx=fTy=0;
|
||||||
// we're actually trying to read more than the file size now, but it's no problem.
|
|
||||||
// Note that this fix is only to avoid the largest problems, filling a structure
|
|
||||||
// by directly reading a file, is really a bad idea ...
|
|
||||||
fileSys->ReadFile(&(info.nEmission), sizeof(hgeParticleSystemInfo) - 4);
|
|
||||||
fileSys->CloseFile();
|
|
||||||
|
|
||||||
info.sprite=sprite;
|
fEmissionResidue=0.0f;
|
||||||
// info.fGravityMin *= 100;
|
nParticlesAlive=0;
|
||||||
// info.fGravityMax *= 100;
|
fAge=-2.0;
|
||||||
// info.fSpeedMin *= 100;
|
mTimer = 0.0f;
|
||||||
// info.fSpeedMax *= 100;
|
|
||||||
|
|
||||||
vecLocation.x=vecPrevLocation.x=0.0f;
|
rectBoundingBox.Clear();
|
||||||
vecLocation.y=vecPrevLocation.y=0.0f;
|
bUpdateBoundingBox=false;
|
||||||
fTx=fTy=0;
|
|
||||||
|
|
||||||
fEmissionResidue=0.0f;
|
|
||||||
nParticlesAlive=0;
|
|
||||||
fAge=-2.0;
|
|
||||||
mTimer = 0.0f;
|
|
||||||
|
|
||||||
rectBoundingBox.Clear();
|
|
||||||
bUpdateBoundingBox=false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hgeParticleSystem::hgeParticleSystem(hgeParticleSystemInfo *psi)
|
hgeParticleSystem::hgeParticleSystem(hgeParticleSystemInfo *psi)
|
||||||
|
|||||||
+36
-29
@@ -1683,20 +1683,21 @@ void JRenderer::LoadJPG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
int rawsize, i;
|
int rawsize, i;
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(filename)) return;
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile) return;
|
||||||
|
|
||||||
rawsize = fileSystem->GetFileSize();
|
rawsize = fileSystem->GetFileSize(jFile);
|
||||||
|
|
||||||
rawdata = new BYTE[rawsize];
|
rawdata = new BYTE[rawsize];
|
||||||
|
|
||||||
if (!rawdata)
|
if (!rawdata)
|
||||||
{
|
{
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->ReadFile(rawdata, rawsize);
|
fileSystem->ReadFile(jFile, rawdata, rawsize);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
// Initialize libJpeg Object
|
// Initialize libJpeg Object
|
||||||
cinfo.err = jpeg_std_error(&jerr);
|
cinfo.err = jpeg_std_error(&jerr);
|
||||||
@@ -1804,9 +1805,10 @@ static void PNGCustomReadDataFn(png_structp png_ptr, png_bytep data, png_size_t
|
|||||||
{
|
{
|
||||||
png_size_t check;
|
png_size_t check;
|
||||||
|
|
||||||
JFileSystem *fileSystem = (JFileSystem*)png_ptr->io_ptr;
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
|
JFile *jFile = (JFile*)png_ptr->io_ptr;
|
||||||
|
|
||||||
check = fileSystem->ReadFile(data, length);
|
check = fileSystem->ReadFile(jFile, data, length);
|
||||||
|
|
||||||
if (check != length)
|
if (check != length)
|
||||||
{
|
{
|
||||||
@@ -1869,13 +1871,14 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
DWORD* line;
|
DWORD* line;
|
||||||
|
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile)
|
||||||
return JGE_ERR_CANT_OPEN_FILE;
|
return JGE_ERR_CANT_OPEN_FILE;
|
||||||
|
|
||||||
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
{
|
{
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
return JGE_ERR_PNG;
|
return JGE_ERR_PNG;
|
||||||
}
|
}
|
||||||
@@ -1885,14 +1888,14 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
if (info_ptr == NULL)
|
if (info_ptr == NULL)
|
||||||
{
|
{
|
||||||
//fclose(fp);
|
//fclose(fp);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
||||||
|
|
||||||
return JGE_ERR_PNG;
|
return JGE_ERR_PNG;
|
||||||
}
|
}
|
||||||
png_init_io(png_ptr, NULL);
|
png_init_io(png_ptr, NULL);
|
||||||
png_set_read_fn(png_ptr, (png_voidp)fileSystem, PNGCustomReadDataFn);
|
png_set_read_fn(png_ptr, (png_voidp)jFile, PNGCustomReadDataFn);
|
||||||
|
|
||||||
png_set_sig_bytes(png_ptr, sig_read);
|
png_set_sig_bytes(png_ptr, sig_read);
|
||||||
png_read_info(png_ptr, info_ptr);
|
png_read_info(png_ptr, info_ptr);
|
||||||
@@ -1908,7 +1911,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
if (!line)
|
if (!line)
|
||||||
{
|
{
|
||||||
//fclose(fp);
|
//fclose(fp);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
||||||
return JGE_ERR_MALLOC_FAILED;
|
return JGE_ERR_MALLOC_FAILED;
|
||||||
@@ -1957,7 +1960,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
png_read_end(png_ptr, info_ptr);
|
png_read_end(png_ptr, info_ptr);
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
|
|
||||||
textureInfo.mBits = buffer;
|
textureInfo.mBits = buffer;
|
||||||
@@ -2116,9 +2119,10 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
|
|
||||||
int image_gif_read(GifFileType * ft, GifByteType * buf, int size)
|
int image_gif_read(GifFileType * ft, GifByteType * buf, int size)
|
||||||
{
|
{
|
||||||
JFileSystem *fileSys = (JFileSystem *)ft->UserData;
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
//return fread(buf, 1, size, (FILE *)ft->UserData);
|
JFile* jFile = (JFile*)ft->UserData;
|
||||||
if (fileSys->ReadFile(buf, size))
|
|
||||||
|
if (fileSys->ReadFile(jFile, buf, size))
|
||||||
return size;
|
return size;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2130,17 +2134,18 @@ void JRenderer::LoadGIF(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
///*
|
///*
|
||||||
//FILE * fp = fopen(filename, "rb");
|
//FILE * fp = fopen(filename, "rb");
|
||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//if(fp == NULL)
|
//if(fp == NULL)
|
||||||
// return;
|
// return;
|
||||||
DWORD bkcol;
|
DWORD bkcol;
|
||||||
int result = image_readgif(fileSys, textureInfo, &bkcol, image_gif_read, mode);
|
int result = image_readgif(jFile, textureInfo, &bkcol, image_gif_read, mode);
|
||||||
if(result!=0)
|
if(result!=0)
|
||||||
textureInfo.mBits=NULL;
|
textureInfo.mBits=NULL;
|
||||||
//fclose(fp);
|
//fclose(fp);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
return ;//*/
|
return ;//*/
|
||||||
}
|
}
|
||||||
#endif //(!defined IOS) && (!defined QT_CONFIG) && (!defined SDL_CONFIG)
|
#endif //(!defined IOS) && (!defined QT_CONFIG) && (!defined SDL_CONFIG)
|
||||||
@@ -2161,20 +2166,21 @@ JTexture* JRenderer::LoadTexture(const char* filename, int mode, int TextureForm
|
|||||||
UIImage *image = NULL;
|
UIImage *image = NULL;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (!fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
rawsize = fileSystem->GetFileSize();
|
rawsize = fileSystem->GetFileSize(jFile);
|
||||||
rawdata = new BYTE[rawsize];
|
rawdata = new BYTE[rawsize];
|
||||||
|
|
||||||
if (!rawdata)
|
if (!rawdata)
|
||||||
{
|
{
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->ReadFile(rawdata, rawsize);
|
fileSystem->ReadFile(jFile, rawdata, rawsize);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
texData = [[NSData alloc] initWithBytes:rawdata length:rawsize];
|
texData = [[NSData alloc] initWithBytes:rawdata length:rawsize];
|
||||||
image = [[UIImage alloc] initWithData:texData];
|
image = [[UIImage alloc] initWithData:texData];
|
||||||
@@ -2254,20 +2260,21 @@ JTexture* JRenderer::LoadTexture(const char* filename, int, int)
|
|||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (!fileSystem->OpenFile(filename))
|
JFile* jFile = fileSystem->OpenFile(filename);
|
||||||
|
if (!jFile)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
rawsize = fileSystem->GetFileSize();
|
rawsize = fileSystem->GetFileSize(jFile);
|
||||||
rawdata = new BYTE[rawsize];
|
rawdata = new BYTE[rawsize];
|
||||||
|
|
||||||
if (!rawdata)
|
if (!rawdata)
|
||||||
{
|
{
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSystem->ReadFile(rawdata, rawsize);
|
fileSystem->ReadFile(jFile, rawdata, rawsize);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
|
|
||||||
QImage tmpImage = QImage::fromData(rawdata, rawsize);
|
QImage tmpImage = QImage::fromData(rawdata, rawsize);
|
||||||
if(tmpImage.isNull())
|
if(tmpImage.isNull())
|
||||||
|
|||||||
+10
-8
@@ -161,15 +161,16 @@ JMusic *JSoundSystem::LoadMusic(const char *fileName)
|
|||||||
if (music)
|
if (music)
|
||||||
{
|
{
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem->OpenFile(fileName))
|
JFile* jFile = fileSystem->OpenFile(fileName);
|
||||||
|
if (jFile)
|
||||||
{
|
{
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *buffer = new char[size];
|
char *buffer = new char[size];
|
||||||
fileSystem->ReadFile(buffer, size);
|
fileSystem->ReadFile(jFile, buffer, size);
|
||||||
music->mTrack = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
|
music->mTrack = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
|
||||||
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return music;
|
return music;
|
||||||
@@ -281,15 +282,16 @@ JSample *JSoundSystem::LoadSample(const char *fileName)
|
|||||||
if (sample)
|
if (sample)
|
||||||
{
|
{
|
||||||
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
JFileSystem* fileSystem = JFileSystem::GetInstance();
|
||||||
if (fileSystem->OpenFile(fileName))
|
JFile* jFile = fileSystem->OpenFile(fileName);
|
||||||
|
if (jFile)
|
||||||
{
|
{
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *buffer = new char[size];
|
char *buffer = new char[size];
|
||||||
fileSystem->ReadFile(buffer, size);
|
fileSystem->ReadFile(jFile, buffer, size);
|
||||||
sample->mSample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
|
sample->mSample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, FSOUND_LOADMEMORY, 0, size);
|
||||||
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
}else
|
}else
|
||||||
sample->mSample = NULL;
|
sample->mSample = NULL;
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
public Boolean mErrorHappened = false;
|
public Boolean mErrorHappened = false;
|
||||||
public final static String RES_FOLDER = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/";
|
public final static String RES_FOLDER = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/";
|
||||||
public static String RES_FILENAME = "core_0184.zip";
|
public static String RES_FILENAME = "core_0184.zip";
|
||||||
|
public static final String RES_URL = "http://wagic.googlecode.com/files/";
|
||||||
|
|
||||||
public String systemFolder = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/";
|
public String systemFolder = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/";
|
||||||
private String userFolder;
|
private String userFolder;
|
||||||
@@ -306,7 +307,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
|
|
||||||
private void startDownload()
|
private void startDownload()
|
||||||
{
|
{
|
||||||
String url = getResourceUrl();
|
String url = RES_URL + RES_FILENAME;
|
||||||
if (!checkStorageState())
|
if (!checkStorageState())
|
||||||
{
|
{
|
||||||
Log.e(TAG, "Error in initializing storage space.");
|
Log.e(TAG, "Error in initializing storage space.");
|
||||||
@@ -436,7 +437,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
mContext = this.getApplicationContext();
|
mContext = this.getApplicationContext();
|
||||||
// get the current version of the app to set the core filename
|
// get the current version of the app to set the core filename
|
||||||
String versionCodeString = getApplicationCode();
|
String versionCodeString = getApplicationCode();
|
||||||
RES_FILENAME = getResourceName();
|
RES_FILENAME = "core_" + versionCodeString + ".zip";
|
||||||
|
|
||||||
StorageOptions.determineStorageOptions();
|
StorageOptions.determineStorageOptions();
|
||||||
checkStorageLocationPreference();
|
checkStorageLocationPreference();
|
||||||
@@ -524,9 +525,6 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
// C functions we call
|
// C functions we call
|
||||||
public static native String getResourceUrl();
|
|
||||||
public static native String getResourceName();
|
|
||||||
|
|
||||||
public static native void nativeInit();
|
public static native void nativeInit();
|
||||||
|
|
||||||
public static native void nativeQuit();
|
public static native void nativeQuit();
|
||||||
|
|||||||
@@ -42,6 +42,39 @@ def getFilename():
|
|||||||
filename = 'core_' + major + minor + point
|
filename = 'core_' + major + minor + point
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
|
def createQrcFile():
|
||||||
|
utilities = ZipUtilities()
|
||||||
|
print "Creating Qt Resource File"
|
||||||
|
filename = "core.qrc"
|
||||||
|
f = open(filename, 'w')
|
||||||
|
f.seek(0,0)
|
||||||
|
f.write("""<!DOCTYPE RCC><RCC version="1.0">\n<qresource>\n""")
|
||||||
|
rename = False
|
||||||
|
if not os.path.isfile('settings/options.txt'):
|
||||||
|
os.rename('settings/options.orig.txt', 'settings/options.txt')
|
||||||
|
remame = True
|
||||||
|
if not os.path.isfile('player/options.txt'):
|
||||||
|
os.rename('player/options.orig.txt', 'player/options.txt')
|
||||||
|
rename = True
|
||||||
|
utilities.addFolderToQrc(f, 'themes')
|
||||||
|
utilities.addFolderToQrc(f, 'sound')
|
||||||
|
utilities.addFolderToQrc(f, 'settings')
|
||||||
|
utilities.addFolderToQrc(f, 'sets')
|
||||||
|
utilities.addFolderToQrc(f, 'rules')
|
||||||
|
utilities.addFolderToQrc(f, 'player')
|
||||||
|
utilities.addFolderToQrc(f, 'packs')
|
||||||
|
utilities.addFolderToQrc(f, 'lang')
|
||||||
|
utilities.addFolderToQrc(f, 'graphics')
|
||||||
|
utilities.addFolderToQrc(f, 'campaigns')
|
||||||
|
utilities.addFolderToQrc(f, 'ai')
|
||||||
|
if rename:
|
||||||
|
os.rename('settings/options.txt', 'settings/options.orig.txt')
|
||||||
|
os.rename('player/options.txt', 'player/options.orig.txt')
|
||||||
|
|
||||||
|
f.seek(0,2)
|
||||||
|
f.write('</qresource>\n</RCC>\n')
|
||||||
|
f.close
|
||||||
|
print >> sys.stderr, 'Created Resource Package for Qt projects: {0}'.format( filename)
|
||||||
|
|
||||||
|
|
||||||
def createStandardResFile():
|
def createStandardResFile():
|
||||||
@@ -84,20 +117,37 @@ class ZipUtilities:
|
|||||||
print 'Entering folder: ' + str(full_path)
|
print 'Entering folder: ' + str(full_path)
|
||||||
self.addFolderToZip(zip_file, full_path)
|
self.addFolderToZip(zip_file, full_path)
|
||||||
|
|
||||||
|
def addFolderToQrc(self, qrc, folder):
|
||||||
|
qrc.seek(0,2)
|
||||||
|
for file in os.listdir(folder):
|
||||||
|
if file != '.svn':
|
||||||
|
full_path = os.path.join(folder, file)
|
||||||
|
if os.path.isfile(full_path):
|
||||||
|
print 'File added: ' + str(full_path)
|
||||||
|
qrc.write('<file>')
|
||||||
|
qrc.write(full_path)
|
||||||
|
qrc.write('</file>\n')
|
||||||
|
elif os.path.isdir(full_path):
|
||||||
|
print 'Entering folder: ' + str(full_path)
|
||||||
|
self.addFolderToQrc(qrc, full_path)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
## using optparse instead of argParse for now since python 2.7 may not be installed.
|
## using optparse instead of argParse for now since python 2.7 may not be installed.
|
||||||
|
|
||||||
parser = OptionParser()
|
parser = OptionParser()
|
||||||
parser.add_option("-p", "--platform", help="PLATFORM: specify custom build. (eg ios, android, etc)", metavar="PLATFORM", dest="platform")
|
parser.add_option("-p", "--platform", help="PLATFORM: specify custom build. (eg qt, ios, android, etc)", metavar="PLATFORM", dest="platform")
|
||||||
|
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if (options.platform):
|
if (options.platform):
|
||||||
if (options.platform == "ios"):
|
print "reading %s..." % options.platform
|
||||||
createIosResFile()
|
if (options.platform == 'ios'):
|
||||||
|
createIosResFile()
|
||||||
|
elif (options.platform == 'qt'):
|
||||||
|
createQrcFile()
|
||||||
else:
|
else:
|
||||||
createStandardResFile()
|
createStandardResFile()
|
||||||
else:
|
else:
|
||||||
createStandardResFile()
|
createStandardResFile()
|
||||||
|
|
||||||
|
|||||||
@@ -28204,7 +28204,7 @@ subtype=Equipment
|
|||||||
[card]
|
[card]
|
||||||
name=Executioner's Swing
|
name=Executioner's Swing
|
||||||
text=Target creature that dealt damage this turn gets -5/-5 until end of turn.
|
text=Target creature that dealt damage this turn gets -5/-5 until end of turn.
|
||||||
target=creature[damager]
|
target=creature[damaged]
|
||||||
auto=-5/-5 ueot
|
auto=-5/-5 ueot
|
||||||
mana={W}{B}
|
mana={W}{B}
|
||||||
type=Instant
|
type=Instant
|
||||||
@@ -37166,7 +37166,7 @@ type=Sorcery
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Grave Pact
|
name=Grave Pact
|
||||||
auto=@movedTo(creature|graveyard) from(mybattlefield):ability$!name(sacrifice) notatarget(creature|mybattlefield) sacrifice!$ opponent
|
auto=@movedTo(creature|mygraveyard) from(mybattlefield):ability$!name(sacrifice) notatarget(creature|mybattlefield) sacrifice!$ opponent
|
||||||
text=Whenever a creature you control dies, each other player sacrifices a creature.
|
text=Whenever a creature you control dies, each other player sacrifices a creature.
|
||||||
mana={1}{B}{B}{B}
|
mana={1}{B}{B}{B}
|
||||||
type=Enchantment
|
type=Enchantment
|
||||||
|
|||||||
@@ -308,9 +308,6 @@ evil_presence3.txt
|
|||||||
evil_presence_i647.txt
|
evil_presence_i647.txt
|
||||||
evil_presence_i647_2.txt
|
evil_presence_i647_2.txt
|
||||||
exaltedsourcekilled.txt
|
exaltedsourcekilled.txt
|
||||||
executioners_swing.txt
|
|
||||||
executioners_swing2.txt
|
|
||||||
executioners_swing3.txt
|
|
||||||
explore.txt
|
explore.txt
|
||||||
Faceless_Butcher.txt
|
Faceless_Butcher.txt
|
||||||
fading.txt
|
fading.txt
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
#NAME: Executioner's Swing
|
|
||||||
#DESC: Checks targetability
|
|
||||||
#DESC: Test that can target creature that damaged creature this turn
|
|
||||||
|
|
||||||
[INIT]
|
|
||||||
combatattackers
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
inplay:Flying Men,Swamp,Plains
|
|
||||||
hand:Executioner's Swing
|
|
||||||
|
|
||||||
[DO]
|
|
||||||
Grizzly Bears
|
|
||||||
next
|
|
||||||
Flying Men
|
|
||||||
next
|
|
||||||
next
|
|
||||||
next
|
|
||||||
|
|
||||||
# second main
|
|
||||||
# kill bear
|
|
||||||
yes
|
|
||||||
Swamp
|
|
||||||
Plains
|
|
||||||
Executioner's Swing
|
|
||||||
Grizzly Bears
|
|
||||||
endinterruption
|
|
||||||
|
|
||||||
[ASSERT]
|
|
||||||
secondmain
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
graveyard:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
graveyard:Executioner's Swing,Flying Men
|
|
||||||
inplay:Plains,Swamp
|
|
||||||
|
|
||||||
[END]
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#NAME: Executioner's Swing
|
|
||||||
#DESC: Checks targetability
|
|
||||||
#DESC: Test that can target creature that damaged player
|
|
||||||
|
|
||||||
[INIT]
|
|
||||||
combatattackers
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
inplay:Swamp,Plains
|
|
||||||
hand:Executioner's Swing
|
|
||||||
|
|
||||||
[DO]
|
|
||||||
Grizzly Bears
|
|
||||||
next
|
|
||||||
next
|
|
||||||
next
|
|
||||||
next
|
|
||||||
|
|
||||||
# second main
|
|
||||||
# kill bear
|
|
||||||
yes
|
|
||||||
Swamp
|
|
||||||
Plains
|
|
||||||
Executioner's Swing
|
|
||||||
Grizzly Bears
|
|
||||||
endinterruption
|
|
||||||
|
|
||||||
[ASSERT]
|
|
||||||
secondmain
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
graveyard:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
graveyard:Executioner's Swing
|
|
||||||
inplay:Plains,Swamp
|
|
||||||
life:18
|
|
||||||
|
|
||||||
[END]
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
#NAME: Executioner's Swing
|
|
||||||
#DESC: Checks targetability
|
|
||||||
#DESC: Prove that can't target passive creature
|
|
||||||
|
|
||||||
[INIT]
|
|
||||||
secondmain
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
manapool:{B}{W}
|
|
||||||
hand:Executioner's Swing
|
|
||||||
|
|
||||||
[DO]
|
|
||||||
# attempt to kill bear
|
|
||||||
yes
|
|
||||||
Swamp
|
|
||||||
Plains
|
|
||||||
Executioner's Swing
|
|
||||||
Grizzly Bears
|
|
||||||
endinterruption
|
|
||||||
|
|
||||||
[ASSERT]
|
|
||||||
secondmain
|
|
||||||
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:Grizzly Bears
|
|
||||||
|
|
||||||
[PLAYER2]
|
|
||||||
hand:Executioner's Swing
|
|
||||||
manapool:{W}{B}
|
|
||||||
|
|
||||||
[END]
|
|
||||||
@@ -90,9 +90,7 @@ Author: Michael Nguyen
|
|||||||
#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)
|
||||||
#define WAGIC_RESOURCE_NAME "Wagic-core.zip"
|
#define WAGIC_RESOURCE_NAME WAGIC_CORE_VERSION_STRING ".zip"
|
||||||
#define WAGIC_RELEASE_NAME "${env.RELEASE_NAME}"
|
|
||||||
#define WAGIC_RESOURCE_URL "https://github.com/WagicProject/wagic/releases/download/" WAGIC_RELEASE_NAME "/" WAGIC_RESOURCE_NAME
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ class CardDescriptor: public MTGCardInstance
|
|||||||
string compareName;
|
string compareName;
|
||||||
int CDopponentDamaged;
|
int CDopponentDamaged;
|
||||||
int CDcontrollerDamaged;
|
int CDcontrollerDamaged;
|
||||||
int CDdamager;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ public:
|
|||||||
bool wasDealtDamage;
|
bool wasDealtDamage;
|
||||||
bool damageToOpponent;
|
bool damageToOpponent;
|
||||||
bool damageToController;
|
bool damageToController;
|
||||||
bool damageToCreature;
|
|
||||||
bool mPropertiesChangedSinceLastUpdate;
|
bool mPropertiesChangedSinceLastUpdate;
|
||||||
int reduxamount;
|
int reduxamount;
|
||||||
int flanked;
|
int flanked;
|
||||||
|
|||||||
@@ -4723,15 +4723,14 @@ void AVanishing::Update(float dt)
|
|||||||
|
|
||||||
int AVanishing::resolve()
|
int AVanishing::resolve()
|
||||||
{
|
{
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string AVanishing::getMenuText()
|
const string AVanishing::getMenuText()
|
||||||
{
|
{
|
||||||
if (counterName.find("fade") != string::npos)
|
if(counterName.find("fade") != string::npos)
|
||||||
{
|
return "Fading";
|
||||||
return "Fading";
|
|
||||||
}
|
|
||||||
return "Vanishing";
|
return "Vanishing";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5704,8 +5703,7 @@ void ATutorialMessage::Update(float dt)
|
|||||||
|
|
||||||
mElapsed += dt;
|
mElapsed += dt;
|
||||||
|
|
||||||
if(!mUserCloseRequest)
|
IconButtonsController::Update(dt);
|
||||||
IconButtonsController::Update(dt);
|
|
||||||
|
|
||||||
if (mIsImage)
|
if (mIsImage)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ CardDescriptor::CardDescriptor()
|
|||||||
colorComparisonMode = COMPARISON_NONE;
|
colorComparisonMode = COMPARISON_NONE;
|
||||||
CDopponentDamaged = 0;
|
CDopponentDamaged = 0;
|
||||||
CDcontrollerDamaged = 0;
|
CDcontrollerDamaged = 0;
|
||||||
CDdamager = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CardDescriptor::init()
|
int CardDescriptor::init()
|
||||||
@@ -227,27 +226,16 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
|
|||||||
{
|
{
|
||||||
match = NULL;
|
match = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((CDdamager == -1 && (card->damageToOpponent || card->damageToController || card->damageToCreature))
|
|
||||||
|| (CDdamager == 1 && !(card->damageToOpponent || card->damageToController || card->damageToCreature)))
|
|
||||||
{
|
|
||||||
match = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(CDopponentDamaged == -1 || CDopponentDamaged == 1)
|
if(CDopponentDamaged == -1 || CDopponentDamaged == 1)
|
||||||
{
|
{
|
||||||
Player * p = card->controller()->opponent();//controller()->opponent();
|
Player * p = card->controller()->opponent();//controller()->opponent();
|
||||||
if ((CDopponentDamaged == -1 && card->damageToOpponent && card->controller() == p)
|
if ((CDopponentDamaged == -1 && card->damageToOpponent && card->controller() == p) || (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p)
|
||||||
|| (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p)
|
|| (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent()) || (CDopponentDamaged == 1 && !card->damageToController && card->controller() == p->opponent()))
|
||||||
|| (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent())
|
|
||||||
|| (CDopponentDamaged == 1 && !card->damageToController && card->controller() == p->opponent()))
|
|
||||||
{
|
{
|
||||||
match = NULL;
|
match = NULL;
|
||||||
}
|
}
|
||||||
if ((CDcontrollerDamaged == -1 && card->damageToController && card->controller() == p)
|
if ((CDcontrollerDamaged == -1 && card->damageToController && card->controller() == p) || (CDcontrollerDamaged == 1 && !card->damageToController && card->controller() == p)
|
||||||
|| (CDcontrollerDamaged == 1 && !card->damageToController && card->controller() == p)
|
|| (CDcontrollerDamaged == -1 && card->damageToOpponent && card->controller() == p->opponent()) || (CDcontrollerDamaged == 1 && !card->damageToOpponent && card->controller() == p->opponent()))
|
||||||
|| (CDcontrollerDamaged == -1 && card->damageToOpponent && card->controller() == p->opponent())
|
|
||||||
|| (CDcontrollerDamaged == 1 && !card->damageToOpponent && card->controller() == p->opponent()))
|
|
||||||
{
|
{
|
||||||
match = NULL;
|
match = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1224,18 +1224,6 @@ bool CardGui::FilterCard(MTGCard * _card,string filter)
|
|||||||
cd.CDcontrollerDamaged = 1;
|
cd.CDcontrollerDamaged = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//creature dealt damage to anything
|
|
||||||
else if (attribute.find("damager") != string::npos)
|
|
||||||
{
|
|
||||||
if (minus)
|
|
||||||
{
|
|
||||||
cd.CDdamager = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cd.CDdamager = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (attribute.find("multicolor") != string::npos)
|
else if (attribute.find("multicolor") != string::npos)
|
||||||
{
|
{
|
||||||
//card is multicolored?
|
//card is multicolored?
|
||||||
|
|||||||
@@ -192,10 +192,8 @@ int Damage::resolve()
|
|||||||
//return the left over amount after effects have been applied to them.
|
//return the left over amount after effects have been applied to them.
|
||||||
a = target->dealDamage(damage);
|
a = target->dealDamage(damage);
|
||||||
target->damageCount += damage;//the amount must be the actual damage so i changed this from 1 to damage, this fixes pdcount and odcount
|
target->damageCount += damage;//the amount must be the actual damage so i changed this from 1 to damage, this fixes pdcount and odcount
|
||||||
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE){
|
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
|
||||||
((MTGCardInstance*)target)->wasDealtDamage = true;
|
((MTGCardInstance*)target)->wasDealtDamage = true;
|
||||||
((MTGCardInstance*)source)->damageToCreature = true;
|
|
||||||
}
|
|
||||||
if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER)
|
if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER)
|
||||||
{
|
{
|
||||||
if(target == source->controller())
|
if(target == source->controller())
|
||||||
|
|||||||
@@ -795,7 +795,6 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
c->wasDealtDamage = false;
|
c->wasDealtDamage = false;
|
||||||
c->damageToController = false;
|
c->damageToController = false;
|
||||||
c->damageToOpponent = false;
|
c->damageToOpponent = false;
|
||||||
c->damageToCreature = false;
|
|
||||||
c->isAttacking = NULL;
|
c->isAttacking = NULL;
|
||||||
}
|
}
|
||||||
for (int t = 0; t < nbcards; t++)
|
for (int t = 0; t < nbcards; t++)
|
||||||
|
|||||||
@@ -1843,7 +1843,7 @@ int Tournament::getRandomDeck(bool noEasyDecks)
|
|||||||
DeckManager *deckManager = DeckManager::GetInstance();
|
DeckManager *deckManager = DeckManager::GetInstance();
|
||||||
vector<DeckMetaData *> *deckList = deckManager->getAIDeckOrderList();
|
vector<DeckMetaData *> *deckList = deckManager->getAIDeckOrderList();
|
||||||
|
|
||||||
int deckNumber;
|
int deckNumber=0;
|
||||||
unsigned int random=0;
|
unsigned int random=0;
|
||||||
int k=0;
|
int k=0;
|
||||||
bool isDouble=true;
|
bool isDouble=true;
|
||||||
|
|||||||
@@ -300,12 +300,12 @@ string GameStateMenu::loadRandomWallpaper()
|
|||||||
return wallpaper;
|
return wallpaper;
|
||||||
|
|
||||||
vector<string> wallpapers;
|
vector<string> wallpapers;
|
||||||
izfstream file;
|
JFile* jFile = JFileSystem::GetInstance()->OpenFile("graphics/wallpapers.txt");
|
||||||
if (! JFileSystem::GetInstance()->openForRead(file, "graphics/wallpapers.txt"))
|
if (!jFile)
|
||||||
return wallpaper;
|
return wallpaper;
|
||||||
|
|
||||||
string s;
|
string s;
|
||||||
while (std::getline(file, s))
|
while (JFileSystem::GetInstance()->ReadFileLine(jFile, s))
|
||||||
{
|
{
|
||||||
if (!s.size())
|
if (!s.size())
|
||||||
continue;
|
continue;
|
||||||
@@ -313,7 +313,7 @@ string GameStateMenu::loadRandomWallpaper()
|
|||||||
s.erase(s.size() - 1); //Handle DOS files
|
s.erase(s.size() - 1); //Handle DOS files
|
||||||
wallpapers.push_back(s);
|
wallpapers.push_back(s);
|
||||||
}
|
}
|
||||||
file.close();
|
JFileSystem::GetInstance()->CloseFile(jFile);
|
||||||
|
|
||||||
int rnd = rand() % (wallpapers.size());
|
int rnd = rand() % (wallpapers.size());
|
||||||
wallpaper = wallpapers[rnd];
|
wallpaper = wallpapers[rnd];
|
||||||
@@ -352,21 +352,21 @@ void GameStateMenu::loadLangMenu()
|
|||||||
vector<string> langFiles = JFileSystem::GetInstance()->scanfolder("lang/");
|
vector<string> langFiles = JFileSystem::GetInstance()->scanfolder("lang/");
|
||||||
for (size_t i = 0; i < langFiles.size(); ++i)
|
for (size_t i = 0; i < langFiles.size(); ++i)
|
||||||
{
|
{
|
||||||
izfstream file;
|
|
||||||
string filePath = "lang/";
|
string filePath = "lang/";
|
||||||
filePath.append(langFiles[i]);
|
filePath.append(langFiles[i]);
|
||||||
if (! JFileSystem::GetInstance()->openForRead(file, filePath))
|
JFile* jFile = JFileSystem::GetInstance()->OpenFile(filePath);
|
||||||
|
if (!jFile)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string s;
|
string s;
|
||||||
string lang;
|
string lang;
|
||||||
|
|
||||||
if (std::getline(file, s))
|
if (JFileSystem::GetInstance()->ReadFileLine(jFile, s))
|
||||||
{
|
{
|
||||||
lang = getLang(s);
|
lang = getLang(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
file.close();
|
JFileSystem::GetInstance()->CloseFile(jFile);
|
||||||
|
|
||||||
if (lang.size())
|
if (lang.size())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -215,39 +215,34 @@ void GameStateOptions::Render()
|
|||||||
const char * const CreditsText[] = {
|
const char * const CreditsText[] = {
|
||||||
"Wagic, The Homebrew?! by Wololo",
|
"Wagic, The Homebrew?! by Wololo",
|
||||||
"",
|
"",
|
||||||
"Updates, new cards, and more on http://wololo.net/wagic",
|
"updates, new cards, and more on http://wololo.net/wagic",
|
||||||
"Many thanks to the people who help this project",
|
"Many thanks to the people who help this project",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"Art:",
|
"Art: Ilya B, Julio, Jeck, J, Kaioshin, Lakeesha",
|
||||||
"Ilya B, Julio, Jeck, J, Kaioshin, Lakeesha",
|
|
||||||
"Check themeinfo.txt for the full credits of each theme!",
|
"Check themeinfo.txt for the full credits of each theme!",
|
||||||
"",
|
"",
|
||||||
"Dev Team:",
|
"Dev Team:",
|
||||||
"Abrasax, Almosthumane, Daddy32, DJardin, Dr.Solomat, J, Jeck,",
|
"Abrasax, Almosthumane, Daddy32, DJardin, Dr.Solomat,",
|
||||||
"kevlahnota, Leungclj, linshier, Mootpoint, Mnguyen, Psyringe,",
|
"J, Jeck, kevlahnota, Leungclj, linshier, Mootpoint, Mnguyen,",
|
||||||
"Rolzad73, Salmelo, Superhiro, Wololo, Yeshua, Zethfox",
|
"Psyringe, Salmelo, Superhiro, Wololo, Yeshua, Zethfox",
|
||||||
"",
|
"",
|
||||||
"Music by Celestial Aeon Project, http://www.jamendo.com",
|
"Music by Celestial Aeon Project, http://www.jamendo.com",
|
||||||
"",
|
"",
|
||||||
"Deck Builders:",
|
"Deck Builders: Abrasax, AzureKnight, colarchon",
|
||||||
"Abrasax, AzureKnight, colarchon, Excessum, Hehotfarv,",
|
"Excessum, Hehotfarv, Jeremy, Jog1118, JonyAS",
|
||||||
"Jeremy, Jog1118, JonyAS, Lachaux, Link17, Muddobbers,",
|
"Lachaux, Link17, Muddobbers, Nakano, Niegen",
|
||||||
"Nakano, Niegen, Kaioshin, Psyringe, r1c47, Superhiro,",
|
"Kaioshin, Psyringe, r1c47, Superhiro, Szei",
|
||||||
"Szei, Thanatos02, Whismer, Wololo",
|
"Thanatos02, Whismer, Wololo",
|
||||||
"",
|
"",
|
||||||
"Thanks also go to Dr.Watson, Orine, Raphael, Sakya, Tyranid",
|
"Thanks also go to Dr.Watson, Orine, Raphael, Sakya, Tyranid",
|
||||||
"for their help.",
|
"for their help.",
|
||||||
"",
|
"",
|
||||||
"Thanks to everyone who contributes code/content on the forums!",
|
"Thanks to everyone who contributes code/content on the forums!",
|
||||||
"",
|
"",
|
||||||
"",
|
"Developed with the JGE++ Library (http://code.google.com/p/wagic)",
|
||||||
"Source:",
|
|
||||||
"http://code.google.com/p/wagic (2009-2013)",
|
|
||||||
"https://github.com/WagicProject/wagic (2013- )",
|
|
||||||
"",
|
|
||||||
"Developed with the JGE++ Library",
|
|
||||||
"SFX From www.soundsnap.com",
|
"SFX From www.soundsnap.com",
|
||||||
|
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"This work is not related to or endorsed by Wizards of the Coast, Inc",
|
"This work is not related to or endorsed by Wizards of the Coast, Inc",
|
||||||
|
|||||||
@@ -158,7 +158,6 @@ void MTGCardInstance::initMTGCI()
|
|||||||
auras = 0;
|
auras = 0;
|
||||||
damageToOpponent = false;
|
damageToOpponent = false;
|
||||||
damageToController = false;
|
damageToController = false;
|
||||||
damageToCreature = false;
|
|
||||||
wasDealtDamage = false;
|
wasDealtDamage = false;
|
||||||
isDualWielding = false;
|
isDualWielding = false;
|
||||||
suspended = false;
|
suspended = false;
|
||||||
|
|||||||
@@ -399,8 +399,8 @@ int MTGAllCards::load(const string &config_file, int set_id)
|
|||||||
|
|
||||||
int lineNumber = 0;
|
int lineNumber = 0;
|
||||||
std::string contents;
|
std::string contents;
|
||||||
izfstream file;
|
JFile* jFile = JFileSystem::GetInstance()->OpenFile(config_file);
|
||||||
if (!JFileSystem::GetInstance()->openForRead(file, config_file))
|
if (!jFile)
|
||||||
{
|
{
|
||||||
DebugTrace("MTGAllCards::load: error loading: " << config_file);
|
DebugTrace("MTGAllCards::load: error loading: " << config_file);
|
||||||
return total_cards;
|
return total_cards;
|
||||||
@@ -408,7 +408,7 @@ int MTGAllCards::load(const string &config_file, int set_id)
|
|||||||
|
|
||||||
string s;
|
string s;
|
||||||
|
|
||||||
while (getline(file,s))
|
while (JFileSystem::GetInstance()->ReadFileLine(jFile, s))
|
||||||
{
|
{
|
||||||
lineNumber++;
|
lineNumber++;
|
||||||
if (!s.size()) continue;
|
if (!s.size()) continue;
|
||||||
@@ -448,7 +448,7 @@ int MTGAllCards::load(const string &config_file, int set_id)
|
|||||||
if (!maxGrade) maxGrade = Constants::GRADE_BORDERLINE; //Default setting for grade is borderline?
|
if (!maxGrade) maxGrade = Constants::GRADE_BORDERLINE; //Default setting for grade is borderline?
|
||||||
if (fileGrade > maxGrade)
|
if (fileGrade > maxGrade)
|
||||||
{
|
{
|
||||||
file.close();
|
JFileSystem::GetInstance()->CloseFile(jFile);
|
||||||
return total_cards;
|
return total_cards;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -480,7 +480,7 @@ int MTGAllCards::load(const string &config_file, int set_id)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file.close();
|
JFileSystem::GetInstance()->CloseFile(jFile);
|
||||||
return total_cards;
|
return total_cards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -326,16 +326,16 @@ void OptionLanguage::Reload()
|
|||||||
vector<string> langFiles = JFileSystem::GetInstance()->scanfolder("lang/");
|
vector<string> langFiles = JFileSystem::GetInstance()->scanfolder("lang/");
|
||||||
for (size_t i = 0; i < langFiles.size(); ++i)
|
for (size_t i = 0; i < langFiles.size(); ++i)
|
||||||
{
|
{
|
||||||
izfstream file;
|
|
||||||
string filePath = "lang/";
|
string filePath = "lang/";
|
||||||
filePath.append(langFiles[i]);
|
filePath.append(langFiles[i]);
|
||||||
if (! JFileSystem::GetInstance()->openForRead(file, filePath))
|
JFile* jFile = JFileSystem::GetInstance()->OpenFile(filePath);
|
||||||
|
if (!jFile)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string s;
|
string s;
|
||||||
string lang;
|
string lang;
|
||||||
|
|
||||||
if (std::getline(file, s))
|
if (JFileSystem::GetInstance()->ReadFileLine(jFile, s))
|
||||||
{
|
{
|
||||||
if (!s.size())
|
if (!s.size())
|
||||||
{
|
{
|
||||||
@@ -352,7 +352,7 @@ void OptionLanguage::Reload()
|
|||||||
lang = s.substr(6);
|
lang = s.substr(6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file.close();
|
JFileSystem::GetInstance()->CloseFile(jFile);
|
||||||
|
|
||||||
if (lang.size())
|
if (lang.size())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -599,16 +599,17 @@ bool StoryFlow::parse(string path)
|
|||||||
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
JFileSystem *fileSystem = JFileSystem::GetInstance();
|
||||||
if (!fileSystem) return false;
|
if (!fileSystem) return false;
|
||||||
|
|
||||||
if (!fileSystem->OpenFile(path.c_str())) return false;
|
JFile* jFile = fileSystem->OpenFile(path.c_str());
|
||||||
|
if (!jFile) return false;
|
||||||
|
|
||||||
int size = fileSystem->GetFileSize();
|
int size = fileSystem->GetFileSize(jFile);
|
||||||
char *xmlBuffer = NEW char[size];
|
char *xmlBuffer = NEW char[size];
|
||||||
fileSystem->ReadFile(xmlBuffer, size);
|
fileSystem->ReadFile(jFile, xmlBuffer, size);
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
doc.Parse(xmlBuffer);
|
doc.Parse(xmlBuffer);
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile(jFile);
|
||||||
delete[] xmlBuffer;
|
delete[] xmlBuffer;
|
||||||
|
|
||||||
for (TiXmlNode* node = doc.FirstChild(); node; node = node->NextSibling())
|
for (TiXmlNode* node = doc.FirstChild(); node; node = node->NextSibling())
|
||||||
|
|||||||
@@ -485,18 +485,6 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
|
|||||||
cd->CDcontrollerDamaged = 1;
|
cd->CDcontrollerDamaged = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//creature dealt damage to anything
|
|
||||||
else if (attribute.find("damager") != string::npos)
|
|
||||||
{
|
|
||||||
if (minus)
|
|
||||||
{
|
|
||||||
cd->CDdamager = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cd->CDdamager = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (attribute.find("multicolor") != string::npos)
|
else if (attribute.find("multicolor") != string::npos)
|
||||||
{
|
{
|
||||||
//card is multicolored?
|
//card is multicolored?
|
||||||
|
|||||||
@@ -333,8 +333,9 @@ bool WCachedParticles::Attempt(const string& filename, int, int & error)
|
|||||||
{
|
{
|
||||||
|
|
||||||
JFileSystem* fileSys = JFileSystem::GetInstance();
|
JFileSystem* fileSys = JFileSystem::GetInstance();
|
||||||
|
JFile* jFile = fileSys->OpenFile(WResourceManager::Instance()->graphicsFile(filename));
|
||||||
|
|
||||||
if (!fileSys->OpenFile(WResourceManager::Instance()->graphicsFile(filename)))
|
if (!jFile)
|
||||||
{
|
{
|
||||||
error = CACHE_ERROR_404;
|
error = CACHE_ERROR_404;
|
||||||
return false;
|
return false;
|
||||||
@@ -345,12 +346,12 @@ bool WCachedParticles::Attempt(const string& filename, int, int & error)
|
|||||||
particles = NEW hgeParticleSystemInfo;
|
particles = NEW hgeParticleSystemInfo;
|
||||||
// We Skip reading the pointer as it may be larger than 4 bytes in the structure
|
// We Skip reading the pointer as it may be larger than 4 bytes in the structure
|
||||||
void *dummyPointer;
|
void *dummyPointer;
|
||||||
fileSys->ReadFile(&dummyPointer, 4);
|
fileSys->ReadFile(jFile, &dummyPointer, 4);
|
||||||
// we're actually trying to read more than the file size now, but it's no problem.
|
// we're actually trying to read more than the file size now, but it's no problem.
|
||||||
// Note that this fix is only to avoid the largest problems, filling a structure
|
// Note that this fix is only to avoid the largest problems, filling a structure
|
||||||
// by directly reading a file, is really a bad idea ...
|
// by directly reading a file, is really a bad idea ...
|
||||||
fileSys->ReadFile(&(particles->nEmission), sizeof(hgeParticleSystemInfo) - sizeof(void*));
|
fileSys->ReadFile(jFile, &(particles->nEmission), sizeof(hgeParticleSystemInfo) - sizeof(void*));
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
particles->sprite = NULL;
|
particles->sprite = NULL;
|
||||||
error = CACHE_ERROR_NONE;
|
error = CACHE_ERROR_NONE;
|
||||||
|
|||||||
+21
-17
@@ -171,20 +171,22 @@ WFont(inFontID), mTexture(0)
|
|||||||
unsigned char height;
|
unsigned char height;
|
||||||
} sizeStr = { 0, 0, 0 };
|
} sizeStr = { 0, 0, 0 };
|
||||||
|
|
||||||
if (!fileSys->OpenFile(engFileName)) return;
|
JFile* jFile = fileSys->OpenFile(engFileName);
|
||||||
size = fileSys->GetFileSize();
|
if (!jFile) return;
|
||||||
|
size = fileSys->GetFileSize(jFile);
|
||||||
mStdFont = NEW u8[size];
|
mStdFont = NEW u8[size];
|
||||||
fileSys->ReadFile(mStdFont, size);
|
fileSys->ReadFile(jFile, mStdFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
if (!fileSys->OpenFile(fontname)) return;
|
jFile = fileSys->OpenFile(fontname);
|
||||||
fileSys->ReadFile(&sizeStr, 4); // Works only for little-endian machines (PSP and PC are)
|
if (!jFile) return;
|
||||||
|
fileSys->ReadFile(jFile, &sizeStr, 4); // Works only for little-endian machines (PSP and PC are)
|
||||||
size = sizeStr.chars * sizeStr.width * sizeStr.height / 2;
|
size = sizeStr.chars * sizeStr.width * sizeStr.height / 2;
|
||||||
mExtraFont = NEW u8[size]; // 4 bits for a pixel
|
mExtraFont = NEW u8[size]; // 4 bits for a pixel
|
||||||
mIndex = NEW u16[65536];
|
mIndex = NEW u16[65536];
|
||||||
fileSys->ReadFile(mIndex, 65536 * sizeof(u16));
|
fileSys->ReadFile(jFile, mIndex, 65536 * sizeof(u16));
|
||||||
fileSys->ReadFile(mExtraFont, size);
|
fileSys->ReadFile(jFile, mExtraFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
mColor0 = ARGB(255, 255, 255, 255);
|
mColor0 = ARGB(255, 255, 255, 255);
|
||||||
mColor = mColor0;
|
mColor = mColor0;
|
||||||
@@ -612,17 +614,19 @@ WGBKFont::WGBKFont(int inFontID, const char *fontname, int lineheight, bool) :
|
|||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
|
||||||
if (!fileSys->OpenFile(fontname)) return;
|
JFile* jFile = fileSys->OpenFile(fontname);
|
||||||
size = fileSys->GetFileSize();
|
if (!jFile) return;
|
||||||
|
size = fileSys->GetFileSize(jFile);
|
||||||
mExtraFont = NEW u8[size];
|
mExtraFont = NEW u8[size];
|
||||||
fileSys->ReadFile(mExtraFont, size);
|
fileSys->ReadFile(jFile, mExtraFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
if (!fileSys->OpenFile(engFileName)) return;
|
jFile = fileSys->OpenFile(engFileName);
|
||||||
size = fileSys->GetFileSize();
|
if (!jFile) return;
|
||||||
|
size = fileSys->GetFileSize(jFile);
|
||||||
mStdFont = NEW u8[size];
|
mStdFont = NEW u8[size];
|
||||||
fileSys->ReadFile(mStdFont, size);
|
fileSys->ReadFile(jFile, mStdFont, size);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile(jFile);
|
||||||
|
|
||||||
mIndex = 0;
|
mIndex = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ CONFIG(console, graphics|console){
|
|||||||
}
|
}
|
||||||
else:CONFIG(graphics, graphics|console){
|
else:CONFIG(graphics, graphics|console){
|
||||||
folder_01.source = qml/QmlWagic
|
folder_01.source = qml/QmlWagic
|
||||||
folder_01.target = /usr/share
|
folder_01.target = qml
|
||||||
DEPLOYMENTFOLDERS = folder_01
|
DEPLOYMENTFOLDERS = folder_01
|
||||||
|
windows:RESOURCES = bin/Res/core.qrc
|
||||||
QT += core gui opengl network
|
QT += core gui opengl network
|
||||||
QT -= declarative quick qml
|
QT -= declarative quick qml
|
||||||
#maemo5:DEFINES += QT_WIDGET
|
#maemo5:DEFINES += QT_WIDGET
|
||||||
|
|||||||
+2
-111
@@ -41,8 +41,8 @@ INCLUDEPATH += ../../Boost
|
|||||||
INCLUDEPATH += include
|
INCLUDEPATH += include
|
||||||
|
|
||||||
unix:!symbian:LIBS += -lz
|
unix:!symbian:LIBS += -lz
|
||||||
windows:LIBS += ../../JGE/Dependencies/lib/fmodvc.lib
|
win32:LIBS += ../../JGE/Dependencies/lib/fmodvc.lib
|
||||||
windows:LIBS += ../../JGE/Dependencies/lib/zlibd.lib
|
win32:LIBS += ../../JGE/Dependencies/lib/zlibd.lib
|
||||||
PRECOMPILED_HEADER = include/PrecompiledHeader.h
|
PRECOMPILED_HEADER = include/PrecompiledHeader.h
|
||||||
|
|
||||||
#DEFINES += TRACK_OBJECT_USAGE
|
#DEFINES += TRACK_OBJECT_USAGE
|
||||||
@@ -283,7 +283,6 @@ HEADERS += \
|
|||||||
|
|
||||||
# JGE, could probably be moved outside
|
# JGE, could probably be moved outside
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
../../JGE/src/Downloader.cpp\
|
|
||||||
../../JGE/src/Encoding.cpp\
|
../../JGE/src/Encoding.cpp\
|
||||||
../../JGE/src/JAnimator.cpp\
|
../../JGE/src/JAnimator.cpp\
|
||||||
../../JGE/src/JApp.cpp\
|
../../JGE/src/JApp.cpp\
|
||||||
@@ -321,7 +320,6 @@ SOURCES += \
|
|||||||
../../JGE/src/zipFS/zstream.cpp
|
../../JGE/src/zipFS/zstream.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
../../JGE/include/Downloader.h\
|
|
||||||
../../JGE/include/Threading.h\
|
../../JGE/include/Threading.h\
|
||||||
../../JGE/include/decoder_prx.h\
|
../../JGE/include/decoder_prx.h\
|
||||||
../../JGE/include/DebugRoutines.h\
|
../../JGE/include/DebugRoutines.h\
|
||||||
@@ -373,110 +371,3 @@ HEADERS += \
|
|||||||
../../JGE/src/tinyxml/tinystr.h\
|
../../JGE/src/tinyxml/tinystr.h\
|
||||||
../../JGE/src/tinyxml/tinyxml.h\
|
../../JGE/src/tinyxml/tinyxml.h\
|
||||||
../../JGE/include/vram.h
|
../../JGE/include/vram.h
|
||||||
|
|
||||||
# maemo 5 packaging
|
|
||||||
maemo5: {
|
|
||||||
# Variables
|
|
||||||
BINDIR = /opt/wagic/bin
|
|
||||||
RESDIR = /home/user/wagic/Res
|
|
||||||
USERDIR = MyDocs/.Wagic
|
|
||||||
ICONDIR = /usr/share
|
|
||||||
|
|
||||||
DEFINES += RESDIR=\\\"$$RESDIR\\\"
|
|
||||||
DEFINES += USERDIR=\\\"$$USERDIR\\\"
|
|
||||||
|
|
||||||
INSTALLS += target \
|
|
||||||
desktop \
|
|
||||||
icon
|
|
||||||
|
|
||||||
target.path = $$BINDIR
|
|
||||||
|
|
||||||
desktop.path = $$ICONDIR/applications/hildon
|
|
||||||
desktop.files += wagic.desktop
|
|
||||||
|
|
||||||
icon.path = $$ICONDIR/icons/hicolor/64x64/apps
|
|
||||||
icon.files += wagic-64x64.png
|
|
||||||
|
|
||||||
# Meego/maemo 6 packaging (no launcher)
|
|
||||||
} else:contains(MEEGO_EDITION,harmattan): {
|
|
||||||
# Variables
|
|
||||||
BINDIR = /opt/wagic/bin
|
|
||||||
RESDIR = /opt/wagic/Res
|
|
||||||
USERDIR = MyDocs/.Wagic
|
|
||||||
ICONDIR = /usr/share
|
|
||||||
|
|
||||||
DEFINES += RESDIR=\\\"$$RESDIR\\\"
|
|
||||||
DEFINES += USERDIR=\\\"$$USERDIR\\\"
|
|
||||||
|
|
||||||
INSTALLS += target \
|
|
||||||
desktop \
|
|
||||||
icon \
|
|
||||||
policy
|
|
||||||
|
|
||||||
target.path = $$BINDIR
|
|
||||||
|
|
||||||
desktop.path = /usr/share/applications
|
|
||||||
desktop.files += debian_harmattan/wagic.desktop
|
|
||||||
|
|
||||||
icon.files = wagic-80x80.png
|
|
||||||
icon.path = /usr/share/icons/hicolor/64x64/apps
|
|
||||||
|
|
||||||
policy.files = debian_harmattan/wagic.conf
|
|
||||||
policy.path = /usr/share/policy/etc/syspart.conf.d
|
|
||||||
|
|
||||||
} else:symbian {
|
|
||||||
TARGET.UID3 = 0xE1D807D3
|
|
||||||
|
|
||||||
# Smart Installer package's UID
|
|
||||||
# This UID is from the protected range
|
|
||||||
# and therefore the package will fail to install if self-signed
|
|
||||||
# By default qmake uses the unprotected range value if unprotected UID is defined for the application
|
|
||||||
# and 0x2002CCCF value if protected UID is given to the application
|
|
||||||
#symbian:DEPLOYMENT.installer_header = 0x2002CCCF
|
|
||||||
|
|
||||||
# Allow network access on Symbian... that's probably pointless
|
|
||||||
TARGET.CAPABILITY += NetworkServices
|
|
||||||
|
|
||||||
RESDIR = some/res/dir
|
|
||||||
USERDIR = .Wagic
|
|
||||||
DEFINES += RESDIR=\"$$RESDIR\"
|
|
||||||
DEFINES += USERDIR=\"$$USERDIR\"
|
|
||||||
ICON = wagic.svg
|
|
||||||
} else:android {
|
|
||||||
DEFINES += Q_WS_ANDROID
|
|
||||||
RESDIR = Res
|
|
||||||
USERDIR = /sdcard/Wagic/Res
|
|
||||||
DEFINES += RESDIR=\\\"$$RESDIR\\\"
|
|
||||||
DEFINES += USERDIR=\\\"$$USERDIR\\\"
|
|
||||||
} else:unix {
|
|
||||||
# Variables
|
|
||||||
BINDIR = /usr/bin
|
|
||||||
ICONDIR = /usr/share
|
|
||||||
RESDIR = Res
|
|
||||||
USERDIR = .Wagic
|
|
||||||
|
|
||||||
DEFINES += RESDIR=\\\"$$RESDIR\\\"
|
|
||||||
DEFINES += USERDIR=\\\"$$USERDIR\\\"
|
|
||||||
|
|
||||||
target.path = $$BINDIR
|
|
||||||
|
|
||||||
desktop.path = $$ICONDIR/applications
|
|
||||||
desktop.files += wagic.desktop
|
|
||||||
|
|
||||||
icon.path = $$ICONDIR/icons/hicolor/64x64/apps
|
|
||||||
icon.files += wagic-64x64.png
|
|
||||||
|
|
||||||
INSTALLS += target \
|
|
||||||
desktop \
|
|
||||||
icon
|
|
||||||
|
|
||||||
} else:windows {
|
|
||||||
RESDIR = ./Res
|
|
||||||
USERDIR = .Wagic
|
|
||||||
DEFINES += RESDIR=\\\"$$RESDIR\\\"
|
|
||||||
DEFINES += USERDIR=\\\"$$USERDIR\\\"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+8
-17
@@ -5,21 +5,6 @@ echo PSPDEV = $PSPDEV
|
|||||||
echo psp-config = `psp-config --psp-prefix`
|
echo psp-config = `psp-config --psp-prefix`
|
||||||
echo ls = `ls`
|
echo ls = `ls`
|
||||||
echo pwd = `pwd`
|
echo pwd = `pwd`
|
||||||
# computing potential release name
|
|
||||||
echo TRAVIS_PULL_REQUEST = $TRAVIS_PULL_REQUEST
|
|
||||||
echo TRAVIS_BRANCH = $TRAVIS_BRANCH
|
|
||||||
|
|
||||||
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
|
|
||||||
if [ "$TRAVIS_BRANCH" = "alphas" ]; then
|
|
||||||
export RELEASE_NAME="alpha-${TRAVIS_BUILD_NUMBER}"
|
|
||||||
else if [ "$TRAVIS_BRANCH" = "master" ]; then
|
|
||||||
export RELEASE_NAME="latest-master"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo RELEASE_NAME = $RELEASE_NAME
|
|
||||||
|
|
||||||
|
|
||||||
# updating versions with the TRAVIS build numbers
|
# updating versions with the TRAVIS build numbers
|
||||||
cd projects/mtg/
|
cd projects/mtg/
|
||||||
@@ -29,6 +14,7 @@ cd ../..
|
|||||||
# we create resource package
|
# we create resource package
|
||||||
cd projects/mtg/bin/Res
|
cd projects/mtg/bin/Res
|
||||||
python createResourceZip.py
|
python createResourceZip.py
|
||||||
|
python createResourceZip.py --platform=qt
|
||||||
# if we let the zip here, Wagic will use it in the testsuite
|
# if we let the zip here, Wagic will use it in the testsuite
|
||||||
# and we'll get 51 failed test cases
|
# and we'll get 51 failed test cases
|
||||||
mv core_*.zip ../../../../core.zip
|
mv core_*.zip ../../../../core.zip
|
||||||
@@ -37,6 +23,7 @@ cd ../../../..
|
|||||||
# we're building a PSP binary here
|
# we're building a PSP binary here
|
||||||
cd JGE
|
cd JGE
|
||||||
make -j 8
|
make -j 8
|
||||||
|
make -j 8 -f Makefile.hge install
|
||||||
cd ..
|
cd ..
|
||||||
cd projects/mtg
|
cd projects/mtg
|
||||||
mkdir objs
|
mkdir objs
|
||||||
@@ -64,7 +51,9 @@ ant debug -f projects/mtg/Android/build.xml
|
|||||||
# we're building a Qt version with GUI here
|
# we're building a Qt version with GUI here
|
||||||
mkdir qt-gui-build
|
mkdir qt-gui-build
|
||||||
cd qt-gui-build
|
cd qt-gui-build
|
||||||
qmake ../projects/mtg/wagic-SDL.pro CONFIG+=release CONFIG+=graphics
|
mv ../projects/mtg/bin/Res/settings/options.orig.txt ../projects/mtg/bin/Res/settings/options.txt
|
||||||
|
mv ../projects/mtg/bin/Res/player/options.orig.txt ../projects/mtg/bin/Res/player/options.txt
|
||||||
|
qmake ../projects/mtg/wagic-qt.pro CONFIG+=release CONFIG+=graphics
|
||||||
make -j 8
|
make -j 8
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
@@ -73,7 +62,7 @@ qmake projects/mtg/wagic-qt.pro CONFIG+=console CONFIG+=debug DEFINES+=CAPTURE_S
|
|||||||
make -j 8
|
make -j 8
|
||||||
|
|
||||||
# we're cross-compiling a Qt Windows version here,
|
# we're cross-compiling a Qt Windows version here,
|
||||||
# PATH is only set here to prevent colision
|
# PATH is only set here to prevent collision
|
||||||
export PATH="$PATH:/opt/mingw32/bin"
|
export PATH="$PATH:/opt/mingw32/bin"
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
@@ -91,6 +80,8 @@ cp ../../../projects/mtg/bin/zlib1.dll .
|
|||||||
cp /opt/mingw32/bin/libpng15-15.dll .
|
cp /opt/mingw32/bin/libpng15-15.dll .
|
||||||
cd ..
|
cd ..
|
||||||
zip win-cross.zip -r release/
|
zip win-cross.zip -r release/
|
||||||
|
mv ../../projects/mtg/bin/Res/settings/options.txt ../../projects/mtg/bin/Res/settings/options.orig.txt
|
||||||
|
mv ../../projects/mtg/bin/Res/player/options.txt ../../projects/mtg/bin/Res/player/options.orig.txt
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
# Now we run the testsuite (Res needs to be in the working directory)
|
# Now we run the testsuite (Res needs to be in the working directory)
|
||||||
|
|||||||
+8
-8
@@ -10,28 +10,28 @@ if [ "$TRAVIS_BRANCH" == "alphas" ]; then
|
|||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @core.zip \
|
--data-binary @core.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-core.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-core-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Uploading android package\n"
|
echo -e "Uploading android package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @projects/mtg/Android/bin/Wagic-debug.apk \
|
--data-binary @projects/mtg/Android/bin/Wagic-debug.apk \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-android.apk"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-android-${TRAVIS_BUILD_NUMBER}.apk"
|
||||||
|
|
||||||
echo -e "Uploading PSP package\n"
|
echo -e "Uploading PSP package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @projects/mtg/psprelease.zip \
|
--data-binary @projects/mtg/psprelease.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-psp.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-psp-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Uploading Windows package\n"
|
echo -e "Uploading Windows package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @build/win-cross/win-cross.zip \
|
--data-binary @build/win-cross/win-cross.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-windows.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-windows-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Done uploading\n"
|
echo -e "Done uploading\n"
|
||||||
fi
|
fi
|
||||||
@@ -71,28 +71,28 @@ if [ "$TRAVIS_BRANCH" == "master" ]; then
|
|||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @core.zip \
|
--data-binary @core.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-core.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-core-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Uploading android package\n"
|
echo -e "Uploading android package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @projects/mtg/Android/bin/Wagic-debug.apk \
|
--data-binary @projects/mtg/Android/bin/Wagic-debug.apk \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-android.apk"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-android-${TRAVIS_BUILD_NUMBER}.apk"
|
||||||
|
|
||||||
echo -e "Uploading PSP package\n"
|
echo -e "Uploading PSP package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @projects/mtg/psprelease.zip \
|
--data-binary @projects/mtg/psprelease.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-psp.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-psp-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Uploading Windows package\n"
|
echo -e "Uploading Windows package\n"
|
||||||
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
curl -X POST -H "Authorization: token ${GH_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github.manifold-preview" \
|
-H "Accept: application/vnd.github.manifold-preview" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
--data-binary @build/win-cross/win-cross.zip \
|
--data-binary @build/win-cross/win-cross.zip \
|
||||||
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-windows.zip"
|
"https://uploads.github.com/repos/WagicProject/wagic/releases/${IDDI}/assets?name=Wagic-windows-${TRAVIS_BUILD_NUMBER}.zip"
|
||||||
|
|
||||||
echo -e "Done uploading\n"
|
echo -e "Done uploading\n"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user