/** Inits the text module * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxText_Init() { orxSTATUS eResult; /* Not already Initialized? */ if(!(sstText.u32Flags & orxTEXT_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstText, sizeof(orxTEXT_STATIC)); /* Adds event handler */ eResult = orxEvent_AddHandler(orxEVENT_TYPE_LOCALE, orxText_EventHandler); /* Valid? */ if(eResult != orxSTATUS_FAILURE) { /* Registers structure type */ eResult = orxSTRUCTURE_REGISTER(TEXT, orxSTRUCTURE_STORAGE_TYPE_LINKLIST, orxMEMORY_TYPE_MAIN, orxTEXT_KU32_BANK_SIZE, orxNULL); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Updates flags for screen text creation */ sstText.u32Flags = orxTEXT_KU32_STATIC_FLAG_READY; /* Adds event handler for resources */ orxEvent_AddHandler(orxEVENT_TYPE_RESOURCE, orxText_EventHandler); } else { /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_LOCALE, orxText_EventHandler); } } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Tried to initialize text module when it was already initialized."); /* Already initialized */ eResult = orxSTATUS_SUCCESS; } /* Not initialized? */ if(eResult == orxSTATUS_FAILURE) { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Initializing text module failed."); /* Updates Flags */ sstText.u32Flags &= ~orxTEXT_KU32_STATIC_FLAG_READY; } /* Done! */ return eResult; }
/** Registers a core function * @param[in] _eFunctionID Concerned function ID * @param[in] _pfnFunction Concerned function implementation * @param[in] _bEmbedded Embedded mode? * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ static orxINLINE orxSTATUS orxPlugin_RegisterCoreFunction(orxPLUGIN_FUNCTION_ID _eFunctionID, orxPLUGIN_FUNCTION _pfnFunction, orxBOOL _bEmbedded) { const orxPLUGIN_CORE_FUNCTION *pstCoreFunction; orxU32 u32PluginIndex, u32FunctionIndex; orxSTATUS eResult = orxSTATUS_FAILURE; /* Checks */ orxASSERT(_pfnFunction != orxNULL); /* Gets plugin index */ u32PluginIndex = (_eFunctionID & orxPLUGIN_KU32_MASK_PLUGIN_ID) >> orxPLUGIN_KU32_SHIFT_PLUGIN_ID; /* Checks */ orxASSERT(u32PluginIndex < orxPLUGIN_CORE_ID_NUMBER); /* Gets core function table */ pstCoreFunction = sstPlugin.astCoreInfo[u32PluginIndex].pstCoreFunctionTable; /* Core plugin defined? */ if(pstCoreFunction != orxNULL) { /* Gets function index */ u32FunctionIndex = _eFunctionID & orxPLUGIN_KU32_MASK_FUNCTION_ID; /* Checks */ orxASSERT(u32FunctionIndex < sstPlugin.astCoreInfo[u32PluginIndex].u32CoreFunctionCounter); orxASSERT(pstCoreFunction[u32FunctionIndex].pfnFunction != orxNULL); /* Embedded mode or was not already loaded? */ if((_bEmbedded != orxFALSE) || (*(pstCoreFunction[u32FunctionIndex].pfnFunction) == pstCoreFunction[u32FunctionIndex].pfnDefaultFunction)) { /* Registers core function */ *(pstCoreFunction[u32FunctionIndex].pfnFunction) = _pfnFunction; /* Updates plugin status */ sstPlugin.astCoreInfo[u32PluginIndex].u32Flags |= orxPLUGIN_KU32_CORE_KU32_FLAG_FLAG_DIRTY; /* Updates result */ eResult = orxSTATUS_SUCCESS; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "Function address is already loaded."); } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "Core plugin is not defined."); } /* Done! */ return eResult; }
/** Creates a plugin info * @return orxPLUGIN_INFO / orxNULL */ static orxPLUGIN_INFO *orxFASTCALL orxPlugin_CreatePluginInfo() { orxPLUGIN_INFO *pstPluginInfo; /* Creates a plugin info */ pstPluginInfo = (orxPLUGIN_INFO *)orxBank_Allocate(sstPlugin.pstPluginBank); /* Valid? */ if(pstPluginInfo != orxNULL) { /* Inits it */ orxMemory_Zero(pstPluginInfo, sizeof(orxPLUGIN_INFO)); /* Undefines plugin handle */ pstPluginInfo->hPluginHandle = orxHANDLE_UNDEFINED; /* Creates function bank */ pstPluginInfo->pstFunctionBank = orxBank_Create(orxPLUGIN_KU32_FUNCTION_BANK_SIZE, sizeof(orxPLUGIN_FUNCTION_INFO), orxBANK_KU32_FLAG_NONE, orxMEMORY_TYPE_MAIN); /* Valid? */ if(pstPluginInfo->pstFunctionBank != orxNULL) { /* Creates function hash table */ pstPluginInfo->pstFunctionTable = orxHashTable_Create(orxPLUGIN_KU32_FUNCTION_BANK_SIZE, orxHASHTABLE_KU32_FLAG_NONE, orxMEMORY_TYPE_MAIN); /* Invalid? */ if(pstPluginInfo->pstFunctionTable == orxNULL) { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "Invalid function hash table."); /* Frees previously allocated data */ orxBank_Delete(pstPluginInfo->pstFunctionBank); orxBank_Free(sstPlugin.pstPluginBank, pstPluginInfo); /* Not successful */ pstPluginInfo = orxNULL; } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "Invalid function bank."); /* Frees previously allocated data */ orxBank_Free(sstPlugin.pstPluginBank, pstPluginInfo); /* Not successful */ pstPluginInfo = orxNULL; } } /* Done! */ return pstPluginInfo; }
/** Inits the TimeLine module * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxTimeLine_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Not already Initialized? */ if(!(sstTimeLine.u32Flags & orxTIMELINE_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstTimeLine, sizeof(orxTIMELINE_STATIC)); /* Creates track table */ sstTimeLine.pstTrackTable = orxHashTable_Create(orxTIMELINE_KU32_TRACK_TABLE_SIZE, orxHASHTABLE_KU32_FLAG_NONE, orxMEMORY_TYPE_MAIN); /* Valid? */ if(sstTimeLine.pstTrackTable != orxNULL) { /* Registers structure type */ eResult = orxSTRUCTURE_REGISTER(TIMELINE, orxSTRUCTURE_STORAGE_TYPE_LINKLIST, orxMEMORY_TYPE_MAIN, orxTIMELINE_KU32_BANK_SIZE, &orxTimeLine_Update); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_OBJECT, "Failed to create TimeLine track table."); } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_OBJECT, "Tried to initialize the TimeLine module when it was already initialized."); /* Already initialized */ eResult = orxSTATUS_SUCCESS; } /* Initialized? */ if(eResult != orxSTATUS_FAILURE) { /* Inits Flags */ orxFLAG_SET(sstTimeLine.u32Flags, orxTIMELINE_KU32_STATIC_FLAG_READY, orxTIMELINE_KU32_STATIC_FLAG_NONE); /* Adds event handler */ orxEvent_AddHandler(orxEVENT_TYPE_RESOURCE, orxTimeLine_EventHandler); } else { /* Deletes track table if needed */ if(sstTimeLine.pstTrackTable != orxNULL) { orxHashTable_Delete(sstTimeLine.pstTrackTable); } } /* Done! */ return eResult; }
/** Inits the Graphic module */ orxSTATUS orxFASTCALL orxGraphic_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Not already Initialized? */ if((sstGraphic.u32Flags & orxGRAPHIC_KU32_STATIC_FLAG_READY) == orxGRAPHIC_KU32_STATIC_FLAG_NONE) { /* Cleans static controller */ orxMemory_Zero(&sstGraphic, sizeof(orxGRAPHIC_STATIC)); /* Registers event handler */ eResult = orxEvent_AddHandler(orxEVENT_TYPE_LOCALE, orxGraphic_EventHandler); /* Valid? */ if(eResult != orxSTATUS_FAILURE) { /* Registers structure type */ eResult = orxSTRUCTURE_REGISTER(GRAPHIC, orxSTRUCTURE_STORAGE_TYPE_LINKLIST, orxMEMORY_TYPE_MAIN, orxGRAPHIC_KU32_BANK_SIZE, orxNULL); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Inits Flags */ sstGraphic.u32Flags = orxGRAPHIC_KU32_STATIC_FLAG_READY; } else { /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_LOCALE, orxGraphic_EventHandler); } } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Tried to initialize graphic module when it was already initialized."); /* Already initialized */ eResult = orxSTATUS_SUCCESS; } /* Not initialized? */ if(eResult == orxSTATUS_FAILURE) { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Initializing graphic module failed."); /* Updates Flags */ sstGraphic.u32Flags &= ~orxGRAPHIC_KU32_STATIC_FLAG_READY; } /* Done! */ return eResult; }
/** Inits the SoundPointer module * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxSoundPointer_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Not already Initialized? */ if(!(sstSoundPointer.u32Flags & orxSOUNDPOINTER_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstSoundPointer, sizeof(orxSOUNDPOINTER_STATIC)); /* Adds event handler */ eResult = orxEvent_AddHandler(orxEVENT_TYPE_OBJECT, orxSoundPointer_EventHandler); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Registers structure type */ eResult = orxSTRUCTURE_REGISTER(SOUNDPOINTER, orxSTRUCTURE_STORAGE_TYPE_LINKLIST, orxMEMORY_TYPE_MAIN, orxSOUNDPOINTER_KU32_BANK_SIZE, &orxSoundPointer_Update); /* Initialized? */ if(eResult != orxSTATUS_FAILURE) { /* Inits Flags */ sstSoundPointer.u32Flags = orxSOUNDPOINTER_KU32_STATIC_FLAG_READY; } else { /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_OBJECT, orxSoundPointer_EventHandler); /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SOUND, "Failed to register structure for Sound Pointer module."); } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SOUND, "Failed to add event handler."); } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SOUND, "Tried to initialize Sound Pointer module when it was already initialized."); /* Already initialized */ eResult = orxSTATUS_SUCCESS; } /* Done! */ return eResult; }
/** Inits the debug module * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL _orxDebug_Init() { orxU32 i; orxSTATUS eResult = orxSTATUS_FAILURE; /* Init dependencies */ /* Correct parameters ? */ if(orxDEBUG_LEVEL_NUMBER > orxDEBUG_LEVEL_MAX_NUMBER) { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Internal error. DEBUG_LEVEL_NUMBER(%d) > DEBUG_LEVEL_MAX_NUMBER(%d).", orxDEBUG_LEVEL_NUMBER, orxDEBUG_LEVEL_MAX_NUMBER); eResult = orxSTATUS_FAILURE; } else if(sstDebug.u32Flags & orxDEBUG_KU32_STATIC_FLAG_READY) { /* Already Initialized? */ /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Tried to initialize debug module when it was already initialized."); eResult = orxSTATUS_SUCCESS; } else { orxU8 *pu8; /* Cleans static controller */ for(i = 0, pu8 = (orxU8 *)&sstDebug; i < sizeof(orxDEBUG_STATIC); i++) { *pu8++ = 0; } /* Inits default debug & level flags */ sstDebug.u32DebugFlags = orxDEBUG_KU32_STATIC_MASK_DEFAULT; sstDebug.u32LevelFlags = orxDEBUG_KU32_STATIC_LEVEL_MASK_DEFAULT; /* Set module as initialized */ sstDebug.u32Flags = orxDEBUG_KU32_STATIC_FLAG_READY; /* Inits default files */ _orxDebug_SetDebugFile(orxDEBUG_KZ_DEFAULT_DEBUG_FILE); _orxDebug_SetLogFile(orxDEBUG_KZ_DEFAULT_LOG_FILE); /* Success */ eResult = orxSTATUS_SUCCESS; } /* Done! */ return eResult; }
/** Adds a node as a child of another one * @param[in] _pstRefNode Reference node (add as a child of this one) * @param[in] _pstNode Node to add * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxTree_AddChild(orxTREE_NODE *_pstRefNode, orxTREE_NODE *_pstNode) { orxSTATUS eResult = orxSTATUS_SUCCESS; orxTREE *pstTree; /* Checks */ orxASSERT(_pstRefNode != orxNULL); orxASSERT(_pstNode != orxNULL); /* Isn't already in a tree? */ if(_pstNode->pstTree == orxNULL) { /* Gets tree */ pstTree = _pstRefNode->pstTree; /* Valid? */ if(pstTree != orxNULL) { /* Adds it in the tree */ _pstNode->pstParent = _pstRefNode; _pstNode->pstSibling = _pstRefNode->pstChild; _pstNode->pstTree = pstTree; _pstNode->pstChild = orxNULL; /* Updates ref node */ _pstRefNode->pstChild = _pstNode; /* Updates counter */ pstTree->u32Counter++; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Destination's tree is invalid."); /* No tree found */ eResult = orxSTATUS_FAILURE; } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Node is already in a tree, use MoveAsChild instead."); /* Already in a tree */ eResult = orxSTATUS_FAILURE; } /* Done! */ return eResult; }
orxBOOL orxFASTCALL orxJoystick_GLFW_IsButtonPressed(orxJOYSTICK_BUTTON _eButton) { orxU32 u32ID; orxBOOL bResult; /* Checks */ orxASSERT((sstJoystick.u32Flags & orxJOYSTICK_KU32_STATIC_FLAG_READY) == orxJOYSTICK_KU32_STATIC_FLAG_READY); orxASSERT(_eButton < orxJOYSTICK_BUTTON_NUMBER); /* Gets ID */ u32ID = (orxU32)_eButton / orxJOYSTICK_BUTTON_SINGLE_NUMBER; /* Is ID valid? */ if(u32ID <= (orxU32)GLFW_JOYSTICK_LAST) { /* Updates its info */ orxJoystick_GLFW_UpdateInfo(u32ID); /* Plugged? */ if(sstJoystick.astJoyInfoList[u32ID].bIsConnected != orxFALSE) { orxS32 s32Button; /* Gets button */ s32Button = _eButton % orxJOYSTICK_BUTTON_SINGLE_NUMBER; /* Updates result */ bResult = (sstJoystick.astJoyInfoList[u32ID].au8ButtonInfoList[s32Button] != GLFW_RELEASE) ? orxTRUE : orxFALSE; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_JOYSTICK, "Requested joystick ID <%d> is not connected.", u32ID); /* Updates result */ bResult = orxFALSE; } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_JOYSTICK, "Requested joystick ID <%d> is out of range.", u32ID); /* Updates result */ bResult = orxFALSE; } /* Done! */ return bResult; }
/** Creates a clock * @param[in] _fTickSize Tick size for the clock (in seconds) * @param[in] _eType Type of the clock * @return orxCLOCK / orxNULL */ orxCLOCK *orxFASTCALL orxClock_Create(orxFLOAT _fTickSize, orxCLOCK_TYPE _eType) { orxCLOCK *pstClock; /* Checks */ orxASSERT(sstClock.u32Flags & orxCLOCK_KU32_STATIC_FLAG_READY); orxASSERT(_fTickSize >= orxFLOAT_0); /* Creates clock */ pstClock = orxCLOCK(orxStructure_Create(orxSTRUCTURE_ID_CLOCK)); /* Valid? */ if(pstClock != orxNULL) { /* Creates function bank */ pstClock->pstFunctionBank = orxBank_Create(orxCLOCK_KU32_FUNCTION_BANK_SIZE, sizeof(orxCLOCK_FUNCTION_STORAGE), orxBANK_KU32_FLAG_NONE, orxMEMORY_TYPE_MAIN); /* Valid? */ if(pstClock->pstFunctionBank != orxNULL) { /* Inits clock */ pstClock->stClockInfo.fTickSize = _fTickSize; pstClock->stClockInfo.eType = _eType; pstClock->stClockInfo.eModType = orxCLOCK_MOD_TYPE_NONE; orxStructure_SetFlags(pstClock, orxCLOCK_KU32_FLAG_NONE, orxCLOCK_KU32_MASK_ALL); /* Increases counter */ orxStructure_IncreaseCounter(pstClock); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_CLOCK, "Couldn't create clock function storage."); /* Deletes clock */ orxStructure_Delete(pstClock); /* Not allocated */ pstClock = orxNULL; } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_CLOCK, "Couldn't allocate bank for clock."); } /* Done! */ return pstClock; }
orxFLOAT orxFASTCALL orxJoystick_GLFW_GetAxisValue(orxJOYSTICK_AXIS _eAxis) { orxU32 u32ID; orxFLOAT fResult; /* Checks */ orxASSERT((sstJoystick.u32Flags & orxJOYSTICK_KU32_STATIC_FLAG_READY) == orxJOYSTICK_KU32_STATIC_FLAG_READY); orxASSERT(_eAxis < orxJOYSTICK_AXIS_NUMBER); /* Gets ID */ u32ID = (orxU32)_eAxis / orxJOYSTICK_AXIS_SINGLE_NUMBER; /* Is ID valid? */ if(u32ID <= (orxU32)GLFW_JOYSTICK_LAST) { /* Updates its info */ orxJoystick_GLFW_UpdateInfo(u32ID); /* Plugged? */ if(sstJoystick.astJoyInfoList[u32ID].bIsConnected != orxFALSE) { orxS32 s32Axis; /* Gets axis */ s32Axis = _eAxis % orxJOYSTICK_AXIS_SINGLE_NUMBER; /* Updates result */ fResult = orx2F(sstJoystick.astJoyInfoList[u32ID].afAxisInfoList[s32Axis]); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_JOYSTICK, "Requested joystick ID <%d> is not connected.", u32ID); /* Updates result */ fResult = orxFLOAT_0; } } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_JOYSTICK, "Requested joystick ID <%d> is out of range.", u32ID); /* Updates result */ fResult = orxFLOAT_0; } /* Done! */ return fResult; }
/** Creates a text from config * @param[in] _zConfigID Config ID * @return orxTEXT / orxNULL */ orxTEXT *orxFASTCALL orxText_CreateFromConfig(const orxSTRING _zConfigID) { orxTEXT *pstResult; /* Checks */ orxASSERT(sstText.u32Flags & orxTEXT_KU32_STATIC_FLAG_READY); orxASSERT((_zConfigID != orxNULL) && (_zConfigID != orxSTRING_EMPTY)); /* Pushes section */ if((orxConfig_HasSection(_zConfigID) != orxFALSE) && (orxConfig_PushSection(_zConfigID) != orxSTATUS_FAILURE)) { /* Creates text */ pstResult = orxText_Create(); /* Valid? */ if(pstResult != orxNULL) { /* Stores its reference key */ pstResult->zReference = orxString_Store(orxConfig_GetCurrentSection()); /* Processes its config data */ if(orxText_ProcessConfigData(pstResult) == orxSTATUS_FAILURE) { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Couldn't process config data for text <%s>.", _zConfigID); /* Deletes it */ orxText_Delete(pstResult); /* Updates result */ pstResult = orxNULL; } } /* Pops previous section */ orxConfig_PopSection(); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Couldn't find config section named (%s).", _zConfigID); /* Updates result */ pstResult = orxNULL; } /* Done! */ return pstResult; }
/** Exits from Camera module */ void orxFASTCALL orxCamera_Exit() { /* Initialized? */ if(sstCamera.u32Flags & orxCAMERA_KU32_STATIC_FLAG_READY) { /* Deletes camera list */ orxCamera_DeleteAll(); /* Unregisters structure type */ orxStructure_Unregister(orxSTRUCTURE_ID_CAMERA); /* Deletes reference table */ orxHashTable_Delete(sstCamera.pstReferenceTable); /* Updates flags */ sstCamera.u32Flags &= ~orxCAMERA_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_RENDER, "Tried to exit camera module when it wasn't initialized."); } return; }
/** Creates an empty TimeLine * @return Created orxTIMELINE / orxNULL */ orxTIMELINE *orxFASTCALL orxTimeLine_Create() { orxTIMELINE *pstResult; /* Checks */ orxASSERT(sstTimeLine.u32Flags & orxTIMELINE_KU32_STATIC_FLAG_READY); /* Creates TimeLine */ pstResult = orxTIMELINE(orxStructure_Create(orxSTRUCTURE_ID_TIMELINE)); /* Created? */ if(pstResult != orxNULL) { /* Inits flags */ orxStructure_SetFlags(pstResult, orxTIMELINE_KU32_FLAG_ENABLED, orxTIMELINE_KU32_MASK_ALL); /* Increases counter */ orxStructure_IncreaseCounter(pstResult); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_OBJECT, "Failed to create TimeLine structure."); } /* Done! */ return pstResult; }
/** Sets graphic repeat (wrap) value * @param[in] _pstGraphic Concerned graphic * @param[in] _fRepeatX X-axis repeat value * @param[in] _fRepeatY Y-axis repeat value * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxGraphic_SetRepeat(orxGRAPHIC *_pstGraphic, orxFLOAT _fRepeatX, orxFLOAT _fRepeatY) { orxSTATUS eResult; /* Checks */ orxASSERT(sstGraphic.u32Flags & orxGRAPHIC_KU32_STATIC_FLAG_READY); /* Valid? */ if((_fRepeatX > orxFLOAT_0) && (_fRepeatY > orxFLOAT_0)) { /* Stores values */ _pstGraphic->fRepeatX = _fRepeatX; _pstGraphic->fRepeatY = _fRepeatY; /* Updates result */ eResult = orxSTATUS_SUCCESS; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Invalid repeat values %f & %f.", _fRepeatX, _fRepeatY); /* Updates result */ eResult = orxSTATUS_FAILURE; } /* Done! */ return eResult; }
/** Gets a function address * @param[in] _pstSysPlugin Concerned plugin * @param[in] _zFunctionName Name of the function to get * @return orxPLUGIN_FUNCTION / orxNULL */ static orxPLUGIN_FUNCTION orxFASTCALL orxPlugin_GetFunctionAddress(orxSYSPLUGIN _pstSysPlugin, const orxSTRING _zFunctionName) { orxPLUGIN_FUNCTION pfnFunction = orxNULL; #ifdef __orxPLUGIN_DYNAMIC__ /* Checks */ orxASSERT(_pstSysPlugin != orxHANDLE_UNDEFINED); orxASSERT(_zFunctionName != orxNULL); /* Gets function */ pfnFunction = (orxPLUGIN_FUNCTION)orxPLUGIN_GET_SYMBOL_ADDRESS(_pstSysPlugin, _zFunctionName); /* Not found? */ if(pfnFunction == orxNULL) { /* Logs an error */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "The requested function <%s> couldn't be find.", _zFunctionName); } #endif /* __orxPLUGIN_DYNAMIC__ */ /* Done! */ return pfnFunction; }
/** Gets graphic color * @param[in] _pstGraphic Concerned graphic * @param[out] _pstColor Object's color * @return orxCOLOR / orxNULL */ orxCOLOR *orxFASTCALL orxGraphic_GetColor(const orxGRAPHIC *_pstGraphic, orxCOLOR *_pstColor) { orxCOLOR *pstResult; /* Checks */ orxASSERT(sstGraphic.u32Flags & orxGRAPHIC_KU32_STATIC_FLAG_READY); orxSTRUCTURE_ASSERT(_pstGraphic); orxASSERT(_pstColor != orxNULL); /* Has color? */ if(orxStructure_TestFlags(_pstGraphic, orxGRAPHIC_KU32_FLAG_HAS_COLOR)) { /* Copies color */ orxColor_Copy(_pstColor, &(_pstGraphic->stColor)); /* Updates result */ pstResult = _pstColor; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Color not set on graphic."); /* Clears result */ pstResult = orxNULL; } /* Done! */ return pstResult; }
/** Gets button literal name * @param[in] _eButton Concerned button * @return Button's name */ const orxSTRING orxFASTCALL orxMouse_GetButtonName(orxMOUSE_BUTTON _eButton) { orxSTRING zResult; #define orxMOUSE_DECLARE_BUTTON_NAME(BUTTON) case orxMOUSE_BUTTON_##BUTTON: zResult = orxMOUSE_KZ_LITERAL_PREFIX#BUTTON; break /* Checks */ orxASSERT(_eButton < orxMOUSE_BUTTON_NUMBER); /* Depending on button */ switch(_eButton) { orxMOUSE_DECLARE_BUTTON_NAME(LEFT); orxMOUSE_DECLARE_BUTTON_NAME(RIGHT); orxMOUSE_DECLARE_BUTTON_NAME(MIDDLE); orxMOUSE_DECLARE_BUTTON_NAME(EXTRA_1); orxMOUSE_DECLARE_BUTTON_NAME(EXTRA_2); orxMOUSE_DECLARE_BUTTON_NAME(WHEEL_UP); orxMOUSE_DECLARE_BUTTON_NAME(WHEEL_DOWN); default: { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_MOUSE, "No name defined for button #%ld.", _eButton); /* Updates result */ zResult = orxSTRING_EMPTY; } } /* Done! */ return zResult; }
/** Creates an empty SoundPointer * @return Created orxSOUNDPOINTER / orxNULL */ orxSOUNDPOINTER *orxFASTCALL orxSoundPointer_Create() { orxSOUNDPOINTER *pstResult; /* Checks */ orxASSERT(sstSoundPointer.u32Flags & orxSOUNDPOINTER_KU32_STATIC_FLAG_READY); /* Creates SoundPointer */ pstResult = orxSOUNDPOINTER(orxStructure_Create(orxSTRUCTURE_ID_SOUNDPOINTER)); /* Created? */ if(pstResult != orxNULL) { /* Clears last added sound index */ pstResult->u32LastAddedIndex = orxU32_UNDEFINED; /* Inits flags */ orxStructure_SetFlags(pstResult, orxSOUNDPOINTER_KU32_FLAG_ENABLED, orxSOUNDPOINTER_KU32_MASK_ALL); /* Increases counter */ orxStructure_IncreaseCounter(pstResult); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SOUND, "Failed to create Sound Pointer structure."); } /* Done! */ return pstResult; }
/** Creates an empty text * @return orxTEXT / orxNULL */ orxTEXT *orxFASTCALL orxText_Create() { orxTEXT *pstResult; /* Checks */ orxASSERT(sstText.u32Flags & orxTEXT_KU32_STATIC_FLAG_READY); /* Creates text */ pstResult = orxTEXT(orxStructure_Create(orxSTRUCTURE_ID_TEXT)); /* Created? */ if(pstResult != orxNULL) { /* Inits it */ pstResult->zString = orxNULL; pstResult->pstFont = orxNULL; /* Inits flags */ orxStructure_SetFlags(pstResult, orxTEXT_KU32_FLAG_NONE, orxTEXT_KU32_MASK_ALL); /* Increases counter */ orxStructure_IncreaseCounter(pstResult); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Failed to create structure for text."); } /* Done! */ return pstResult; }
/** Exits from the text module */ void orxFASTCALL orxText_Exit() { /* Initialized? */ if(sstText.u32Flags & orxTEXT_KU32_STATIC_FLAG_READY) { /* Deletes text list */ orxText_DeleteAll(); /* Removes event handlers */ orxEvent_RemoveHandler(orxEVENT_TYPE_RESOURCE, orxText_EventHandler); orxEvent_RemoveHandler(orxEVENT_TYPE_LOCALE, orxText_EventHandler); /* Unregisters structure type */ orxStructure_Unregister(orxSTRUCTURE_ID_TEXT); /* Updates flags */ sstText.u32Flags &= ~orxTEXT_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Tried to exit text module when it wasn't initialized."); } return; }
/** Initialize Bank Module */ orxSTATUS orxFASTCALL orxBank_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Not already Initialized? */ if(!(sstBank.u32Flags & orxBANK_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstBank, sizeof(orxBANK_STATIC)); /* Gets cache line size */ sstBank.u32CacheLineSize = orxMemory_GetCacheLineSize(); /* Set module has ready */ sstBank.u32Flags = orxBANK_KU32_STATIC_FLAG_READY; /* Success */ eResult = orxSTATUS_SUCCESS; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_MEMORY, "Tried to initialize bank module when it was already initialized."); /* Already initialized */ eResult = orxSTATUS_SUCCESS; } /* Done */ return eResult; }
/** Captures a screenshot * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxScreenshot_Capture() { orxSTATUS eResult; /* Checks */ orxASSERT(sstScreenshot.u32Flags & orxSCREENSHOT_KU32_STATIC_FLAG_READY); /* Computes screenshot index */ eResult = orxScreenshot_ComputeIndex(); /* Valid? */ if(eResult != orxSTATUS_FAILURE) { /* Saves it */ eResult = orxDisplay_SaveBitmap(orxDisplay_GetScreenBitmap(), sstScreenshot.acScreenshotBuffer); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Logs */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SCREENSHOT, "Screenshot captured to [%s].", sstScreenshot.acScreenshotBuffer); } } /* Done! */ return eResult; }
/** Inits the screenshot module * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxScreenshot_Init() { orxSTATUS eResult = orxSTATUS_SUCCESS; /* Not already Initialized? */ if(!(sstScreenshot.u32Flags & orxSCREENSHOT_KU32_STATIC_FLAG_READY)) { /* Cleans control structure */ orxMemory_Zero(&sstScreenshot, sizeof(orxSCREENSHOT_STATIC)); /* Registers commands */ orxScreenshot_RegisterCommands(); /* Inits flags */ sstScreenshot.u32Flags = orxSCREENSHOT_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SCREENSHOT, "Tried to initalize Screenshot module when it was already initialized."); } /* Done! */ return eResult; }
/** Exits from the debug module */ void orxFASTCALL _orxDebug_Exit() { /* Initialized? */ if(sstDebug.u32Flags & orxDEBUG_KU32_STATIC_FLAG_READY) { #if !defined(__orxANDROID__) && !defined(__orxANDROID_NATIVE__) /* Closes files */ if(sstDebug.pstLogFile != orxNULL) { fclose(sstDebug.pstLogFile); sstDebug.pstLogFile = orxNULL; } if(sstDebug.pstDebugFile != orxNULL) { fclose(sstDebug.pstDebugFile); sstDebug.pstDebugFile = orxNULL; } #endif /* !__orxANDROID__ && !__orxANDROID_NATIVE__ */ /* Updates flags */ sstDebug.u32Flags &= ~orxDEBUG_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Tried to exit debug module when it wasn't initialized."); } return; }
/** Creates a function info * @param[in] _pstPluginInfo Concerned plugin info * @return orxPLUGIN_FUNCTION_INFO / orxNULL */ static orxPLUGIN_FUNCTION_INFO *orxFASTCALL orxPlugin_CreateFunctionInfo(orxPLUGIN_INFO *_pstPluginInfo) { orxPLUGIN_FUNCTION_INFO *pstFunctionInfo; /* Checks */ orxASSERT(_pstPluginInfo != orxNULL); /* Creates a function info */ pstFunctionInfo = (orxPLUGIN_FUNCTION_INFO *)orxBank_Allocate(_pstPluginInfo->pstFunctionBank); /* Valid? */ if(pstFunctionInfo != orxNULL) { /* Inits it */ orxMemory_Zero(pstFunctionInfo, sizeof(orxPLUGIN_FUNCTION_INFO)); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_PLUGIN, "Function into failed to allocate."); } /* Done! */ return pstFunctionInfo; }
/** Exits from the SoundPointer module */ void orxFASTCALL orxSoundPointer_Exit() { /* Initialized? */ if(sstSoundPointer.u32Flags & orxSOUNDPOINTER_KU32_STATIC_FLAG_READY) { /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_OBJECT, orxSoundPointer_EventHandler); /* Deletes SoundPointer list */ orxSoundPointer_DeleteAll(); /* Unregisters structure type */ orxStructure_Unregister(orxSTRUCTURE_ID_SOUNDPOINTER); /* Updates flags */ sstSoundPointer.u32Flags &= ~orxSOUNDPOINTER_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SOUND, "Tried to exit Sound Pointer module when it wasn't initialized."); } /* Done! */ return; }
/** Exits from the Graphic module */ void orxFASTCALL orxGraphic_Exit() { /* Initialized? */ if(sstGraphic.u32Flags & orxGRAPHIC_KU32_STATIC_FLAG_READY) { /* Deletes graphic list */ orxGraphic_DeleteAll(); /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_LOCALE, orxGraphic_EventHandler); /* Unregisters structure type */ orxStructure_Unregister(orxSTRUCTURE_ID_GRAPHIC); /* Updates flags */ sstGraphic.u32Flags &= ~orxGRAPHIC_KU32_STATIC_FLAG_READY; } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_DISPLAY, "Tried to exit graphic module when it wasn't initialized."); } return; }
/** Creates an empty FXPointer * @return Created orxFXPOINTER / orxNULL */ orxFXPOINTER *orxFASTCALL orxFXPointer_Create() { orxFXPOINTER *pstResult; /* Checks */ orxASSERT(sstFXPointer.u32Flags & orxFXPOINTER_KU32_STATIC_FLAG_READY); /* Creates FXPointer */ pstResult = orxFXPOINTER(orxStructure_Create(orxSTRUCTURE_ID_FXPOINTER)); /* Created? */ if(pstResult != orxNULL) { /* Inits flags */ orxStructure_SetFlags(pstResult, orxFXPOINTER_KU32_FLAG_ENABLED, orxFXPOINTER_KU32_MASK_ALL); /* Increases counter */ orxStructure_IncreaseCounter(pstResult); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_OBJECT, "Failed to create FX pointer structure."); } /* Done! */ return pstResult; }
/** Removes a node from its tree * @param[in] _pstNode Concerned node * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxTree_Remove(orxTREE_NODE *_pstNode) { orxTREE *pstTree; orxSTATUS eResult = orxSTATUS_SUCCESS; /* Checks */ orxASSERT(_pstNode != orxNULL); /* Gets tree */ pstTree = _pstNode->pstTree; /* Is in a tree? */ if(pstTree != orxNULL) { /* Checks tree is non empty */ orxASSERT(pstTree->u32Counter != 0); /* Removes it */ eResult = orxTree_PrivateRemove(_pstNode, orxFALSE); } else { /* Logs message */ orxDEBUG_PRINT(orxDEBUG_LEVEL_SYSTEM, "Referenced object for removing node is not a tree."); /* Not in a tree */ eResult = orxSTATUS_FAILURE; } /* Done! */ return eResult; }