//======== (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: PieMenu.h $ // $Date: 2002/08/16 02:29:19 $ // //------------------------------------------------------------------------------- // $Log: PieMenu.h,v $ // Revision 1.10 2002/08/16 02:29:19 Flayra // - Added document headers // - Started to add support for pie nodes with both images and text // //=============================================================================== #ifndef PIEMENU_H #define PIEMENU_H #include "VGUI_Panel.h" #include "VGUI_Font.h" #include "vector" #include "string" #include "cl_dll/chud.h" #include "ui/FadingImageLabel.h" #include "ui/PieNode.h" #include "ui/GammaAwareComponent.h" #include "ui/ReloadableComponent.h" using std::string; using vgui::Font; class PieMenu : public vgui::Panel, public ReloadableComponent, public GammaAwareComponent { public: PieMenu(const string& inRootName, int x, int y, int wide, int tall); virtual ~PieMenu(); // Adds an input signal to our nodes, not ourself. Use this method to find out // when the mouse has been released over a node. After calling this, the input signal // functions should only be called passing PieNodes as parameters, so cast them and // call GetNodeName() to determine action to perform. void AddInputSignalForNodes(InputSignal* s); bool AddNode(const string& inNodeString); void ChangeNode(int inMessageID, int inNewMessageID, const string& inNewText); void DisableNodesWhoseChildrenAreDisabled(); PieNode* GetRootNode(void); bool GetSelectedNode(PieNode*& outNode); // Called when mouse released over one of our child image labels. This // is how it determines which item was selected. virtual void mouseReleased(MouseCode code, Panel* panel); virtual void NotifyGammaChange(float inGammaSlope); void RecomputeVisibleSize(void); void ResetToDefaults(); void SetConnectorName(const string& inConnectorName); void SetConstructionComplete(); void SetDefaultImage(const string& inDefaultImage); void SetFont(Font* inFont); void SetNodeDistance(float inNewXDistance, float inNewYDistance); // Looks for node and sets its enabled state. It changes how it draws accordingly. bool SetNodeEnabled(const string& inNodeName, bool inNewState); void SetNodeTargaName(const string& inTarga); virtual void setPos(int x,int y); virtual void setSize(int wide,int tall); void SetTolerance(int inPercentage); // Override so we can determine how long it has been open virtual void SetFadeState(bool state); void Update(float theCurrentTime); void UpdateMenuFromTech(const AvHTechTree& inMenuCosts, int inPurchaselevel); void VidInit(); protected: // Override these to do nothing. The only thing to be drawn is our pie nodes. //virtual void paint(); virtual void paintBackground(); private: PieNodeList* mNodeList; Font* mFont; string mDefaultImage; }; #endif