mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-07 19:18:19 +02:00
133 lines
No EOL
3.2 KiB
C++
133 lines
No EOL
3.2 KiB
C++
#pragma once
|
|
|
|
#include "Common.h"
|
|
#include "util/CritSect.h"
|
|
#include <list>
|
|
|
|
NS_BF_BEGIN;
|
|
|
|
typedef void (*BFApp_UpdateFunc)(bool batchStart);
|
|
typedef void (*BFApp_UpdateFFunc)(float updatePct);
|
|
typedef void (*BFApp_DrawFunc)(bool forceDraw);
|
|
|
|
class BFApp;
|
|
class BFSoundManager;
|
|
class RenderDevice;
|
|
class BFWindow;
|
|
class FileStream;
|
|
class DrawLayer;
|
|
|
|
typedef std::list<BFWindow*> BFWindowList;
|
|
|
|
enum
|
|
{
|
|
CURSOR_POINTER,
|
|
CURSOR_HAND,
|
|
CURSOR_DRAGGING,
|
|
CURSOR_TEXT,
|
|
CURSOR_CIRCLE_SLASH,
|
|
CURSOR_SIZEALL,
|
|
CURSOR_SIZENESW,
|
|
CURSOR_SIZENS,
|
|
CURSOR_SIZENWSE,
|
|
CURSOR_SIZEWE,
|
|
CURSOR_WAIT,
|
|
CURSOR_NONE,
|
|
|
|
NUM_CURSORS
|
|
};
|
|
|
|
class BFSysBitmap
|
|
{
|
|
public:
|
|
};
|
|
|
|
class BFInputDevice
|
|
{
|
|
public:
|
|
virtual ~BFInputDevice() {}
|
|
virtual String GetState() = 0;
|
|
};
|
|
|
|
class BFApp
|
|
{
|
|
public:
|
|
CritSect mCritSect;
|
|
String mTitle;
|
|
String mInstallDir;
|
|
String mDataDir;
|
|
bool mDrawEnabled;
|
|
float mRefreshRate;
|
|
int mMaxUpdatesPerDraw;
|
|
double mUpdateCntF;
|
|
double mClientUpdateCntF;
|
|
|
|
bool mInProcess;
|
|
bool mRunning;
|
|
RenderDevice* mRenderDevice;
|
|
int mSysDialogCnt;
|
|
int mUpdateCnt;
|
|
int mNumPhysUpdates;
|
|
SyncEvent mVSyncEvent;
|
|
volatile bool mVSyncActive;
|
|
bool mVSynched;
|
|
bool mVSyncFailed;
|
|
bool mForceNextDraw;
|
|
|
|
int mUpdateSampleCount;
|
|
int mUpdateSampleTimes;
|
|
|
|
uint32 mLastProcessTick;
|
|
float mPhysFrameTimeAcc;
|
|
|
|
BFApp_UpdateFunc mUpdateFunc;
|
|
BFApp_UpdateFFunc mUpdateFFunc;
|
|
BFApp_DrawFunc mDrawFunc;
|
|
int mCursor;
|
|
|
|
BFWindowList mWindowList;
|
|
BFWindowList mPendingWindowDeleteList;
|
|
|
|
public:
|
|
virtual void Update(bool batchStart);
|
|
virtual void UpdateF(float updatePct);
|
|
virtual void Draw();
|
|
virtual void Process();
|
|
virtual void PhysSetCursor() = 0;
|
|
|
|
public:
|
|
BFApp();
|
|
virtual ~BFApp();
|
|
|
|
virtual void Init();
|
|
virtual void Run();
|
|
virtual void Shutdown();
|
|
virtual void SetCursor(int cursor);
|
|
virtual void GetDesktopResolution(int& width, int& height) = 0;
|
|
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) = 0;
|
|
virtual void GetWorkspaceRectFrom(int fromX, int fromY, int fromWidth, int fromHeight, int& outX, int& outY, int& outWidth, int& outHeight) { GetWorkspaceRect(outX, outY, outWidth, outHeight); }
|
|
|
|
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) = 0;
|
|
virtual void RemoveWindow(BFWindow* window);
|
|
virtual DrawLayer* CreateDrawLayer(BFWindow* window) = 0;
|
|
|
|
virtual void* GetClipboardData(const StringImpl& format, int* size) = 0;
|
|
virtual void ReleaseClipboardData(void* ptr) = 0;
|
|
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) = 0;
|
|
virtual void RehupMouse() {}
|
|
|
|
virtual String EnumerateInputDevices() { return ""; }
|
|
virtual BFInputDevice* CreateInputDevice(const StringImpl& guid) { return NULL; }
|
|
|
|
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) = 0;
|
|
|
|
virtual FileStream* OpenBinaryFile(const StringImpl& fileName);
|
|
|
|
virtual BFSoundManager* GetSoundManager() { return NULL; }
|
|
|
|
virtual intptr GetCriticalThreadId(int idx) { return 0; }
|
|
};
|
|
|
|
extern BFApp* gBFApp;
|
|
|
|
NS_BF_END; |