Merge branch d1x-rebirth into unification/master
Conflicts: SConstruct common/main/cntrlcen.h common/main/fuelcen.h common/main/fvi.h common/main/gameseq.h common/main/gauges.h common/main/multibot.h common/main/net_udp.h common/main/object.h common/main/player.h common/main/vers_id.h d1x-rebirth/main/hostage.c d1x-rebirth/main/multi.c main/controls.c main/hostage.h main/laser.h main/screens.h similar/arch/ogl/gr.c similar/editor/centers.c similar/main/inferno.c similar/main/lighting.c similar/main/multibot.c similar/main/paging.c similar/main/physics.c similar/main/player.c similar/main/robot.c similar/main/wall.c
This commit is contained in:
commit
616a3a6b70
48
.gitignore
vendored
Normal file
48
.gitignore
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
# Compiled source #
|
||||
###################
|
||||
*.com
|
||||
*.class
|
||||
*.dll
|
||||
*.exe
|
||||
*.app
|
||||
*.o
|
||||
*.so
|
||||
*.pyc
|
||||
build
|
||||
|
||||
# Packages #
|
||||
############
|
||||
# it's better to unpack these files and commit the raw source
|
||||
# git has its own built in compression methods
|
||||
*.7z
|
||||
*.dmg
|
||||
*.gz
|
||||
*.iso
|
||||
*.jar
|
||||
*.rar
|
||||
*.tar
|
||||
*.zip
|
||||
|
||||
# Logs and databases #
|
||||
######################
|
||||
*.log
|
||||
*.sql
|
||||
*.sqlite
|
||||
*.dblite
|
||||
|
||||
# OS generated files #
|
||||
######################
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
Icon?
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Xcode generated files #
|
||||
######################
|
||||
# Note: committing these is optional
|
||||
*.mode1v3
|
||||
*.pbxuser
|
45
SConstruct
45
SConstruct
|
@ -57,36 +57,36 @@ class DXXCommon:
|
|||
self.default_OGLES_LIB='GLESv2'
|
||||
self.opengles = int(ARGUMENTS.get('opengles', self.default_opengles))
|
||||
self.opengles_lib = str(ARGUMENTS.get('opengles_lib', self.default_OGLES_LIB))
|
||||
default_builddir = ''
|
||||
builddir_prefix = ARGUMENTS.get('builddir_prefix', None)
|
||||
builddir_suffix = ARGUMENTS.get('builddir_suffix', None)
|
||||
default_builddir = builddir_prefix or ''
|
||||
if builddir_prefix is not None or builddir_suffix is not None:
|
||||
if builddir_prefix is not None:
|
||||
default_builddir = builddir_prefix
|
||||
if os.environ.has_key('CC'):
|
||||
default_builddir += '%s-' % os.path.basename(os.environ['CC'])
|
||||
for a in [
|
||||
for a in (
|
||||
('debug', 'dbg'),
|
||||
('profiler', 'prf'),
|
||||
('editor', 'ed'),
|
||||
('opengl', 'ogl'),
|
||||
('opengles', 'es'),
|
||||
('raspberrypi', 'rpi'),
|
||||
]:
|
||||
):
|
||||
if getattr(self, a[0]):
|
||||
default_builddir += a[1]
|
||||
if builddir_suffix is not None:
|
||||
default_builddir += builddir_prefix
|
||||
self.builddir = str(ARGUMENTS.get('builddir', default_builddir))
|
||||
self.builddir = ARGUMENTS.get('builddir', default_builddir)
|
||||
if self.builddir != '' and self.builddir[-1:] != '/':
|
||||
self.builddir += '/'
|
||||
# Base class for platform-specific settings processing
|
||||
class _PlatformSettings:
|
||||
tools = None
|
||||
ogllibs = ''
|
||||
osasmdef = None
|
||||
platform_sources = []
|
||||
# Settings to apply to mingw32 builds
|
||||
class Win32PlatformSettings(_PlatformSettings):
|
||||
tools = ['mingw']
|
||||
osdef = '_WIN32'
|
||||
osasmdef = 'win32'
|
||||
def adjust_environment(self,program,env):
|
||||
|
@ -95,8 +95,21 @@ class DXXCommon:
|
|||
osdef = '__APPLE__'
|
||||
def __init__(self,user_settings):
|
||||
user_settings.asm = 0
|
||||
self.lflags = os.environ["LDFLAGS"] if os.environ.has_key('LDFLAGS') else ''
|
||||
def adjust_environment(self,program,env):
|
||||
VERSION = str(program.VERSION_MAJOR) + '.' + str(program.VERSION_MINOR)
|
||||
if (program.VERSION_MICRO):
|
||||
VERSION += '.' + str(program.VERSION_MICRO)
|
||||
env['VERSION_NUM'] = VERSION
|
||||
env['VERSION_NAME'] = program.PROGRAM_NAME + ' v' + VERSION
|
||||
env.Append(CPPDEFINES = ['HAVE_STRUCT_TIMESPEC', 'HAVE_STRUCT_TIMEVAL', '__unix__'])
|
||||
env.Append(CPPPATH = [os.path.join(program.srcdir, '../physfs'), os.path.join(os.getenv("HOME"), 'Library/Frameworks/SDL.framework/Headers'), '/Library/Frameworks/SDL.framework/Headers'])
|
||||
env.Append(FRAMEWORKS = ['ApplicationServices', 'Carbon', 'Cocoa', 'SDL'])
|
||||
if (self.user_settings.opengl == 1) or (self.user_settings.opengles == 1):
|
||||
env.Append(FRAMEWORKS = ['OpenGL'])
|
||||
env.Append(FRAMEWORKPATH = [os.path.join(os.getenv("HOME"), 'Library/Frameworks'), '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks'])
|
||||
self.libs = ['']
|
||||
env['LIBPATH'] = '../physfs/build/Debug'
|
||||
# Settings to apply to Linux builds
|
||||
class LinuxPlatformSettings(_PlatformSettings):
|
||||
osdef = '__LINUX__'
|
||||
|
@ -148,8 +161,6 @@ class DXXCommon:
|
|||
self.sources = []
|
||||
|
||||
def prepare_environment(self):
|
||||
# Acquire environment object...
|
||||
self.env = Environment(ENV = os.environ, tools = ['mingw'])
|
||||
if self.user_settings.builddir != '':
|
||||
self.env.VariantDir(self.user_settings.builddir, '.', duplicate=0)
|
||||
|
||||
|
@ -192,7 +203,6 @@ class DXXCommon:
|
|||
print "%s: LittleEndian machine detected" % self.PROGRAM_NAME
|
||||
|
||||
def check_platform(self):
|
||||
env = self.env
|
||||
# windows or *nix?
|
||||
if sys.platform == 'win32':
|
||||
print "%s: compiling on Windows" % self.PROGRAM_NAME
|
||||
|
@ -200,12 +210,13 @@ class DXXCommon:
|
|||
elif sys.platform == 'darwin':
|
||||
print "%s: compiling on Mac OS X" % self.PROGRAM_NAME
|
||||
platform = self.DarwinPlatformSettings
|
||||
sys.path += ['./arch/cocoa']
|
||||
else:
|
||||
print "%s: compiling on *NIX" % self.PROGRAM_NAME
|
||||
platform = self.LinuxPlatformSettings
|
||||
self.platform_settings = platform(self.user_settings)
|
||||
self.platform_settings.adjust_environment(self, env)
|
||||
# Acquire environment object...
|
||||
self.env = Environment(ENV = os.environ, tools = platform.tools)
|
||||
self.platform_settings.adjust_environment(self, self.env)
|
||||
self.sources += self.platform_settings.platform_sources
|
||||
|
||||
def process_user_settings(self):
|
||||
|
@ -223,7 +234,7 @@ class DXXCommon:
|
|||
if (self.user_settings.asm == 1) and (self.user_settings.opengl == 0):
|
||||
print "%s: including: ASSEMBLER" % self.PROGRAM_NAME
|
||||
env.Replace(AS = 'nasm')
|
||||
env.Append(ASCOM = ' -f ' + str(platform_settings.osasmdef) + ' -d' + str(platform_settings.osdef) + ' -Itexmap/ ')
|
||||
env.Append(ASCOM = ' -f ' + str(self.platform_settings.osasmdef) + ' -d' + str(self.platform_settings.osdef) + ' -Itexmap/ ')
|
||||
self.sources += asm_sources
|
||||
else:
|
||||
env.Append(CPPDEFINES = ['NO_ASM'])
|
||||
|
@ -344,9 +355,9 @@ class DXXArchive(DXXCommon):
|
|||
DXXCommon.__init__(self)
|
||||
self.user_settings = self.UserSettings(ARGUMENTS)
|
||||
self.user_settings.builddir = builddir
|
||||
self.check_platform()
|
||||
self.prepare_environment()
|
||||
self.check_endian()
|
||||
self.check_platform()
|
||||
self.process_user_settings()
|
||||
|
||||
class DXXProgram(DXXCommon):
|
||||
|
@ -468,8 +479,6 @@ class DXXProgram(DXXCommon):
|
|||
env.Append(CPPPATH = [os.path.join(self.srcdir, 'arch/win32/include')])
|
||||
self.platform_sources = ['common/arch/win32/messagebox.c']
|
||||
# Settings to apply to Apple builds
|
||||
# This appears to be unused. The reference to sdl_only fails to
|
||||
# execute.
|
||||
class DarwinPlatformSettings(DXXCommon.DarwinPlatformSettings):
|
||||
def __init__(self,user_settings):
|
||||
DXXCommon.DarwinPlatformSettings.__init__(self)
|
||||
|
@ -501,10 +510,10 @@ class DXXProgram(DXXCommon):
|
|||
self.user_settings = self.UserSettings(self.ARGUMENTS, self.target)
|
||||
if not DXXProgram.static_archive_construction.has_key(self.user_settings.builddir):
|
||||
DXXProgram.static_archive_construction[self.user_settings.builddir] = DXXArchive(self.user_settings.builddir)
|
||||
self.check_platform()
|
||||
self.prepare_environment()
|
||||
self.banner()
|
||||
self.check_endian()
|
||||
self.check_platform()
|
||||
self.process_user_settings()
|
||||
self.register_program()
|
||||
|
||||
|
@ -538,6 +547,8 @@ class DXXProgram(DXXCommon):
|
|||
if (self.user_settings.sdlmixer == 1):
|
||||
if (sys.platform != 'darwin'):
|
||||
self.platform_settings.libs += ['SDL_mixer']
|
||||
else:
|
||||
env.Append(FRAMEWORKS = ['SDL_mixer'])
|
||||
|
||||
# profiler?
|
||||
if (self.user_settings.profiler == 1):
|
||||
|
@ -578,6 +589,8 @@ class DXXProgram(DXXCommon):
|
|||
env.Install(self.user_settings.BIN_DIR, str(exe_target))
|
||||
env.Alias('install', self.user_settings.BIN_DIR)
|
||||
else:
|
||||
sys.path += ['./arch/cocoa']
|
||||
import tool_bundle
|
||||
tool_bundle.TOOL_BUNDLE(env)
|
||||
env.MakeBundle(self.PROGRAM_NAME + '.app', exe_target,
|
||||
'free.%s-rebirth' % dxxstr, '%sgl-Info.plist' % dxxstr,
|
||||
|
|
|
@ -23,6 +23,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "vecmat.h"
|
||||
#include "object.h"
|
||||
#include "wall.h"
|
||||
#include "switch.h"
|
||||
|
||||
#define CONTROLCEN_WEAPON_NUM 6
|
||||
|
||||
|
@ -38,7 +39,9 @@ extern control_center_triggers ControlCenterTriggers;
|
|||
|
||||
#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
|
||||
typedef struct reactor {
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
int model_num;
|
||||
#endif
|
||||
int n_guns;
|
||||
/* Location of the gun on the reactor model */
|
||||
vms_vector gun_points[MAX_CONTROLCEN_GUNS];
|
||||
|
|
|
@ -92,7 +92,7 @@ struct object;
|
|||
void do_cockpit_window_view(int win, struct object *viewer, int rear_view_flag, int user, const char *label);
|
||||
#endif
|
||||
|
||||
#define GAUGE_HUD_NUMMODES 3
|
||||
#define GAUGE_HUD_NUMMODES 4
|
||||
|
||||
typedef struct span {
|
||||
int l,r;
|
||||
|
|
|
@ -35,7 +35,7 @@ int multi_can_move_robot(int objnum, int agitation);
|
|||
void multi_send_robot_position(int objnum, int fired);
|
||||
void multi_send_robot_fire(int objnum, int gun_num, vms_vector *fire);
|
||||
void multi_send_claim_robot(int objnum);
|
||||
void multi_send_robot_explode(int,int,char);
|
||||
void multi_send_robot_explode(int objnum, int killer, char unused);
|
||||
void multi_send_create_robot(int robotcen, int objnum, int type);
|
||||
void multi_send_boss_actions(int bossobjnum, int action, int secondary, int objnum);
|
||||
int multi_send_robot_frame(int sent);
|
||||
|
@ -49,7 +49,7 @@ void multi_do_create_robot(const ubyte *buf);
|
|||
void multi_do_boss_actions(const ubyte *buf);
|
||||
void multi_do_create_robot_powerups(const ubyte *buf);
|
||||
|
||||
int multi_explode_robot_sub(int botnum, int killer,char);
|
||||
int multi_explode_robot_sub(int botnum, int killer, char unused);
|
||||
|
||||
void multi_drop_robot_powerups(int objnum);
|
||||
void multi_dump_robots(void);
|
||||
|
|
|
@ -56,8 +56,8 @@ void net_udp_send_netgame_update();
|
|||
#define UPID_GAME_INFO_LITE_REQ 4 // Requesting lite info about a netgame. Used for discovering games.
|
||||
#define UPID_GAME_INFO_LITE 5 // Packet containing lite netgame info.
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
#define UPID_GAME_INFO_SIZE 506
|
||||
#define UPID_GAME_INFO_LITE_SIZE 69
|
||||
#define UPID_GAME_INFO_SIZE (360 + (NETGAME_NAME_LEN+1) + (MISSION_NAME_LEN+1) + ((MAX_PLAYERS+4)*(CALLSIGN_LEN+1)))
|
||||
#define UPID_GAME_INFO_LITE_SIZE (31 + (NETGAME_NAME_LEN+1) + (MISSION_NAME_LEN+1))
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
#define UPID_GAME_INFO_SIZE 510
|
||||
#define UPID_GAME_INFO_LITE_SIZE 73
|
||||
|
@ -67,7 +67,7 @@ void net_udp_send_netgame_update();
|
|||
#define UPID_ADDPLAYER 7 // Packet from Host containing info about a new player.
|
||||
#define UPID_REQUEST 8 // New player says: "I want to be inside of you!" (haha, sorry I could not resist) / Packet containing request to join the game actually.
|
||||
#define UPID_QUIT_JOINING 9 // Packet from a player who suddenly quits joining.
|
||||
#define UPID_SEQUENCE_SIZE 12
|
||||
#define UPID_SEQUENCE_SIZE (3 + (CALLSIGN_LEN+1))
|
||||
#define UPID_SYNC 10 // Packet from host containing full netgame info to sync players up.
|
||||
#define UPID_OBJECT_DATA 11 // Packet from host containing object buffer.
|
||||
#define UPID_PING 12 // Packet from host containing his GameTime and the Ping list. Client returns this time to host as UPID_PONG and adapts the ping list.
|
||||
|
|
|
@ -1,5 +1,38 @@
|
|||
D1X-Rebirth Changelog
|
||||
|
||||
20130418
|
||||
--------
|
||||
main/lighting.c, main/render.c: Removed light_frame_count due to being unnecessary since lighting is now time-based and messed up deletion of dynamic light
|
||||
main/render.c: Due to additive blending, transparent sprites will become invivible in font of white surfaces (lamps). Fix that with a little desaturation
|
||||
main/net_udp.h: Made UPID_GAME_INFO_SIZE, UPID_GAME_INFO_LITE_SIZE and UPID_SEQUENCE_SIZE change if NETGAME_NAME_LEN, MISSION_NAME_LEN or CALLSIGN_LEN changes, fixes bug where joining games was not possible anymore due to recent change of MISSION_NAME_LEN
|
||||
main/multi.c: use const ubyte for multi_do_powcap_update()
|
||||
main/gauges.c: Adjusted SB_PRIMARY_W_BOX_RIGHT_L to fit perfectly
|
||||
|
||||
20130408
|
||||
--------
|
||||
main/gamecntl.c, main/gamerend.c, main/gauges.c, main/gauges.h: Added 4th alternative HUD mode for no HUD rendering, aka Immersion mode
|
||||
main/menu.c, main/playsave.c, main/playsave.h, main/weapons.c: Added option to ignore cycling weapons that are not on autoselect list
|
||||
|
||||
20130406
|
||||
--------
|
||||
d1x-rebirth.xcodeproj/project.pbxproj, editor/ehostage.c, main/custom.c: Updated Xcode project, changed references to error.h to dxxerror.h, since it was renamed
|
||||
.gitignore: Added .gitignore
|
||||
|
||||
20130405
|
||||
--------
|
||||
SConstruct: For the assembler build, make sure platform_settings is accessed from self, likely preventing a compiling error
|
||||
SConstruct: Changes towards building using SCons on Mac OS X
|
||||
|
||||
20130122
|
||||
--------
|
||||
README.RPi, SConstruct, arch/ogl/gr.c: Support for Raspberry Pi - patch by derhass
|
||||
main/controls.c: Increased ship wiggle from 20FPS- to 30FPS-base as I think this more representy the 486 play style - feels way more natural to me, too
|
||||
|
||||
20130119
|
||||
--------
|
||||
main/gamerend.c, main/menu.c, main/multi.c, main/multi.h, main/net_udp.c, main/playsave.c, main/playsave.h: Added Rankings functionality like in D2X-Rebirth while still utilizing eff file from original D1X source
|
||||
main/multi.c, main/multi.h: Decrease personal score when killing multi buddy and don't increment towards kill goal
|
||||
|
||||
20130117
|
||||
--------
|
||||
main/render.c: Fix click-selection in the editor for OpenGL implementations that insist on point blending
|
||||
|
|
72
d1x-rebirth/README.RPi
Normal file
72
d1x-rebirth/README.RPi
Normal file
|
@ -0,0 +1,72 @@
|
|||
DXX-Rebirth for the Raspberry Pi
|
||||
|
||||
BUILDING:
|
||||
=========
|
||||
Make sure you have installed (the development packages of) all of the required
|
||||
libraries (libsdl, libphysfs, ...). For building, you will also need scons (and
|
||||
for that, python). Most linux distributions should contain all the required
|
||||
packages, debain/raspbian do so for sure. Using a distribution with hardfp ABI
|
||||
is recommended for optimal performance. I developed/tested this on a raspbian
|
||||
wheezy.
|
||||
|
||||
To build directly on the device, just run:
|
||||
|
||||
scons raspberrypi=1 [... other options (see scons -h)...]
|
||||
|
||||
This assumes that the development files (libs/headers) for the VideoCore APIs
|
||||
are located in /opt/vc. You can use rpi_vc_path to specify another location.
|
||||
|
||||
Currently, there is no direct support for crosscompiling.
|
||||
|
||||
RUNNING:
|
||||
========
|
||||
The game should run with X11 or directly on the console (libsdl with fbcon/
|
||||
directfb driver).
|
||||
|
||||
NOTE: *** PLEASE USE THE 128/128MB MEMORY SPLIT ***
|
||||
|
||||
The game might completely freeze or diplay messed up graphics in
|
||||
out-of-(GPU)-memory situations. If you want to run it with the 192/64MB memory
|
||||
split, you might be able to do so by setting the texture filter to "NONE" in
|
||||
the graphics options. (This disables mip mapping and reduces the memory
|
||||
requirements of the textures. Note that the "BILINEAR" filter still uses
|
||||
mipmapping).
|
||||
|
||||
If the game freezes during the "Prepare for Descent" phase when loading a
|
||||
level, you probably do not have enough GPU memory.
|
||||
|
||||
RUNNING ON X11:
|
||||
===============
|
||||
Recommendation is to use fullscreen mode. However, you can run in "windowed"
|
||||
mode, too. The game will open an X11 window in that case, and the actual game
|
||||
output will be an overlay of the same size, but not at the same position, and
|
||||
always on top (and completely out of control of the X Server). Game input is
|
||||
still handled via the X11 window, so make sure it has the focus.
|
||||
|
||||
RUNNING ON THE CONSOLE:
|
||||
=======================
|
||||
libsdl supports running directly on the Linux console. While the SDL Video mode
|
||||
is technically not required on the RPi, we still have to use it to get all the
|
||||
input events we need. libsdl seems to have problems on the RPi, I always get a
|
||||
crash in libsdl when trying to change the resolution. To avoid such crashes,
|
||||
the code will try to detect if it is running on the console and activate a hack
|
||||
to prevent switching the resolution. Note that the in-game framebuffer
|
||||
resolution can still be changed, the RPi will just scale the output to the
|
||||
initial resolution (in "fullscreen" mode). "Windowed" mode will just result in
|
||||
unscaled output. As libsdl creates a black screen, you will not be able to have
|
||||
the "Window" on top of the linux console output :(
|
||||
|
||||
NOTE: You might need root privileges to use the libsdl fbcon/directfb drivers.
|
||||
|
||||
BUGS, SUGGESTIONS AND FEEDBACK:
|
||||
===============================
|
||||
|
||||
The RPi patch was written by:
|
||||
Marcel Heinz <derhass@arcor.de>
|
||||
|
||||
Send bug reports, suggestions and other feedback regarding the operation
|
||||
on the RPi to me via email, or post to the official dxx-rebirth forum at:
|
||||
http://www.dxx-rebirth.com/frm/index.php
|
||||
|
||||
-- derhass, 2012-08-09
|
||||
|
|
@ -64,13 +64,15 @@ void display_mac_alert(char *message, int error)
|
|||
}
|
||||
else
|
||||
{
|
||||
// This #if guard removes both compiler warnings
|
||||
// and complications if we didn't link the (older) Mac OS X SDK that actually supports the following.
|
||||
#if !defined(MAC_OS_X_VERSION_MAX_ALLOWED) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4)
|
||||
Str255 error_text = "\pSorry, a critical error has occurred.";
|
||||
Str255 text;
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_MAX_ALLOWED) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) // kill warning
|
||||
|
||||
CopyCStringToPascal(message, text);
|
||||
#endif
|
||||
StandardAlert(error ? kAlertStopAlert : kAlertNoteAlert, error ? error_text : text, error ? text : NULL, 0, &itemHit);
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((wind = window_get_front()))
|
||||
|
|
239
d1x-rebirth/arch/cocoa/SDLMain.m
Executable file → Normal file
239
d1x-rebirth/arch/cocoa/SDLMain.m
Executable file → Normal file
|
@ -5,35 +5,69 @@
|
|||
Feel free to customize this file to suit your needs
|
||||
*/
|
||||
|
||||
#import <SDL/SDL.h>
|
||||
#import "SDLMain.h"
|
||||
#import <sys/param.h> /* for MAXPATHLEN */
|
||||
#import <unistd.h>
|
||||
#include "SDL.h"
|
||||
#include "SDLMain.h"
|
||||
#include <sys/param.h> /* for MAXPATHLEN */
|
||||
#include <unistd.h>
|
||||
|
||||
/* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
|
||||
but the method still is there and works. To avoid warnings, we declare
|
||||
it ourselves here. */
|
||||
@interface NSApplication(SDL_Missing_Methods)
|
||||
- (void)setAppleMenu:(NSMenu *)menu;
|
||||
@end
|
||||
|
||||
/* Use this flag to determine whether we use SDLMain.nib or not */
|
||||
#define SDL_USE_NIB_FILE 0
|
||||
|
||||
/* Use this flag to determine whether we use CPS (docking) or not */
|
||||
#define SDL_USE_CPS 1
|
||||
#ifdef SDL_USE_CPS
|
||||
/* Portions of CPS.h */
|
||||
typedef struct CPSProcessSerNum
|
||||
{
|
||||
UInt32 lo;
|
||||
UInt32 hi;
|
||||
} CPSProcessSerNum;
|
||||
|
||||
extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn);
|
||||
extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
|
||||
extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn);
|
||||
|
||||
#endif /* SDL_USE_CPS */
|
||||
|
||||
static int gArgc;
|
||||
static char **gArgv;
|
||||
static BOOL gFinderLaunch;
|
||||
static BOOL gCalledAppMainline = FALSE;
|
||||
|
||||
static NSString *getApplicationName(void)
|
||||
{
|
||||
const NSDictionary *dict;
|
||||
NSString *appName = 0;
|
||||
|
||||
/* Determine the application name */
|
||||
dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
|
||||
if (dict)
|
||||
appName = [dict objectForKey: @"CFBundleName"];
|
||||
|
||||
if (![appName length])
|
||||
appName = [[NSProcessInfo processInfo] processName];
|
||||
|
||||
return appName;
|
||||
}
|
||||
|
||||
#if SDL_USE_NIB_FILE
|
||||
/* A helper category for NSString */
|
||||
@interface NSString (ReplaceSubString)
|
||||
- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
|
||||
@end
|
||||
#else
|
||||
/* An internal Apple class used to setup Apple menus */
|
||||
@interface NSAppleMenuController:NSObject {}
|
||||
- (void)controlMenu:(NSMenu *)aMenu;
|
||||
@end
|
||||
#endif
|
||||
|
||||
@interface SDLApplication : NSApplication
|
||||
@interface NSApplication (SDLApplication)
|
||||
@end
|
||||
|
||||
@implementation SDLApplication
|
||||
@implementation NSApplication (SDLApplication)
|
||||
/* Invoked from the Quit menu item */
|
||||
- (void)terminate:(id)sender
|
||||
{
|
||||
|
@ -44,31 +78,22 @@ static BOOL gFinderLaunch;
|
|||
}
|
||||
@end
|
||||
|
||||
|
||||
/* The main class of the application, the application's delegate */
|
||||
@implementation SDLMain
|
||||
|
||||
/* Set the working directory to the .app's parent directory */
|
||||
- (void) setupWorkingDirectory:(BOOL)shouldChdir
|
||||
{
|
||||
char parentdir[MAXPATHLEN];
|
||||
char *c;
|
||||
|
||||
strncpy ( parentdir, gArgv[0], sizeof(parentdir) );
|
||||
c = (char*) parentdir;
|
||||
|
||||
while (*c != '\0') /* go to end */
|
||||
c++;
|
||||
|
||||
while (*c != '/') /* back up to parent */
|
||||
c--;
|
||||
|
||||
*c++ = '\0'; /* cut off last part (binary name) */
|
||||
|
||||
if (shouldChdir)
|
||||
{
|
||||
assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */
|
||||
assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */
|
||||
char parentdir[MAXPATHLEN];
|
||||
CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||
CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
|
||||
if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) {
|
||||
chdir(parentdir); /* chdir to the binary app's parent */
|
||||
}
|
||||
CFRelease(url);
|
||||
CFRelease(url2);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,43 +119,60 @@ static BOOL gFinderLaunch;
|
|||
if ([menuItem hasSubmenu])
|
||||
[self fixMenu:[menuItem submenu] withAppName:appName];
|
||||
}
|
||||
[ aMenu sizeToFit ];
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void setupAppleMenu(void)
|
||||
static void setApplicationMenu(void)
|
||||
{
|
||||
/* warning: this code is very odd */
|
||||
NSAppleMenuController *appleMenuController;
|
||||
NSMenu *appleMenu;
|
||||
NSMenuItem *appleMenuItem;
|
||||
|
||||
appleMenuController = [[NSAppleMenuController alloc] init];
|
||||
appleMenu = [[NSMenu alloc] initWithTitle:@""];
|
||||
appleMenuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
|
||||
NSMenuItem *menuItem;
|
||||
NSString *title;
|
||||
NSString *appName;
|
||||
|
||||
[appleMenuItem setSubmenu:appleMenu];
|
||||
appName = getApplicationName();
|
||||
appleMenu = [[NSMenu alloc] initWithTitle:@""];
|
||||
|
||||
/* Add menu items */
|
||||
title = [@"About " stringByAppendingString:appName];
|
||||
[appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
|
||||
|
||||
/* yes, we do need to add it and then remove it --
|
||||
if you don't add it, it doesn't get displayed
|
||||
if you don't remove it, you have an extra, titleless item in the menubar
|
||||
when you remove it, it appears to stick around
|
||||
very, very odd */
|
||||
[[NSApp mainMenu] addItem:appleMenuItem];
|
||||
[appleMenuController controlMenu:appleMenu];
|
||||
[[NSApp mainMenu] removeItem:appleMenuItem];
|
||||
[appleMenu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
title = [@"Hide " stringByAppendingString:appName];
|
||||
[appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
|
||||
|
||||
menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
|
||||
[menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
|
||||
|
||||
[appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
|
||||
|
||||
[appleMenu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
title = [@"Quit " stringByAppendingString:appName];
|
||||
[appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
|
||||
|
||||
|
||||
/* Put menu into the menubar */
|
||||
menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
|
||||
[menuItem setSubmenu:appleMenu];
|
||||
[[NSApp mainMenu] addItem:menuItem];
|
||||
|
||||
/* Tell the application object that this is now the application menu */
|
||||
[NSApp setAppleMenu:appleMenu];
|
||||
|
||||
/* Finally give up our references to the objects */
|
||||
[appleMenu release];
|
||||
[appleMenuItem release];
|
||||
[menuItem release];
|
||||
}
|
||||
|
||||
/* Create a window menu */
|
||||
void setupWindowMenu(void)
|
||||
static void setupWindowMenu(void)
|
||||
{
|
||||
NSMenu *windowMenu;
|
||||
NSMenuItem *windowMenuItem;
|
||||
NSMenuItem *menuItem;
|
||||
|
||||
NSMenu *windowMenu;
|
||||
NSMenuItem *windowMenuItem;
|
||||
NSMenuItem *menuItem;
|
||||
|
||||
windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
|
||||
|
||||
|
@ -153,19 +195,30 @@ void setupWindowMenu(void)
|
|||
}
|
||||
|
||||
/* Replacement for NSApplicationMain */
|
||||
void CustomApplicationMain (argc, argv)
|
||||
static void CustomApplicationMain (int argc, char **argv)
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
SDLMain *sdlMain;
|
||||
|
||||
/* Ensure the application object is initialised */
|
||||
[SDLApplication sharedApplication];
|
||||
[NSApplication sharedApplication];
|
||||
|
||||
#ifdef SDL_USE_CPS
|
||||
{
|
||||
CPSProcessSerNum PSN;
|
||||
/* Tell the dock about us */
|
||||
if (!CPSGetCurrentProcess(&PSN))
|
||||
if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
|
||||
if (!CPSSetFrontProcess(&PSN))
|
||||
[NSApplication sharedApplication];
|
||||
}
|
||||
#endif /* SDL_USE_CPS */
|
||||
|
||||
/* Set up the menubar */
|
||||
[NSApp setMainMenu:[[NSMenu alloc] init]];
|
||||
setupAppleMenu();
|
||||
setApplicationMenu();
|
||||
setupWindowMenu();
|
||||
|
||||
|
||||
/* Create SDLMain and make it the app delegate */
|
||||
sdlMain = [[SDLMain alloc] init];
|
||||
[NSApp setDelegate:sdlMain];
|
||||
|
@ -179,6 +232,56 @@ void CustomApplicationMain (argc, argv)
|
|||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Catch document open requests...this lets us notice files when the app
|
||||
* was launched by double-clicking a document, or when a document was
|
||||
* dragged/dropped on the app's icon. You need to have a
|
||||
* CFBundleDocumentsType section in your Info.plist to get this message,
|
||||
* apparently.
|
||||
*
|
||||
* Files are added to gArgv, so to the app, they'll look like command line
|
||||
* arguments. Previously, apps launched from the finder had nothing but
|
||||
* an argv[0].
|
||||
*
|
||||
* This message may be received multiple times to open several docs on launch.
|
||||
*
|
||||
* This message is ignored once the app's mainline has been called.
|
||||
*/
|
||||
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
|
||||
{
|
||||
const char *temparg;
|
||||
size_t arglen;
|
||||
char *arg;
|
||||
char **newargv;
|
||||
|
||||
if (!gFinderLaunch) /* MacOS is passing command line args. */
|
||||
return FALSE;
|
||||
|
||||
if (gCalledAppMainline) /* app has started, ignore this document. */
|
||||
return FALSE;
|
||||
|
||||
temparg = [filename UTF8String];
|
||||
arglen = SDL_strlen(temparg) + 1;
|
||||
arg = (char *) SDL_malloc(arglen);
|
||||
if (arg == NULL)
|
||||
return FALSE;
|
||||
|
||||
newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
|
||||
if (newargv == NULL)
|
||||
{
|
||||
SDL_free(arg);
|
||||
return FALSE;
|
||||
}
|
||||
gArgv = newargv;
|
||||
|
||||
SDL_strlcpy(arg, temparg, arglen);
|
||||
gArgv[gArgc++] = arg;
|
||||
gArgv[gArgc] = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Called when the internal event loop has just started running */
|
||||
- (void) applicationDidFinishLaunching: (NSNotification *) note
|
||||
{
|
||||
|
@ -189,10 +292,11 @@ void CustomApplicationMain (argc, argv)
|
|||
|
||||
#if SDL_USE_NIB_FILE
|
||||
/* Set the main menu to contain the real app name instead of "SDL App" */
|
||||
[self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]];
|
||||
[self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
|
||||
#endif
|
||||
|
||||
/* Hand off to main application code */
|
||||
gCalledAppMainline = TRUE;
|
||||
status = SDL_main (gArgc, gArgv);
|
||||
|
||||
/* We're done, thank you for playing */
|
||||
|
@ -213,7 +317,7 @@ void CustomApplicationMain (argc, argv)
|
|||
NSString *result;
|
||||
|
||||
bufferSize = selfLen + aStringLen - aRange.length;
|
||||
buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar));
|
||||
buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar));
|
||||
|
||||
/* Get first part into buffer */
|
||||
localRange.location = 0;
|
||||
|
@ -250,29 +354,28 @@ void CustomApplicationMain (argc, argv)
|
|||
/* Main entry point to executable - should *not* be SDL_main! */
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
|
||||
/* Copy the arguments into a global variable */
|
||||
int i;
|
||||
|
||||
/* This is passed if we are launched by double-clicking */
|
||||
if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
|
||||
gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
|
||||
gArgv[0] = argv[0];
|
||||
gArgv[1] = NULL;
|
||||
gArgc = 1;
|
||||
gFinderLaunch = YES;
|
||||
gFinderLaunch = YES;
|
||||
} else {
|
||||
int i;
|
||||
gArgc = argc;
|
||||
gFinderLaunch = NO;
|
||||
gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
|
||||
for (i = 0; i <= argc; i++)
|
||||
gArgv[i] = argv[i];
|
||||
gFinderLaunch = NO;
|
||||
}
|
||||
gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1));
|
||||
assert (gArgv != NULL);
|
||||
for (i = 0; i < gArgc; i++)
|
||||
gArgv[i] = argv[i];
|
||||
gArgv[i] = NULL;
|
||||
|
||||
#if SDL_USE_NIB_FILE
|
||||
[SDLApplication poseAsClass:[NSApplication class]];
|
||||
NSApplicationMain (argc, argv);
|
||||
#else
|
||||
CustomApplicationMain (argc, argv);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ def TOOL_BUNDLE(env):
|
|||
env['BUNDLEPREFIX'] = ''
|
||||
env['BUNDLESUFFIX'] = ''
|
||||
env['BUNDLEDIRSUFFIX'] = '.bundle'
|
||||
env['FRAMEWORKS'] = ['-framework Carbon', '-framework System']
|
||||
#env['FRAMEWORKS'] = ['-framework Carbon', '-framework System']
|
||||
env['BUNDLE'] = '$SHLINK'
|
||||
env['BUNDLEFLAGS'] = ' -bundle'
|
||||
env['BUNDLECOM'] = '$BUNDLE $BUNDLEFLAGS -o ${TARGET} $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $FRAMEWORKS'
|
||||
|
|
|
@ -23,12 +23,10 @@
|
|||
676032FB066B39CE008A67A3 /* kmatrix.c in Sources */ = {isa = PBXBuildFile; fileRef = 676032F9066B39CE008A67A3 /* kmatrix.c */; };
|
||||
6766BAC20668B3A000A6052D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
676AC1C20668A938007173EB /* u_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B4490F066880A300DF26D8 /* u_mem.h */; };
|
||||
676AC1C30668A938007173EB /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44913066880C400DF26D8 /* error.h */; };
|
||||
676AC1C40668A938007173EB /* gr.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44914066880C400DF26D8 /* gr.h */; };
|
||||
676AC1C50668A938007173EB /* grdef.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44915066880C400DF26D8 /* grdef.h */; };
|
||||
676AC1C70668A938007173EB /* byteswap.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CE4F0668852C00056A5A /* byteswap.h */; };
|
||||
676AC1C80668A938007173EB /* rle.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CE500668852C00056A5A /* rle.h */; };
|
||||
676AC1CA0668A938007173EB /* u_dpmi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF090668878F00056A5A /* u_dpmi.h */; };
|
||||
676AC1CE0668A938007173EB /* fix.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF420668881F00056A5A /* fix.h */; };
|
||||
676AC1CF0668A938007173EB /* palette.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF4E0668883900056A5A /* palette.h */; };
|
||||
676AC1D00668A938007173EB /* pcx.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF620668885500056A5A /* pcx.h */; };
|
||||
|
@ -58,7 +56,6 @@
|
|||
676AC1FB0668A938007173EB /* rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B4414C066878B300DF26D8 /* rect.c */; };
|
||||
676AC1FC0668A938007173EB /* rle.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B4414D066878B300DF26D8 /* rle.c */; };
|
||||
676AC1FD0668A938007173EB /* scalec.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B44151066878B300DF26D8 /* scalec.c */; };
|
||||
676AC1FE0668A938007173EB /* tmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B44152066878B300DF26D8 /* tmerge.c */; };
|
||||
676AC1FF0668A938007173EB /* clipper.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441760668792300DF26D8 /* clipper.c */; };
|
||||
676AC2000668A938007173EB /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441780668792300DF26D8 /* draw.c */; };
|
||||
676AC2010668A938007173EB /* globvars.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441790668792300DF26D8 /* globvars.c */; };
|
||||
|
@ -146,7 +143,6 @@
|
|||
676AC2770668A939007173EB /* 3d.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF8D066888DD00056A5A /* 3d.h */; };
|
||||
676AC2780668A939007173EB /* args.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791D00B066889CD00056A5A /* args.h */; };
|
||||
676AC2790668A939007173EB /* byteswap.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CE4F0668852C00056A5A /* byteswap.h */; };
|
||||
676AC27E0668A939007173EB /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44913066880C400DF26D8 /* error.h */; };
|
||||
676AC2800668A939007173EB /* fix.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF420668881F00056A5A /* fix.h */; };
|
||||
676AC2810668A939007173EB /* gr.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44914066880C400DF26D8 /* gr.h */; };
|
||||
676AC2820668A939007173EB /* grdef.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44915066880C400DF26D8 /* grdef.h */; };
|
||||
|
@ -159,7 +155,6 @@
|
|||
676AC2920668A939007173EB /* strutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791D0A306688AB900056A5A /* strutil.h */; };
|
||||
676AC2930668A939007173EB /* texmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CFB10668891200056A5A /* texmap.h */; };
|
||||
676AC2940668A939007173EB /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791D04B06688A2E00056A5A /* timer.h */; };
|
||||
676AC2950668A939007173EB /* u_dpmi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791CF090668878F00056A5A /* u_dpmi.h */; };
|
||||
676AC2960668A939007173EB /* u_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B4490F066880A300DF26D8 /* u_mem.h */; };
|
||||
676AC2970668A939007173EB /* vecmat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6791D026066889F100056A5A /* vecmat.h */; };
|
||||
676AC29C0668A939007173EB /* 2dsline.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B44139066878B300DF26D8 /* 2dsline.c */; };
|
||||
|
@ -179,7 +174,6 @@
|
|||
676AC2AB0668A939007173EB /* rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B4414C066878B300DF26D8 /* rect.c */; };
|
||||
676AC2AC0668A939007173EB /* rle.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B4414D066878B300DF26D8 /* rle.c */; };
|
||||
676AC2AD0668A939007173EB /* scalec.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B44151066878B300DF26D8 /* scalec.c */; };
|
||||
676AC2AE0668A939007173EB /* tmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B44152066878B300DF26D8 /* tmerge.c */; };
|
||||
676AC2AF0668A939007173EB /* clipper.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441760668792300DF26D8 /* clipper.c */; };
|
||||
676AC2B00668A939007173EB /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441780668792300DF26D8 /* draw.c */; };
|
||||
676AC2B10668A939007173EB /* globvars.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B441790668792300DF26D8 /* globvars.c */; };
|
||||
|
@ -413,6 +407,10 @@
|
|||
EBAFC290088E67CD006329AD /* digiobj.c in Sources */ = {isa = PBXBuildFile; fileRef = EBAFC28F088E67CD006329AD /* digiobj.c */; };
|
||||
EBAFC291088E67CD006329AD /* digiobj.c in Sources */ = {isa = PBXBuildFile; fileRef = EBAFC28F088E67CD006329AD /* digiobj.c */; };
|
||||
EBAFC2C0088E6BC7006329AD /* conf.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAFC269088E508D006329AD /* conf.h */; };
|
||||
EBC4BAFA170E64540033D261 /* vers_id.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC4BAF9170E63E90033D261 /* vers_id.c */; };
|
||||
EBC4BAFB170E64550033D261 /* vers_id.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC4BAF9170E63E90033D261 /* vers_id.c */; };
|
||||
EBC4BB11170E660B0033D261 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC4BAFC170E64760033D261 /* hash.c */; };
|
||||
EBC4BB12170E660C0033D261 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC4BAFC170E64760033D261 /* hash.c */; };
|
||||
EBC58E710D489E19007C8ABF /* args.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC58E700D489E19007C8ABF /* args.c */; };
|
||||
EBC58E720D489E19007C8ABF /* args.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC58E700D489E19007C8ABF /* args.c */; };
|
||||
EBC652030890D632004FCAA3 /* bmread.c in Sources */ = {isa = PBXBuildFile; fileRef = EBC652010890D632004FCAA3 /* bmread.c */; };
|
||||
|
@ -499,14 +497,8 @@
|
|||
EBEEB1EA0D2B317800FF39B4 /* custom.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1E50D2B317700FF39B4 /* custom.h */; };
|
||||
EBEEB1EE0D2B317800FF39B4 /* custom.c in Sources */ = {isa = PBXBuildFile; fileRef = EBEEB1E40D2B317700FF39B4 /* custom.c */; };
|
||||
EBEEB1EF0D2B317800FF39B4 /* custom.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1E50D2B317700FF39B4 /* custom.h */; };
|
||||
EBEEB1FF0D2B320C00FF39B4 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = EBEEB1F30D2B320B00FF39B4 /* hash.c */; };
|
||||
EBEEB2000D2B320C00FF39B4 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1F40D2B320B00FF39B4 /* hash.h */; };
|
||||
EBEEB2090D2B320C00FF39B4 /* script.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1FD0D2B320B00FF39B4 /* script.h */; };
|
||||
EBEEB20B0D2B320C00FF39B4 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = EBEEB1F30D2B320B00FF39B4 /* hash.c */; };
|
||||
EBEEB20C0D2B320C00FF39B4 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1F40D2B320B00FF39B4 /* hash.h */; };
|
||||
EBEEB2150D2B320C00FF39B4 /* script.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEB1FD0D2B320B00FF39B4 /* script.h */; };
|
||||
EBEEB29F0D2B378B00FF39B4 /* compare.c in Sources */ = {isa = PBXBuildFile; fileRef = EBEEB29B0D2B378B00FF39B4 /* compare.c */; };
|
||||
EBEEB2A30D2B378B00FF39B4 /* compare.c in Sources */ = {isa = PBXBuildFile; fileRef = EBEEB29B0D2B378B00FF39B4 /* compare.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
|
@ -567,7 +559,7 @@
|
|||
670E3796066C50C30085B671 /* CHANGELOG.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CHANGELOG.txt; sourceTree = "<group>"; };
|
||||
6710AAFE066B2D6100DB0F68 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = "<absolute>"; };
|
||||
6710AB68066B2E0400DB0F68 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
|
||||
675ED123066B196700E42AA7 /* d1x-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "d1x-Info.plist"; sourceTree = "<group>"; };
|
||||
675ED123066B196700E42AA7 /* d1x-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "d1x-Info.plist"; sourceTree = "<group>"; };
|
||||
676032DC066B399A008A67A3 /* multi.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = multi.c; sourceTree = "<group>"; };
|
||||
676032DD066B399A008A67A3 /* multibot.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = multibot.c; sourceTree = "<group>"; };
|
||||
676032F9066B39CE008A67A3 /* kmatrix.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kmatrix.c; sourceTree = "<group>"; };
|
||||
|
@ -576,7 +568,6 @@
|
|||
676AC31D0668A939007173EB /* d1xgl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = d1xgl.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6791CE4F0668852C00056A5A /* byteswap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = byteswap.h; sourceTree = "<group>"; };
|
||||
6791CE500668852C00056A5A /* rle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = rle.h; sourceTree = "<group>"; };
|
||||
6791CF090668878F00056A5A /* u_dpmi.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = u_dpmi.h; sourceTree = "<group>"; };
|
||||
6791CF420668881F00056A5A /* fix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = fix.h; sourceTree = "<group>"; };
|
||||
6791CF4E0668883900056A5A /* palette.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = palette.h; sourceTree = "<group>"; };
|
||||
6791CF620668885500056A5A /* pcx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pcx.h; sourceTree = "<group>"; };
|
||||
|
@ -606,7 +597,6 @@
|
|||
67B4414C066878B300DF26D8 /* rect.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
||||
67B4414D066878B300DF26D8 /* rle.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = rle.c; sourceTree = "<group>"; };
|
||||
67B44151066878B300DF26D8 /* scalec.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = scalec.c; sourceTree = "<group>"; };
|
||||
67B44152066878B300DF26D8 /* tmerge.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = tmerge.c; sourceTree = "<group>"; };
|
||||
67B441760668792300DF26D8 /* clipper.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = clipper.c; sourceTree = "<group>"; };
|
||||
67B441780668792300DF26D8 /* draw.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = draw.c; sourceTree = "<group>"; };
|
||||
67B441790668792300DF26D8 /* globvars.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = globvars.c; sourceTree = "<group>"; };
|
||||
|
@ -691,12 +681,11 @@
|
|||
67B4488906687E5E00DF26D8 /* scanline.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = scanline.c; sourceTree = "<group>"; };
|
||||
67B4489206687E5E00DF26D8 /* tmapflat.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = tmapflat.c; sourceTree = "<group>"; };
|
||||
67B4490F066880A300DF26D8 /* u_mem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = u_mem.h; sourceTree = "<group>"; };
|
||||
67B44913066880C400DF26D8 /* error.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = "<group>"; };
|
||||
67B44914066880C400DF26D8 /* gr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gr.h; sourceTree = "<group>"; };
|
||||
67B44915066880C400DF26D8 /* grdef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = grdef.h; sourceTree = "<group>"; };
|
||||
67F6FED0066B13B400443922 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = arch/cocoa/SDLMain.h; sourceTree = "<group>"; };
|
||||
67F6FED1066B13B400443922 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = arch/cocoa/SDLMain.m; sourceTree = "<group>"; };
|
||||
67F6FEEA066B13D900443922 /* d1xgl-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "d1xgl-Info.plist"; sourceTree = "<group>"; };
|
||||
67F6FEEA066B13D900443922 /* d1xgl-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "d1xgl-Info.plist"; sourceTree = "<group>"; };
|
||||
EB01AFA90A65323200EA4C7C /* newdemo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = newdemo.h; sourceTree = "<group>"; };
|
||||
EB0420B90A341041002CC961 /* multi.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = multi.h; sourceTree = "<group>"; };
|
||||
EB0420BB0A341042002CC961 /* morph.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = morph.h; sourceTree = "<group>"; };
|
||||
|
@ -734,7 +723,6 @@
|
|||
EB0420DE0A341042002CC961 /* newmenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = newmenu.h; sourceTree = "<group>"; };
|
||||
EB0420E10A341042002CC961 /* digi.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = digi.h; sourceTree = "<group>"; };
|
||||
EB0420E30A341042002CC961 /* gameseq.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gameseq.h; sourceTree = "<group>"; };
|
||||
EB0420E40A341042002CC961 /* desc_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = desc_id.h; sourceTree = "<group>"; };
|
||||
EB0420E50A341042002CC961 /* credits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = credits.h; sourceTree = "<group>"; };
|
||||
EB0420E70A341042002CC961 /* multibot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = multibot.h; sourceTree = "<group>"; };
|
||||
EB0420E80A341042002CC961 /* gameseg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gameseg.h; sourceTree = "<group>"; };
|
||||
|
@ -764,7 +752,6 @@
|
|||
EB0421060A341042002CC961 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
|
||||
EB0929F712A10889004D9A79 /* messagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messagebox.h; sourceTree = "<group>"; };
|
||||
EB0929F812A10889004D9A79 /* messagebox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = messagebox.c; sourceTree = "<group>"; };
|
||||
EB092A3912A2151A004D9A79 /* messagebox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = messagebox.c; sourceTree = "<group>"; };
|
||||
EB092A3A12A21527004D9A79 /* messagebox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = messagebox.c; sourceTree = "<group>"; };
|
||||
EB092A4912A21A14004D9A79 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
||||
EB1283BE0D59D94800A991A3 /* d1x.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = d1x.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
|
@ -784,7 +771,6 @@
|
|||
EB35ABDF0FB199B800C36930 /* window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = "<group>"; };
|
||||
EB35ABE00FB199B800C36930 /* window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = "<group>"; };
|
||||
EB380D7C0E168B1900EBD9AD /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
EB3CA4F90E97740E00FB1E93 /* tracker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tracker.h; sourceTree = "<group>"; };
|
||||
EB6142451501EDC9004E2AE8 /* curve.pad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curve.pad; sourceTree = "<group>"; };
|
||||
EB6142461501EDC9004E2AE8 /* dummy.pad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dummy.pad; sourceTree = "<group>"; };
|
||||
EB6142471501EDC9004E2AE8 /* group.pad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = group.pad; sourceTree = "<group>"; };
|
||||
|
@ -820,6 +806,13 @@
|
|||
EBAFC26A088E508D006329AD /* descent.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = descent.r; sourceTree = "<group>"; };
|
||||
EBAFC26D088E508D006329AD /* SDL_main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = SDL_main.c; sourceTree = "<group>"; };
|
||||
EBAFC28F088E67CD006329AD /* digiobj.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = digiobj.c; sourceTree = "<group>"; };
|
||||
EBC4BAF4170E62160033D261 /* dxxerror.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dxxerror.h; sourceTree = "<group>"; };
|
||||
EBC4BAF5170E62160033D261 /* makesig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = makesig.h; sourceTree = "<group>"; };
|
||||
EBC4BAF6170E62C60033D261 /* tool_bundle.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = tool_bundle.py; path = arch/cocoa/tool_bundle.py; sourceTree = "<group>"; };
|
||||
EBC4BAF7170E63380033D261 /* d1x-rebirth.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "d1x-rebirth.rc"; sourceTree = "<group>"; };
|
||||
EBC4BAF8170E63890033D261 /* esegment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = esegment.h; sourceTree = "<group>"; };
|
||||
EBC4BAF9170E63E90033D261 /* vers_id.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vers_id.c; sourceTree = "<group>"; };
|
||||
EBC4BAFC170E64760033D261 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
|
||||
EBC58E700D489E19007C8ABF /* args.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = args.c; sourceTree = "<group>"; };
|
||||
EBC650800890C882004FCAA3 /* autosave.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = autosave.c; sourceTree = "<group>"; };
|
||||
EBC650970890C882004FCAA3 /* centers.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = centers.c; sourceTree = "<group>"; };
|
||||
|
@ -837,7 +830,6 @@
|
|||
EBC650A90890C882004FCAA3 /* kcurve.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kcurve.c; sourceTree = "<group>"; };
|
||||
EBC650AB0890C882004FCAA3 /* kfuncs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kfuncs.c; sourceTree = "<group>"; };
|
||||
EBC650AD0890C882004FCAA3 /* kgame.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kgame.c; sourceTree = "<group>"; };
|
||||
EBC650AE0890C882004FCAA3 /* kgroup.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kgroup.c; sourceTree = "<group>"; };
|
||||
EBC650AF0890C882004FCAA3 /* khelp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = khelp.c; sourceTree = "<group>"; };
|
||||
EBC650B00890C882004FCAA3 /* kmine.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kmine.c; sourceTree = "<group>"; };
|
||||
EBC650B10890C882004FCAA3 /* ksegmove.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = ksegmove.c; sourceTree = "<group>"; };
|
||||
|
@ -845,7 +837,6 @@
|
|||
EBC650B30890C882004FCAA3 /* ksegsize.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = ksegsize.c; sourceTree = "<group>"; };
|
||||
EBC650B40890C882004FCAA3 /* ktmap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = ktmap.c; sourceTree = "<group>"; };
|
||||
EBC650B50890C882004FCAA3 /* kview.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = kview.c; sourceTree = "<group>"; };
|
||||
EBC650B60890C882004FCAA3 /* macro.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = macro.c; sourceTree = "<group>"; };
|
||||
EBC650B90890C882004FCAA3 /* med.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = med.c; sourceTree = "<group>"; };
|
||||
EBC650BA0890C882004FCAA3 /* meddraw.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = meddraw.c; sourceTree = "<group>"; };
|
||||
EBC650BD0890C882004FCAA3 /* medmisc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = medmisc.c; sourceTree = "<group>"; };
|
||||
|
@ -914,23 +905,12 @@
|
|||
EBEEB1BD0D2A423E00FF39B4 /* pstypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pstypes.h; sourceTree = "<group>"; };
|
||||
EBEEB1E40D2B317700FF39B4 /* custom.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = custom.c; sourceTree = "<group>"; };
|
||||
EBEEB1E50D2B317700FF39B4 /* custom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = custom.h; sourceTree = "<group>"; };
|
||||
EBEEB1F30D2B320B00FF39B4 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
|
||||
EBEEB1F40D2B320B00FF39B4 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
|
||||
EBEEB1FD0D2B320B00FF39B4 /* script.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = script.h; sourceTree = "<group>"; };
|
||||
EBEEB2190D2B34DE00FF39B4 /* alsadigi.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = alsadigi.c; sourceTree = "<group>"; };
|
||||
EBEEB21A0D2B34DE00FF39B4 /* hmiplay.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = hmiplay.c; sourceTree = "<group>"; };
|
||||
EBEEB2290D2B351400FF39B4 /* music.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = music.h; sourceTree = "<group>"; };
|
||||
EBEEB2540D2B35B000FF39B4 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
|
||||
EBEEB25B0D2B364300FF39B4 /* altsound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = altsound.c; sourceTree = "<group>"; };
|
||||
EBEEB25C0D2B364300FF39B4 /* altsound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = altsound.h; sourceTree = "<group>"; };
|
||||
EBEEB25E0D2B364300FF39B4 /* compbit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = compbit.h; sourceTree = "<group>"; };
|
||||
EBEEB2600D2B364300FF39B4 /* digicomp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = digicomp.c; sourceTree = "<group>"; };
|
||||
EBEEB2610D2B364300FF39B4 /* digicomp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = digicomp.h; sourceTree = "<group>"; };
|
||||
EBEEB2660D2B364300FF39B4 /* mute.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = mute.c; sourceTree = "<group>"; };
|
||||
EBEEB2670D2B364300FF39B4 /* mute.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mute.h; sourceTree = "<group>"; };
|
||||
EBEEB2680D2B364300FF39B4 /* snddecom.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = snddecom.c; sourceTree = "<group>"; };
|
||||
EBEEB2690D2B364300FF39B4 /* snddecom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = snddecom.h; sourceTree = "<group>"; };
|
||||
EBEEB29B0D2B378B00FF39B4 /* compare.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = compare.c; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -978,6 +958,7 @@
|
|||
children = (
|
||||
67F6FED0066B13B400443922 /* SDLMain.h */,
|
||||
67F6FED1066B13B400443922 /* SDLMain.m */,
|
||||
EBC4BAF6170E62C60033D261 /* tool_bundle.py */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
|
@ -1067,14 +1048,6 @@
|
|||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
67603357066B3AE0008A67A3 /* include */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EBEEB2290D2B351400FF39B4 /* music.h */,
|
||||
);
|
||||
path = include;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
676AC04B0668A814007173EB /* ogl */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -1107,7 +1080,6 @@
|
|||
67B4414C066878B300DF26D8 /* rect.c */,
|
||||
67B4414D066878B300DF26D8 /* rle.c */,
|
||||
67B44151066878B300DF26D8 /* scalec.c */,
|
||||
67B44152066878B300DF26D8 /* tmerge.c */,
|
||||
);
|
||||
path = 2d;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
|
@ -1130,18 +1102,6 @@
|
|||
path = 3d;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
67B44193066879B000DF26D8 /* linux */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EB092A3912A2151A004D9A79 /* messagebox.c */,
|
||||
EBEEB2190D2B34DE00FF39B4 /* alsadigi.c */,
|
||||
EBEEB21A0D2B34DE00FF39B4 /* hmiplay.c */,
|
||||
67603357066B3AE0008A67A3 /* include */,
|
||||
);
|
||||
name = linux;
|
||||
path = arch/linux;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
67B441D106687A0200DF26D8 /* sdl */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -1169,7 +1129,6 @@
|
|||
children = (
|
||||
EBAFC268088E508D006329AD /* carbon */,
|
||||
EB3319E60D53341900C799B0 /* include */,
|
||||
67B44193066879B000DF26D8 /* linux */,
|
||||
676AC04B0668A814007173EB /* ogl */,
|
||||
67B441D106687A0200DF26D8 /* sdl */,
|
||||
EBEEB24A0D2B35B000FF39B4 /* win32 */,
|
||||
|
@ -1190,7 +1149,6 @@
|
|||
children = (
|
||||
67B446CF06687CF400DF26D8 /* ai.c */,
|
||||
67B446D206687CF400DF26D8 /* aipath.c */,
|
||||
EBEEB25B0D2B364300FF39B4 /* altsound.c */,
|
||||
67B446D406687CF400DF26D8 /* automap.c */,
|
||||
67B446D606687CF400DF26D8 /* bm.c */,
|
||||
EBC652010890D632004FCAA3 /* bmread.c */,
|
||||
|
@ -1218,7 +1176,6 @@
|
|||
67B4471006687CF400DF26D8 /* gameseg.c */,
|
||||
67B4471206687CF400DF26D8 /* gameseq.c */,
|
||||
67B4471506687CF400DF26D8 /* gauges.c */,
|
||||
EBEEB1F30D2B320B00FF39B4 /* hash.c */,
|
||||
67B4471706687CF400DF26D8 /* hostage.c */,
|
||||
67B4471906687CF400DF26D8 /* hud.c */,
|
||||
67B4471B06687CF400DF26D8 /* inferno.c */,
|
||||
|
@ -1232,7 +1189,6 @@
|
|||
67B4473106687CF400DF26D8 /* morph.c */,
|
||||
676032DC066B399A008A67A3 /* multi.c */,
|
||||
676032DD066B399A008A67A3 /* multibot.c */,
|
||||
EBEEB2660D2B364300FF39B4 /* mute.c */,
|
||||
17DFA6AF10C1A29500674D11 /* net_udp.c */,
|
||||
67B4473D06687CF400DF26D8 /* newdemo.c */,
|
||||
67B4473F06687CF400DF26D8 /* newmenu.c */,
|
||||
|
@ -1257,22 +1213,20 @@
|
|||
67B4477F06687CF500DF26D8 /* text.c */,
|
||||
67B4478206687CF500DF26D8 /* titles.c */,
|
||||
67B4478406687CF500DF26D8 /* vclip.c */,
|
||||
EBC4BAF9170E63E90033D261 /* vers_id.c */,
|
||||
67B4478706687CF500DF26D8 /* wall.c */,
|
||||
67B4478906687CF500DF26D8 /* weapon.c */,
|
||||
EB0421040A341042002CC961 /* ai.h */,
|
||||
EB0421010A341042002CC961 /* aistruct.h */,
|
||||
EBEEB25C0D2B364300FF39B4 /* altsound.h */,
|
||||
EB0421030A341042002CC961 /* automap.h */,
|
||||
EB0421020A341042002CC961 /* bm.h */,
|
||||
EB0420F10A341042002CC961 /* collide.h */,
|
||||
EBEEB25E0D2B364300FF39B4 /* compbit.h */,
|
||||
EB0421060A341042002CC961 /* config.h */,
|
||||
EB0421050A341042002CC961 /* controls.h */,
|
||||
EB0420BF0A341042002CC961 /* cntrlcen.h */,
|
||||
EB0420E50A341042002CC961 /* credits.h */,
|
||||
EBEEB2610D2B364300FF39B4 /* digicomp.h */,
|
||||
EBEEB1E50D2B317700FF39B4 /* custom.h */,
|
||||
EB0420E40A341042002CC961 /* desc_id.h */,
|
||||
EB0420E10A341042002CC961 /* digi.h */,
|
||||
EB0421000A341042002CC961 /* effects.h */,
|
||||
EB0420FF0A341042002CC961 /* endlevel.h */,
|
||||
|
@ -1299,7 +1253,6 @@
|
|||
EB0420BB0A341042002CC961 /* morph.h */,
|
||||
EB0420B90A341041002CC961 /* multi.h */,
|
||||
EB0420E70A341042002CC961 /* multibot.h */,
|
||||
EBEEB2670D2B364300FF39B4 /* mute.h */,
|
||||
17DFA6B210C1A2A300674D11 /* net_udp.h */,
|
||||
EB01AFA90A65323200EA4C7C /* newdemo.h */,
|
||||
EB0420DE0A341042002CC961 /* newmenu.h */,
|
||||
|
@ -1315,7 +1268,6 @@
|
|||
EB0420D30A341042002CC961 /* robot.h */,
|
||||
EB0420D20A341042002CC961 /* scores.h */,
|
||||
EB0420D10A341042002CC961 /* screens.h */,
|
||||
EBEEB1FD0D2B320B00FF39B4 /* script.h */,
|
||||
EB0420D00A341042002CC961 /* segment.h */,
|
||||
EB0420CF0A341042002CC961 /* segpoint.h */,
|
||||
EB0420CE0A341042002CC961 /* slew.h */,
|
||||
|
@ -1360,9 +1312,9 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
EBC58E700D489E19007C8ABF /* args.c */,
|
||||
EBEEB29B0D2B378B00FF39B4 /* compare.c */,
|
||||
EB92BEA40CDD6A570045A32C /* dl_list.c */,
|
||||
67B4486A06687E1000DF26D8 /* error.c */,
|
||||
EBC4BAFC170E64760033D261 /* hash.c */,
|
||||
179E6E9D11F37B3400175C54 /* hmp.c */,
|
||||
EBAC98F90D42497F0017D4BC /* ignorecase.c */,
|
||||
EB1405B912100883002B1CC6 /* physfsx.c */,
|
||||
|
@ -1388,13 +1340,12 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
EBEEB1140D2A329900FF39B4 /* editor */,
|
||||
EB3CA4F80E97740E00FB1E93 /* tracker */,
|
||||
6791CF8D066888DD00056A5A /* 3d.h */,
|
||||
6791D00B066889CD00056A5A /* args.h */,
|
||||
6791CE4F0668852C00056A5A /* byteswap.h */,
|
||||
EB9181090DABA47B0010CB39 /* console.h */,
|
||||
EB92BE680CDD69830045A32C /* dl_list.h */,
|
||||
67B44913066880C400DF26D8 /* error.h */,
|
||||
EBC4BAF4170E62160033D261 /* dxxerror.h */,
|
||||
6791CF420668881F00056A5A /* fix.h */,
|
||||
EBC652120890D6DF004FCAA3 /* func.h */,
|
||||
67B44914066880C400DF26D8 /* gr.h */,
|
||||
|
@ -1404,6 +1355,7 @@
|
|||
EBAC994E0D4250320017D4BC /* ignorecase.h */,
|
||||
EB3319F00D5334B600C799B0 /* internal.h */,
|
||||
EB3319F10D53351600C799B0 /* loadgl.h */,
|
||||
EBC4BAF5170E62160033D261 /* makesig.h */,
|
||||
6791D08F06688A9C00056A5A /* maths.h */,
|
||||
EB3319F20D53351600C799B0 /* ogl_init.h */,
|
||||
6791CF4E0668883900056A5A /* palette.h */,
|
||||
|
@ -1416,8 +1368,6 @@
|
|||
6791D0A306688AB900056A5A /* strutil.h */,
|
||||
6791CFB10668891200056A5A /* texmap.h */,
|
||||
6791D04B06688A2E00056A5A /* timer.h */,
|
||||
EBFD39740E3C1C2300FED206 /* tracker */,
|
||||
6791CF090668878F00056A5A /* u_dpmi.h */,
|
||||
EBC6520F0890D6B7004FCAA3 /* ui.h */,
|
||||
67B4490F066880A300DF26D8 /* u_mem.h */,
|
||||
6791D026066889F100056A5A /* vecmat.h */,
|
||||
|
@ -1443,14 +1393,6 @@
|
|||
path = arch/include;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EB3CA4F80E97740E00FB1E93 /* tracker */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EB3CA4F90E97740E00FB1E93 /* tracker.h */,
|
||||
);
|
||||
path = tracker;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EB6142441501EDC9004E2AE8 /* data */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -1512,7 +1454,6 @@
|
|||
EBC650A90890C882004FCAA3 /* kcurve.c */,
|
||||
EBC650AB0890C882004FCAA3 /* kfuncs.c */,
|
||||
EBC650AD0890C882004FCAA3 /* kgame.c */,
|
||||
EBC650AE0890C882004FCAA3 /* kgroup.c */,
|
||||
EBC650AF0890C882004FCAA3 /* khelp.c */,
|
||||
EBC650B00890C882004FCAA3 /* kmine.c */,
|
||||
EBC650B10890C882004FCAA3 /* ksegmove.c */,
|
||||
|
@ -1520,7 +1461,6 @@
|
|||
EBC650B30890C882004FCAA3 /* ksegsize.c */,
|
||||
EBC650B40890C882004FCAA3 /* ktmap.c */,
|
||||
EBC650B50890C882004FCAA3 /* kview.c */,
|
||||
EBC650B60890C882004FCAA3 /* macro.c */,
|
||||
EBC650B90890C882004FCAA3 /* med.c */,
|
||||
EBC650BA0890C882004FCAA3 /* meddraw.c */,
|
||||
EBC650BD0890C882004FCAA3 /* medmisc.c */,
|
||||
|
@ -1571,6 +1511,7 @@
|
|||
EBEEB1160D2A329900FF39B4 /* editor.h */,
|
||||
EBEEB1170D2A329900FF39B4 /* ehostage.h */,
|
||||
EBEEB1180D2A329900FF39B4 /* eobject.h */,
|
||||
EBC4BAF8170E63890033D261 /* esegment.h */,
|
||||
EBEEB1190D2A329900FF39B4 /* eswitch.h */,
|
||||
EBEEB11A0D2A329900FF39B4 /* info.h */,
|
||||
EBEEB11B0D2A329900FF39B4 /* kdefs.h */,
|
||||
|
@ -1592,6 +1533,7 @@
|
|||
EBEEB24A0D2B35B000FF39B4 /* win32 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EBC4BAF7170E63380033D261 /* d1x-rebirth.rc */,
|
||||
EB092A3A12A21527004D9A79 /* messagebox.c */,
|
||||
EBEEB24F0D2B35B000FF39B4 /* include */,
|
||||
);
|
||||
|
@ -1607,13 +1549,6 @@
|
|||
path = include;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EBFD39740E3C1C2300FED206 /* tracker */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = tracker;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
|
@ -1622,12 +1557,10 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
676AC1C20668A938007173EB /* u_mem.h in Headers */,
|
||||
676AC1C30668A938007173EB /* error.h in Headers */,
|
||||
676AC1C40668A938007173EB /* gr.h in Headers */,
|
||||
676AC1C50668A938007173EB /* grdef.h in Headers */,
|
||||
676AC1C70668A938007173EB /* byteswap.h in Headers */,
|
||||
676AC1C80668A938007173EB /* rle.h in Headers */,
|
||||
676AC1CA0668A938007173EB /* u_dpmi.h in Headers */,
|
||||
676AC1CE0668A938007173EB /* fix.h in Headers */,
|
||||
676AC1CF0668A938007173EB /* palette.h in Headers */,
|
||||
676AC1D00668A938007173EB /* pcx.h in Headers */,
|
||||
|
@ -1652,7 +1585,6 @@
|
|||
EBEEB1080D2A307300FF39B4 /* texmapl.h in Headers */,
|
||||
EBEEB1EA0D2B317800FF39B4 /* custom.h in Headers */,
|
||||
EBEEB2000D2B320C00FF39B4 /* hash.h in Headers */,
|
||||
EBEEB2090D2B320C00FF39B4 /* script.h in Headers */,
|
||||
EB35ABE30FB199B800C36930 /* window.h in Headers */,
|
||||
EB0929FB12A10889004D9A79 /* messagebox.h in Headers */,
|
||||
);
|
||||
|
@ -1665,7 +1597,6 @@
|
|||
676AC2770668A939007173EB /* 3d.h in Headers */,
|
||||
676AC2780668A939007173EB /* args.h in Headers */,
|
||||
676AC2790668A939007173EB /* byteswap.h in Headers */,
|
||||
676AC27E0668A939007173EB /* error.h in Headers */,
|
||||
676AC2800668A939007173EB /* fix.h in Headers */,
|
||||
676AC2810668A939007173EB /* gr.h in Headers */,
|
||||
676AC2820668A939007173EB /* grdef.h in Headers */,
|
||||
|
@ -1678,7 +1609,6 @@
|
|||
676AC2920668A939007173EB /* strutil.h in Headers */,
|
||||
676AC2930668A939007173EB /* texmap.h in Headers */,
|
||||
676AC2940668A939007173EB /* timer.h in Headers */,
|
||||
676AC2950668A939007173EB /* u_dpmi.h in Headers */,
|
||||
676AC2960668A939007173EB /* u_mem.h in Headers */,
|
||||
676AC2970668A939007173EB /* vecmat.h in Headers */,
|
||||
67F6FED4066B13B400443922 /* SDLMain.h in Headers */,
|
||||
|
@ -1693,7 +1623,6 @@
|
|||
EBEEB1060D2A307300FF39B4 /* texmapl.h in Headers */,
|
||||
EBEEB1EF0D2B317800FF39B4 /* custom.h in Headers */,
|
||||
EBEEB20C0D2B320C00FF39B4 /* hash.h in Headers */,
|
||||
EBEEB2150D2B320C00FF39B4 /* script.h in Headers */,
|
||||
EB35ABE10FB199B800C36930 /* window.h in Headers */,
|
||||
EB0929F912A10889004D9A79 /* messagebox.h in Headers */,
|
||||
);
|
||||
|
@ -1764,7 +1693,14 @@
|
|||
isa = PBXProject;
|
||||
buildConfigurationList = EBBAD49E0B2D0F7E00080BBF /* Build configuration list for PBXProject "d1x-rebirth" */;
|
||||
compatibilityVersion = "Xcode 2.4";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* d1x */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
|
@ -1836,7 +1772,6 @@
|
|||
676AC1FB0668A938007173EB /* rect.c in Sources */,
|
||||
676AC1FC0668A938007173EB /* rle.c in Sources */,
|
||||
676AC1FD0668A938007173EB /* scalec.c in Sources */,
|
||||
676AC1FE0668A938007173EB /* tmerge.c in Sources */,
|
||||
676AC1FF0668A938007173EB /* clipper.c in Sources */,
|
||||
676AC2000668A938007173EB /* draw.c in Sources */,
|
||||
676AC2010668A938007173EB /* globvars.c in Sources */,
|
||||
|
@ -1932,8 +1867,6 @@
|
|||
EB92BE670CDD693C0045A32C /* jukebox.c in Sources */,
|
||||
EB92BEA80CDD6A570045A32C /* dl_list.c in Sources */,
|
||||
EBEEB1E90D2B317800FF39B4 /* custom.c in Sources */,
|
||||
EBEEB1FF0D2B320C00FF39B4 /* hash.c in Sources */,
|
||||
EBEEB29F0D2B378B00FF39B4 /* compare.c in Sources */,
|
||||
EBAC98FD0D42497F0017D4BC /* ignorecase.c in Sources */,
|
||||
EBC58E720D489E19007C8ABF /* args.c in Sources */,
|
||||
EB331A0C0D53578800C799B0 /* snddecom.c in Sources */,
|
||||
|
@ -2002,6 +1935,8 @@
|
|||
EBECB67912C041EA00D660B3 /* userbox.c in Sources */,
|
||||
EBECB67A12C041EB00D660B3 /* dialog.c in Sources */,
|
||||
EB2C86E612C36FFB0073E30E /* file.c in Sources */,
|
||||
EBC4BAFA170E64540033D261 /* vers_id.c in Sources */,
|
||||
EBC4BB11170E660B0033D261 /* hash.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -2027,7 +1962,6 @@
|
|||
676AC2AB0668A939007173EB /* rect.c in Sources */,
|
||||
676AC2AC0668A939007173EB /* rle.c in Sources */,
|
||||
676AC2AD0668A939007173EB /* scalec.c in Sources */,
|
||||
676AC2AE0668A939007173EB /* tmerge.c in Sources */,
|
||||
676AC2AF0668A939007173EB /* clipper.c in Sources */,
|
||||
676AC2B00668A939007173EB /* draw.c in Sources */,
|
||||
676AC2B10668A939007173EB /* globvars.c in Sources */,
|
||||
|
@ -2121,8 +2055,6 @@
|
|||
EB92BE630CDD693C0045A32C /* jukebox.c in Sources */,
|
||||
EB92BEA60CDD6A570045A32C /* dl_list.c in Sources */,
|
||||
EBEEB1EE0D2B317800FF39B4 /* custom.c in Sources */,
|
||||
EBEEB20B0D2B320C00FF39B4 /* hash.c in Sources */,
|
||||
EBEEB2A30D2B378B00FF39B4 /* compare.c in Sources */,
|
||||
EBAC98FB0D42497F0017D4BC /* ignorecase.c in Sources */,
|
||||
EBC58E710D489E19007C8ABF /* args.c in Sources */,
|
||||
EB3319850D50A6B200C799B0 /* bmread.c in Sources */,
|
||||
|
@ -2193,6 +2125,8 @@
|
|||
EBAC9A6D1525C5E800F6C779 /* texpage.c in Sources */,
|
||||
EBAC9A6E1525C5E800F6C779 /* texture.c in Sources */,
|
||||
EBAC9A6F1525C64400F6C779 /* dumpmine.c in Sources */,
|
||||
EBC4BAFB170E64550033D261 /* vers_id.c in Sources */,
|
||||
EBC4BB12170E660C0033D261 /* hash.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -32,7 +32,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "timer.h"
|
||||
#include "objpage.h"
|
||||
#include "fix.h"
|
||||
#include "error.h"
|
||||
#include "kdefs.h"
|
||||
#include "object.h"
|
||||
#include "polyobj.h"
|
||||
|
|
|
@ -3268,8 +3268,9 @@ void ai_cloak_info_read_n_swap(ai_cloak_info *ci, int n, int swap, PHYSFS_file *
|
|||
}
|
||||
}
|
||||
|
||||
int ai_restore_state(PHYSFS_file *fp, int swap)
|
||||
int ai_restore_state(PHYSFS_file *fp, int version, int swap)
|
||||
{
|
||||
(void)version;
|
||||
fix tmptime32 = 0;
|
||||
|
||||
Ai_initialized = PHYSFSX_readSXE32(fp, swap);
|
||||
|
|
|
@ -97,6 +97,6 @@ extern int Boss_been_hit;
|
|||
extern fix AI_proc_time;
|
||||
|
||||
extern int ai_save_state(PHYSFS_file * fp);
|
||||
extern int ai_restore_state(PHYSFS_file *fp, int swap);
|
||||
extern int ai_restore_state(PHYSFS_file *fp, int version, int swap);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "digi.h"
|
||||
#include "hash.h"
|
||||
#include "u_mem.h"
|
||||
#include "error.h"
|
||||
#include "custom.h"
|
||||
|
||||
//#define D2TMAP_CONV // used for testing
|
||||
|
|
|
@ -679,6 +679,13 @@ int HandleGameKey(int key)
|
|||
KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_7:)
|
||||
PlayerCfg.HudMode=(PlayerCfg.HudMode+1)%GAUGE_HUD_NUMMODES;
|
||||
write_player_file();
|
||||
switch (PlayerCfg.HudMode)
|
||||
{
|
||||
case 0: HUD_init_message(HM_DEFAULT, "Standard HUD"); break;
|
||||
case 1: HUD_init_message(HM_DEFAULT, "Alternative HUD #1"); break;
|
||||
case 2: HUD_init_message(HM_DEFAULT, "Alternative HUD #2"); break;
|
||||
case 3: HUD_init_message(HM_DEFAULT, "No HUD"); break;
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef NETWORK
|
||||
|
|
|
@ -56,8 +56,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "ogl_init.h"
|
||||
#endif
|
||||
|
||||
extern fix Cruise_speed;
|
||||
|
||||
int netplayerinfo_on=0;
|
||||
|
||||
#ifdef NETWORK
|
||||
|
@ -117,7 +115,8 @@ void show_framerate()
|
|||
#ifdef NETWORK
|
||||
void show_netplayerinfo()
|
||||
{
|
||||
int x=0, y=0, i=0, color=0;
|
||||
int x=0, y=0, i=0, color=0, eff=0;
|
||||
char *eff_strings[]={"trashing","really hurting","seriously effecting","hurting","effecting","tarnishing"};
|
||||
|
||||
gr_set_current_canvas(NULL);
|
||||
gr_set_curfont(GAME_FONT);
|
||||
|
@ -210,6 +209,27 @@ void show_netplayerinfo()
|
|||
gr_printf(x+FSPACX(8)*8,y,"%i",team_kills[1]);
|
||||
y+=LINE_SPACING*2;
|
||||
}
|
||||
else
|
||||
y+=LINE_SPACING*4;
|
||||
|
||||
gr_set_fontcolor(255,-1);
|
||||
|
||||
// additional information about game - ranking
|
||||
eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0);
|
||||
if (eff<0)
|
||||
eff=0;
|
||||
|
||||
if (!PlayerCfg.NoRankings)
|
||||
{
|
||||
gr_printf(0x8000,y,"Your lifetime efficiency of %d%% (%d/%d)",eff,PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled);
|
||||
y+=LINE_SPACING;
|
||||
if (eff<60)
|
||||
gr_printf(0x8000,y,"is %s your ranking.",eff_strings[eff/10]);
|
||||
else
|
||||
gr_printf(0x8000,y,"is serving you well.");
|
||||
y+=LINE_SPACING;
|
||||
gr_printf(0x8000,y,"your rank is: %s",RankStrings[GetMyNetRanking()]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -307,35 +327,6 @@ void game_draw_hud_stuff()
|
|||
|
||||
render_countdown_gauge();
|
||||
|
||||
// this should be made part of hud code some day
|
||||
if ( Player_num > -1 && Viewer->type==OBJ_PLAYER && Viewer->id==Player_num && PlayerCfg.CockpitMode[1] != CM_REAR_VIEW) {
|
||||
int x = FSPACX(1);
|
||||
int y = grd_curcanv->cv_bitmap.bm_h;
|
||||
|
||||
gr_set_curfont( GAME_FONT );
|
||||
gr_set_fontcolor( BM_XRGB(0, 31, 0), -1 );
|
||||
if (Cruise_speed > 0) {
|
||||
if (PlayerCfg.CockpitMode[1]==CM_FULL_SCREEN) {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 10;
|
||||
else
|
||||
y -= LINE_SPACING * 6;
|
||||
} else if (PlayerCfg.CockpitMode[1] == CM_STATUS_BAR) {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 6;
|
||||
else
|
||||
y -= LINE_SPACING * 1;
|
||||
} else {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 7;
|
||||
else
|
||||
y -= LINE_SPACING * 2;
|
||||
}
|
||||
|
||||
gr_printf( x, y, "%s %2d%%", TXT_CRUISE, f2i(Cruise_speed) );
|
||||
}
|
||||
}
|
||||
|
||||
if (GameCfg.FPSIndicator && PlayerCfg.CockpitMode[1] != CM_REAR_VIEW)
|
||||
show_framerate();
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
|
||||
#define SB_PRIMARY_W_BOX_LEFT_L 34 //50
|
||||
#define SB_PRIMARY_W_BOX_TOP_L 154
|
||||
#define SB_PRIMARY_W_BOX_RIGHT_L (SB_PRIMARY_W_BOX_LEFT_L+53)
|
||||
#define SB_PRIMARY_W_BOX_RIGHT_L (SB_PRIMARY_W_BOX_LEFT_L+55)
|
||||
#define SB_PRIMARY_W_BOX_BOT_L (195)
|
||||
|
||||
#define SB_PRIMARY_W_BOX_LEFT_H 68
|
||||
|
@ -337,6 +337,7 @@ int weapon_box_states[2];
|
|||
fix weapon_box_fade_values[2];
|
||||
int Color_0_31_0 = -1;
|
||||
extern fix ThisLevelTime;
|
||||
extern fix Cruise_speed;
|
||||
|
||||
typedef struct gauge_box {
|
||||
int left,top;
|
||||
|
@ -2387,6 +2388,38 @@ void show_HUD_names()
|
|||
|
||||
void draw_hud()
|
||||
{
|
||||
if (PlayerCfg.HudMode==3) // no hud, "immersion mode"
|
||||
return;
|
||||
|
||||
// Cruise speed
|
||||
if ( Player_num > -1 && Viewer->type==OBJ_PLAYER && Viewer->id==Player_num && PlayerCfg.CockpitMode[1] != CM_REAR_VIEW) {
|
||||
int x = FSPACX(1);
|
||||
int y = grd_curcanv->cv_bitmap.bm_h;
|
||||
|
||||
gr_set_curfont( GAME_FONT );
|
||||
gr_set_fontcolor( BM_XRGB(0, 31, 0), -1 );
|
||||
if (Cruise_speed > 0) {
|
||||
if (PlayerCfg.CockpitMode[1]==CM_FULL_SCREEN) {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 10;
|
||||
else
|
||||
y -= LINE_SPACING * 6;
|
||||
} else if (PlayerCfg.CockpitMode[1] == CM_STATUS_BAR) {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 6;
|
||||
else
|
||||
y -= LINE_SPACING * 1;
|
||||
} else {
|
||||
if (Game_mode & GM_MULTI)
|
||||
y -= LINE_SPACING * 7;
|
||||
else
|
||||
y -= LINE_SPACING * 2;
|
||||
}
|
||||
|
||||
gr_printf( x, y, "%s %2d%%", TXT_CRUISE, f2i(Cruise_speed) );
|
||||
}
|
||||
}
|
||||
|
||||
// Show score so long as not in rearview
|
||||
if ( !Rear_view && PlayerCfg.CockpitMode[1]!=CM_REAR_VIEW && PlayerCfg.CockpitMode[1]!=CM_STATUS_BAR) {
|
||||
hud_show_score();
|
||||
|
|
|
@ -1865,7 +1865,7 @@ void do_sound_menu()
|
|||
|
||||
void do_misc_menu()
|
||||
{
|
||||
newmenu_item m[8];
|
||||
newmenu_item m[10];
|
||||
int i = 0;
|
||||
|
||||
do {
|
||||
|
@ -1874,9 +1874,11 @@ void do_misc_menu()
|
|||
ADD_CHECK(2, "Screenshots w/o HUD",PlayerCfg.PRShot);
|
||||
ADD_CHECK(3, "No redundant pickup messages",PlayerCfg.NoRedundancy);
|
||||
ADD_CHECK(4, "Show Player chat only (Multi)",PlayerCfg.MultiMessages);
|
||||
ADD_CHECK(5, "Show D2-style Prox. Bomb Gauge",PlayerCfg.BombGauge);
|
||||
ADD_CHECK(6, "Free Flight controls in Automap",PlayerCfg.AutomapFreeFlight);
|
||||
ADD_CHECK(7, "No Weapon Autoselect when firing",PlayerCfg.NoFireAutoselect);
|
||||
ADD_CHECK(5, "No Rankings (Multi)",PlayerCfg.NoRankings);
|
||||
ADD_CHECK(6, "Show D2-style Prox. Bomb Gauge",PlayerCfg.BombGauge);
|
||||
ADD_CHECK(7, "Free Flight controls in Automap",PlayerCfg.AutomapFreeFlight);
|
||||
ADD_CHECK(8, "No Weapon Autoselect when firing",PlayerCfg.NoFireAutoselect);
|
||||
ADD_CHECK(9, "Only Cycle Autoselect Weapons",PlayerCfg.CycleAutoselectOnly);
|
||||
|
||||
i = newmenu_do1( NULL, "Misc Options", sizeof(m)/sizeof(*m), m, NULL, NULL, i );
|
||||
|
||||
|
@ -1885,9 +1887,11 @@ void do_misc_menu()
|
|||
PlayerCfg.PRShot = m[2].value;
|
||||
PlayerCfg.NoRedundancy = m[3].value;
|
||||
PlayerCfg.MultiMessages = m[4].value;
|
||||
PlayerCfg.BombGauge = m[5].value;
|
||||
PlayerCfg.AutomapFreeFlight = m[6].value;
|
||||
PlayerCfg.NoFireAutoselect = m[7].value;
|
||||
PlayerCfg.NoRankings = m[5].value;
|
||||
PlayerCfg.BombGauge = m[6].value;
|
||||
PlayerCfg.AutomapFreeFlight = m[7].value;
|
||||
PlayerCfg.NoFireAutoselect = m[8].value;
|
||||
PlayerCfg.CycleAutoselectOnly = m[9].value;
|
||||
|
||||
} while( i>-1 );
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ void multi_send_heartbeat();
|
|||
void multi_do_kill_goal_counts(const ubyte *buf);
|
||||
void multi_powcap_cap_objects();
|
||||
void multi_powcap_adjust_remote_cap(int pnum);
|
||||
void multi_send_ranking();
|
||||
void multi_new_bounty_target( int pnum );
|
||||
void multi_do_bounty( const ubyte *buf );
|
||||
void multi_save_game(ubyte slot, uint id, char *desc);
|
||||
|
@ -205,6 +206,7 @@ static const int message_length[MULTI_MAX_TYPE+1] = {
|
|||
3, // MULTI_GMODE_UPDATE
|
||||
7, // MULTI_KILL_HOST
|
||||
5, // MULTI_KILL_CLIENT
|
||||
3, // MULTI_RANK
|
||||
};
|
||||
|
||||
void multi_reset_player_object(object *objp);
|
||||
|
@ -212,6 +214,9 @@ void multi_set_robot_ai(void);
|
|||
void multi_add_lifetime_killed();
|
||||
void multi_add_lifetime_kills();
|
||||
|
||||
char *RankStrings[]={"(unpatched) ","Cadet ","Ensign ","Lieutenant ","Lt.Commander ",
|
||||
"Commander ","Captain ","Vice Admiral ","Admiral ","Demigod "};
|
||||
|
||||
int multi_allow_powerup_mask[MAX_POWERUP_TYPES] =
|
||||
{ NETFLAG_DOINVUL, 0, 0, NETFLAG_DOLASER, 0, 0, 0, 0, 0, 0, 0, 0, NETFLAG_DOQUAD,
|
||||
NETFLAG_DOVULCAN, NETFLAG_DOSPREAD, NETFLAG_DOPLASMA, NETFLAG_DOFUSION,
|
||||
|
@ -223,6 +228,41 @@ char *multi_allow_powerup_text[MULTI_ALLOW_POWERUP_MAX] =
|
|||
"Fusion cannon", "Homing missiles", "Smart missiles", "Mega missiles", "Proximity bombs",
|
||||
"Cloaking", "Invulnerability" };
|
||||
|
||||
int GetMyNetRanking()
|
||||
{
|
||||
int rank, eff;
|
||||
|
||||
if (PlayerCfg.NetlifeKills+PlayerCfg.NetlifeKilled==0)
|
||||
return (1);
|
||||
|
||||
rank=(int) (((float)PlayerCfg.NetlifeKills/3000.0)*8.0);
|
||||
|
||||
eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0);
|
||||
|
||||
if (rank>8)
|
||||
rank=8;
|
||||
|
||||
if (eff<0)
|
||||
eff=0;
|
||||
|
||||
if (eff<60)
|
||||
rank-=((59-eff)/10);
|
||||
|
||||
if (rank<0)
|
||||
rank=0;
|
||||
if (rank>8)
|
||||
rank=8;
|
||||
|
||||
return (rank+1);
|
||||
}
|
||||
|
||||
void ClipRank (ubyte *rank)
|
||||
{
|
||||
// This function insures no crashes when dealing with D2 1.0
|
||||
if (*rank > 9)
|
||||
*rank = 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Functions that replace what used to be macros
|
||||
//
|
||||
|
@ -679,14 +719,21 @@ void multi_compute_kill(int killer, int killed)
|
|||
|
||||
else
|
||||
{
|
||||
if (Game_mode & GM_TEAM)
|
||||
if (Game_mode & GM_TEAM)
|
||||
{
|
||||
if (get_team(killed_pnum) == get_team(killer_pnum))
|
||||
{
|
||||
if (get_team(killed_pnum) == get_team(killer_pnum))
|
||||
team_kills[get_team(killed_pnum)] -= 1;
|
||||
else
|
||||
team_kills[get_team(killer_pnum)] += 1;
|
||||
team_kills[get_team(killed_pnum)] -= 1;
|
||||
Players[killer_pnum].net_kills_total -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
team_kills[get_team(killer_pnum)] += 1;
|
||||
Players[killer_pnum].net_kills_total += 1;
|
||||
Players[killer_pnum].KillGoalCount +=1;
|
||||
}
|
||||
}
|
||||
if( Game_mode & GM_BOUNTY )
|
||||
else if( Game_mode & GM_BOUNTY )
|
||||
{
|
||||
/* Did the target die? Did the target get a kill? */
|
||||
if( killed_pnum == Bounty_target || killer_pnum == Bounty_target )
|
||||
|
@ -3308,7 +3355,7 @@ void multi_send_powcap_update ()
|
|||
multi_send_data(multibuf, MAX_POWERUP_TYPES+1, 2);
|
||||
}
|
||||
|
||||
void multi_do_powcap_update (char *buf)
|
||||
void multi_do_powcap_update (const ubyte *buf)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -3407,20 +3454,85 @@ void multi_check_for_killgoal_winner ()
|
|||
net_destroy_controlcen (objp);
|
||||
}
|
||||
|
||||
extern char *RankStrings[];
|
||||
|
||||
void multi_add_lifetime_kills ()
|
||||
{
|
||||
// This function adds a kill to lifetime stats of this player
|
||||
// Trivial, but syncing with D2X
|
||||
// This function adds a kill to lifetime stats of this player, and possibly
|
||||
// gives a promotion. If so, it will tell everyone else
|
||||
|
||||
int oldrank;
|
||||
|
||||
if (!(Game_mode & GM_NETWORK))
|
||||
return;
|
||||
|
||||
oldrank=GetMyNetRanking();
|
||||
|
||||
PlayerCfg.NetlifeKills++;
|
||||
|
||||
if (oldrank!=GetMyNetRanking())
|
||||
{
|
||||
multi_send_ranking();
|
||||
if (!PlayerCfg.NoRankings)
|
||||
{
|
||||
HUD_init_message(HM_MULTI, "You have been promoted to %s!",RankStrings[GetMyNetRanking()]);
|
||||
digi_play_sample (SOUND_CONTROL_CENTER_WARNING_SIREN,F1_0*2);
|
||||
Netgame.players[Player_num].rank=GetMyNetRanking();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void multi_add_lifetime_killed ()
|
||||
{
|
||||
// This function adds a "killed" to lifetime stats of this player
|
||||
// Trivial, but syncing with D2X
|
||||
// This function adds a "killed" to lifetime stats of this player, and possibly
|
||||
// gives a demotion. If so, it will tell everyone else
|
||||
|
||||
int oldrank;
|
||||
|
||||
if (!(Game_mode & GM_NETWORK))
|
||||
return;
|
||||
|
||||
oldrank=GetMyNetRanking();
|
||||
|
||||
PlayerCfg.NetlifeKilled++;
|
||||
|
||||
if (oldrank!=GetMyNetRanking())
|
||||
{
|
||||
multi_send_ranking();
|
||||
Netgame.players[Player_num].rank=GetMyNetRanking();
|
||||
|
||||
if (!PlayerCfg.NoRankings)
|
||||
HUD_init_message(HM_MULTI, "You have been demoted to %s!",RankStrings[GetMyNetRanking()]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void multi_send_ranking ()
|
||||
{
|
||||
multibuf[0]=(char)MULTI_RANK;
|
||||
multibuf[1]=(char)Player_num;
|
||||
multibuf[2]=(char)GetMyNetRanking();
|
||||
|
||||
multi_send_data (multibuf,3,2);
|
||||
}
|
||||
|
||||
void multi_do_ranking (char *buf)
|
||||
{
|
||||
char rankstr[20];
|
||||
char pnum=buf[1];
|
||||
char rank=buf[2];
|
||||
|
||||
if (Netgame.players[(int)pnum].rank<rank)
|
||||
strcpy (rankstr,"promoted");
|
||||
else if (Netgame.players[(int)pnum].rank>rank)
|
||||
strcpy (rankstr,"demoted");
|
||||
else
|
||||
return;
|
||||
|
||||
Netgame.players[(int)pnum].rank=rank;
|
||||
|
||||
if (!PlayerCfg.NoRankings)
|
||||
HUD_init_message(HM_MULTI, "%s has been %s to %s!",Players[(int)pnum].callsign,rankstr,RankStrings[(int)rank]);
|
||||
}
|
||||
|
||||
// Decide if fire from "killer" is friendly. If yes return 1 (no harm to me) otherwise 0 (damage me)
|
||||
|
|
|
@ -64,7 +64,7 @@ extern int multi_protocol; // set and determinate used protocol
|
|||
#define MULTI_PROTO_UDP 1 // UDP protocol
|
||||
|
||||
// What version of the multiplayer protocol is this? Increment each time something drastic changes in Multiplayer without the version number changes. Can be reset to 0 each time the version of the game changes
|
||||
#define MULTI_PROTO_VERSION 3
|
||||
#define MULTI_PROTO_VERSION 5
|
||||
// PROTOCOL VARIABLES AND DEFINES - END
|
||||
|
||||
|
||||
|
@ -113,8 +113,9 @@ extern int multi_protocol; // set and determinate used protocol
|
|||
#define MULTI_GMODE_UPDATE 42
|
||||
#define MULTI_KILL_HOST 43
|
||||
#define MULTI_KILL_CLIENT 44
|
||||
#define MULTI_RANK 45
|
||||
|
||||
#define MULTI_MAX_TYPE 44
|
||||
#define MULTI_MAX_TYPE 45
|
||||
|
||||
#define MAX_MULTI_MESSAGE_LEN 90 //didn't change it, just moved it up
|
||||
|
||||
|
@ -175,6 +176,8 @@ extern char *multi_allow_powerup_text[MULTI_ALLOW_POWERUP_MAX];
|
|||
|
||||
// Exported functions
|
||||
|
||||
extern int GetMyNetRanking();
|
||||
extern void ClipRank (ubyte *rank);
|
||||
int objnum_remote_to_local(int remote_obj, int owner);
|
||||
int objnum_local_to_remote(int local_obj, sbyte *owner);
|
||||
void map_objnum_local_to_remote(int local, int remote, int owner);
|
||||
|
@ -301,6 +304,8 @@ extern int Bounty_target;
|
|||
|
||||
extern bitmap_index multi_player_textures[MAX_PLAYERS][N_PLAYER_SHIP_TEXTURES];
|
||||
|
||||
extern char *RankStrings[];
|
||||
|
||||
#define NETGAME_FLAG_CLOSED 1
|
||||
#define NETGAME_FLAG_SHOW_ID 2
|
||||
#define NETGAME_FLAG_SHOW_MAP 4
|
||||
|
|
|
@ -1056,6 +1056,8 @@ void net_udp_init()
|
|||
UDP_Seq.type = UPID_REQUEST;
|
||||
memcpy(UDP_Seq.player.callsign, Players[Player_num].callsign, CALLSIGN_LEN+1);
|
||||
|
||||
UDP_Seq.player.rank=GetMyNetRanking();
|
||||
|
||||
multi_new_game();
|
||||
net_udp_flush();
|
||||
|
||||
|
@ -1235,6 +1237,9 @@ net_udp_new_player(UDP_sequence_packet *their)
|
|||
memcpy(Netgame.players[pnum].callsign, their->player.callsign, CALLSIGN_LEN+1);
|
||||
memcpy(&Netgame.players[pnum].protocol.udp.addr, &their->player.protocol.udp.addr, sizeof(struct _sockaddr));
|
||||
|
||||
ClipRank (&their->player.rank);
|
||||
Netgame.players[pnum].rank=their->player.rank;
|
||||
|
||||
Players[pnum].connected = CONNECT_PLAYING;
|
||||
Players[pnum].net_kills_total = 0;
|
||||
Players[pnum].net_killed_total = 0;
|
||||
|
@ -1251,7 +1256,12 @@ net_udp_new_player(UDP_sequence_packet *their)
|
|||
|
||||
digi_play_sample(SOUND_HUD_MESSAGE, F1_0);
|
||||
|
||||
HUD_init_message(HM_MULTI, "'%s' %s",their->player.callsign, TXT_JOINING);
|
||||
ClipRank (&their->player.rank);
|
||||
|
||||
if (PlayerCfg.NoRankings)
|
||||
HUD_init_message(HM_MULTI, "'%s' %s\n",their->player.callsign, TXT_JOINING);
|
||||
else
|
||||
HUD_init_message(HM_MULTI, "%s'%s' %s\n",RankStrings[their->player.rank],their->player.callsign, TXT_JOINING);
|
||||
|
||||
multi_make_ghost_player(pnum);
|
||||
|
||||
|
@ -1383,7 +1393,10 @@ void net_udp_welcome_player(UDP_sequence_packet *their)
|
|||
|
||||
digi_play_sample(SOUND_HUD_MESSAGE, F1_0);
|
||||
|
||||
HUD_init_message(HM_MULTI, "'%s' %s", Players[player_num].callsign, TXT_REJOIN);
|
||||
if (PlayerCfg.NoRankings)
|
||||
HUD_init_message(HM_MULTI, "'%s' %s", Players[player_num].callsign, TXT_REJOIN);
|
||||
else
|
||||
HUD_init_message(HM_MULTI, "%s'%s' %s", RankStrings[Netgame.players[player_num].rank],Players[player_num].callsign, TXT_REJOIN);
|
||||
|
||||
multi_send_score();
|
||||
|
||||
|
@ -1874,6 +1887,7 @@ void net_udp_add_player(UDP_sequence_packet *p)
|
|||
return; // too many of em
|
||||
}
|
||||
|
||||
ClipRank (&p->player.rank);
|
||||
memcpy( Netgame.players[N_players].callsign, p->player.callsign, CALLSIGN_LEN+1 );
|
||||
memcpy( (struct _sockaddr *)&Netgame.players[N_players].protocol.udp.addr, (struct _sockaddr *)&p->player.protocol.udp.addr, sizeof(struct _sockaddr) );
|
||||
Netgame.players[N_players].rank=p->player.rank;
|
||||
|
@ -1911,6 +1925,7 @@ void net_udp_remove_player(UDP_sequence_packet *p)
|
|||
memcpy( Netgame.players[i].callsign, Netgame.players[i+1].callsign, CALLSIGN_LEN+1 );
|
||||
memcpy( (struct _sockaddr *)&Netgame.players[i].protocol.udp.addr, (struct _sockaddr *)&Netgame.players[i+1].protocol.udp.addr, sizeof(struct _sockaddr) );
|
||||
Netgame.players[i].rank=Netgame.players[i+1].rank;
|
||||
ClipRank (&Netgame.players[i].rank);
|
||||
}
|
||||
|
||||
N_players--;
|
||||
|
@ -2765,8 +2780,10 @@ int net_udp_start_poll( newmenu *menu, d_event *event, void *userdata )
|
|||
|
||||
if (n < Netgame.numplayers )
|
||||
{
|
||||
sprintf( menus[N_players-1].text, "%d. %-16s", N_players, Netgame.players[N_players-1].callsign );
|
||||
|
||||
if (PlayerCfg.NoRankings)
|
||||
sprintf( menus[N_players-1].text, "%d. %-20s", N_players,Netgame.players[N_players-1].callsign );
|
||||
else
|
||||
sprintf( menus[N_players-1].text, "%d. %s%-20s", N_players, RankStrings[Netgame.players[N_players-1].rank],Netgame.players[N_players-1].callsign );
|
||||
//Begin addition by GF
|
||||
digi_play_sample(SOUND_HUD_MESSAGE, F1_0); //A noise to alert you when someone joins a starting game...
|
||||
//End addition by GF
|
||||
|
@ -2786,7 +2803,10 @@ int net_udp_start_poll( newmenu *menu, d_event *event, void *userdata )
|
|||
|
||||
for (i=0; i<N_players; i++ )
|
||||
{
|
||||
sprintf( menus[i].text, "%d. %-16s", i+1, Netgame.players[i].callsign );
|
||||
if (PlayerCfg.NoRankings)
|
||||
sprintf( menus[i].text, "%d. %-20s", i+1, Netgame.players[i].callsign );
|
||||
else
|
||||
sprintf( menus[i].text, "%d. %s%-20s", i+1, RankStrings[Netgame.players[i].rank],Netgame.players[i].callsign );
|
||||
if (i < Netgame.max_numplayers)
|
||||
menus[i].value = 1;
|
||||
else
|
||||
|
@ -3336,6 +3356,7 @@ void net_udp_read_sync_packet( ubyte * data, int data_len, struct _sockaddr send
|
|||
|
||||
Players[Player_num].connected = CONNECT_PLAYING;
|
||||
Netgame.players[Player_num].connected = CONNECT_PLAYING;
|
||||
Netgame.players[Player_num].rank=GetMyNetRanking();
|
||||
|
||||
if (!Network_rejoined)
|
||||
{
|
||||
|
@ -3500,14 +3521,14 @@ net_udp_select_players(void)
|
|||
{
|
||||
int i, j, opts, opt_msg;
|
||||
newmenu_item m[MAX_PLAYERS+1];
|
||||
char text[MAX_PLAYERS][25];
|
||||
char text[MAX_PLAYERS][45];
|
||||
char title[50];
|
||||
int save_nplayers;
|
||||
|
||||
net_udp_add_player( &UDP_Seq );
|
||||
|
||||
for (i=0; i< MAX_PLAYERS; i++ ) {
|
||||
sprintf( text[i], "%d. %-16s", i+1, "" );
|
||||
sprintf( text[i], "%d. %-20s", i+1, "" );
|
||||
m[i].type = NM_TYPE_CHECK; m[i].text = text[i]; m[i].value = 0;
|
||||
}
|
||||
//added/edited on 11/7/98 by Victor Rachels in an attempt to get msgs going.
|
||||
|
@ -3518,7 +3539,10 @@ net_udp_select_players(void)
|
|||
|
||||
m[0].value = 1; // Assume server will play...
|
||||
|
||||
sprintf( text[0], "%d. %-16s", 1, Players[Player_num].callsign );
|
||||
if (PlayerCfg.NoRankings)
|
||||
sprintf( text[0], "%d. %-20s", 1, Players[Player_num].callsign );
|
||||
else
|
||||
sprintf( text[0], "%d. %s%-20s", 1, RankStrings[Netgame.players[Player_num].rank],Players[Player_num].callsign );
|
||||
sprintf( title, "%s %d %s", TXT_TEAM_SELECT, Netgame.max_numplayers, TXT_TEAM_PRESS_ENTER );
|
||||
|
||||
GetPlayersAgain:
|
||||
|
@ -3608,6 +3632,8 @@ abort:
|
|||
if (i > N_players)
|
||||
{
|
||||
memcpy(Netgame.players[N_players].callsign, Netgame.players[i].callsign, CALLSIGN_LEN+1);
|
||||
Netgame.players[N_players].rank=Netgame.players[i].rank;
|
||||
ClipRank (&Netgame.players[N_players].rank);
|
||||
}
|
||||
Players[N_players].connected = CONNECT_PLAYING;
|
||||
N_players++;
|
||||
|
@ -3620,6 +3646,7 @@ abort:
|
|||
|
||||
for (i = N_players; i < MAX_PLAYERS; i++) {
|
||||
memset(Netgame.players[i].callsign, 0, CALLSIGN_LEN+1);
|
||||
Netgame.players[i].rank=0;
|
||||
}
|
||||
|
||||
if (Netgame.gamemode == NETGAME_TEAM_ANARCHY)
|
||||
|
@ -4669,8 +4696,12 @@ void net_udp_read_pdata_packet(UDP_frame_info *pd)
|
|||
newdemo_record_multi_reconnect(TheirPlayernum);
|
||||
|
||||
digi_play_sample( SOUND_HUD_MESSAGE, F1_0);
|
||||
|
||||
HUD_init_message(HM_MULTI, "'%s' %s", Players[TheirPlayernum].callsign, TXT_REJOIN );
|
||||
ClipRank (&Netgame.players[TheirPlayernum].rank);
|
||||
|
||||
if (PlayerCfg.NoRankings)
|
||||
HUD_init_message(HM_MULTI, "'%s' %s", Players[TheirPlayernum].callsign, TXT_REJOIN );
|
||||
else
|
||||
HUD_init_message(HM_MULTI, "%s'%s' %s", RankStrings[Netgame.players[TheirPlayernum].rank],Players[TheirPlayernum].callsign, TXT_REJOIN );
|
||||
|
||||
multi_send_score();
|
||||
|
||||
|
@ -4786,6 +4817,8 @@ void net_udp_process_pong(ubyte *data, int data_len, struct _sockaddr sender_add
|
|||
void net_udp_do_refuse_stuff (UDP_sequence_packet *their)
|
||||
{
|
||||
int i,new_player_num;
|
||||
|
||||
ClipRank (&their->player.rank);
|
||||
|
||||
for (i=0;i<MAX_PLAYERS;i++)
|
||||
{
|
||||
|
@ -4811,7 +4844,14 @@ void net_udp_do_refuse_stuff (UDP_sequence_packet *their)
|
|||
|
||||
if (Game_mode & GM_TEAM)
|
||||
{
|
||||
HUD_init_message(HM_MULTI, "%s wants to join",their->player.callsign);
|
||||
if (!PlayerCfg.NoRankings)
|
||||
{
|
||||
HUD_init_message(HM_MULTI, "%s %s wants to join",RankStrings[their->player.rank],their->player.callsign);
|
||||
}
|
||||
else
|
||||
{
|
||||
HUD_init_message(HM_MULTI, "%s wants to join",their->player.callsign);
|
||||
}
|
||||
HUD_init_message(HM_MULTI, "Alt-1 assigns to team %s. Alt-2 to team %s",Netgame.team_name[0],Netgame.team_name[1]);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -94,9 +94,11 @@ int new_player_config()
|
|||
PlayerCfg.PRShot = 0;
|
||||
PlayerCfg.NoRedundancy = 0;
|
||||
PlayerCfg.MultiMessages = 0;
|
||||
PlayerCfg.NoRankings = 0;
|
||||
PlayerCfg.BombGauge = 1;
|
||||
PlayerCfg.AutomapFreeFlight = 0;
|
||||
PlayerCfg.NoFireAutoselect = 0;
|
||||
PlayerCfg.CycleAutoselectOnly = 0;
|
||||
PlayerCfg.AlphaEffects = 0;
|
||||
PlayerCfg.DynLightColor = 0;
|
||||
|
||||
|
@ -319,12 +321,16 @@ int read_player_d1x(char *filename)
|
|||
PlayerCfg.NoRedundancy = atoi(line);
|
||||
if(!strcmp(word,"MULTIMESSAGES"))
|
||||
PlayerCfg.MultiMessages = atoi(line);
|
||||
if(!strcmp(word,"NORANKINGS"))
|
||||
PlayerCfg.NoRankings = atoi(line);
|
||||
if(!strcmp(word,"BOMBGAUGE"))
|
||||
PlayerCfg.BombGauge = atoi(line);
|
||||
if(!strcmp(word,"AUTOMAPFREEFLIGHT"))
|
||||
PlayerCfg.AutomapFreeFlight = atoi(line);
|
||||
if(!strcmp(word,"NOFIREAUTOSELECT"))
|
||||
PlayerCfg.NoFireAutoselect = atoi(line);
|
||||
if(!strcmp(word,"CYCLEAUTOSELECTONLY"))
|
||||
PlayerCfg.CycleAutoselectOnly = atoi(line);
|
||||
d_free(word);
|
||||
PHYSFSX_fgets(line,50,f);
|
||||
word=splitword(line,'=');
|
||||
|
@ -653,9 +659,11 @@ int write_player_d1x(char *filename)
|
|||
PHYSFSX_printf(fout,"prshot=%i\n",PlayerCfg.PRShot);
|
||||
PHYSFSX_printf(fout,"noredundancy=%i\n",PlayerCfg.NoRedundancy);
|
||||
PHYSFSX_printf(fout,"multimessages=%i\n",PlayerCfg.MultiMessages);
|
||||
PHYSFSX_printf(fout,"norankings=%i\n",PlayerCfg.NoRankings);
|
||||
PHYSFSX_printf(fout,"bombgauge=%i\n",PlayerCfg.BombGauge);
|
||||
PHYSFSX_printf(fout,"automapfreeflight=%i\n",PlayerCfg.AutomapFreeFlight);
|
||||
PHYSFSX_printf(fout,"nofireautoselect=%i\n",PlayerCfg.NoFireAutoselect);
|
||||
PHYSFSX_printf(fout,"cycleautoselectonly=%i\n",PlayerCfg.CycleAutoselectOnly);
|
||||
PHYSFSX_printf(fout,"[end]\n");
|
||||
PHYSFSX_printf(fout,"[graphics]\n");
|
||||
PHYSFSX_printf(fout,"alphaeffects=%i\n",PlayerCfg.AlphaEffects);
|
||||
|
|
|
@ -78,9 +78,11 @@ typedef struct player_config
|
|||
int PRShot;
|
||||
ubyte NoRedundancy;
|
||||
ubyte MultiMessages;
|
||||
ubyte NoRankings;
|
||||
ubyte BombGauge;
|
||||
ubyte AutomapFreeFlight;
|
||||
ubyte NoFireAutoselect;
|
||||
ubyte CycleAutoselectOnly;
|
||||
int AlphaEffects;
|
||||
int DynLightColor;
|
||||
} __pack__ player_config;
|
||||
|
|
|
@ -269,6 +269,12 @@ void render_face(int segnum, int sidenum, int nv, int *vp, int tmap1, int tmap2,
|
|||
dyn_light[i].g = MAX_LIGHT;
|
||||
if (dyn_light[i].b > MAX_LIGHT)
|
||||
dyn_light[i].b = MAX_LIGHT;
|
||||
if (PlayerCfg.AlphaEffects) // due to additive blending, transparent sprites will become invivible in font of white surfaces (lamps). Fix that with a little desaturation
|
||||
{
|
||||
dyn_light[i].r *= .93;
|
||||
dyn_light[i].g *= .93;
|
||||
dyn_light[i].b *= .93;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1679,7 +1685,6 @@ done_list:
|
|||
void render_mine(int start_seg_num,fix eye_offset, int window_num)
|
||||
{
|
||||
int nn;
|
||||
static fix64 dynlight_time = 0;
|
||||
|
||||
// Initialize number of objects (actually, robots!) rendered this frame.
|
||||
Window_rendered_data[window_num].num_objects = 0;
|
||||
|
@ -1749,11 +1754,8 @@ void render_mine(int start_seg_num,fix eye_offset, int window_num)
|
|||
if (!(_search_mode))
|
||||
build_object_lists(N_render_segs);
|
||||
|
||||
if (eye_offset<=0 && dynlight_time < timer_query()) // Do for left eye or zero.
|
||||
{
|
||||
dynlight_time = timer_query() + (F1_0/60); // It's enough to update dynamic light 60 times per second max. More is just waste of CPU time
|
||||
if (eye_offset<=0) // Do for left eye or zero.
|
||||
set_dynamic_light();
|
||||
}
|
||||
|
||||
if (!_search_mode && Clear_window == 2) {
|
||||
if (first_terminal_seg < N_render_segs) {
|
||||
|
|
|
@ -1355,7 +1355,7 @@ RetryObjectLoading:
|
|||
Total_countdown_time = Countdown_timer/F0_5; // we do not need to know this, but it should not be 0 either...
|
||||
|
||||
// Restore the AI state
|
||||
ai_restore_state( fp, swap );
|
||||
ai_restore_state( fp, 0, swap );
|
||||
|
||||
// Restore the automap visited info
|
||||
if ( Highest_segment_index+1 > MAX_SEGMENTS_ORIGINAL )
|
||||
|
|
|
@ -154,8 +154,17 @@ void CyclePrimary ()
|
|||
cur_order_slot++; // next slot
|
||||
if (cur_order_slot >= MAX_PRIMARY_WEAPONS+1) // loop if necessary
|
||||
cur_order_slot = 0;
|
||||
if (cur_order_slot == POrderList(255)) // ignore "do not autoselect"
|
||||
continue;
|
||||
if (cur_order_slot == POrderList(255)) // what to to with non-autoselect weapons?
|
||||
{
|
||||
if (PlayerCfg.CycleAutoselectOnly)
|
||||
{
|
||||
cur_order_slot = 0; // loop over or ...
|
||||
}
|
||||
else
|
||||
{
|
||||
continue; // continue?
|
||||
}
|
||||
}
|
||||
desired_weapon = PlayerCfg.PrimaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
||||
// select the weapon if we have it
|
||||
if (player_has_weapon(desired_weapon, 0) == HAS_ALL)
|
||||
|
@ -176,8 +185,17 @@ void CycleSecondary ()
|
|||
cur_order_slot++; // next slot
|
||||
if (cur_order_slot >= MAX_SECONDARY_WEAPONS+1) // loop if necessary
|
||||
cur_order_slot = 0;
|
||||
if (cur_order_slot == SOrderList(255)) // ignore "do not autoselect"
|
||||
continue;
|
||||
if (cur_order_slot == SOrderList(255)) // what to to with non-autoselect weapons?
|
||||
{
|
||||
if (PlayerCfg.CycleAutoselectOnly)
|
||||
{
|
||||
cur_order_slot = 0; // loop over or ...
|
||||
}
|
||||
else
|
||||
{
|
||||
continue; // continue?
|
||||
}
|
||||
}
|
||||
desired_weapon = PlayerCfg.SecondaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
||||
// select the weapon if we have it
|
||||
if (player_has_weapon(desired_weapon, 1) == HAS_ALL)
|
||||
|
|
|
@ -48,7 +48,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
|
||||
int Do_dynamic_light=1;
|
||||
int use_fcd_lighting = 0;
|
||||
static int light_frame_count = 0;
|
||||
g3s_lrgb Dynamic_light[MAX_VERTICES];
|
||||
|
||||
#define HEADLIGHT_CONE_DOT (F1_0*9/10)
|
||||
|
@ -80,18 +79,16 @@ void apply_light(g3s_lrgb obj_light_emission, int obj_seg, vms_vector *obj_pos,
|
|||
fix dist;
|
||||
|
||||
vertnum = vp[vv];
|
||||
if ((vertnum ^ light_frame_count) & 1) {
|
||||
vertpos = &Vertices[vertnum];
|
||||
dist = vm_vec_dist_quick(obj_pos, vertpos);
|
||||
dist = fixmul(dist/4, dist/4);
|
||||
if (dist < abs(obji_64)) {
|
||||
if (dist < MIN_LIGHT_DIST)
|
||||
dist = MIN_LIGHT_DIST;
|
||||
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, dist);
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, dist);
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, dist);
|
||||
}
|
||||
vertpos = &Vertices[vertnum];
|
||||
dist = vm_vec_dist_quick(obj_pos, vertpos);
|
||||
dist = fixmul(dist/4, dist/4);
|
||||
if (dist < abs(obji_64)) {
|
||||
if (dist < MIN_LIGHT_DIST)
|
||||
dist = MIN_LIGHT_DIST;
|
||||
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, dist);
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, dist);
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, dist);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -125,7 +122,6 @@ void apply_light(g3s_lrgb obj_light_emission, int obj_seg, vms_vector *obj_pos,
|
|||
}
|
||||
}
|
||||
#endif
|
||||
// -- for (vv=light_frame_count&1; vv<n_render_vertices; vv+=2) {
|
||||
for (vv=0; vv<n_render_vertices; vv++) {
|
||||
int vertnum, vsegnum;
|
||||
vms_vector *vertpos;
|
||||
|
@ -134,66 +130,64 @@ void apply_light(g3s_lrgb obj_light_emission, int obj_seg, vms_vector *obj_pos,
|
|||
|
||||
vertnum = render_vertices[vv];
|
||||
vsegnum = vert_segnum_list[vv];
|
||||
if ((vertnum ^ light_frame_count) & 1) {
|
||||
vertpos = &Vertices[vertnum];
|
||||
vertpos = &Vertices[vertnum];
|
||||
|
||||
if (use_fcd_lighting && abs(obji_64) > F1_0*32)
|
||||
{
|
||||
dist = find_connected_distance(obj_pos, obj_seg, vertpos, vsegnum, n_render_vertices, WID_RENDPAST_FLAG+WID_FLY_FLAG);
|
||||
if (dist >= 0)
|
||||
apply_light = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
dist = vm_vec_dist_quick(obj_pos, vertpos);
|
||||
if (use_fcd_lighting && abs(obji_64) > F1_0*32)
|
||||
{
|
||||
dist = find_connected_distance(obj_pos, obj_seg, vertpos, vsegnum, n_render_vertices, WID_RENDPAST_FLAG+WID_FLY_FLAG);
|
||||
if (dist >= 0)
|
||||
apply_light = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dist = vm_vec_dist_quick(obj_pos, vertpos);
|
||||
apply_light = 1;
|
||||
}
|
||||
|
||||
if (apply_light && ((dist >> headlight_shift) < abs(obji_64))) {
|
||||
if (apply_light && ((dist >> headlight_shift) < abs(obji_64))) {
|
||||
|
||||
if (dist < MIN_LIGHT_DIST)
|
||||
dist = MIN_LIGHT_DIST;
|
||||
if (dist < MIN_LIGHT_DIST)
|
||||
dist = MIN_LIGHT_DIST;
|
||||
|
||||
if (headlight_shift && objnum != -1)
|
||||
if (headlight_shift && objnum != -1)
|
||||
{
|
||||
fix dot;
|
||||
vms_vector vec_to_point;
|
||||
|
||||
vm_vec_sub(&vec_to_point, vertpos, obj_pos);
|
||||
vm_vec_normalize_quick(&vec_to_point); // MK, Optimization note: You compute distance about 15 lines up, this is partially redundant
|
||||
dot = vm_vec_dot(&vec_to_point, &Objects[objnum].orient.fvec);
|
||||
if (dot < F1_0/2)
|
||||
{
|
||||
fix dot;
|
||||
vms_vector vec_to_point;
|
||||
|
||||
vm_vec_sub(&vec_to_point, vertpos, obj_pos);
|
||||
vm_vec_normalize_quick(&vec_to_point); // MK, Optimization note: You compute distance about 15 lines up, this is partially redundant
|
||||
dot = vm_vec_dot(&vec_to_point, &Objects[objnum].orient.fvec);
|
||||
if (dot < F1_0/2)
|
||||
// Do the normal thing, but darken around headlight.
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, fixmul(HEADLIGHT_SCALE, dist));
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, fixmul(HEADLIGHT_SCALE, dist));
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, fixmul(HEADLIGHT_SCALE, dist));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Game_mode & GM_MULTI)
|
||||
{
|
||||
// Do the normal thing, but darken around headlight.
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, fixmul(HEADLIGHT_SCALE, dist));
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, fixmul(HEADLIGHT_SCALE, dist));
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, fixmul(HEADLIGHT_SCALE, dist));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Game_mode & GM_MULTI)
|
||||
{
|
||||
if (dist < max_headlight_dist)
|
||||
{
|
||||
Dynamic_light[vertnum].r += fixmul(fixmul(dot, dot), obj_light_emission.r)/8;
|
||||
Dynamic_light[vertnum].g += fixmul(fixmul(dot, dot), obj_light_emission.g)/8;
|
||||
Dynamic_light[vertnum].b += fixmul(fixmul(dot, dot), obj_light_emission.b)/8;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (dist < max_headlight_dist)
|
||||
{
|
||||
Dynamic_light[vertnum].r += fixmul(fixmul(dot, dot), obj_light_emission.r)/8;
|
||||
Dynamic_light[vertnum].g += fixmul(fixmul(dot, dot), obj_light_emission.g)/8;
|
||||
Dynamic_light[vertnum].b += fixmul(fixmul(dot, dot), obj_light_emission.b)/8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Dynamic_light[vertnum].r += fixmul(fixmul(dot, dot), obj_light_emission.r)/8;
|
||||
Dynamic_light[vertnum].g += fixmul(fixmul(dot, dot), obj_light_emission.g)/8;
|
||||
Dynamic_light[vertnum].b += fixmul(fixmul(dot, dot), obj_light_emission.b)/8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, dist);
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, dist);
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, dist);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Dynamic_light[vertnum].r += fixdiv(obj_light_emission.r, dist);
|
||||
Dynamic_light[vertnum].g += fixdiv(obj_light_emission.g, dist);
|
||||
Dynamic_light[vertnum].b += fixdiv(obj_light_emission.b, dist);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -480,15 +474,17 @@ void set_dynamic_light(void)
|
|||
int vert_segnum_list[MAX_VERTICES];
|
||||
sbyte render_vertex_flags[MAX_VERTICES];
|
||||
int render_seg,segnum, v;
|
||||
static fix light_time;
|
||||
|
||||
Num_headlights = 0;
|
||||
|
||||
if (!Do_dynamic_light)
|
||||
return;
|
||||
|
||||
light_frame_count++;
|
||||
if (light_frame_count > F1_0)
|
||||
light_frame_count = 0;
|
||||
light_time += FrameTime;
|
||||
if (light_time < (F1_0/60)) // it's enough to stress the CPU 60 times per second
|
||||
return;
|
||||
light_time = light_time - (F1_0/60);
|
||||
|
||||
memset(render_vertex_flags, 0, Highest_vertex_index+1);
|
||||
|
||||
|
@ -519,8 +515,7 @@ void set_dynamic_light(void)
|
|||
|
||||
vertnum = render_vertices[vv];
|
||||
Assert(vertnum >= 0 && vertnum <= Highest_vertex_index);
|
||||
if ((vertnum ^ light_frame_count) & 1)
|
||||
Dynamic_light[vertnum].r = Dynamic_light[vertnum].g = Dynamic_light[vertnum].b = 0;
|
||||
Dynamic_light[vertnum].r = Dynamic_light[vertnum].g = Dynamic_light[vertnum].b = 0;
|
||||
}
|
||||
|
||||
cast_muzzle_flash_light(n_render_vertices, render_vertices, vert_segnum_list);
|
||||
|
|
|
@ -861,15 +861,14 @@ multi_explode_robot_sub(int botnum, int killer,char isthief)
|
|||
multi_drop_robot_powerups(robot-Objects);
|
||||
multi_delete_controlled_robot(robot-Objects);
|
||||
}
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
(void)isthief;
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
else if (robot->ctype.ai_info.REMOTE_OWNER == -1 && multi_i_am_master())
|
||||
{
|
||||
multi_drop_robot_powerups(robot-Objects);
|
||||
//multi_delete_controlled_robot(robot-Objects);
|
||||
}
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
(void)isthief;
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
if (isthief || Robot_info[robot->id].thief)
|
||||
drop_stolen_items(robot);
|
||||
#endif
|
||||
|
|
|
@ -336,6 +336,10 @@ int robot_info_read_n(robot_info *ri, int n, PHYSFS_file *fp)
|
|||
for (j = 0; j < MAX_GUNS + 1; j++)
|
||||
jointlist_read_n(ri[i].anim_states[j], N_ANIM_STATES, fp);
|
||||
|
||||
|
||||
for (j = 0; j < MAX_GUNS + 1; j++)
|
||||
jointlist_read_n(ri[i].anim_states[j], N_ANIM_STATES, fp);
|
||||
|
||||
ri[i].always_0xabcd = PHYSFSX_readInt(fp);
|
||||
}
|
||||
return i;
|
||||
|
|
|
@ -268,7 +268,6 @@ void blast_blastable_wall(segment *seg, int side)
|
|||
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// Destroys a blastable wall.
|
||||
void wall_destroy(segment *seg, int side)
|
||||
|
|
Loading…
Reference in a new issue