4#include <initializer_list>
75 {0.96f, 0.72f, 0.20f, 1.0f}, {0.92f, 0.32f, 0.34f, 1.0f}};
105 const char *
id =
"panel";
169bool ui_button(context &ctx,
const char *label,
bool enabled =
true);
176bool ui_toggle(context &ctx,
const char *label,
bool &value);
188 f32 step = 0.0f,
bool percent =
false);
198 std::initializer_list<const char *> options);
207 std::span<const std::string> options);
352 const char *
id =
"popup";
357 const char *
buttons[4] = {
"OK",
nullptr,
nullptr,
nullptr};
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
float f32
Số thực 32 bit.
Definition _types.h:28
bool ui_slider(context &ctx, const char *label, f32 &value, f32 min, f32 max, f32 step=0.0f, bool percent=false)
Một thanh trượt.
void ui_popup_begin(context &ctx, const ui_popup_desc &desc)
Bắt đầu một popup có nội dung tùy ý: làm tối nền, mở panel modal.
void ui_progress_circle(context &ctx, const ui_circle_desc &desc)
Một thanh tiến độ hình tròn, không bấm được: hồi chiêu, nạp đạn, máu dạng vòng.
bool ui_mouse_over(const context &ctx)
Chuột có đang nằm trên một panel không (các panel của frame trước).
void ui_space(context &ctx, f32 height)
Khoảng trống.
void ui_begin(context &ctx, const ui_panel_desc &desc={})
Bắt đầu một panel.
void ui_toast(context &ctx, const char *text, const ui_toast_desc &desc={})
Hiện một thông báo nhỏ ở góc màn hình, tự biến mất: "Đã lưu game", "Nhặt được5 vàng".
void ui_label(context &ctx, const char *text)
Một dòng chữ.
bool ui_active(const context &ctx)
Có panel nào nhận phím được vẽ ở frame trước không (panel HUD với navigable = false không tính).
bool ui_back(context &ctx)
true ở frame người chơi bấm quay lại (Esc, Backspace, nút B) trong lúc có panel đang hiện.
void ui_image(context &ctx, texture_handle texture, vec2 size, rect source={})
Một ảnh, căn giữa trong panel.
void ui_toast_clear(context &ctx)
Xóa mọi toast đang hiện, ví dụ khi đổi scene.
ui_style ui_style_get(const context &ctx)
Style hiện tại.
ui_toast_kind
Loại toast: quyết định màu vạch bên trái (xem ui_style::toast_accent).
Definition njin_ui.h:315
rect ui_last_rect(const context &ctx)
Khung của widget vừa đặt trong panel đang mở (ui_label(), ui_button(), ui_space()....
void ui_end(context &ctx)
Kết thúc panel và vẽ nó.
void ui_style_set(context &ctx, const ui_style &style)
Đặt style cho mọi widget vẽ sau đó.
void ui_focus(context &ctx, const char *label)
Chọn sẵn widget có nhãn label (trong panel đang mở), thường gọi khi vừa mở menu để nút mặc định được ...
ui_style ui_default_style()
Giao diện mặc định: panel tối trong suốt, nút bo góc, màu nhấn xanh.
bool ui_keybind_listening(const context &ctx)
Có dòng ui_keybind() nào đang chờ phím không.
void ui_popup_end(context &ctx)
Kết thúc popup bắt đầu bằng ui_popup_begin().
bool ui_toggle(context &ctx, const char *label, bool &value)
Một công tắc bật/tắt.
i32 ui_popup(context &ctx, const ui_popup_desc &desc, bool &open)
Một popup xác nhận: nền tối, tiêu đề, nội dung và vài nút.
bool ui_keybind(context &ctx, const char *label, action_handle action, bool pad=false)
Một dòng đổi phím cho màn hình cài đặt: bên trái là tên, bên phải là phím đang gắn vào action.
bool ui_choice(context &ctx, const char *label, i32 &index, std::initializer_list< const char * > options)
Chọn một trong nhiều lựa chọn bằng trái/phải hoặc bấm: độ khó, độ phân giải, ngôn ngữ.
bool ui_button(context &ctx, const char *label, bool enabled=true)
Một nút bấm.
void ui_row(context &ctx, i32 columns)
Xếp columns widget tiếp theo thành một hàng ngang, chia đều bề rộng.
void ui_progress(context &ctx, f32 value, const char *text=nullptr)
Một thanh tiến độ, không bấm được: máu, thời gian nạp.
@ ui_toast_info
Thông tin trung tính.
Definition njin_ui.h:316
@ ui_toast_warning
Cảnh báo.
Definition njin_ui.h:318
@ ui_toast_success
Việc vừa làm thành công.
Definition njin_ui.h:317
@ ui_toast_error
Lỗi.
Definition njin_ui.h:319
Định danh của một action nhập liệu, tạo bởi action_register().
Definition _types.h:85
Định danh của một font, tạo bởi font_load().
Definition _types.h:131
Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao.
Definition _math.h:13
Màu gồm đỏ, xanh lá, xanh dương và alpha.
Definition _types.h:64
Định danh của một shader, tạo bởi shader_load().
Definition _types.h:101
Định danh của một âm thanh ngắn (sound), tạo bởi sound_load().
Definition _types.h:116
Định danh của một texture, tạo bởi texture_load().
Definition _types.h:146
Mô tả một thanh tiến độ hình tròn, dùng với ui_progress_circle().
Definition njin_ui.h:217
bool round_caps
Hai đầu của phần đầy bo tròn.
Definition njin_ui.h:224
rgba track
Màu vòng nền. Alpha 0: dùng ui_style::track.
Definition njin_ui.h:226
f32 thickness
Độ dày của vòng.
Definition njin_ui.h:220
f32 value
Tiến độ 0..1.
Definition njin_ui.h:218
bool show_track
Vẽ vòng nền dưới phần đầy.
Definition njin_ui.h:225
rgba text_color
Màu chữ. Alpha 0: dùng ui_style::panel.text.
Definition njin_ui.h:230
f32 diameter
Đường kính ngoài.
Definition njin_ui.h:219
const char * text
Chữ giữa vòng. Null thì xem percent.
Definition njin_ui.h:228
bool clockwise
false: đầy dần theo chiều ngược kim đồng hồ.
Definition njin_ui.h:223
rgba fill
Màu phần đầy. Alpha 0: dùng ui_style::fill.
Definition njin_ui.h:227
f32 start_angle
Điểm bắt đầu, độ, tính từ đỉnh (12 giờ) theo chiều kim đồng hồ: 90 là 3 giờ, -90 là 9 giờ.
Definition njin_ui.h:222
bool percent
Khi text là null: vẽ tiến độ dạng "75%" giữa vòng.
Definition njin_ui.h:229
Diện mạo của một loại widget ở từng trạng thái.
Definition njin_ui.h:41
ui_skin normal
Bình thường.
Definition njin_ui.h:42
ui_skin focused
Đang được chọn (chuột trỏ vào, hoặc bàn phím / tay cầm chọn tới).
Definition njin_ui.h:43
ui_skin disabled
Bị tắt.
Definition njin_ui.h:45
rgba text_disabled
Màu chữ khi bị tắt.
Definition njin_ui.h:48
shader_handle shader
Shader tùy chỉnh cho mặt widget. Có thể để trống.
Definition njin_ui.h:49
rgba text
Màu chữ bình thường.
Definition njin_ui.h:46
ui_skin pressed
Đang bị nhấn giữ.
Definition njin_ui.h:44
rgba text_focused
Màu chữ khi được chọn.
Definition njin_ui.h:47
Vị trí và kích thước của một panel, dùng với ui_begin().
Definition njin_ui.h:103
const char * title
Tiêu đề vẽ ở đầu panel. Có thể null.
Definition njin_ui.h:107
vec2 pivot
Điểm của panel đặt vào anchor, theo tỉ lệ kích thước panel. Mặc định bằng tâm.
Definition njin_ui.h:111
bool background
Vẽ nền panel.
Definition njin_ui.h:114
f32 width
Chiều rộng, pixel. 0 là ui_style::width.
Definition njin_ui.h:113
vec2 offset
Dời thêm, pixel.
Definition njin_ui.h:112
bool navigable
Panel nhận phím điều hướng và tay cầm (mũi tên, Enter, Space, Esc).
Definition njin_ui.h:118
vec2 anchor
Điểm neo trên màn hình, theo tỉ lệ: {0.5, 0.5} là giữa, {0, 1} là góc dưới trái.
Definition njin_ui.h:109
Cách vẽ một mặt của widget: màu phẳng, ảnh (có thể 9-slice), hoặc cả hai.
Definition njin_ui.h:20
f32 border
Bề dày viền 9-slice trong ảnh, pixel. 0 là kéo giãn cả ảnh.
Definition njin_ui.h:23
f32 roundness
Bo góc khi không có ảnh, 0..1.
Definition njin_ui.h:25
texture_handle texture
Ảnh. Không hợp lệ thì vẽ màu phẳng.
Definition njin_ui.h:21
rgba outline
Màu viền khi không có ảnh. Alpha 0 là không viền.
Definition njin_ui.h:26
rect source
Vùng trong ảnh, pixel. Kích thước 0 là cả ảnh.
Definition njin_ui.h:22
f32 outline_width
Bề dày viền, pixel.
Definition njin_ui.h:27
rgba color
Màu nền (không ảnh) hoặc màu nhân vào ảnh.
Definition njin_ui.h:24
Toàn bộ giao diện của UI: phông chữ, kích thước, diện mạo từng loại widget, âm thanh.
Definition njin_ui.h:54
f32 width
Chiều rộng mặc định của panel.
Definition njin_ui.h:61
i32 toast_max
Số toast tối đa cùng lúc. Cái cũ nhất bị bỏ.
Definition njin_ui.h:81
ui_look track
Rãnh slider, thanh tiến độ, ô của toggle.
Definition njin_ui.h:66
ui_look button
Nút; cũng là nền dòng của toggle, slider, choice.
Definition njin_ui.h:65
f32 toast_width
Chiều rộng tối đa, pixel (trước scale). Chữ dài tự xuống dòng.
Definition njin_ui.h:82
sound_handle sound_accept
Phát khi bấm nút hoặc đổi giá trị.
Definition njin_ui.h:85
f32 font_size
Cỡ chữ, pixel.
Definition njin_ui.h:56
f32 spacing
Khoảng giữa hai widget.
Definition njin_ui.h:59
sound_handle sound_back
Phát khi ui_back() trả về true.
Definition njin_ui.h:86
f32 padding
Khoảng từ mép panel vào nội dung.
Definition njin_ui.h:58
f32 widget_height
Chiều cao một dòng widget.
Definition njin_ui.h:60
rgba toast_accent[4]
Vạch màu bên trái toast theo loại: info, success, warning, error.
Definition njin_ui.h:74
f32 toast_seconds
Thời gian hiện mặc định.
Definition njin_ui.h:80
ui_look label
Chữ thường (chỉ dùng màu chữ).
Definition njin_ui.h:64
vec2 toast_margin
Khoảng từ mép màn hình, pixel (trước scale).
Definition njin_ui.h:79
ui_look knob
Núm kéo của slider.
Definition njin_ui.h:68
ui_look toast
Nền và màu chữ của toast (chỉ dùng normal và text).
Definition njin_ui.h:69
ui_look fill
Phần đã đầy của slider, thanh tiến độ, dấu tích của toggle.
Definition njin_ui.h:67
sound_handle sound_move
Phát khi chuyển lựa chọn. Có thể để trống.
Definition njin_ui.h:84
f32 scale
Nhân mọi kích thước. Đặt theo chiều cao màn hình để UI co giãn.
Definition njin_ui.h:57
rgba dim
Màu phủ làm tối nền phía sau popup.
Definition njin_ui.h:72
ui_look panel
Nền panel (chỉ dùng normal) và màu chữ tiêu đề (text).
Definition njin_ui.h:63
font_handle font
Phông chữ. Mặc định là phông của engine.
Definition njin_ui.h:55
vec2 toast_anchor
Góc màn hình toast bám vào, theo tỉ lệ: {1, 1} là góc dưới phải, {0.5, 0} là giữa cạnh trên.
Definition njin_ui.h:78
Cách hiện một toast.
Definition njin_ui.h:323
f32 seconds
Thời gian hiện. 0 là ui_style::toast_seconds.
Definition njin_ui.h:325
ui_toast_kind kind
Loại.
Definition njin_ui.h:324
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39