Simplification of palette code; Properly screen clearing in SDL-only build when palette changes; Removed obsolete functions like gr_update (replaced by gr_flip), gr_palette_fade_in/out, gr_palette_clear; Added functionality to render Automap while menu display as well; Improved blocking of some controls code while Automap active; Fixed some compiler warnings

This commit is contained in:
zicodxx 2008-03-20 23:23:46 +00:00
parent bc7c48320b
commit d2365d65f0
40 changed files with 160 additions and 676 deletions

View file

@ -1,4 +1,3 @@
/* $Id: palette.c,v 1.1.1.1 2006/03/17 19:51:53 zicodxx Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
@ -13,6 +12,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*/
/*
*
* Graphical routines for setting the palette
*
*/
@ -33,10 +33,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "error.h"
#include "mono.h"
#include "fix.h"
//added/remove by dph on 1/9/99
//#include "key.h"
//end remove
#include "palette.h"
extern int gr_installed;
@ -59,20 +55,16 @@ ubyte gr_fade_table[256*34];
ubyte gr_palette_gamma = 0;
int gr_palette_gamma_param = 0;
ubyte gr_palette_faded_out = 1;
void gr_palette_set_gamma( int gamma )
{
if ( gamma < 0 ) gamma = 0;
//added/changed on 10/27/98 by Victor Rachels to increase brightness slider
if ( gamma > 16 ) gamma = 16; //was 8
//end this section change - Victor Rachels
if (gr_palette_gamma_param != gamma ) {
gr_palette_gamma_param = gamma;
gr_palette_gamma = gamma;
if (!gr_palette_faded_out)
gr_palette_load( gr_palette );
gr_palette_load( gr_palette );
}
}

View file

@ -1,5 +1,9 @@
D2X-Rebirth Changelog
20080321
--------
2s/palette.c, arch/ogl/gr.c, arch/ogl/ogl.c, arch/sdl/gr.c, include/gr.h, include/palette.h, main/automap.c, main/automap.h, main/collide.c, main/credits.c, main/editor/med.c, main/endlevel.c, main/escort.c, main/game.c, main/gamecntl.c, main/gamepal.c, main/gamepal.h, main/gamerend.c, main/gameseq.c, main/gauges.c, main/inferno.c, main/kconfig.c, main/kmatrix.c, main/menu.c, main/menu.h, main/network.c, main/newmenu.c, main/newmenu.h, main/paging.c, main/scores.c, main/switch.c, main/titles.c, ui/file.c, ui/keypress.c, ui/menu.c, ui/menubar.c, ui/message.c, ui/number.c, ui/popup.c: Simplification of palette code; Properly screen clearing in SDL-only build when palette changes; Removed obsolete functions like gr_update (replaced by gr_flip), gr_palette_fade_in/out, gr_palette_clear; Added functionality to render Automap while menu display as well; Improved blocking of some controls code while Automap active; Fixed some compiler warnings
20080319
--------
d2x-rebirth.xcodeproj: update d2x.xcode to build universal binaries (requires Xcode 2.1 or greater), update source file list

View file

