diff options
Diffstat (limited to 'src/core/entertain_config.c')
| -rw-r--r-- | src/core/entertain_config.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/core/entertain_config.c b/src/core/entertain_config.c new file mode 100644 index 0000000..7f1e35e --- /dev/null +++ b/src/core/entertain_config.c @@ -0,0 +1,65 @@ +#include "hybbx/entertain_config.h" +#include "hybbx/instance.h" +#include "hybbx/log.h" +#include "hybbx/util.h" + +#include <string.h> + +static hybbx_entertain_config_t g_entertain; +static int g_entertain_ready; + +void hybbx_entertain_config_defaults(hybbx_entertain_config_t *cfg) +{ + if (cfg == NULL) { + return; + } + + memset(cfg, 0, sizeof(*cfg)); + cfg->enabled = 0; +} + +void hybbx_entertain_config_apply(const hybbx_config_t *config) +{ + hybbx_instance_role_t role; + const char *legacy; + + hybbx_entertain_config_defaults(&g_entertain); + g_entertain_ready = 1; + + if (config != NULL) { + g_entertain.enabled = hybbx_config_get_bool(config, "entertain", + "enabled", 0); + /* Legacy: [networks] entertain= — prefer [entertain] enabled= */ + legacy = hybbx_config_get(config, "networks", "entertain", NULL); + if (legacy != NULL && legacy[0] != '\0' && + !hybbx_config_get(config, "entertain", "enabled", NULL)) { + g_entertain.enabled = hybbx_bool_is_true(legacy); + hybbx_log_warn("[entertain] legacy [networks] entertain= — " + "use [entertain] enabled=yes"); + } + } + + role = hybbx_instance_role(); + if (g_entertain.enabled && role != HYBBX_INSTANCE_MAIN) { + hybbx_log_warn("[entertain] Main / standalone Main only — forcing off " + "(role=%s)", + hybbx_instance_role_name()); + g_entertain.enabled = 0; + } + + hybbx_log_info("[entertain] enabled=%s (chess built-in; Main/standalone only)", + hybbx_bool_to_string(g_entertain.enabled)); +} + +const hybbx_entertain_config_t *hybbx_entertain_config_get(void) +{ + if (!g_entertain_ready) { + hybbx_entertain_config_defaults(&g_entertain); + } + return &g_entertain; +} + +int hybbx_entertain_enabled(void) +{ + return hybbx_entertain_config_get()->enabled; +} |
