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
Cửa sổ và ứng dụng

Thoát game, toàn màn hình, kích thước cửa sổ, con trỏ chuột. Tiếp...

Các hàm

void njin::quit (context &ctx)
 Yêu cầu thoát game.
void njin::window_set_close_intercept (context &ctx, bool on)
 Chặn nút đóng cửa sổ: nút [x], Alt+F4, và phím thoát (config::exit_key).
bool njin::window_close_requested (const context &ctx)
 Người chơi vừa đóng cửa sổ trong lúc window_set_close_intercept() đang bật.
void njin::window_set_size (context &ctx, vec2 size)
 Đổi kích thước cửa sổ.
void njin::window_set_title (context &ctx, const char *title)
 Đổi tiêu đề cửa sổ.
void njin::window_set_fullscreen (context &ctx, bool fullscreen)
 Bật hoặc tắt toàn màn hình.
bool njin::window_fullscreen (const context &ctx)
 Cửa sổ có đang toàn màn hình không.
void njin::window_set_vsync (context &ctx, bool vsync)
 Bật hoặc tắt đồng bộ dọc lúc đang chạy, xem config::vsync.
bool njin::window_vsync (const context &ctx)
 Đồng bộ dọc có đang bật không.
bool njin::window_resized (const context &ctx)
 Cửa sổ có vừa đổi kích thước ở frame này không (người dùng kéo cửa sổ, hoặc bật tắt toàn màn hình).
void njin::cursor_set_visible (context &ctx, bool visible)
 Hiện hoặc ẩn con trỏ chuột khi nó nằm trong cửa sổ.
void njin::screenshot (context &ctx, const char *path=nullptr)
 Chụp màn hình và lưu ra file ảnh.
void njin::window_set_virtual_size (context &ctx, vec2 size, bool integer_scale=true)
 Bật độ phân giải ảo: game vẽ lên một màn hình cố định size pixel (ví dụ 320 x 180), rồi engine phóng nó ra cửa sổ, giữ tỉ lệ, phần thừa là viền.
void njin::window_set_bar_color (context &ctx, rgba color)
 Màu viền quanh màn hình ảo.
vec2 njin::window_size (const context &ctx)
 Kích thước thật của cửa sổ, pixel, kể cả khi có độ phân giải ảo.
rect njin::window_viewport (const context &ctx)
 Vùng của cửa sổ mà màn hình ảo đang chiếm, pixel cửa sổ.
void njin::cursor_set_locked (context &ctx, bool locked)
 Khóa con trỏ chuột trong cửa sổ và ẩn nó, như game bắn súng góc nhìn thứ nhất.

Mô tả chi tiết

Thoát game, toàn màn hình, kích thước cửa sổ, con trỏ chuột.

Thông tin về hàm

◆ quit()

void njin::quit ( context & ctx)

Yêu cầu thoát game.

Vòng lặp dừng ở cuối frame hiện tại, phase_shutdown vẫn chạy như bình thường.

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

◆ window_set_close_intercept()

void njin::window_set_close_intercept ( context & ctx,
bool on )

Chặn nút đóng cửa sổ: nút [x], Alt+F4, và phím thoát (config::exit_key).

Khi bật, đóng cửa sổ không thoát game nữa mà chỉ làm window_close_requested() trả về true trong một frame. Game tự quyết làm gì (hỏi lại người chơi, lưu, dọn tài nguyên) rồi gọi quit(). Mặc định tắt.

Các tham số
ctxContext của engine.
ontrue để chặn.

◆ window_close_requested()

bool njin::window_close_requested ( const context & ctx)

Người chơi vừa đóng cửa sổ trong lúc window_set_close_intercept() đang bật.

Các tham số
ctxContext của engine.
Giá trị trả về
true trong đúng frame có yêu cầu đóng.

◆ window_set_size()

void njin::window_set_size ( context & ctx,
vec2 size )

Đổi kích thước cửa sổ.

Không có tác dụng khi đang toàn màn hình.

Các tham số
ctxContext của engine.
sizeKích thước mới, tính bằng pixel.

◆ window_set_title()

void njin::window_set_title ( context & ctx,
const char * title )

Đổi tiêu đề cửa sổ.

Các tham số
ctxContext của engine.
titleTiêu đề mới.

◆ window_set_fullscreen()

void njin::window_set_fullscreen ( context & ctx,
bool fullscreen )

Bật hoặc tắt toàn màn hình.