@ -58,8 +58,6 @@ int gr_installed = 0;
int gl_initialized=0;
int ogl_fullscreen;
void gr_palette_clear(); // Function prototype for gr_init;
int gr_check_fullscreen(void){
return ogl_fullscreen;
}
@ -111,10 +109,6 @@ void ogl_init_state(void){
ogl_init_pixel_buffers(grd_curscreen->sc_w, grd_curscreen->sc_h);
}
void gr_update()
{
}
// Set the buffer to draw to. 0 is front, 1 is back
void gr_set_draw_buffer(int buf)
{
@ -211,8 +205,6 @@ int gr_set_mode(u_int32_t mode)
ogl_init_state();
gamefont_choose_game_font(w,h);
gr_update();
return 0;
}
@ -389,18 +381,14 @@ int do_pal_step=0;
void ogl_do_palfx(void){
OGL_DISABLE(TEXTURE_2D);
if (gr_palette_faded_out){
glColor3f(0,0,0);
}else{
if (do_pal_step){
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ONE);
glColor3f(last_r,last_g,last_b);
}else
return;
}
if (do_pal_step){
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ONE);
glColor3f(last_r,last_g,last_b);
}else
return;
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(0,1);
@ -412,21 +400,12 @@ void ogl_do_palfx(void){
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
void gr_palette_clear()
{
gr_palette_faded_out=1;
}
int ogl_brightness_ok = 0;
int ogl_brightness_r = 0, ogl_brightness_g = 0, ogl_brightness_b = 0;
static int old_b_r = 0, old_b_g = 0, old_b_b = 0;
void gr_palette_step_up(int r, int g, int b)
{
if (gr_palette_faded_out)
return;
old_b_r = ogl_brightness_r;
old_b_g = ogl_brightness_g;
old_b_b = ogl_brightness_b;
@ -461,25 +440,11 @@ void gr_palette_load( ubyte *pal )
if (gr_current_pal[i] > 63) gr_current_pal[i] = 63;
}
gr_palette_faded_out=0;
gr_palette_step_up(0, 0, 0); // make ogl_setbrightness_internal get run so that menus get brightened too.
init_computed_colors();
}
int gr_palette_fade_out(ubyte *pal, int nsteps, int allow_keys)
{
gr_palette_faded_out=1;
return 0;
}
int gr_palette_fade_in(ubyte *pal, int nsteps, int allow_keys)
{
gr_palette_faded_out=0;
return 0;
}
void gr_palette_read(ubyte * pal)
{
int i;

View file

@ -13,6 +13,7 @@
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <math.h>
#include <SDL/SDL.h>
#ifdef SDL_IMAGE
#include <SDL_image.h>
@ -95,10 +96,7 @@ void BlitRotatedSurface(SDL_Surface *from, SDL_Surface *to)
}
#endif
void gr_palette_clear(); // Function prototype for gr_init;
void gr_update()
void gr_flip()
{
#ifdef LANDSCAPE
screen2 = SDL_DisplayFormat(screen);
@ -111,11 +109,6 @@ void gr_update()
#endif
}
void gr_flip(void)
{
gr_update();
}
// Set the buffer to draw to. 0 is front, 1 is back
// With SDL, can't use it without resetting the video mode
void gr_set_draw_buffer(int buf)
@ -149,8 +142,6 @@ int gr_set_mode(u_int32_t mode)
w=SM_W(mode);
h=SM_H(mode);
if (screen != NULL) gr_palette_clear();
//added on 11/06/98 by Matt Mueller to set the title bar. (moved from below)
//sekmu: might wanna copy this litte blurb to one of the text files or something
//we want to set it here so that X window manager "Style" type commands work
@ -208,6 +199,7 @@ int gr_set_mode(u_int32_t mode)
//--moved up--end addition -MM
gamefont_choose_game_font(w,h);
gr_palette_load(gr_palette);
return 0;
}
@ -279,25 +271,7 @@ void gr_close()
static int last_r=0, last_g=0, last_b=0;
void gr_palette_clear()
{
SDL_Palette *palette;
SDL_Color colors[256];
int ncolors;
palette = screen->format->palette;
if (palette == NULL) {
return; // Display is not palettised
}
ncolors = palette->ncolors;
memset(colors, 0, ncolors * sizeof(SDL_Color));
SDL_SetColors(screen, colors, 0, 256);
gr_palette_faded_out = 1;
}
void gr_palette_step_up( int r, int g, int b )
@ -309,8 +283,6 @@ void gr_palette_step_up( int r, int g, int b )
SDL_Palette *palette;
SDL_Color colors[256];
if (gr_palette_faded_out) return;
if ( (r==last_r) && (g==last_g) && (b==last_b) ) return;
last_r = r;
@ -352,158 +324,46 @@ void gr_palette_load( ubyte *pal )
int i, j;
SDL_Palette *palette;
SDL_Color colors[256];
ubyte gamma[64];
if (memcmp(pal,gr_current_pal,768))
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
for (i=0; i<768; i++ ) {
gr_current_pal[i] = pal[i];
if (gr_current_pal[i] > 63) gr_current_pal[i] = 63;
}
if (screen == NULL) {
return;
}
palette = screen->format->palette;
if (palette == NULL) {
return; // Display is not palettised
}
for (i=0;i<64;i++)
gamma[i] = (int)((pow(((double)(14)/(double)(32)), 1.0)*i) + 0.5);
for (i = 0, j = 0; j < 256; j++) {
int c;
c = gr_find_closest_color(gamma[gr_palette[j*3]],gamma[gr_palette[j*3+1]],gamma[gr_palette[j*3+2]]);
gr_fade_table[14*256+j] = c;
//changed on 980913 by adb to fix palette problems
colors[j].r = (min(gr_current_pal[i++] + gr_palette_gamma, 63)) * 4;
colors[j].g = (min(gr_current_pal[i++] + gr_palette_gamma, 63)) * 4;
colors[j].b = (min(gr_current_pal[i++] + gr_palette_gamma, 63)) * 4;
//end changes by adb
}
SDL_SetColors(screen, colors, 0, 256);
gr_palette_faded_out = 0;
// SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
init_computed_colors();
gr_remap_color_fonts();
}
int gr_palette_fade_out(ubyte *pal, int nsteps, int allow_keys)
{
int i, j, k;
ubyte c;
fix fade_palette[768];
fix fade_palette_delta[768];
SDL_Palette *palette;
SDL_Color fade_colors[256];
if (gr_palette_faded_out) return 0;
palette = screen->format->palette;
if (palette == NULL) {
return -1; // Display is not palettised
}
if (pal==NULL) pal=gr_current_pal;
for (i=0; i<768; i++ ) {
gr_current_pal[i] = pal[i];
fade_palette[i] = i2f(pal[i]);
fade_palette_delta[i] = fade_palette[i] / nsteps;
}
for (j=0; j<nsteps; j++ ) {
for (i=0, k = 0; k<256; k++ ) {
fade_palette[i] -= fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].r = c * 4;
i++;
fade_palette[i] -= fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].g = c * 4;
i++;
fade_palette[i] -= fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].b = c * 4;
i++;
}
SDL_SetColors(screen, fade_colors, 0, 256);
}
gr_palette_faded_out = 1;
return 0;
}
int gr_palette_fade_in(ubyte *pal, int nsteps, int allow_keys)
{
int i, j, k, ncolors;
ubyte c;
fix fade_palette[768];
fix fade_palette_delta[768];
SDL_Palette *palette;
SDL_Color fade_colors[256];
if (!gr_palette_faded_out) return 0;
palette = screen->format->palette;
if (palette == NULL) {
return -1; // Display is not palettised
}
ncolors = palette->ncolors;
for (i=0; i<768; i++ ) {
gr_current_pal[i] = pal[i];
fade_palette[i] = 0;
fade_palette_delta[i] = i2f(pal[i]) / nsteps;
}
for (j=0; j<nsteps; j++ ) {
for (i=0, k = 0; k<256; k++ ) {
fade_palette[i] += fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].r = c * 4;
i++;
fade_palette[i] += fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].g = c * 4;
i++;
fade_palette[i] += fade_palette_delta[i];
if (fade_palette[i] > i2f(pal[i] + gr_palette_gamma) )
fade_palette[i] = i2f(pal[i] + gr_palette_gamma);
c = f2i(fade_palette[i]);
if (c > 63) c = 63;
fade_colors[k].b = c * 4;
i++;
}
SDL_SetColors(screen, fade_colors, 0, 256);
}
//added on 980913 by adb to fix palette problems
gr_palette_load(pal);
//end changes by adb
gr_palette_faded_out = 0;
return 0;
}
void gr_palette_read(ubyte * pal)
{
SDL_Palette *palette;

View file

@ -168,12 +168,6 @@ int gr_init_screen(int mode, int w, int h, int x, int y, int rowsize, ubyte *dat
int gr_check_mode(u_int32_t mode);
int gr_set_mode(u_int32_t mode);
// These 4 functions actuall change screen colors.
extern void gr_pal_fade_out(unsigned char * pal);
extern void gr_pal_fade_in(unsigned char * pal);
extern void gr_pal_clear(void);
extern void gr_pal_setblock( int start, int number, unsigned char * pal );
extern void gr_pal_getblock( int start, int number, unsigned char * pal );
@ -428,7 +422,6 @@ extern void gr_merge_textures_1( ubyte * lower, ubyte * upper, ubyte * dest );
extern void gr_merge_textures_2( ubyte * lower, ubyte * upper, ubyte * dest );
extern void gr_merge_textures_3( ubyte * lower, ubyte * upper, ubyte * dest );
extern void gr_update(void);
extern void gr_flip(void);
extern void gr_set_draw_buffer(int buf);

View file

@ -1,4 +1,3 @@
/* $Id: palette.h,v 1.1.1.1 2006/03/17 20:01:26 zicodxx Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
@ -11,6 +10,7 @@ CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*/
/*
*
* Protoypes for palette functions
@ -25,17 +25,13 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
extern void gr_palette_set_gamma( int gamma );
extern int gr_palette_get_gamma();
extern ubyte gr_palette_faded_out;
extern void gr_palette_clear();
extern int gr_palette_fade_out(ubyte *pal, int nsteps, int allow_keys );
extern int gr_palette_fade_in(ubyte *pal,int nsteps, int allow_keys );
extern void gr_palette_load( ubyte * pal );
extern void gr_make_cthru_table(ubyte * table, ubyte r, ubyte g, ubyte b );
extern void gr_make_blend_table(ubyte *blend_table, ubyte r, ubyte g, ubyte b);
extern int gr_find_closest_color_current( int r, int g, int b );
extern void gr_palette_read(ubyte * palette);
extern void init_computed_colors(void);
extern ubyte gr_palette_gamma;
extern ubyte gr_current_pal[256*3];

View file

@ -526,8 +526,6 @@ void draw_automap(int flip)
if (flip)
gr_flip();
else
gr_update();
}
#define LEAVE_TIME 0x4000
@ -579,9 +577,6 @@ void do_automap( int key_code ) {
gr_set_current_canvas(NULL);
gr_palette_clear();
automap_build_edge_list();
if ( ViewDist==0 )
@ -635,7 +630,7 @@ void do_automap( int key_code ) {
Controls = saved_control_info;
}
controls_read_all();
controls_read_all();
if ( Controls.automap_down_count ) {
if (leave_mode==0)
@ -734,7 +729,7 @@ void do_automap( int key_code ) {
MarkerMessage[HighlightMarker][0]=0;
HighlightMarker = -1;
}
set_screen_mode(SCREEN_GAME);
set_screen_mode(SCREEN_GAME);
}
break;

View file

@ -25,6 +25,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
extern void do_automap(int key_code);
extern void automap_clear_visited();
extern void draw_automap(int flip);
extern ubyte Automap_visited[MAX_SEGMENTS];
void DropBuddyMarker(object *objp);
extern int Automap_active;

View file

@ -1304,7 +1304,6 @@ void do_final_boss_frame(void)
if (Final_boss_countdown_time > 0)
return;
gr_palette_fade_out( gr_palette, 256, 0 );
start_endlevel_sequence(); //pretend we hit the exit trigger
}

View file

@ -91,9 +91,7 @@ void credits_show()
}
set_screen_mode(SCREEN_MENU);
gr_palette_fade_out( gr_palette,32,0);
gr_use_palette_table( "credits.256" );
gr_remap_color_fonts();
backdrop.bm_data=NULL;
pcx_error = pcx_read_bitmap(CREDITS_BACKGROUND_FILENAME,&backdrop, BM_LINEAR,backdrop_palette);
@ -108,8 +106,7 @@ void credits_show()
gr_set_current_canvas(NULL);
show_fullscr(&backdrop);
gr_palette_fade_in( gr_palette, 32, 0 );
gr_palette_load( gr_palette );
CreditsOffscreenBuf = gr_create_sub_canvas(grd_curcanv,0,0,SWIDTH,SHEIGHT);
if (!CreditsOffscreenBuf)
@ -186,8 +183,6 @@ get_line:;
y += ROW_SPACING;
}
gr_update();
timer_delay2(25);
//see if redbook song needs to be restarted

View file

@ -1372,9 +1372,6 @@ void editor(void)
} else {
ui_mouse_show();
}
gr_update();
}
// _MARK_("end of editor");//Nuked to compile -KRB

View file

@ -362,9 +362,6 @@ void start_endlevel_sequence()
}
}
//don't have movie or rendered sequence, fade out
gr_palette_fade_out(gr_palette, 32, 0);
PlayerFinishedLevel(0); //done with level
}
@ -538,8 +535,6 @@ void stop_endlevel_sequence()
{
Interpolation_method = 0;
gr_palette_fade_out(gr_palette, 32, 0);
select_cockpit(cockpit_mode_save);
Endlevel_sequence = EL_OFF;

View file

@ -64,10 +64,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "editor/editor.h"
#endif
#ifdef OGL
#include "ogl_init.h"
#endif
extern void multi_send_stolen_items();
void say_escort_goal(int goal_num);
void show_escort_menu(char *msg);
@ -1866,10 +1862,8 @@ void do_escort_menu(void)
show_escort_menu(msg); //TXT_PAUSE);
while (paused) {
#ifdef OGL
gr_flip();
show_escort_menu(msg); //TXT_PAUSE);
#endif
key = key_inkey();
switch (key) {
@ -1960,7 +1954,6 @@ void show_escort_menu(char *msg)
nm_draw_background(x-BORDERX,y-BORDERY,x+w+BORDERX,y+h+BORDERY);
gr_ustring( x, y, msg );
gr_update();
reset_cockpit();
}

View file

@ -263,7 +263,6 @@ void reset_palette_add()
PaletteRedAdd = 0;
PaletteGreenAdd = 0;
PaletteBlueAdd = 0;
//gr_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
}
@ -1008,8 +1007,6 @@ void PALETTE_FLASH_ADD(int _dr,int _dg,int _db)
fix Time_flash_last_played;
void game_palette_step_up( int r, int g, int b );
// ------------------------------------------------------------------------------------
// Diminish palette effects towards normal.
void diminish_palette_towards_normal(void)
@ -1049,7 +1046,7 @@ void diminish_palette_towards_normal(void)
if ( (Newdemo_state==ND_STATE_RECORDING) && (PaletteRedAdd || PaletteGreenAdd || PaletteBlueAdd) )
newdemo_record_palette_effect(PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd);
game_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
gr_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
return;
}
@ -1068,7 +1065,7 @@ void diminish_palette_towards_normal(void)
if ( (Newdemo_state==ND_STATE_RECORDING) && (PaletteRedAdd || PaletteGreenAdd || PaletteBlueAdd) )
newdemo_record_palette_effect(PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd);
game_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
gr_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
//mprintf(0, "%2i %2i %2i\n", PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd);
}
@ -1080,21 +1077,10 @@ void palette_save(void)
Redsave = PaletteRedAdd; Bluesave = PaletteBlueAdd; Greensave = PaletteGreenAdd;
}
extern void gr_palette_step_up_vr( int r, int g, int b, int white, int black );
void game_palette_step_up( int r, int g, int b )
{
if ( VR_use_reg_code ) {
// gr_palette_step_up_vr( r, g, b, VR_WHITE_INDEX, VR_BLACK_INDEX );
} else {
gr_palette_step_up( r, g, b );
}
}
void palette_restore(void)
{
PaletteRedAdd = Redsave; PaletteBlueAdd = Bluesave; PaletteGreenAdd = Greensave;
game_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
gr_palette_step_up( PaletteRedAdd, PaletteGreenAdd, PaletteBlueAdd );
// Forces flash effect to fixup palette next frame.
Time_flash_last_played = 0;
@ -1530,17 +1516,6 @@ void game()
if ( Newdemo_state == ND_STATE_PLAYBACK )
newdemo_stop_playback();
if (Function_mode != FMODE_EDITOR)
gr_palette_fade_out(gr_palette,32,0); // Fade out before going to menu
//@@ if ( (!demo_playing) && (!multi_game) && (Function_mode != FMODE_EDITOR)) {
//@@ scores_maybe_add_player(Game_aborted);
//@@ }
#ifdef __MSDOS__
//_MARK_("end of game");
#endif
clear_warn_func(game_show_warning); //don't use this func anymore
game_disable_cheats();

View file

@ -453,7 +453,6 @@ int do_game_pause()
sprintf(msg,"PAUSE\n\nSkill level: %s\nHostages on board: %d\n",(*(&TXT_DIFFICULTY_1 + (Difficulty_level))),Players[Player_num].hostages_on_board);
Game_paused=1;
show_boxed_message(msg, 1);
gr_update();
while (Game_paused)
{

View file

@ -24,7 +24,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "fix.h"
#include "vecmat.h"
@ -32,7 +31,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "3d.h"
#include "palette.h"
#include "rle.h"
#include "inferno.h"
#include "gamepal.h"
#include "mission.h"
@ -48,34 +46,6 @@ extern int Color_0_31_0, HUD_color;
char last_palette_loaded[FILENAME_LEN]="";
char last_palette_loaded_pig[FILENAME_LEN]="";
ubyte last_palette_for_color_fonts[768];
void remap_fonts_and_menus(int do_fadetable_hack)
{
nm_remap_background();
gr_remap_color_fonts();
if (do_fadetable_hack) {
int i;
float g = 1.0;
double intensity;
ubyte gamma[64];
intensity = (double)(14)/(double)(32);
for (i=0;i<64;i++)
gamma[i] = (int)((pow(intensity, 1.0/g)*i) + 0.5);
for (i=0;i<256;i++) {
int c;
c = gr_find_closest_color(gamma[gr_palette[i*3]],gamma[gr_palette[i*3+1]],gamma[gr_palette[i*3+2]]);
gr_fade_table[14*256+i] = c;
}
}
memcpy(last_palette_for_color_fonts,gr_palette,sizeof(last_palette_for_color_fonts));
}
extern grs_bitmap nm_background;
//load a palette by name. returns 1 if new palette loaded, else 0
//if used_for_level is set, load pig, etc.
//if no_change_screen is set, the current screen does not get remapped,
@ -117,10 +87,10 @@ int load_palette(char *name,int used_for_level,int no_change_screen)
if (Function_mode == FMODE_GAME && !no_change_screen)
gr_remap_bitmap_good( &grd_curscreen->sc_canvas.cv_bitmap, old_pal, -1, -1 );
if (!gr_palette_faded_out && !no_change_screen)
if (!no_change_screen)
gr_palette_load(gr_palette);
remap_fonts_and_menus(0);
newmenu_close(); // palette changed! free menu!
Color_0_31_0 = -1; //for gauges
HUD_color = -1;

View file

@ -34,9 +34,4 @@ extern char Current_level_palette[FILENAME_LEN];
// remapped, and the hardware palette does not get changed
int load_palette(char *name, int used_for_level, int no_change_screen);
extern ubyte last_palette_for_color_fonts[768];
// remap color font & menu background into the current palette
void remap_fonts_and_menus(int do_fadetable_hack);
#endif /* _GAMEPAL_H */

View file

@ -794,8 +794,6 @@ void game_render_frame_mono(int flip)
if (flip)
gr_flip();
else
gr_update();
}
void toggle_cockpit()
@ -898,11 +896,6 @@ void game_render_frame()
if (VR_render_mode == VR_NONE )
game_render_frame_mono(GameArg.DbgUseDoubleBuffer);
// Make sure palette is faded in
stop_time();
gr_palette_fade_in( gr_palette, 32, 0 );
start_time();
FrameCount++;
}
@ -948,8 +941,5 @@ void show_boxed_message(char *msg, int RenderFlag)
nm_draw_background(x-BORDERX,y-BORDERY,x+w+BORDERX,y+h+BORDERY);
gr_printf( 0x8000, y, msg );
gr_update();
#ifdef OGL
gr_flip();
#endif
}

