| author | rubidium |
| Sat, 18 Aug 2007 22:56:58 +0000 | |
| changeset 7453 | f0e43db55531 |
| parent 7408 | 605b333582d5 |
| child 7954 | 57b51c69c072 |
| permissions | -rw-r--r-- |
| 2186 | 1 |
/* $Id$ */ |
2 |
||
|
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
3 |
#include "../stdafx.h" |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
4 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
5 |
#ifdef ENABLE_NETWORK |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
6 |
|
|
2195
ed135f2dc5f8
(svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents:
2189
diff
changeset
|
7 |
#include "../openttd.h" |
|
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
8 |
#include "../debug.h" |
|
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
9 |
#include "../functions.h" |
|
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
10 |
#include "../gfx.h" |
|
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5406
diff
changeset
|
11 |
#include "../network/network.h" |
|
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
12 |
#include "../window.h" |
|
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
13 |
#include "../console.h" |
|
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
14 |
#include "../variables.h" |
|
4300
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
2791
diff
changeset
|
15 |
#include "../genworld.h" |
|
6929
56470c1b8a66
(svn r10182) -Codechange: rewrite most part of the file loading/searching to be more flexible.
rubidium
parents:
6878
diff
changeset
|
16 |
#include "../fileio.h" |
|
6937
40c760fcf1f6
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
6929
diff
changeset
|
17 |
#include "../blitter/factory.hpp" |
|
2195
ed135f2dc5f8
(svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents:
2189
diff
changeset
|
18 |
#include "dedicated_v.h" |
|
781
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
19 |
|
|
2497
0fe349de34c7
(svn r3023) -Fix [BeOS] fixed compilation on BeOS R5 (MYOB)
bjarni
parents:
2261
diff
changeset
|
20 |
#ifdef BEOS_NET_SERVER |
|
0fe349de34c7
(svn r3023) -Fix [BeOS] fixed compilation on BeOS R5 (MYOB)
bjarni
parents:
2261
diff
changeset
|
21 |
#include <net/socket.h> |
|
0fe349de34c7
(svn r3023) -Fix [BeOS] fixed compilation on BeOS R5 (MYOB)
bjarni
parents:
2261
diff
changeset
|
22 |
#endif |
|
0fe349de34c7
(svn r3023) -Fix [BeOS] fixed compilation on BeOS R5 (MYOB)
bjarni
parents:
2261
diff
changeset
|
23 |
|
|
781
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
24 |
#ifdef __OS2__ |
|
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
25 |
# include <sys/time.h> /* gettimeofday */ |
|
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
26 |
# include <sys/types.h> |
|
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
27 |
# include <unistd.h> |
|
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
28 |
# include <conio.h> |
|
2181
c0ddc9695a14
(svn r2695) - Fix: OS/2 project update, add os2.h to dedicated_v.c
orudge
parents:
2180
diff
changeset
|
29 |
|
|
c0ddc9695a14
(svn r2695) - Fix: OS/2 project update, add os2.h to dedicated_v.c
orudge
parents:
2180
diff
changeset
|
30 |
# define INCL_DOS |
|
c0ddc9695a14
(svn r2695) - Fix: OS/2 project update, add os2.h to dedicated_v.c
orudge
parents:
2180
diff
changeset
|
31 |
# include <os2.h> |
|
c0ddc9695a14
(svn r2695) - Fix: OS/2 project update, add os2.h to dedicated_v.c
orudge
parents:
2180
diff
changeset
|
32 |
|
|
781
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
33 |
# define STDIN 0 /* file descriptor for standard input */ |
|
810
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
34 |
|
|
2261
d3554e5d3e86
(svn r2781) Fix some of the issues with variables in .h files.
ludde
parents:
2228
diff
changeset
|
35 |
/** |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
36 |
* Switches OpenTTD to a console app at run-time, instead of a PM app |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
37 |
* Necessary to see stdout, etc. */ |
| 6247 | 38 |
static void OS2_SwitchToConsoleMode() |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
39 |
{
|
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
40 |
PPIB pib; |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
41 |
PTIB tib; |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
42 |
|
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
43 |
DosGetInfoBlocks(&tib, &pib); |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
44 |
|
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
45 |
// Change flag from PM to VIO |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
46 |
pib->pib_ultype = 3; |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
47 |
} |
|
781
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
48 |
#endif |
|
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
49 |
|
|
6033
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
50 |
#if defined(UNIX) || defined(PSP) |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
51 |
# include <sys/time.h> /* gettimeofday */ |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
52 |
# include <sys/types.h> |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
53 |
# include <unistd.h> |
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
54 |
# include <signal.h> |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
55 |
# define STDIN 0 /* file descriptor for standard input */ |
|
6033
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
56 |
# if defined(PSP) |
|
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
57 |
# include <sys/fd_set.h> |
|
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
58 |
# include <sys/select.h> |
|
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
59 |
# endif /* PSP */ |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
60 |
|
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
61 |
/* Signal handlers */ |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
62 |
static void DedicatedSignalHandler(int sig) |
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
63 |
{
|
|
736
75bcef85daeb
(svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated
truelight
parents:
721
diff
changeset
|
64 |
_exit_game = true; |
|
75bcef85daeb
(svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated
truelight
parents:
721
diff
changeset
|
65 |
signal(sig, DedicatedSignalHandler); |
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
66 |
} |
|
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
67 |
#endif |
|
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
68 |
|
|
7408
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
69 |
#if defined(WIN32) |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
70 |
# include <windows.h> /* GetTickCount */ |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
71 |
# if !defined(WINCE) |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
72 |
# include <conio.h> |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
73 |
# endif |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
74 |
# include <time.h> |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
75 |
# include <tchar.h> |
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
76 |
static HANDLE _hInputReady, _hWaitForInputHandling; |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
77 |
static HANDLE _hThread; // Thread to close |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
78 |
static char _win_console_thread_buffer[200]; |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
79 |
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
80 |
/* Windows Console thread. Just loop and signal when input has been received */ |
| 6247 | 81 |
static void WINAPI CheckForConsoleInput() |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
82 |
{
|
|
7408
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
83 |
#if defined(WINCE) |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
84 |
/* WinCE doesn't support console stuff */ |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
85 |
return; |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
86 |
#else |
|
6265
808ed372b237
(svn r9074) -Codechange: win32 dedicated console now doesn't need an extra 'enter' to fully quit
glx
parents:
6247
diff
changeset
|
87 |
DWORD nb; |
|
808ed372b237
(svn r9074) -Codechange: win32 dedicated console now doesn't need an extra 'enter' to fully quit
glx
parents:
6247
diff
changeset
|
88 |
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
89 |
while (true) {
|
|
6265
808ed372b237
(svn r9074) -Codechange: win32 dedicated console now doesn't need an extra 'enter' to fully quit
glx
parents:
6247
diff
changeset
|
90 |
ReadFile(hStdin, _win_console_thread_buffer, lengthof(_win_console_thread_buffer), &nb, NULL); |
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
91 |
/* Signal input waiting that input is read and wait for it being handled |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
92 |
* SignalObjectAndWait() should be used here, but it's unsupported in Win98< */ |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
93 |
SetEvent(_hInputReady); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
94 |
WaitForSingleObject(_hWaitForInputHandling, INFINITE); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
95 |
} |
|
7408
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
96 |
#endif |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
97 |
} |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
98 |
|
| 6247 | 99 |
static void CreateWindowsConsoleThread() |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
100 |
{
|
|
1762
2441d8946237
(svn r2266) - Feature: it is now possible to start a dedicated server on Win98/95, for the few sadistic geeks that really want to do this (thanks for testing Hackykid). Also fix up another glitch in console output
Darkvater
parents:
1626
diff
changeset
|
101 |
DWORD dwThreadId; |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
102 |
/* Create event to signal when console input is ready */ |
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
103 |
_hInputReady = CreateEvent(NULL, false, false, NULL); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
104 |
_hWaitForInputHandling = CreateEvent(NULL, false, false, NULL); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
105 |
if (_hInputReady == NULL || _hWaitForInputHandling == NULL) error("Cannot create console event!");
|
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
106 |
|
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
107 |
_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CheckForConsoleInput, NULL, 0, &dwThreadId); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
108 |
if (_hThread == NULL) error("Cannot create console thread!");
|
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
109 |
|
|
5380
8ea58542b6e0
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5168
diff
changeset
|
110 |
DEBUG(driver, 2, "Windows console thread started"); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
111 |
} |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
112 |
|
| 6247 | 113 |
static void CloseWindowsConsoleThread() |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
114 |
{
|
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
115 |
CloseHandle(_hThread); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
116 |
CloseHandle(_hInputReady); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
117 |
CloseHandle(_hWaitForInputHandling); |
|
5380
8ea58542b6e0
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5168
diff
changeset
|
118 |
DEBUG(driver, 2, "Windows console thread shut down"); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
119 |
} |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
120 |
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
121 |
#endif |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
122 |
|
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
123 |
|
|
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
124 |
static void *_dedicated_video_mem; |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
125 |
|
|
6929
56470c1b8a66
(svn r10182) -Codechange: rewrite most part of the file loading/searching to be more flexible.
rubidium
parents:
6878
diff
changeset
|
126 |
extern bool SafeSaveOrLoad(const char *filename, int mode, int newgm, Subdirectory subdir); |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
127 |
extern void SwitchMode(int new_mode); |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
128 |
|
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
129 |
static FVideoDriver_Dedicated iFVideoDriver_Dedicated; |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
130 |
|
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
131 |
|
|
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
132 |
const char *VideoDriver_Dedicated::Start(const char * const *parm) |
|
1301
bf64ba5b6774
(svn r1805) Teach the driver layer a few things about const correctness
tron
parents:
1299
diff
changeset
|
133 |
{
|
|
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
134 |
int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); |
|
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
135 |
if (bpp == 0) _dedicated_video_mem = NULL; |
|
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
136 |
else _dedicated_video_mem = malloc(_cur_resolution[0] * _cur_resolution[1] * (bpp / 8)); |
|
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
137 |
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
138 |
_screen.width = _screen.pitch = _cur_resolution[0]; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
139 |
_screen.height = _cur_resolution[1]; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
140 |
|
|
5406
2df85542fee4
(svn r7602) -Fix (r7565): MSVC2003 and lower don't support variadic macros, so work around
Darkvater
parents:
5380
diff
changeset
|
141 |
SetDebugString("net=6");
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
142 |
|
|
7408
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
143 |
#if defined(WINCE) |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
144 |
/* WinCE doesn't support console stuff */ |
|
605b333582d5
(svn r10781) -Fix: ported more pieces to WinCE, so it compiles a bit more
truelight
parents:
7170
diff
changeset
|
145 |
#elif defined(WIN32) |
|
5168
e206899169c4
(svn r7278) -Codechange: [win32] Add UNICODE support so it should compile on OS's using UNICODE
Darkvater
parents:
4891
diff
changeset
|
146 |
// For win32 we need to allocate a console (debug mode does the same) |
|
626
35294912464a
(svn r1056) -Fix: [Network] Give the dedicated-server always a console in windows (sign_de)
truelight
parents:
543
diff
changeset
|
147 |
CreateConsole(); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
148 |
CreateWindowsConsoleThread(); |
|
5168
e206899169c4
(svn r7278) -Codechange: [win32] Add UNICODE support so it should compile on OS's using UNICODE
Darkvater
parents:
4891
diff
changeset
|
149 |
SetConsoleTitle(_T("OpenTTD Dedicated Server"));
|
|
626
35294912464a
(svn r1056) -Fix: [Network] Give the dedicated-server always a console in windows (sign_de)
truelight
parents:
543
diff
changeset
|
150 |
#endif |
|
35294912464a
(svn r1056) -Fix: [Network] Give the dedicated-server always a console in windows (sign_de)
truelight
parents:
543
diff
changeset
|
151 |
|
|
810
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
152 |
#ifdef __OS2__ |
|
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
153 |
// For OS/2 we also need to switch to console mode instead of PM mode |
|
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
154 |
OS2_SwitchToConsoleMode(); |
|
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
155 |
#endif |
|
a1494b19bd2a
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
796
diff
changeset
|
156 |
|
|
5380
8ea58542b6e0
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5168
diff
changeset
|
157 |
DEBUG(driver, 1, "Loading dedicated server"); |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
158 |
return NULL; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
159 |
} |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
160 |
|
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
161 |
void VideoDriver_Dedicated::Stop() |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
162 |
{
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
163 |
#ifdef WIN32 |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
164 |
CloseWindowsConsoleThread(); |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
165 |
#endif |
|
1109
ecb98f43ba2c
(svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents:
1090
diff
changeset
|
166 |
free(_dedicated_video_mem); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
167 |
} |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
168 |
|
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
169 |
void VideoDriver_Dedicated::MakeDirty(int left, int top, int width, int height) {}
|
|
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
170 |
bool VideoDriver_Dedicated::ChangeResolution(int w, int h) { return false; }
|
|
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
171 |
void VideoDriver_Dedicated::ToggleFullscreen(bool fs) {}
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
172 |
|
|
6033
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
173 |
#if defined(UNIX) || defined(__OS2__) || defined(PSP) |
| 6247 | 174 |
static bool InputWaiting() |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
175 |
{
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
176 |
struct timeval tv; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
177 |
fd_set readfds; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
178 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
179 |
tv.tv_sec = 0; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
180 |
tv.tv_usec = 1; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
181 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
182 |
FD_ZERO(&readfds); |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
183 |
FD_SET(STDIN, &readfds); |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
184 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
185 |
/* don't care about writefds and exceptfds: */ |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
186 |
return select(STDIN + 1, &readfds, NULL, NULL, &tv) > 0; |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
187 |
} |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
188 |
|
| 6247 | 189 |
static uint32 GetTime() |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
190 |
{
|
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
191 |
struct timeval tim; |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
192 |
|
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
193 |
gettimeofday(&tim, NULL); |
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
194 |
return tim.tv_usec / 1000 + tim.tv_sec * 1000; |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
195 |
} |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
196 |
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
197 |
#else |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
198 |
|
| 6247 | 199 |
static bool InputWaiting() |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
200 |
{
|
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
201 |
return WaitForSingleObject(_hInputReady, 1) == WAIT_OBJECT_0; |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
202 |
} |
|
1109
ecb98f43ba2c
(svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents:
1090
diff
changeset
|
203 |
|
| 6247 | 204 |
static uint32 GetTime() |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
205 |
{
|
|
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
206 |
return GetTickCount(); |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
207 |
} |
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
208 |
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
209 |
#endif |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
210 |
|
| 6247 | 211 |
static void DedicatedHandleKeyInput() |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
212 |
{
|
|
721
617a397f8b4b
(svn r1173) -Fix: [Network] Console input in dedicated server for windows was not
truelight
parents:
720
diff
changeset
|
213 |
static char input_line[200] = ""; |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
214 |
|
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
215 |
if (!InputWaiting()) return; |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
216 |
|
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
217 |
if (_exit_game) return; |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
218 |
|
|
6033
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
219 |
#if defined(UNIX) || defined(__OS2__) || defined(PSP) |
|
4891
90fed43ba450
(svn r6835) - Fix: Pressing ^D (EOF) at a dedicated console caused it to repeat the last command, instead of doing nothing.
peter1138
parents:
4848
diff
changeset
|
220 |
if (fgets(input_line, lengthof(input_line), stdin) == NULL) return; |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
221 |
#else |
|
4599
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
222 |
/* Handle console input, and singal console thread, it can accept input again */ |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
223 |
strncpy(input_line, _win_console_thread_buffer, lengthof(input_line)); |
|
79009a39da03
(svn r6449) -Fix (Win32): The dedicated server could overwrite the keyboard input buffer
Darkvater
parents:
4300
diff
changeset
|
224 |
SetEvent(_hWaitForInputHandling); |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
225 |
#endif |
|
736
75bcef85daeb
(svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated
truelight
parents:
721
diff
changeset
|
226 |
|
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
227 |
/* XXX - strtok() does not 'forget' \n\r if it is the first character! */ |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
228 |
strtok(input_line, "\r\n"); // Forget about the final \n (or \r) |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
229 |
{ /* Remove any special control characters */
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
230 |
uint i; |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
231 |
for (i = 0; i < lengthof(input_line); i++) {
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
232 |
if (input_line[i] == '\n' || input_line[i] == '\r') // cut missed beginning '\0' |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
233 |
input_line[i] = '\0'; |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
234 |
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
235 |
if (input_line[i] == '\0') |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
236 |
break; |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
237 |
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
238 |
if (!IS_INT_INSIDE(input_line[i], ' ', 256)) |
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
239 |
input_line[i] = ' '; |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
240 |
} |
|
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
241 |
} |
|
1046
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
242 |
|
|
f1d46abf7d35
(svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater
parents:
915
diff
changeset
|
243 |
IConsoleCmdExec(input_line); // execute command |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
244 |
} |
|
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
245 |
|
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
6937
diff
changeset
|
246 |
void VideoDriver_Dedicated::MainLoop() |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
247 |
{
|
|
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
248 |
uint32 cur_ticks = GetTime(); |
|
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
249 |
uint32 next_tick = cur_ticks + 30; |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
250 |
|
|
770
c2eacca29601
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
736
diff
changeset
|
251 |
/* Signal handlers */ |
|
6033
61682c6606c8
(svn r8756) [PSP] -Fix: made the dedicated code compile with PSP. It is almost UNIX, just it needs more includes ;)
truelight
parents:
5587
diff
changeset
|
252 |
#if defined(UNIX) || defined(PSP) |
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
253 |
signal(SIGTERM, DedicatedSignalHandler); |
|
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
254 |
signal(SIGINT, DedicatedSignalHandler); |
|
736
75bcef85daeb
(svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated
truelight
parents:
721
diff
changeset
|
255 |
signal(SIGQUIT, DedicatedSignalHandler); |
|
702
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
256 |
#endif |
|
5e80e4d69057
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
257 |
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
258 |
// Load the dedicated server stuff |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
259 |
_is_network_server = true; |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
260 |
_network_dedicated = true; |
|
4848
45f848b46222
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4599
diff
changeset
|
261 |
_network_playas = PLAYER_SPECTATOR; |
|
45f848b46222
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4599
diff
changeset
|
262 |
_local_player = PLAYER_SPECTATOR; |
|
1414
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
263 |
|
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
264 |
/* If SwitchMode is SM_LOAD, it means that the user used the '-g' options */ |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
265 |
if (_switch_mode != SM_LOAD) {
|
|
4300
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
2791
diff
changeset
|
266 |
StartNewGameWithoutGUI(GENERATE_NEW_SEED); |
|
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
2791
diff
changeset
|
267 |
SwitchMode(_switch_mode); |
|
1414
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
268 |
_switch_mode = SM_NONE; |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
269 |
} else {
|
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
270 |
_switch_mode = SM_NONE; |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
271 |
/* First we need to test if the savegame can be loaded, else we will end up playing the |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
272 |
* intro game... */ |
|
6929
56470c1b8a66
(svn r10182) -Codechange: rewrite most part of the file loading/searching to be more flexible.
rubidium
parents:
6878
diff
changeset
|
273 |
if (!SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_NORMAL, BASE_DIR)) {
|
|
1414
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
274 |
/* Loading failed, pop out.. */ |
|
5380
8ea58542b6e0
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5168
diff
changeset
|
275 |
DEBUG(net, 0, "Loading requested map failed, aborting"); |
|
1414
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
276 |
_networking = false; |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
277 |
} else {
|
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
278 |
/* We can load this game, so go ahead */ |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
279 |
SwitchMode(SM_LOAD); |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
280 |
} |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
281 |
} |
|
e7aa3a34712e
(svn r1918) -Fix: [ 1101874 ] Dedicated server now accepts '-g' (load game) as param
truelight
parents:
1406
diff
changeset
|
282 |
|
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
283 |
// Done loading, start game! |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
284 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
285 |
if (!_networking) {
|
|
5380
8ea58542b6e0
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5168
diff
changeset
|
286 |
DEBUG(net, 0, "Dedicated server could not be started, aborting"); |
| 2228 | 287 |
return; |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
288 |
} |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
289 |
|
| 2228 | 290 |
while (!_exit_game) {
|
|
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
291 |
uint32 prev_cur_ticks = cur_ticks; // to check for wrapping |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
292 |
InteractiveRandom(); // randomness |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
293 |
|
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
294 |
if (!_dedicated_forks) |
|
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
295 |
DedicatedHandleKeyInput(); |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
296 |
|
|
2180
c93b74122221
(svn r2694) Various smaller changes: eol-style, static, code simplification
tron
parents:
2177
diff
changeset
|
297 |
cur_ticks = GetTime(); |
|
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
298 |
if (cur_ticks >= next_tick || cur_ticks < prev_cur_ticks) {
|
|
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
299 |
next_tick = cur_ticks + 30; |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
300 |
|
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
301 |
GameLoop(); |
|
6615
74ec6e68e831
(svn r9835) -Codechange: use Pixel typedef instead of byte where ever possible
truelight
parents:
6265
diff
changeset
|
302 |
_screen.dst_ptr = _dedicated_video_mem; |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
303 |
UpdateWindows(); |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
304 |
} |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
305 |
CSleep(1); |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
306 |
} |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
307 |
} |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
308 |
|
|
2195
ed135f2dc5f8
(svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents:
2189
diff
changeset
|
309 |
#endif /* ENABLE_NETWORK */ |