Skip to content

Commit

Permalink
Added public API for B (Bindings) and more Con API functions
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Jan 3, 2013
1 parent ae1ad66 commit 0a3e58f
Show file tree
Hide file tree
Showing 15 changed files with 238 additions and 124 deletions.
53 changes: 28 additions & 25 deletions doomsday/engine/api/api_base.h
Expand Up @@ -26,43 +26,46 @@
/// All APIs exported from the executable.
enum {
DE_API_BASE_v1 = 0, // 1.10
DE_API_BASE_latest,
DE_API_BASE_latest = DE_API_BASE_v1,

DE_API_BUSY_v1 = 100, // 1.10
DE_API_BUSY_latest,
DE_API_BINDING_v1 = 100, // 1.10
DE_API_BINDING_latest = DE_API_BINDING_v1,

DE_API_CONSOLE_v1 = 200, // 1.10
DE_API_CONSOLE_latest,
DE_API_BUSY_v1 = 200, // 1.10
DE_API_BUSY_latest = DE_API_BUSY_v1,

DE_API_DEFINITIONS_v1 = 300, // 1.10
DE_API_DEFINITIONS_latest,
DE_API_CONSOLE_v1 = 300, // 1.10
DE_API_CONSOLE_latest = DE_API_CONSOLE_v1,

DE_API_DIRECT_DATA_ACCESS_v1 = 400, // 1.10
DE_API_DIRECT_DATA_ACCESS_latest,
DE_API_DEFINITIONS_v1 = 400, // 1.10
DE_API_DEFINITIONS_latest = DE_API_DEFINITIONS_v1,

DE_API_FILE_SYSTEM_v1 = 500, // 1.10
DE_API_FILE_SYSTEM_latest,
DE_API_DIRECT_DATA_ACCESS_v1 = 500, // 1.10
DE_API_DIRECT_DATA_ACCESS_latest = DE_API_DIRECT_DATA_ACCESS_v1,

DE_API_FONT_RENDER_v1 = 600, // 1.10
DE_API_FONT_RENDER_latest,
DE_API_FILE_SYSTEM_v1 = 600, // 1.10
DE_API_FILE_SYSTEM_latest = DE_API_FILE_SYSTEM_v1,

DE_API_MAP_EDIT_v1 = 700, // 1.10
DE_API_MAP_EDIT_latest,
DE_API_FONT_RENDER_v1 = 700, // 1.10
DE_API_FONT_RENDER_latest = DE_API_FONT_RENDER_v1,

DE_API_MATERIALS_v1 = 800, // 1.10
DE_API_MATERIALS_latest,
DE_API_MAP_EDIT_v1 = 800, // 1.10
DE_API_MAP_EDIT_latest = DE_API_MAP_EDIT_v1,

DE_API_PLUGIN_v1 = 900, // 1.10
DE_API_PLUGIN_latest,
DE_API_MATERIALS_v1 = 900, // 1.10
DE_API_MATERIALS_latest = DE_API_MATERIALS_v1,

DE_API_THINKER_v1 = 1000, // 1.10
DE_API_THINKER_latest,
DE_API_PLUGIN_v1 = 1000, // 1.10
DE_API_PLUGIN_latest = DE_API_PLUGIN_v1,

DE_API_URI_v1 = 1100, // 1.10
DE_API_URI_latest,
DE_API_THINKER_v1 = 1100, // 1.10
DE_API_THINKER_latest = DE_API_THINKER_v1,

DE_API_WAD_v1 = 1200, // 1.10
DE_API_WAD_latest
DE_API_URI_v1 = 1200, // 1.10
DE_API_URI_latest = DE_API_URI_v1,

DE_API_WAD_v1 = 1300, // 1.10
DE_API_WAD_latest = DE_API_WAD_v1
};

