mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 19:23:51 +02:00
109 lines
2.9 KiB
C
109 lines
2.9 KiB
C
/*
|
|
===========================================================================
|
|
|
|
IceTech GPL Source Code
|
|
Copyright (C) 2026 Justin Marshall
|
|
|
|
This file is part of the IceTech GPL Source Code.
|
|
|
|
===========================================================================
|
|
*/
|
|
|
|
#ifndef __MINIGAME_PUBLIC_H__
|
|
#define __MINIGAME_PUBLIC_H__
|
|
|
|
#include <stdint.h>
|
|
|
|
#define ICE_MINIGAME_API_VERSION 1
|
|
#define ICE_MINIGAME_ENTRY_POINT "GetMinigameAPI"
|
|
|
|
#ifdef _WIN32
|
|
#ifdef __cplusplus
|
|
#define ICE_MINIGAME_EXPORT extern "C" __declspec(dllexport)
|
|
#else
|
|
#define ICE_MINIGAME_EXPORT __declspec(dllexport)
|
|
#endif
|
|
#else
|
|
#ifdef __cplusplus
|
|
#define ICE_MINIGAME_EXPORT extern "C"
|
|
#else
|
|
#define ICE_MINIGAME_EXPORT
|
|
#endif
|
|
#endif
|
|
|
|
typedef enum {
|
|
ICE_MINIGAME_EVENT_NONE = 0,
|
|
ICE_MINIGAME_EVENT_KEY,
|
|
ICE_MINIGAME_EVENT_CHAR,
|
|
ICE_MINIGAME_EVENT_MOUSE
|
|
} iceMinigameEventType_t;
|
|
|
|
typedef enum {
|
|
ICE_MINIGAME_PIXEL_RGBA8 = 1
|
|
} iceMinigamePixelFormat_t;
|
|
|
|
typedef struct iceMinigameInputEvent_s {
|
|
int type;
|
|
int value;
|
|
int value2;
|
|
int time;
|
|
} iceMinigameInputEvent_t;
|
|
|
|
typedef struct iceMinigameFramebuffer_s {
|
|
const uint8_t *pixels;
|
|
int width;
|
|
int height;
|
|
int pitchBytes;
|
|
int pixelFormat;
|
|
} iceMinigameFramebuffer_t;
|
|
|
|
typedef struct iceMinigameAudioBuffer_s {
|
|
const float *samples;
|
|
int frames;
|
|
int channels;
|
|
int sampleRate;
|
|
} iceMinigameAudioBuffer_t;
|
|
|
|
typedef void (*iceMinigamePrint_t)( void *userData, const char *text );
|
|
typedef void (*iceMinigameSubmitAudio_t)( void *userData, const iceMinigameAudioBuffer_t *audio );
|
|
|
|
typedef struct iceMinigameImport_s {
|
|
int version;
|
|
void *userData;
|
|
const char *basePath;
|
|
const char *savePath;
|
|
iceMinigamePrint_t Print;
|
|
iceMinigameSubmitAudio_t SubmitAudio;
|
|
} iceMinigameImport_t;
|
|
|
|
typedef struct iceMinigameInstance_s iceMinigameInstance_t;
|
|
|
|
typedef int (*iceMinigameCreateInstance_t)(
|
|
const iceMinigameImport_t *imports,
|
|
const char *commandLine,
|
|
iceMinigameInstance_t **instance );
|
|
|
|
typedef void (*iceMinigameDestroyInstance_t)( iceMinigameInstance_t *instance );
|
|
typedef void (*iceMinigameSetActive_t)( iceMinigameInstance_t *instance, int active );
|
|
typedef void (*iceMinigameQueueEvent_t)( iceMinigameInstance_t *instance, const iceMinigameInputEvent_t *event );
|
|
typedef void (*iceMinigameRunFrame_t)( iceMinigameInstance_t *instance, int elapsedMilliseconds );
|
|
typedef int (*iceMinigameGetFramebuffer_t)( iceMinigameInstance_t *instance, iceMinigameFramebuffer_t *framebuffer );
|
|
|
|
typedef struct iceMinigameExport_s {
|
|
int version;
|
|
const char *gameName;
|
|
int framebufferWidth;
|
|
int framebufferHeight;
|
|
int preferredSampleRate;
|
|
iceMinigameCreateInstance_t CreateInstance;
|
|
iceMinigameDestroyInstance_t DestroyInstance;
|
|
iceMinigameSetActive_t SetActive;
|
|
iceMinigameQueueEvent_t QueueEvent;
|
|
iceMinigameRunFrame_t RunFrame;
|
|
iceMinigameGetFramebuffer_t GetFramebuffer;
|
|
} iceMinigameExport_t;
|
|
|
|
typedef int (*iceMinigameGetAPI_t)( const iceMinigameImport_t *imports, iceMinigameExport_t *exports );
|
|
|
|
#endif // __MINIGAME_PUBLIC_H__
|