#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 */