Files
Jedi-Academy/codemp/client/cl_input_hotswap.h
2013-04-04 14:32:05 -07:00

64 lines
1.4 KiB
C++

#ifndef __CL_INPUT_HOTSWAP_H
#define __CL_INPUT_HOTSWAP_H
#define HOTSWAP_ID_WHITE 0
#define HOTSWAP_ID_BLACK 1
#define HOTSWAP_CAT_WEAPON 0
#define HOTSWAP_CAT_ITEM 1024
#define HOTSWAP_CAT_FORCE 2048
class HotSwapManager
{
private:
bool down; //Is the button down?
bool noBind; //Don't bind the button.
int bindTime; //How long the button has been down with the selection up.
int uniqueID; //Unique ID for this button.
//Return the binding for the button, or NULL if none.
const char *GetBinding(void);
const char *GetBindingUp(void);
//Returns true if the weapon/force/item select screen is up.
bool HUDInBindState(void);
//Returns true if the weapon/force/item select screen is up.
bool ForceSelectUp(void);
bool WeaponSelectUp(void);
bool ItemSelectUp(void);
//Binds the button based on the current HUD selection.
void Bind(void);
//Execute the current bind, if there is one.
void Execute(void);
void ExecuteUp(void);
//Reset the object to the default state.
void Reset(void);
public:
HotSwapManager(int uniqueID);
//Call every frame. Uses cg.frametime to increment timers.
void Update(void);
//Set the button down or up.
void SetDown(void);
void SetUp(void);
//Returns true if the button is currently down.
bool ButtonDown(void) { return down; }
};
//External bind function for sharing with UI.
extern void HotSwapBind(int buttonID, int category, int value);
#endif