16 log_msg(ERROR,
"Ability",
"Database connection is not open");
22 int rc = sqlite3_prepare_v2(db_connection->db, SQL_SELECT_ALL_ABILITIES, -1, &stmt, NULL);
23 if (rc != SQLITE_OK) {
24 log_msg(ERROR,
"Ability",
"Failed to prepare statement: %s", sqlite3_errmsg(db_connection->db));
30 if (ability_init_table == NULL) {
31 log_msg(ERROR,
"Ability",
"Failed to allocate memory for ability table");
32 sqlite3_finalize(stmt);
36 memset(ability_init_table, 0,
sizeof(
ability_init_t) * MAX_ABILITIES);
40 while ((rc = sqlite3_step(stmt)) == SQLITE_ROW && index < MAX_ABILITIES) {
41 ability_init_table[index].ability_number = sqlite3_column_int(stmt, 0);
42 ability_init_table[index].name = strdup((
const char*) sqlite3_column_text(stmt, 1));
43 ability_init_table[index].roll_amount = sqlite3_column_int(stmt, 2);
44 ability_init_table[index].accuracy = sqlite3_column_int(stmt, 3);
45 ability_init_table[index].resource_cost = sqlite3_column_int(stmt, 4);
46 ability_init_table[index].dice_size = (dice_size_t) sqlite3_column_int(stmt, 5);
47 ability_init_table[index].damage_type = (damage_type_t) sqlite3_column_int(stmt, 6);
51 if (rc != SQLITE_DONE) {
52 log_msg(ERROR,
"Ability",
"Failed to execute statement: %s", sqlite3_errmsg(db_connection->db));
53 free(ability_init_table);
54 sqlite3_finalize(stmt);
59 sqlite3_finalize(stmt);
61 return ability_init_table;
void log_msg(const log_level_t level, const char *module, const char *format,...)
Logs a formatted message with a specified log level and module.