1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
// ____ _ __
// / __ )____ _____ | | / /___ ___________
// / __ / __ \/ ___/ | | /| / / __ `/ ___/ ___/
// / /_/ / /_/ (__ ) | |/ |/ / /_/ / / (__ )
// /_____/\____/____/ |__/|__/\__,_/_/ /____/
//
// A futuristic real-time strategy game.
// This file is part of Bos Wars.
//
/**@name icons.h - The icons headerfile. */
//
// (c) Copyright 1998-2007 by Lutz Sammer
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; only version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
#ifndef __ICONS_H__
#define __ICONS_H__
//@{
#include <string>
#include <map>
/*----------------------------------------------------------------------------
-- Documentation
----------------------------------------------------------------------------*/
/**
** @class CIcon icons.h
**
** \#include "icons.h"
**
** This structure contains all informations about an icon.
**
** The icon structure members:
**
** CIcon::Ident
**
** Unique identifier of the icon, used to reference it in config
** files and during startup. Don't use this in game, use instead
** the pointer to this structure.
**
** CIcon::G
**
** Graphic image containing the loaded graphics. Loaded by
** LoadIcons(). All icons belonging to the same icon file shares
** this structure.
**
** CIcon::Frame
**
** Frame number in the graphic to display.
*/
/**
** @class IconConfig icons.h
**
** \#include "icons.h"
**
** This structure contains all configuration informations about an icon.
**
** IconConfig::Name
**
** Unique identifier of the icon, used to reference icons in config
** files and during startup. The name is resolved during game
** start and the pointer placed in the next field.
** @see CIcon::Ident
**
** IconConfig::Icon
**
** Pointer to an icon. This pointer is resolved during game start.
*/
/*----------------------------------------------------------------------------
-- Defines
----------------------------------------------------------------------------*/
#define IconActive 1 /// cursor on icon
#define IconClicked 2 /// mouse button down on icon
#define IconSelected 4 /// this the selected icon
#define IconDisabled 8 /// icon disabled
#define IconAutoCast 16 /// auto cast icon
/*----------------------------------------------------------------------------
-- Declarations
----------------------------------------------------------------------------*/
class CGraphic;
class CPlayer;
class ButtonStyle;
/// Icon: rectangle image used in menus
class CIcon {
public:
CIcon(const std::string &ident);
~CIcon();
static CIcon *New(const std::string &ident);
static CIcon *Get(const std::string &ident);
/// Draw icon
void DrawIcon(const CPlayer *player, int x, int y) const;
/// Draw icon of a unit
void DrawUnitIcon(const CPlayer *player, ButtonStyle *style,
unsigned flags, int x, int y, const std::string &text) const;
inline const std::string &GetIdent() { return this->Ident; }
CGraphic *G; /// Graphic data
int Frame; /// Frame number in graphic
private:
std::string Ident; /// Icon identifier
};
/// Icon reference (used in config tables)
class IconConfig {
public:
IconConfig() : Icon(NULL) {}
void Load();
std::string Name; /// config icon name
CIcon *Icon; /// icon pointer to use to run time
};
extern std::map<std::string, CIcon *> Icons;
/*----------------------------------------------------------------------------
-- Functions
----------------------------------------------------------------------------*/
extern void InitIcons(void); /// Init icons
extern void LoadIcons(void); /// Load icons
extern void CleanIcons(void); /// Cleanup icons
/// Register CCL features
extern void IconCclRegister(void);
//@}
#endif // !__ICONS_H__
|