njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
Hộp thoại

Kịch bản hội thoại, chữ chạy từng ký tự, chân dung, lựa chọn, event. Tiếp...

Classes

struct  njin::dialog_choice
 Một lựa chọn trả lời trong hộp thoại. Tiếp...
struct  njin::dialog_node
 Một câu thoại: ai nói, nói gì, rồi đi đâu. Tiếp...
struct  njin::dialog_script
 Một đoạn hội thoại: nhiều nút nối với nhau. Tiếp...
struct  njin::dialog_style
 Giao diện của hộp thoại. Tiếp...
struct  njin::dialog_event
 Event: một câu thoại hoặc lựa chọn có event vừa được kích hoạt. Tiếp...
struct  njin::dialog_ended
 Event: hội thoại vừa kết thúc. Tiếp...

Các hàm

bool njin::dialog_parse (const json_value &json, dialog_script &out)
 Đọc một đoạn hội thoại từ JSON (dạng ở njin::dialog_script).
bool njin::dialog_load (const char *path, dialog_script &out)
 Nạp một đoạn hội thoại từ file JSON.
dialog_style njin::dialog_default_style ()
 Giao diện mặc định: hộp tối ở dưới, cùng tông với UI mặc định.
void njin::dialog_set_style (context &ctx, const dialog_style &style)
 Đặt giao diện cho hộp thoại.
dialog_style njin::dialog_get_style (const context &ctx)
 Giao diện hiện tại.
void njin::dialog_portrait (context &ctx, const char *name, texture_handle texture, rect source={})
 Đăng ký một chân dung để các câu thoại gọi tên ("portrait": "oldman").
void njin::dialog_set_condition (context &ctx, std::function< bool(context &, const std::string &)> fn)
 Hàm kiểm tra điều kiện cond của câu thoại và lựa chọn: nhận chuỗi điều kiện, trả về đúng hay sai.
void njin::dialog_start (context &ctx, const dialog_script &script, const char *start=nullptr)
 Bắt đầu một đoạn hội thoại.
void njin::dialog_say (context &ctx, const char *speaker, const char *text, const char *portrait=nullptr)
 Nói một câu lẻ, không cần kịch bản: biển báo, đồ vật.
bool njin::dialog_active (const context &ctx)
 Hộp thoại có đang mở không.
void njin::dialog_stop (context &ctx)
 Đóng hộp thoại ngay (gửi njin::dialog_ended).

Mô tả chi tiết

Kịch bản hội thoại, chữ chạy từng ký tự, chân dung, lựa chọn, event.

Thông tin về hàm

◆ dialog_parse()

bool njin::dialog_parse ( const json_value & json,
dialog_script & out )

Đọc một đoạn hội thoại từ JSON (dạng ở njin::dialog_script).

Các tham số
jsonDữ liệu.
outNhận đoạn hội thoại.
Giá trị trả về
false nếu thiếu nodes.

◆ dialog_load()

bool njin::dialog_load ( const char * path,
dialog_script & out )

Nạp một đoạn hội thoại từ file JSON.

Các tham số
pathĐường dẫn.
outNhận đoạn hội thoại.
Giá trị trả về
false nếu không đọc được (có ghi log).

◆ dialog_default_style()

dialog_style njin::dialog_default_style ( )

Giao diện mặc định: hộp tối ở dưới, cùng tông với UI mặc định.

Giá trị trả về
Style mặc định.

◆ dialog_set_style()

void njin::dialog_set_style ( context & ctx,
const dialog_style & style )

Đặt giao diện cho hộp thoại.

Các tham số
ctxContext của engine.
styleStyle.

◆ dialog_get_style()

dialog_style njin::dialog_get_style ( const context & ctx)

Giao diện hiện tại.

Các tham số
ctxContext của engine.
Giá trị trả về
Style.

◆ dialog_portrait()

void njin::dialog_portrait ( context & ctx,
const char * name,
texture_handle texture,
rect source = {} )

Đăng ký một chân dung để các câu thoại gọi tên ("portrait": "oldman").

Các tham số
ctxContext của engine.
nameTên.
textureẢnh.
sourceVùng trong ảnh. Kích thước 0 là cả ảnh.

◆ dialog_set_condition()

void njin::dialog_set_condition ( context & ctx,
std::function< bool(context &, const std::string &)> fn )

Hàm kiểm tra điều kiện cond của câu thoại và lựa chọn: nhận chuỗi điều kiện, trả về đúng hay sai.

Game tự quyết định cú pháp, ví dụ tên một cờ trong save game ("has_key"), có ! ở đầu để phủ định.

Các tham số
ctxContext của engine.
fnHàm kiểm tra. Để trống thì mọi điều kiện đều đúng.

◆ dialog_start()

void njin::dialog_start ( context & ctx,
const dialog_script & script,
const char * start = nullptr )

Bắt đầu một đoạn hội thoại.

Hộp thoại được engine vẽ và điều khiển cho tới khi hết; game chỉ cần nghe event.

Trong lúc mở, hộp thoại nhận Enter, Space, nút A, chuột trái (và mũi tên khi có lựa chọn), nên game không thấy các phím đó. Phím di chuyển của game thì không bị chặn: kiểm tra dialog_active() hoặc bật dialog_style::pause_game.

Các tham số
ctxContext của engine.
scriptĐoạn hội thoại. Được chép lại, nên có thể hủy ngay sau đó.
startNút bắt đầu, hoặc null cho script.start.

◆ dialog_say()

void njin::dialog_say ( context & ctx,
const char * speaker,
const char * text,
const char * portrait = nullptr )

Nói một câu lẻ, không cần kịch bản: biển báo, đồ vật.

Các tham số
ctxContext của engine.
speakerNgười nói, có thể null.
textNội dung.
portraitTên chân dung, có thể null.

◆ dialog_active()

bool njin::dialog_active ( const context & ctx)

Hộp thoại có đang mở không.

Các tham số
ctxContext của engine.
Giá trị trả về
true nếu đang mở.

◆ dialog_stop()

void njin::dialog_stop ( context & ctx)

Đóng hộp thoại ngay (gửi njin::dialog_ended).

Các tham số
ctxContext của engine.