Implement RPG / Free Roam gametype. Next step is to remove scoring under this type...
[voretournament/voretournament.git] / data / qcsrc / menu / voret / dialog_multiplayer_create_mapinfo.c
1 #ifdef INTERFACE\r
2 CLASS(VoretMapInfoDialog) EXTENDS(VoretDialog)\r
3         METHOD(VoretMapInfoDialog, fill, void(entity))\r
4         METHOD(VoretMapInfoDialog, loadMapInfo, void(entity, float, entity))\r
5         ATTRIB(VoretMapInfoDialog, title, string, "Map Information")\r
6         ATTRIB(VoretMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO)\r
7         ATTRIB(VoretMapInfoDialog, intendedWidth, float, 0.85)\r
8         ATTRIB(VoretMapInfoDialog, rows, float, 9)\r
9         ATTRIB(VoretMapInfoDialog, columns, float, 10)\r
10 \r
11         ATTRIB(VoretMapInfoDialog, previewImage, entity, NULL)\r
12         ATTRIB(VoretMapInfoDialog, titleLabel, entity, NULL)\r
13         ATTRIB(VoretMapInfoDialog, authorLabel, entity, NULL)\r
14         ATTRIB(VoretMapInfoDialog, descriptionLabel, entity, NULL)\r
15         ATTRIB(VoretMapInfoDialog, featuresLabel, entity, NULL)\r
16 \r
17         ATTRIB(VoretMapInfoDialog, typeDeathmatchLabel, entity, NULL)\r
18         ATTRIB(VoretMapInfoDialog, typeTDMLabel, entity, NULL)\r
19         ATTRIB(VoretMapInfoDialog, typeLMSLabel, entity, NULL)\r
20         ATTRIB(VoretMapInfoDialog, typeArenaLabel, entity, NULL)\r
21         ATTRIB(VoretMapInfoDialog, typeDominationLabel, entity, NULL)\r
22         ATTRIB(VoretMapInfoDialog, typeKeyHuntLabel, entity, NULL)\r
23         ATTRIB(VoretMapInfoDialog, typeCTFLabel, entity, NULL)\r
24         ATTRIB(VoretMapInfoDialog, typeCALabel, entity, NULL)\r
25         ATTRIB(VoretMapInfoDialog, typeAssaultLabel, entity, NULL)\r
26         ATTRIB(VoretMapInfoDialog, typeOnslaughtLabel, entity, NULL)\r
27         ATTRIB(VoretMapInfoDialog, typeRaceLabel, entity, NULL)\r
28         ATTRIB(VoretMapInfoDialog, typeCTSLabel, entity, NULL)\r
29         ATTRIB(VoretMapInfoDialog, typeRPGLabel, entity, NULL)\r
30 \r
31         ATTRIB(VoretMapInfoDialog, currentMapIndex, float, 0)\r
32         ATTRIB(VoretMapInfoDialog, currentMapBSPName, string, string_null)\r
33         ATTRIB(VoretMapInfoDialog, currentMapTitle, string, string_null)\r
34         ATTRIB(VoretMapInfoDialog, currentMapAuthor, string, string_null)\r
35         ATTRIB(VoretMapInfoDialog, currentMapDescription, string, string_null)\r
36         ATTRIB(VoretMapInfoDialog, currentMapPreviewImage, string, string_null)\r
37         ATTRIB(VoretMapInfoDialog, currentMapFeaturesText, string, string_null)\r
38 ENDCLASS(VoretMapInfoDialog)\r
39 #endif\r
40 \r
41 #ifdef IMPLEMENTATION\r
42 void loadMapInfoVoretMapInfoDialog(entity me, float i, entity mlb)\r
43 {\r
44         me.currentMapIndex = i;\r
45         me.startButton.onClickEntity = mlb;\r
46         MapInfo_Get_ByID(i);\r
47 \r
48         if(me.currentMapBSPName)\r
49         {\r
50                 strunzone(me.currentMapBSPName);\r
51                 strunzone(me.currentMapTitle);\r
52                 strunzone(me.currentMapAuthor);\r
53                 strunzone(me.currentMapDescription);\r
54                 strunzone(me.currentMapPreviewImage);\r
55                 strunzone(me.currentMapFeaturesText);\r
56         }\r
57         me.currentMapBSPName = strzone(MapInfo_Map_bspname);\r
58         me.currentMapTitle = strzone(MapInfo_Map_title);\r
59         me.currentMapAuthor = strzone(MapInfo_Map_author);\r
60         me.currentMapDescription = strzone(MapInfo_Map_description);\r
61         me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? "Full item placement" : "MinstaGib only");\r
62         me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname));\r
63 \r
64         me.frame.setText(me.frame, me.currentMapBSPName);\r
65         me.titleLabel.setText(me.titleLabel, me.currentMapTitle);\r
66         me.authorLabel.setText(me.authorLabel, me.currentMapAuthor);\r
67         me.descriptionLabel.setText(me.descriptionLabel, me.currentMapDescription);\r
68         me.featuresLabel.setText(me.featuresLabel, me.currentMapFeaturesText);\r
69         me.previewImage.src = me.currentMapPreviewImage;\r
70 \r
71         me.typeDeathmatchLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH);\r
72         me.typeTDMLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH);\r
73         me.typeLMSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS);\r
74         me.typeArenaLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA);\r
75         me.typeDominationLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DOMINATION);\r
76         me.typeKeyHuntLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT);\r
77         me.typeCTFLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF);\r
78         me.typeCALabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CA);\r
79         me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT);\r
80         me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);\r
81         me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);\r
82         me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS);\r
83         me.typeRPGLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RPG);\r
84 \r
85         MapInfo_ClearTemps();\r
86 }\r
87 void fillVoretMapInfoDialog(entity me)\r
88 {\r
89         entity e;\r
90         float w, wgt;\r
91         me.TR(me);\r
92                 me.TDempty(me, 0.2);\r
93                 me.TD(me, me.rows - 2, 3, e = makeVoretImage(string_null, 4.0/3.0));\r
94                 me.previewImage = e;\r
95         me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);\r
96         w = me.columns - me.currentColumn;\r
97                 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Title:"));\r
98                 me.TD(me, 1, w-1, e = makeVoretTextLabel(0, ""));\r
99                         e.colorL = SKINCOLOR_MAPLIST_TITLE;\r
100                         e.allowCut = 1;\r
101                         me.titleLabel = e;\r
102         me.TR(me);\r
103                 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Author:"));\r
104                 me.TD(me, 1, w-1, e = makeVoretTextLabel(0, ""));\r
105                         e.colorL = SKINCOLOR_MAPLIST_AUTHOR;\r
106                         e.allowCut = 1;\r
107                         me.authorLabel = e;\r
108         me.TR(me);\r
109                 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Features:"));\r
110                 me.TD(me, 1, w-1, e = makeVoretTextLabel(0, ""));\r
111                         e.allowCut = 1;\r
112                         me.featuresLabel = e;\r
113         me.TR(me);\r
114                 me.TD(me, 1, w, e = makeVoretTextLabel(0, "Game types:"));\r
115         me.TR(me); wgt = (w-0.2)/5;\r
116                 me.TDempty(me, 0.2);\r
117                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "DM"));\r
118                         me.typeDeathmatchLabel = e;\r
119                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "TDM"));\r
120                         me.typeTDMLabel = e;\r
121                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "LMS"));\r
122                         me.typeLMSLabel = e;\r
123                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Arena"));\r
124                         me.typeArenaLabel = e;\r
125                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Domination"));\r
126                         me.typeDominationLabel = e;\r
127         me.TR(me);\r
128                 me.TDempty(me, 0.2);\r
129                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Key Hunt"));\r
130                         me.typeKeyHuntLabel = e;\r
131                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTF"));\r
132                         me.typeCTFLabel = e;\r
133                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CA"));\r
134                         me.typeCALabel = e;\r
135                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Assault"));\r
136                         me.typeAssaultLabel = e;\r
137                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Onslaught"));\r
138                         me.typeOnslaughtLabel = e;\r
139         me.TR(me);\r
140                 me.TDempty(me, 0.2);\r
141                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Race"));\r
142                         me.typeRaceLabel = e;\r
143                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTS"));\r
144                         me.typeCTSLabel = e;\r
145                 me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "RPG"));\r
146                         me.typeRPGLabel = e;\r
147 \r
148         me.gotoRC(me, me.rows - 2, 0);\r
149                 me.TD(me, 1, me.columns, e = makeVoretTextLabel(0.5, ""));\r
150                         e.allowCut = 1;\r
151                         me.descriptionLabel = e;\r
152 \r
153         me.gotoRC(me, me.rows - 1, 0);\r
154                 me.TDempty(me, 0.5);\r
155 \r
156                 me.TD(me, 1, me.columns - 5.5, e = makeVoretButton("Close", '0 0 0'));\r
157                         e.onClick = Dialog_Close;\r
158                         e.onClickEntity = me;\r
159                 me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeVoretButton("Play", '0 0 0'));\r
160                         me.startButton.onClick = MapList_LoadMap;\r
161                         me.startButton.onClickEntity = NULL; // filled later\r
162                 me.TDempty(me, 0.5);\r
163 }\r
164 #endif\r