Dùng chế độ cửa sổ không viền phủ kín màn hình, nên chuyển qua lại nhanh và không đổi độ phân giải của màn hình.

Các tham số
ctxContext của engine.
fullscreentrue để bật.

◆ window_fullscreen()

bool njin::window_fullscreen ( const context & ctx)

Cửa sổ có đang toàn màn hình không.

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

◆ window_set_vsync()

void njin::window_set_vsync ( context & ctx,
bool vsync )

Bật hoặc tắt đồng bộ dọc lúc đang chạy, xem config::vsync.

Các tham số
ctxContext của engine.
vsynctrue để bật.

◆ window_vsync()

bool njin::window_vsync ( const context & ctx)

Đồng bộ dọc có đang bật không.

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

◆ window_resized()

bool njin::window_resized ( const context & ctx)

Cửa sổ có vừa đổi kích thước ở frame này không (người dùng kéo cửa sổ, hoặc bật tắt toàn màn hình).

Các tham số
ctxContext của engine.
Giá trị trả về
true nếu kích thước vừa đổi.

◆ cursor_set_visible()

void njin::cursor_set_visible ( context & ctx,
bool visible )

Hiện hoặc ẩn con trỏ chuột khi nó nằm trong cửa sổ.

Các tham số
ctxContext của engine.
visibletrue để hiện.

◆ screenshot()

void njin::screenshot ( context & ctx,
const char * path = nullptr )

Chụp màn hình và lưu ra file ảnh.

Ảnh được chụp ở cuối frame hiện tại, sau phase_post_render, nên có đủ mọi thứ của frame kể cả UI, dù gọi hàm này ở phase nào. Gọi nhiều lần trong một frame thì lưu nhiều file cùng một ảnh.

Định dạng theo đuôi file: .png (nên dùng), .bmp, .tga, .qoi. Thư mục cha được tạo nếu chưa có. Kết quả được ghi vào log.

Các tham số
ctxContext của engine.
pathĐường dẫn file. Để nullptr thì lưu vào thư mục screenshots trong thư mục lưu game (xem save_path()), tên theo ngày giờ.

◆ window_set_virtual_size()

void njin::window_set_virtual_size ( context & ctx,
vec2 size,
bool integer_scale = true )

Bật độ phân giải ảo: game vẽ lên một màn hình cố định size pixel (ví dụ 320 x 180), rồi engine phóng nó ra cửa sổ, giữ tỉ lệ, phần thừa là viền.

Mọi thứ đi qua màn hình ảo: thế giới, UI, toast, chuyển scene. screen_size() trả về size, mouse_pos() và mouse_delta() tính theo pixel ảo, nên code của game không cần biết cửa sổ thật to bao nhiêu. Ảnh được phóng không làm mượt, nên pixel art sắc nét ở mọi cỡ cửa sổ.

Với integer_scale, chỉ phóng 1, 2, 3... lần: mọi pixel ảo to bằng nhau, viền có thể dày hơn. Không thì phóng vừa khít cửa sổ.

Các tham số
ctxContext của engine.
sizeKích thước ảo, pixel. {0, 0} để tắt và vẽ thẳng lên cửa sổ.
integer_scaleChỉ phóng theo bội số nguyên.

◆ window_set_bar_color()

void njin::window_set_bar_color ( context & ctx,
rgba color )

Màu viền quanh màn hình ảo.

Mặc định là đen.

Các tham số
ctxContext của engine.
colorMàu.

◆ window_size()

vec2 njin::window_size ( const context & ctx)

Kích thước thật của cửa sổ, pixel, kể cả khi có độ phân giải ảo.

Các tham số
ctxContext của engine.
Giá trị trả về
Kích thước cửa sổ.

◆ window_viewport()

rect njin::window_viewport ( const context & ctx)

Vùng của cửa sổ mà màn hình ảo đang chiếm, pixel cửa sổ.

Không có độ phân giải ảo thì là cả cửa sổ.

Các tham số
ctxContext của engine.
Giá trị trả về
Vùng ảnh trong cửa sổ.

◆ cursor_set_locked()

void njin::cursor_set_locked ( context & ctx,
bool locked )

Khóa con trỏ chuột trong cửa sổ và ẩn nó, như game bắn súng góc nhìn thứ nhất.

Khi khóa, dùng mouse_delta() thay cho mouse_pos().

Các tham số
ctxContext của engine.
lockedtrue để khóa.