git-svn-id: https://svn.eduke32.com/eduke32@1150 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2008-11-24 09:22:07 +00:00
parent f2a2b491d6
commit 26a97cb6b7
15 changed files with 262 additions and 209 deletions

View file

@ -164,7 +164,7 @@ EDITOROBJS=$(OBJ)/astub.$o
ifeq ($(PLATFORM),LINUX)
OURCFLAGS += -fno-pic
NASMFLAGS += -f elf
LIBS += -lvorbisfile -lvorbis -logg
LIBS += -lvorbisfile -lvorbis -logg -lprofiler
USE_OPENAL = 0
endif

View file

@ -139,7 +139,7 @@ EDITOROBJS=$(OBJ)/build.$o \
ifeq ($(PLATFORM),LINUX)
ASFLAGS+= -f elf
LIBS+= -lm
LIBS+= -lm -lprofiler
endif
ifeq ($(PLATFORM),DARWIN)
ENGINEOBJS += $(OBJ)/StartupWinController.editor.$o \

View file

@ -72,6 +72,7 @@ enum
T_SETUPTILE,T_SETUPTILERANGE,
T_ANIMTILERANGE,
T_CACHESIZE,
T_IMPORTTILE,
T_MUSIC,T_ID,T_SOUND,
T_REDPAL,T_BLUEPAL,T_BROWNPAL,T_GREYPAL,T_GREENPAL,T_SPECPAL
};
@ -126,6 +127,7 @@ static tokenlist basetokens[] =
{ "setuptilerange", T_SETUPTILERANGE },
{ "animtilerange", T_ANIMTILERANGE },
{ "cachesize", T_CACHESIZE },
{ "importtile", T_IMPORTTILE },
};
static tokenlist modeltokens[] =
@ -589,6 +591,49 @@ static int defsparser(scriptfile *script)
picanm[tile1]=(spd<<24)+(type<<6)+tile2-tile1;
break;
}
case T_IMPORTTILE:
{
int tile, xsiz, ysiz, j;
extern char faketile[MAXTILES];
extern char *faketiledata[MAXTILES];
int *picptr = NULL;
int bpl;
char *fn;
palette_t *col;
extern int getclosestcol(int r, int g, int b);
int i;
if (scriptfile_getsymbol(script,&tile)) break;
if (scriptfile_getstring(script,&fn)) break;
kpzload(fn, (intptr_t *)&picptr, &bpl, &xsiz, &ysiz);
initprintf("got bpl %d xsiz %d ysiz %d\n",bpl,xsiz,ysiz);
faketiledata[tile] = Bmalloc(xsiz*ysiz);
for (i=0;i<(xsiz*ysiz);i++)
{
col = (palette_t *)&picptr[i];
faketiledata[tile][i] = getclosestcol(col->b>>2,col->g>>2,col->r>>2);
// initprintf(" %d %d %d %d\n",col->r,col->g,col->b,col->f);
}
if (xsiz > 0 && ysiz > 0)
{
tilesizx[tile] = xsiz;
tilesizy[tile] = ysiz;
faketile[tile] = 2;
picanm[tile] = 0;
j = 15; while ((j > 1) && (pow2long[j] > xsiz)) j--;
picsiz[tile] = ((char)j);
j = 15; while ((j > 1) && (pow2long[j] > ysiz)) j--;
picsiz[tile] += ((char)(j<<4));
}
break;
}
case T_DUMMYTILE:
{
int tile, xsiz, ysiz, j;

View file

@ -8047,6 +8047,7 @@ int loadpics(char *filename, int askedsize)
//
char cachedebug = 0;
char faketile[MAXTILES];
char *faketiledata[MAXTILES];
int h_xsize[MAXTILES], h_ysize[MAXTILES];
signed char h_xoffs[MAXTILES], h_yoffs[MAXTILES];
@ -8093,7 +8094,14 @@ void loadtile(short tilenume)
faketimerhandler();
artfilplc = tilefileoffs[tilenume]+dasiz;
}
else { Bmemset((char *)waloff[tilenume],0,dasiz); faketimerhandler(); }
else
{
if (faketile[tilenume] == 1 || (faketile[tilenume] == 2 && faketiledata[tilenume] == NULL))
Bmemset((char *)waloff[tilenume],0,dasiz);
else if (faketile[tilenume] == 2)
Bmemcpy((char *)waloff[tilenume],faketiledata[tilenume],dasiz);
faketimerhandler();
}
}
void checktile(short tilenume)

