juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

ctrl.h (1627B)


      1 /* ctrl.h - interaccion con el tablero, comun a TUI, GUI y PicoCalc.
      2  *
      3  * El frontend le pasa teclas abstractas o clicks ya resueltos a una casilla, y
      4  * ctrl devuelve acciones listas para mandar a la autoridad. El frontend dibuja
      5  * a partir de Game + Ctrl. */
      6 #ifndef CTRL_H
      7 #define CTRL_H
      8 
      9 #include "chess.h"
     10 #include "input.h"
     11 
     12 enum CtrlMode { CM_BOARD, CM_PROMO, CM_ENTRY };
     13 
     14 /* zonas clickeables del tablero */
     15 enum { HIT_SQUARE = 1, HIT_PROMO = 2 };
     16 
     17 typedef struct {
     18     const Game *g;
     19     uint8_t  local;             /* bit por color que se juega desde esta pantalla */
     20     bool     flipped;           /* negras abajo */
     21     int      mode;
     22     int      cursor;            /* casilla bajo el cursor */
     23     int      sel;               /* casilla elegida o -1 */
     24     Move     targets[32];       /* jugadas legales desde sel */
     25     int      ntargets;
     26     Move     promo[4];          /* en CM_PROMO: las 4 coronaciones posibles (Q R B N) */
     27     int      promo_cur;
     28     char     entry[16];         /* en CM_ENTRY: jugada que se esta escribiendo */
     29     char     msg[96];
     30     bool     msg_err;
     31 } Ctrl;
     32 
     33 void ctrl_init(Ctrl *c, uint8_t local, bool flipped);
     34 void ctrl_sync(Ctrl *c, const Game *g);            /* despues de cada accion */
     35 bool ctrl_key(Ctrl *c, int key, Act *out);         /* true: hay accion para mandar */
     36 bool ctrl_click(Ctrl *c, int kind, int id, Act *out);
     37 bool ctrl_my_turn(const Ctrl *c);
     38 bool ctrl_is_target(const Ctrl *c, int sq);
     39 int  ctrl_last_move(const Ctrl *c, int *from, int *to);   /* 1 si hay ultima jugada */
     40 const char *ctrl_prompt(const Ctrl *c);
     41 void ctrl_error(Ctrl *c, int err);
     42 
     43 #endif