Cytopia
0.3
A city building simulation game
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
Functions
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
w
z
~
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Typedefs
a
c
d
e
g
i
m
n
p
r
s
t
u
v
Enumerations
Enumerator
Related Functions
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
z
Functions
b
c
d
f
g
i
m
o
p
r
s
t
w
Variables
a
c
d
g
h
i
l
m
n
r
s
t
Typedefs
a
c
d
e
f
g
i
j
l
m
n
r
s
t
v
Enumerations
Enumerator
a
b
d
e
f
g
l
m
n
p
r
s
t
u
w
z
Macros
_
c
e
i
l
n
r
s
t
v
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
BuildMenu.hxx
Go to the documentation of this file.
1
#ifndef BUILDMENU_HXX_
2
#define BUILDMENU_HXX_
3
4
#include "imgui.h"
5
#include "
UIManager.hxx
"
6
7
struct
TileData
;
8
9
struct
BuildMenuButton
10
{
11
using
Ptr
= std::shared_ptr<BuildMenuButton>;
12
using
Items
= std::vector<Ptr>;
13
14
bool
m_open
=
false
;
// draw subbuttons
15
bool
m_background
=
false
;
// draw background
16
17
std::string
m_texstr
;
// texture name
18
std::string
m_id
;
// unique id
19
std::string
m_action
;
// additional action
20
std::string
m_tiletype
;
// which tiletype place on map
21
22
SDL_Texture *
m_tex
;
// sdl texture
23
ImVec2
m_uv0
= ImVec2{0, 0};
24
ImVec2
m_uv1
= ImVec2{1, 1};
// texture sub coords
25
ImSpan2i
m_texSize
;
// texutre size
26
BuildMenuButton
*
m_parent
=
nullptr
;
// parent button, need for recursive logic
27
28
ImVec4
m_destRect
;
// texture additional offsets
29
ImVec2
m_btnSize
;
// button frame rect
30
31
Items
m_buttons
;
// sub items
32
33
// ctor simple button with sub items
34
BuildMenuButton
(
const
std::string
&tx,
const
std::string
&category);
35
36
// ctor button which can change tile type
37
BuildMenuButton
(
const
std::string
&tx,
const
std::string
&category,
const
TileData
&tile);
38
39
// add new subbutton
40
Ptr
addCategoryButton
(
const
std::string
&tx,
const
std::string
&
id
,
const
TileData
&tile)
41
{
42
return
addButtonImpl
(tx,
id
, tile);
43
}
44
45
// add button which change tile type
46
Ptr
addTileButton
(
const
std::string
&tx,
const
std::string
&
id
,
const
TileData
&tile) {
return
addButtonImpl
(tx,
id
, tile); }
47
48
// add button with special action, like water or demolish
49
Ptr
addActionButton
(
const
std::string
&tx,
const
std::string
&action,
const
std::string
&tooltip);
50
51
// create new button with params
52
Ptr
addButtonImpl
(
const
std::string
&tx,
const
std::string
&
id
,
const
TileData
&tile);
53
64
void
scaleCenterImage
(SDL_Rect &ret,
int
btnW,
int
btnH,
int
imgW,
int
imgH)
const
;
65
66
const
ImVec2 &
getBtnSize
()
const
{
return
m_btnSize
; }
67
const
std::string
&
getId
()
const
{
return
m_id
; }
68
const
Items
&
getButtons
()
const
{
return
m_buttons
; }
69
70
// hide items recursively
71
void
hideItems
();
72
};
73
74
class
BuildMenu
final :
public
GameMenu
75
{
76
public
:
77
BuildMenu
();
78
79
void
draw
()
const override
;
80
81
// read config and crete build menu
82
void
createSubMenus
();
83
84
// show/hide button with items, hide another buttons
85
void
setItemVisible
(
BuildMenuButton::Ptr
btn,
bool
visible);
86
87
// on click button
88
void
onClick
(
BuildMenuButton::Ptr
btn);
89
90
// click on button with action param
91
void
onAction
(
const
std::string
&action,
bool
checked);
92
93
// click on button with tile type
94
void
onChangeTileType
(
const
std::string
&
id
,
bool
checked);
95
96
// hide all buttons
97
void
closeSubmenus
()
override
;
98
void
clearState
();
99
100
const
std::string
&
getId
()
const
{
return
m_id
; }
101
const
BuildMenuButton::Items
&
getButtons
()
const
{
return
m_buttons
; }
102
float
getTooltipDelay
()
const
{
return
m_tooltipDelay
; }
103
104
private
:
105
BuildMenuButton::Items
m_buttons
;
106
std::string
m_id
=
"Main"
;
107
ImVec2
m_btnSize
;
108
float
m_tooltipDelay
= 3.f;
109
};
110
111
#endif // BUILDMENU_HXX_
BuildMenu::closeSubmenus
void closeSubmenus() override
Definition:
BuildMenu.cxx:440
BuildMenuButton::m_tex
SDL_Texture * m_tex
Definition:
BuildMenu.hxx:22
BuildMenu::draw
void draw() const override
Definition:
BuildMenu.cxx:193
BuildMenuButton::m_id
std::string m_id
Definition:
BuildMenu.hxx:18
BuildMenuButton::m_texstr
std::string m_texstr
Definition:
BuildMenu.hxx:17
BuildMenu::setItemVisible
void setItemVisible(BuildMenuButton::Ptr btn, bool visible)
Definition:
BuildMenu.cxx:292
BuildMenu::getId
const std::string & getId() const
Definition:
BuildMenu.hxx:100
BuildMenuButton::m_background
bool m_background
Definition:
BuildMenu.hxx:15
BuildMenu::m_tooltipDelay
float m_tooltipDelay
Definition:
BuildMenu.hxx:108
BuildMenuButton::addActionButton
Ptr addActionButton(const std::string &tx, const std::string &action, const std::string &tooltip)
Definition:
BuildMenu.cxx:483
BuildMenu::onClick
void onClick(BuildMenuButton::Ptr btn)
Definition:
BuildMenu.cxx:317
BuildMenu::BuildMenu
BuildMenu()
Definition:
BuildMenu.cxx:17
BuildMenu::m_buttons
BuildMenuButton::Items m_buttons
Definition:
BuildMenu.hxx:105
BuildMenu::createSubMenus
void createSubMenus()
Definition:
BuildMenu.cxx:221
BuildMenu::onChangeTileType
void onChangeTileType(const std::string &id, bool checked)
Definition:
BuildMenu.cxx:389
BuildMenuButton::Ptr
std::shared_ptr< BuildMenuButton > Ptr
Definition:
BuildMenu.hxx:11
BuildMenuButton::m_parent
BuildMenuButton * m_parent
Definition:
BuildMenu.hxx:26
BuildMenuButton::BuildMenuButton
BuildMenuButton(const std::string &tx, const std::string &category)
Definition:
BuildMenu.cxx:457
BuildMenu::m_btnSize
ImVec2 m_btnSize
Definition:
BuildMenu.hxx:107
BuildMenuButton::addTileButton
Ptr addTileButton(const std::string &tx, const std::string &id, const TileData &tile)
Definition:
BuildMenu.hxx:46
BuildMenuButton::getId
const std::string & getId() const
Definition:
BuildMenu.hxx:67
BuildMenu::onAction
void onAction(const std::string &action, bool checked)
Definition:
BuildMenu.cxx:334
BuildMenuButton::Items
std::vector< Ptr > Items
Definition:
BuildMenu.hxx:12
BuildMenu
Definition:
BuildMenu.hxx:74
BuildMenuButton::getBtnSize
const ImVec2 & getBtnSize() const
Definition:
BuildMenu.hxx:66
BuildMenuButton::m_uv0
ImVec2 m_uv0
Definition:
BuildMenu.hxx:23
BuildMenu::clearState
void clearState()
Definition:
BuildMenu.cxx:450
BuildMenuButton::m_uv1
ImVec2 m_uv1
Definition:
BuildMenu.hxx:24
BuildMenuButton::m_action
std::string m_action
Definition:
BuildMenu.hxx:19
BuildMenuButton::scaleCenterImage
void scaleCenterImage(SDL_Rect &ret, int btnW, int btnH, int imgW, int imgH) const
takes an SDL_Rect, default button width and height, and image width and height and scales the image t...
Definition:
BuildMenu.cxx:503
BuildMenuButton::m_texSize
ImSpan2i m_texSize
Definition:
BuildMenu.hxx:25
BuildMenuButton::m_open
bool m_open
Definition:
BuildMenu.hxx:14
BuildMenuButton::getButtons
const Items & getButtons() const
Definition:
BuildMenu.hxx:68
BuildMenuButton::m_destRect
ImVec4 m_destRect
Definition:
BuildMenu.hxx:28
BuildMenuButton::m_btnSize
ImVec2 m_btnSize
Definition:
BuildMenu.hxx:29
BuildMenuButton::m_tiletype
std::string m_tiletype
Definition:
BuildMenu.hxx:20
GameMenu
Definition:
UIManager.hxx:11
BuildMenuButton::hideItems
void hideItems()
Definition:
BuildMenu.cxx:523
BuildMenu::m_id
std::string m_id
Definition:
BuildMenu.hxx:106
BuildMenuButton
Definition:
BuildMenu.hxx:9
UIManager.hxx
BuildMenuButton::addButtonImpl
Ptr addButtonImpl(const std::string &tx, const std::string &id, const TileData &tile)
Definition:
BuildMenu.cxx:495
BuildMenu::getTooltipDelay
float getTooltipDelay() const
Definition:
BuildMenu.hxx:102
string
std::string string
Definition:
AudioConfig.hxx:14
BuildMenuButton::addCategoryButton
Ptr addCategoryButton(const std::string &tx, const std::string &id, const TileData &tile)
Definition:
BuildMenu.hxx:40
TileData
Holds all releavted information to this specific tile.
Definition:
tileData.hxx:135
BuildMenu::getButtons
const BuildMenuButton::Items & getButtons() const
Definition:
BuildMenu.hxx:101
BuildMenuButton::m_buttons
Items m_buttons
Definition:
BuildMenu.hxx:31
src
game
ui
BuildMenu.hxx
Generated on Sun Nov 27 2022 09:50:52 for Cytopia by
1.8.17