View file

@ -122,13 +122,11 @@ char gameseq_rcsid[] = "$Id: gameseq.c,v 1.1.1.1 2006/03/17 19:57:54 zicodxx Exp
void StartNewLevelSecret(int level_num, int page_in_textures);
void InitPlayerPosition(int random_flag);
void load_stars();
void returning_to_level_message(void);
void advancing_to_level_message(void);
void DoEndGame(void);
void AdvanceLevel(int secret_flag);
void filter_objects_from_level();
void nm_draw_background1(char * filename);
//Current_level_num starts at 1 for the first level
//-1,-2,-3 are secret levels
@ -710,9 +708,6 @@ int RegisterPlayer()
char filename[14];
int allow_abort_flag = 1;
set_screen_mode(SCREEN_MENU);
nm_draw_background1(Menu_pcx_name);
if ( Players[Player_num].callsign[0] == 0 ) {
//---------------------------------------------------------------------
// Set default config options in case there is no config file
@ -785,18 +780,6 @@ void LoadLevel(int level_num,int page_in_textures)
Last_msg_ycrd = -1; //so we don't restore backgound under msg
// WIN(LoadCursorWin(MOUSE_WAIT_CURSOR));
// WIN(ShowCursorW());
#if 1 //def OGL
gr_palette_load(gr_palette);
show_boxed_message(TXT_LOADING, 0);
gr_update();
#else
show_boxed_message(TXT_LOADING, 0);
gr_palette_load(gr_palette);
#endif
load_ret = load_level(level_name); //actually load the data from disk!
if (load_ret)
@ -804,10 +787,11 @@ void LoadLevel(int level_num,int page_in_textures)
Current_level_num=level_num;
// load_palette_pig(Current_level_palette); //load just the pig
load_palette(Current_level_palette,1,1); //don't change screen
show_boxed_message(TXT_LOADING, 0);
timer_delay2(1);
load_endlevel_data(level_num);
if (EMULATING_D1)
@ -923,8 +907,6 @@ void StartNewGame(int start_level)
extern int network_endlevel_poll2( int nitems, newmenu_item * menus, int * key, int citem ); // network.c
#endif
#define STARS_BACKGROUND ((HIRESMODE && cfexist("starsb.pcx"))?"starsb.pcx":cfexist("stars.pcx")?"stars.pcx":"starsb.pcx")
// -----------------------------------------------------------------------------
// Does the bonus scoring.
// Call with dead_flag = 1 if player died, but deserves some portion of bonus (only skill points), anyway.
@ -1020,8 +1002,6 @@ void DoEndLevelScoreGlitz(int network)
Assert(c <= N_GLITZITEMS);
gr_palette_fade_out(gr_palette, 32, 0);
mprintf((0,"doing menu\n"));
#ifdef NETWORK
@ -1035,12 +1015,6 @@ void DoEndLevelScoreGlitz(int network)
mprintf((0,"done DoEndLevelScoreGlitz\n"));
}
//give the player the opportunity to save his game
void DoEndlevelMenu()
{
//No between level saves......!!! state_save_all(1);
}
// -----------------------------------------------------------------------------------------------------
//called when the player is starting a level (new game or new ship)
void StartSecretLevel()
@ -1092,7 +1066,6 @@ void do_secret_message(char *msg)
{
int old_fmode;
load_stars();
old_fmode = Function_mode;
Function_mode = FMODE_MENU;
nm_messagebox(NULL, 1, TXT_OK, msg);
@ -1124,7 +1097,6 @@ void StartNewLevelSecret(int level_num, int page_in_textures)
newdemo_record_start_frame(FrameCount, FrameTime );
} else if (Newdemo_state != ND_STATE_PLAYBACK) {
gr_palette_fade_out(gr_palette, 32, 0);
set_screen_mode(SCREEN_MENU);
if (First_secret_visit) {
@ -1309,7 +1281,6 @@ void EnterSecretLevel(void)
// briefings
if (EMULATING_D1)
{
gr_palette_fade_out(gr_palette, 32, 0);
set_screen_mode(SCREEN_MENU);
do_secret_message("Alternate Exit Found!\n\nProceeding to Secret Level!");
StartNewLevel(Next_level_num, 0);
@ -1414,7 +1385,6 @@ void DoEndGame(void)
if (PLAYING_BUILTIN_MISSION && !((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))) {
gr_set_current_canvas( NULL );
gr_clear_canvas(BM_XRGB(0,0,0));
gr_palette_clear();
load_palette(D2_DEFAULT_PALETTE,0,1);
scores_maybe_add_player(0);
}
@ -1486,61 +1456,12 @@ void AdvanceLevel(int secret_flag)
Next_level_num = Current_level_num+1; //assume go to next normal level
}
// END NMN
if (!(Game_mode & GM_MULTI))
DoEndlevelMenu(); // Let use save their game
StartNewLevel(Next_level_num, 0);
}
}
#ifdef MACINTOSH // horrible hack of a routine to load just the palette from the stars.pcx file
extern char last_palette_loaded[];
void load_stars_palette()
{
int pcx_error;
ubyte pal[256*3];
pcx_error = pcx_read_bitmap_palette(STARS_BACKGROUND,pal);
Assert(pcx_error == PCX_ERROR_NONE);
//@@gr_remap_bitmap_good( bmp, pal, -1, -1 );
{ //remap stuff. this code is kindof a hack
//now, before we bring up the menu, we need to
//do some stuff to make sure the palette is ok. First, we need to
//get our current palette into the 2d's array, so the remapping will
//work. Second, we need to remap the fonts. Third, we need to fill
//in part of the fade tables so the darkening of the menu edges works
gr_copy_palette(gr_palette, pal, sizeof(gr_palette));
remap_fonts_and_menus(1);
}
strcpy(last_palette_loaded,""); //force palette load next time
}
#endif
void load_stars()
{
//@@ int pcx_error;
//@@ ubyte pal[256*3];
//@@
//@@ pcx_error = pcx_read_bitmap("STARS.PCX",&grd_curcanv->cv_bitmap,grd_curcanv->cv_bitmap.bm_type,pal);
//@@ Assert(pcx_error == PCX_ERROR_NONE);
//@@
//@@ gr_remap_bitmap_good( &grd_curcanv->cv_bitmap, pal, -1, -1 );
nm_draw_background1(STARS_BACKGROUND);
}
void
died_in_mine_message(void)
{
@ -1550,14 +1471,10 @@ died_in_mine_message(void)
if (Game_mode & GM_MULTI)
return;
gr_palette_fade_out(gr_palette, 32, 0);
set_screen_mode(SCREEN_MENU); //go into menu mode
gr_set_current_canvas(NULL);
load_stars();
old_fmode = Function_mode;
Function_mode = FMODE_MENU;
nm_messagebox(NULL, 1, TXT_OK, TXT_DIED_IN_MINE);
@ -1574,14 +1491,10 @@ void returning_to_level_message(void)
if (Game_mode & GM_MULTI)
return;
gr_palette_fade_out(gr_palette, 32, 0);
set_screen_mode(SCREEN_MENU); //go into menu mode
gr_set_current_canvas(NULL);
load_stars();
old_fmode = Function_mode;
Function_mode = FMODE_MENU;
sprintf(msg, "Returning to level %i", Entered_from_level);
@ -1602,14 +1515,10 @@ void advancing_to_level_message(void)
if (Game_mode & GM_MULTI)
return;
gr_palette_fade_out(gr_palette, 32, 0);
set_screen_mode(SCREEN_MENU); //go into menu mode
gr_set_current_canvas(NULL);
load_stars();
old_fmode = Function_mode;
Function_mode = FMODE_MENU;
sprintf(msg, "Base level destroyed.\nAdvancing to level %i", Entered_from_level+1);

View file

@ -995,7 +995,7 @@ extern grs_bitmap Orb_icons[2];
void hud_show_orbs (void)
{
if (Game_mode & GM_HOARD) {
int x,y;
int x=0,y=0;
grs_bitmap *bm;
if (Cockpit_mode == CM_FULL_COCKPIT) {
@ -1025,9 +1025,7 @@ void hud_show_orbs (void)
void hud_show_flag(void)
{
if ((Game_mode & GM_CAPTURE) && (Players[Player_num].flags & PLAYER_FLAGS_FLAG)) {
int x,y,icon;
x=y=0;
int x=0,y=0,icon;
if (Cockpit_mode == CM_FULL_COCKPIT) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1);
@ -2366,8 +2364,8 @@ void show_reticle()
ogl_draw_reticle(cross_bm_num,primary_bm_num,secondary_bm_num);
}
else
{
#endif
{
use_hires_reticle = (HIRESMODE != 0);
ofs = (use_hires_reticle?0:2);
gauge_index = RETICLE_CROSS + cross_bm_num;

View file

@ -486,7 +486,6 @@ int main(int argc, char *argv[])
}
#endif
gr_palette_clear(); //I'm not sure why we need this, but we do
DoMenu();
#ifdef EDITOR
if ( Function_mode == FMODE_EDITOR ) {

View file

@ -709,8 +709,6 @@ void kconfig_sub(kc_item * items,int nitems, char * title)
kc_drawitem( &items[citem], 1 );
#endif
gr_update();
//see if redbook song needs to be restarted
songs_check_redbook_repeat();
@ -1047,7 +1045,6 @@ void kc_drawquestion( kc_item *item )
x = FSPACX(item->w1+item->x)+((FSPACX(item->w2)-w)/2);
gr_string( x, FSPACY(item->y), "?" );
gr_update();
}
void kc_change_key( kc_item * item )
@ -1534,7 +1531,7 @@ void controls_read_all()
#ifdef D2X_KEYS
//--------- Read primary weapon select -------------
if (!Player_is_dead)
if (!Player_is_dead && !Automap_flag)
{
{
int d2x_joystick_state[10];
@ -1547,31 +1544,31 @@ void controls_read_all()
if(key_down_count(kc_d2x[0].value) ||
(joy_get_button_state(kc_d2x[1].value) &&
(d2x_joystick_state[0]!=d2x_joystick_ostate[0]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[0].value >= 2 && kc_d2x[0].value <= 11)) && !Automap_flag) // this (and the following statements) prevents to select weapon if guide-bot shortcut has done and weapon key is mapped from 0 to 9 or Automap is active
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[0].value >= 2 && kc_d2x[0].value <= 11))) // this (and the following statements) prevents to select weapon if guide-bot shortcut has done and weapon key is mapped from 0 to 9 or Automap is active
do_weapon_select(0,0);
//----------------Weapon 2----------------
if(key_down_count(kc_d2x[2].value) ||
(joy_get_button_state(kc_d2x[3].value) &&
(d2x_joystick_state[1]!=d2x_joystick_ostate[1]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[2].value >= 2 && kc_d2x[2].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[2].value >= 2 && kc_d2x[2].value <= 11)))
do_weapon_select(1,0);
//----------------Weapon 3----------------
if(key_down_count(kc_d2x[4].value) ||
(joy_get_button_state(kc_d2x[5].value) &&
(d2x_joystick_state[2]!=d2x_joystick_ostate[2]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[4].value >= 2 && kc_d2x[4].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[4].value >= 2 && kc_d2x[4].value <= 11)))
do_weapon_select(2,0);
//----------------Weapon 4----------------
if(key_down_count(kc_d2x[6].value) ||
(joy_get_button_state(kc_d2x[7].value) &&
(d2x_joystick_state[3]!=d2x_joystick_ostate[3]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[6].value >= 2 && kc_d2x[6].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[6].value >= 2 && kc_d2x[6].value <= 11)))
do_weapon_select(3,0);
//----------------Weapon 5----------------
if(key_down_count(kc_d2x[8].value) ||
(joy_get_button_state(kc_d2x[9].value) &&
(d2x_joystick_state[4]!=d2x_joystick_ostate[4]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[8].value >= 2 && kc_d2x[8].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[8].value >= 2 && kc_d2x[8].value <= 11)))
do_weapon_select(4,0);
//--------- Read secondary weapon select ----------
@ -1579,31 +1576,31 @@ void controls_read_all()
if(key_down_count(kc_d2x[10].value) ||
(joy_get_button_state(kc_d2x[11].value) &&
(d2x_joystick_state[5]!=d2x_joystick_ostate[5]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[10].value >= 2 && kc_d2x[10].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[10].value >= 2 && kc_d2x[10].value <= 11)))
do_weapon_select(0,1);
//----------------Weapon 7----------------
if(key_down_count(kc_d2x[12].value) ||
(joy_get_button_state(kc_d2x[13].value) &&
(d2x_joystick_state[6]!=d2x_joystick_ostate[6]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[12].value >= 2 && kc_d2x[12].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[12].value >= 2 && kc_d2x[12].value <= 11)))
do_weapon_select(1,1);
//----------------Weapon 8----------------
if(key_down_count(kc_d2x[14].value) ||
(joy_get_button_state(kc_d2x[15].value) &&
(d2x_joystick_state[7]!=d2x_joystick_ostate[7]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[14].value >= 2 && kc_d2x[14].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[14].value >= 2 && kc_d2x[14].value <= 11)))
do_weapon_select(2,1);
//----------------Weapon 9----------------
if(key_down_count(kc_d2x[16].value) ||
(joy_get_button_state(kc_d2x[17].value) &&
(d2x_joystick_state[8]!=d2x_joystick_ostate[8]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[16].value >= 2 && kc_d2x[16].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[16].value >= 2 && kc_d2x[16].value <= 11)))
do_weapon_select(3,1);
//----------------Weapon 0----------------
if(key_down_count(kc_d2x[18].value) ||
(joy_get_button_state(kc_d2x[19].value) &&
(d2x_joystick_state[9]!=d2x_joystick_ostate[9]) ) )
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[18].value >= 2 && kc_d2x[18].value <= 11)) && !Automap_flag)
if (!((keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) && (kc_d2x[18].value >= 2 && kc_d2x[18].value <= 11)))
do_weapon_select(4,1);
memcpy(d2x_joystick_ostate,d2x_joystick_state,10*sizeof(int));
}

