mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 15:20:58 -04:00
41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
#ifndef S_PHASE_H
|
|
#define S_PHASE_H
|
|
|
|
// Note: Ported from https://github.com/NSMBW-Community/NSMBW-Decomp/tree/master/include/dol/sLib
|
|
// See include/s/README.txt for changes made
|
|
|
|
/// @brief A phase is a list of methods to be called in order.
|
|
/// @ingroup slib dol
|
|
class sPhase_c {
|
|
public:
|
|
/// @brief Return value of a phase method and ::callMethod.
|
|
/// @unofficial
|
|
enum METHOD_RESULT_e {
|
|
WAIT, ///< Do not proceed to the next method in the phase.
|
|
OK, ///< Proceed to the next method in the phase.
|
|
DONE ///< The phase is done.
|
|
};
|
|
typedef METHOD_RESULT_e (phaseMethod)(void *);
|
|
|
|
/**
|
|
* @brief Constructs a new phase with a given method list.
|
|
*
|
|
* @param methodList The list of methods in the phase.
|
|
* @param count The length of the method list.
|
|
*/
|
|
sPhase_c(phaseMethod **methodList, int count);
|
|
/**
|
|
* @brief Executes the phase until the end is reached or a method returns METHOD_RESULT_e::WAIT.
|
|
*
|
|
* @param thisPtr A pointer to the owner.
|
|
* @return METHOD_RESULT_e::WAIT if the phase is not done yet, and METHOD_RESULT_e::DONE if the phase is finished.
|
|
*/
|
|
METHOD_RESULT_e callMethod(void *thisPtr);
|
|
|
|
phaseMethod **mpMethodList; ///< The method list.
|
|
unsigned short mPhaseLength; ///< The length of the method list.
|
|
unsigned short mCurrMethod; ///< The index of the method to execute.
|
|
};
|
|
|
|
#endif
|