/**
Expand Down
80 changes: 79 additions & 1 deletion doomsday/engine/api/api_console.h
Expand Up @@ -2,21 +2,99 @@
#define DOOMSDAY_API_CONSOLE_H

#include "api_base.h"
#include "dd_share.h"

/// @addtogroup console
///@{

DENG_API_TYPEDEF(Con)
{
de_api_t api;

void (*Open)(int yes);
void (*AddCommand)(ccmdtemplate_t const* cmd);
void (*AddVariable)(cvartemplate_t const* var);
void (*AddCommandList)(ccmdtemplate_t const* cmdList);
void (*AddVariableList)(cvartemplate_t const* varList);

cvartype_t (*GetVariableType)(char const* name);

byte (*GetByte)(char const* name);
int (*GetInteger)(char const* name);
float (*GetFloat)(char const* name);
char const* (*GetString)(char const* name);
Uri const* (*GetUri)(char const* name);

void (*SetInteger2)(char const* name, int value, int svflags);
void (*SetInteger)(char const* name, int value);

void (*SetFloat2)(char const* name, float value, int svflags);
void (*SetFloat)(char const* name, float value);

void (*SetString2)(char const* name, char const* text, int svflags);
void (*SetString)(char const* name, char const* text);

void (*SetUri2)(char const* name, Uri const* uri, int svflags);
void (*SetUri)(char const* name, Uri const* uri);

void (*Message)(char const* message, ...);

void (*Printf)(char const* format, ...);
void (*FPrintf)(int flags, char const* format, ...);
void (*PrintRuler)(void);
void (*Error)(char const* error, ...);

void (*SetPrintFilter)(con_textfilter_t filter);

int (*Execute)(int silent, char const* command);
int (*Executef)(int silent, char const* command, ...);
}
DENG_API_T(Con);

#ifndef DENG_NO_API_MACROS_CONSOLE
#define Con_Message _api_Con.Message
#define Con_Open _api_Con.Open
#define Con_AddCommand _api_Con.AddCommand
#define Con_AddVariable _api_Con.AddVariable
#define Con_AddCommandList _api_Con.AddCommandList
#define Con_AddVariableList _api_Con.AddVariableList

#define Con_GetVariableType _api_Con.GetVariableType

#define Con_GetByte _api_Con.GetByte
#define Con_GetInteger _api_Con.GetInteger
#define Con_GetFloat _api_Con.GetFloat
#define Con_GetString _api_Con.GetString
#define Con_GetUri _api_Con.GetUri

#define Con_SetInteger2 _api_Con.SetInteger2
#define Con_SetInteger _api_Con.SetInteger

#define Con_SetFloat2 _api_Con.SetFloat2
#define Con_SetFloat _api_Con.SetFloat

#define Con_SetString2 _api_Con.SetString2
#define Con_SetString _api_Con.SetString

#define Con_SetUri2 _api_Con.SetUri2
#define Con_SetUri _api_Con.SetUri

#define Con_Message _api_Con.Message

#define Con_Printf _api_Con.Printf
#define Con_FPrintf _api_Con.FPrintf
#define Con_PrintRuler _api_Con.PrintRuler
#define Con_Error _api_Con.Error

#define Con_SetPrintFilter _api_Con.SetPrintFilter

#define DD_Execute _api_Con.Execute
#define DD_Executef _api_Con.Executef
#endif

#ifdef __DOOMSDAY__
DENG_USING_API(Con);
#endif

///@}

#endif // DOOMSDAY_API_CONSOLE_H
70 changes: 70 additions & 0 deletions doomsday/engine/api/api_event.h
@@ -0,0 +1,70 @@
#ifndef DOOMSDAY_API_EVENT_H
#define DOOMSDAY_API_EVENT_H

#include "api_base.h"

/// Event types. @ingroup input
typedef enum {
EV_KEY,
EV_MOUSE_AXIS,
EV_MOUSE_BUTTON,
EV_JOY_AXIS, ///< Joystick main axes (xyz + Rxyz).
EV_JOY_SLIDER, ///< Joystick sliders.
EV_JOY_BUTTON,
EV_POV,
EV_SYMBOLIC, ///< Symbol text pointed to by data1+data2.
EV_FOCUS, ///< Change in game window focus (data1=gained, data2=windowID).
NUM_EVENT_TYPES
} evtype_t;

/// Event states. @ingroup input
typedef enum {
EVS_DOWN,
EVS_UP,
EVS_REPEAT,
NUM_EVENT_STATES
} evstate_t;

/// Input event. @ingroup input
typedef struct event_s {
evtype_t type;
evstate_t state; ///< Only used with digital controls.
int data1; ///< Keys/mouse/joystick buttons.
int data2; ///< Mouse/joystick x move.
int data3; ///< Mouse/joystick y move.
int data4;
int data5;
int data6;
} event_t;

/// The mouse wheel is considered two extra mouse buttons.
#define DD_MWHEEL_UP 3
#define DD_MWHEEL_DOWN 4
#define DD_MICKEY_ACCURACY 1000

/// @addtogroup bindings
///@{

DENG_API_TYPEDEF(B)
{
de_api_t api;

void (*SetContextFallback)(const char* name, int (*responderFunc)(event_t*));
int (*BindingsForCommand)(const char* cmd, char* buf, size_t bufSize);
int (*BindingsForControl)(int localPlayer, const char* controlName, int inverse, char* buf, size_t bufSize);
}
DENG_API_T(B);

#ifndef DENG_NO_API_MACROS_BINDING
#define B_SetContextFallback _api_B.SetContextFallback
#define B_BindingsForCommand _api_B.BindingsForCommand
#define B_BindingsForControl _api_B.BindingsForControl
#endif

#ifdef __DOOMSDAY__
DENG_USING_API(B);
#endif

///@}

#endif // DOOMSDAY_API_EVENT_H
45 changes: 1 addition & 44 deletions doomsday/engine/api/dd_share.h
Expand Up @@ -49,6 +49,7 @@
#include "def_share.h"
#include "api_busy.h"
#include "api_thinker.h"
#include "api_event.h"

#ifdef __cplusplus
extern "C" {
Expand Down Expand Up @@ -473,50 +474,6 @@ enum {
};
///@}

//------------------------------------------------------------------------
//
// Events
//
//------------------------------------------------------------------------

/// Event types. @ingroup input
typedef enum {
EV_KEY,
EV_MOUSE_AXIS,
EV_MOUSE_BUTTON,
EV_JOY_AXIS, ///< Joystick main axes (xyz + Rxyz).
EV_JOY_SLIDER, ///< Joystick sliders.
EV_JOY_BUTTON,
EV_POV,
EV_SYMBOLIC, ///< Symbol text pointed to by data1+data2.
EV_FOCUS, ///< Change in game window focus (data1=gained, data2=windowID).
NUM_EVENT_TYPES
} evtype_t;

/// Event states. @ingroup input
typedef enum {
EVS_DOWN,
EVS_UP,
EVS_REPEAT,
NUM_EVENT_STATES
} evstate_t;

/// Input event. @ingroup input
typedef struct event_s {
evtype_t type;
evstate_t state; ///< Only used with digital controls.
int data1; ///< Keys/mouse/joystick buttons.
int data2; ///< Mouse/joystick x move.
int data3; ///< Mouse/joystick y move.
int data4;
int data5;
int data6;
} event_t;

/// The mouse wheel is considered two extra mouse buttons.
#define DD_MWHEEL_UP 3
#define DD_MWHEEL_DOWN 4
#define DD_MICKEY_ACCURACY 1000

//------------------------------------------------------------------------
//
Expand Down
53 changes: 1 addition & 52 deletions doomsday/engine/api/doomsday.h
Expand Up @@ -87,6 +87,7 @@ struct font_s;
#include "api_busy.h"
#include "api_plugin.h"
#include "api_def.h"
#include "api_event.h"
#include "api_filesys.h"
#include "api_console.h"
#include "api_material.h"
Expand Down Expand Up @@ -192,58 +193,6 @@ boolean DD_GameInfo(GameInfo* info);
int DD_GetKeyCode(const char* name);
///@}

//------------------------------------------------------------------------
//
// Console.
//
//------------------------------------------------------------------------

/// @addtogroup console
///@{
void Con_Open(int yes);
void Con_AddCommand(ccmdtemplate_t const* cmd);
void Con_AddVariable(cvartemplate_t const* var);
void Con_AddCommandList(ccmdtemplate_t const* cmdList);
void Con_AddVariableList(cvartemplate_t const* varList);

cvartype_t Con_GetVariableType(char const* name);

byte Con_GetByte(char const* name);
int Con_GetInteger(char const* name);
float Con_GetFloat(char const* name);
char const* Con_GetString(char const* name);
Uri const* Con_GetUri(char const* name);

void Con_SetInteger2(char const* name, int value, int svflags);
void Con_SetInteger(char const* name, int value);

void Con_SetFloat2(char const* name, float value, int svflags);
void Con_SetFloat(char const* name, float value);

void Con_SetString2(char const* name, char const* text, int svflags);
void Con_SetString(char const* name, char const* text);

void Con_SetUri2(char const* name, Uri const* uri, int svflags);
void Con_SetUri(char const* name, Uri const* uri);

void Con_Printf(char const* format, ...) PRINTF_F(1,2);
void Con_FPrintf(int flags, char const* format, ...) PRINTF_F(2,3);
void Con_PrintRuler(void);
void Con_Error(char const* error, ...) PRINTF_F(1,2);

void Con_SetPrintFilter(con_textfilter_t filter);

int DD_Execute(int silent, char const* command);
int DD_Executef(int silent, char const* command, ...);
///@}

/// @addtogroup bindings
///@{
// Console: Bindings.
void B_SetContextFallback(const char* name, int (*responderFunc)(event_t*));
int B_BindingsForCommand(const char* cmd, char* buf, size_t bufSize);
int B_BindingsForControl(int localPlayer, const char* controlName, int inverse, char* buf, size_t bufSize);
///@}
//------------------------------------------------------------------------
//
// System.
Expand Down
1 change: 1 addition & 0 deletions doomsday/engine/engine.pro
Expand Up @@ -80,6 +80,7 @@ DENG_API_HEADERS = \
api/api_busy.h \
api/api_console.h \
api/api_def.h \
api/api_event.h \
api/api_filesys.h \
api/api_fontrender.h \
api/api_material.h \
Expand Down
1 change: 0 additions & 1 deletion doomsday/engine/include/ui/b_context.h
Expand Up @@ -64,7 +64,6 @@ void B_ActivateContext(bcontext_t* bc, boolean doActivate);
void B_AcquireKeyboard(bcontext_t* bc, boolean doAcquire);
void B_AcquireAll(bcontext_t* bc, boolean doAcquire);
void B_SetContextFallbackForDDEvents(const char* name, int (*ddResponderFunc)(const ddevent_t*));
void B_SetContextFallback(const char* name, int (*responderFunc)(event_t*));
bcontext_t* B_ContextByPos(int pos);
bcontext_t* B_ContextByName(const char* name);
int B_ContextCount(void);
Expand Down
2 changes: 2 additions & 0 deletions doomsday/engine/src/con_data.cpp
Expand Up @@ -23,6 +23,8 @@
* 02110-1301 USA</small>
*/

#define DENG_NO_API_MACROS_CONSOLE

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
Expand Down

0 comments on commit 0a3e58f

Please sign in to comment.