Commit graph

  • 6bbb06b490 gl_mesh.c (BuildTris): worked around a type-punned pointer. adapted from quakeforge. sezero 2010-08-01 21:11:16 +0000
  • a7d57b4b51 * renamed Length() to VectorLength() for consistency with its friends. * mathlib.c: Removed the unnecessary sqrt() prototype. (VectorLength): Made it to just return sqrt(DotProduct(arg,arg)) (VectorNormalize): Calculate the length as sqrt(DotProduct(arg,arg)). * mathlib.h (CLAMP): Renamed the macro arguments from min and max to _minval and _maxval. Ozkan Sezer 2010-08-01 19:22:46 +0000
  • da8996a8f5 * renamed Length() to VectorLength() for consistency with its friends. * mathlib.c: Removed the unnecessary sqrt() prototype. (VectorLength): Made it to just return sqrt(DotProduct(arg,arg)) (VectorNormalize): Calculate the length as sqrt(DotProduct(arg,arg)). * mathlib.h (CLAMP): Renamed the macro arguments from min and max to _minval and _maxval. sezero 2010-08-01 19:22:46 +0000
  • e1046e68c6 * renamed Length() to VectorLength() for consistency with its friends. * mathlib.c: Removed the unnecessary sqrt() prototype. (VectorLength): Made it to just return sqrt(DotProduct(arg,arg)) (VectorNormalize): Calculate the length as sqrt(DotProduct(arg,arg)). * mathlib.h (CLAMP): Renamed the macro arguments from min and max to _minval and _maxval. sezero 2010-08-01 19:22:46 +0000
  • 19b960c889 Add a statusbar alpha slider, and change default scr_sbaralpha to 0.95 Steven 2010-07-29 06:48:25 +0000
  • b9ab6be4f8 Add a statusbar alpha slider, and change default scr_sbaralpha to 0.95 stevenaaus 2010-07-29 06:48:25 +0000
  • 57bf6f49b9 Add a statusbar alpha slider, and change default scr_sbaralpha to 0.95 stevenaaus 2010-07-29 06:48:25 +0000
  • b9d4ec244f Link the status bar size to the scale slider, though it's size only increases half as fast Steven 2010-07-29 01:52:04 +0000
  • b63d812769 Link the status bar size to the scale slider, though it's size only increases half as fast stevenaaus 2010-07-29 01:52:04 +0000
  • 86dea5717b Link the status bar size to the scale slider, though it's size only increases half as fast stevenaaus 2010-07-29 01:52:04 +0000
  • 6a79b12f88 History fixed - Ozkan's newline fix seems ok. Steven 2010-07-28 07:50:27 +0000
  • f0ee5581c0 History fixed - Ozkan's newline fix seems ok. stevenaaus 2010-07-28 07:50:27 +0000
  • 630499ae8f History fixed - Ozkan's newline fix seems ok. stevenaaus 2010-07-28 07:50:27 +0000
  • f303df4d82 Make some fixes for command line history now that history is persistent Steven 2010-07-28 07:08:16 +0000
  • 10b21499a2 Make some fixes for command line history now that history is persistent stevenaaus 2010-07-28 07:08:16 +0000
  • 57484778cd Make some fixes for command line history now that history is persistent stevenaaus 2010-07-28 07:08:16 +0000
  • 66cafbd197 There seems bugs in the command-line code. Revert this "blank newline" fix first, then look for more Steven 2010-07-27 21:45:33 +0000
  • 977e81c8c1 There seems bugs in the command-line code. Revert this "blank newline" fix first, then look for more stevenaaus 2010-07-27 21:45:33 +0000
  • 30d9246c7b There seems bugs in the command-line code. Revert this "blank newline" fix first, then look for more stevenaaus 2010-07-27 21:45:33 +0000
  • 7284633062 -bgvolume switch stays... Allows CD music/ambient music to play while minimized Steven 2010-07-26 08:47:11 +0000
  • 6ffcbdc338 -bgvolume switch stays... Allows CD music/ambient music to play while minimized stevenaaus 2010-07-26 08:47:11 +0000
  • b9f418d276 -bgvolume switch stays... Allows CD music/ambient music to play while minimized stevenaaus 2010-07-26 08:47:11 +0000
  • 236d7a62ce Under windows, run the game (windowed), go into a saved game, press Esc to get the menu, minimize using the mouse on the window's minimize icon and then restore and you'll have sound all the same. HOWEVER: If you minimize by pressing the icon on the start bar, sound will be lost upon restoring. Or, if you use alt-tab to get away from the game window the same will happen. Or, if you run the game fullscreen and use alt-tab to go to the desktop (alt-tab is the only way I know) you will lose the sound again. Here, we are probably are hitting an SDL_APPACTIVE or SDL_APPINPUTFOCUS event more than once and since the block counter goes > 1 we are not restoring properly. For now, making snd_blocked to act as a boolean and not as a counter fixes the issue. Hmmm... Ozkan Sezer 2010-07-25 12:20:17 +0000
  • ab217aaf82 Under windows, run the game (windowed), go into a saved game, press Esc to get the menu, minimize using the mouse on the window's minimize icon and then restore and you'll have sound all the same. HOWEVER: If you minimize by pressing the icon on the start bar, sound will be lost upon restoring. Or, if you use alt-tab to get away from the game window the same will happen. Or, if you run the game fullscreen and use alt-tab to go to the desktop (alt-tab is the only way I know) you will lose the sound again. Here, we are probably are hitting an SDL_APPACTIVE or SDL_APPINPUTFOCUS event more than once and since the block counter goes > 1 we are not restoring properly. For now, making snd_blocked to act as a boolean and not as a counter fixes the issue. Hmmm... sezero 2010-07-25 12:20:17 +0000
  • f81f9f5e05 Under windows, run the game (windowed), go into a saved game, press Esc to get the menu, minimize using the mouse on the window's minimize icon and then restore and you'll have sound all the same. HOWEVER: If you minimize by pressing the icon on the start bar, sound will be lost upon restoring. Or, if you use alt-tab to get away from the game window the same will happen. Or, if you run the game fullscreen and use alt-tab to go to the desktop (alt-tab is the only way I know) you will lose the sound again. Here, we are probably are hitting an SDL_APPACTIVE or SDL_APPINPUTFOCUS event more than once and since the block counter goes > 1 we are not restoring properly. For now, making snd_blocked to act as a boolean and not as a counter fixes the issue. Hmmm... sezero 2010-07-25 12:20:17 +0000
  • e69a106d3d made MAXCMDLINE definition public through keys.h. Ozkan Sezer 2010-07-25 10:36:14 +0000
  • 23a767e4b2 made MAXCMDLINE definition public through keys.h. sezero 2010-07-25 10:36:14 +0000
  • b4ae05875e made MAXCMDLINE definition public through keys.h. sezero 2010-07-25 10:36:14 +0000
  • a35b89930d Windows/dirent.c: include stddef.h for MSVC to get intptr_t. Ozkan Sezer 2010-07-25 08:28:27 +0000
  • e1c4c0d973 Windows/dirent.c: include stddef.h for MSVC to get intptr_t. sezero 2010-07-25 08:28:27 +0000
  • 02e9d464ff Windows/dirent.c: include stddef.h for MSVC to get intptr_t. sezero 2010-07-25 08:28:27 +0000
  • 70dc6cb641 (Some?) Win32/64 does not re-enable sound after app is minimized and restored, so (temporarily?) add a -bgsound switch to disable sound being muted Steven 2010-07-23 20:58:04 +0000
  • 8ca2bc684b (Some?) Win32/64 does not re-enable sound after app is minimized and restored, so (temporarily?) add a -bgsound switch to disable sound being muted stevenaaus 2010-07-23 20:58:04 +0000
  • 54a2f21892 (Some?) Win32/64 does not re-enable sound after app is minimized and restored, so (temporarily?) add a -bgsound switch to disable sound being muted stevenaaus 2010-07-23 20:58:04 +0000
  • e9192f232a Enable messages and says to be 256 chars long, with a scrolling input line across top of screen. Allow tab button in demos. Steven 2010-07-23 20:55:11 +0000
  • 57c129aa17 Enable messages and says to be 256 chars long, with a scrolling input line across top of screen. Allow tab button in demos. stevenaaus 2010-07-23 20:55:11 +0000
  • c31e3d107a Enable messages and says to be 256 chars long, with a scrolling input line across top of screen. Allow tab button in demos. stevenaaus 2010-07-23 20:55:11 +0000
  • 2e871b3f03 * Windows/dirent.c: For 64 bit compatibility, changed the handle member of struct DIR from long to intptr_t, which is what _findfirst() returns and _findnext() and _findclose() accepts, and removed the brain-dead long casts in the code. This file is probably only used with M$VC, therefore this doesn't affect gcc/mingw compilations and previous binaries. Ozkan Sezer 2010-07-15 09:15:42 +0000
  • 4087928d2b * Windows/dirent.c: For 64 bit compatibility, changed the handle member of struct DIR from long to intptr_t, which is what _findfirst() returns and _findnext() and _findclose() accepts, and removed the brain-dead long casts in the code. This file is probably only used with M$VC, therefore this doesn't affect gcc/mingw compilations and previous binaries. sezero 2010-07-15 09:15:42 +0000
  • c5f8c44ce8 * Windows/dirent.c: For 64 bit compatibility, changed the handle member of struct DIR from long to intptr_t, which is what _findfirst() returns and _findnext() and _findclose() accepts, and removed the brain-dead long casts in the code. This file is probably only used with M$VC, therefore this doesn't affect gcc/mingw compilations and previous binaries. sezero 2010-07-15 09:15:42 +0000
  • c6a63edca2 keys.c (History_Shutdown): Don't let it write an empty string to history.txt if no console commands were used. Ozkan Sezer 2010-06-26 10:50:40 +0000
  • 43e872d1d1 keys.c (History_Shutdown): Don't let it write an empty string to history.txt if no console commands were used. sezero 2010-06-26 10:50:40 +0000
  • cfee212570 keys.c (History_Shutdown): Don't let it write an empty string to history.txt if no console commands were used. sezero 2010-06-26 10:50:40 +0000
  • d65f8679a7 host.c (Host_Init): Do not exec quake.rc for dedicated servers. Instead, exec autoexec.cfg and stuffcmds in that case. Also moved running the start map for dedicated servers here. host_cmd.c (Host_Startdemos_f): Moved running the start map for dedicated servers to Host_Init(). Ozkan Sezer 2010-06-26 08:45:40 +0000
  • 72f4ccebb2 host.c (Host_Init): Do not exec quake.rc for dedicated servers. Instead, exec autoexec.cfg and stuffcmds in that case. Also moved running the start map for dedicated servers here. host_cmd.c (Host_Startdemos_f): Moved running the start map for dedicated servers to Host_Init(). sezero 2010-06-26 08:45:40 +0000
  • f7d02fcbbf host.c (Host_Init): Do not exec quake.rc for dedicated servers. Instead, exec autoexec.cfg and stuffcmds in that case. Also moved running the start map for dedicated servers here. host_cmd.c (Host_Startdemos_f): Moved running the start map for dedicated servers to Host_Init(). sezero 2010-06-26 08:45:40 +0000
  • 1496d179e5 host.c (Host_Init): Don't call V_Init, Chase_Init, Key_Init, Con_Init, M_Init, ExtraMaps_Init and Modlist_Init for dedicated servers either. Ozkan Sezer 2010-06-26 08:16:58 +0000
  • 4f5dd899fd host.c (Host_Init): Don't call V_Init, Chase_Init, Key_Init, Con_Init, M_Init, ExtraMaps_Init and Modlist_Init for dedicated servers either. sezero 2010-06-26 08:16:58 +0000
  • 29d4cad280 host.c (Host_Init): Don't call V_Init, Chase_Init, Key_Init, Con_Init, M_Init, ExtraMaps_Init and Modlist_Init for dedicated servers either. sezero 2010-06-26 08:16:58 +0000
  • 8126ad58a8 * keys.c (HISTORY_FILE_NAME): define simply as history.txt without prefixing with a game directory, so that the history file would be written into the basedir and not affected by dynamic game directory changes. Ozkan Sezer 2010-06-26 07:56:28 +0000
  • 406ed513d4 * keys.c (HISTORY_FILE_NAME): define simply as history.txt without prefixing with a game directory, so that the history file would be written into the basedir and not affected by dynamic game directory changes. sezero 2010-06-26 07:56:28 +0000
  • bd2385e5ea * keys.c (HISTORY_FILE_NAME): define simply as history.txt without prefixing with a game directory, so that the history file would be written into the basedir and not affected by dynamic game directory changes. sezero 2010-06-26 07:56:28 +0000
  • 5fdce8c9ef host.c (Host_Shutdown): Write the console command history file only if not a dedicated server. Same for shutting down the CDAudio and sound subsystems. Ozkan Sezer 2010-06-26 00:31:12 +0000
  • 53b780c9a2 host.c (Host_Shutdown): Write the console command history file only if not a dedicated server. Same for shutting down the CDAudio and sound subsystems. sezero 2010-06-26 00:31:12 +0000
  • 52f4e89d99 host.c (Host_Shutdown): Write the console command history file only if not a dedicated server. Same for shutting down the CDAudio and sound subsystems. sezero 2010-06-26 00:31:12 +0000
  • d96f32d4b8 keys.c (History_Init): Made global again. (History_Shutdown): Likewise. keys.h: Added prototypes for History_Init and History_Shutdown. Ozkan Sezer 2010-06-26 00:15:22 +0000
  • b33ac1c08a keys.c (History_Init): Made global again. (History_Shutdown): Likewise. keys.h: Added prototypes for History_Init and History_Shutdown. sezero 2010-06-26 00:15:22 +0000
  • 7383a1647b keys.c (History_Init): Made global again. (History_Shutdown): Likewise. keys.h: Added prototypes for History_Init and History_Shutdown. sezero 2010-06-26 00:15:22 +0000
  • ad8f2e7a7b * keys.c (History_Init): Make it static. Tidy-up its formatting. (History_Shutdown): Likewise. Ozkan Sezer 2010-06-25 23:55:41 +0000
  • 5739389db5 * keys.c (History_Init): Make it static. Tidy-up its formatting. (History_Shutdown): Likewise. sezero 2010-06-25 23:55:41 +0000
  • 9154ed3539 * keys.c (History_Init): Make it static. Tidy-up its formatting. (History_Shutdown): Likewise. sezero 2010-06-25 23:55:41 +0000
  • 5a273f0a99 Add Bakers/Ezquakes persistent history feature Steven 2010-06-25 13:32:49 +0000
  • 5d8098f1a5 Add Bakers/Ezquakes persistent history feature stevenaaus 2010-06-25 13:32:49 +0000
  • 819208b38c Add Bakers/Ezquakes persistent history feature stevenaaus 2010-06-25 13:32:49 +0000
  • 42c47095a1 net_udp.c, net_wins.c, net_wipx.c: Add more informative debug messages. Ozkan Sezer 2010-06-22 18:11:00 +0000
  • 7f884a951b net_udp.c, net_wins.c, net_wipx.c: Add more informative debug messages. sezero 2010-06-22 18:11:00 +0000
  • c1ff4646c2 net_udp.c, net_wins.c, net_wipx.c: Add more informative debug messages. sezero 2010-06-22 18:11:00 +0000
  • bfe38b58b4 net_wins.c (WINS_GetLocalAddress): Make sure buff is null terminated. Ozkan Sezer 2010-06-22 18:09:02 +0000
  • 94387b68a2 net_wins.c (WINS_GetLocalAddress): Make sure buff is null terminated. sezero 2010-06-22 18:09:02 +0000
  • eeb7b890ca net_wins.c (WINS_GetLocalAddress): Make sure buff is null terminated. sezero 2010-06-22 18:09:02 +0000
  • 506774e2ad net_wins.c (WINS_Init): Fix error return value as INVALID_SOCKET. Ozkan Sezer 2010-06-22 18:05:43 +0000
  • dde3458f13 net_wins.c (WINS_Init): Fix error return value as INVALID_SOCKET. sezero 2010-06-22 18:05:43 +0000
  • 1da39b9337 net_wins.c (WINS_Init): Fix error return value as INVALID_SOCKET. sezero 2010-06-22 18:05:43 +0000
  • 132f3a8542 * console.h (Con_DebugLog): Add prototype. Ozkan Sezer 2010-06-22 11:02:13 +0000
  • 50cea5662f * console.h (Con_DebugLog): Add prototype. sezero 2010-06-22 11:02:13 +0000
  • fe05326ae9 * console.h (Con_DebugLog): Add prototype. sezero 2010-06-22 11:02:13 +0000
  • d098087606 Reorganize files for platform-specific code: * sys_sdl_win.c: Copied from sys_sdl.c. Windows-only. Remove unix code. (Sys_Init): New procedure. Call AllocConsole() and get input and output handles for dedicated servers. (Sys_ConsoleInput): Add a windows version. (Sys_Error): Adjust for the allocated console and use windows api. Adjust message output. Remove the console timeout, doesn't work somehow. Just display the console for 3 seconds and then exit. Rely on SDL that it redirects/logs the stdout/stderr to files. * sys_sdl_unix.c: Rename from sys_sdl.c. Unix-only. Remove windows code. (Sys_Init): New procedure. (Sys_Error): Remove Windows-oriented dedicated server specific code. Adjust message output. * sys_sdl.c: Delete. * sys.h (Sys_Init): Add prototype. * main_sdl.c (main): Call Sys_Init(). * pl_linux.c (PL_ErrorDialog): Remove terminal printing which Sys_Error already does. * pl_osx.m (PL_ErrorDialog): Update from uhexen2. * pl_win.c: Make icon handle static. whitespace and formatting tidy-up. * Makefile, Makefile.darwin, Makefile.w32, Makefile.w64: Adjust for the sys_sdl.c name change to sys_sdl_unix.c and sys_sdl_win.c. Ozkan Sezer 2010-06-22 11:01:24 +0000
  • b2aba1c07d Reorganize files for platform-specific code: * sys_sdl_win.c: Copied from sys_sdl.c. Windows-only. Remove unix code. (Sys_Init): New procedure. Call AllocConsole() and get input and output handles for dedicated servers. (Sys_ConsoleInput): Add a windows version. (Sys_Error): Adjust for the allocated console and use windows api. Adjust message output. Remove the console timeout, doesn't work somehow. Just display the console for 3 seconds and then exit. Rely on SDL that it redirects/logs the stdout/stderr to files. * sys_sdl_unix.c: Rename from sys_sdl.c. Unix-only. Remove windows code. (Sys_Init): New procedure. (Sys_Error): Remove Windows-oriented dedicated server specific code. Adjust message output. * sys_sdl.c: Delete. * sys.h (Sys_Init): Add prototype. * main_sdl.c (main): Call Sys_Init(). * pl_linux.c (PL_ErrorDialog): Remove terminal printing which Sys_Error already does. * pl_osx.m (PL_ErrorDialog): Update from uhexen2. * pl_win.c: Make icon handle static. whitespace and formatting tidy-up. * Makefile, Makefile.darwin, Makefile.w32, Makefile.w64: Adjust for the sys_sdl.c name change to sys_sdl_unix.c and sys_sdl_win.c. sezero 2010-06-22 11:01:24 +0000
  • b65383bf2d Reorganize files for platform-specific code: * sys_sdl_win.c: Copied from sys_sdl.c. Windows-only. Remove unix code. (Sys_Init): New procedure. Call AllocConsole() and get input and output handles for dedicated servers. (Sys_ConsoleInput): Add a windows version. (Sys_Error): Adjust for the allocated console and use windows api. Adjust message output. Remove the console timeout, doesn't work somehow. Just display the console for 3 seconds and then exit. Rely on SDL that it redirects/logs the stdout/stderr to files. * sys_sdl_unix.c: Rename from sys_sdl.c. Unix-only. Remove windows code. (Sys_Init): New procedure. (Sys_Error): Remove Windows-oriented dedicated server specific code. Adjust message output. * sys_sdl.c: Delete. * sys.h (Sys_Init): Add prototype. * main_sdl.c (main): Call Sys_Init(). * pl_linux.c (PL_ErrorDialog): Remove terminal printing which Sys_Error already does. * pl_osx.m (PL_ErrorDialog): Update from uhexen2. * pl_win.c: Make icon handle static. whitespace and formatting tidy-up. * Makefile, Makefile.darwin, Makefile.w32, Makefile.w64: Adjust for the sys_sdl.c name change to sys_sdl_unix.c and sys_sdl_win.c. sezero 2010-06-22 11:01:24 +0000
  • 79d6d5cf5a * net_udp.c (UDP_Read): Remove the get_qsockaddr() helper which came from the old fitzsdl port, and use the struct qsockaddr *addr argument with typecasting as in original quake. (get_qsockaddr): Remove. Ozkan Sezer 2010-06-21 16:23:06 +0000
  • 4c86b544f5 * net_udp.c (UDP_Read): Remove the get_qsockaddr() helper which came from the old fitzsdl port, and use the struct qsockaddr *addr argument with typecasting as in original quake. (get_qsockaddr): Remove. sezero 2010-06-21 16:23:06 +0000
  • fa6bc1ca0d * net_udp.c (UDP_Read): Remove the get_qsockaddr() helper which came from the old fitzsdl port, and use the struct qsockaddr *addr argument with typecasting as in original quake. (get_qsockaddr): Remove. sezero 2010-06-21 16:23:06 +0000
  • 5a4f294463 * net_udp.c (UDP_Init): Fix Con_SafePrintf() call. Ozkan Sezer 2010-06-21 16:17:17 +0000
  • 850ef74acf * net_udp.c (UDP_Init): Fix Con_SafePrintf() call. sezero 2010-06-21 16:17:17 +0000
  • 027f7d2033 * net_udp.c (UDP_Init): Fix Con_SafePrintf() call. sezero 2010-06-21 16:17:17 +0000
  • 01d0107869 net_udp, net_wins, net_wipx network drivers update: - do not try to set the quake hostname to the machine name if it isn't set. - use the newly added unix/windows socket api compatibility macros from net_sys.h: using just an int as the socketfd wasn't a problem without win64 support: the windows SOCKET type is not only unsigned but may actually be wider (uintptr_t, which is 8 bytes on win64). Ozkan Sezer 2010-06-21 15:24:40 +0000
  • bb11a66451 net_udp, net_wins, net_wipx network drivers update: - do not try to set the quake hostname to the machine name if it isn't set. - use the newly added unix/windows socket api compatibility macros from net_sys.h: using just an int as the socketfd wasn't a problem without win64 support: the windows SOCKET type is not only unsigned but may actually be wider (uintptr_t, which is 8 bytes on win64). sezero 2010-06-21 15:24:40 +0000
  • 6fa1c54ada net_udp, net_wins, net_wipx network drivers update: - do not try to set the quake hostname to the machine name if it isn't set. - use the newly added unix/windows socket api compatibility macros from net_sys.h: using just an int as the socketfd wasn't a problem without win64 support: the windows SOCKET type is not only unsigned but may actually be wider (uintptr_t, which is 8 bytes on win64). sezero 2010-06-21 15:24:40 +0000
  • 9bf3296c08 net_sdlnet.c: reverted parts of rev. 197/198. Ozkan Sezer 2010-06-21 13:27:30 +0000
  • 94a056abcf net_sdlnet.c: reverted parts of rev. 197/198. sezero 2010-06-21 13:27:30 +0000
  • b1835226d6 net_sdlnet.c: reverted parts of rev. 197/198. sezero 2010-06-21 13:27:30 +0000
  • d1c4f8d602 net_main.c: more trivialities. Ozkan Sezer 2010-06-21 12:27:30 +0000
  • 4a202dad3d net_main.c: more trivialities. sezero 2010-06-21 12:27:30 +0000
  • 1f9a960e86 net_main.c: more trivialities. sezero 2010-06-21 12:27:30 +0000
  • 2bed6c79c9 net_bsd.c, net_dgrm.h, net_loop.c, net_loop.h, net_sdl.c, net_win.c: more trivialities. Ozkan Sezer 2010-06-21 12:20:25 +0000
  • c8bdc511d8 net_bsd.c, net_dgrm.h, net_loop.c, net_loop.h, net_sdl.c, net_win.c: more trivialities. sezero 2010-06-21 12:20:25 +0000
  • 1f5cc564e8 net_bsd.c, net_dgrm.h, net_loop.c, net_loop.h, net_sdl.c, net_win.c: more trivialities. sezero 2010-06-21 12:20:25 +0000
  • dd05f2d23b * host_cmd.c, menu.c, sv_main.c: Include net_sys.h (for net_defs.h). Ozkan Sezer 2010-06-21 11:50:21 +0000
  • 63c98a9576 * host_cmd.c, menu.c, sv_main.c: Include net_sys.h (for net_defs.h). sezero 2010-06-21 11:50:21 +0000
  • 7951b78a96 * host_cmd.c, menu.c, sv_main.c: Include net_sys.h (for net_defs.h). sezero 2010-06-21 11:50:21 +0000