feat: work on implementing dice rolls

This commit is contained in:
Sara 2025-09-17 22:45:32 +02:00
parent b7063d99ee
commit 7e44029c1d
2 changed files with 22 additions and 14 deletions

View file

@ -1,4 +1,5 @@
#include "dice.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
@ -10,6 +11,11 @@ int roll_die(enum die_type die) {
static int current_active_count = 0;
static enum die_type active_dice_set[MAX_ACTIVE_DICE];
static struct roll_result_type roll_results[MAX_ACTIVE_DICE];
static struct roll_result_type roll_total = {
.roll = 0, .string_len = 0
};
enum die_type const *get_active_dice_set(size_t *out_length) {
if (out_length != nullptr) {
*out_length = current_active_count;
@ -30,17 +36,12 @@ void remove_die_from_active(size_t index) {
--current_active_count;
}
struct roll_result_type roll_active_dice_set(enum die_type die) {
struct roll_result_type results = {
.individual_result_count = MAX_ACTIVE_DICE,
.total = 0
};
void roll_active_dice_set(enum die_type die) {
for (size_t i = 0; i < current_active_count; ++i) {
results.individual_results[i] = roll_die(active_dice_set[i]);
results.total += results.individual_results[i];
roll_results[i].roll = roll_die(active_dice_set[i]);
snprintf(roll_results[i].string, MAX_ROLL_STR_LEN, "%d", roll_results[i].roll);
roll_total.roll += roll_results[i].roll;
}
return results;
}
Clay_String die_to_str(enum die_type die) {

View file

@ -8,6 +8,10 @@
#define MAX_ACTIVE_DICE 20
#endif
#ifndef MAX_ROLL_STR_LEN
#define MAX_ROLL_STR_LEN 5
#endif
enum die_type {
COIN = 2,
D4 = 4,
@ -20,9 +24,9 @@ enum die_type {
};
struct roll_result_type {
size_t individual_result_count;
int individual_results[MAX_ACTIVE_DICE];
int total;
int roll;
size_t string_len;
char string[MAX_ROLL_STR_LEN];
};
extern int roll_die(enum die_type die);
@ -30,7 +34,10 @@ extern int roll_die(enum die_type die);
extern enum die_type const *get_active_dice_set(size_t *out_length);
extern size_t add_die_to_active(enum die_type die);
extern void remove_die_from_active(size_t index);
extern struct roll_result_type roll_active_dice_set(enum die_type die);
extern struct roll_result_type *current_state(size_t *out_length);
extern void roll_active_dice_set(enum die_type die);
extern Clay_String die_to_str(enum die_type die);