OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
cl_uidmbox.h
1/*
2===========================================================================
3Copyright (C) 2015-2024 the OpenMoHAA team
4
5This file is part of OpenMoHAA source code.
6
7OpenMoHAA source code is free software; you can redistribute it
8and/or modify it under the terms of the GNU General Public License as
9published by the Free Software Foundation; either version 2 of the License,
10or (at your option) any later version.
11
12OpenMoHAA source code is distributed in the hope that it will be
13useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with OpenMoHAA source code; if not, write to the Free Software
19Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20===========================================================================
21*/
22
23#pragma once
24
25static constexpr unsigned int DMBOX_ITEM_FLAG_BOLD = 2u;
26static constexpr unsigned int DMBOX_ITEM_FLAG_DEATH = 4u;
27
28typedef enum { box_moving_out, box_moving_in, box_out, box_in } boxstate_t;
29
30class UIDMBox : public UIWidget {
31 struct item_t {
32 str string;
33 UColor color;
34 UIFont* font;
35 int flags;
36 };
37
38protected:
39 item_t m_items[ 10 ];
40 int m_numitems;
41 bool m_reallyshown;
42 UIFont *m_fontbold;
43 bool m_boxmovingout;
44 boxstate_t m_boxstate;
45 int m_boxtime;
46 int m_movespeed;
47 int m_iBeginDecay;
48 int m_iEndDecay;
49 // Added in OPM
50 bool m_drawoutline;
51
52public:
53 CLASS_PROTOTYPE( UIDMBox );
54
55protected:
56 void VerifyBoxOut( void );
57 void ChangeBoxState( boxstate_t state );
58 void HandleBoxMoving( void );
59 void PostMoveinEvent( void );
60 void PostDecayEvent( void );
61 void setShowState( void );
62 void RemoveTopItem( void );
63 str CalculateBreaks( UIFont *font, str text, float max_width );
64 float PrintWrap( UIFont *font, float x, float y , str text );
65 float DrawItem( item_t *in, float x, float y, float alpha );
66
67public:
68 UIDMBox();
69
70 void Print( const char *text );
71 void OnSizeChanged( Event *ev );
72 void Create( const UIRect2D& rect, const UColor& fore, const UColor& back, float alpha );
73 void MoveInEvent( Event *ev );
74 void DecayEvent( Event *ev );
75 void Draw( void ) override;
76 void setRealShow( bool b );
77 void Clear( void );
78};
Definition listener.h:246
Definition ucolor.h:25
Definition uifont.h:40
Definition uirect2d.h:28
Definition str.h:77
Definition puff.c:88