View file

@ -516,6 +516,10 @@
RelativePath=".\source\keys.h"
>
</File>
<File
RelativePath=".\source\macros.h"
>
</File>
<File
RelativePath=".\source\mapster32.h"
>
@ -556,10 +560,6 @@
RelativePath=".\source\startwin.game.h"
>
</File>
<File
RelativePath=".\source\swmacros.h"
>
</File>
</Filter>
</Filter>
<Filter

View file

@ -1324,13 +1324,14 @@ static void G_MoveFallers(void)
A_SetSprite(i,CLIPMASK0);
}
if (G_CheckForSpaceFloor(s->sectnum)) x = 0;
if (G_CheckForSpaceFloor(s->sectnum))
x = 0;
else
{
if (G_CheckForSpaceCeiling(s->sectnum))
x = SpriteGravity/6;
x = g_spriteGravity/6;
else
x = SpriteGravity;
x = g_spriteGravity;
}
if (s->z < (sector[sect].floorz-FOURSLEIGHT))
@ -2389,7 +2390,7 @@ static void G_MoveWeapons(void)
if (ActorExtra[i].projectile.workslike & PROJECTILE_SPIT)
if (s->zvel < 6144)
s->zvel += SpriteGravity-112;
s->zvel += g_spriteGravity-112;
k = s->xvel;
ll = s->zvel;
@ -2878,7 +2879,7 @@ static void G_MoveWeapons(void)
}
}
else if (s->picnum == SPIT) if (s->zvel < 6144)
s->zvel += SpriteGravity-112;
s->zvel += g_spriteGravity-112;
if (j != 0)
{
@ -4944,11 +4945,11 @@ static void G_MoveMisc(void) // STATNUM 5
if (sector[sect].lotag == 2)
{
if (s->zvel < 64)
s->zvel += (SpriteGravity>>5)+(krand()&7);
s->zvel += (g_spriteGravity>>5)+(krand()&7);
}
else
if (s->zvel < 144)
s->zvel += (SpriteGravity>>5)+(krand()&7);
s->zvel += (g_spriteGravity>>5)+(krand()&7);
}
A_SetSprite(i,CLIPMASK0);
@ -5039,7 +5040,7 @@ static void G_MoveMisc(void) // STATNUM 5
s->zvel += 48;
else s->zvel = 1024;
}
else s->zvel += SpriteGravity-50;
else s->zvel += g_spriteGravity-50;
}
s->x += (s->xvel*sintable[(s->ang+512)&2047])>>14;
@ -5195,7 +5196,7 @@ static void G_MoveMisc(void) // STATNUM 5
t[0]++;
t[0] &= 3;
}
if (s->zvel < 128) s->zvel += (SpriteGravity/13); // 8
if (s->zvel < 128) s->zvel += (g_spriteGravity/13); // 8
else s->zvel -= 64;
if (s->xvel > 0)
s->xvel -= 4;
@ -5210,7 +5211,7 @@ static void G_MoveMisc(void) // STATNUM 5
t[0]++;
t[0] &= 3;
}
if (s->zvel < 512) s->zvel += (SpriteGravity/3); // 52;
if (s->zvel < 512) s->zvel += (g_spriteGravity/3); // 52;
if (s->xvel > 0)
s->xvel --;
// else KILLIT(i);
@ -5284,7 +5285,7 @@ static void G_MoveMisc(void) // STATNUM 5
else t[0]++;
}
}
if (s->zvel < 4096) s->zvel += SpriteGravity-50;
if (s->zvel < 4096) s->zvel += g_spriteGravity-50;
s->x += (s->xvel*sintable[(s->ang+512)&2047])>>14;
s->y += (s->xvel*sintable[s->ang&2047])>>14;
s->z += s->zvel;

