Make game.c more similar between D1X and D2X, making related changes to other files (\!)
This commit is contained in:
parent
af0c2db749
commit
16f615c6ff
|
@ -1,5 +1,9 @@
|
|||
D1X-Rebirth Changelog
|
||||
|
||||
20090701
|
||||
--------
|
||||
main/cntrlcen.c, main/collide.c, main/effects.c, main/fireball.c, main/fuelcen.c, main/fuelcen.h, main/game.c, main/game.h, main/gamecntl.c, main/gamerend.c, main/gameseq.c, main/multi.c, main/net_ipx.c, main/newdemo.c, main/render.c, main/songs.c, main/state.c, main/switch.c: Make game.c more similar between D1X and D2X, making related changes to other files (!)
|
||||
|
||||
20090607
|
||||
--------
|
||||
d1x-rebirth.xcodeproj/project.pbxproj, main/game.c, main/game.h, main/gamecntl.c, main/gamerend.c, SConstruct: Split game.c into game.c, gamecntl.c and gamerend.c like d2x
|
||||
|
|
|
@ -127,7 +127,7 @@ void do_controlcen_destroyed_stuff(object *objp)
|
|||
wall_toggle(&Segments[ControlCenterTriggers.seg[i]], ControlCenterTriggers.side[i]);
|
||||
|
||||
// And start the countdown stuff.
|
||||
Fuelcen_control_center_destroyed = 1;
|
||||
Control_center_destroyed = 1;
|
||||
|
||||
|
||||
if (!Control_center_present)
|
||||
|
|
|
@ -685,7 +685,7 @@ void collide_robot_and_player( object * robot, object * player, vms_vector *coll
|
|||
// was actually in another object.
|
||||
void net_destroy_controlcen(object *controlcen)
|
||||
{
|
||||
if (Fuelcen_control_center_destroyed != 1) {
|
||||
if (Control_center_destroyed != 1) {
|
||||
do_controlcen_destroyed_stuff(controlcen);
|
||||
|
||||
if ((controlcen != NULL) && !(controlcen->flags&(OF_EXPLODING|OF_DESTROYED))) {
|
||||
|
|
|
@ -101,7 +101,7 @@ void do_special_effects()
|
|||
if (ec->flags & EF_CRITICAL)
|
||||
continue;
|
||||
|
||||
if (ec->crit_clip!=-1 && Fuelcen_control_center_destroyed) {
|
||||
if (ec->crit_clip!=-1 && Control_center_destroyed) {
|
||||
int n = ec->crit_clip;
|
||||
|
||||
//*ec->bm_ptr = &GameBitmaps[Effects[n].vc.frames[Effects[n].frame_count].index];
|
||||
|
|
|
@ -440,7 +440,7 @@ void maybe_drop_net_powerup(int powerup_type)
|
|||
int segnum, objnum;
|
||||
vms_vector new_pos;
|
||||
|
||||
if (Fuelcen_control_center_destroyed || Endlevel_sequence ||
|
||||
if (Control_center_destroyed || Endlevel_sequence ||
|
||||
!may_create_powerup(powerup_type))
|
||||
return;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ fix Fuelcen_max_amount = i2f(100);
|
|||
// by this amount... when capacity gets to 0, no more morphers...
|
||||
fix EnergyToCreateOneRobot = i2f(1);
|
||||
|
||||
int Fuelcen_control_center_destroyed = 0;
|
||||
int Control_center_destroyed = 0;
|
||||
int Fuelcen_seconds_left = 0;
|
||||
|
||||
#define MATCEN_HP_DEFAULT F1_0*500; // Hitpoints
|
||||
|
@ -94,7 +94,7 @@ void fuelcen_reset()
|
|||
for(i=0; i<MAX_SEGMENTS; i++ )
|
||||
Segments[i].special = SEGMENT_IS_NOTHING;
|
||||
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
Num_robot_centers = 0;
|
||||
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ void controlcen_proc( FuelCenter * controlcen )
|
|||
fix old_time;
|
||||
int fc;
|
||||
|
||||
if (!Fuelcen_control_center_destroyed) return;
|
||||
if (!Control_center_destroyed) return;
|
||||
|
||||
// Control center destroyed, rock the player's ship.
|
||||
fc = Fuelcen_seconds_left;
|
||||
|
|
|
@ -186,7 +186,7 @@ extern char Special_names[MAX_CENTER_TYPES][11];
|
|||
|
||||
// Set to 1 after control center is destroyed.
|
||||
// Clear by calling fuelcen_reset();
|
||||
extern int Fuelcen_control_center_destroyed;
|
||||
extern int Control_center_destroyed;
|
||||
extern int Fuelcen_seconds_left;
|
||||
|
||||
//--repair-- //do the repair center for this frame
|
||||
|
|
273
main/game.c
273
main/game.c
|
@ -22,9 +22,14 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <SDL/SDL.h>
|
||||
|
||||
#ifdef OGL
|
||||
#include "ogl_init.h"
|
||||
#endif
|
||||
|
||||
#include "pstypes.h"
|
||||
#include "console.h"
|
||||
#include "gr.h"
|
||||
#include "inferno.h"
|
||||
#include "game.h"
|
||||
#include "key.h"
|
||||
|
@ -48,19 +53,14 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "gameseg.h"
|
||||
#include "wall.h"
|
||||
#include "ai.h"
|
||||
#include "rbaudio.h"
|
||||
#include "hostage.h"
|
||||
#include "fuelcen.h"
|
||||
#include "switch.h"
|
||||
#include "digi.h"
|
||||
#include "gamesave.h"
|
||||
#include "scores.h"
|
||||
#include "u_mem.h"
|
||||
#include "palette.h"
|
||||
#include "morph.h"
|
||||
#include "lighting.h"
|
||||
#include "newdemo.h"
|
||||
#include "titles.h"
|
||||
#include "collide.h"
|
||||
#include "weapon.h"
|
||||
#include "sounds.h"
|
||||
|
@ -70,14 +70,16 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "text.h"
|
||||
#include "powerup.h"
|
||||
#include "fireball.h"
|
||||
#include "controls.h"
|
||||
#include "songs.h"
|
||||
#include "config.h"
|
||||
#include "newmenu.h"
|
||||
#include "gamefont.h"
|
||||
#include "endlevel.h"
|
||||
#include "kconfig.h"
|
||||
#include "config.h"
|
||||
#include "mouse.h"
|
||||
#include "switch.h"
|
||||
#include "controls.h"
|
||||
#include "songs.h"
|
||||
#include "rbaudio.h"
|
||||
#include "multi.h"
|
||||
#include "desc_id.h"
|
||||
#include "cntrlcen.h"
|
||||
|
@ -85,21 +87,19 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "state.h"
|
||||
#include "piggy.h"
|
||||
#include "multibot.h"
|
||||
#include "gr.h"
|
||||
#include "hudmsg.h"
|
||||
#include "timer.h"
|
||||
#include "vers_id.h"
|
||||
#include "fvi.h"
|
||||
#include "console.h"
|
||||
#include "playsave.h"
|
||||
#include "config.h"
|
||||
#include "hudmsg.h"
|
||||
#include "vers_id.h"
|
||||
|
||||
extern void ReadControls(void); // located in gamecntl.c
|
||||
#ifdef EDITOR
|
||||
#include "editor/editor.h"
|
||||
#endif
|
||||
|
||||
void game_init_render_sub_buffers( int x, int y, int w, int h );
|
||||
void GameLoop(int RenderFlag, int ReadControlsFlag );
|
||||
void FireLaser(void);
|
||||
void powerup_grab_cheat_all(void);
|
||||
|
||||
#ifndef NDEBUG
|
||||
int Mark_count = 0; // number of debugging marks set
|
||||
#endif
|
||||
|
||||
static fix last_timer_value=0;
|
||||
|
||||
|
@ -107,54 +107,49 @@ int VR_render_mode = VR_NONE;
|
|||
int VR_low_res = 3; // Default to low res
|
||||
int VR_show_hud = 1;
|
||||
int VR_sensitivity = 1; // 0 - 2
|
||||
grs_canvas Screen_3d_window; // The rectangle for rendering the mine to
|
||||
grs_canvas *VR_offscreen_buffer = NULL; // The offscreen data buffer
|
||||
grs_canvas VR_render_buffer[2]; // Two offscreen buffers for left/right eyes.
|
||||
grs_canvas VR_render_sub_buffer[2]; // Two sub buffers for left/right eyes.
|
||||
grs_canvas VR_editor_canvas; // The canvas that the editor writes to.
|
||||
|
||||
//added 07/11/99 by adb:
|
||||
//added buffer pointer to allow different buffers for 3D game rendering and
|
||||
//the 2D menus (for DX3D port)
|
||||
grs_canvas *VR_offscreen_menu = NULL; // The offscreen data buffer for menus
|
||||
//end additions -- adb
|
||||
grs_canvas Screen_3d_window; // The rectangle for rendering the mine to
|
||||
grs_canvas *VR_offscreen_buffer = NULL; // The offscreen data buffer
|
||||
grs_canvas VR_render_buffer[2]; // Two offscreen buffers for left/right eyes.
|
||||
grs_canvas VR_render_sub_buffer[2]; // Two sub buffers for left/right eyes.
|
||||
grs_canvas VR_editor_canvas; // The canvas that the editor writes to.
|
||||
|
||||
static int old_cockpit_mode=-1;
|
||||
int force_cockpit_redraw=0;
|
||||
int PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd;
|
||||
|
||||
// Toggle_var points at a variable which gets !ed on del-T press.
|
||||
int Dummy_var;
|
||||
int *Toggle_var = &Dummy_var;
|
||||
|
||||
#ifdef EDITOR
|
||||
//flag for whether initial fade-in has been done
|
||||
char faded_in;
|
||||
#endif
|
||||
|
||||
int Game_suspended=0; //if non-zero, nothing moves but player
|
||||
int create_special_path(void);
|
||||
void fill_background(int x,int y,int w,int h,int dx,int dy);
|
||||
fix Auto_fire_fusion_cannon_time = 0;
|
||||
fix Fusion_charge = 0;
|
||||
fix Fusion_next_sound_time = 0;
|
||||
fix Fusion_last_sound_time = 0;
|
||||
int Debug_spew = 1;
|
||||
int Game_turbo_mode = 0;
|
||||
int Game_mode = GM_GAME_OVER;
|
||||
int Global_laser_firing_count = 0;
|
||||
int Global_missile_firing_count = 0;
|
||||
grs_bitmap background_bitmap;
|
||||
int Game_aborted;
|
||||
void update_cockpits();
|
||||
extern int HUD_nmessages;
|
||||
|
||||
#define BACKGROUND_NAME "statback.pcx"
|
||||
// Function prototypes for GAME.C exclusively.
|
||||
|
||||
void GameLoop(int RenderFlag, int ReadControlsFlag);
|
||||
void FireLaser(void);
|
||||
void powerup_grab_cheat_all(void);
|
||||
void game_init_render_sub_buffers(int x, int y, int w, int h);
|
||||
|
||||
extern void ReadControls(void); // located in gamecntl.c
|
||||
// ==============================================================================================
|
||||
|
||||
//this is called once per game
|
||||
void init_game()
|
||||
{
|
||||
ubyte pal[256*3];
|
||||
int pcx_error;
|
||||
|
||||
init_objects();
|
||||
|
||||
hostage_init();
|
||||
|
@ -163,13 +158,7 @@ void init_game()
|
|||
|
||||
init_exploding_walls();
|
||||
|
||||
gr_init_bitmap_data (&background_bitmap);
|
||||
pcx_error = pcx_read_bitmap(BACKGROUND_NAME,&background_bitmap,BM_LINEAR,pal);
|
||||
if (pcx_error != PCX_ERROR_NONE)
|
||||
Error("File %s - PCX error: %s",BACKGROUND_NAME,pcx_errormsg(pcx_error));
|
||||
gr_remap_bitmap_good( &background_bitmap, pal, -1, -1 );
|
||||
|
||||
Clear_window = 2; // do portal only window clear.
|
||||
Clear_window = 2; // do portal only window clear.
|
||||
}
|
||||
|
||||
|
||||
|
@ -195,8 +184,6 @@ void game_show_warning(char *s)
|
|||
|
||||
u_int32_t Game_screen_mode = SM(640,480);
|
||||
|
||||
extern int Rear_view;
|
||||
|
||||
//initialize the various canvases on the game screen
|
||||
//called every time the screen mode or cockpit changes
|
||||
void init_cockpit()
|
||||
|
@ -215,46 +202,44 @@ void init_cockpit()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef D1XD3D
|
||||
PlayerCfg.CockpitMode = CM_STATUS_BAR;
|
||||
#endif
|
||||
gr_set_current_canvas(NULL);
|
||||
|
||||
switch( PlayerCfg.CockpitMode ) {
|
||||
case CM_FULL_COCKPIT:
|
||||
game_init_render_sub_buffers(0, 0, SWIDTH, (SHEIGHT*2)/3);
|
||||
break;
|
||||
switch( PlayerCfg.CockpitMode ) {
|
||||
case CM_FULL_COCKPIT:
|
||||
game_init_render_sub_buffers(0, 0, SWIDTH, (SHEIGHT*2)/3);
|
||||
break;
|
||||
|
||||
case CM_REAR_VIEW:
|
||||
case CM_FULL_SCREEN:
|
||||
game_init_render_sub_buffers(0, 0, SWIDTH, SHEIGHT);
|
||||
break;
|
||||
case CM_REAR_VIEW:
|
||||
case CM_FULL_SCREEN:
|
||||
game_init_render_sub_buffers(0, 0, SWIDTH, SHEIGHT);
|
||||
break;
|
||||
|
||||
case CM_STATUS_BAR:
|
||||
game_init_render_sub_buffers( 0, 0, SWIDTH, (HIRESMODE?(SHEIGHT*2)/2.6:(SHEIGHT*2)/2.72) );
|
||||
break;
|
||||
case CM_STATUS_BAR:
|
||||
game_init_render_sub_buffers( 0, 0, SWIDTH, (HIRESMODE?(SHEIGHT*2)/2.6:(SHEIGHT*2)/2.72) );
|
||||
break;
|
||||
|
||||
case CM_LETTERBOX: {
|
||||
int x,y,w,h;
|
||||
case CM_LETTERBOX: {
|
||||
int x,y,w,h;
|
||||
|
||||
x = 0; w = SM_W(Game_screen_mode);
|
||||
h = (SM_H(Game_screen_mode) * 3) / 4; // true letterbox size (16:9)
|
||||
y = (SM_H(Game_screen_mode)-h)/2;
|
||||
x = 0; w = SM_W(Game_screen_mode);
|
||||
h = (SM_H(Game_screen_mode) * 3) / 4; // true letterbox size (16:9)
|
||||
y = (SM_H(Game_screen_mode)-h)/2;
|
||||
|
||||
gr_rect(x,0,w,SM_H(Game_screen_mode)-h);
|
||||
gr_rect(x,SM_H(Game_screen_mode)-h,w,SM_H(Game_screen_mode));
|
||||
gr_rect(x,0,w,SM_H(Game_screen_mode)-h);
|
||||
gr_rect(x,SM_H(Game_screen_mode)-h,w,SM_H(Game_screen_mode));
|
||||
|
||||
game_init_render_sub_buffers( x, y, w, h );
|
||||
break;
|
||||
game_init_render_sub_buffers( x, y, w, h );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gr_set_current_canvas(NULL);
|
||||
}
|
||||
|
||||
//selects a given cockpit (or lack of one). See types in game.h
|
||||
void select_cockpit(int mode)
|
||||
{
|
||||
if (mode != PlayerCfg.CockpitMode) { //new mode
|
||||
if (mode != PlayerCfg.CockpitMode) { //new mode
|
||||
PlayerCfg.CockpitMode=mode;
|
||||
init_cockpit();
|
||||
}
|
||||
|
@ -267,8 +252,6 @@ void reset_cockpit()
|
|||
last_drawn_cockpit = -1;
|
||||
}
|
||||
|
||||
void HUD_clear_messages();
|
||||
|
||||
void game_init_render_sub_buffers( int x, int y, int w, int h )
|
||||
{
|
||||
gr_clear_canvas(0);
|
||||
|
@ -281,8 +264,7 @@ void game_init_render_sub_buffers( int x, int y, int w, int h )
|
|||
// Sets up the canvases we will be rendering to
|
||||
void game_init_render_buffers(int render_w, int render_h, int render_method )
|
||||
{
|
||||
// if (!VR_offscreen_buffer) {
|
||||
VR_render_mode = render_method;
|
||||
VR_render_mode = render_method;
|
||||
|
||||
if (VR_offscreen_buffer) {
|
||||
gr_free_canvas(VR_offscreen_buffer);
|
||||
|
@ -301,15 +283,14 @@ void game_init_render_buffers(int render_w, int render_h, int render_method )
|
|||
else
|
||||
VR_offscreen_buffer = gr_create_canvas( render_w, render_h );
|
||||
#ifdef OGL
|
||||
VR_offscreen_buffer->cv_bitmap.bm_type=BM_OGL;
|
||||
VR_offscreen_buffer->cv_bitmap.bm_type = BM_OGL;
|
||||
#endif
|
||||
|
||||
gr_init_sub_canvas( &VR_render_buffer[0], VR_offscreen_buffer, 0, 0, render_w, render_h );
|
||||
gr_init_sub_canvas( &VR_render_buffer[1], VR_offscreen_buffer, 0, 0, render_w, render_h );
|
||||
}
|
||||
VR_offscreen_menu = VR_offscreen_buffer;
|
||||
|
||||
game_init_render_sub_buffers( 0, 0, render_w, render_h );
|
||||
// }
|
||||
}
|
||||
|
||||
//called to change the screen mode. Parameter sm is the new mode, one of
|
||||
|
@ -326,13 +307,14 @@ int set_screen_mode(int sm)
|
|||
return 1;
|
||||
}
|
||||
|
||||
Screen_mode = sm;
|
||||
|
||||
#ifdef EDITOR
|
||||
Canv_editor = NULL;
|
||||
#endif
|
||||
|
||||
switch( Screen_mode ) {
|
||||
Screen_mode = sm;
|
||||
|
||||
switch( Screen_mode )
|
||||
{
|
||||
case SCREEN_MENU:
|
||||
/* give control back to the WM */
|
||||
if (GameArg.CtlGrabMouse)
|
||||
|
@ -341,8 +323,8 @@ int set_screen_mode(int sm)
|
|||
if (grd_curscreen->sc_mode != Game_screen_mode)
|
||||
if (gr_set_mode(Game_screen_mode))
|
||||
Error("Cannot set screen mode.");
|
||||
|
||||
break;
|
||||
|
||||
case SCREEN_GAME:
|
||||
/* keep the mouse from wandering in SDL */
|
||||
if (GameArg.CtlGrabMouse && (Newdemo_state != ND_STATE_PLAYBACK))
|
||||
|
@ -552,6 +534,7 @@ void save_screen_shot(int automap_flag)
|
|||
key_flush();
|
||||
start_time();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//initialize flying
|
||||
|
@ -625,8 +608,10 @@ void diminish_palette_towards_normal(void)
|
|||
{
|
||||
int dec_amount = 0;
|
||||
|
||||
// Diminish at DIMINISH_RATE units/second.
|
||||
// For frame rates > DIMINISH_RATE Hz, use randomness to achieve this.
|
||||
if (FrameTime < F1_0/DIMINISH_RATE) {
|
||||
if (d_rand() < FrameTime*DIMINISH_RATE/2) // Note: d_rand() is in 0..32767, and 8 Hz means decrement every frame
|
||||
if (d_rand() < FrameTime*DIMINISH_RATE/2) // Note: d_rand() is in 0..32767, and 8 Hz means decrement every frame
|
||||
dec_amount = 1;
|
||||
} else {
|
||||
dec_amount = f2i(FrameTime*DIMINISH_RATE); // one second = DIMINISH_RATE counts
|
||||
|
@ -839,7 +824,8 @@ void check_rear_view()
|
|||
}
|
||||
else
|
||||
if (Controls.rear_view_down_state) {
|
||||
if (leave_mode==0 && (timer_get_fixed_seconds()-entry_time)>LEAVE_TIME)
|
||||
|
||||
if (leave_mode == 0 && (timer_get_fixed_seconds() - entry_time) > LEAVE_TIME)
|
||||
leave_mode = 1;
|
||||
}
|
||||
else
|
||||
|
@ -864,8 +850,11 @@ void reset_rear_view(void)
|
|||
|
||||
Rear_view = 0;
|
||||
|
||||
if (PlayerCfg.CockpitMode == CM_REAR_VIEW)
|
||||
if (!(PlayerCfg.CockpitMode == CM_FULL_COCKPIT || PlayerCfg.CockpitMode == CM_STATUS_BAR || PlayerCfg.CockpitMode == CM_FULL_SCREEN)) {
|
||||
if (!(old_cockpit_mode == CM_FULL_COCKPIT || old_cockpit_mode == CM_STATUS_BAR || old_cockpit_mode == CM_FULL_SCREEN))
|
||||
old_cockpit_mode = CM_FULL_COCKPIT;
|
||||
select_cockpit(old_cockpit_mode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -962,11 +951,11 @@ void game()
|
|||
Automap_flag = 0;
|
||||
Config_menu_flag = 0;
|
||||
|
||||
GameLoop( 1, 1 ); // Do game loop with rendering and reading controls.
|
||||
GameLoop( 1, 1 ); // Do game loop with rendering and reading controls.
|
||||
|
||||
//see if redbook song needs to be restarted
|
||||
RBACheckFinishedHook(); // Handle RedBook Audio Repeating.
|
||||
|
||||
|
||||
if (Config_menu_flag) {
|
||||
if (!(Game_mode&GM_MULTI)) palette_save();
|
||||
do_options_menu();
|
||||
|
@ -1008,17 +997,10 @@ void game()
|
|||
}
|
||||
|
||||
if (Function_mode != FMODE_GAME)
|
||||
longjmp(LeaveGame,1);
|
||||
longjmp(LeaveGame,0);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NETWORK
|
||||
if(Game_mode & GM_MULTI)
|
||||
{
|
||||
PlayerCfg.NetlifeKills += Players[Player_num].net_kills_total;
|
||||
PlayerCfg.NetlifeKilled += Players[Player_num].net_killed_total;
|
||||
}
|
||||
#endif
|
||||
digi_stop_all();
|
||||
|
||||
if ( (Newdemo_state == ND_STATE_RECORDING) || (Newdemo_state == ND_STATE_PAUSED) )
|
||||
|
@ -1045,32 +1027,30 @@ void close_game()
|
|||
|
||||
close_gauges();
|
||||
restore_effect_bitmap_icons();
|
||||
gr_free_bitmap_data (&background_bitmap);
|
||||
clear_warn_func(game_show_warning); //don't use this func anymore
|
||||
}
|
||||
|
||||
int ostate_p=0;
|
||||
int ostate_s=0;
|
||||
|
||||
void game_render_frame();
|
||||
#ifdef EDITOR
|
||||
extern void player_follow_path(object *objp);
|
||||
extern void check_create_player_path(void);
|
||||
extern void player_follow_path(object *objp);
|
||||
extern void check_create_player_path(void);
|
||||
#endif
|
||||
|
||||
extern int Do_appearance_effect;
|
||||
|
||||
void game_render_frame();
|
||||
void GameLoop(int RenderFlag, int ReadControlsFlag )
|
||||
{
|
||||
if (RenderFlag) {
|
||||
if (force_cockpit_redraw) { //screen need redrawing?
|
||||
if (force_cockpit_redraw) { //screen need redrawing?
|
||||
init_cockpit();
|
||||
force_cockpit_redraw=0;
|
||||
}
|
||||
game_render_frame();
|
||||
}
|
||||
|
||||
|
||||
calc_frame_time();
|
||||
|
||||
|
||||
if (ReadControlsFlag)
|
||||
ReadControls();
|
||||
else
|
||||
|
@ -1085,6 +1065,7 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
check_create_player_path();
|
||||
player_follow_path(ConsoleObject);
|
||||
#endif
|
||||
|
||||
#ifdef NETWORK
|
||||
if (Game_mode & GM_MULTI)
|
||||
multi_do_frame();
|
||||
|
@ -1100,7 +1081,7 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
do_endlevel_frame();
|
||||
powerup_grab_cheat_all();
|
||||
do_special_effects();
|
||||
return; //skip everything else
|
||||
return; //skip everything else
|
||||
}
|
||||
|
||||
if (Newdemo_state != ND_STATE_PLAYBACK)
|
||||
|
@ -1111,22 +1092,24 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
triggers_frame_process();
|
||||
}
|
||||
|
||||
if (Fuelcen_control_center_destroyed) {
|
||||
if (Control_center_destroyed) {
|
||||
if (Newdemo_state==ND_STATE_RECORDING )
|
||||
newdemo_record_control_center_destroyed();
|
||||
flash_frame();
|
||||
}
|
||||
|
||||
flash_frame();
|
||||
|
||||
if ( Newdemo_state == ND_STATE_PLAYBACK ) {
|
||||
newdemo_playback_one_frame();
|
||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||
longjmp( LeaveGame, 1 ); // Go back to menu
|
||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||
longjmp( LeaveGame, 0 ); // Go back to menu
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Note the link to above!
|
||||
|
||||
Players[Player_num].homing_object_dist = -1; // Assume not being tracked. Laser_do_weapon_sequence modifies this.
|
||||
Players[Player_num].homing_object_dist = -1; // Assume not being tracked. Laser_do_weapon_sequence modifies this.
|
||||
|
||||
object_move_all();
|
||||
powerup_grab_cheat_all();
|
||||
|
||||
|
@ -1134,10 +1117,11 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
return;
|
||||
|
||||
fuelcen_update_all();
|
||||
|
||||
do_ai_frame_all();
|
||||
|
||||
if (allowed_to_fire_laser())
|
||||
FireLaser();
|
||||
FireLaser(); // Fire Laser!
|
||||
|
||||
if (Auto_fire_fusion_cannon_time) {
|
||||
if (Primary_weapon != FUSION_INDEX)
|
||||
|
@ -1170,7 +1154,8 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
}
|
||||
|
||||
if (Global_laser_firing_count)
|
||||
Global_laser_firing_count -= do_laser_firing_player(); //do_laser_firing(Players[Player_num].objnum, Primary_weapon);
|
||||
Global_laser_firing_count -= do_laser_firing_player();
|
||||
|
||||
if (Global_laser_firing_count < 0)
|
||||
Global_laser_firing_count = 0;
|
||||
}
|
||||
|
@ -1186,7 +1171,9 @@ void GameLoop(int RenderFlag, int ReadControlsFlag )
|
|||
// cannon.
|
||||
void FireLaser()
|
||||
{
|
||||
|
||||
Global_laser_firing_count = Weapon_info[Primary_weapon_to_weapon_info[Primary_weapon]].fire_count * (Controls.fire_primary_state || Controls.fire_primary_down_count);
|
||||
|
||||
if ((Primary_weapon == FUSION_INDEX) && (Global_laser_firing_count)) {
|
||||
if ((Players[Player_num].energy < F1_0*2) && (Auto_fire_fusion_cannon_time == 0)) {
|
||||
Global_laser_firing_count = 0;
|
||||
|
@ -1199,7 +1186,7 @@ void FireLaser()
|
|||
|
||||
if (Players[Player_num].energy <= 0) {
|
||||
Players[Player_num].energy = 0;
|
||||
Auto_fire_fusion_cannon_time = GameTime -1; // Fire now!
|
||||
Auto_fire_fusion_cannon_time = GameTime -1; // Fire now!
|
||||
} else
|
||||
Auto_fire_fusion_cannon_time = GameTime + FrameTime/2 + 1; // Fire the fusion cannon at this time in the future.
|
||||
|
||||
|
@ -1207,7 +1194,7 @@ void FireLaser()
|
|||
PALETTE_FLASH_ADD(Fusion_charge >> 11, 0, Fusion_charge >> 11);
|
||||
else
|
||||
PALETTE_FLASH_ADD(Fusion_charge >> 11, Fusion_charge >> 11, 0);
|
||||
|
||||
|
||||
if (GameTime < Fusion_last_sound_time) //gametime has wrapped
|
||||
Fusion_next_sound_time = Fusion_last_sound_time = GameTime;
|
||||
|
||||
|
@ -1234,6 +1221,7 @@ void FireLaser()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------
|
||||
// If player is close enough to objnum, which ought to be a powerup, pick it up!
|
||||
// This could easily be made difficulty level dependent.
|
||||
|
@ -1267,7 +1255,7 @@ void powerup_grab_cheat(object *player, int objnum)
|
|||
void powerup_grab_cheat_all(void)
|
||||
{
|
||||
segment *segp;
|
||||
int objnum;
|
||||
int objnum;
|
||||
|
||||
segp = &Segments[ConsoleObject->segnum];
|
||||
objnum = segp->objects;
|
||||
|
@ -1290,7 +1278,7 @@ int Last_level_path_created = -1;
|
|||
int mark_player_path_to_segment(int segnum)
|
||||
{
|
||||
int i;
|
||||
object *objp = ConsoleObject;
|
||||
object *objp = ConsoleObject;
|
||||
short player_path_length=0;
|
||||
int player_hide_index=-1;
|
||||
|
||||
|
@ -1322,7 +1310,7 @@ int mark_player_path_to_segment(int segnum)
|
|||
|
||||
objnum = obj_create( OBJ_POWERUP, POW_ENERGY, segnum, &seg_center, &vmd_identity_matrix, Powerup_info[POW_ENERGY].size, CT_POWERUP, MT_NONE, RT_POWERUP);
|
||||
if (objnum == -1) {
|
||||
Int3(); // Unable to drop energy powerup for path
|
||||
Int3(); // Unable to drop energy powerup for path
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1332,6 +1320,7 @@ int mark_player_path_to_segment(int segnum)
|
|||
obj->rtype.vclip_info.framenum = 0;
|
||||
obj->lifeleft = F1_0*100 + d_rand() * 4;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1349,6 +1338,7 @@ int create_special_path(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1372,49 +1362,4 @@ void show_free_objects(void)
|
|||
}
|
||||
}
|
||||
|
||||
#define FILL_VAL 0xcc // int 3 opcode value
|
||||
|
||||
extern void code_01s(void), code_01e(void);
|
||||
extern void code_02s(void), code_02e(void);
|
||||
extern void code_03s(void), code_03e(void);
|
||||
extern void code_04s(void), code_04e(void);
|
||||
extern void code_05s(void), code_05e(void);
|
||||
extern void code_06s(void), code_06e(void);
|
||||
extern void code_07s(void), code_07e(void);
|
||||
extern void code_08s(void), code_08e(void);
|
||||
extern void code_09s(void), code_09e(void);
|
||||
extern void code_10s(void), code_10e(void);
|
||||
extern void code_11s(void), code_11e(void);
|
||||
extern void code_12s(void), code_12e(void);
|
||||
extern void code_13s(void), code_13e(void);
|
||||
extern void code_14s(void), code_14e(void);
|
||||
extern void code_15s(void), code_15e(void);
|
||||
extern void code_16s(void), code_16e(void);
|
||||
extern void code_17s(void), code_17e(void);
|
||||
extern void code_18s(void), code_18e(void);
|
||||
extern void code_19s(void), code_19e(void);
|
||||
extern void code_20s(void), code_20e(void);
|
||||
extern void code_21s(void), code_21e(void);
|
||||
|
||||
int Mem_filled = 0;
|
||||
|
||||
void fill_func(char *start, char *end, char value)
|
||||
{
|
||||
char *i;
|
||||
|
||||
for (i=start; i<end; i++)
|
||||
*i = value;
|
||||
|
||||
}
|
||||
|
||||
void check_func(char *start, char *end, char value)
|
||||
{
|
||||
char *i;
|
||||
for (i=start; i<end; i++)
|
||||
if (*i != value) {
|
||||
Int3(); // The nast triple aught six bug...we can smell it...contact Mike!
|
||||
Error("Oops, the nasty triple aught six bug. Address == %p\n", i);
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -231,7 +231,6 @@ extern grs_canvas VR_render_buffer[2]; // Two offscreen buffers for left/right
|
|||
extern grs_canvas VR_render_sub_buffer[2]; // Two sub buffers for left/right eyes.
|
||||
extern grs_canvas VR_screen_pages[2]; // Two pages of VRAM if paging is available
|
||||
extern grs_canvas VR_screen_sub_pages[2]; // Two sub pages of VRAM if paging is available
|
||||
extern grs_canvas *VR_offscreen_menu; // The offscreen data buffer for menus
|
||||
|
||||
void game_init_render_buffers (int render_max_w, int render_max_h, int render_method);
|
||||
void game_do_render_frame(int flip);
|
||||
|
|
|
@ -1180,7 +1180,7 @@ void ReadControls()
|
|||
check_rear_view();
|
||||
|
||||
// If automap key pressed, enable automap unless you are in network mode, control center destroyed and < 10 seconds left
|
||||
if ( Controls.automap_down_count && !((Game_mode & GM_MULTI) && Fuelcen_control_center_destroyed && (Fuelcen_seconds_left < 10)))
|
||||
if ( Controls.automap_down_count && !((Game_mode & GM_MULTI) && Control_center_destroyed && (Fuelcen_seconds_left < 10)))
|
||||
Automap_flag = 1;
|
||||
|
||||
do_weapon_stuff();
|
||||
|
|
|
@ -280,7 +280,7 @@ void draw_window_label()
|
|||
|
||||
void render_countdown_gauge()
|
||||
{
|
||||
if (!Endlevel_sequence && Fuelcen_control_center_destroyed && (Fuelcen_seconds_left>-1) && (Fuelcen_seconds_left<127)) {
|
||||
if (!Endlevel_sequence && Control_center_destroyed && (Fuelcen_seconds_left>-1) && (Fuelcen_seconds_left<127)) {
|
||||
gr_set_curfont(GAME_FONT);
|
||||
gr_set_fontcolor(BM_XRGB(0,63,0),-1);
|
||||
gr_printf(0x8000, (SHEIGHT/6.666), "T-%d s", Fuelcen_seconds_left );
|
||||
|
|
|
@ -412,7 +412,7 @@ void editor_reset_stuff_on_level()
|
|||
ConsoleObject->movement_type = MT_PHYSICS;
|
||||
Game_suspended = 0;
|
||||
verify_console_object();
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
if (Newdemo_state != ND_STATE_PLAYBACK)
|
||||
gameseq_remove_unused_players();
|
||||
init_cockpit();
|
||||
|
@ -1046,7 +1046,7 @@ extern void do_end_game(void);
|
|||
// Return true if game over.
|
||||
int AdvanceLevel(int secret_flag)
|
||||
{
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
|
||||
#ifdef EDITOR
|
||||
if (PLAYING_BUILTIN_MISSION)
|
||||
|
@ -1165,7 +1165,7 @@ void DoPlayerDead()
|
|||
}
|
||||
}
|
||||
|
||||
if ( Fuelcen_control_center_destroyed ) {
|
||||
if ( Control_center_destroyed ) {
|
||||
int rval;
|
||||
|
||||
//clear out stuff so no bonus
|
||||
|
@ -1296,7 +1296,7 @@ void StartNewLevelSub(int level_num, int page_in_textures)
|
|||
|
||||
Game_suspended = 0;
|
||||
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
|
||||
init_cockpit();
|
||||
init_robots_for_level();
|
||||
|
@ -1429,8 +1429,6 @@ void copy_defaults_to_robot_all(void)
|
|||
|
||||
int Do_appearance_effect=0;
|
||||
|
||||
extern int Rear_view;
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------
|
||||
//called when the player is starting a level (new game or new ship)
|
||||
void StartLevel(int random)
|
||||
|
|
43
main/multi.c
43
main/multi.c
|
@ -247,6 +247,8 @@ int message_length[MULTI_MAX_TYPE+1] = {
|
|||
|
||||
void multi_reset_player_object(object *objp);
|
||||
void multi_set_robot_ai(void);
|
||||
void multi_add_lifetime_killed();
|
||||
void multi_add_lifetime_kills();
|
||||
void extract_netplayer_stats( netplayer_stats *ps, player * pd );
|
||||
|
||||
int multi_allow_powerup_mask[MAX_POWERUP_TYPES] =
|
||||
|
@ -671,7 +673,10 @@ void multi_compute_kill(int killer, int killed)
|
|||
reactor_kills[killed_pnum]++;
|
||||
reactor_kills_total++;
|
||||
if (killed_pnum == Player_num)
|
||||
{
|
||||
HUD_init_message("%s %s.", TXT_YOU_WERE, TXT_KILLED_BY_NONPLAY);
|
||||
multi_add_lifetime_killed ();
|
||||
}
|
||||
else
|
||||
HUD_init_message("%s %s %s.", killed_name, TXT_WAS, TXT_KILLED_BY_NONPLAY );
|
||||
return;
|
||||
|
@ -681,7 +686,10 @@ void multi_compute_kill(int killer, int killed)
|
|||
else if ((killer_type != OBJ_PLAYER) && (killer_type != OBJ_GHOST))
|
||||
{
|
||||
if (killed_pnum == Player_num)
|
||||
{
|
||||
hud_message(MSGC_MULTI_KILL, "%s %s.", TXT_YOU_WERE, TXT_KILLED_BY_ROBOT);
|
||||
multi_add_lifetime_killed();
|
||||
}
|
||||
else
|
||||
hud_message(MSGC_MULTI_KILL, "%s %s %s.", killed_name, TXT_WAS, TXT_KILLED_BY_ROBOT );
|
||||
Players[killed_pnum].net_killed_total++;
|
||||
|
@ -725,7 +733,10 @@ void multi_compute_kill(int killer, int killed)
|
|||
|
||||
kill_matrix[killed_pnum][killed_pnum] += 1; // # of suicides
|
||||
if (killer_pnum == Player_num)
|
||||
{
|
||||
HUD_init_message("%s %s %s!", TXT_YOU, TXT_KILLED, TXT_YOURSELF );
|
||||
multi_add_lifetime_killed();
|
||||
}
|
||||
else
|
||||
HUD_init_message("%s %s", killed_name, TXT_SUICIDE);
|
||||
}
|
||||
|
@ -751,11 +762,15 @@ void multi_compute_kill(int killer, int killed)
|
|||
|
||||
if (killer_pnum == Player_num) {
|
||||
HUD_init_message("%s %s %s!", TXT_YOU, TXT_KILLED, killed_name);
|
||||
multi_add_lifetime_kills();
|
||||
if ((Game_mode & GM_MULTI_COOP) && (Players[Player_num].score >= 1000))
|
||||
add_points_to_score(-1000);
|
||||
}
|
||||
else if (killed_pnum == Player_num)
|
||||
{
|
||||
HUD_init_message("%s %s %s!", killer_name, TXT_KILLED, TXT_YOU);
|
||||
multi_add_lifetime_killed();
|
||||
}
|
||||
else
|
||||
HUD_init_message("%s %s %s!", killer_name, TXT_KILLED, killed_name);
|
||||
}
|
||||
|
@ -929,7 +944,7 @@ multi_menu_poll(void)
|
|||
fix old_shields;
|
||||
int was_fuelcen_alive;
|
||||
|
||||
was_fuelcen_alive = Fuelcen_control_center_destroyed;
|
||||
was_fuelcen_alive = Control_center_destroyed;
|
||||
|
||||
// Special polling function for in-game menus for multiplayer
|
||||
|
||||
|
@ -947,12 +962,12 @@ multi_menu_poll(void)
|
|||
|
||||
multi_in_menu--;
|
||||
|
||||
if (Endlevel_sequence || (Fuelcen_control_center_destroyed && !was_fuelcen_alive) || (Player_is_dead && !Player_exploded) || (Players[Player_num].shields < old_shields))
|
||||
if (Endlevel_sequence || (Control_center_destroyed && !was_fuelcen_alive) || (Player_is_dead && !Player_exploded) || (Players[Player_num].shields < old_shields))
|
||||
{
|
||||
multi_leave_menu = 1;
|
||||
return(-1);
|
||||
}
|
||||
if ((Fuelcen_control_center_destroyed) && (Fuelcen_seconds_left < 10))
|
||||
if ((Control_center_destroyed) && (Fuelcen_seconds_left < 10))
|
||||
{
|
||||
multi_leave_menu = 1;
|
||||
return(-1);
|
||||
|
@ -1177,7 +1192,7 @@ void multi_send_message_end()
|
|||
}
|
||||
}
|
||||
|
||||
else if (!strnicmp (Network_message,"KillReactor",11) && (Game_mode & GM_NETWORK) && !Fuelcen_control_center_destroyed)
|
||||
else if (!strnicmp (Network_message,"KillReactor",11) && (Game_mode & GM_NETWORK) && !Control_center_destroyed)
|
||||
{
|
||||
if (!multi_i_am_master())
|
||||
HUD_init_message ("Only %s can kill the reactor this way!",Players[multi_who_is_master()].callsign);
|
||||
|
@ -1613,7 +1628,7 @@ void multi_do_controlcen_destroy(char *buf)
|
|||
objnum = GET_INTEL_SHORT(buf + 1);
|
||||
who = buf[3];
|
||||
|
||||
if (Fuelcen_control_center_destroyed != 1)
|
||||
if (Control_center_destroyed != 1)
|
||||
{
|
||||
if ((who < N_players) && (who != Player_num)) {
|
||||
hud_message(MSGC_MULTI_INFO, "%s %s", Players[who].callsign, TXT_HAS_DEST_CONTROL);
|
||||
|
@ -1859,7 +1874,7 @@ multi_do_create_powerup(char *buf)
|
|||
vms_vector new_pos;
|
||||
char powerup_type;
|
||||
|
||||
if (Endlevel_sequence || Fuelcen_control_center_destroyed)
|
||||
if (Endlevel_sequence || Control_center_destroyed)
|
||||
return;
|
||||
|
||||
pnum = buf[count++];
|
||||
|
@ -3053,4 +3068,20 @@ void use_netplayer_stats( player * ps, netplayer_stats *pd )
|
|||
ps->hostages_total = INTEL_SHORT(pd->hostages_total); // Total number of hostages.
|
||||
ps->hostages_on_board=pd->hostages_on_board; // Number of hostages on ship.
|
||||
}
|
||||
|
||||
void multi_add_lifetime_kills ()
|
||||
{
|
||||
// This function adds a kill to lifetime stats of this player
|
||||
// Trivial, but syncing with D2X
|
||||
|
||||
PlayerCfg.NetlifeKills++;
|
||||
}
|
||||
|
||||
void multi_add_lifetime_killed ()
|
||||
{
|
||||
// This function adds a "killed" to lifetime stats of this player
|
||||
// Trivial, but syncing with D2X
|
||||
|
||||
PlayerCfg.NetlifeKilled++;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -283,7 +283,7 @@ net_ipx_init(void)
|
|||
Player_num = save_pnum;
|
||||
multi_new_game();
|
||||
Network_new_game = 1;
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
net_ipx_flush();
|
||||
|
||||
Netgame.PacketsPerSec = 10;
|
||||
|
@ -658,7 +658,7 @@ void net_ipx_welcome_player(sequence_packet *their)
|
|||
// Don't accept new players if we're ending this level. Its safe to
|
||||
// ignore since they'll request again later
|
||||
|
||||
if ((Endlevel_sequence) || (Fuelcen_control_center_destroyed))
|
||||
if ((Endlevel_sequence) || (Control_center_destroyed))
|
||||
{
|
||||
net_ipx_dump_player(their->player.protocol.ipx.server,their->player.protocol.ipx.node, DUMP_ENDLEVEL);
|
||||
return;
|
||||
|
@ -1103,7 +1103,7 @@ void net_ipx_send_objects(void)
|
|||
Assert(player_num >= 0);
|
||||
Assert(player_num < MaxNumNetPlayers);
|
||||
|
||||
if (Endlevel_sequence || Fuelcen_control_center_destroyed)
|
||||
if (Endlevel_sequence || Control_center_destroyed)
|
||||
{
|
||||
// Endlevel started before we finished sending the goods, we'll
|
||||
// have to stop and try again after the level.
|
||||
|
@ -1215,7 +1215,7 @@ void net_ipx_send_rejoin_sync(int player_num)
|
|||
Players[player_num].connected = 1; // connect the new guy
|
||||
Netgame.players[player_num].LastPacketTime = timer_get_approx_seconds();
|
||||
|
||||
if (Endlevel_sequence || Fuelcen_control_center_destroyed)
|
||||
if (Endlevel_sequence || Control_center_destroyed)
|
||||
{
|
||||
// Endlevel started before we finished sending the goods, we'll
|
||||
// have to stop and try again after the level.
|
||||
|
@ -1427,7 +1427,7 @@ net_ipx_send_endlevel_sub(int player_num)
|
|||
|
||||
if (Players[player_num].connected == 1) // Still playing
|
||||
{
|
||||
Assert(Fuelcen_control_center_destroyed);
|
||||
Assert(Control_center_destroyed);
|
||||
end.seconds_left = Fuelcen_seconds_left;
|
||||
}
|
||||
//added 05/18/99 Matt Mueller - similarly, its not used if we aren't connected, but checker complains.
|
||||
|
@ -1465,7 +1465,7 @@ net_ipx_send_game_info(sequence_packet *their)
|
|||
old_status = Netgame.game_status;
|
||||
|
||||
Netgame.protocol.ipx.Game_pkt_type = PID_GAME_INFO;
|
||||
if (Endlevel_sequence || Fuelcen_control_center_destroyed)
|
||||
if (Endlevel_sequence || Control_center_destroyed)
|
||||
Netgame.game_status = NETSTAT_ENDLEVEL;
|
||||
|
||||
if (!their)
|
||||
|
@ -3416,7 +3416,7 @@ void net_ipx_do_frame(int force, int listen)
|
|||
PacketUrgent = 0;
|
||||
MySyncPack.data_size = 0; // Start data over at 0 length.
|
||||
|
||||
if (Fuelcen_control_center_destroyed)
|
||||
if (Control_center_destroyed)
|
||||
net_ipx_send_endlevel_packet();
|
||||
}
|
||||
}
|
||||
|
@ -3424,7 +3424,7 @@ void net_ipx_do_frame(int force, int listen)
|
|||
if (!listen)
|
||||
return;
|
||||
|
||||
if ((last_timeout_check > F1_0) && !(Fuelcen_control_center_destroyed))
|
||||
if ((last_timeout_check > F1_0) && !(Control_center_destroyed))
|
||||
{
|
||||
fix approx_time = timer_get_approx_seconds();
|
||||
// Check for player timeouts
|
||||
|
|
|
@ -1697,7 +1697,7 @@ int newdemo_read_frame_information()
|
|||
|
||||
case ND_EVENT_CONTROL_CENTER_DESTROYED:
|
||||
nd_read_int(&Fuelcen_seconds_left);
|
||||
Fuelcen_control_center_destroyed = 1;
|
||||
Control_center_destroyed = 1;
|
||||
if (nd_bad_read) { done = -1; break; }
|
||||
if (!Newdemo_cntrlcen_destroyed) {
|
||||
newdemo_pop_ctrlcen_triggers();
|
||||
|
@ -2563,7 +2563,7 @@ void newdemo_playback_one_frame()
|
|||
if (Newdemo_vcr_state == ND_STATE_PLAYBACK)
|
||||
DoJasonInterpolate(nd_recorded_time);
|
||||
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
Fuelcen_seconds_left = -1;
|
||||
PALETTE_FLASH_SET(0,0,0); //clear flash
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ void flash_frame()
|
|||
{
|
||||
static fixang flash_ang=0;
|
||||
|
||||
if (!Fuelcen_control_center_destroyed)
|
||||
if (!Control_center_destroyed)
|
||||
return;
|
||||
|
||||
if (Endlevel_sequence)
|
||||
|
@ -253,7 +253,7 @@ void render_face(int segnum, int sidenum, int nv, short *vp, int tmap1, int tmap
|
|||
//the uvl struct has static light already in it
|
||||
|
||||
//scale static light for destruction effect
|
||||
if (Fuelcen_control_center_destroyed) //make lights flash
|
||||
if (Control_center_destroyed) //make lights flash
|
||||
uvl_copy[i].l = fixmul(flash_scale,uvl_copy[i].l);
|
||||
|
||||
//add in dynamic light (from explosions, etc.)
|
||||
|
|
|
@ -139,13 +139,11 @@ void songs_init()
|
|||
if ( Songs_initialized ) return;
|
||||
|
||||
// Set up External Music - ie Redbook/Jukebox
|
||||
#if !defined(SHAREWARE) || ( defined(SHAREWARE) && defined(APPLE_DEMO) )
|
||||
if (EXT_MUSIC_ON)
|
||||
{
|
||||
ext_music_load();
|
||||
set_extmusic_volume(GameCfg.MusicVolume);
|
||||
}
|
||||
#endif // endof ifndef SHAREWARE, ie ifdef SHAREWARE
|
||||
}
|
||||
|
||||
#define FADE_TIME (f1_0/2)
|
||||
|
|
|
@ -540,7 +540,7 @@ int state_save_all_sub(char *filename, char *desc, int between_levels)
|
|||
}
|
||||
|
||||
// Save the fuelcen info
|
||||
PHYSFS_write( fp, &Fuelcen_control_center_destroyed, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Control_center_destroyed, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Fuelcen_seconds_left, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Num_robot_centers, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, RobotCenters, sizeof(matcen_info), Num_robot_centers );
|
||||
|
@ -821,7 +821,7 @@ RetryObjectLoading:
|
|||
}
|
||||
|
||||
//Restore the fuelcen info
|
||||
PHYSFS_read(fp, &Fuelcen_control_center_destroyed, sizeof(int), 1);
|
||||
PHYSFS_read(fp, &Control_center_destroyed, sizeof(int), 1);
|
||||
PHYSFS_read(fp, &Fuelcen_seconds_left, sizeof(int), 1);
|
||||
PHYSFS_read(fp, &Num_robot_centers, sizeof(int), 1);
|
||||
PHYSFS_read(fp, RobotCenters, sizeof(matcen_info), Num_robot_centers);
|
||||
|
|
|
@ -140,7 +140,7 @@ int check_trigger_sub(int trigger_num, int pnum)
|
|||
if (Newdemo_state == ND_STATE_RECORDING) // stop demo recording
|
||||
Newdemo_state = ND_STATE_PAUSED;
|
||||
|
||||
Fuelcen_control_center_destroyed = 0;
|
||||
Control_center_destroyed = 0;
|
||||
#ifdef NETWORK
|
||||
if (Game_mode & GM_MULTI)
|
||||
multi_send_endlevel_start(1);
|
||||
|
|
Loading…
Reference in a new issue