Nimbin[12]?Games / Entropie / entropie/src/world/cast.h

Entropie git · main

Entropie festival game; first steps

sdl c game entropie cmake · first commit 2026-10-10 · last commit 2026-11-02 (18 hours ago) · synced 10 hours ago

C 88.5% Markdown 9.1% GLSL 2.3%
git clone https://git.christianimmanuel.de/games/Entropie.gitwget https://git.christianimmanuel.de/games/Entropie/archive/Entropie.tar.gz
entropie/src/world/cast.h 3.1 KB · 62 lines raw
#ifndef WORLD_CAST_H
#define WORLD_CAST_H

/*
 * Everybody in the story, one entry each: how they look and are, what they're
 * good at, their part in the festival (the projects they lead or help with)
 * and when they turn up on the ground. You are entry 0. Kurti and his sons
 * live here; the crew comes over the first days (`arrives`).
 */

#include "world/object.h"

/* The festival's projects: the floors and the jobs round them. */
typedef enum {
    PROJECT_NONE,
    PROJECT_ORGA,           /* the festival organisation */
    PROJECT_WEB,            /* the website, tickets */
    PROJECT_ARTISTS,        /* booking and looking after the artists */
    PROJECT_DECORATION,     /* art and decoration */
    PROJECT_LIGHT,          /* the light (and the main stage's floor) */
    PROJECT_HOFBUEHNE,      /* the yard stage: bands, poetry slam, breakdance, rock, punk */
    PROJECT_OBSTWIESE,      /* the orchard: psytrance */
    PROJECT_KARTOFFELACKER, /* the potato field: world music, small talks (the geo-dome) */
    PROJECT_HIDDEN,         /* the hidden floor behind the main building: techno */
    PROJECT_MOWING,         /* the Kartoffelacker's grass, with the scythe */
    PROJECT_SNAILS,         /* the vineyard snails picked up before the regulatory office comes */
    PROJECT_WOOD_ART,       /* art cut from logs with the chainsaw */
    PROJECT_BIG_TREE,       /* the big old tree between the Obstwiese and the Kartoffelacker: felled away from the phone line */
    PROJECT_COUNT
} Project;

typedef struct {
    const char *name;
    Mood        temperament;
    FigureLook  look;           /* (the jacket, its hood and a hat: from Figure_wardrobe) */
    Character   character;
    float       kg;
    int         age;            /* past 45 slower on their feet */
    int         hand;           /* HAND_LEFT / HAND_RIGHT */
    int         garment;        /* GARMENT_* */
    bool        female, urinella, lighter, filter_habit, pocket_tray, lives_here;
    bool        far_away;       /* not from Berlin (Go-Darmstadt): never at the meetings, stays on the ground */
    float       smoker, wits, height_fear, worn, fitness, tolerance;
    int         cigarettes, tobacco, papers, filters;
    const char *keys;           /* a key in the pocket, or NULL */
    /* their part in the festival */
    const char *role;           /* said plainly */
    Project     leads, helps;   /* the project they lead, one they help with */
    float       commitment;     /* 0..1 how much they're into it, to begin with */
    float       arrives;        /* hours after the start on the ground they turn up (0: there from the start) */
} CastMember;

int               Cast_count(void);
const CastMember *Cast_get(int id);
/* A person made from their entry, standing at `at` (not in the world yet). */
Object           *Cast_create(int id, Vec3 at);
/* A project said plainly ("Obstwiese (psytrance)"). */
const char       *Cast_projectName(Project p);
/* Who leads it now (the people in the world), or NULL. */
Object           *Cast_leadOf(Object *const *objects, int count, Project p);

#endif /* WORLD_CAST_H */