mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 07:14:59 +00:00
XEEN: Split up menus file into dialogs and dialogs_options
This commit is contained in:
parent
64ccc21cef
commit
fe48af7de5
83
engines/xeen/dialogs.cpp
Normal file
83
engines/xeen/dialogs.cpp
Normal file
@ -0,0 +1,83 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "xeen/dialogs.h"
|
||||
|
||||
namespace Xeen {
|
||||
|
||||
/**
|
||||
* Saves the current list of buttons
|
||||
*/
|
||||
void Dialog::saveButtons() {
|
||||
_savedButtons.push(_buttons);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clears the current list of defined buttons
|
||||
*/
|
||||
void Dialog::clearButtons() {
|
||||
_buttons.clear();
|
||||
}
|
||||
|
||||
void Dialog::restoreButtons() {
|
||||
_buttons = _savedButtons.pop();
|
||||
}
|
||||
|
||||
void Dialog::addButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw = true) {
|
||||
_buttons.push_back(DialogButton(bounds, c, sprites, draw));
|
||||
}
|
||||
|
||||
void Dialog::checkEvents() {
|
||||
EventsManager &events = *_vm->_events;
|
||||
events.pollEventsAndWait();
|
||||
|
||||
if (events._leftButton) {
|
||||
// Check whether any button is selected
|
||||
events.debounceMouse();
|
||||
Common::Point pt = events._mousePos;
|
||||
|
||||
for (uint i = 0; i < _buttons.size(); ++i) {
|
||||
if (_buttons[i]._bounds.contains(pt)) {
|
||||
_key = _buttons[i]._c;
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (events.isKeyPending()) {
|
||||
Common::KeyState keyState;
|
||||
events.getKey(keyState);
|
||||
if (keyState.ascii >= 32 && keyState.ascii <= 127) {
|
||||
_key = keyState.ascii;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
void SettingsBaseDialog::showContents(SpriteResource &title1, bool waitFlag) {
|
||||
checkEvents();
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
} // End of namespace Xeen
|
78
engines/xeen/dialogs.h
Normal file
78
engines/xeen/dialogs.h
Normal file
@ -0,0 +1,78 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef XEEN_DIALOGS_H
|
||||
#define XEEN_DIALOGS_H
|
||||
|
||||
#include "common/array.h"
|
||||
#include "common/stack.h"
|
||||
#include "common/rect.h"
|
||||
#include "xeen/xeen.h"
|
||||
|
||||
namespace Xeen {
|
||||
|
||||
class DialogButton {
|
||||
public:
|
||||
Common::Rect _bounds;
|
||||
SpriteResource *_sprites;
|
||||
char _c;
|
||||
bool _draw;
|
||||
|
||||
DialogButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw) :
|
||||
_bounds(bounds), _c(c), _sprites(sprites), _draw(draw) {}
|
||||
|
||||
DialogButton() : _c('\0'), _sprites(nullptr), _draw(false) {}
|
||||
};
|
||||
|
||||
class Dialog {
|
||||
private:
|
||||
Common::Stack< Common::Array<DialogButton> > _savedButtons;
|
||||
protected:
|
||||
XeenEngine *_vm;
|
||||
Common::Array<DialogButton> _buttons;
|
||||
char _key;
|
||||
|
||||
virtual void doScroll(bool drawFlag, bool doFade);
|
||||
|
||||
void checkEvents();
|
||||
public:
|
||||
Dialog(XeenEngine *vm): _vm(vm), _key('\0') {}
|
||||
|
||||
void saveButtons();
|
||||
|
||||
void clearButtons();
|
||||
|
||||
void restoreButtons();
|
||||
|
||||
void addButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw);
|
||||
};
|
||||
|
||||
class SettingsBaseDialog : public Dialog {
|
||||
protected:
|
||||
virtual void showContents(SpriteResource &title1, bool mode);
|
||||
public:
|
||||
SettingsBaseDialog(XeenEngine *vm) : Dialog(vm) {}
|
||||
};
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
||||
#endif /* XEEN_DIALOGS_H */
|
@ -21,65 +21,10 @@
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "xeen/menus.h"
|
||||
#include "xeen/dialogs_options.h"
|
||||
|
||||
namespace Xeen {
|
||||
|
||||
/**
|
||||
* Saves the current list of buttons
|
||||
*/
|
||||
void Dialog::saveButtons() {
|
||||
_savedButtons.push(_buttons);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clears the current list of defined buttons
|
||||
*/
|
||||
void Dialog::clearButtons() {
|
||||
_buttons.clear();
|
||||
}
|
||||
|
||||
void Dialog::restoreButtons() {
|
||||
_buttons = _savedButtons.pop();
|
||||
}
|
||||
|
||||
void Dialog::addButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw = true) {
|
||||
_buttons.push_back(DialogButton(bounds, c, sprites, draw));
|
||||
}
|
||||
|
||||
void Dialog::checkEvents() {
|
||||
EventsManager &events = *_vm->_events;
|
||||
events.pollEventsAndWait();
|
||||
|
||||
if (events._leftButton) {
|
||||
// Check whether any button is selected
|
||||
events.debounceMouse();
|
||||
Common::Point pt = events._mousePos;
|
||||
|
||||
for (uint i = 0; i < _buttons.size(); ++i) {
|
||||
if (_buttons[i]._bounds.contains(pt)) {
|
||||
_key = _buttons[i]._c;
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (events.isKeyPending()) {
|
||||
Common::KeyState keyState;
|
||||
events.getKey(keyState);
|
||||
if (keyState.ascii >= 32 && keyState.ascii <= 127) {
|
||||
_key = keyState.ascii;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
void SettingsBaseDialog::showContents(SpriteResource &title1, bool waitFlag) {
|
||||
checkEvents();
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
void OptionsMenu::show(XeenEngine *vm) {
|
||||
OptionsMenu *menu;
|
||||
|
||||
@ -126,22 +71,30 @@ void OptionsMenu::execute() {
|
||||
warning("TODO: Read existing save file");
|
||||
}
|
||||
|
||||
showTitles1(title1Sprites);
|
||||
showTitles2();
|
||||
|
||||
clearButtons();
|
||||
setupButtons(&title2Sprites);
|
||||
openWindow();
|
||||
|
||||
while (!_vm->shouldQuit()) {
|
||||
showTitles1(title1Sprites);
|
||||
showTitles2();
|
||||
// Show the dialog with a continually animating background
|
||||
while (!_vm->shouldQuit() && _key == '\0')
|
||||
showContents(title1Sprites, true);
|
||||
if (_vm->shouldQuit())
|
||||
return;
|
||||
|
||||
reopen:
|
||||
clearButtons();
|
||||
setupButtons(&title2Sprites);
|
||||
openWindow();
|
||||
|
||||
while (!_vm->shouldQuit()) {
|
||||
// Show the dialog with a continually animating background
|
||||
while (!_vm->shouldQuit() && _key == Common::KEYCODE_INVALID)
|
||||
showContents(title1Sprites, true);
|
||||
if (_vm->shouldQuit())
|
||||
return;
|
||||
// Handle keypress
|
||||
switch (toupper(_key)) {
|
||||
case 'C':
|
||||
case 'V':
|
||||
// Show credits
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_key = '\0';
|
||||
}
|
||||
}
|
||||
}
|
@ -20,58 +20,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef XEEN_MENUS_H
|
||||
#define XEEN_MENUS_H
|
||||
#ifndef XEEN_DIALOGS_OPTIONS_H
|
||||
#define XEEN_DIALOGS_OPTIONS_H
|
||||
|
||||
#include "common/array.h"
|
||||
#include "common/stack.h"
|
||||
#include "common/rect.h"
|
||||
#include "xeen/xeen.h"
|
||||
#include "xeen/dialogs.h"
|
||||
|
||||
namespace Xeen {
|
||||
|
||||
class DialogButton {
|
||||
public:
|
||||
Common::Rect _bounds;
|
||||
SpriteResource *_sprites;
|
||||
char _c;
|
||||
bool _draw;
|
||||
|
||||
DialogButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw) :
|
||||
_bounds(bounds), _c(c), _sprites(sprites), _draw(draw) {}
|
||||
|
||||
DialogButton() : _c('\0'), _sprites(nullptr), _draw(false) {}
|
||||
};
|
||||
|
||||
class Dialog {
|
||||
private:
|
||||
Common::Stack< Common::Array<DialogButton> > _savedButtons;
|
||||
protected:
|
||||
XeenEngine *_vm;
|
||||
Common::Array<DialogButton> _buttons;
|
||||
char _key;
|
||||
|
||||
virtual void doScroll(bool drawFlag, bool doFade);
|
||||
|
||||
void checkEvents();
|
||||
public:
|
||||
Dialog(XeenEngine *vm): _vm(vm), _key('\0') {}
|
||||
|
||||
void saveButtons();
|
||||
|
||||
void clearButtons();
|
||||
|
||||
void restoreButtons();
|
||||
|
||||
void addButton(const Common::Rect &bounds, char c, SpriteResource *sprites, bool draw);
|
||||
};
|
||||
|
||||
class SettingsBaseDialog : public Dialog {
|
||||
protected:
|
||||
virtual void showContents(SpriteResource &title1, bool mode);
|
||||
public:
|
||||
SettingsBaseDialog(XeenEngine *vm) : Dialog(vm) {}
|
||||
};
|
||||
class OptionsMenu : public SettingsBaseDialog {
|
||||
private:
|
||||
void execute();
|
||||
@ -130,4 +86,4 @@ public:
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
||||
#endif /* XEEN_MENUS_H */
|
||||
#endif /* XEEN_DIALOGS_H */
|
@ -6,9 +6,10 @@ MODULE_OBJS := \
|
||||
worldofxeen\worldofxeen_game.o \
|
||||
debugger.o \
|
||||
detection.o \
|
||||
dialogs.o \
|
||||
dialogs_options.o \
|
||||
events.o \
|
||||
font.o \
|
||||
menus.o \
|
||||
resdata.o \
|
||||
resources.o \
|
||||
screen.o \
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "graphics/scaler.h"
|
||||
#include "graphics/thumbnail.h"
|
||||
#include "xeen/xeen.h"
|
||||
#include "xeen/menus.h"
|
||||
#include "xeen/dialogs_options.h"
|
||||
#include "xeen/resources.h"
|
||||
|
||||
namespace Xeen {
|
||||
|
Loading…
x
Reference in New Issue
Block a user