View file

@ -353,10 +353,11 @@ void load_stars(void);
void kmatrix_redraw()
{
int i, color;
int i, pcx_error, color;
int sorted[MAX_NUM_NET_PLAYERS];
load_stars();
pcx_error = pcx_read_fullscr(STARS_BACKGROUND, NULL);
Assert(pcx_error == PCX_ERROR_NONE);
if (Game_mode & GM_MULTI_COOP)
{
@ -399,9 +400,7 @@ void kmatrix_redraw()
kmatrix_draw_deaths(sorted);
gr_update();
gr_palette_load(gr_palette);
gr_update();
}
void kmatrix_redraw_coop()
@ -436,9 +435,7 @@ void kmatrix_redraw_coop()
kmatrix_draw_deaths(sorted);
gr_update();
gr_palette_load(gr_palette);
gr_update();
}
#define MAX_VIEW_TIME F1_0*15
@ -446,10 +443,6 @@ void kmatrix_redraw_coop()
fix StartAbortMenuTime;
#ifdef MACINTOSH
extern void load_stars_palette();
#endif
extern void network_endlevel_poll3( int nitems, struct newmenu_item * menus, int * key, int citem );
void kmatrix_view(int network)
@ -468,14 +461,6 @@ void kmatrix_view(int network)
set_screen_mode( SCREEN_MENU );
#ifdef MACINTOSH
if (virtual_memory_on) {
load_stars_palette(); // horrible hack to prevent too much paging when doing endlevel syncing
gr_clear_canvas( BM_XRGB(0, 0, 0) );
} else
#endif // note link to above if/else pair
load_stars();
WaitingForOthers=0;
game_flush_inputs();
@ -666,9 +651,7 @@ void kmatrix_view(int network)
kmatrix_kills_changed=0;
}
}
#ifdef OGL
gr_flip();
#endif
}
Players[Player_num].connected=7;
@ -676,8 +659,6 @@ void kmatrix_view(int network)
if (network)
network_send_endlevel_packet(); // make sure
gr_palette_fade_out( gr_palette, 32, 0 );
game_flush_inputs();
Kmatrix_nomovie_message=0;

