Blame projects/jigsaw/game.h

Ivan Mahonin fdbd7d
#ifndef GAME_H
Ivan Mahonin fdbd7d
#define GAME_H
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
#include "path.h"
Ivan Mahonin fdbd7d
#include "puzzle.h"
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
typedef struct {
Ivan Mahonin fdbd7d
  char *path;
Ivan Mahonin fdbd7d
  char *imgname;
Ivan Mahonin fdbd7d
  int seed;
Ivan Mahonin fdbd7d
  Puzzle pz;
Ivan Mahonin fdbd7d
  
Ivan Mahonin fdbd7d
  double winTransition;
Ivan Mahonin fdbd7d
} Game;
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
typedef struct {
Ivan Mahonin fdbd7d
  char *imgname;
Ivan Mahonin fdbd7d
  int rows, cols, turn, groups, seed;
Ivan Mahonin fdbd7d
  time_t t;
Ivan Mahonin fdbd7d
} GameInfo;
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
void gameFree(Game *gm);
Ivan Mahonin fdbd7d
int gameCreate(Game *gm, const char *path, const char *imgname, int rows, int cols, int turn, int seed);
Ivan Mahonin fdbd7d
int gameSave(Game *gm);
Ivan Mahonin fdbd7d
int gameLoad(Game *gm, const char *path);
Ivan Mahonin fdbd7d
GameInfo* loadGameInfo(const char *path);
Ivan Mahonin fdbd7d
void gameDraw(Game *gm);
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
static inline int gameStarted(Game *gm) { return !!gm->path; }
Ivan Mahonin fdbd7d
static inline int gameWon(Game *gm) { return gameStarted(gm) && gm->pz.ph.first && !gm->pz.ph.first->next; }
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
Ivan Mahonin fdbd7d
#endif