From 00a76ac1f9fc8de3ceeaa0db9e27f8a6c3f9c880 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Thu, 8 Mar 2012 18:46:54 -0600 Subject: [PATCH] [WheelBase] Made WheelState a Lua-enabled enum, added GetWheelState() Lua binding. --- Docs/Changelog_sm5.txt | 2 ++ src/WheelBase.cpp | 14 ++++++++++++++ src/WheelBase.h | 25 ++++++++++++++++--------- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index af219b6769..b79a1d3417 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -13,6 +13,8 @@ StepMania 5.0 alpha 2 | 201203?? ---------- * [MusicWheel] Added RouletteStopped message, which is broadcast when Roulette is finished and the wheel is locked. [AJ] +* [WheelBase] Made WheelState a Lua-enabled enum and added + GetWheelState() Lua binding. [AJ] 2012/03/07 ---------- diff --git a/src/WheelBase.cpp b/src/WheelBase.cpp index 25753a1f45..35dfbc5a26 100644 --- a/src/WheelBase.cpp +++ b/src/WheelBase.cpp @@ -19,6 +19,19 @@ const int MAX_WHEEL_SOUND_SPEED = 15; AutoScreenMessage( SM_SongChanged ); // TODO: Replace this with a Message and MESSAGEMAN +static const char *WheelStateNames[] = { + "Selecting", + "FlyingOffBeforeNextSort", + "FlyingOnAfterNextSort", + "RouletteSpinning", + "RouletteSlowingDown", + "RandomSpinning", + "Locked", +}; +XToString( WheelState ); +StringToX( WheelState ); +LuaXType( WheelState ); + WheelBase::~WheelBase() { FOREACH( WheelItemBase*, m_WheelBaseItems, i ) @@ -535,6 +548,7 @@ public: //static int ChangeMusic( T* p, lua_State *L ){ p->ChangeMusicUnlessLocked( IArg(1) ); return 0; } DEFINE_METHOD( GetSelectedType, GetSelectedType() ) + DEFINE_METHOD( GetWheelState, GetWheelState() ) LunaWheelBase() { diff --git a/src/WheelBase.h b/src/WheelBase.h index dbbb786385..67cf598d49 100644 --- a/src/WheelBase.h +++ b/src/WheelBase.h @@ -14,6 +14,21 @@ #define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2)) +enum WheelState { + STATE_SELECTING, + STATE_FLYING_OFF_BEFORE_NEXT_SORT, + STATE_FLYING_ON_AFTER_NEXT_SORT, + STATE_ROULETTE_SPINNING, + STATE_ROULETTE_SLOWING_DOWN, + STATE_RANDOM_SPINNING, + STATE_LOCKED, + NUM_WheelState, + WheelState_Invalid, +}; +const RString& WheelStateToString( WheelState ws ); +WheelState StringToWheelState( const RString& sDC ); +LuaDeclareType( WheelState ); + /** @brief A wheel with data elements. */ class WheelBase : public ActorFrame { @@ -38,6 +53,7 @@ public: virtual bool Select(); // return true if this selection can end the screen + WheelState GetWheelState() { return m_WheelState; } bool WheelIsLocked() { return (m_WheelState == STATE_LOCKED ? true : false); } void RebuildWheelItems( int dist = INT_MAX ); // INT_MAX = refresh all @@ -83,15 +99,6 @@ protected: RageTimer m_MovingSoundTimer; float m_TimeBeforeMovingBegins; float m_SpinSpeed; - enum WheelState { - STATE_SELECTING, - STATE_FLYING_OFF_BEFORE_NEXT_SORT, - STATE_FLYING_ON_AFTER_NEXT_SORT, - STATE_ROULETTE_SPINNING, - STATE_ROULETTE_SLOWING_DOWN, - STATE_RANDOM_SPINNING, - STATE_LOCKED, - }; WheelState m_WheelState; float m_fTimeLeftInState;