View file

@ -199,8 +199,6 @@ void create_main_menu(newmenu_item *m, int *menu_choice, int *callers_num_option
{
int num_options;
gr_update();
#ifndef DEMO_ONLY
num_options = 0;
@ -264,11 +262,6 @@ int DoMenu()
if ( main_menu_choice > -1 ) do_option(menu_choice[main_menu_choice]);
} while( Function_mode==FMODE_MENU );
// if (main_menu_choice != -2)
// do_auto_demo = 0; // No more auto demos
if ( Function_mode==FMODE_GAME )
gr_palette_fade_out( gr_palette, 32, 0 );
return main_menu_choice;
}
@ -300,7 +293,6 @@ void do_option ( int select)
break;
#endif
case MENU_VIEW_SCORES:
gr_palette_fade_out( gr_palette,32,0 );
scores_view(-1);
break;
#if 1 //def SHAREWARE
@ -312,7 +304,6 @@ void do_option ( int select)
#ifdef EDITOR
if (! SafetyCheck()) break;
#endif
gr_palette_fade_out( gr_palette,32,0);
Function_mode = FMODE_EXIT;
break;
case MENU_NEW_PLAYER:
@ -349,7 +340,6 @@ void do_option ( int select)
new_level_num = atoi(m.text);
if (new_level_num!=0 && new_level_num>=Last_secret_level && new_level_num<=Last_level) {
gr_palette_fade_out( gr_palette, 32, 0 );
StartNewGame(new_level_num);
}
}
@ -647,7 +637,6 @@ try_again:
if (!do_difficulty_menu())
return;
gr_palette_fade_out( gr_palette, 32, 0 );
StartNewGame(new_level_num);
}

