host.h (1256B)
1 /* host.h - una partida corriendo en este nodo: autoridad + bots + dueƱos de asientos. 2 * Lo usan el cliente Linux (hotseat / host LAN), el servidor y la PicoCalc "A". */ 3 #ifndef HOST_H 4 #define HOST_H 5 6 #include "catan.h" 7 8 enum SeatKind { SEAT_OPEN, SEAT_LOCAL, SEAT_REMOTE, SEAT_BOT, SEAT_NEUTRAL }; 9 10 typedef struct { 11 Auth a; 12 uint8_t kind[MAXP]; 13 char name[MAXP][20]; 14 Rng brng; 15 SearchCfg bot; /* bots: iters 0 = heuristico, si no ISMCTS (search.c) */ 16 uint16_t offer_wait; /* pasos que un bot lleva esperando respuestas a su oferta */ 17 void (*on_move)(void *ctx, const Move *m); /* cada movida resuelta, sin redactar */ 18 void *ctx; 19 } Host; 20 21 /* kinds: tipo de cada asiento (los neutrales se marcan solos). */ 22 void host_init(Host *h, const Opts *o, uint64_t seed, const uint8_t kinds[MAXP], 23 void (*on_move)(void *, const Move *), void *ctx); 24 /* seat = quien la manda (debe coincidir con m->p). */ 25 int host_submit(Host *h, int seat, Move *m); 26 /* Hace una movida de bot si alguno tiene que actuar. */ 27 bool host_bot_step(Host *h); 28 bool host_bot_pending(const Host *h); 29 /* Reproduce una movida del log guardado (se re-resuelve igual). */ 30 int host_replay(Host *h, const Move *m); 31 32 #endif