Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

LightsManager.h

Go to the documentation of this file.
00001 /* LightsManager - Control lights. */ 00002 00003 #ifndef LightsManager_H 00004 #define LightsManager_H 00005 00006 #include "PlayerNumber.h" 00007 #include "GameInput.h" 00008 #include "EnumHelper.h" 00009 00010 const float LIGHTS_FALLOFF_SECONDS = 0.1f; 00011 00012 enum CabinetLight 00013 { 00014 LIGHT_MARQUEE_UP_LEFT, 00015 LIGHT_MARQUEE_UP_RIGHT, 00016 LIGHT_MARQUEE_LR_LEFT, 00017 LIGHT_MARQUEE_LR_RIGHT, 00018 LIGHT_BUTTONS_LEFT, 00019 LIGHT_BUTTONS_RIGHT, 00020 LIGHT_BASS_LEFT, 00021 LIGHT_BASS_RIGHT, 00022 NUM_CABINET_LIGHTS 00023 }; 00024 #define FOREACH_CabinetLight( i ) FOREACH_ENUM( CabinetLight, NUM_CABINET_LIGHTS, i ) 00025 const CString& CabinetLightToString( CabinetLight cl ); 00026 00027 enum LightsMode 00028 { 00029 LIGHTSMODE_ATTRACT, 00030 LIGHTSMODE_JOINING, 00031 LIGHTSMODE_MENU, 00032 LIGHTSMODE_DEMONSTRATION, 00033 LIGHTSMODE_GAMEPLAY, 00034 LIGHTSMODE_STAGE, 00035 LIGHTSMODE_ALL_CLEARED, 00036 LIGHTSMODE_TEST, 00037 NUM_LIGHTS_MODES 00038 }; 00039 const CString& LightsModeToString( LightsMode lm ); 00040 00041 struct LightsState 00042 { 00043 bool m_bCabinetLights[NUM_CABINET_LIGHTS]; 00044 bool m_bGameButtonLights[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS]; 00045 }; 00046 00047 class LightsDriver; 00048 00049 class LightsManager 00050 { 00051 public: 00052 LightsManager(CString sDriver); 00053 ~LightsManager(); 00054 00055 void Update( float fDeltaTime ); 00056 bool IsEnabled() const { return m_pDriver != NULL; } 00057 00058 void BlinkCabinetLight( CabinetLight cl ); 00059 void BlinkGameButton( GameInput gi ); 00060 00061 void SetLightsMode( LightsMode lm ); 00062 LightsMode GetLightsMode(); 00063 00064 private: 00065 float m_fSecsLeftInCabinetLightBlink[NUM_CABINET_LIGHTS]; 00066 float m_fSecsLeftInGameButtonBlink[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS]; 00067 00068 LightsDriver* m_pDriver; 00069 LightsMode m_LightsMode; 00070 LightsState m_LightsState; 00071 }; 00072 00073 00074 extern LightsManager* LIGHTSMAN; // global and accessable from anywhere in our program 00075 00076 #endif 00077 00078 /* 00079 * (c) 2003-2004 Chris Danford 00080 * All rights reserved. 00081 * 00082 * Permission is hereby granted, free of charge, to any person obtaining a 00083 * copy of this software and associated documentation files (the 00084 * "Software"), to deal in the Software without restriction, including 00085 * without limitation the rights to use, copy, modify, merge, publish, 00086 * distribute, and/or sell copies of the Software, and to permit persons to 00087 * whom the Software is furnished to do so, provided that the above 00088 * copyright notice(s) and this permission notice appear in all copies of 00089 * the Software and that both the above copyright notice(s) and this 00090 * permission notice appear in supporting documentation. 00091 * 00092 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00093 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00094 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF 00095 * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS 00096 * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT 00097 * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 00098 * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 00099 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 00100 * PERFORMANCE OF THIS SOFTWARE. 00101 */

Generated on Thu Jan 27 20:57:22 2005 for StepMania by doxygen 1.3.7