* Key buffer update : Add functions & clean the file
This commit is contained in:
jean.chalard
2008-11-21 14:13:01 +00:00
parent bd5df274e8
commit d7ea37233c
2 changed files with 727 additions and 707 deletions

View File

@@ -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