aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-04-30 19:02:35 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-04-30 19:02:35 +0200
commit6307feb53d978cbf7f50df26a7b0bc63252cfbd4 (patch)
tree5e66f3d573dcdcb12b1c244c4b03b6c184241670
parent071162febcf763b153fe44ca8be5ed94551f3738 (diff)
downloadstalag-6307feb53d978cbf7f50df26a7b0bc63252cfbd4.tar.gz
Title screen and direct map load with --map param
-rw-r--r--all.h10
-rw-r--r--game.c80
-rw-r--r--main.c35
-rw-r--r--maps/demo3.map204
-rw-r--r--trenchbroom/stalag/GameEngineProfiles.cfg4
5 files changed, 305 insertions, 28 deletions
diff --git a/all.h b/all.h
index 048750a..6c17f7f 100644
--- a/all.h
+++ b/all.h
@@ -82,7 +82,14 @@ typedef enum {
82 MOVE_FLY 82 MOVE_FLY
83} MovementMode; 83} MovementMode;
84 84
85typedef enum {
86 STATE_TITLE,
87 STATE_PLAYING
88} GameStateMode;
89
85typedef struct { 90typedef struct {
91 GameStateMode mode;
92 char map_path[256];
86 Camera camera; 93 Camera camera;
87 Model *world_models; 94 Model *world_models;
88 int world_model_count; 95 int world_model_count;
@@ -124,7 +131,8 @@ Vector2 GetUV(Vector3 p, MapPlane *mp, Plane plane);
124 131
125// Game 132// Game
126Texture2D GetTexture(const char *name); 133Texture2D GetTexture(const char *name);
127void InitGame(const char *map_path); 134void InitGame(void);
135void SetMap(const char *path);
128void UpdateGame(void); 136void UpdateGame(void);
129void DrawGame(void); 137void DrawGame(void);
130bool LoadMap(const char *filename); 138bool LoadMap(const char *filename);
diff --git a/game.c b/game.c
index 87fea13..19a1875 100644
--- a/game.c
+++ b/game.c
@@ -223,7 +223,7 @@ bool LoadMap(const char *filename) {
223 return true; 223 return true;
224} 224}
225 225
226void InitGame(const char* map_path) { 226void InitGame(void) {
227 array_init(texture_cache); 227 array_init(texture_cache);
228 game.world_models = NULL; 228 game.world_models = NULL;
229 game.world_model_count = 0; 229 game.world_model_count = 0;
@@ -238,7 +238,7 @@ void InitGame(const char* map_path) {
238 game.font_ui = GetFontDefault(); 238 game.font_ui = GetFontDefault();
239 } 239 }
240 240
241 LoadMap(map_path); 241 game.mode = STATE_TITLE;
242 242
243 game.cursor_captured = false; 243 game.cursor_captured = false;
244 EnableCursor(); 244 EnableCursor();
@@ -248,7 +248,21 @@ void InitGame(const char* map_path) {
248 game.is_grounded = false; 248 game.is_grounded = false;
249} 249}
250 250
251void SetMap(const char *path) {
252 strncpy(game.map_path, path, sizeof(game.map_path) - 1);
253 game.map_path[sizeof(game.map_path) - 1] = '\0';
254}
255
251void UpdateGame(void) { 256void UpdateGame(void) {
257 if (game.mode == STATE_TITLE) {
258 if (IsKeyPressed(KEY_ENTER)) {
259 if (LoadMap(game.map_path)) {
260 game.mode = STATE_PLAYING;
261 }
262 }
263 return;
264 }
265
252 if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) { 266 if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) {
253 game.cursor_captured = !game.cursor_captured; 267 game.cursor_captured = !game.cursor_captured;
254 if (game.cursor_captured) DisableCursor(); 268 if (game.cursor_captured) DisableCursor();
@@ -257,6 +271,7 @@ void UpdateGame(void) {
257 271
258 if (IsKeyPressed(KEY_ONE)) LoadMap("maps/demo1.map"); 272 if (IsKeyPressed(KEY_ONE)) LoadMap("maps/demo1.map");
259 if (IsKeyPressed(KEY_TWO)) LoadMap("maps/demo2.map"); 273 if (IsKeyPressed(KEY_TWO)) LoadMap("maps/demo2.map");
274 if (IsKeyPressed(KEY_THREE)) LoadMap("maps/demo3.map");
260 275
261 if (IsKeyPressed(KEY_V)) { 276 if (IsKeyPressed(KEY_V)) {
262 game.vsync = !game.vsync; 277 game.vsync = !game.vsync;
@@ -274,25 +289,50 @@ void UpdateGame(void) {
274 289
275void DrawGame(void) { 290void DrawGame(void) {
276 BeginDrawing(); 291 BeginDrawing();
277 ClearBackground(DARKGRAY); 292 ClearBackground(BLACK);
278 BeginMode3D(game.camera); 293
279 294 if (game.mode == STATE_TITLE) {
280 // Enable backface culling to hide interior faces of brushes 295 int screenWidth = GetScreenWidth();
281 rlEnableBackfaceCulling(); 296 int screenHeight = GetScreenHeight();
282 for (int i = 0; i < game.world_model_count; i++) { 297
283 DrawModel(game.world_models[i], (Vector3){ 0, 0, 0 }, 1.0f, WHITE); 298 const char *title = "STALAG";
299 const char *sub = "Press ENTER to Start";
300
301 int titleSize = 60;
302 int subSize = 20;
303
304 Vector2 titlePos = {
305 (float)(screenWidth - MeasureTextEx(game.font_ui, title, (float)titleSize, 4).x) / 2,
306 (float)screenHeight / 2 - 40
307 };
308 Vector2 subPos = {
309 (float)(screenWidth - MeasureTextEx(game.font_ui, sub, (float)subSize, 2).x) / 2,
310 (float)screenHeight / 2 + 40
311 };
312
313 DrawTextEx(game.font_ui, title, titlePos, (float)titleSize, 4, WHITE);
314 DrawTextEx(game.font_ui, sub, subPos, (float)subSize, 2, GRAY);
315 } else {
316 ClearBackground(DARKGRAY);
317 BeginMode3D(game.camera);
318
319 // Enable backface culling to hide interior faces of brushes
320 rlEnableBackfaceCulling();
321 for (int i = 0; i < game.world_model_count; i++) {
322 DrawModel(game.world_models[i], (Vector3){ 0, 0, 0 }, 1.0f, WHITE);
323 }
324
325 EndMode3D();
326
327 int screenWidth = GetScreenWidth();
328 int screenHeight = GetScreenHeight();
329 DrawLine(screenWidth / 2 - 10, screenHeight / 2, screenWidth / 2 + 10, screenHeight / 2, GREEN);
330 DrawLine(screenWidth / 2, screenHeight / 2 - 10, screenWidth / 2, screenHeight / 2 + 10, GREEN);
331
332 DrawTextEx(game.font_ui, TextFormat("%i FPS", GetFPS()), (Vector2){ 10, 10 }, 20, 2, GREEN);
333 DrawTextEx(game.font_ui, TextFormat("VSync: %s", game.vsync ? "ON" : "OFF"), (Vector2){ 10, 35 }, 20, 2, GREEN);
334 DrawTextEx(game.font_ui, TextFormat("Speed: %.0f", game.horizontal_speed), (Vector2){ 10, 60 }, 20, 2, GREEN);
284 } 335 }
285
286 EndMode3D();
287
288 int screenWidth = GetScreenWidth();
289 int screenHeight = GetScreenHeight();
290 DrawLine(screenWidth / 2 - 10, screenHeight / 2, screenWidth / 2 + 10, screenHeight / 2, GREEN);
291 DrawLine(screenWidth / 2, screenHeight / 2 - 10, screenWidth / 2, screenHeight / 2 + 10, GREEN);
292
293 DrawTextEx(game.font_ui, TextFormat("%i FPS", GetFPS()), (Vector2){ 10, 10 }, 20, 2, GREEN);
294 DrawTextEx(game.font_ui, TextFormat("VSync: %s", game.vsync ? "ON" : "OFF"), (Vector2){ 10, 35 }, 20, 2, GREEN);
295 DrawTextEx(game.font_ui, TextFormat("Speed: %.0f", game.horizontal_speed), (Vector2){ 10, 60 }, 20, 2, GREEN);
296 336
297 EndDrawing(); 337 EndDrawing();
298} 338}
diff --git a/main.c b/main.c
index e89aa1a..e497e73 100644
--- a/main.c
+++ b/main.c
@@ -2,8 +2,29 @@
2#define NONSTD_IMPLEMENTATION 2#define NONSTD_IMPLEMENTATION
3#define VFS_IMPLEMENTATION 3#define VFS_IMPLEMENTATION
4#include "all.h" 4#include "all.h"
5#include <getopt.h>
6#include <string.h>
7
8int main(int argc, char *argv[]) {
9 char map_path[256] = "maps/demo3.map";
10 bool skip_title = false;
11
12 static struct option long_options[] = {
13 {"map", required_argument, 0, 'm'},
14 {0, 0, 0, 0}
15 };
16
17 int opt;
18 int option_index = 0;
19 while ((opt = getopt_long_only(argc, argv, "m:", long_options, &option_index)) != -1) {
20 switch (opt) {
21 case 'm':
22 strncpy(map_path, optarg, sizeof(map_path) - 1);
23 skip_title = true;
24 break;
25 }
26 }
5 27
6int main(void) {
7 SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI); 28 SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI);
8 InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE); 29 InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE);
9 30
@@ -14,7 +35,17 @@ int main(void) {
14 SetTargetFPS(GetMonitorRefreshRate(monitor)); 35 SetTargetFPS(GetMonitorRefreshRate(monitor));
15 36
16 vfs_init("data.pak"); 37 vfs_init("data.pak");
17 InitGame("maps/demo3.map"); 38 InitGame();
39 SetMap(map_path);
40
41 if (skip_title) {
42 if (LoadMap(game.map_path)) {
43 game.mode = STATE_PLAYING;
44 game.cursor_captured = true;
45 DisableCursor();
46 }
47 }
48
18 game.vsync = true; 49 game.vsync = true;
19 50
20 while (!WindowShouldClose()) { 51 while (!WindowShouldClose()) {
diff --git a/maps/demo3.map b/maps/demo3.map
index bdd84f5..f12f33c 100644
--- a/maps/demo3.map
+++ b/maps/demo3.map
@@ -12,21 +12,219 @@
12( 64 336 0 ) ( 65 336 0 ) ( 64 336 1 ) brushes/bricks_076c 0 -16 0 1 1 12( 64 336 0 ) ( 65 336 0 ) ( 64 336 1 ) brushes/bricks_076c 0 -16 0 1 1
13( 560 112 0 ) ( 560 112 1 ) ( 560 113 0 ) brushes/bricks_076c -48 -16 0 1 1 13( 560 112 0 ) ( 560 112 1 ) ( 560 113 0 ) brushes/bricks_076c -48 -16 0 1 1
14} 14}
15// brush 1
16{
17( -592 320 0 ) ( -592 321 0 ) ( -592 320 1 ) environment/planks_012 0 0 0 1 1
18( -592 320 0 ) ( -592 320 1 ) ( -591 320 0 ) environment/planks_012 0 0 0 1 1
19( -592 320 0 ) ( -591 320 0 ) ( -592 321 0 ) environment/planks_012 0 0 0 1 1
20( 560 336 272 ) ( 560 337 272 ) ( 561 336 272 ) environment/planks_012 0 0 0 1 1
21( 560 336 16 ) ( 561 336 16 ) ( 560 336 17 ) environment/planks_012 0 0 0 1 1
22( 560 336 16 ) ( 560 336 17 ) ( 560 337 16 ) environment/planks_012 0 0 0 1 1
23}
24// brush 2
25{
26( -592 -384 0 ) ( -592 -383 0 ) ( -592 -384 1 ) environment/planks_012 0 0 0 1 1
27( -592 -384 0 ) ( -592 -384 1 ) ( -591 -384 0 ) environment/planks_012 0 0 0 1 1
28( -592 -384 0 ) ( -591 -384 0 ) ( -592 -383 0 ) environment/planks_012 0 0 0 1 1
29( 560 -368 272 ) ( 560 -367 272 ) ( 561 -368 272 ) environment/planks_012 0 0 0 1 1
30( 560 -368 16 ) ( 561 -368 16 ) ( 560 -368 17 ) environment/planks_012 0 0 0 1 1
31( 560 -368 16 ) ( 560 -368 17 ) ( 560 -367 16 ) environment/planks_012 0 0 0 1 1
32}
33// brush 3
34{
35( -592 -368 0 ) ( -592 -367 0 ) ( -592 -368 1 ) environment/planks_012 0 0 0 1 1
36( -592 -368 0 ) ( -592 -368 1 ) ( -591 -368 0 ) environment/planks_012 0 0 0 1 1
37( -592 -368 0 ) ( -591 -368 0 ) ( -592 -367 0 ) environment/planks_012 0 0 0 1 1
38( -576 320 272 ) ( -576 321 272 ) ( -575 320 272 ) environment/planks_012 0 0 0 1 1
39( -576 320 16 ) ( -575 320 16 ) ( -576 320 17 ) environment/planks_012 0 0 0 1 1
40( -576 320 16 ) ( -576 320 17 ) ( -576 321 16 ) environment/planks_012 0 0 0 1 1
41}
42// brush 4
43{
44( 544 -368 0 ) ( 544 -367 0 ) ( 544 -368 1 ) environment/planks_012 0 0 0 1 1
45( 544 -368 0 ) ( 544 -368 1 ) ( 545 -368 0 ) environment/planks_012 0 0 0 1 1
46( 544 -368 0 ) ( 545 -368 0 ) ( 544 -367 0 ) environment/planks_012 0 0 0 1 1
47( 560 320 272 ) ( 560 321 272 ) ( 561 320 272 ) environment/planks_012 0 0 0 1 1
48( 560 320 16 ) ( 561 320 16 ) ( 560 320 17 ) environment/planks_012 0 0 0 1 1
49( 560 320 16 ) ( 560 320 17 ) ( 560 321 16 ) environment/planks_012 0 0 0 1 1
50}
51// brush 5
52{
53( -352 -352 -8 ) ( -352 -351 -8 ) ( -352 -352 -7 ) environment/paintedwood_008a -16 -8 0 1 1
54( -368 -352 -8 ) ( -368 -352 -7 ) ( -367 -352 -8 ) environment/paintedwood_008a 0 -8 0 1 1
55( -368 -352 8 ) ( -367 -352 8 ) ( -368 -351 8 ) environment/paintedwood_008a 0 16 0 1 1
56( -240 -144 24 ) ( -240 -143 24 ) ( -239 -144 24 ) environment/paintedwood_008a 0 16 0 1 1
57( -240 -144 8 ) ( -239 -144 8 ) ( -240 -144 9 ) environment/paintedwood_008a 0 -8 0 1 1
58( -240 -144 8 ) ( -240 -144 9 ) ( -240 -143 8 ) environment/paintedwood_008a -16 -8 0 1 1
59}
60// brush 6
61{
62( -256 -168 0 ) ( -256 -167 0 ) ( -256 -168 1 ) environment/planks_012 -24 0 0 1 1
63( -256 -168 0 ) ( -256 -168 1 ) ( -255 -168 0 ) environment/planks_012 0 0 0 1 1
64( -256 -168 0 ) ( -255 -168 0 ) ( -256 -167 0 ) environment/planks_012 0 24 0 1 1
65( -240 -152 8 ) ( -240 -151 8 ) ( -239 -152 8 ) environment/planks_012 0 24 0 1 1
66( -240 -152 16 ) ( -239 -152 16 ) ( -240 -152 17 ) environment/planks_012 0 0 0 1 1
67( -240 -152 16 ) ( -240 -152 17 ) ( -240 -151 16 ) environment/planks_012 -24 0 0 1 1
68}
69// brush 7
70{
71( -352 -168 0 ) ( -352 -167 0 ) ( -352 -168 1 ) environment/planks_012 -24 0 0 1 1
72( -352 -168 0 ) ( -352 -168 1 ) ( -351 -168 0 ) environment/planks_012 96 0 0 1 1
73( -352 -168 0 ) ( -351 -168 0 ) ( -352 -167 0 ) environment/planks_012 96 24 0 1 1
74( -336 -152 8 ) ( -336 -151 8 ) ( -335 -152 8 ) environment/planks_012 96 24 0 1 1
75( -336 -152 16 ) ( -335 -152 16 ) ( -336 -152 17 ) environment/planks_012 96 0 0 1 1
76( -336 -152 16 ) ( -336 -152 17 ) ( -336 -151 16 ) environment/planks_012 -24 0 0 1 1
77}
78// brush 8
79{
80( -352 -344 0 ) ( -352 -343 0 ) ( -352 -344 1 ) environment/planks_012 152 0 0 1 1
81( -352 -344 0 ) ( -352 -344 1 ) ( -351 -344 0 ) environment/planks_012 96 0 0 1 1
82( -352 -344 0 ) ( -351 -344 0 ) ( -352 -343 0 ) environment/planks_012 96 -152 0 1 1
83( -336 -328 8 ) ( -336 -327 8 ) ( -335 -328 8 ) environment/planks_012 96 -152 0 1 1
84( -336 -328 16 ) ( -335 -328 16 ) ( -336 -328 17 ) environment/planks_012 96 0 0 1 1
85( -336 -328 16 ) ( -336 -328 17 ) ( -336 -327 16 ) environment/planks_012 152 0 0 1 1
86}
87// brush 9
88{
89( -256 -344 0 ) ( -256 -343 0 ) ( -256 -344 1 ) environment/planks_012 152 0 0 1 1
90( -256 -344 0 ) ( -256 -344 1 ) ( -255 -344 0 ) environment/planks_012 0 0 0 1 1
91( -256 -344 0 ) ( -255 -344 0 ) ( -256 -343 0 ) environment/planks_012 0 -152 0 1 1
92( -240 -328 8 ) ( -240 -327 8 ) ( -239 -328 8 ) environment/planks_012 0 -152 0 1 1
93( -240 -328 16 ) ( -239 -328 16 ) ( -240 -328 17 ) environment/planks_012 0 0 0 1 1
94( -240 -328 16 ) ( -240 -328 17 ) ( -240 -327 16 ) environment/planks_012 152 0 0 1 1
95}
96// brush 10
97{
98( -328 -328 32 ) ( -344 -344 16 ) ( -344 -280 16 ) environment/roofingtiles_012b 8 -344 0 1 1
99( -272 -328 40 ) ( -256 -344 24 ) ( -352 -344 24 ) environment/roofingtiles_012b 208 -376 0 1 1
100( -256 -344 24 ) ( -256 -280 24 ) ( -352 -280 24 ) environment/roofingtiles_012b 208 24 0 1 1
101( -336 -296 32 ) ( -272 -296 32 ) ( -272 -328 32 ) environment/roofingtiles_012b 208 24 0 1 1
102( -272 -296 40 ) ( -336 -296 40 ) ( -352 -280 24 ) environment/roofingtiles_012b 208 -312 0 1 1
103( -272 -296 40 ) ( -256 -280 24 ) ( -256 -344 24 ) environment/roofingtiles_012b -80 -344 0 1 1
104}
105// brush 11
106{
107( -160 -328 32 ) ( -176 -344 16 ) ( -176 -280 16 ) environment/roofingtiles_012b -160 -344 0 1 1
108( -104 -328 40 ) ( -88 -344 24 ) ( -184 -344 24 ) environment/roofingtiles_012b 40 -376 0 1 1
109( -88 -344 24 ) ( -88 -280 24 ) ( -184 -280 24 ) environment/roofingtiles_012b 40 24 0 1 1
110( -168 -296 32 ) ( -104 -296 32 ) ( -104 -328 32 ) environment/roofingtiles_012b 40 24 0 1 1
111( -104 -296 40 ) ( -168 -296 40 ) ( -184 -280 24 ) environment/roofingtiles_012b 40 -312 0 1 1
112( -104 -296 40 ) ( -88 -280 24 ) ( -88 -344 24 ) environment/roofingtiles_012b -248 -344 0 1 1
113}
114// brush 12
115{
116( -184 -352 -8 ) ( -184 -351 -8 ) ( -184 -352 -7 ) environment/paintedwood_008a -16 -8 0 1 1
117( -200 -352 -8 ) ( -200 -352 -7 ) ( -199 -352 -8 ) environment/paintedwood_008a -168 -8 0 1 1
118( -200 -352 8 ) ( -199 -352 8 ) ( -200 -351 8 ) environment/paintedwood_008a -168 16 0 1 1
119( -72 -144 24 ) ( -72 -143 24 ) ( -71 -144 24 ) environment/paintedwood_008a -168 16 0 1 1
120( -72 -144 8 ) ( -71 -144 8 ) ( -72 -144 9 ) environment/paintedwood_008a -168 -8 0 1 1
121( -72 -144 8 ) ( -72 -144 9 ) ( -72 -143 8 ) environment/paintedwood_008a -16 -8 0 1 1
122}
123// brush 13
124{
125( 0 -328 32 ) ( -16 -344 16 ) ( -16 -280 16 ) environment/roofingtiles_012b -320 -344 0 1 1
126( 56 -328 40 ) ( 72 -344 24 ) ( -24 -344 24 ) environment/roofingtiles_012b -120 -376 0 1 1
127( 72 -344 24 ) ( 72 -280 24 ) ( -24 -280 24 ) environment/roofingtiles_012b -120 24 0 1 1
128( -8 -296 32 ) ( 56 -296 32 ) ( 56 -328 32 ) environment/roofingtiles_012b -120 24 0 1 1
129( 56 -296 40 ) ( -8 -296 40 ) ( -24 -280 24 ) environment/roofingtiles_012b -120 -312 0 1 1
130( 56 -296 40 ) ( 72 -280 24 ) ( 72 -344 24 ) environment/roofingtiles_012b -408 -344 0 1 1
131}
132// brush 14
133{
134( -24 -352 -8 ) ( -24 -351 -8 ) ( -24 -352 -7 ) environment/paintedwood_008a -16 -8 0 1 1
135( -40 -352 -8 ) ( -40 -352 -7 ) ( -39 -352 -8 ) environment/paintedwood_008a -328 -8 0 1 1
136( -40 -352 8 ) ( -39 -352 8 ) ( -40 -351 8 ) environment/paintedwood_008a -328 16 0 1 1
137( 88 -144 24 ) ( 88 -143 24 ) ( 89 -144 24 ) environment/paintedwood_008a -328 16 0 1 1
138( 88 -144 8 ) ( 89 -144 8 ) ( 88 -144 9 ) environment/paintedwood_008a -328 -8 0 1 1
139( 88 -144 8 ) ( 88 -144 9 ) ( 88 -143 8 ) environment/paintedwood_008a -16 -8 0 1 1
140}
141// brush 15
142{
143( -184 -344 0 ) ( -184 -343 0 ) ( -184 -344 1 ) environment/planks_012 152 0 0 1 1
144( -184 -344 0 ) ( -184 -344 1 ) ( -183 -344 0 ) environment/planks_012 -72 0 0 1 1
145( -184 -344 0 ) ( -183 -344 0 ) ( -184 -343 0 ) environment/planks_012 -72 -152 0 1 1
146( -168 -328 8 ) ( -168 -327 8 ) ( -167 -328 8 ) environment/planks_012 -72 -152 0 1 1
147( -168 -328 16 ) ( -167 -328 16 ) ( -168 -328 17 ) environment/planks_012 -72 0 0 1 1
148( -168 -328 16 ) ( -168 -328 17 ) ( -168 -327 16 ) environment/planks_012 152 0 0 1 1
149}
150// brush 16
151{
152( -88 -344 0 ) ( -88 -343 0 ) ( -88 -344 1 ) environment/planks_012 152 0 0 1 1
153( -88 -344 0 ) ( -88 -344 1 ) ( -87 -344 0 ) environment/planks_012 -168 0 0 1 1
154( -88 -344 0 ) ( -87 -344 0 ) ( -88 -343 0 ) environment/planks_012 -168 -152 0 1 1
155( -72 -328 8 ) ( -72 -327 8 ) ( -71 -328 8 ) environment/planks_012 -168 -152 0 1 1
156( -72 -328 16 ) ( -71 -328 16 ) ( -72 -328 17 ) environment/planks_012 -168 0 0 1 1
157( -72 -328 16 ) ( -72 -328 17 ) ( -72 -327 16 ) environment/planks_012 152 0 0 1 1
158}
159// brush 17
160{
161( -24 -344 0 ) ( -24 -343 0 ) ( -24 -344 1 ) environment/planks_012 152 0 0 1 1
162( -24 -344 0 ) ( -24 -344 1 ) ( -23 -344 0 ) environment/planks_012 -232 0 0 1 1
163( -24 -344 0 ) ( -23 -344 0 ) ( -24 -343 0 ) environment/planks_012 -232 -152 0 1 1
164( -8 -328 8 ) ( -8 -327 8 ) ( -7 -328 8 ) environment/planks_012 -232 -152 0 1 1
165( -8 -328 16 ) ( -7 -328 16 ) ( -8 -328 17 ) environment/planks_012 -232 0 0 1 1
166( -8 -328 16 ) ( -8 -328 17 ) ( -8 -327 16 ) environment/planks_012 152 0 0 1 1
167}
168// brush 18
169{
170( 72 -344 0 ) ( 72 -343 0 ) ( 72 -344 1 ) environment/planks_012 152 0 0 1 1
171( 72 -344 0 ) ( 72 -344 1 ) ( 73 -344 0 ) environment/planks_012 -328 0 0 1 1
172( 72 -344 0 ) ( 73 -344 0 ) ( 72 -343 0 ) environment/planks_012 -328 -152 0 1 1
173( 88 -328 8 ) ( 88 -327 8 ) ( 89 -328 8 ) environment/planks_012 -328 -152 0 1 1
174( 88 -328 16 ) ( 89 -328 16 ) ( 88 -328 17 ) environment/planks_012 -328 0 0 1 1
175( 88 -328 16 ) ( 88 -328 17 ) ( 88 -327 16 ) environment/planks_012 152 0 0 1 1
176}
177// brush 19
178{
179( -24 -168 0 ) ( -24 -167 0 ) ( -24 -168 1 ) environment/planks_012 -24 0 0 1 1
180( -24 -168 0 ) ( -24 -168 1 ) ( -23 -168 0 ) environment/planks_012 -232 0 0 1 1
181( -24 -168 0 ) ( -23 -168 0 ) ( -24 -167 0 ) environment/planks_012 -232 24 0 1 1
182( -8 -152 8 ) ( -8 -151 8 ) ( -7 -152 8 ) environment/planks_012 -232 24 0 1 1
183( -8 -152 16 ) ( -7 -152 16 ) ( -8 -152 17 ) environment/planks_012 -232 0 0 1 1
184( -8 -152 16 ) ( -8 -152 17 ) ( -8 -151 16 ) environment/planks_012 -24 0 0 1 1
185}
186// brush 20
187{
188( 72 -168 0 ) ( 72 -167 0 ) ( 72 -168 1 ) environment/planks_012 -24 0 0 1 1
189( 72 -168 0 ) ( 72 -168 1 ) ( 73 -168 0 ) environment/planks_012 -328 0 0 1 1
190( 72 -168 0 ) ( 73 -168 0 ) ( 72 -167 0 ) environment/planks_012 -328 24 0 1 1
191( 88 -152 8 ) ( 88 -151 8 ) ( 89 -152 8 ) environment/planks_012 -328 24 0 1 1
192( 88 -152 16 ) ( 89 -152 16 ) ( 88 -152 17 ) environment/planks_012 -328 0 0 1 1
193( 88 -152 16 ) ( 88 -152 17 ) ( 88 -151 16 ) environment/planks_012 -24 0 0 1 1
194}
195// brush 21
196{
197( -184 -168 0 ) ( -184 -167 0 ) ( -184 -168 1 ) environment/planks_012 -24 0 0 1 1
198( -184 -168 0 ) ( -184 -168 1 ) ( -183 -168 0 ) environment/planks_012 -72 0 0 1 1
199( -184 -168 0 ) ( -183 -168 0 ) ( -184 -167 0 ) environment/planks_012 -72 24 0 1 1
200( -168 -152 8 ) ( -168 -151 8 ) ( -167 -152 8 ) environment/planks_012 -72 24 0 1 1
201( -168 -152 16 ) ( -167 -152 16 ) ( -168 -152 17 ) environment/planks_012 -72 0 0 1 1
202( -168 -152 16 ) ( -168 -152 17 ) ( -168 -151 16 ) environment/planks_012 -24 0 0 1 1
203}
204// brush 22
205{
206( -88 -168 0 ) ( -88 -167 0 ) ( -88 -168 1 ) environment/planks_012 -24 0 0 1 1
207( -88 -168 0 ) ( -88 -168 1 ) ( -87 -168 0 ) environment/planks_012 -168 0 0 1 1
208( -88 -168 0 ) ( -87 -168 0 ) ( -88 -167 0 ) environment/planks_012 -168 24 0 1 1
209( -72 -152 8 ) ( -72 -151 8 ) ( -71 -152 8 ) environment/planks_012 -168 24 0 1 1
210( -72 -152 16 ) ( -71 -152 16 ) ( -72 -152 17 ) environment/planks_012 -168 0 0 1 1
211( -72 -152 16 ) ( -72 -152 17 ) ( -72 -151 16 ) environment/planks_012 -24 0 0 1 1
212}
15} 213}
16// entity 1 214// entity 1
17{ 215{
18"classname" "light" 216"classname" "light"
19"origin" "136 -280 184" 217"origin" "152 -280 232"
20} 218}
21// entity 2 219// entity 2
22{ 220{
23"classname" "light" 221"classname" "light"
24"origin" "-200 24 184" 222"origin" "-312 24 232"
25} 223}
26// entity 3 224// entity 3
27{ 225{
28"classname" "info_player_start" 226"classname" "info_player_start"
29"origin" "-128 -112 16" 227"origin" "-464 0 16"
30} 228}
31// entity 4 229// entity 4
32{ 230{
diff --git a/trenchbroom/stalag/GameEngineProfiles.cfg b/trenchbroom/stalag/GameEngineProfiles.cfg
index 6c672e0..eab4cf2 100644
--- a/trenchbroom/stalag/GameEngineProfiles.cfg
+++ b/trenchbroom/stalag/GameEngineProfiles.cfg
@@ -2,9 +2,9 @@
2 "profiles": [ 2 "profiles": [
3 { 3 {
4 "name": "Stalag", 4 "name": "Stalag",
5 "parameters": "+map ${MAP_BASE_NAME}", 5 "parameters": "--map ${MAP_BASE_NAME}",
6 "path": "/home/m/Projects/stalag/bin/stalag" 6 "path": "/home/m/Projects/stalag/bin/stalag"
7 } 7 }
8 ], 8 ],
9 "version": 1 9 "version": 1
10} \ No newline at end of file 10}