Skip to content

Commit

Permalink
Began refactoring fi_state_t with the intention of turning it into so…
Browse files Browse the repository at this point in the history
…mething along the lines of ui_page_t
  • Loading branch information
danij-deng committed Jul 23, 2010
1 parent 59b9b03 commit 1c07c83
Show file tree
Hide file tree
Showing 4 changed files with 336 additions and 448 deletions.
14 changes: 7 additions & 7 deletions doomsday/engine/api/dd_infine.h
Expand Up @@ -40,15 +40,15 @@ typedef enum infinemode_e {
FIMODE_AFTER
} finale_mode_t;

boolean FI_Active(void);
boolean FI_IsMenuTrigger(void);
void FI_Reset(void);
boolean FI_Active(void);
boolean FI_IsMenuTrigger(void);
void FI_Reset(void);

void FI_SetClientsideDefaultState(void* data);
void* FI_GetClientsideDefaultState(void);
void FI_SetClientsideDefaultState(void* data);
void* FI_GetClientsideDefaultState(void);

boolean FI_ScriptBegin(const char* scriptSrc, finale_mode_t mode, int gameState, void* extraData);
void FI_ScriptTerminate(void);
boolean FI_ScriptBegin(const char* scriptSrc, finale_mode_t mode, int gameState, void* extraData);
void FI_ScriptTerminate(void);

typedef enum {
FI_NONE,
Expand Down
102 changes: 47 additions & 55 deletions doomsday/engine/portable/include/fi_main.h
Expand Up @@ -27,33 +27,6 @@

#include "finaleinterpreter.h"

// We'll use the base template directly as our object.
typedef struct fi_object_s {
FIOBJECT_BASE_ELEMENTS()
} fi_object_t;

typedef struct fi_namespace_s {
uint num;
fi_object_t** vector;
} fi_namespace_t;

typedef enum {
FVT_INT,
FVT_FLOAT,
FVT_SCRIPT_STRING, // ptr points to a char*, which points to the string.
FVT_OBJECT
} fi_operand_type_t;

typedef struct {
fi_operand_type_t type;
union {
int integer;
float flt;
const char* cstring;
fi_object_t* obj;
} data;
} fi_operand_t;

/**
* @defgroup playsimServerFinaleFlags Play-simulation Server-side Finale Flags.
*
Expand All @@ -70,48 +43,67 @@ typedef struct {

#define FINALE_SCRIPT_EXTRADATA_SIZE gx.finaleConditionsSize

extern float fiDefaultTextRGB[];

void FI_Register(void);

void FI_Init(void);
void FI_Shutdown(void);
int FI_Responder(ddevent_t* ev);
void FI_Drawer(void);

void FI_Ticker(timespan_t time);
int FI_Responder(ddevent_t* ev);
void FI_Drawer(void);

int FI_SkipRequest(void);
boolean FI_CmdExecuted(void);

fidata_text_t* P_CreateText(fi_objectid_t id, const char* name);
void P_DestroyText(fidata_text_t* text);

fidata_pic_t* P_CreatePic(fi_objectid_t id, const char* name);
void P_DestroyPic(fidata_pic_t* pic);

fi_namespace_t* FI_ScriptNamespace(void);
finaleinterpreter_t* FI_ScriptInterpreter(void);

void* FI_ScriptExtraData(void);

fi_objectid_t FI_FindObjectIdForName(fi_namespace_t* names, const char* name, fi_obtype_e type);
boolean FI_ObjectInNamespace(fi_namespace_t* names, fi_object_t* obj);
fi_object_t* FI_AddObjectInNamespace(fi_namespace_t* names, fi_object_t* obj);
fi_object_t* FI_RemoveObjectInNamespace(fi_namespace_t* names, fi_object_t* obj);

// We'll use the base template directly as our object.
typedef struct fi_object_s {
FIOBJECT_BASE_ELEMENTS()
} fi_object_t;
fi_object_t* FI_NewObject(fi_obtype_e type, const char* name);
void FI_DeleteObject(fi_object_t* obj);

void FI_SetBackground(struct material_s* mat);
void FI_SetBackgroundColor(float red, float green, float blue, int steps);
void FI_SetBackgroundColorAndAlpha(float red, float green, float blue, float alpha, int steps);

void FI_SetImageOffsetX(float x, int steps);
void FI_SetImageOffsetY(float y, int steps);

void FI_SetFilterColorAndAlpha(float red, float green, float blue, float alpha, int steps);
/// \todo Should be private.
typedef struct fi_namespace_s {
uint num;
fi_object_t** vector;
} fi_namespace_t;

void FI_SetPredefinedColor(uint idx, float red, float green, float blue, int steps);
typedef struct fi_page_s {
finale_mode_t mode;
uint timer;

// Interactive script interpreter.
finaleinterpreter_t _interpreter;

// Known symbols (to this script).
fi_namespace_t _namespace;

struct material_s* bgMaterial;
animatorvector4_t bgColor;
animatorvector2_t imgOffset;
animatorvector4_t filter;
animatorvector3_t textColor[9];

int initialGameState; // Game state before the script began.
int overlayGameState; // Overlay scripts run only in one gameMode.
void* extraData;
} fi_page_t;

fi_object_t* FIPage_AddObject(fi_page_t* page, fi_object_t* obj);
fi_object_t* FIPage_RemoveObject(fi_page_t* page, fi_object_t* obj);
boolean FIPage_HasObject(fi_page_t* page, fi_object_t* obj);
fi_objectid_t FIPage_ObjectIdForName(fi_page_t* page, const char* name, fi_obtype_e type);

void FIPage_SetBackground(fi_page_t* page, struct material_s* mat);
void FIPage_SetBackgroundColor(fi_page_t* page, float red, float green, float blue, int steps);
void FIPage_SetBackgroundColorAndAlpha(fi_page_t* page, float red, float green, float blue, float alpha, int steps);
void FIPage_SetImageOffsetX(fi_page_t* page, float x, int steps);
void FIPage_SetImageOffsetY(fi_page_t* page, float y, int steps);
void FIPage_SetImageOffsetXY(fi_page_t* page, float x, float y, int steps);
void FIPage_SetFilterColorAndAlpha(fi_page_t* page, float red, float green, float blue, float alpha, int steps);
void FIPage_SetPredefinedColor(fi_page_t* page, uint idx, float red, float green, float blue, int steps);

fi_page_t* FI_PageStackTop(void);

#endif /* LIBDENG_INFINE_MAIN_H */

0 comments on commit 1c07c83

Please sign in to comment.