1 /////////////////////////////////////////
2 //
3 // OpenLieroX
4 //
5 // code under LGPL, based on JasonBs work,
6 // enhanced by Dark Charlie and Albert Zeyer
7 //
8 //
9 /////////////////////////////////////////
10
11
12 // Net menu - News
13 // Created 12/8/02
14 // Jason Boettcher
15
16
17 #include "LieroX.h"
18 #include "FindFile.h"
19 #include "Sounds.h"
20 #include "DeprecatedGUI/Graphics.h"
21 #include "DeprecatedGUI/Menu.h"
22 #include "GfxPrimitives.h"
23 #include "DeprecatedGUI/CButton.h"
24 #include "DeprecatedGUI/CBrowser.h"
25 #include "DeprecatedGUI/CListview.h"
26 #include "HTTP.h"
27 #include "StringUtils.h"
28 #include "AuxLib.h"
29
30
31 namespace DeprecatedGUI {
32
33 static CGuiLayout cNews;
34 std::string strNewsPage;
35
36 enum {
37 nw_Back = 0,
38 nw_NewsBrowser,
39 nw_Refresh,
40 };
41
42
43 ///////////////////
44 // Initialize the news net menu
Menu_Net_NewsInitialize()45 bool Menu_Net_NewsInitialize()
46 {
47 iNetMode = net_news;
48
49 // Setup the gui layout
50 cNews.Shutdown();
51 cNews.Initialize();
52
53 cNews.Add( new CButton(BUT_BACK, tMenu->bmpButtons), nw_Back, 25,440, 50,15);
54 cNews.Add( new CButton(BUT_REFRESH, tMenu->bmpButtons), nw_Refresh, 520,440, 50,15);
55 cNews.Add( new CBrowser(), nw_NewsBrowser, 50, 160, 540, 260);
56
57 Menu_Net_AddTabBarButtons(&cNews);
58
59 // Get the news page
60 FILE *fp = OpenGameFile("cfg/newsserver.txt", "r");
61 if (fp) {
62 strNewsPage = ReadUntil(fp, '\n');
63 fclose(fp);
64 } else {
65 strNewsPage = "http://openlierox.sourceforge.net/news.php"; // Default
66 }
67
68 // Load the news
69 CBrowser *b = (CBrowser *)cNews.getWidget(nw_NewsBrowser);
70 b->LoadFromHTTP(strNewsPage);
71
72
73 return true;
74 }
75
76 //////////////////
77 // Shutdown the news menu
Menu_Net_NewsShutdown()78 void Menu_Net_NewsShutdown()
79 {
80 cNews.Shutdown();
81 }
82
83
84 ///////////////////
85 // The net news menu frame
Menu_Net_NewsFrame(int mouse)86 void Menu_Net_NewsFrame(int mouse)
87 {
88 gui_event_t *ev = NULL;
89
90 // Process the HTTP transfer
91 CBrowser *news = (CBrowser *)cNews.getWidget(nw_NewsBrowser);
92 news->ProcessHTTP();
93
94
95 // Process & Draw the gui
96 ev = cNews.Process();
97 cNews.Draw( VideoPostProcessor::videoSurface() );
98
99 if (Menu_Net_ProcessTabBarButtons(ev))
100 return;
101
102 // Process any events
103 if(ev) {
104
105 switch(ev->iControlID) {
106
107 // Back
108 case nw_Back:
109 if(ev->iEventMsg == BTN_CLICKED) {
110
111 // Click!
112 PlaySoundSample(sfxGeneral.smpClick);
113
114 // Shutdown
115 Menu_Net_NewsShutdown();
116
117 // Back to main menu
118 Menu_MainInitialize();
119 }
120 break;
121
122 // Update
123 case nw_Refresh:
124 if(ev->iEventMsg == BTN_CLICKED) {
125
126 // Click!
127 PlaySoundSample(sfxGeneral.smpClick);
128
129 ((CBrowser *)cNews.getWidget(nw_NewsBrowser))->LoadFromHTTP(strNewsPage);
130 }
131 break;
132 }
133
134 }
135
136
137 // Draw the mouse
138 DrawCursor(VideoPostProcessor::videoSurface());
139 }
140
141 }; // namespace DeprecatedGUI
142