View file

@ -33,6 +33,7 @@ extern void d2x_options_menu();
// name of background bitmap
#define Menu_pcx_name (cfexist(MENU_PCX_FULL)?MENU_PCX_FULL:(cfexist(MENU_PCX_OEM)?MENU_PCX_OEM:cfexist(MENU_PCX_SHAREWARE)?MENU_PCX_SHAREWARE:MENU_PCX_MAC_SHARE))
#define STARS_BACKGROUND ((HIRESMODE && cfexist("starsb.pcx"))?"starsb.pcx":cfexist("stars.pcx")?"stars.pcx":"starsb.pcx")
extern void set_detail_level_parameters(int detail_level);

View file

@ -185,6 +185,7 @@ void MovieShowFrame(ubyte *buf, uint bufw, uint bufh, uint sx, uint sy, uint w,
source_bm.bm_type = BM_LINEAR;
source_bm.bm_flags = 0;
source_bm.bm_data = buf;
#ifdef OGL
glDisable (GL_BLEND);
@ -196,8 +197,6 @@ void MovieShowFrame(ubyte *buf, uint bufw, uint bufh, uint sx, uint sy, uint w,
&source_bm,&grd_curcanv->cv_bitmap,0);
glEnable (GL_BLEND);
gr_update();
gr_flip();
#else
gr_bm_ubitblt(bufw,bufh,dstx*((double)grd_curscreen->sc_w/(GameArg.GfxMovieHires?640:320)),dsty*((double)grd_curscreen->sc_h/(GameArg.GfxMovieHires?480:200)),sx,sy,&source_bm,&grd_curcanv->cv_bitmap);
@ -243,10 +242,7 @@ void show_pause_message(char *msg)
gr_ustring( 0x8000, y, msg );
gr_update();
#ifdef OGL
gr_flip();
#endif
}
void clear_pause_message()
@ -306,9 +302,7 @@ int RunMovie(char *filename, int hires_flag, int must_have,int dx,int dy)
draw_subtitles(frame_num);
gr_palette_load(gr_palette); // moved this here because of flashing
gr_update();
gr_palette_load(gr_palette);
key = key_inkey();

View file

@ -178,6 +178,7 @@ void ClipRank(ubyte *rank);
void DoRefuseStuff(sequence_packet *their);
int GetNewPlayerNumber(sequence_packet *their);
void SetAllAllowablesTo(int on);
int show_game_stats(int choice);
int num_active_games = 0;
int PacketsPerSec=10;
@ -3575,6 +3576,84 @@ void network_count_powerups_in_mine(void)
}
int network_do_join_game(int choice)
{
if (Active_games[choice].protocol_version != MULTI_PROTO_VERSION)
{
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_VERSION_MISMATCH);
return 0;
}
if (Active_games[choice].game_status == NETSTAT_ENDLEVEL)
{
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_NET_GAME_BETWEEN2);
return 0;
}
// Check for valid mission name
if (!load_mission_by_name(Active_games[choice].mission_name))
{
nm_messagebox(NULL, 1, TXT_OK, TXT_MISSION_NOT_FOUND);
return 0;
}
if (is_D2_OEM)
{
My_Seq.player.version_minor|=NETWORK_OEM;
if (Active_games[choice].levelnum>8)
{
nm_messagebox(NULL, 1, TXT_OK, "This OEM version only supports\nthe first 8 levels!");
return 0;
}
}
if (is_MAC_SHARE)
{
if (Active_games[choice].levelnum > 4)
{
nm_messagebox(NULL, 1, TXT_OK, "This SHAREWARE version only supports\nthe first 4 levels!");
return 0;
}
}
if (!network_wait_for_all_info (0))
{
nm_messagebox (TXT_SORRY,1,TXT_OK,"There was a join error!");
Network_status = NETSTAT_BROWSING; // We are looking at a game menu
Ext_server=NULL;
Ext_node=NULL;
return 0;
}
Network_status = NETSTAT_BROWSING; // We are looking at a game menu
Ext_server=NULL;
Ext_node=NULL;
if (!can_join_netgame(&Active_games[choice], &ActiveNetPlayers[choice]))
{
if (Active_games[0].numplayers == Active_games[0].max_numplayers)
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_GAME_FULL);
else
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_IN_PROGRESS);
return 0;
}
// Choice is valid, prepare to join in
memcpy (&Netgame, &Active_games[choice], sizeof(netgame_info));
memcpy (&NetPlayers,TempPlayersInfo,sizeof(AllNetPlayers_info));
Difficulty_level = Netgame.difficulty;
MaxNumNetPlayers = Netgame.max_numplayers;
change_playernum_to(1);
network_set_game_mode(Netgame.gamemode);
StartNewLevel(Netgame.levelnum, 0);
return 1; // look ma, we're in a game!!!
}
void nm_draw_background1(char * filename);
void network_join_game()
@ -5452,83 +5531,6 @@ int HoardEquipped()
return (checked);
}
int network_do_join_game(int choice)
{
if (Active_games[choice].protocol_version != MULTI_PROTO_VERSION)
{
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_VERSION_MISMATCH);
return 0;
}
if (Active_games[choice].game_status == NETSTAT_ENDLEVEL)
{
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_NET_GAME_BETWEEN2);
return 0;
}
// Check for valid mission name
if (!load_mission_by_name(Active_games[choice].mission_name))
{
nm_messagebox(NULL, 1, TXT_OK, TXT_MISSION_NOT_FOUND);
return 0;
}
if (is_D2_OEM)
{
My_Seq.player.version_minor|=NETWORK_OEM;
if (Active_games[choice].levelnum>8)
{
nm_messagebox(NULL, 1, TXT_OK, "This OEM version only supports\nthe first 8 levels!");
return 0;
}
}
if (is_MAC_SHARE)
{
if (Active_games[choice].levelnum > 4)
{
nm_messagebox(NULL, 1, TXT_OK, "This SHAREWARE version only supports\nthe first 4 levels!");
return 0;
}
}
if (!network_wait_for_all_info (0))
{
nm_messagebox (TXT_SORRY,1,TXT_OK,"There was a join error!");
Network_status = NETSTAT_BROWSING; // We are looking at a game menu
Ext_server=NULL;
Ext_node=NULL;
return 0;
}
Network_status = NETSTAT_BROWSING; // We are looking at a game menu
Ext_server=NULL;
Ext_node=NULL;
if (!can_join_netgame(&Active_games[choice], &ActiveNetPlayers[choice]))
{
if (Active_games[0].numplayers == Active_games[0].max_numplayers)
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_GAME_FULL);
else
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_IN_PROGRESS);
return 0;
}
// Choice is valid, prepare to join in
memcpy (&Netgame, &Active_games[choice], sizeof(netgame_info));
memcpy (&NetPlayers,TempPlayersInfo,sizeof(AllNetPlayers_info));
Difficulty_level = Netgame.difficulty;
MaxNumNetPlayers = Netgame.max_numplayers;
change_playernum_to(1);
network_set_game_mode(Netgame.gamemode);
StartNewLevel(Netgame.levelnum, 0);
return 1; // look ma, we're in a game!!!
}
// Send request for game information. Resend to keep connection alive.
// Function arguments not used, but needed to call while nm_messagebox1
void network_info_req( int nitems, newmenu_item * menus, int * key, int citem )
@ -5683,9 +5685,6 @@ void show_game_rules(int choice)
}
}
// Restore background and exit
gr_palette_fade_out( gr_palette, 32, 0 );
gr_set_current_canvas(NULL);
game_flush_inputs();

