Game Kit: rewrite DirectWindow, FileGameSound and SimpleGameSound headers
Change-Id: I45687f8164dbc915a0cb6ca1bf4c0211761cb098 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2108 Reviewed-by: Adrien Destugues <[email protected]> Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
450208975b
commit
f0b6c6a24b
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2008 Haiku, Inc. All rights reserved.
|
* Copyright 2020 Haiku, Inc. All rights reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
@@ -14,22 +14,20 @@
|
|||||||
|
|
||||||
|
|
||||||
enum direct_buffer_state {
|
enum direct_buffer_state {
|
||||||
B_DIRECT_MODE_MASK = 15,
|
B_DIRECT_MODE_MASK = 15,
|
||||||
|
B_DIRECT_START = 0,
|
||||||
B_DIRECT_START = 0,
|
B_DIRECT_STOP = 1,
|
||||||
B_DIRECT_STOP = 1,
|
B_DIRECT_MODIFY = 2,
|
||||||
B_DIRECT_MODIFY = 2,
|
|
||||||
|
|
||||||
B_CLIPPING_MODIFIED = 16,
|
B_CLIPPING_MODIFIED = 16,
|
||||||
B_BUFFER_RESIZED = 32,
|
B_BUFFER_RESIZED = 32,
|
||||||
B_BUFFER_MOVED = 64,
|
B_BUFFER_MOVED = 64,
|
||||||
B_BUFFER_RESET = 128
|
B_BUFFER_RESET = 128
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
enum direct_driver_state {
|
enum direct_driver_state {
|
||||||
B_DRIVER_CHANGED = 0x0001,
|
B_DRIVER_CHANGED = 0x0001,
|
||||||
B_MODE_CHANGED = 0x0002
|
B_MODE_CHANGED = 0x0002
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -58,10 +56,12 @@ public:
|
|||||||
BDirectWindow(BRect frame, const char* title,
|
BDirectWindow(BRect frame, const char* title,
|
||||||
window_type type, uint32 flags,
|
window_type type, uint32 flags,
|
||||||
uint32 workspace = B_CURRENT_WORKSPACE);
|
uint32 workspace = B_CURRENT_WORKSPACE);
|
||||||
|
|
||||||
BDirectWindow(BRect frame, const char* title,
|
BDirectWindow(BRect frame, const char* title,
|
||||||
window_look look, window_feel feel,
|
window_look look, window_feel feel,
|
||||||
uint32 flags,
|
uint32 flags,
|
||||||
uint32 workspace = B_CURRENT_WORKSPACE);
|
uint32 workspace = B_CURRENT_WORKSPACE);
|
||||||
|
|
||||||
virtual ~BDirectWindow();
|
virtual ~BDirectWindow();
|
||||||
|
|
||||||
static BArchivable* Instantiate(BMessage* data);
|
static BArchivable* Instantiate(BMessage* data);
|
||||||
@@ -69,46 +69,57 @@ public:
|
|||||||
bool deep = true) const;
|
bool deep = true) const;
|
||||||
|
|
||||||
virtual void Quit();
|
virtual void Quit();
|
||||||
|
|
||||||
virtual void DispatchMessage(BMessage* message,
|
virtual void DispatchMessage(BMessage* message,
|
||||||
BHandler* handler);
|
BHandler* handler);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
|
|
||||||
virtual void FrameMoved(BPoint newPosition);
|
virtual void FrameMoved(BPoint newPosition);
|
||||||
|
virtual void FrameResized(float newWidth, float newHeight);
|
||||||
|
|
||||||
virtual void WorkspacesChanged(uint32 oldWorkspaces,
|
virtual void WorkspacesChanged(uint32 oldWorkspaces,
|
||||||
uint32 newWorkspaces);
|
uint32 newWorkspaces);
|
||||||
|
|
||||||
virtual void WorkspaceActivated(int32 workspaceIndex,
|
virtual void WorkspaceActivated(int32 workspaceIndex,
|
||||||
bool state);
|
bool state);
|
||||||
virtual void FrameResized(float newWidth, float newHeight);
|
|
||||||
virtual void Minimize(bool minimize);
|
virtual void Minimize(bool minimize);
|
||||||
virtual void Zoom(BPoint recPosition, float recWidth,
|
virtual void Zoom(BPoint recPosition, float recWidth,
|
||||||
float recHeight);
|
float recHeight);
|
||||||
|
|
||||||
virtual void ScreenChanged(BRect screenFrame,
|
virtual void ScreenChanged(BRect screenFrame,
|
||||||
color_space depth);
|
color_space depth);
|
||||||
|
|
||||||
virtual void MenusBeginning();
|
virtual void MenusBeginning();
|
||||||
virtual void MenusEnded();
|
virtual void MenusEnded();
|
||||||
virtual void WindowActivated(bool state);
|
virtual void WindowActivated(bool state);
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void Hide();
|
virtual void Hide();
|
||||||
|
|
||||||
virtual BHandler* ResolveSpecifier(BMessage* message,
|
virtual BHandler* ResolveSpecifier(BMessage* message,
|
||||||
int32 index, BMessage* specifier,
|
int32 index, BMessage* specifier,
|
||||||
int32 what, const char* property);
|
int32 what, const char* property);
|
||||||
|
|
||||||
virtual status_t GetSupportedSuites(BMessage* data);
|
virtual status_t GetSupportedSuites(BMessage* data);
|
||||||
virtual status_t Perform(perform_code code, void* arg);
|
virtual status_t Perform(perform_code code, void* arg);
|
||||||
|
|
||||||
private:
|
|
||||||
virtual void task_looper();
|
|
||||||
virtual BMessage* ConvertToMessage(void* raw, int32 code);
|
|
||||||
|
|
||||||
public:
|
|
||||||
virtual void DirectConnected(direct_buffer_info* info);
|
virtual void DirectConnected(direct_buffer_info* info);
|
||||||
|
|
||||||
status_t GetClippingRegion(BRegion* region,
|
status_t GetClippingRegion(BRegion* region,
|
||||||
BPoint* origin = NULL) const;
|
BPoint* origin = NULL) const;
|
||||||
|
|
||||||
status_t SetFullScreen(bool enable);
|
status_t SetFullScreen(bool enable);
|
||||||
bool IsFullScreen() const;
|
bool IsFullScreen() const;
|
||||||
|
|
||||||
static bool SupportsWindowMode(
|
static bool SupportsWindowMode(
|
||||||
screen_id id = B_MAIN_SCREEN_ID);
|
screen_id id = B_MAIN_SCREEN_ID);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
BDirectWindow();
|
||||||
|
BDirectWindow(BDirectWindow& other);
|
||||||
|
|
||||||
|
BDirectWindow& operator=(BDirectWindow& other);
|
||||||
|
|
||||||
typedef BWindow inherited;
|
typedef BWindow inherited;
|
||||||
|
|
||||||
virtual void _ReservedDirectWindow1();
|
virtual void _ReservedDirectWindow1();
|
||||||
@@ -116,30 +127,26 @@ private:
|
|||||||
virtual void _ReservedDirectWindow3();
|
virtual void _ReservedDirectWindow3();
|
||||||
virtual void _ReservedDirectWindow4();
|
virtual void _ReservedDirectWindow4();
|
||||||
|
|
||||||
BDirectWindow();
|
virtual void task_looper();
|
||||||
BDirectWindow(BDirectWindow& other);
|
virtual BMessage* ConvertToMessage(void* raw, int32 code);
|
||||||
BDirectWindow& operator=(BDirectWindow& other);
|
|
||||||
|
|
||||||
static int32 _daemon_thread(void* arg);
|
static int32 _daemon_thread(void* arg);
|
||||||
int32 _DirectDaemon();
|
int32 _DirectDaemon();
|
||||||
bool _LockDirect() const;
|
bool _LockDirect() const;
|
||||||
void _UnlockDirect() const;
|
void _UnlockDirect() const;
|
||||||
|
|
||||||
void _InitData();
|
void _InitData();
|
||||||
void _DisposeData();
|
void _DisposeData();
|
||||||
|
private:
|
||||||
bool fDaemonKiller;
|
bool fDaemonKiller;
|
||||||
bool fConnectionEnable;
|
bool fConnectionEnable;
|
||||||
bool fIsFullScreen;
|
bool fIsFullScreen;
|
||||||
bool _unused;
|
bool _unused;
|
||||||
bool fInDirectConnect;
|
bool fInDirectConnect;
|
||||||
|
|
||||||
int32 fDirectLock;
|
int32 fDirectLock;
|
||||||
sem_id fDirectSem;
|
sem_id fDirectSem;
|
||||||
uint32 fDirectLockCount;
|
uint32 fDirectLockCount;
|
||||||
thread_id fDirectLockOwner;
|
thread_id fDirectLockOwner;
|
||||||
char* fDirectLockStack;
|
char* fDirectLockStack;
|
||||||
|
|
||||||
sem_id fDisableSem;
|
sem_id fDisableSem;
|
||||||
sem_id fDisableSemAck;
|
sem_id fDisableSemAck;
|
||||||
|
|
||||||
@@ -156,5 +163,4 @@ private:
|
|||||||
uint32 _more_reserved_[17];
|
uint32 _more_reserved_[17];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
#endif // _DIRECT_WINDOW_H
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2002, Haiku Inc. All Rights Reserved.
|
* Copyright 2020, Haiku Inc. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Author:
|
* Author:
|
||||||
* Christopher ML Zumwalt May ([email protected])
|
* Christopher ML Zumwalt May ([email protected])
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _FILEGAMESOUND_H
|
#ifndef _FILEGAMESOUND_H
|
||||||
#define _FILEGAMESOUND_H
|
#define _FILEGAMESOUND_H
|
||||||
|
|
||||||
|
|
||||||
#include <StreamingGameSound.h>
|
#include <StreamingGameSound.h>
|
||||||
|
|
||||||
#include <DataIO.h>
|
#include <DataIO.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -21,12 +21,15 @@ struct _gs_ramp;
|
|||||||
|
|
||||||
class BFileGameSound : public BStreamingGameSound {
|
class BFileGameSound : public BStreamingGameSound {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
BFileGameSound(const entry_ref* file,
|
BFileGameSound(const entry_ref* file,
|
||||||
bool looping = true,
|
bool looping = true,
|
||||||
BGameSoundDevice* device = NULL);
|
BGameSoundDevice* device = NULL);
|
||||||
|
|
||||||
BFileGameSound(const char* file,
|
BFileGameSound(const char* file,
|
||||||
bool looping = true,
|
bool looping = true,
|
||||||
BGameSoundDevice* device = NULL);
|
BGameSoundDevice* device = NULL);
|
||||||
|
|
||||||
BFileGameSound(BDataIO* data,
|
BFileGameSound(BDataIO* data,
|
||||||
bool looping = true,
|
bool looping = true,
|
||||||
BGameSoundDevice* device = NULL);
|
BGameSoundDevice* device = NULL);
|
||||||
@@ -37,8 +40,7 @@ public:
|
|||||||
|
|
||||||
virtual status_t StartPlaying();
|
virtual status_t StartPlaying();
|
||||||
virtual status_t StopPlaying();
|
virtual status_t StopPlaying();
|
||||||
status_t Preload();
|
status_t Preload();
|
||||||
// if you have stopped and want to start quickly again
|
|
||||||
|
|
||||||
virtual void FillBuffer(void* buffer, size_t byteCount);
|
virtual void FillBuffer(void* buffer, size_t byteCount);
|
||||||
virtual status_t Perform(int32 selector, void* data);
|
virtual status_t Perform(int32 selector, void* data);
|
||||||
@@ -49,13 +51,13 @@ public:
|
|||||||
B_PAUSE_IN_PROGRESS,
|
B_PAUSE_IN_PROGRESS,
|
||||||
B_PAUSED
|
B_PAUSED
|
||||||
};
|
};
|
||||||
int32 IsPaused();
|
|
||||||
|
|
||||||
|
int32 IsPaused();
|
||||||
private:
|
private:
|
||||||
BFileGameSound();
|
BFileGameSound();
|
||||||
BFileGameSound(const BFileGameSound& other);
|
BFileGameSound(const BFileGameSound& other);
|
||||||
|
|
||||||
BFileGameSound& operator=(const BFileGameSound& other);
|
BFileGameSound& operator=(const BFileGameSound& other);
|
||||||
// not implemented
|
|
||||||
|
|
||||||
status_t Init(BDataIO* data);
|
status_t Init(BDataIO* data);
|
||||||
|
|
||||||
@@ -63,7 +65,7 @@ private:
|
|||||||
bool Read(void* buffer, size_t bytes);
|
bool Read(void* buffer, size_t bytes);
|
||||||
|
|
||||||
status_t _Reserved_BFileGameSound_0(int32 arg, ...);
|
status_t _Reserved_BFileGameSound_0(int32 arg, ...);
|
||||||
// SetPaused(bool paused, bigtime_t ramp);
|
// SetPaused(bool paused, bigtime_t ramp);
|
||||||
virtual status_t _Reserved_BFileGameSound_1(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_1(int32 arg, ...);
|
||||||
virtual status_t _Reserved_BFileGameSound_2(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_2(int32 arg, ...);
|
||||||
virtual status_t _Reserved_BFileGameSound_3(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_3(int32 arg, ...);
|
||||||
@@ -87,7 +89,6 @@ private:
|
|||||||
virtual status_t _Reserved_BFileGameSound_21(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_21(int32 arg, ...);
|
||||||
virtual status_t _Reserved_BFileGameSound_22(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_22(int32 arg, ...);
|
||||||
virtual status_t _Reserved_BFileGameSound_23(int32 arg, ...);
|
virtual status_t _Reserved_BFileGameSound_23(int32 arg, ...);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
_gs_media_tracker* fAudioStream;
|
_gs_media_tracker* fAudioStream;
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ private:
|
|||||||
bool fPaused;
|
bool fPaused;
|
||||||
float fPauseGain;
|
float fPauseGain;
|
||||||
|
|
||||||
BDataIO* fDataSource;
|
BDataIO* fDataSource;
|
||||||
|
|
||||||
#ifdef B_HAIKU_64_BIT
|
#ifdef B_HAIKU_64_BIT
|
||||||
uint32 _reserved[9];
|
uint32 _reserved[9];
|
||||||
@@ -113,5 +114,4 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
#endif // _FILEGAMESOUND_H
|
|
||||||
|
|||||||
@@ -1,76 +1,72 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2010, Haiku Inc. All Rights Reserved.
|
* Copyright 2020, Haiku Inc. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef _SIMPLEGAMESOUND_H
|
#ifndef _SIMPLEGAMESOUND_H
|
||||||
#define _SIMPLEGAMESOUND_H
|
#define _SIMPLEGAMESOUND_H
|
||||||
|
|
||||||
|
|
||||||
#include <GameSoundDefs.h>
|
|
||||||
#include <GameSound.h>
|
#include <GameSound.h>
|
||||||
|
#include <GameSoundDefs.h>
|
||||||
|
|
||||||
struct entry_ref;
|
struct entry_ref;
|
||||||
|
|
||||||
|
|
||||||
class BSimpleGameSound : public BGameSound {
|
class BSimpleGameSound : public BGameSound {
|
||||||
public:
|
public:
|
||||||
BSimpleGameSound(const entry_ref* file,
|
BSimpleGameSound(const entry_ref* file,
|
||||||
BGameSoundDevice* device = NULL);
|
BGameSoundDevice* device = NULL);
|
||||||
BSimpleGameSound(const char* file,
|
|
||||||
BGameSoundDevice* device = NULL);
|
|
||||||
BSimpleGameSound(const void* data,
|
|
||||||
size_t frameCount,
|
|
||||||
const gs_audio_format* format,
|
|
||||||
BGameSoundDevice* device = NULL);
|
|
||||||
BSimpleGameSound(const BSimpleGameSound& other);
|
|
||||||
|
|
||||||
virtual ~BSimpleGameSound();
|
BSimpleGameSound(const char* file,
|
||||||
|
BGameSoundDevice* device = NULL);
|
||||||
|
|
||||||
virtual BGameSound* Clone() const;
|
BSimpleGameSound(const void* data,
|
||||||
|
size_t frameCount,
|
||||||
|
const gs_audio_format* format,
|
||||||
|
BGameSoundDevice* device = NULL);
|
||||||
|
|
||||||
virtual status_t Perform(int32 selector, void* data);
|
BSimpleGameSound(const BSimpleGameSound& other);
|
||||||
|
|
||||||
status_t SetIsLooping(bool looping);
|
virtual ~BSimpleGameSound();
|
||||||
bool IsLooping() const;
|
|
||||||
|
virtual BGameSound* Clone() const;
|
||||||
|
virtual status_t Perform(int32 selector, void* data);
|
||||||
|
status_t SetIsLooping(bool looping);
|
||||||
|
bool IsLooping() const;
|
||||||
private:
|
private:
|
||||||
BSimpleGameSound();
|
BSimpleGameSound();
|
||||||
BSimpleGameSound& operator=(const BSimpleGameSound& other);
|
|
||||||
// not implemented
|
|
||||||
|
|
||||||
status_t Init(const entry_ref* file);
|
BSimpleGameSound& operator=(const BSimpleGameSound& other);
|
||||||
status_t Init(const void* data, int64 frameCount,
|
|
||||||
const gs_audio_format* format);
|
|
||||||
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_0(int32 arg, ...);
|
status_t Init(const entry_ref* file);
|
||||||
virtual status_t _Reserved_BSimpleGameSound_1(int32 arg, ...);
|
status_t Init(const void* data, int64 frameCount,
|
||||||
virtual status_t _Reserved_BSimpleGameSound_2(int32 arg, ...);
|
const gs_audio_format* format);
|
||||||
virtual status_t _Reserved_BSimpleGameSound_3(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_4(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_5(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_6(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_7(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_8(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_9(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_10(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_11(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_12(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_13(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_14(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_15(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_16(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_17(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_18(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_19(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_20(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_21(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_22(int32 arg, ...);
|
|
||||||
virtual status_t _Reserved_BSimpleGameSound_23(int32 arg, ...);
|
|
||||||
|
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_0(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_1(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_2(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_3(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_4(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_5(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_6(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_7(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_8(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_9(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_10(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_11(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_12(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_13(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_14(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_15(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_16(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_17(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_18(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_19(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_20(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_21(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_22(int32 arg, ...);
|
||||||
|
virtual status_t _Reserved_BSimpleGameSound_23(int32 arg, ...);
|
||||||
private:
|
private:
|
||||||
uint32 _reserved[12];
|
uint32 _reserved[12];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
#endif // _SIMPLE_GAME_SOUND_H
|
|
||||||
|
|||||||
Reference in New Issue
Block a user