Âm lượng, phím, toàn màn hình, ngôn ngữ: những thứ người chơi tự chỉnh và mong game nhớ.
#include <njin.h>
namespace {
bool open_settings = true;
void startup(njin::context &ctx) {
}
void settings_menu(njin::context &ctx) {
if (!open_settings)
return;
open_settings = false;
}
}
void on_hit(njin::context &ctx) {
njin::pad_rumble(ctx, 0, 0.6f, 0.8f, 0.25f); }
void setup(njin::context &ctx) {
}
}
int main() {
njin::context *ctx =
njin::create({.title =
"Settings", .width = 1280, .height = 720, .target_fps = 60});
(void)on_hit;
(void)enter_boss;
}
void run(context &ctx)
Chạy vòng lặp chính cho đến khi cửa sổ đóng.
context * create(const config &cfg)
Mở cửa sổ và trả về context của engine.
void destroy(context *ctx)
Giải phóng mọi tài nguyên của engine và đóng cửa sổ.
void ecs_register(context &ctx, sys_phase phase, sys_fnc fnc, const char *name=nullptr)
Thêm một system vào lịch chạy của một phase.
void mod_register(context &ctx, const mod_desc &desc)
Chạy setup của module và đưa các system của nó vào lịch chạy.
@ phase_startup
Một lần, trước frame đầu tiên.
Definition _mod.h:32
@ phase_post_render
Mỗi frame, vẽ trong không gian màn hình (UI).
Definition _mod.h:39
void music_crossfade(context &ctx, music_handle handle, f32 seconds)
Chuyển nhạc: mọi music khác đang phát nhỏ dần rồi dừng, trong lúc handle to dần.
bool settings_save(const context &ctx, const char *file="settings.json", const json_value *game=nullptr)
Lưu cài đặt vào file trong thư mục lưu game (save_path()), kèm dữ liệu riêng của game nếu có (độ khó,...
bool settings_load(context &ctx, const char *file="settings.json", json_value *game=nullptr)
Nạp và áp dụng cài đặt đã lưu.
void audio_set_bus_volume(context &ctx, audio_bus bus, f32 volume)
Đặt âm lượng một kênh, từ 0 trở lên (1 là nguyên).
f32 audio_bus_volume(const context &ctx, audio_bus bus)
Âm lượng một kênh.
@ bus_music
Nhạc nền (mọi music).
Definition njin_audio.h:19
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_begin(context &ctx, const ui_panel_desc &desc={})
Bắt đầu một panel.
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_end(context &ctx)
Kết thúc panel và vẽ nó.
bool ui_keybind_listening(const context &ctx)
Có dòng ui_keybind() nào đang chờ phím không.
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_button(context &ctx, const char *label, bool enabled=true)
Một nút bấm.
Đị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 bản nhạc stream (music), tạo bởi music_load().
Definition _types.h:123
audio_set_bus_volume() và audio_set_bus_muted() có hiệu lực ngay, cả với âm đang phát. music_crossfade() chuyển nhạc mượt (theo giờ thật, nên chạy cả khi game pause); music_fade_in() và music_fade_out() cho từng bản.
Một action có thể gắn phím, nút chuột và nút tay cầm. Để người chơi đổi:
Nếu cần tự lưu phím vào chỗ khác: input_bindings_save() và input_bindings_load().
pad_rumble() cho hai motor (trầm và nhanh) trong một khoảng thời gian; tay cầm không có motor thì không làm gì. Kết hợp với camera_shake() và hitstop() khi trúng đòn.