View file

@ -37,6 +37,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include <physfs/physfs.h>
#endif
#include "automap.h"
#include "error.h"
#include "pstypes.h"
#include "gr.h"
@ -125,21 +126,6 @@ void nm_draw_copyright()
gr_printf(0x8000,SHEIGHT-(LINE_SPACING*2),DESCENT_VERSION);
}
ubyte background_palette[768];
//should be called whenever the palette changes
void nm_remap_background()
{
if (!Newmenu_first_time) {
if (!nm_background.bm_data)
nm_background.bm_data = d_malloc(nm_background.bm_w * nm_background.bm_h);
memcpy(nm_background.bm_data,nm_background_save.bm_data,nm_background.bm_w * nm_background.bm_h);
gr_remap_bitmap_good( &nm_background, background_palette, -1, -1 );
}
}
// Draws the background of menus (i.e. Descent Logo screen)
void nm_draw_background1(char * filename)
{
@ -149,7 +135,10 @@ void nm_draw_background1(char * filename)
filename = Menu_pcx_name;
else if (filename == NULL && Function_mode == FMODE_GAME)
{
game_render_frame_mono(0);
if (Automap_active)
draw_automap(0);
else
game_render_frame_mono(0);
gr_set_current_canvas(NULL);
}
@ -157,25 +146,17 @@ void nm_draw_background1(char * filename)
{
if (nm_background1.bm_data == NULL)
{
ubyte newpal[768];
atexit( newmenu_close );
gr_init_bitmap_data (&nm_background1);
pcx_error = pcx_read_bitmap( filename, &nm_background1, BM_LINEAR, newpal );
pcx_error = pcx_read_bitmap( filename, &nm_background1, BM_LINEAR, gr_palette );
Assert(pcx_error == PCX_ERROR_NONE);
gr_copy_palette(gr_palette, newpal, sizeof(gr_palette));
remap_fonts_and_menus(1);
if (!strcmp(filename,Menu_pcx_name) && Function_mode != FMODE_GAME)
draw_copyright=1;
else
draw_copyright=0;
}
gr_palette_load( gr_palette );
#ifndef OGL
show_fullscr(&nm_background1);
#else
gr_palette_load( gr_palette );
ogl_ubitmapm_cs(0,0,-1,-1,&nm_background1,-1,F1_0);
#endif
if (draw_copyright)
nm_draw_copyright();
@ -195,22 +176,16 @@ void nm_draw_background(int x1, int y1, int x2, int y2 )
static float BGScaleX=1,BGScaleY=1;
grs_canvas *tmp,*old;
grs_bitmap bg;
static ubyte BGPal[768];
#ifndef OGL
if (nm_background.bm_data)
gr_free_bitmap_data (&nm_background);
#else
if (nm_background.bm_data == NULL)
#endif
{
int pcx_error;
ubyte background_palette[768];
atexit( newmenu_close );
gr_init_bitmap_data (&nm_background);
pcx_error = pcx_read_bitmap(MENU_BACKGROUND_BITMAP,&nm_background,BM_LINEAR,background_palette);
Assert(pcx_error == PCX_ERROR_NONE);
gr_remap_bitmap_good( &nm_background, background_palette, -1, -1 );
// gr_remap_bitmap_good( &nm_background, gr_palette, -1, -1 );
BGScaleX=((float)SWIDTH/nm_background.bm_w);
BGScaleY=((float)SHEIGHT/nm_background.bm_h);
}
@ -617,7 +592,6 @@ int newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item,
int sound_stopped=0,time_stopped=0;
int TopChoice,IsScrollBox=0; // Is this a scrolling box? Set to false at init
char *Temp,TempVal;
int dont_restore=0;
int MaxOnMenu=MAXDISPLAYABLEITEMS;
grs_canvas *save_canvas;
#ifdef NEWMENU_MOUSE
@ -944,7 +918,6 @@ int newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item,
#endif
if ( k<-1 ) {
dont_restore = (k == -3); //-3 means don't restore
choice = k;
k = -1;
done = 1;
@ -1468,10 +1441,6 @@ int newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item,
nm_rstring( &bg, FSPACX(11), sx, sy, " " );
}
if ( !dont_restore && gr_palette_faded_out ) {
gr_palette_fade_in( gr_palette, 32, 0 );
}
}
newmenu_hide_cursor();
@ -1746,6 +1715,8 @@ ReadFileNames:
}
}
nm_draw_background1(NULL);
#ifdef NEWMENU_MOUSE
mouse_state = omouse_state = 0;
mouse2_state = omouse2_state = 0;

View file

@ -140,7 +140,7 @@ int nm_messagebox_fixedfont(char *title, int nchoices, ...);
//end this section addition
//should be called whenever the palette changes
extern void nm_remap_background(void);
extern void newmenu_close();
# define NEWMENU_MOUSE

View file

