Skip to content

Commit 71da37c

Browse files
author
s.kushnirenko
committed
ui: added inner panel to simple widgets
1 parent a57c9e1 commit 71da37c

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

src/graphics/elements/panel.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ struct painter;
1212
void outer_panel_draw(vec2i pos, int width_blocks, int height_blocks);
1313

1414
void inner_panel_draw(int x, int y, int width_blocks, int height_blocks);
15-
15+
inline void inner_panel_draw(vec2i pos, vec2i size) { inner_panel_draw(pos.x, pos.y, size.x, size.y); }
1616
void unbordered_panel_draw(int x, int y, int width_blocks, int height_blocks);
1717

1818
void label_draw(int x, int y, int width_blocks, int type);

src/graphics/elements/ui.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ void ui::panel(vec2i pos, vec2i size, UiFlags_ flags) {
136136
const vec2i offset = g_state.offset();
137137
if (!!(flags & UiFlags_PanelOuter)) {
138138
outer_panel_draw(offset + pos, size.x, size.y);
139+
} else if (!!(flags & UiFlags_PanelInner)) {
140+
inner_panel_draw(offset + pos, size);
139141
}
140142
}
141143

@@ -176,6 +178,17 @@ void ui::outer_panel::load(archive arch) {
176178
assert(!strcmp(type, "outer_panel"));
177179
}
178180

181+
void ui::inner_panel::draw() {
182+
ui::panel(pos, size, UiFlags_PanelInner);
183+
}
184+
185+
void ui::inner_panel::load(archive arch) {
186+
element::load(arch);
187+
188+
pcstr type = arch.r_string("type");
189+
assert(!strcmp(type, "inner_panel"));
190+
}
191+
179192
void ui::widget::draw() {
180193
for (auto &e : elements) {
181194
if (e->enabled) {
@@ -191,6 +204,8 @@ void ui::widget::load(archive arch) {
191204
element::ptr elm;
192205
if (!strcmp(type, "outer_panel")) {
193206
elm = std::make_shared<outer_panel>();
207+
} else if (!strcmp(type, "inner_panel")) {
208+
elm = std::make_shared<inner_panel>();
194209
} else if (!strcmp(type, "image")) {
195210
elm = std::make_shared<image>();
196211
} else if (!strcmp(type, "label")) {

src/graphics/elements/ui.h

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ enum UiFlags_ {
2020
UiFlags_None = 0,
2121
UiFlags_LabelCentered = 1 << 1,
2222
UiFlags_PanelOuter = 1 << 2,
23+
UiFlags_PanelInner = 1 << 3,
2324
};
2425

2526
namespace ui {
@@ -65,6 +66,11 @@ struct outer_panel : public element {
6566
virtual void load(archive elem) override;
6667
};
6768

69+
struct inner_panel : public element {
70+
virtual void draw() override;
71+
virtual void load(archive elem) override;
72+
};
73+
6874
struct elabel : public element {
6975
std::string _text;
7076
e_font _font;

src/scripts/ui.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,15 @@ mission_briefing_window = {
7676
font : FONT_NORMAL_BLACK_ON_LIGHT
7777
},
7878
objectives : {
79-
type : "label",
79+
type : "label",
8080
text : {group:62, id:7},
8181
pos : {x:376, y:433},
8282
font : FONT_NORMAL_BLACK_ON_LIGHT
83+
},
84+
objectives_panel : {
85+
type : "inner_panel",
86+
pos : {x:32, y:96},
87+
size: {w:33, h:6}
8388
}
8489
}
8590
}

src/window/mission_briefing.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ static void draw_foreground(void) {
9090

9191
g_mission_briefing.draw();
9292

93-
inner_panel_draw(32, 96, 33, 6);
9493
lang_text_draw(62, 10, 48, 104, FONT_NORMAL_WHITE_ON_DARK);
9594
int goal_index = 0;
9695

0 commit comments

Comments
 (0)