NS/main/source/mod/AvHActionButtons.h
2014-12-16 14:36:27 +01:00

151 lines
4.5 KiB
C++

//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. =========
//
// The copyright to the contents herein is the property of Charles G. Cleveland.
// The contents may be used and/or copied only with the written permission of
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose:
//
// $Workfile: AvHActionButtons.h $
// $Date: 2002/05/23 02:34:00 $
//
//-------------------------------------------------------------------------------
// $Log: AvHActionButtons.h,v $
// Revision 1.4 2002/05/23 02:34:00 Flayra
// - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development.
//
//===============================================================================
#ifndef AVHACTIONBUTTONS_H
#define AVHACTIONBUTTONS_H
#include "VGUI_Panel.h"
#include "ui/UIComponents.h"
#include "AvHTechTree.h"
#include "ui/StaticLabel.h"
const int kNumActionButtonRows = 3;
const int kNumActionButtonCols = 4;
class ActionButton : public StaticLabel //public vgui::Button
{
public:
ActionButton(const char* text,int x,int y);
bool GetBusy() const;
bool GetMouseOver() const;
bool GetCostMet() const;
string GetHelpText() const;
bool GetTechEnabled() const;
AvHMessageID GetMessageID() const;
void Localize(const AvHTechTree& inTechNodes);
void SetBusy(bool inBusy);
void SetButtonIndex(int inButtonIndex);
void SetEnabledState(bool inEnabledState);
void SetMessageID(AvHMessageID inMessageID);
void UpdateEnabledState(int inCurrentPoints, int inEnergy);
void UpdateEnabledAndResearchState(const AvHTechTree& inTechNodes);
static bool GetLabelForMessage(AvHMessageID inMessageID, string& outLabel);
void cursorEntered();
void cursorExited();
virtual void getPos(int& x, int& y);
protected:
virtual void paint();
virtual void paintBackground();
private:
bool mTechEnabled;
bool mCostMet;
bool mResearched;
AvHMessageID mMessageID;
int mCost;
string mHelpText;
bool mBusy;
bool mMouseOver;
int mButtonIndex;
};
class AvHActionButtons : public vgui::Panel
{
public:
static const char* GetHotKeyAKA();
static bool ButtonIndexToHotKey(int inCol, int inRow, char& outChar);
static bool HotKeyToButtonIndex(char inChar, int& outCol, int& outRow);
AvHActionButtons();
~AvHActionButtons();
void ClearButtons();
void Localize();
bool SetButton(int inButtonOffset, AvHMessageID inTechID);
//bool SetResearchButton(int inButtonOffset, AvHMessageID inTechID);
//bool SetTechIfOtherTechResearched(int inButtonOffset, AvHTechID inTechID, AvHTechID inResearchedTech);
int GetNumCols() const;
int GetNumRows() const;
ActionButton* GetActionButtonAtPos(int inCol, int inRow);
virtual void addInputSignal(InputSignal* s);
void setFont(Font* inFont);
void setFont(Scheme::SchemeFont schemeFont);
virtual void setFgColor(int r,int g,int b,int a);
virtual void setBgColor(int r,int g,int b,int a);
virtual void setPos(int inX, int inY);
virtual void setSize(int inWidth, int inHeight);
virtual void setVisible(bool inState);
void SetBusy(bool inBusy);
void SetEnabledState(int inButtonOffset, bool inEnabledState);
void SetTechNodes(const AvHTechTree& inTechNodes);
void SetResources(int inResources);
void SetEnergy(int inEnergy);
void UpdateEnabledState();
void UpdateEnabledAndResearchState();
protected:
virtual void paint();
virtual void paintBackground();
void SetButtonsToGrid();
TextImage mTextImage;
Font* mTechFont;
ActionButton** mButtonArray;
AvHTechTree mTechNodes;
int mResources;
int mEnergy;
bool mBusy;
};
class AvHUIActionButtons : public UIPanel
{
public:
AvHUIActionButtons(void);
// Destructor automatically removes component from the engine
virtual ~AvHUIActionButtons(void);
virtual Panel* GetComponentPointer(void);
virtual const string& GetType(void) const;
virtual bool SetClassProperties(const TRDescription& inDescription, Panel* inComponent, CSchemeManager* inSchemeManager);
private:
void AllocateComponent(const TRDescription& inDescription);
AvHActionButtons* mActionButtonsComponent;
string mType;
};
#endif