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
|
// Include-Datei
#include "missile.h"
#include <vector>
using namespace std;
vector<int> iFrameElement;
bool bFrameElementClicked = false;
// ...
// globale Variablen
bool g_bStartGame = FALSE;
int iFrameElemente[] = {115};
int isizeFrameElemente = (sizeof(iFrameElemente)/sizeof(iFrameElemente[0]));
int isizeFrameElement = (sizeof(iFrameElemente)/sizeof(iFrameElement[0]));
// Neuen Eintrag...
void newNumberOfIframeEntry(int iNewNumber) {
if(iNewNumber != 0) {
if(isizeFrameElement == iNewNumber) {}
else if(isizeFrameElement > iNewNumber) {
for(int a;isizeFrameElement == iNewNumber;a++) {
iFrameElement.resize(isizeFrameElement-1);
}
}
else {
for(int b;isizeFrameElement == iNewNumber;b++) {
iFrameElement.resize(isizeFrameElement+1);
}
}
}
else {
iFrameElement.resize(1);
iFrameElement[0] = 0;
}
}
// ...
// Lädt den Spielzustand
tbResult CMainMenu::Load()
{
// aktuelle IFrame-Elemente auf NULL setzen...
iFrameElement.resize(1);
iFrameElement[0] = 0;
// Die Menüeinräge aus der lang.ini laden
GetPrivateProfileString("MainMenu","StartGameButtonText","Default",g_pMissile->m_pMainMenu->m_cStartGameButtonText,sizeof(g_pMissile->m_pMainMenu->m_cStartGameButtonText),".\\data\\lang.ini");
GetPrivateProfileString("MainMenu","MultiplayerButtonText","Default",g_pMissile->m_pMainMenu->m_cMultiplayerButtonText,sizeof(g_pMissile->m_pMainMenu->m_cMultiplayerButtonText),".\\data\\lang.ini");
GetPrivateProfileString("MainMenu","CampaignButtonText","Default",g_pMissile->m_pMainMenu->m_cCampaignButtonText,sizeof(g_pMissile->m_pMainMenu->m_cCampaignButtonText),".\\data\\lang.ini");
GetPrivateProfileString("MainMenu","HelpButtonText","Default",g_pMissile->m_pMainMenu->m_cHelpButtonText,sizeof(g_pMissile->m_pMainMenu->m_cHelpButtonText),".\\data\\lang.ini");
GetPrivateProfileString("MainMenu","OptionButtonText","Default",g_pMissile->m_pMainMenu->m_cOptionButtonText,sizeof(g_pMissile->m_pMainMenu->m_cOptionButtonText),".\\data\\lang.ini");
GetPrivateProfileString("MainMenu","EndGameButtonText","Default",g_pMissile->m_pMainMenu->m_cEndGameButtonText,sizeof(g_pMissile->m_pMainMenu->m_cEndGameButtonText),".\\data\\lang.ini");
// ...
float fButtonSpace = 65.0f;
// Benutzeroberfläche erstellen
// Erste Seite
m_pGUI->CreateFrame(100, 0, tbVector2(10.0f, 10.0f), tbVector2(780.0f, 580.0f));
m_pGUI->CreateButton(101, 0, tbVector2(fButtonSpace, 50.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cStartGameButtonText));
m_pGUI->CreateButton(102, 0, tbVector2(fButtonSpace-10, 120.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cMultiplayerButtonText));
m_pGUI->CreateButton(103, 0, tbVector2(fButtonSpace-25, 190.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cCampaignButtonText));
m_pGUI->CreateButton(104, 0, tbVector2(fButtonSpace-40, 260.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cHelpButtonText));
m_pGUI->CreateButton(105, 0, tbVector2(fButtonSpace-50, 330.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cOptionButtonText));
m_pGUI->CreateButton(106, 0, tbVector2(fButtonSpace, 400.0f), tbVector2(140.0f, 50.0f), (char*)(&g_pMissile->m_pMainMenu->m_cEndGameButtonText));
m_pGUI->CreateFrame(104, 0, tbVector2(230.0f, 50.0f), tbVector2(520.0f, 510.0f));
m_pGUI->CreateText(125, 2, tbVector2(20.0f, 20.0f), "The Creator of this Game:\n\n\nChristopher Schmidt\n\nVisit also my Hompage, http://www,chrissi-in-the-web.de");
m_pGUI->CreateButton(121, 2, tbVector2(250.0f, 500.0f), tbVector2(80.0f, 50.0f), (char*)(&g_pMissile->m_cBackButtonText));
// Der Hilfetext
m_pGUI->CreateText(115, 0, tbVector2(235.0f, 55.0f), (char*)(&g_pMissile->m_cHelpText));
// Erste Seite ist aktiv
m_pGUI->SetCurrentPage(0);
g_bStartGame = FALSE;
return TB_OK;
}
// ...
// Bewegt den Spielzustand
tbResult CMainMenu::Move(float fTime)
{
if(iFrameElement[0] != 0) {
for(int b = 0; b<isizeFrameElemente; b++) {
for(int c = 0; c<isizeFrameElement; c++) {
if(iFrameElemente[b] == iFrameElement[c]) {
m_pGUI->GetElement(iFrameElemente[b])->Show(TRUE); }
else {
m_pGUI->GetElement(iFrameElemente[b])->Show(FALSE); }
}
}
}
else {
for(int c = 0; c<isizeFrameElemente; c++) {
m_pGUI->GetElement(iFrameElemente[c])->Show(FALSE);
}
}
// Benutzeroberfläche bewegen
m_pGUI->Move(fTime, g_pbButtons, g_pfButtons);
// ...
// Nachrichtenfunktion für das Hauptmenü
tbResult MainMenuMsgProc(int iID,
tbGUIMessage* pMsg,
tbGUI* pGUI)
{
switch(pMsg->Type)
{
case TB_GMT_ELEMENTCLICKED:
switch(iID)
{
// Spiel Beenden
case 106: PostQuitMessage(0); break;
// Hilfe anzeigen
case 104: if(bFrameElementClicked != true) {bFrameElementClicked = true; newNumberOfIframeEntry(1); iFrameElement[0] = 115;} else {bFrameElementClicked = false; newNumberOfIframeEntry(0);} break;
// Zurück-Button des Credit-Screen
case 121: pGUI->SetCurrentPage(0); break;
}
}
return TB_OK;
}
|