View file

@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define APPNAME "EDuke32"
#define VERSION " 1.5.0devel"
// this is checked against http://eduke32.com/VERSION
extern char *s_builddate;
extern const char *s_buildDate;
#define HEAD2 APPNAME VERSION
#ifdef __cplusplus
@ -55,7 +55,7 @@ extern "C" {
#include "function.h"
#include "swmacros.h"
#include "macros.h"
#define HORIZ_MIN -99
#define HORIZ_MAX 299
@ -426,72 +426,72 @@ extern int fricxv,fricyv;
// of this struct into the same order so we can just memcpy it and get rid of the
// mywhatever type globals
typedef struct {
int zoom,exitx,exity;
int posx, posy, posz, horiz, ohoriz, ohorizoff, invdisptime;
int bobposx,bobposy,oposx,oposy,oposz,pyoff,opyoff;
int posxv,posyv,poszv,last_pissed_time,truefz,truecz;
int player_par,visibility;
int bobcounter,weapon_sway;
int pals_time,randomflamex,crack_time;
unsigned int interface_toggle_flag;
int max_secret_rooms,secret_rooms,max_actors_killed,actors_killed;
int runspeed, movement_lock, team;
int max_player_health, max_shield_amount, max_ammo_amount[MAX_WEAPONS];
int scream_voice;
int loogiex[64],loogiey[64],numloogs,loogcnt;
char *palette;
short sbs, sound_pitch;
short ang,oang,angvel,cursectnum,look_ang,last_extra,subweapon;
short ammo_amount[MAX_WEAPONS],wackedbyactor,frag,fraggedself;
short curr_weapon, last_weapon, tipincs, horizoff, wantweaponfire;
short holoduke_amount,newowner,hurt_delay,hbomb_hold_delay;
short jumping_counter,airleft,knee_incs,access_incs;
short fta,ftq,access_wallnum,access_spritenum;
short kickback_pic,got_access,weapon_ang,firstaid_amount;
short somethingonplayer,on_crane,i,one_parallax_sectnum;
short over_shoulder_on,random_club_frame,fist_incs;
short one_eighty_count,cheat_phase;
short dummyplayersprite,extra_extra8,quick_kick,last_quick_kick;
short heat_amount,actorsqu,timebeforeexit,customexitsound;
short weaprecs[16],weapreccnt;
short orotscrnang,rotscrnang,dead_flag,show_empty_weapon; // JBF 20031220: added orotscrnang
short scuba_amount,jetpack_amount,steroids_amount,shield_amount;
short holoduke_on,pycount,weapon_pos,frag_ps;
short transporter_hold,last_full_weapon,footprintshade,boot_amount;
char aim_mode,auto_aim,weaponswitch;
char gm,on_warping_sector,footprintcount;
char hbomb_on,jumping_toggle,rapid_fire_hold,on_ground;
char inven_icon,buttonpalette;
char jetpack_on,spritebridge,lastrandomspot;
char scuba_on,footprintpal,heat_on;
char holster_weapon,falling_counter;
char gotweapon[MAX_WEAPONS],refresh_inventory;
char toggle_key_flag,knuckle_incs; // ,select_dir;
char walking_snd_toggle, palookup, hard_landing;
char /*fire_flag,*/pals[3];
char return_to_center, reloading, name[32];
typedef struct {
int zoom, exitx, exity;
int posx, posy, posz, horiz, ohoriz, ohorizoff, invdisptime;
int bobposx, bobposy, oposx, oposy, oposz, pyoff, opyoff;
int posxv, posyv, poszv, last_pissed_time, truefz, truecz;
int player_par, visibility;
int bobcounter, weapon_sway;
int pals_time, randomflamex, crack_time;
unsigned int interface_toggle_flag;
int max_secret_rooms, secret_rooms, max_actors_killed, actors_killed;
int runspeed, movement_lock, team;
int max_player_health, max_shield_amount, max_ammo_amount[MAX_WEAPONS];
int scream_voice;
int loogiex[64], loogiey[64], numloogs, loogcnt;
char *palette;
short sbs, sound_pitch;
short ang, oang, angvel, cursectnum, look_ang, last_extra, subweapon;
short ammo_amount[MAX_WEAPONS], wackedbyactor, frag, fraggedself;
short curr_weapon, last_weapon, tipincs, horizoff, wantweaponfire;
short holoduke_amount, newowner, hurt_delay, hbomb_hold_delay;
short jumping_counter, airleft, knee_incs, access_incs;
short fta, ftq, access_wallnum, access_spritenum;
short kickback_pic, got_access, weapon_ang, firstaid_amount;
short somethingonplayer, on_crane, i, one_parallax_sectnum;
short over_shoulder_on, random_club_frame, fist_incs;
short one_eighty_count, cheat_phase;
short dummyplayersprite, extra_extra8, quick_kick, last_quick_kick;
short heat_amount, actorsqu, timebeforeexit, customexitsound;
short weaprecs[16], weapreccnt;
short orotscrnang, rotscrnang, dead_flag, show_empty_weapon; // JBF 20031220: added orotscrnang
short scuba_amount, jetpack_amount, steroids_amount, shield_amount;
short holoduke_on, pycount, weapon_pos, frag_ps;
short transporter_hold, last_full_weapon, footprintshade, boot_amount;
char aim_mode, auto_aim, weaponswitch;
char gm, on_warping_sector, footprintcount;
char hbomb_on, jumping_toggle, rapid_fire_hold, on_ground;
char inven_icon, buttonpalette;
char jetpack_on, spritebridge, lastrandomspot;
char scuba_on, footprintpal, heat_on;
char holster_weapon, falling_counter;
char gotweapon[MAX_WEAPONS], refresh_inventory;
char toggle_key_flag, knuckle_incs; // , select_dir;
char walking_snd_toggle, palookup, hard_landing;
char /*fire_flag, */pals[3];
char return_to_center, reloading, name[32];
} DukePlayer_t;
extern char tempbuf[2048], packbuf[576], menutextbuf[128];
extern int SpriteGravity;
extern int g_spriteGravity;
extern int g_impactDamage,g_actorRespawnTime,g_itemRespawnTime;
extern int g_startArmorAmount;
@ -546,6 +546,7 @@ typedef struct {
short tempang,actorstayput,dispicnum;
short timetosleep;
char cgg;
char filler;
projectile_t projectile;
} actordata_t;

View file

@ -49,8 +49,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <shellapi.h>
#include <winsock2.h>
#include <ws2tcpip.h>
extern int G_GetVersionFromWebsite(char *buffer);
#define UPDATEINTERVAL 604800 // 1w
#else
@ -169,101 +167,6 @@ unsigned int g_frameDelay = 0;
extern char forcegl;
#endif
#ifdef _WIN32
int G_GetVersionFromWebsite(char *buffer) // FIXME: this probably belongs in game land
{
int wsainitialized = 0;
int bytes_sent, i=0, j=0;
struct sockaddr_in dest_addr;
struct hostent *h;
char *host = "eduke32.sourceforge.net";
char *req = "GET http://eduke32.sourceforge.net/VERSION HTTP/1.0\r\n\r\n";
char tempbuf[2048],otherbuf[16],ver[16];
SOCKET mysock;
#ifdef _WIN32
if (wsainitialized == 0)
{
WSADATA ws;
if (WSAStartup(0x101,&ws) == SOCKET_ERROR)
{
initprintf("update: Winsock error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
wsainitialized = 1;
}
#endif
if ((h=gethostbyname(host)) == NULL)
{
initprintf("update: gethostbyname() error in G_GetVersionFromWebsite() (%d)\n",h_errno);
return(0);
}
dest_addr.sin_addr.s_addr = ((struct in_addr *)(h->h_addr))->s_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(80);
memset(&(dest_addr.sin_zero), '\0', 8);
mysock = socket(PF_INET, SOCK_STREAM, 0);
if (mysock == INVALID_SOCKET)
{
initprintf("update: socket() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
initprintf("Connecting to http://%s\n",host);
if (connect(mysock, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
initprintf("update: connect() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
bytes_sent = send(mysock, req, strlen(req), 0);
if (bytes_sent == SOCKET_ERROR)
{
initprintf("update: send() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
// initprintf("sent %d bytes\n",bytes_sent);
recv(mysock, (char *)&tempbuf, sizeof(tempbuf), 0);
closesocket(mysock);
memcpy(&otherbuf,&tempbuf,sizeof(otherbuf));
strtok(otherbuf," ");
if (atol(strtok(NULL," ")) == 200)
{
for (i=0;(unsigned)i<strlen(tempbuf);i++) // HACK: all of this needs to die a fiery death; we just skip to the content
{
// instead of actually parsing any of the http headers
if (i > 4)
if (tempbuf[i-1] == '\n' && tempbuf[i-2] == '\r' && tempbuf[i-3] == '\n' && tempbuf[i-4] == '\r')
{
while (j < 9)
{
ver[j] = tempbuf[i];
i++, j++;
}
ver[j] = '\0';
break;
}
}
if (j)
{
strcpy(buffer,ver);
return(1);
}
}
return(0);
}
#endif
int kopen4loadfrommod(char *filename, char searchfirst)
{
static char fn[BMAX_PATH];
@ -980,9 +883,9 @@ void getpackets(void)
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
if (i != other) sendpacket(i,packbuf,packbufleng);
if (packbuf[2] != (char)atoi(s_builddate))
if (packbuf[2] != (char)atoi(s_buildDate))
{
initprintf("Player %d has version %d, expecting %d\n",packbuf[2],(char)atoi(s_builddate));
initprintf("Player %d has version %d, expecting %d\n",packbuf[2],(char)atoi(s_buildDate));
G_GameExit("You cannot play with different versions of EDuke32!");
}
if (packbuf[3] != BYTEVERSION)
@ -1162,9 +1065,9 @@ void getpackets(void)
vote_map = packbuf[3];
Bsprintf(tempbuf,"%s^00 HAS CALLED A VOTE TO CHANGE MAP TO %s (E%dL%d)",
g_player[(unsigned char)packbuf[1]].user_name,
MapInfo[(unsigned char)(packbuf[2]*MAXLEVELS + packbuf[3])].name,
packbuf[2]+1,packbuf[3]+1);
g_player[(unsigned char)packbuf[1]].user_name,
MapInfo[(unsigned char)(packbuf[2]*MAXLEVELS + packbuf[3])].name,
packbuf[2]+1,packbuf[3]+1);
G_AddUserQuote(tempbuf);
Bsprintf(tempbuf,"PRESS F1 TO ACCEPT, F2 TO DECLINE");
@ -2974,7 +2877,7 @@ void G_GameExit(const char *t)
if (!(t[0] == ' ' && t[1] == 0))
{
char titlebuf[256];
Bsprintf(titlebuf,HEAD2 " %s",s_builddate);
Bsprintf(titlebuf,HEAD2 " %s",s_buildDate);
wm_msgbox(titlebuf, (char *)t);
}
}
@ -8871,7 +8774,7 @@ static void G_ShowParameterHelp(void)
"\nSee eduke32 -debughelp for debug parameters"
;
#if defined RENDERTYPEWIN
Bsprintf(tempbuf,HEAD2 " %s",s_builddate);
Bsprintf(tempbuf,HEAD2 " %s",s_buildDate);
wm_msgbox(tempbuf,s);
#else
initprintf("%s\n",s);
@ -8901,7 +8804,7 @@ static void G_ShowDebugHelp(void)
"-z#/-condebug\tEnable line-by-line CON compile debugging at level #\n"
;
#if defined RENDERTYPEWIN
Bsprintf(tempbuf,HEAD2 " %s",s_builddate);
Bsprintf(tempbuf,HEAD2 " %s",s_buildDate);
wm_msgbox(tempbuf,s);
#else
initprintf("%s\n",s);
@ -10656,7 +10559,7 @@ static void Net_SendVersion(void)
buf[0] = PACKET_TYPE_VERSION;
buf[1] = myconnectindex;
buf[2] = (char)atoi(s_builddate);
buf[2] = (char)atoi(s_buildDate);
buf[3] = BYTEVERSION;
buf[4] = g_numSyncBytes;
@ -10920,7 +10823,7 @@ void app_main(int argc,const char **argv)
(int(*)(void))GetTime,
GAME_onshowosd
);
Bsprintf(tempbuf,HEAD2 " %s",s_builddate);
Bsprintf(tempbuf,HEAD2 " %s",s_buildDate);
wm_setapptitle(tempbuf);
initprintf("%s\n",apptitle);
@ -11058,7 +10961,7 @@ void app_main(int argc,const char **argv)
initprintf("Current version is %d",atoi(tempbuf));
ud.config.LastUpdateCheck = time(NULL);
if (atoi(tempbuf) > atoi(s_builddate))
if (atoi(tempbuf) > atoi(s_buildDate))
{
if (wm_ynbox("EDuke32","A new version of EDuke32 is available. "
"Browse to http://eduke32.sourceforge.net now?"))
@ -11359,7 +11262,7 @@ void app_main(int argc,const char **argv)
initprintf("Initializing OSD...\n");
Bsprintf(tempbuf,HEAD2 " %s",s_builddate);
Bsprintf(tempbuf,HEAD2 " %s",s_buildDate);
OSD_SetVersionString(tempbuf, 10,0);
registerosdcommands();
@ -12312,13 +12215,13 @@ static void Net_DoPrediction(void)
if (myz < (fz-(i<<8)) && (G_CheckForSpaceFloor(psect)|G_CheckForSpaceCeiling(psect)) == 0) //falling
{
if (!TEST_SYNC_KEY(sb_snum, SK_JUMP) && !TEST_SYNC_KEY(sb_snum, SK_CROUCH) &&
myonground && (sector[psect].floorstat&2) && myz >= (fz-(i<<8)-(16<<8)))
myonground && (sector[psect].floorstat&2) && myz >= (fz-(i<<8)-(16<<8)))
myz = fz-(i<<8);
else
{
myonground = 0;
myzvel += (SpriteGravity+80);
myzvel += (g_spriteGravity+80);
if (myzvel >= (4096+2048)) myzvel = (4096+2048);
}

View file

@ -5330,7 +5330,7 @@ repeatcase:
g_actorRespawnTime = params[j++];
g_itemRespawnTime = params[j++];
g_playerFriction = params[j++];
if (g_scriptVersion == 14) SpriteGravity = params[j++];
if (g_scriptVersion == 14) g_spriteGravity = params[j++];
g_rpgBlastRadius = params[j++];
g_pipebombBlastRadius = params[j++];
g_shrinkerBlastRadius = params[j++];

View file

@ -312,14 +312,14 @@ void A_GetZLimits(int iActor)
void A_Fall(int iActor)
{
spritetype *s = &sprite[iActor];
int hz,lz,c = SpriteGravity;
int hz,lz,c = g_spriteGravity;
if (G_CheckForSpaceFloor(s->sectnum))
c = 0;
else
{
if (G_CheckForSpaceCeiling(s->sectnum) || sector[s->sectnum].lotag == 2)
c = SpriteGravity/6;
c = g_spriteGravity/6;
}
if ((s->statnum == 1 || s->statnum == 10 || s->statnum == 2 || s->statnum == 6))
@ -641,15 +641,12 @@ static inline void X_DoConditional(int condition)
}
}
// int *it = 0x00589a04;
static int X_DoExecute(void)
{
int j, l, s, tw = *insptr;
if (g_killitFlag) return 1;
// if(*it == 1668249134L) G_GameExit("\nERR");
// Bsprintf(g_szBuf,"Parsing: %d",*insptr);
// AddLog(g_szBuf);
@ -1034,10 +1031,10 @@ static int X_DoExecute(void)
insptr++;
g_sp->xoffset = g_sp->yoffset = 0;
j = SpriteGravity;
j = g_spriteGravity;
if (G_CheckForSpaceCeiling(g_sp->sectnum) || sector[g_sp->sectnum].lotag == 2)
j = SpriteGravity/6;
j = g_spriteGravity/6;
else if (G_CheckForSpaceFloor(g_sp->sectnum))
j = 0;
@ -1591,7 +1588,7 @@ static int X_DoExecute(void)
Bstrcpy(ScriptQuotes[i],g_player[g_p].user_name);
break;
case STR_VERSION:
Bsprintf(tempbuf,HEAD2 " %s",s_builddate);
Bsprintf(tempbuf,HEAD2 " %s",s_buildDate);
Bstrcpy(ScriptQuotes[i],tempbuf);
break;
case STR_GAMETYPE:

View file

@ -1321,7 +1321,7 @@ static void Gv_AddSystemVars(void)
Gv_SetupVar("numplayers",(intptr_t)&numplayers, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY);
Gv_SetupVar("viewingrange",(intptr_t)&viewingrange, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY | GAMEVAR_SYNCCHECK);
Gv_SetupVar("yxaspect",(intptr_t)&yxaspect, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY | GAMEVAR_SYNCCHECK);
Gv_SetupVar("gravitationalconstant",(intptr_t)&SpriteGravity, GAMEVAR_SYSTEM | GAMEVAR_INTPTR);
Gv_SetupVar("gravitationalconstant",(intptr_t)&g_spriteGravity, GAMEVAR_SYSTEM | GAMEVAR_INTPTR);
Gv_SetupVar("gametype_flags",(intptr_t)&GametypeFlags[ud.coop], GAMEVAR_SYSTEM | GAMEVAR_INTPTR);
Gv_SetupVar("framerate",(intptr_t)&g_currentFrameRate, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY | GAMEVAR_SYNCCHECK);
Gv_SetupVar("CLIPMASK0", CLIPMASK0, GAMEVAR_SYSTEM|GAMEVAR_READONLY);
@ -1473,7 +1473,7 @@ void Gv_RefreshPointers(void)
aGameVars[Gv_GetVarIndex("g_currentMenu")].lValue = (intptr_t)&g_currentMenu;
aGameVars[Gv_GetVarIndex("viewingrange")].lValue = (intptr_t)&viewingrange;
aGameVars[Gv_GetVarIndex("yxaspect")].lValue = (intptr_t)&yxaspect;
aGameVars[Gv_GetVarIndex("gravitationalconstant")].lValue = (intptr_t)&SpriteGravity;
aGameVars[Gv_GetVarIndex("gravitationalconstant")].lValue = (intptr_t)&g_spriteGravity;
aGameVars[Gv_GetVarIndex("GametypeFlags")].lValue = (intptr_t)&GametypeFlags[ud.coop];
aGameVars[Gv_GetVarIndex("framerate")].lValue = (intptr_t)&g_currentFrameRate;

View file

@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//-------------------------------------------------------------------------
#include "duke3d.h"
char *s_builddate = "20081122";
const char *s_buildDate = "20081122";
char *MusicPtr = NULL;
int g_musicSize;
@ -31,8 +31,8 @@ short g_globalRandom;
short neartagsector, neartagwall, neartagsprite;
int neartaghitdist,lockclock,g_startArmorAmount;
// JBF: SpriteGravity modified to default to Atomic ed. default when using 1.3d CONs
int SpriteGravity=176;
// JBF: g_spriteGravity modified to default to Atomic ed. default when using 1.3d CONs
int g_spriteGravity=176;
// int temp_data[MAXSPRITES][6];
actordata_t ActorExtra[MAXSPRITES];
@ -157,7 +157,7 @@ char szPlayerName[32];
int g_damageCameras,g_freezerSelfDamage=0,g_tripbombLaserMode=0;
int g_networkBroadcastMode = 255, g_movesPerPacket = 1,g_gameQuit = 0,everyothertime;
int g_numFreezeBounces=3,g_rpgBlastRadius,g_pipebombBlastRadius,g_tripbombBlastRadius,
g_shrinkerBlastRadius,g_morterBlastRadius,g_bouncemineBlastRadius,g_seenineBlastRadius;
g_shrinkerBlastRadius,g_morterBlastRadius,g_bouncemineBlastRadius,g_seenineBlastRadius;
STATUSBARTYPE sbar;
int mymaxlag, otherminlag, bufferjitter = 1;

View file

@ -4085,7 +4085,7 @@ void P_ProcessInput(int snum)
else
{
p->on_ground = 0;
p->poszv += (SpriteGravity+80); // (TICSPERFRAME<<6);
p->poszv += (g_spriteGravity+80); // (TICSPERFRAME<<6);
if (p->poszv >= (4096+2048)) p->poszv = (4096+2048);
if (p->poszv > 2400 && p->falling_counter < 255)
{

View file

@ -31,6 +31,9 @@ Windows-specific hooks for JonoF's Duke3D port.
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <shellapi.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include "winlayer.h"
@ -87,3 +90,98 @@ void Error(char *error, ...)
#endif
#ifdef _WIN32
int G_GetVersionFromWebsite(char *buffer)
{
int wsainitialized = 0;
int bytes_sent, i=0, j=0;
struct sockaddr_in dest_addr;
struct hostent *h;
char *host = "eduke32.sourceforge.net";
char *req = "GET http://eduke32.sourceforge.net/VERSION HTTP/1.0\r\n\r\n";
char tempbuf[2048],otherbuf[16],ver[16];
SOCKET mysock;
#ifdef _WIN32
if (wsainitialized == 0)
{
WSADATA ws;
if (WSAStartup(0x101,&ws) == SOCKET_ERROR)
{
// initprintf("update: Winsock error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
wsainitialized = 1;
}
#endif
if ((h=gethostbyname(host)) == NULL)
{
// initprintf("update: gethostbyname() error in G_GetVersionFromWebsite() (%d)\n",h_errno);
return(0);
}
dest_addr.sin_addr.s_addr = ((struct in_addr *)(h->h_addr))->s_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(80);
memset(&(dest_addr.sin_zero), '\0', 8);
mysock = socket(PF_INET, SOCK_STREAM, 0);
if (mysock == INVALID_SOCKET)
{
// initprintf("update: socket() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
initprintf("Connecting to http://%s\n",host);
if (connect(mysock, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
// initprintf("update: connect() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
bytes_sent = send(mysock, req, strlen(req), 0);
if (bytes_sent == SOCKET_ERROR)
{
// initprintf("update: send() error in G_GetVersionFromWebsite() (%d)\n",errno);
return(0);
}
// initprintf("sent %d bytes\n",bytes_sent);
recv(mysock, (char *)&tempbuf, sizeof(tempbuf), 0);
closesocket(mysock);
memcpy(&otherbuf,&tempbuf,sizeof(otherbuf));
strtok(otherbuf," ");
if (atol(strtok(NULL," ")) == 200)
{
for (i=0;(unsigned)i<strlen(tempbuf);i++) // HACK: all of this needs to die a fiery death; we just skip to the content
{
// instead of actually parsing any of the http headers
if (i > 4)
if (tempbuf[i-1] == '\n' && tempbuf[i-2] == '\r' && tempbuf[i-3] == '\n' && tempbuf[i-4] == '\r')
{
while (j < 9)
{
ver[j] = tempbuf[i];
i++, j++;
}
ver[j] = '\0';
break;
}
}
if (j)
{
strcpy(buffer,ver);
return(1);
}
}
return(0);
}
#endif