Blob Blame History Raw
#ifndef MENU_H
#define MENU_H


#include "game.h"


#define MS_CNT 16

typedef struct {
  char *path;
  char *imgname;
  double percent;
  Animation image;
  Vec p0, p1;
  int rows, cols;
  time_t t;
} MenuItem;


typedef struct {
  Game gm;
  MenuItem *items;
  int itemsCnt;
  Vec contentSize;
  
  double scrollPos;
  double scrollVel;
  double scrollHist[MS_CNT][2];
  Vec mouse, mouseDownPos;
  double mouseDownTime;
  double mouseScroll;
  double mousePath;

  Animation iconBack;
  Animation iconCount[4];
  Animation iconTurn[2];
  
  int countMode;
  int turnMode;
  int closing;
  double closingTransition;

  MenuItem *choosingItem;
  int choosingItemFrames;
} Menu;


int menuItemInit(MenuItem *mi, const char *path, const char *imgname, Vec p0, Vec p1, Framebuffer fb, int w, int h);
void menuItemFree(MenuItem *mi);
void menuItemDraw(MenuItem *mi);

void menuInit(Menu *m);
void menuFree(Menu *m);
void menuUpdateItems(Menu *m);
int menuSave(Menu *m);
int menuLoad(Menu *m);
void menuChooseItem(Menu *m, MenuItem *mi);
void menuClick(Menu *m, Vec screenSize, double cornerSize);
void menuDraw(Menu *m);


#endif