Files
DoomRTX/neo/engine/minigame/Minigame_public.h
T
2026-05-22 20:01:49 -07:00

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__