1 (* Copyright (C) Doom 2D: Forever Developers
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, version 3 of the License ONLY.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 *)
15 {$INCLUDE ../shared/a_modes.inc}
18 interface
30 var
31 {--- TO REMOVE ---}
32 //GameDir: string;
33 {-----------------}
35 {--- Read-only dirs ---}
44 {--- Read-Write dirs ---}
54 implementation
56 uses
57 {$INCLUDE ../nogl/noGLuses.inc}
58 {$IFDEF ENABLE_HOLMES}
60 {$ENDIF}
61 {$IFDEF LINUX}
62 BaseUnix,
63 {$ENDIF}
64 {$IFDEF DARWIN}
66 {$ENDIF}
67 {$IFDEF USE_SDL2}
68 SDL2,
69 {$ENDIF}
76 xparser;
79 var
86 {$IFDEF LINUX}
87 var
88 //cd: AnsiString;
90 {$ENDIF}
91 begin
93 {$IFDEF LINUX}
94 // it may be a symlink; do some guesswork here
97 begin
98 // use current directory, as we don't have anything better
99 //result := '.';
102 {$ENDIF}
109 begin
115 {$IFDEF DARWIN}
118 begin
126 begin
134 {$ENDIF}
138 //first: Boolean = true;
141 {
142 var
143 f: TextFile;
144 begin
145 AssignFile(f, 'zzz.log');
146 if (first) then
147 begin
148 Rewrite(f);
149 first := false;
150 end
151 else
152 begin
153 Append(f);
154 end;
155 writeln(f, s);
156 CloseFile(f);
157 end;
158 }
159 begin
163 var
165 begin
167 //writeln('NEW PATH(0): ['+str+']');
169 begin
171 end
172 else
173 begin
177 begin
180 if (length(str) >= 2) and (Copy(str, length(str)-1, 2) = '/.') then begin Delete(str, length(str)-1, 2); continue; end;
181 break;
186 begin
191 begin
192 //writeln('<<<', ss, '>>> : [', str, ']');
196 //arr[High(arr)] := ExpandFileName(str);
198 //writeln('NEW PATH(1): ['+str+']');
203 begin
210 begin
216 {$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN) AND NOT DEFINED(ANDROID)}
218 {$ENDIF}
219 {$IFDEF WINDOWS}
221 {$ENDIF}
222 {$IFDEF DARWIN}
224 {$ENDIF}
225 begin
228 begin
229 {$IFDEF USE_SDL2}
232 {$ENDIF}
233 {$IFDEF WINDOWS}
237 {$ENDIF}
238 {$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN) AND NOT DEFINED(ANDROID)}
244 {$ENDIF}
245 {$IFDEF DARWIN}
249 dirArr := NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true);
251 begin
255 {$ENDIF}
256 {$IF DEFINED(ANDROID) AND DEFINED(USE_SDL2)}
260 {$ENDIF}
262 {$IFNDEF ANDROID}
263 {$IFDEF DARWIN}
266 {$ELSE}
268 {$ENDIF}
269 {$ENDIF}
273 {$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN) AND NOT DEFINED(ANDROID)}
275 {$ENDIF}
276 {$IFDEF WINDOWS}
278 {$ENDIF}
279 {$IFDEF DARWIN}
281 {$ENDIF}
282 begin
285 begin
286 {$IFDEF USE_SDL2}
288 {$ENDIF}
289 {$IFDEF WINDOWS}
293 {$ENDIF}
294 {$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN) AND NOT DEFINED(ANDROID)}
298 {$ENDIF}
299 {$IFDEF DARWIN}
300 dirArr := NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true);
302 begin
306 {$ENDIF}
307 {$IF DEFINED(ANDROID) AND DEFINED(USE_SDL2)}
310 {$ENDIF}
312 {$IFNDEF ANDROID}
313 {$IFDEF DARWIN}
318 {$ELSE}
320 {$ENDIF}
321 {$ENDIF}
324 begin
325 //GetDir(0, GameDir);
330 begin
331 // use it only if you ketmar
333 begin
335 break
336 end
341 begin
344 begin
347 (* RW *)
355 (* RO *)
363 begin
366 (* RO *)
377 (* RO *)
385 (* RW *)
401 begin
404 begin
405 {$IFDEF HEADLESS}
407 {$ELSE}
409 {$ENDIF}
410 end
417 {$IF DEFINED(ANDROID) AND DEFINED(USE_SDLMIXER)}
419 {$ENDIF}
421 begin
422 {$IFDEF HEADLESS}
424 {$ENDIF}
426 begin
428 begin
430 break
431 end
437 e_WriteLog('Doom 2D: Forever version ' + GAME_VERSION + ' proto ' + IntToStr(NET_PROTOCOL_VER), TMsgType.Notify);
458 begin
460 {$IF DEFINED(USE_SDL2) AND NOT DEFINED(HEADLESS)}
462 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, 'Doom 2D Forever', 'GAME.WAD not installed?', nil);
463 {$ENDIF}
464 e_DeinitLog;
468 {$IF DEFINED(ANDROID) AND DEFINED(USE_SDLMIXER)}
471 begin
476 {$ENDIF}
480 {$IFDEF ENABLE_HOLMES}
482 {$ENDIF}
484 begin
485 InitPath;
486 InitPrep;
487 e_InitInput;
488 sys_Init;
492 begin
494 end
495 else
496 begin
497 g_Options_SetDefault;
498 g_Options_SetDefaultVideo
503 g_Console_SysInit;
507 {$IF not DEFINED(HEADLESS) and DEFINED(ENABLE_HOLMES)}
510 begin
513 try
520 begin
523 //raise;
525 else
526 begin
528 //raise;
532 begin
533 try
537 begin
539 //raise;
542 else
543 begin
544 //raise;
552 begin
558 {$ENDIF}
560 //g_Res_CreateDatabases(true); // it will be done before connecting to the server for the first time
564 {$WARNINGS OFF}
566 {$WARNINGS ON}
568 {$IFDEF ENABLE_HOLMES}
570 {$ENDIF}
572 sys_Final;
576 var
578 begin
579 Randomize;
581 {$IFDEF HEADLESS}
582 {$IFDEF USE_SDLMIXER}
584 {$ELSE}
586 {$ENDIF}
587 {$ELSE}
589 {$ENDIF}
591 g_Touch_Init;
593 (*
594 if (e_JoysticksAvailable > 0) then
595 e_WriteLog('Input: Joysticks available.', TMsgType.Notify)
596 else
597 e_WriteLog('Input: No Joysticks.', TMsgType.Notify);
598 *)
601 begin
614 begin
622 begin
630 begin
636 begin
642 var
644 begin
647 begin
687 var
689 begin
694 result :=
699 {
700 if ct = I_GAME_CHEAT_JETPACK then
701 begin
702 e_WriteLog('ls1: ['+ls1+']', MSG_NOTIFY);
703 e_WriteLog('ls2: ['+ls2+']', MSG_NOTIFY);
704 e_WriteLog('bf0: ['+Copy(charbuff, 17-Length(ls1)-eofs, Length(ls1))+']', MSG_NOTIFY);
705 e_WriteLog('bf1: ['+Translit(Copy(charbuff, 17-Length(ls1)-eofs, Length(ls1)))+']', MSG_NOTIFY);
706 e_WriteLog('bf2: ['+Copy(charbuff, 17-Length(ls2)-eofs, Length(ls2))+']', MSG_NOTIFY);
707 e_WriteLog('bf3: ['+Translit(Copy(charbuff, 17-Length(ls2)-eofs, Length(ls2)))+']', MSG_NOTIFY);
708 end;
709 }
714 const
716 label
717 Cheated;
718 var
722 begin
723 {
724 if (not gGameOn) or (not gCheats) or ((gGameSettings.GameType <> GT_SINGLE) and
725 (gGameSettings.GameMode <> GM_COOP) and (not gDebugMode))
726 or g_Game_IsNet then Exit;
727 }
733 //
735 begin
740 // RAMBO
742 begin
747 // TANK
749 begin
754 // IDDQD
756 begin
762 //
764 begin
768 // GOODBYE
770 begin
774 begin
776 //g_Game_ExitLevel(gTriggers[a].Data.MapName);
778 Break;
782 //
784 if CheckCheat(I_GAME_CHEAT_CHANGEMAP, 2) and (s2[1] >= '0') and (s2[1] <= '9') and (s2[2] >= '0') and (s2[2] <= '9') then
785 begin
787 begin
793 //
795 begin
799 // BULLFROG
801 begin
805 // FORMULA1
807 begin
811 // CONDOM
813 begin
818 //
820 begin
825 // PURELOVE
827 begin
832 //
834 begin
839 // CASPER
841 begin
846 //
848 begin
853 // INFERNO
855 begin
861 begin
866 begin
870 Exit;
872 Cheated:
878 {$IFNDEF HEADLESS}
879 var
881 {$ENDIF}
882 begin
883 {$IFNDEF HEADLESS}
886 begin
888 begin
892 if (not g_Game_IsNet) and (g_ActiveWindow = nil) then g_Game_Pause(false); //Fn loves to do this
893 end
895 begin
897 begin
899 end
901 begin
903 begin
905 begin
907 g_Game_Free;
909 Exit;
921 begin
936 else
937 begin
940 begin
942 end
944 begin
948 end
950 begin
956 {$ENDIF}
961 var
964 begin
966 begin
968 end
970 begin
974 end
975 else
976 begin