scummvm/sword1/menu.h
Robert Göffringmann 7f5df14e7d menu, sound and mouse fixes.
svn-id: r11701
2003-12-17 05:16:37 +00:00

99 lines
2.4 KiB
C++

/* ScummVM - Scumm Interpreter
* Copyright (C) 2003 The ScummVM project
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header$
*
*/
#ifndef BSMENU_H
#define BSMENU_H
#include "sworddefs.h"
#include "object.h"
class SwordScreen;
class SwordMouse;
class ResMan;
#define MENU_TOP 0
#define MENU_BOT 1
struct Subject {
uint32 subjectRes;
uint32 frameNo;
};
struct MenuObject {
int32 textDesc;
uint32 bigIconRes;
uint32 bigIconFrame;
uint32 luggageIconRes;
uint32 useScript;
};
class SwordMenuIcon {
public:
SwordMenuIcon(uint8 menuType, uint8 menuPos, uint32 resId, uint32 frame, SwordScreen *screen);
bool wasClicked(uint16 mouseX, uint16 mouseY);
void setSelect(bool pSel);
void draw(void);
private:
uint8 _menuType, _menuPos;
uint32 _resId, _frame;
bool _selected;
SwordScreen *_screen;
};
class SwordMenu {
public:
SwordMenu(SwordScreen *pScreen, SwordMouse *pMouse);
void fnChooser(BsObject *compact);
void fnEndChooser(void);
void fnAddSubject(int32 sub);
void cfnReleaseMenu(void);
int logicChooser(BsObject *compact);
void engine(void);
void refresh(uint8 menuType);
void fnStartMenu(void);
void fnEndMenu(void);
void checkTopMenu(void);
private:
void buildSubjects(void);
void buildMenu(void);
void showMenu(uint8 menuType);
bool _subjectBarShown; // originally "subject_status"
bool _objectBarShown; // originally "menu_status"
uint8 checkMenuClick(uint8 menuType);
//- lower menu, speech subjects:
SwordMenuIcon *_subjects[16];
uint32 _subjectBar[16];
//- top menu, items
SwordMenuIcon *_objects[TOTAL_pockets];
uint32 _menuList[TOTAL_pockets];
uint32 _inMenu;
uint32 _secondItem;
SwordScreen *_screen;
SwordMouse *_mouse;
static const Subject _subjectList[TOTAL_subjects];
static const MenuObject _objectDefs[TOTAL_pockets + 1];
};
#endif //BSMENU_H