networking
This commit is contained in:
224
external/steamworks/steamworksexample/GameEngine.h
vendored
Normal file
224
external/steamworks/steamworksexample/GameEngine.h
vendored
Normal file
@@ -0,0 +1,224 @@
|
||||
//========= Copyright <20> 1996-2008, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: Main class for the game engine
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================
|
||||
|
||||
#ifndef GAMEENGINE_H
|
||||
#define GAMEENGINE_H
|
||||
|
||||
#include <set>
|
||||
#include <map>
|
||||
|
||||
// Typedef for font handles
|
||||
typedef int HGAMEFONT;
|
||||
|
||||
// Typedef for vertex buffer handles
|
||||
typedef int HGAMEVERTBUF;
|
||||
|
||||
// Typedef for texture handles
|
||||
typedef int HGAMETEXTURE;
|
||||
|
||||
|
||||
// Typedef for voice channels
|
||||
typedef int HGAMEVOICECHANNEL;
|
||||
|
||||
// BDrawText position flags
|
||||
#define TEXTPOS_TOP 0x00000000
|
||||
#define TEXTPOS_LEFT 0x00000000
|
||||
#define TEXTPOS_CENTER 0x00000001
|
||||
#define TEXTPOS_RIGHT 0x00000002
|
||||
#define TEXTPOS_VCENTER 0x00000004
|
||||
#define TEXTPOS_BOTTOM 0x00000008
|
||||
|
||||
|
||||
#define VOICE_OUTPUT_SAMPLE_RATE 11000 // real sample rate is 11025 but for XAudio2 it must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR
|
||||
#define VOICE_OUTPUT_SAMPLE_RATE_IDEAL 11025
|
||||
#define BYTES_PER_SAMPLE 2
|
||||
|
||||
// Texture formats we support for upload to textures
|
||||
enum ETEXTUREFORMAT
|
||||
{
|
||||
eTextureFormat_RGBA, // 8 bits per channel
|
||||
eTextureFormat_BGRA, // 8 bits per channel
|
||||
eTextureFormat_BGRA16, // 16 bits per channel
|
||||
};
|
||||
|
||||
#define MAX_CONTROLLERS 4
|
||||
|
||||
enum ECONTROLLERDIGITALACTION
|
||||
{
|
||||
eControllerDigitalAction_TurnLeft,
|
||||
eControllerDigitalAction_TurnRight,
|
||||
eControllerDigitalAction_ForwardThrust,
|
||||
eControllerDigitalAction_ReverseThrust,
|
||||
eControllerDigitalAction_FireLasers,
|
||||
eControllerDigitalAction_PauseMenu,
|
||||
|
||||
eControllerDigitalAction_MenuUp,
|
||||
eControllerDigitalAction_MenuDown,
|
||||
eControllerDigitalAction_MenuLeft,
|
||||
eControllerDigitalAction_MenuRight,
|
||||
eControllerDigitalAction_MenuSelect,
|
||||
eControllerDigitalAction_MenuCancel,
|
||||
|
||||
eControllerDigitalAction_NumActions
|
||||
};
|
||||
|
||||
enum ECONTROLLERANALOGACTION
|
||||
{
|
||||
eControllerAnalogAction_AnalogControls,
|
||||
|
||||
eControllerAnalogAction_NumActions
|
||||
};
|
||||
|
||||
enum ECONTROLLERACTIONSET
|
||||
{
|
||||
eControllerActionSet_ShipControls,
|
||||
eControllerActionSet_MenuControls,
|
||||
eControllerActionSet_Layer_Thrust,
|
||||
|
||||
eControllerActionSet_NumSets
|
||||
};
|
||||
|
||||
// used for VR support
|
||||
namespace vr { class IVRSystem; }
|
||||
|
||||
//
|
||||
// Interface that needs to be implemented for game engines on all platforms
|
||||
//
|
||||
class IGameEngine
|
||||
{
|
||||
public:
|
||||
|
||||
// Just here to stop warnings on non-virtual destructor in gcc builds
|
||||
virtual ~IGameEngine() {};
|
||||
|
||||
// Check if the game engine is initialized ok and ready for use
|
||||
virtual bool BReadyForUse() = 0;
|
||||
|
||||
// Check if the engine is shutting down
|
||||
virtual bool BShuttingDown() = 0;
|
||||
|
||||
// Set the background color
|
||||
virtual void SetBackgroundColor( short a, short r, short g, short b ) = 0;
|
||||
|
||||
// Start a frame, clear(), beginscene(), etc
|
||||
virtual bool StartFrame() = 0;
|
||||
|
||||
// Finish a frame, endscene(), present(), etc.
|
||||
virtual void EndFrame() = 0;
|
||||
|
||||
// Shutdown the game engine
|
||||
virtual void Shutdown() = 0;
|
||||
|
||||
// Pump messages from the OS
|
||||
virtual void MessagePump() = 0;
|
||||
|
||||
// Accessors for game screen size
|
||||
virtual int32 GetViewportWidth() = 0;
|
||||
virtual int32 GetViewportHeight() = 0;
|
||||
|
||||
// Function for drawing text to the screen, dwFormat is a combination of flags like DT_LEFT, TEXTPOS_VCENTER etc...
|
||||
virtual bool BDrawString( HGAMEFONT hFont, RECT rect, DWORD dwColor, DWORD dwFormat, const char *pchText ) = 0;
|
||||
|
||||
// Create a new font returning our internal handle value for it (0 means failure)
|
||||
virtual HGAMEFONT HCreateFont( int nHeight, int nFontWeight, bool bItalic, const char * pchFont ) = 0;
|
||||
|
||||
// Create a new texture returning our internal handle value for it (0 means failure), texture type specifies the type of data contained in pData
|
||||
virtual HGAMETEXTURE HCreateTexture( byte *pData, uint32 uWidth, uint32 uHeight, ETEXTUREFORMAT eTextureFormat = eTextureFormat_RGBA ) = 0;
|
||||
|
||||
// update an existing texture, texture type specifies the type of data contained in pData
|
||||
virtual bool UpdateTexture( HGAMETEXTURE texture, byte *pData, uint32 uWidth, uint32 uHeight, ETEXTUREFORMAT eTextureFormat = eTextureFormat_RGBA ) = 0;
|
||||
|
||||
// Draw a line, the engine itself will manage batching these (although you can explicitly flush if you need to)
|
||||
virtual bool BDrawLine( float xPos0, float yPos0, DWORD dwColor0, float xPos1, float yPos1, DWORD dwColor1 ) = 0;
|
||||
|
||||
// Flush the line buffer
|
||||
virtual bool BFlushLineBuffer() = 0;
|
||||
|
||||
// Draw a point, the engine itself will manage batching these (although you can explicitly flush if you need to)
|
||||
virtual bool BDrawPoint( float xPos, float yPos, DWORD dwColor ) = 0;
|
||||
|
||||
// Flush the point buffer
|
||||
virtual bool BFlushPointBuffer() = 0;
|
||||
|
||||
// Draw a filled quad
|
||||
virtual bool BDrawFilledRect( float xPos0, float yPos0, float xPos1, float yPos1, DWORD dwColor ) = 0;
|
||||
|
||||
// Draw a textured rectangle
|
||||
virtual bool BDrawTexturedRect( float xPos0, float yPos0, float xPos1, float yPos1,
|
||||
float u0, float v0, float u1, float v1, DWORD dwColor, HGAMETEXTURE hTexture ) = 0;
|
||||
|
||||
// Draw a textured arbitrary quad
|
||||
virtual bool BDrawTexturedQuad( float xPos0, float yPos0, float xPos1, float yPos1, float xPos2, float yPos2, float xPos3, float yPos3,
|
||||
float u0, float v0, float u1, float v1, DWORD dwColor, HGAMETEXTURE hTexture ) = 0;
|
||||
|
||||
// Flush any still cached quad buffers
|
||||
virtual bool BFlushQuadBuffer() = 0;
|
||||
|
||||
// Get the current state of a key
|
||||
virtual bool BIsKeyDown( DWORD dwVK ) = 0;
|
||||
|
||||
// Get the first (in some arbitrary order) key down, if any
|
||||
virtual bool BGetFirstKeyDown( DWORD *pdwVK ) = 0;
|
||||
|
||||
// Return true if there is an active Steam Controller
|
||||
virtual bool BIsSteamInputDeviceActive() = 0;
|
||||
|
||||
// Get the current state of a controller action
|
||||
virtual bool BIsControllerActionActive( ECONTROLLERDIGITALACTION dwAction ) = 0;
|
||||
|
||||
// Find an active Steam controller
|
||||
virtual void FindActiveSteamInputDevice() = 0;
|
||||
|
||||
// Get the current state of a controller analog action
|
||||
virtual void GetControllerAnalogAction( ECONTROLLERANALOGACTION dwAction, float *x, float *y ) = 0;
|
||||
|
||||
// Set the current Steam Controller Action set
|
||||
virtual void SetSteamControllerActionSet( ECONTROLLERACTIONSET dwActionSet ) = 0;
|
||||
|
||||
// Set an Action Set Layer for Steam Input
|
||||
virtual void ActivateSteamControllerActionSetLayer( ECONTROLLERACTIONSET dwActionSet ) = 0;
|
||||
virtual void DeactivateSteamControllerActionSetLayer( ECONTROLLERACTIONSET dwActionSet ) = 0;
|
||||
|
||||
// Returns whether a given action set layer is active
|
||||
virtual bool BIsActionSetLayerActive( ECONTROLLERACTIONSET dwActionSetLayer ) = 0;
|
||||
|
||||
// These calls return a string describing which controller button the action is currently bound to
|
||||
virtual const char *GetTextStringForControllerOriginDigital( ECONTROLLERACTIONSET dwActionSet, ECONTROLLERDIGITALACTION dwDigitalAction ) = 0;
|
||||
virtual const char *GetTextStringForControllerOriginAnalog( ECONTROLLERACTIONSET dwActionSet, ECONTROLLERANALOGACTION dwDigitalAction ) = 0;
|
||||
|
||||
virtual void SetControllerColor( uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0;
|
||||
virtual void SetTriggerEffect( bool bEnabled ) = 0;
|
||||
virtual void TriggerControllerVibration( unsigned short nLeftSpeed, unsigned short nRightSpeed ) = 0;
|
||||
virtual void TriggerControllerHaptics( ESteamControllerPad ePad, unsigned short usOnMicroSec, unsigned short usOffMicroSec, unsigned short usRepeat ) = 0;
|
||||
|
||||
// Get current tick count for the game engine
|
||||
virtual uint64 GetGameTickCount() = 0;
|
||||
|
||||
// Tell the game engine to update current tick count
|
||||
virtual void UpdateGameTickCount() = 0;
|
||||
|
||||
// Tell the game engine to sleep for a bit if needed to limit frame rate. Returns
|
||||
// true if you need to keep calling it to sleep more to reach your limit, returns
|
||||
// false when you should proceed to the next frame.
|
||||
virtual bool BSleepForFrameRateLimit( uint32 ulMaxFrameRate ) = 0;
|
||||
|
||||
// Get the tick count elapsed since the previous frame
|
||||
// bugbug - We use this time to compute things like thrust and acceleration in the game,
|
||||
// so it's important in doesn't jump ahead by large increments... Need a better
|
||||
// way to handle that.
|
||||
virtual uint64 GetGameTicksFrameDelta() = 0;
|
||||
|
||||
// Check if the game engine hwnd currently has focus (and a working d3d device)
|
||||
virtual bool BGameEngineHasFocus() = 0;
|
||||
|
||||
// Voice chat functions
|
||||
virtual HGAMEVOICECHANNEL HCreateVoiceChannel() = 0;
|
||||
virtual void DestroyVoiceChannel( HGAMEVOICECHANNEL hChannel ) = 0;
|
||||
virtual bool AddVoiceData( HGAMEVOICECHANNEL hChannel, const uint8 *pVoiceData, uint32 uLength ) = 0;
|
||||
};
|
||||
|
||||
#endif // GAMEENGINE_H
|
||||
Reference in New Issue
Block a user