summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/MenuScreen.h
blob: aea0de133c37fd360b22bbec668f167dc1b19ead (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

    AUTHOR:       John DiCamillo

*/

#ifndef MenuScreen_h
#define MenuScreen_h

#include "Types.h"
#include "Bitmap.h"
#include "Screen.h"
#include "BaseScreen.h"

// +--------------------------------------------------------------------+

class MenuDlg;
class AudDlg;
class VidDlg;
class OptDlg;
class CtlDlg;
class JoyDlg;
class KeyDlg;
class ExitDlg;
class ConfirmDlg;

class FirstTimeDlg;
class PlayerDlg;
class AwardShowDlg;

class MsnSelectDlg;
class CmpSelectDlg;
class ModDlg;
class ModInfoDlg;
class MsnEditDlg;
class MsnElemDlg;
class MsnEventDlg;

class NetClientDlg;
class NetAddrDlg;
class NetPassDlg;
class NetLobbyDlg;
class NetServerDlg;
class NetUnitDlg;

class LoadDlg;
class TacRefDlg;

class ActiveWindow;
class Bitmap;
class DataLoader;
class FadeView;
class Font;
class FormWindow;
class Screen;
class Video;
class VideoFactory;
class Window;

// +--------------------------------------------------------------------+

class MenuScreen : public BaseScreen
{
public:
    MenuScreen();
    virtual ~MenuScreen();

    virtual void   Setup(Screen* screen);
    virtual void   TearDown();
    virtual bool   CloseTopmost();

    virtual bool   IsShown()         const { return isShown;       }
    virtual void   Show();
    virtual void   Hide();

    virtual void   ExecFrame();

    virtual void   ShowMenuDlg();
    virtual void   ShowCmpSelectDlg();
    virtual void   ShowMsnSelectDlg();
    virtual void   ShowModDlg();
    virtual void   ShowModInfoDlg();
    virtual void   ShowMsnEditDlg();
    virtual void   ShowNetClientDlg();
    virtual void   ShowNetAddrDlg();
    virtual void   ShowNetPassDlg();
    virtual void   ShowNetLobbyDlg();
    virtual void   ShowNetServerDlg();
    virtual void   ShowNetUnitDlg();
    virtual void   ShowFirstTimeDlg();
    virtual void   ShowPlayerDlg();
    virtual void   ShowTacRefDlg();
    virtual void   ShowAwardDlg();
    virtual void   ShowAudDlg();
    virtual void   ShowVidDlg();
    virtual void   ShowOptDlg();
    virtual void   ShowCtlDlg();
    virtual void   ShowJoyDlg();
    virtual void   ShowKeyDlg();
    virtual void   ShowExitDlg();
    virtual void   ShowConfirmDlg();
    virtual void   HideConfirmDlg();
    virtual void   ShowLoadDlg();
    virtual void   HideLoadDlg();

    // base screen interface:
    virtual void            ShowMsnElemDlg();
    virtual void            HideMsnElemDlg();
    virtual MsnElemDlg*     GetMsnElemDlg()   { return msnElemDlg;    }

    virtual void            ShowMsnEventDlg();
    virtual void            HideMsnEventDlg();
    virtual MsnEventDlg*    GetMsnEventDlg()  { return msnEventDlg;   }

    virtual void            ShowNavDlg();
    virtual void            HideNavDlg();
    virtual bool            IsNavShown();
    virtual NavDlg*         GetNavDlg()       { return msnEditNavDlg; }

    virtual MsnSelectDlg*   GetMsnSelectDlg() const { return msnSelectDlg;  }
    virtual ModDlg*         GetModDlg()       const { return modDlg;        }
    virtual ModInfoDlg*     GetModInfoDlg()   const { return modInfoDlg;    }
    virtual MsnEditDlg*     GetMsnEditDlg()   const { return msnEditDlg;    }
    virtual NetClientDlg*   GetNetClientDlg() const { return netClientDlg;  }
    virtual NetAddrDlg*     GetNetAddrDlg()   const { return netAddrDlg;    }
    virtual NetPassDlg*     GetNetPassDlg()   const { return netPassDlg;    }
    virtual NetLobbyDlg*    GetNetLobbyDlg()  const { return netLobbyDlg;   }
    virtual NetServerDlg*   GetNetServerDlg() const { return netServerDlg;  }
    virtual NetUnitDlg*     GetNetUnitDlg()   const { return netUnitDlg;    }
    virtual LoadDlg*        GetLoadDlg()      const { return loadDlg;       }
    virtual TacRefDlg*      GetTacRefDlg()    const { return tacRefDlg;     }

    virtual AudDlg*         GetAudDlg()       const { return auddlg;        }
    virtual VidDlg*         GetVidDlg()       const { return viddlg;        }
    virtual OptDlg*         GetOptDlg()       const { return optdlg;        }
    virtual CtlDlg*         GetCtlDlg()       const { return ctldlg;        }
    virtual JoyDlg*         GetJoyDlg()       const { return joydlg;        }
    virtual KeyDlg*         GetKeyDlg()       const { return keydlg;        }
    virtual ExitDlg*        GetExitDlg()      const { return exitdlg;       }
    virtual FirstTimeDlg*   GetFirstTimeDlg() const { return firstdlg;      }
    virtual PlayerDlg*      GetPlayerDlg()    const { return playdlg;       }
    virtual AwardShowDlg*   GetAwardDlg()     const { return awarddlg;      }
    virtual ConfirmDlg*     GetConfirmDlg()   const { return confirmdlg;    }

    virtual void            ApplyOptions();
    virtual void            CancelOptions();

private:
    void           HideAll();

    Screen*        screen;
    MenuDlg*       menudlg;

    Window*        fadewin;
    FadeView*      fadeview;
    ExitDlg*       exitdlg;
    AudDlg*        auddlg;
    VidDlg*        viddlg;
    OptDlg*        optdlg;
    CtlDlg*        ctldlg;
    JoyDlg*        joydlg;
    KeyDlg*        keydlg;
    ConfirmDlg*    confirmdlg;
    PlayerDlg*     playdlg;
    AwardShowDlg*  awarddlg;
    ModDlg*        modDlg;
    ModInfoDlg*    modInfoDlg;
    MsnSelectDlg*  msnSelectDlg;
    MsnEditDlg*    msnEditDlg;
    MsnElemDlg*    msnElemDlg;
    MsnEventDlg*   msnEventDlg;
    NavDlg*        msnEditNavDlg;
    LoadDlg*       loadDlg;
    TacRefDlg*     tacRefDlg;

    CmpSelectDlg*  cmpSelectDlg;
    FirstTimeDlg*  firstdlg;
    NetClientDlg*  netClientDlg;
    NetAddrDlg*    netAddrDlg;
    NetPassDlg*    netPassDlg;
    NetLobbyDlg*   netLobbyDlg;
    NetServerDlg*  netServerDlg;
    NetUnitDlg*    netUnitDlg;

    FormWindow*    current_dlg;
    DataLoader*    loader;

    int            wc, hc;
    bool           isShown;
};

// +--------------------------------------------------------------------+

#endif  // MenuScreen_h