22 #ifndef ULTIMA0_EVENTS_H 23 #define ULTIMA0_EVENTS_H 25 #include "common/array.h" 26 #include "common/stack.h" 27 #include "graphics/screen.h" 28 #include "ultima/ultima0/messages.h" 29 #include "ultima/ultima0/gfx/gfx_surface.h" 35 #define FRAME_DELAY (1000 / FRAME_RATE) 60 void setBorderSize(
size_t borderSize);
61 size_t borderSize()
const {
65 return _bounds.
width();
67 int16 height()
const {
84 bool _needsRedraw =
true;
90 void delaySeconds(uint seconds);
95 void delayFrames(uint frames);
101 return _timeoutCtr != 0;
114 virtual void timeout();
154 virtual void close();
159 bool isFocused()
const;
171 void replaceView(
UIElement *ui,
bool replaceAllViews =
false);
172 void replaceView(
const Common::String &name,
bool replaceAllViews =
false);
187 int getRandomNumber(
int minNumber,
int maxNumber);
188 int getRandomNumber(
int maxNumber);
212 virtual void clearSurface();
239 return msgMouseMove(msg);
242 #define MESSAGE(NAME) \ 244 virtual bool msg##NAME(const NAME##Message &e) { \ 245 for (Common::Array<UIElement *>::iterator it = _children.begin(); \ 246 it != _children.end(); ++it) { \ 247 if ((*it)->msg##NAME(e)) return true; \ 252 bool send(const Common::String &viewName, const NAME##Message &msg) { \ 253 UIElement *view = UIElement::findViewGlobally(viewName); \ 255 return view->msg##NAME(msg); \ 257 bool send(const NAME##Message &msg) { \ 258 return msg##NAME(msg); \ 294 virtual bool shouldQuit()
const = 0;
299 #define MESSAGE(NAME) \ 300 bool msg##NAME(const NAME##Message &e) override { \ 301 return !_views.empty() ? focusedView()->msg##NAME(e) : false; \ 325 void replaceView(
UIElement *ui,
bool replaceAllViews =
false);
326 void replaceView(
const Common::String &name,
bool replaceAllViews =
false);
355 return _views.empty() ? nullptr : _views.top();
362 return _views.size() < 2 ? nullptr :
363 _views[_views.size() - 2];
376 return isPresent(
"Combat");
391 focusedView()->drawElements();
397 void addKeypress(
const Common::KeyCode kc);
409 return !_views.empty() ? focusedView()->tick() :
false;
416 focusedView()->close();
void cancelDelay()
Definition: events.h:107
void close() override
Definition: events.h:415
Graphics::Screen * getScreen() const
Definition: events.h:382
bool needsRedraw() const
Definition: events.h:136
Common::Rect getBounds() const
Definition: events.h:200
Common::String getName() const
Definition: events.h:164
bool isDelayActive() const
Definition: events.h:100
UIElement * priorView() const
Definition: events.h:361
UIElement * focusedView() const
Definition: events.h:354
bool isInCombat() const
Definition: events.h:375
T width() const
Definition: rect.h:217
Definition: messages.h:58
void draw() override
Definition: events.h:402
Definition: detection.h:27
T height() const
Definition: rect.h:218
void drawElements()
Definition: events.h:389
bool tick() override
Definition: events.h:408
virtual void setBounds(const Common::Rect &r)
Definition: events.h:193
Definition: gfx_surface.h:33
virtual bool msgMouseMove(const MouseMoveMessage &msg)
Definition: events.h:234