J :
* Key buffer update : Add functions & clean the file
This commit is contained in:
+248
-228
@@ -1,228 +1,248 @@
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
#ifndef _JGE_H_
|
||||
#define _JGE_H_
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "JTypes.h"
|
||||
|
||||
#define DEBUG_PRINT
|
||||
|
||||
//#define _MP3_ENABLED_
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
void JGEControl();
|
||||
BOOL JGEGetKeyState(int key);
|
||||
bool JGEGetButtonState(u32 button);
|
||||
bool JGEGetButtonClick(u32 button);
|
||||
|
||||
#elif LINUX
|
||||
|
||||
void JGEControl();
|
||||
BOOL JGEGetKeyState(int key);
|
||||
bool JGEGetButtonState(uint32_t button);
|
||||
bool JGEGetButtonClick(uint32_t button);
|
||||
|
||||
#else
|
||||
|
||||
#include <pspgu.h>
|
||||
#include <pspkernel.h>
|
||||
#include <pspdisplay.h>
|
||||
#include <pspdebug.h>
|
||||
#include <pspctrl.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <pspaudiolib.h>
|
||||
#include <psprtc.h>
|
||||
|
||||
#endif
|
||||
|
||||
//#include "JGEInit.h"
|
||||
|
||||
//#include "JTypes.h"
|
||||
|
||||
#include "Vector2D.h"
|
||||
|
||||
class JApp;
|
||||
class JResourceManager;
|
||||
class JFileSystem;
|
||||
class JParticleSystem;
|
||||
class JMotionSystem;
|
||||
class JMusic;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Game engine main interface.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
class JGE
|
||||
{
|
||||
private:
|
||||
JApp *mApp;
|
||||
// JResourceManager *mResourceManager;
|
||||
// JFileSystem* mFileSystem;
|
||||
|
||||
// JParticleSystem* mParticleSystem;
|
||||
// JMotionSystem* mMotionSystem;
|
||||
|
||||
|
||||
#if defined (WIN32) || defined (LINUX)
|
||||
float mDeltaTime;
|
||||
|
||||
JMusic *mCurrentMusic;
|
||||
|
||||
#else
|
||||
SceCtrlData mCtrlPad;
|
||||
u32 mOldButtons;
|
||||
|
||||
u64 mLastTime;
|
||||
u32 mTickFrequency;
|
||||
|
||||
#endif
|
||||
|
||||
bool mDone;
|
||||
|
||||
float mDelta;
|
||||
|
||||
bool mDebug;
|
||||
|
||||
bool mPaused;
|
||||
|
||||
char mDebuggingMsg[256];
|
||||
|
||||
bool mCriticalAssert;
|
||||
const char *mAssertFile;
|
||||
int mAssertLine;
|
||||
|
||||
|
||||
static JGE* mInstance;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get JGE instance.
|
||||
///
|
||||
/// @return JGE instance.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static JGE* GetInstance();
|
||||
static void Destroy();
|
||||
|
||||
void Init();
|
||||
void Run();
|
||||
void End();
|
||||
|
||||
void Update();
|
||||
void Render();
|
||||
|
||||
void Pause();
|
||||
void Resume();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return system timer in milliseconds.
|
||||
///
|
||||
/// @return System time in milliseconds.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
int GetTime(void);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return elapsed time since last frame update.
|
||||
///
|
||||
/// @return Elapsed time in seconds.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
float GetDelta();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return frame rate.
|
||||
///
|
||||
/// @note This is just 1.0f/GetDelat().
|
||||
///
|
||||
/// @return Number of frames per second.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
float GetFPS();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Check the current state of a button.
|
||||
///
|
||||
/// @param button - Button id.
|
||||
///
|
||||
/// @return Button state.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool GetButtonState(u32 button);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Check if a button is down the first time.
|
||||
///
|
||||
/// @param button - Button id.
|
||||
///
|
||||
/// @return Button state.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool GetButtonClick(u32 button);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get x value of the analog pad.
|
||||
///
|
||||
/// @return X value (0 to 255).
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u8 GetAnalogX();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get y value of the analog pad.
|
||||
///
|
||||
/// @return Y value (0 to 255).
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u8 GetAnalogY();
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get if the system is ended or not.
|
||||
///
|
||||
/// @return Status of the system.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool IsDone() { return mDone; }
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Set the user's core application class.
|
||||
///
|
||||
/// @param app - User defined application class.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void SetApp(JApp *app);
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Print debug message.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void printf(const char *format, ...);
|
||||
|
||||
|
||||
void Assert(const char *filename, long lineNumber);
|
||||
|
||||
#if defined (WIN32) || defined (LINUX)
|
||||
void SetDelta(int delta);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
JGE();
|
||||
~JGE();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
#ifndef _JGE_H_
|
||||
#define _JGE_H_
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "JTypes.h"
|
||||
|
||||
#define DEBUG_PRINT
|
||||
|
||||
//#define _MP3_ENABLED_
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
void JGEControl();
|
||||
BOOL JGEGetKeyState(int key);
|
||||
bool JGEGetButtonState(u32 button);
|
||||
bool JGEGetButtonClick(u32 button);
|
||||
u32 JGEReadKey();
|
||||
void JGEResetInput();
|
||||
|
||||
#elif LINUX
|
||||
|
||||
void JGEControl();
|
||||
BOOL JGEGetKeyState(int key);
|
||||
bool JGEGetButtonState(u32 button);
|
||||
bool JGEGetButtonClick(u32 button);
|
||||
u32 JGEReadKey();
|
||||
void JGEResetInput();
|
||||
|
||||
#else
|
||||
|
||||
#include <pspgu.h>
|
||||
#include <pspkernel.h>
|
||||
#include <pspdisplay.h>
|
||||
#include <pspdebug.h>
|
||||
#include <pspctrl.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <pspaudiolib.h>
|
||||
#include <psprtc.h>
|
||||
|
||||
#endif
|
||||
|
||||
//#include "JGEInit.h"
|
||||
|
||||
//#include "JTypes.h"
|
||||
|
||||
#include "Vector2D.h"
|
||||
|
||||
class JApp;
|
||||
class JResourceManager;
|
||||
class JFileSystem;
|
||||
class JParticleSystem;
|
||||
class JMotionSystem;
|
||||
class JMusic;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Game engine main interface.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
class JGE
|
||||
{
|
||||
private:
|
||||
JApp *mApp;
|
||||
// JResourceManager *mResourceManager;
|
||||
// JFileSystem* mFileSystem;
|
||||
|
||||
// JParticleSystem* mParticleSystem;
|
||||
// JMotionSystem* mMotionSystem;
|
||||
|
||||
|
||||
#if defined (WIN32) || defined (LINUX)
|
||||
float mDeltaTime;
|
||||
|
||||
JMusic *mCurrentMusic;
|
||||
|
||||
#else
|
||||
SceCtrlData mCtrlPad;
|
||||
u32 mOldButtons;
|
||||
|
||||
u64 mLastTime;
|
||||
u32 mTickFrequency;
|
||||
|
||||
#endif
|
||||
|
||||
bool mDone;
|
||||
|
||||
float mDelta;
|
||||
|
||||
bool mDebug;
|
||||
|
||||
bool mPaused;
|
||||
|
||||
char mDebuggingMsg[256];
|
||||
|
||||
bool mCriticalAssert;
|
||||
const char *mAssertFile;
|
||||
int mAssertLine;
|
||||
|
||||
|
||||
static JGE* mInstance;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get JGE instance.
|
||||
///
|
||||
/// @return JGE instance.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static JGE* GetInstance();
|
||||
static void Destroy();
|
||||
|
||||
void Init();
|
||||
void Run();
|
||||
void End();
|
||||
|
||||
void Update();
|
||||
void Render();
|
||||
|
||||
void Pause();
|
||||
void Resume();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return system timer in milliseconds.
|
||||
///
|
||||
/// @return System time in milliseconds.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
int GetTime(void);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return elapsed time since last frame update.
|
||||
///
|
||||
/// @return Elapsed time in seconds.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
float GetDelta();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Return frame rate.
|
||||
///
|
||||
/// @note This is just 1.0f/GetDelat().
|
||||
///
|
||||
/// @return Number of frames per second.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
float GetFPS();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Check the current state of a button.
|
||||
///
|
||||
/// @param button - Button id.
|
||||
///
|
||||
/// @return Button state.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool GetButtonState(u32 button);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Check if a button is down the first time.
|
||||
///
|
||||
/// @param button - Button id.
|
||||
///
|
||||
/// @return Button state.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool GetButtonClick(u32 button);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get the next keypress.
|
||||
///
|
||||
/// @return Next pressed button, or 0 if none.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u32 ReadButton();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Reset the input buffer.
|
||||
/// This is necessary because there might be phases when GetButtonState
|
||||
/// or GetButtonClick are used, thereby accumulating keypresses in the
|
||||
/// key buffer.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void ResetInput();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get x value of the analog pad.
|
||||
///
|
||||
/// @return X value (0 to 255).
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u8 GetAnalogX();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get y value of the analog pad.
|
||||
///
|
||||
/// @return Y value (0 to 255).
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u8 GetAnalogY();
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get if the system is ended or not.
|
||||
///
|
||||
/// @return Status of the system.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool IsDone() { return mDone; }
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Set the user's core application class.
|
||||
///
|
||||
/// @param app - User defined application class.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void SetApp(JApp *app);
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Print debug message.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void printf(const char *format, ...);
|
||||
|
||||
|
||||
void Assert(const char *filename, long lineNumber);
|
||||
|
||||
#if defined (WIN32) || defined (LINUX)
|
||||
void SetDelta(int delta);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
JGE();
|
||||
~JGE();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
+479
-479
@@ -1,479 +1,479 @@
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
#include "../include/JGE.h"
|
||||
#include "../include/JApp.h"
|
||||
#include "../include/JRenderer.h"
|
||||
#include "../include/JSoundSystem.h"
|
||||
#include "../include/Vector2D.h"
|
||||
#include "../include/JResourceManager.h"
|
||||
#include "../include/JFileSystem.h"
|
||||
//#include "../include/JParticleSystem.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
#if defined (WIN32) // WIN32 specific code
|
||||
#include "../../Dependencies/include/png.h"
|
||||
#include "../../Dependencies/include/fmod.h"
|
||||
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
return (int)GetTickCount();
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
if (JGEGetKeyState(VK_LEFT)) return 0;
|
||||
if (JGEGetKeyState(VK_RIGHT)) return 0xff;
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
if (JGEGetKeyState(VK_UP)) return 0;
|
||||
if (JGEGetKeyState(VK_DOWN)) return 0xff;
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
#elif defined (LINUX) // Unix specific code
|
||||
#include "png.h"
|
||||
#include "../Dependencies/include/fmod.h"
|
||||
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
return (int)time(NULL);
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
/* FIXME
|
||||
if (JGEGetKeyState(VK_LEFT)) return 0;
|
||||
if (JGEGetKeyState(VK_RIGHT)) return 0xff;
|
||||
*/
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
/* FIXME
|
||||
if (JGEGetKeyState(VK_UP)) return 0;
|
||||
if (JGEGetKeyState(VK_DOWN)) return 0xff;
|
||||
*/
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined (WIN32) || defined (LINUX) // Non-PSP code
|
||||
|
||||
JGE::JGE()
|
||||
{
|
||||
mApp = NULL;
|
||||
|
||||
strcpy(mDebuggingMsg, "");
|
||||
mCurrentMusic = NULL;
|
||||
Init();
|
||||
|
||||
// mResourceManager = new JResourceManager();
|
||||
// mFileSystem = new JFileSystem();
|
||||
|
||||
// mParticleSystem = NULL;//new JParticleSystem(500);
|
||||
// mMotionSystem = NULL;//new JMotionSystem();
|
||||
|
||||
}
|
||||
|
||||
|
||||
JGE::~JGE()
|
||||
{
|
||||
JRenderer::Destroy();
|
||||
JFileSystem::Destroy();
|
||||
JSoundSystem::Destroy();
|
||||
//JParticleSystem::Destroy();
|
||||
|
||||
//DestroyGfx();
|
||||
//DestroySfx();
|
||||
|
||||
// if (mResourceManager != NULL)
|
||||
// delete mResourceManager;
|
||||
//
|
||||
// if (mFileSystem != NULL)
|
||||
// delete mFileSystem;
|
||||
//
|
||||
// if (mParticleSystem != NULL)
|
||||
// delete mParticleSystem;
|
||||
//
|
||||
// if (mMotionSystem != NULL)
|
||||
// delete mMotionSystem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void JGE::Init()
|
||||
{
|
||||
mDone = false;
|
||||
mPaused = false;
|
||||
mCriticalAssert = false;
|
||||
|
||||
JRenderer::GetInstance();
|
||||
JFileSystem::GetInstance();
|
||||
JSoundSystem::GetInstance();
|
||||
//JParticleSystem::GetInstance();
|
||||
|
||||
//InitSfx();
|
||||
}
|
||||
|
||||
void JGE::Run()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void JGE::SetDelta(int delta)
|
||||
{
|
||||
mDeltaTime = (float)delta / 1000.0f; // change to second
|
||||
}
|
||||
|
||||
float JGE::GetDelta()
|
||||
{
|
||||
return mDeltaTime;
|
||||
//return hge->Timer_GetDelta()*1000;
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetFPS()
|
||||
{
|
||||
//return (float)hge->Timer_GetFPS();
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonState(u32 button)
|
||||
{
|
||||
//return (gButtons&button)==button;
|
||||
return JGEGetButtonState(button);
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonClick(u32 button)
|
||||
{
|
||||
//return (gButtons&button)==button && (gOldButtons&button)!=button;
|
||||
return JGEGetButtonClick(button);
|
||||
}
|
||||
|
||||
u32 JGE::ReadButton()
|
||||
{
|
||||
return JGEReadKey();
|
||||
}
|
||||
|
||||
void JGE::ResetInput()
|
||||
{
|
||||
JGEResetInput();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
#else ///// PSP specified code
|
||||
|
||||
|
||||
|
||||
// include all the following so we only have one .o file
|
||||
//#include "../src/JGfx.cpp"
|
||||
//#include "../src/JSfx.cpp"
|
||||
|
||||
|
||||
JGE::JGE()
|
||||
{
|
||||
mApp = NULL;
|
||||
|
||||
Init();
|
||||
|
||||
// mResourceManager = new JResourceManager();
|
||||
// mFileSystem = new JFileSystem();
|
||||
//
|
||||
// mParticleSystem = new JParticleSystem(500);
|
||||
// mMotionSystem = new JMotionSystem();
|
||||
|
||||
}
|
||||
|
||||
JGE::~JGE()
|
||||
{
|
||||
JRenderer::Destroy();
|
||||
JSoundSystem::Destroy();
|
||||
JFileSystem::Destroy();
|
||||
|
||||
//DestroyGfx();
|
||||
//DestroySfx();
|
||||
|
||||
// delete mResourceManager;
|
||||
// delete mFileSystem;
|
||||
// delete mParticleSystem;
|
||||
// delete mMotionSystem;
|
||||
|
||||
// if (mApp != NULL)
|
||||
// {
|
||||
// mApp->Destroy();
|
||||
// delete mApp;
|
||||
// mApp = NULL;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
void JGE::Init()
|
||||
{
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
mDebug = true;
|
||||
#else
|
||||
mDebug = false;
|
||||
#endif
|
||||
|
||||
if (mDebug)
|
||||
pspDebugScreenInit(); // do this so that we can use pspDebugScreenPrintf
|
||||
|
||||
strcpy(mDebuggingMsg, "");
|
||||
|
||||
sceCtrlSetSamplingCycle(0);
|
||||
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
|
||||
|
||||
JRenderer::GetInstance();
|
||||
JFileSystem::GetInstance();
|
||||
JSoundSystem::GetInstance();
|
||||
|
||||
mDone = false;
|
||||
mPaused = false;
|
||||
mCriticalAssert = false;
|
||||
|
||||
//InitSfx();
|
||||
|
||||
//Create();
|
||||
|
||||
// mCurrMS = 1.0f;
|
||||
// mFPSSlice = 0;
|
||||
|
||||
//struct timeval tp;
|
||||
//gettimeofday(&tp, NULL);
|
||||
//mTimeBase = tp.tv_sec;
|
||||
|
||||
//mLastTime = GetTime();
|
||||
|
||||
|
||||
mTickFrequency = sceRtcGetTickResolution();
|
||||
sceRtcGetCurrentTick(&mLastTime);
|
||||
}
|
||||
|
||||
|
||||
// returns number of milliseconds since game started
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
|
||||
u64 curr;
|
||||
sceRtcGetCurrentTick(&curr);
|
||||
|
||||
return (int)(curr / mTickFrequency);
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetDelta()
|
||||
{
|
||||
return mDelta;
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetFPS()
|
||||
{
|
||||
return 1.0f / mDelta;
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonState(u32 button)
|
||||
{
|
||||
return (mCtrlPad.Buttons&button)==button;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonClick(u32 button)
|
||||
{
|
||||
return (mCtrlPad.Buttons&button)==button && (mOldButtons&button)!=button;
|
||||
}
|
||||
|
||||
u32 JGE::ReadButton()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void JGE::ResetInput()
|
||||
{
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
return mCtrlPad.Lx;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
return mCtrlPad.Ly;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Run()
|
||||
{
|
||||
|
||||
u64 curr;
|
||||
|
||||
while (!mDone)
|
||||
{
|
||||
if (!mPaused)
|
||||
{
|
||||
sceRtcGetCurrentTick(&curr);
|
||||
|
||||
|
||||
mDelta = (curr-mLastTime) / (float)mTickFrequency;// * 1000.0f;
|
||||
mLastTime = curr;
|
||||
|
||||
sceCtrlPeekBufferPositive(&mCtrlPad, 1); // using sceCtrlPeekBufferPositive is faster than sceCtrlReadBufferPositive
|
||||
// because sceCtrlReadBufferPositive waits for vsync internally
|
||||
|
||||
Update();
|
||||
|
||||
Render();
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
if (strlen(mDebuggingMsg)>0)
|
||||
{
|
||||
pspDebugScreenSetXY(0, 0);
|
||||
pspDebugScreenPrintf(mDebuggingMsg);
|
||||
}
|
||||
}
|
||||
|
||||
mOldButtons = mCtrlPad.Buttons;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif ///// PSP specified code
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
JGE* JGE::mInstance = NULL;
|
||||
//static int gCount = 0;
|
||||
|
||||
JGE* JGE::GetInstance()
|
||||
{
|
||||
if (mInstance == NULL)
|
||||
{
|
||||
mInstance = new JGE();
|
||||
}
|
||||
|
||||
//gCount++;
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Destroy()
|
||||
{
|
||||
//gCount--;
|
||||
if (mInstance)
|
||||
{
|
||||
delete mInstance;
|
||||
mInstance = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void JGE::SetApp(JApp *app)
|
||||
{
|
||||
mApp = app;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Update()
|
||||
{
|
||||
if (mApp != NULL)
|
||||
mApp->Update();
|
||||
}
|
||||
|
||||
void JGE::Render()
|
||||
{
|
||||
JRenderer* renderer = JRenderer::GetInstance();
|
||||
|
||||
renderer->BeginScene();
|
||||
|
||||
if (mApp != NULL)
|
||||
mApp->Render();
|
||||
|
||||
renderer->EndScene();
|
||||
}
|
||||
|
||||
|
||||
void JGE::End()
|
||||
{
|
||||
mDone = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void JGE::printf(const char *format, ...)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
vsprintf(mDebuggingMsg, format, list);
|
||||
va_end(list);
|
||||
|
||||
// FILE *f = fopen("jge.log", "a+");
|
||||
// fprintf(f, "%s\n", mDebuggingMsg);
|
||||
// fclose(f);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGE::Pause()
|
||||
{
|
||||
if (mPaused) return;
|
||||
|
||||
mPaused = true;
|
||||
if (mApp != NULL)
|
||||
mApp->Pause();
|
||||
}
|
||||
|
||||
|
||||
void JGE::Resume()
|
||||
{
|
||||
if (mPaused)
|
||||
{
|
||||
mPaused = false;
|
||||
if (mApp != NULL)
|
||||
mApp->Resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void JGE::Assert(const char *filename, long lineNumber)
|
||||
{
|
||||
mAssertFile = filename;
|
||||
mAssertLine = lineNumber;
|
||||
mCriticalAssert = true;
|
||||
|
||||
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
#include "../include/JGE.h"
|
||||
#include "../include/JApp.h"
|
||||
#include "../include/JRenderer.h"
|
||||
#include "../include/JSoundSystem.h"
|
||||
#include "../include/Vector2D.h"
|
||||
#include "../include/JResourceManager.h"
|
||||
#include "../include/JFileSystem.h"
|
||||
//#include "../include/JParticleSystem.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
#if defined (WIN32) // WIN32 specific code
|
||||
#include "../../Dependencies/include/png.h"
|
||||
#include "../../Dependencies/include/fmod.h"
|
||||
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
return (int)GetTickCount();
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
if (JGEGetKeyState(VK_LEFT)) return 0;
|
||||
if (JGEGetKeyState(VK_RIGHT)) return 0xff;
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
if (JGEGetKeyState(VK_UP)) return 0;
|
||||
if (JGEGetKeyState(VK_DOWN)) return 0xff;
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
#elif defined (LINUX) // Unix specific code
|
||||
#include "png.h"
|
||||
#include "../Dependencies/include/fmod.h"
|
||||
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
return (int)time(NULL);
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
/* FIXME
|
||||
if (JGEGetKeyState(VK_LEFT)) return 0;
|
||||
if (JGEGetKeyState(VK_RIGHT)) return 0xff;
|
||||
*/
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
/* FIXME
|
||||
if (JGEGetKeyState(VK_UP)) return 0;
|
||||
if (JGEGetKeyState(VK_DOWN)) return 0xff;
|
||||
*/
|
||||
|
||||
return 0x80;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined (WIN32) || defined (LINUX) // Non-PSP code
|
||||
|
||||
JGE::JGE()
|
||||
{
|
||||
mApp = NULL;
|
||||
|
||||
strcpy(mDebuggingMsg, "");
|
||||
mCurrentMusic = NULL;
|
||||
Init();
|
||||
|
||||
// mResourceManager = new JResourceManager();
|
||||
// mFileSystem = new JFileSystem();
|
||||
|
||||
// mParticleSystem = NULL;//new JParticleSystem(500);
|
||||
// mMotionSystem = NULL;//new JMotionSystem();
|
||||
|
||||
}
|
||||
|
||||
|
||||
JGE::~JGE()
|
||||
{
|
||||
JRenderer::Destroy();
|
||||
JFileSystem::Destroy();
|
||||
JSoundSystem::Destroy();
|
||||
//JParticleSystem::Destroy();
|
||||
|
||||
//DestroyGfx();
|
||||
//DestroySfx();
|
||||
|
||||
// if (mResourceManager != NULL)
|
||||
// delete mResourceManager;
|
||||
//
|
||||
// if (mFileSystem != NULL)
|
||||
// delete mFileSystem;
|
||||
//
|
||||
// if (mParticleSystem != NULL)
|
||||
// delete mParticleSystem;
|
||||
//
|
||||
// if (mMotionSystem != NULL)
|
||||
// delete mMotionSystem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void JGE::Init()
|
||||
{
|
||||
mDone = false;
|
||||
mPaused = false;
|
||||
mCriticalAssert = false;
|
||||
|
||||
JRenderer::GetInstance();
|
||||
JFileSystem::GetInstance();
|
||||
JSoundSystem::GetInstance();
|
||||
//JParticleSystem::GetInstance();
|
||||
|
||||
//InitSfx();
|
||||
}
|
||||
|
||||
void JGE::Run()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void JGE::SetDelta(int delta)
|
||||
{
|
||||
mDeltaTime = (float)delta / 1000.0f; // change to second
|
||||
}
|
||||
|
||||
float JGE::GetDelta()
|
||||
{
|
||||
return mDeltaTime;
|
||||
//return hge->Timer_GetDelta()*1000;
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetFPS()
|
||||
{
|
||||
//return (float)hge->Timer_GetFPS();
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonState(u32 button)
|
||||
{
|
||||
//return (gButtons&button)==button;
|
||||
return JGEGetButtonState(button);
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonClick(u32 button)
|
||||
{
|
||||
//return (gButtons&button)==button && (gOldButtons&button)!=button;
|
||||
return JGEGetButtonClick(button);
|
||||
}
|
||||
|
||||
u32 JGE::ReadButton()
|
||||
{
|
||||
return JGEReadKey();
|
||||
}
|
||||
|
||||
void JGE::ResetInput()
|
||||
{
|
||||
JGEResetInput();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
#else ///// PSP specified code
|
||||
|
||||
|
||||
|
||||
// include all the following so we only have one .o file
|
||||
//#include "../src/JGfx.cpp"
|
||||
//#include "../src/JSfx.cpp"
|
||||
|
||||
|
||||
JGE::JGE()
|
||||
{
|
||||
mApp = NULL;
|
||||
|
||||
Init();
|
||||
|
||||
// mResourceManager = new JResourceManager();
|
||||
// mFileSystem = new JFileSystem();
|
||||
//
|
||||
// mParticleSystem = new JParticleSystem(500);
|
||||
// mMotionSystem = new JMotionSystem();
|
||||
|
||||
}
|
||||
|
||||
JGE::~JGE()
|
||||
{
|
||||
JRenderer::Destroy();
|
||||
JSoundSystem::Destroy();
|
||||
JFileSystem::Destroy();
|
||||
|
||||
//DestroyGfx();
|
||||
//DestroySfx();
|
||||
|
||||
// delete mResourceManager;
|
||||
// delete mFileSystem;
|
||||
// delete mParticleSystem;
|
||||
// delete mMotionSystem;
|
||||
|
||||
// if (mApp != NULL)
|
||||
// {
|
||||
// mApp->Destroy();
|
||||
// delete mApp;
|
||||
// mApp = NULL;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
void JGE::Init()
|
||||
{
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
mDebug = true;
|
||||
#else
|
||||
mDebug = false;
|
||||
#endif
|
||||
|
||||
if (mDebug)
|
||||
pspDebugScreenInit(); // do this so that we can use pspDebugScreenPrintf
|
||||
|
||||
strcpy(mDebuggingMsg, "");
|
||||
|
||||
sceCtrlSetSamplingCycle(0);
|
||||
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
|
||||
|
||||
JRenderer::GetInstance();
|
||||
JFileSystem::GetInstance();
|
||||
JSoundSystem::GetInstance();
|
||||
|
||||
mDone = false;
|
||||
mPaused = false;
|
||||
mCriticalAssert = false;
|
||||
|
||||
//InitSfx();
|
||||
|
||||
//Create();
|
||||
|
||||
// mCurrMS = 1.0f;
|
||||
// mFPSSlice = 0;
|
||||
|
||||
//struct timeval tp;
|
||||
//gettimeofday(&tp, NULL);
|
||||
//mTimeBase = tp.tv_sec;
|
||||
|
||||
//mLastTime = GetTime();
|
||||
|
||||
|
||||
mTickFrequency = sceRtcGetTickResolution();
|
||||
sceRtcGetCurrentTick(&mLastTime);
|
||||
}
|
||||
|
||||
|
||||
// returns number of milliseconds since game started
|
||||
int JGE::GetTime(void)
|
||||
{
|
||||
|
||||
u64 curr;
|
||||
sceRtcGetCurrentTick(&curr);
|
||||
|
||||
return (int)(curr / mTickFrequency);
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetDelta()
|
||||
{
|
||||
return mDelta;
|
||||
}
|
||||
|
||||
|
||||
float JGE::GetFPS()
|
||||
{
|
||||
return 1.0f / mDelta;
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonState(u32 button)
|
||||
{
|
||||
return (mCtrlPad.Buttons&button)==button;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool JGE::GetButtonClick(u32 button)
|
||||
{
|
||||
return (mCtrlPad.Buttons&button)==button && (mOldButtons&button)!=button;
|
||||
}
|
||||
|
||||
u32 JGE::ReadButton()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void JGE::ResetInput()
|
||||
{
|
||||
}
|
||||
|
||||
u8 JGE::GetAnalogX()
|
||||
{
|
||||
return mCtrlPad.Lx;
|
||||
}
|
||||
|
||||
|
||||
u8 JGE::GetAnalogY()
|
||||
{
|
||||
return mCtrlPad.Ly;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Run()
|
||||
{
|
||||
|
||||
u64 curr;
|
||||
|
||||
while (!mDone)
|
||||
{
|
||||
if (!mPaused)
|
||||
{
|
||||
sceRtcGetCurrentTick(&curr);
|
||||
|
||||
|
||||
mDelta = (curr-mLastTime) / (float)mTickFrequency;// * 1000.0f;
|
||||
mLastTime = curr;
|
||||
|
||||
sceCtrlPeekBufferPositive(&mCtrlPad, 1); // using sceCtrlPeekBufferPositive is faster than sceCtrlReadBufferPositive
|
||||
// because sceCtrlReadBufferPositive waits for vsync internally
|
||||
|
||||
Update();
|
||||
|
||||
Render();
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
if (strlen(mDebuggingMsg)>0)
|
||||
{
|
||||
pspDebugScreenSetXY(0, 0);
|
||||
pspDebugScreenPrintf(mDebuggingMsg);
|
||||
}
|
||||
}
|
||||
|
||||
mOldButtons = mCtrlPad.Buttons;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif ///// PSP specified code
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
JGE* JGE::mInstance = NULL;
|
||||
//static int gCount = 0;
|
||||
|
||||
JGE* JGE::GetInstance()
|
||||
{
|
||||
if (mInstance == NULL)
|
||||
{
|
||||
mInstance = new JGE();
|
||||
}
|
||||
|
||||
//gCount++;
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Destroy()
|
||||
{
|
||||
//gCount--;
|
||||
if (mInstance)
|
||||
{
|
||||
delete mInstance;
|
||||
mInstance = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void JGE::SetApp(JApp *app)
|
||||
{
|
||||
mApp = app;
|
||||
}
|
||||
|
||||
|
||||
void JGE::Update()
|
||||
{
|
||||
if (mApp != NULL)
|
||||
mApp->Update();
|
||||
}
|
||||
|
||||
void JGE::Render()
|
||||
{
|
||||
JRenderer* renderer = JRenderer::GetInstance();
|
||||
|
||||
renderer->BeginScene();
|
||||
|
||||
if (mApp != NULL)
|
||||
mApp->Render();
|
||||
|
||||
renderer->EndScene();
|
||||
}
|
||||
|
||||
|
||||
void JGE::End()
|
||||
{
|
||||
mDone = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void JGE::printf(const char *format, ...)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
vsprintf(mDebuggingMsg, format, list);
|
||||
va_end(list);
|
||||
|
||||
// FILE *f = fopen("jge.log", "a+");
|
||||
// fprintf(f, "%s\n", mDebuggingMsg);
|
||||
// fclose(f);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGE::Pause()
|
||||
{
|
||||
if (mPaused) return;
|
||||
|
||||
mPaused = true;
|
||||
if (mApp != NULL)
|
||||
mApp->Pause();
|
||||
}
|
||||
|
||||
|
||||
void JGE::Resume()
|
||||
{
|
||||
if (mPaused)
|
||||
{
|
||||
mPaused = false;
|
||||
if (mApp != NULL)
|
||||
mApp->Resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void JGE::Assert(const char *filename, long lineNumber)
|
||||
{
|
||||
mAssertFile = filename;
|
||||
mAssertLine = lineNumber;
|
||||
mCriticalAssert = true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user