@ -347,20 +347,10 @@ void paging_touch_walls()
void paging_touch_all()
{
int black_screen;
int s;
stop_time();
black_screen = gr_palette_faded_out;
if ( gr_palette_faded_out ) {
gr_clear_canvas( BM_XRGB(0,0,0) );
gr_palette_load( gr_palette );
}
//@@ show_boxed_message(TXT_LOADING);
mprintf(( 0, "Loading all textures in mine..." ));
for (s=0; s<=Highest_segment_index; s++) {
paging_touch_segment( &Segments[s] );
@ -490,10 +480,6 @@ void paging_touch_all()
//@@ clear_boxed_message();
if ( black_screen ) {
gr_palette_clear();
gr_clear_canvas( BM_XRGB(0,0,0) );
}
start_time();
reset_cockpit(); //force cockpit redraw next time

View file

@ -430,7 +430,6 @@ ReshowScores:
// Reset scores...
if ( nm_messagebox( NULL, 2, TXT_NO, TXT_YES, TXT_RESET_HIGH_SCORES )==1 ) {
PHYSFS_delete(get_scores_filename());
gr_palette_fade_out( gr_palette, 32, 0 );
goto ReshowScores;
}
}

View file

@ -516,7 +516,6 @@ int check_trigger_sub(int trigger_num, int pnum,int shot)
// -- BOGUS -- IMPOSSIBLE -- if (Game_mode & GM_NETWORK)
// -- BOGUS -- IMPOSSIBLE -- network_do_frame(1, 1);
gr_palette_fade_out(gr_palette, 32, 0);
EnterSecretLevel();
Control_center_destroyed = 0;
return 1;

View file

@ -192,7 +192,6 @@ int show_title_screen( char * filename, int allow_keys, int from_hog_only )
while (1) {
gr_flip();
show_fullscr(&title_bm);
gr_update();
if (( local_key_inkey() && allow_keys ) || ( timer_get_fixed_seconds() > timer ))
{
@ -426,19 +425,19 @@ void show_animated_bitmap(void)
grs_canvas *curcanv_save, *bitmap_canv=0;
grs_bitmap *bitmap_ptr;
// gr_use_palette_table( "groupa.256" );
// Only plot every nth frame.
if (Door_div_count) {
#ifdef OGL
if (Bitmap_name[0] != 0) {
bitmap_index bi;
bi = piggy_find_bitmap(Bitmap_name);
bitmap_ptr = &GameBitmaps[bi.index];
PIGGY_PAGE_IN( bi );
#ifdef OGL
ogl_ubitmapm_cs(rescale_x(220), rescale_y(45),(bitmap_ptr->bm_w*(SWIDTH/320)),(bitmap_ptr->bm_h*(SHEIGHT/200)),bitmap_ptr,255,F1_0);
}
#else
gr_bitmapm(rescale_x(220), rescale_y(45), bitmap_ptr);
#endif
}
Door_div_count--;
return;
}
@ -589,7 +588,6 @@ int show_char_delay(char the_char, int delay, int robot_num, int cursor_flag)
if (cursor_flag && delay) {
gr_set_fontcolor(Briefing_text_colors[Current_color], -1);
gr_printf(Briefing_text_x, Briefing_text_y, "_" );
gr_update();
}
if ((Bitmap_name[0] != 0) && (delay != 0))
@ -617,8 +615,6 @@ int show_char_delay(char the_char, int delay, int robot_num, int cursor_flag)
gr_set_fontcolor(Briefing_text_colors[Current_color], -1);
gr_printf(Briefing_text_x+1, Briefing_text_y, message );
if (delay) gr_update();
return w;
}
@ -714,10 +710,8 @@ void flash_cursor(int cursor_flag)
gr_set_fontcolor(Erase_color, -1);
gr_printf(Briefing_text_x, Briefing_text_y, "_" );
gr_update();
}
#ifdef OGL
typedef struct msgstream {
int x;
int y;
@ -740,7 +734,6 @@ void redraw_messagestream(int count)
gr_printf(messagestream[i].x+1,messagestream[i].y,"%s",msgbuf);
}
}
#endif
// -----------------------------------------------------------------------------
// Return true if message got aborted by user (pressed ESC), else return false.
@ -764,14 +757,8 @@ int show_briefing(int screen_num, char *message)
int hum_channel=-1,printing_channel=-1;
int LineAdjustment=1;
grs_bitmap guy_bitmap;
#ifdef OGL
int streamcount=0, guy_bitmap_show=0;
#endif
// if (EMULATING_D1)
// fname = Briefing_screens[screen_num].bs_name;
// else
// fname = CurBriefScreenName;
if (EMULATING_D1)
strncpy(fname, Briefing_screens[screen_num].bs_name, 15);//fname = Briefing_screens[screen_num].bs_name;
else
@ -936,11 +923,7 @@ int show_briefing(int screen_num, char *message)
gr_remap_bitmap_good( &guy_bitmap, temp_palette, -1, -1 );
show_briefing_bitmap(&guy_bitmap);
#ifndef OGL
d_free(guy_bitmap.bm_data);
#else
guy_bitmap_show=1;
#endif
prev_ch = 10;
} else if (ch == 'S') {
int keypress;
@ -951,21 +934,18 @@ int show_briefing(int screen_num, char *message)
digi_stop_sound( printing_channel );
printing_channel=-1;
gr_update();
start_time = timer_get_fixed_seconds();
while ( (keypress = local_key_inkey()) == 0 ) { // Wait for a key
while (timer_get_fixed_seconds() < start_time + KEY_DELAY_DEFAULT/2)
;
#ifdef OGL
if (!RobotPlaying)
gr_flip();
show_fullscr(&briefing_bm);
redraw_messagestream(streamcount);
if (guy_bitmap_show)
show_briefing_bitmap(&guy_bitmap);
#endif
flash_cursor(flashing_cursor);
if (RobotPlaying)
@ -1002,7 +982,6 @@ int show_briefing(int screen_num, char *message)
}
message++;
prev_ch = 10;
gr_update();
}
} else if (ch == '\t') { // Tab
if (Briefing_text_x - bsp->text_ulx < tab_stop)
@ -1022,9 +1001,7 @@ int show_briefing(int screen_num, char *message)
DumbAdjust--;
Briefing_text_x = bsp->text_ulx;
if (Briefing_text_y > bsp->text_uly + bsp->text_height) {
#ifndef OGL
load_briefing_screen(Briefing_screens[screen_num].bs_name);
#endif
Briefing_text_x = bsp->text_ulx;
Briefing_text_y = bsp->text_uly;
}
@ -1041,7 +1018,6 @@ int show_briefing(int screen_num, char *message)
load_briefing_screen (HIRESMODE?"end01b.pcx":"end01.pcx");
}
#ifdef OGL
messagestream[streamcount].x = Briefing_text_x;
messagestream[streamcount].y = Briefing_text_y;
messagestream[streamcount].color = Briefing_text_colors[Current_color];
@ -1055,7 +1031,6 @@ int show_briefing(int screen_num, char *message)
if (guy_bitmap_show)
show_briefing_bitmap(&guy_bitmap);
streamcount++;
#endif
prev_ch = ch;
@ -1107,14 +1082,12 @@ int show_briefing(int screen_num, char *message)
while ( (keypress = local_key_inkey()) == 0 ) { // Wait for a key
while (timer_get_fixed_seconds() < start_time + KEY_DELAY_DEFAULT/2)
;
#ifdef OGL
if (!RobotPlaying)
gr_flip();
show_fullscr(&briefing_bm);
redraw_messagestream(streamcount);
if (guy_bitmap_show)
show_briefing_bitmap(&guy_bitmap);
#endif
flash_cursor(flashing_cursor);
if (RobotPlaying)
RotateRobot();
@ -1143,13 +1116,11 @@ int show_briefing(int screen_num, char *message)
Briefing_text_x = bsp->text_ulx;
Briefing_text_y = bsp->text_uly;
#ifdef OGL
streamcount=0;
if (guy_bitmap_show) {
gr_free_bitmap_data (&guy_bitmap);
guy_bitmap_show=0;
}
#endif
delay_count = KEY_DELAY_DEFAULT;
}
@ -1171,10 +1142,8 @@ int show_briefing(int screen_num, char *message)
d_free(bsp);
}
#ifdef OGL
if (briefing_bm.bm_data != NULL)
gr_free_bitmap_data (&briefing_bm);
#endif
return rval;
}
@ -1320,14 +1289,8 @@ int show_briefing_screen( int screen_num, int allow_keys)
if (EMULATING_D1) {
load_briefing_screen(Briefing_screens[screen_num].bs_name);
gr_palette_clear();
#ifndef OGL
show_fullscr(&briefing_bm );
#endif
gr_palette_load(gr_palette);
gr_update();
}
rval = show_briefing_text(screen_num);
@ -1455,7 +1418,6 @@ void show_order_form()
char exit_screen[16];
gr_set_current_canvas( NULL );
gr_palette_clear();
key_flush();

View file

@ -322,8 +322,6 @@ int ui_get_filename( char * filename, char * Filespec, char * message )
ui_mouse_show();
}
gr_update();
}
//key_flush();

View file

@ -136,8 +136,6 @@ int GetKeyCode(char * text)
if (DoneButton->pressed)
break;
gr_update();
}
ui_close_window(wnd);

View file

@ -117,8 +117,6 @@ int MenuX( int x, int y, int NumButtons, char * text[] )
choice = -1;
break;
}
gr_update();
}
ui_close_window(wnd);

View file

@ -608,8 +608,6 @@ void menubar_do( int keypress )
state = 0;
}
last_keypress = 0;
gr_update();
}
}

View file

@ -165,8 +165,6 @@ int MessageBoxN( short xc, short yc, int NumButtons, char * text, char * Button[
break;
}
}
gr_update();
}
ui_close_window(wnd);

View file

@ -106,8 +106,6 @@ double ui_input_number( short xc, short yc, char * text, double OrgNumber )
ui_window_do_gadgets(wnd);
if (InputBox->pressed) break;
gr_update();
}
ui_close_window(wnd);

View file

@ -142,8 +142,6 @@ int PopupMenu( int NumButtons, char * text[] )
choice = -1;
break;
}
gr_update();
}
ui_close_window(wnd);