*** empty log message ***

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@904 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2007-04-03 19:20:45 +00:00
parent fae7543e2a
commit a14b20ac6b
10 changed files with 265 additions and 273 deletions
-69
View File
@@ -45,67 +45,6 @@ void throttle()
enet_peer_throttle_configure(curpeer, throttle_interval*1000, throttle_accel, throttle_decel);
}
void newname(char *name)
{
if(name[0])
{
c2sinit = false;
s_strncpy(player1->name, name, MAXNAMELEN+1);
}
else conoutf("your name is: %s", player1->name);
}
int smallerteam()
{
int teamsize[2] = {0, 0};
loopv(players) if(players[i]) teamsize[team_int(players[i]->team)]++;
teamsize[team_int(player1->team)]++;
if(teamsize[0] == teamsize[1]) return -1;
return teamsize[0] < teamsize[1] ? 0 : 1;
}
void changeteam(int team) // force team and respawn
{
c2sinit = false;
if(m_ctf) tryflagdrop(NULL);
s_strncpy(player1->team, team_string(team), MAXTEAMLEN+1);
deathstate(player1);
}
void newteam(char *name)
{
if(name[0])
{
if(m_teammode)
{
if(!strcmp(name, player1->team)) return; // same team
if(!team_valid(name)) { conoutf("\f3\"%s\" is not a valid team name (try CLA or RVSF)", name); return; }
bool checkteamsize = autoteambalance && players.length() >= 1 && !m_botmode;
int freeteam = smallerteam();
if(team_valid(name))
{
int team = team_int(name);
if(checkteamsize && team != freeteam)
{
conoutf("\f3the %s team is already full", name);
return;
}
changeteam(team);
}
else changeteam(checkteamsize ? (uint)freeteam : rnd(2)); // random assignement
}
}
else conoutf("your team is: %s", player1->team);
}
void newskin(int skin) { player1->nextskin = skin; }
COMMANDN(team, newteam, ARG_1STR);
COMMANDN(name, newname, ARG_1STR);
COMMANDN(skin, newskin, ARG_1INT);
string clientpassword = "";
void abortconnect()
@@ -278,14 +217,6 @@ void addmsg(int type, const char *fmt, ...)
int lastupdate = 0, lastping = 0;
bool senditemstoserver = false; // after a map change, since server doesn't have map data
bool netmapstart() { senditemstoserver = true; return curpeer!=NULL; }
void initclientnet()
{
newname("unnamed");
changeteam(rnd(2));
}
void sendpackettoserv(int chan, ENetPacket *packet)
{
if(curpeer) enet_peer_send(curpeer, chan, packet);
+66 -65
View File
@@ -20,10 +20,6 @@ bool autoteambalance = false;
playerent *player1 = newplayerent(); // our client
vector<playerent *> players; // other clients
VARP(sensitivity, 0, 30, 10000);
VARP(sensitivityscale, 1, 10, 10000);
VARP(invmouse, 0, 0, 1);
int lastmillis = 0;
int curtime;
string clientmap;
@@ -32,7 +28,7 @@ extern int framesinmap;
char *getclientmap() { return clientmap; }
extern bool c2sinit;
extern bool c2sinit, senditemstoserver;
extern int dblend;
void setskin(playerent *pl, uint skin)
@@ -43,6 +39,67 @@ void setskin(playerent *pl, uint skin)
pl->skin = skin % (maxskin[team_int(pl->team)]+1);
}
void newname(char *name)
{
if(name[0])
{
c2sinit = false;
s_strncpy(player1->name, name, MAXNAMELEN+1);
}
else conoutf("your name is: %s", player1->name);
}
int smallerteam()
{
int teamsize[2] = {0, 0};
loopv(players) if(players[i]) teamsize[team_int(players[i]->team)]++;
teamsize[team_int(player1->team)]++;
if(teamsize[0] == teamsize[1]) return -1;
return teamsize[0] < teamsize[1] ? 0 : 1;
}
void changeteam(int team) // force team and respawn
{
c2sinit = false;
if(m_ctf) tryflagdrop(NULL);
s_strncpy(player1->team, team_string(team), MAXTEAMLEN+1);
deathstate(player1);
}
void newteam(char *name)
{
if(name[0])
{
if(m_teammode)
{
if(!strcmp(name, player1->team)) return; // same team
if(!team_valid(name)) { conoutf("\f3\"%s\" is not a valid team name (try CLA or RVSF)", name); return; }
bool checkteamsize = autoteambalance && players.length() >= 1 && !m_botmode;
int freeteam = smallerteam();
if(team_valid(name))
{
int team = team_int(name);
if(checkteamsize && team != freeteam)
{
conoutf("\f3the %s team is already full", name);
return;
}
changeteam(team);
}
else changeteam(checkteamsize ? (uint)freeteam : rnd(2)); // random assignement
}
}
else conoutf("your team is: %s", player1->team);
}
void newskin(int skin) { player1->nextskin = skin; }
COMMANDN(team, newteam, ARG_1STR);
COMMANDN(name, newname, ARG_1STR);
COMMANDN(skin, newskin, ARG_1INT);
extern void throw_nade(playerent *d, const vec &vel, bounceent *p);
void deathstate(playerent *pl)
@@ -376,64 +433,6 @@ void spawnplayer(playerent *d) // place at random spawn
d->state = CS_ALIVE;
}
// movement input code
#define dir(name,v,d,s,os) void name(bool isdown) { player1->s = isdown; player1->v = isdown ? d : (player1->os ? -(d) : 0); player1->lastmove = lastmillis; }
dir(backward, move, -1, k_down, k_up);
dir(forward, move, 1, k_up, k_down);
dir(left, strafe, 1, k_left, k_right);
dir(right, strafe, -1, k_right, k_left);
void attack(bool on)
{
if(intermission) return;
if(editmode) editdrag(on);
else if(player1->state==CS_DEAD) respawn();
else player1->attacking = on;
}
void jumpn(bool on)
{
if(intermission) return;
if(player1->state==CS_DEAD)
{
if(on) respawn();
}
else player1->jumpnext = on;
}
COMMAND(backward, ARG_DOWN);
COMMAND(forward, ARG_DOWN);
COMMAND(left, ARG_DOWN);
COMMAND(right, ARG_DOWN);
COMMANDN(jump, jumpn, ARG_DOWN);
COMMAND(attack, ARG_DOWN);
COMMAND(showscores, ARG_DOWN);
void fixcamerarange(physent *cam)
{
const float MAXPITCH = 90.0f;
if(cam->pitch>MAXPITCH) cam->pitch = MAXPITCH;
if(cam->pitch<-MAXPITCH) cam->pitch = -MAXPITCH;
while(cam->yaw<0.0f) cam->yaw += 360.0f;
while(cam->yaw>=360.0f) cam->yaw -= 360.0f;
}
void mousemove(int dx, int dy)
{
if(intermission) return;
const float SENSF = 33.0f; // try match quake sens
camera1->yaw += (dx/SENSF)*(sensitivity/(float)sensitivityscale);
camera1->pitch -= (dy/SENSF)*(sensitivity/(float)sensitivityscale)*(invmouse ? -1 : 1);
fixcamerarange();
if(camera1!=player1 && player1->state!=CS_DEAD)
{
player1->yaw = camera1->yaw;
player1->pitch = camera1->pitch;
}
}
void showteamkill() { player1->lastteamkill = lastmillis; }
// damage arriving from the network, monsters, yourself, all ends up here.
@@ -547,7 +546,8 @@ playerent *getclient(int cn) // ensure valid entity
void initclient()
{
clientmap[0] = 0;
initclientnet();
newname("unnamed");
changeteam(rnd(2));
}
entity flagdummies[2]; // in case the map does not provide flags
@@ -582,7 +582,7 @@ void startmap(char *name) // called just after a map load
{
clearminimap();
//if(netmapstart()) { gamemode = 0;} //needs fixed to switch modes?
netmapstart(); //should work
senditemstoserver = true;
//monsterclear();
// Added by Rick
kickallbots();
@@ -727,3 +727,4 @@ void showmastermenu(int m) // 0=kick, 1=ban
COMMAND(showmastermenu, ARG_1INT);
-58
View File
@@ -72,64 +72,6 @@ void screenshot(char *imagepath)
COMMAND(screenshot, ARG_NONE);
COMMAND(quit, ARG_NONE);
static void bar(float bar, int w, int o, float r, float g, float b)
{
int side = 50;
glColor3f(r, g, b);
glVertex2f(side, o*FONTH);
glVertex2f(bar*(w*3-2*side)+side, o*FONTH);
glVertex2f(bar*(w*3-2*side)+side, (o+2)*FONTH);
glVertex2f(side, (o+2)*FONTH);
}
void show_out_of_renderloop_progress(float bar1, const char *text1, float bar2, const char *text2) // also used during loading
{
c2skeepalive();
int w = scr_w, h = scr_h;
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, w*3, h*3, 0, -1, 1);
glBegin(GL_QUADS);
if(text1)
{
bar(1, w, 1, 0.1f, 0.1f, 0.1f);
bar(bar1, w, 1, 0.2f, 0.2f, 0.2f);
}
if(bar2>0)
{
bar(1, w, 3, 0.1f, 0.1f, 0.1f);
bar(bar2, w, 3, 0.2f, 0.2f, 0.2f);
}
glEnd();
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
if(text1) draw_text(text1, 70, 1*FONTH + FONTH/2);
if(bar2>0) draw_text(text2, 70, 3*FONTH + FONTH/2);
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
SDL_GL_SwapBuffers();
}
SDL_Surface *screen = NULL;
extern void setfullscreen(bool enable);
+61
View File
@@ -435,3 +435,64 @@ void addgib(playerent *d)
}
}
// movement input code
#define dir(name,v,d,s,os) void name(bool isdown) { player1->s = isdown; player1->v = isdown ? d : (player1->os ? -(d) : 0); player1->lastmove = lastmillis; }
dir(backward, move, -1, k_down, k_up);
dir(forward, move, 1, k_up, k_down);
dir(left, strafe, 1, k_left, k_right);
dir(right, strafe, -1, k_right, k_left);
void attack(bool on)
{
if(intermission) return;
if(editmode) editdrag(on);
else if(player1->state==CS_DEAD) respawn();
else player1->attacking = on;
}
void jumpn(bool on)
{
if(intermission) return;
if(player1->state==CS_DEAD)
{
if(on) respawn();
}
else player1->jumpnext = on;
}
COMMAND(backward, ARG_DOWN);
COMMAND(forward, ARG_DOWN);
COMMAND(left, ARG_DOWN);
COMMAND(right, ARG_DOWN);
COMMANDN(jump, jumpn, ARG_DOWN);
COMMAND(attack, ARG_DOWN);
void fixcamerarange(physent *cam)
{
const float MAXPITCH = 90.0f;
if(cam->pitch>MAXPITCH) cam->pitch = MAXPITCH;
if(cam->pitch<-MAXPITCH) cam->pitch = -MAXPITCH;
while(cam->yaw<0.0f) cam->yaw += 360.0f;
while(cam->yaw>=360.0f) cam->yaw -= 360.0f;
}
VARP(sensitivity, 0, 30, 10000);
VARP(sensitivityscale, 1, 10, 10000);
VARP(invmouse, 0, 0, 1);
void mousemove(int dx, int dy)
{
if(intermission) return;
const float SENSF = 33.0f; // try match quake sens
camera1->yaw += (dx/SENSF)*(sensitivity/(float)sensitivityscale);
camera1->pitch -= (dy/SENSF)*(sensitivity/(float)sensitivityscale)*(invmouse ? -1 : 1);
fixcamerarange();
if(camera1!=player1 && player1->state!=CS_DEAD)
{
player1->yaw = camera1->yaw;
player1->pitch = camera1->pitch;
}
}
+7 -7
View File
@@ -62,9 +62,11 @@ struct Texture
};
extern Texture *crosshair;
extern void overbright(float amount);
extern void createtexture(int tnum, int w, int h, void *pixels, int clamp, bool mipmap, GLenum format);
extern Texture *textureload(const char *name, int clamp = 0);
extern int lookuptexture(int tex, int &xs, int &ys);
extern void draw_envbox(int fogdist);
// rendercubes
extern void mipstats(int a, int b, int c);
@@ -93,8 +95,6 @@ extern void gets2c();
extern void c2sinfo(playerent *d);
extern void c2skeepalive();
extern void neterr(char *s);
extern void initclientnet();
extern bool netmapstart();
extern int getclientnum();
extern void changemapserv(char *name, int mode);
extern void changeteam(int team);
@@ -104,7 +104,6 @@ extern bool sendpwd;
// clientgame
extern flaginfo flaginfos[2];
extern bool autoteambalance;
extern void mousemove(int dx, int dy);
extern void updateworld(int curtime, int lastmillis);
extern void startmap(char *name);
extern void changemap(char *name);
@@ -121,7 +120,6 @@ extern void zapplayer(playerent *&d);
extern playerent *getclient(int cn);
extern playerent *newclient(int cn);
extern void timeupdate(int timeremain);
extern void fixcamerarange(physent *cam = camera1);
extern void respawnself();
extern void setskin(playerent *pl, uint skin);
//game mode extras
@@ -173,7 +171,6 @@ extern int isoccluded(float vx, float vy, float cx, float cy, float csize);
// main
extern void fatal(char *s, char *o = "");
extern void keyrepeat(bool on);
extern void show_out_of_renderloop_progress(float bar1, const char *text1, float bar2 = 0, const char *text2 = NULL);
// rendertext
extern void draw_text(const char *str, int left, int top);
@@ -181,7 +178,6 @@ extern void draw_textf(const char *fstr, int left, int top, ...);
extern int char_width(int c, int x = 0);
extern int text_width(const char *str, int limit = -1);
extern int text_visible(const char *str, int max);
extern void draw_envbox(int fogdist);
extern void text_startcolumns();
extern void text_endcolumns();
@@ -201,8 +197,8 @@ extern void pruneundos(int maxremain = 0);
// renderhud
extern void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwater);
extern void damageblend(int n);
extern bool scoped;
extern void loadingscreen();
extern void show_out_of_renderloop_progress(float bar1, const char *text1, float bar2 = 0, const char *text2 = NULL);
// renderparticles
extern void particleinit();
@@ -237,6 +233,8 @@ extern bounceent *newbounceent();
extern void mbounceents();
extern void clearbounceents();
extern void addgib(playerent *d);
extern void mousemove(int dx, int dy);
extern void fixcamerarange(physent *cam = camera1);
// sound
extern void playsound(int n, vec *loc = 0);
@@ -286,6 +284,8 @@ extern void servermsinit(const char *master, char *sdesc, bool listen);
extern bool serverpickup(uint i, int sec, int sender);
// weapon
extern bool scoped;
extern void shoot(playerent *d, vec &to);
extern void shootv(int gun, vec &from, vec &to, playerent *d = 0, bool local = false, int nademillis=0);
extern void createrays(vec &from, vec &to);
-2
View File
@@ -49,8 +49,6 @@ void cleangl()
{
}
void overbright(float amount) { if(hasoverbright) glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, amount ); }
void line(int x1, int y1, float z1, int x2, int y2, float z2)
{
glBegin(GL_POLYGON);
+56
View File
@@ -367,3 +367,59 @@ void loadingscreen()
glEnable(GL_DEPTH_TEST);
}
static void bar(float bar, int o, float r, float g, float b)
{
int side = 50;
glColor3f(r, g, b);
glVertex2f(side, o*FONTH);
glVertex2f(bar*(VIRTW-2*side)+side, o*FONTH);
glVertex2f(bar*(VIRTW-2*side)+side, (o+2)*FONTH);
glVertex2f(side, (o+2)*FONTH);
}
void show_out_of_renderloop_progress(float bar1, const char *text1, float bar2, const char *text2) // also used during loading
{
c2skeepalive();
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, VIRTW, VIRTH, 0, -1, 1);
glBegin(GL_QUADS);
if(text1)
{
bar(1, 1, 0.1f, 0.1f, 0.1f);
bar(bar1, 1, 0.2f, 0.2f, 0.2f);
}
if(bar2>0)
{
bar(1, 3, 0.1f, 0.1f, 0.1f);
bar(bar2, 3, 0.2f, 0.2f, 0.2f);
}
glEnd();
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
if(text1) draw_text(text1, 70, 1*FONTH + FONTH/2);
if(bar2>0) draw_text(text2, 70, 3*FONTH + FONTH/2);
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
SDL_GL_SwapBuffers();
}
+1 -72
View File
@@ -1,4 +1,4 @@
// rendertext.cpp: based on Don's gl_text.cpp
// rendertext.cpp: font rendering
#include "cube.h"
@@ -241,74 +241,3 @@ void draw_text(const char *str, int left, int top)
}
}
// also Don's code, so goes in here too :)
static Texture *sky[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
void loadsky(char *basename)
{
char *side[] = { "ft", "bk", "lf", "rt", "dn", "up" };
loopi(6)
{
s_sprintfd(name)("packages/%s_%s.jpg", basename, side[i]);
sky[i] = textureload(name, 3);
if(!sky[i]) conoutf("could not load sky texture: %s", name);
}
}
COMMAND(loadsky, ARG_1STR);
void draw_envbox_aux(float s0, float t0, int x0, int y0, int z0,
float s1, float t1, int x1, int y1, int z1,
float s2, float t2, int x2, int y2, int z2,
float s3, float t3, int x3, int y3, int z3,
Texture *tex)
{
glBindTexture(GL_TEXTURE_2D, tex->id);
glBegin(GL_QUADS);
glTexCoord2f(s3, t3); glVertex3i(x3, y3, z3);
glTexCoord2f(s2, t2); glVertex3i(x2, y2, z2);
glTexCoord2f(s1, t1); glVertex3i(x1, y1, z1);
glTexCoord2f(s0, t0); glVertex3i(x0, y0, z0);
glEnd();
xtraverts += 4;
}
void draw_envbox(int w)
{
if(!sky[0]) return;
glDepthMask(GL_FALSE);
draw_envbox_aux(1.0f, 1.0f, -w, -w, w,
0.0f, 1.0f, w, -w, w,
0.0f, 0.0f, w, -w, -w,
1.0f, 0.0f, -w, -w, -w, sky[0]);
draw_envbox_aux(1.0f, 1.0f, +w, w, w,
0.0f, 1.0f, -w, w, w,
0.0f, 0.0f, -w, w, -w,
1.0f, 0.0f, +w, w, -w, sky[1]);
draw_envbox_aux(0.0f, 0.0f, -w, -w, -w,
1.0f, 0.0f, -w, w, -w,
1.0f, 1.0f, -w, w, w,
0.0f, 1.0f, -w, -w, w, sky[2]);
draw_envbox_aux(1.0f, 1.0f, +w, -w, w,
0.0f, 1.0f, +w, w, w,
0.0f, 0.0f, +w, w, -w,
1.0f, 0.0f, +w, -w, -w, sky[3]);
draw_envbox_aux(0.0f, 1.0f, -w, w, w,
0.0f, 0.0f, +w, w, w,
1.0f, 0.0f, +w, -w, w,
1.0f, 1.0f, -w, -w, w, sky[4]);
draw_envbox_aux(0.0f, 1.0f, +w, w, -w,
0.0f, 0.0f, -w, w, -w,
1.0f, 0.0f, -w, -w, -w,
1.0f, 1.0f, +w, -w, -w, sky[5]);
glDepthMask(GL_TRUE);
}
+2
View File
@@ -9,6 +9,8 @@ void showscores(bool on)
menuset(on ? (m_ctf ? ctfmenu : (m_teammode ? teammenu : scoremenu)) : NULL);
}
COMMAND(showscores, ARG_DOWN);
struct sline { string s; };
vector<sline> scorelines;
+72
View File
@@ -5,6 +5,8 @@
Texture *crosshair = NULL;
hashtable<char *, Texture> textures;
void overbright(float amount) { if(hasoverbright) glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, amount ); }
void createtexture(int tnum, int w, int h, void *pixels, int clamp, bool mipmap, GLenum format)
{
glBindTexture(GL_TEXTURE_2D, tnum);
@@ -118,3 +120,73 @@ int lookuptexture(int tex, int &xs, int &ys)
return t->id;
}
static Texture *sky[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
void loadsky(char *basename)
{
char *side[] = { "ft", "bk", "lf", "rt", "dn", "up" };
loopi(6)
{
s_sprintfd(name)("packages/%s_%s.jpg", basename, side[i]);
sky[i] = textureload(name, 3);
if(!sky[i]) conoutf("could not load sky texture: %s", name);
}
}
COMMAND(loadsky, ARG_1STR);
void draw_envbox_face(float s0, float t0, int x0, int y0, int z0,
float s1, float t1, int x1, int y1, int z1,
float s2, float t2, int x2, int y2, int z2,
float s3, float t3, int x3, int y3, int z3,
Texture *tex)
{
glBindTexture(GL_TEXTURE_2D, tex->id);
glBegin(GL_QUADS);
glTexCoord2f(s3, t3); glVertex3i(x3, y3, z3);
glTexCoord2f(s2, t2); glVertex3i(x2, y2, z2);
glTexCoord2f(s1, t1); glVertex3i(x1, y1, z1);
glTexCoord2f(s0, t0); glVertex3i(x0, y0, z0);
glEnd();
xtraverts += 4;
}
void draw_envbox(int w)
{
if(!sky[0]) return;
glDepthMask(GL_FALSE);
draw_envbox_face(1.0f, 1.0f, -w, -w, w,
0.0f, 1.0f, w, -w, w,
0.0f, 0.0f, w, -w, -w,
1.0f, 0.0f, -w, -w, -w, sky[0]);
draw_envbox_face(1.0f, 1.0f, +w, w, w,
0.0f, 1.0f, -w, w, w,
0.0f, 0.0f, -w, w, -w,
1.0f, 0.0f, +w, w, -w, sky[1]);
draw_envbox_face(0.0f, 0.0f, -w, -w, -w,
1.0f, 0.0f, -w, w, -w,
1.0f, 1.0f, -w, w, w,
0.0f, 1.0f, -w, -w, w, sky[2]);
draw_envbox_face(1.0f, 1.0f, +w, -w, w,
0.0f, 1.0f, +w, w, w,
0.0f, 0.0f, +w, w, -w,
1.0f, 0.0f, +w, -w, -w, sky[3]);
draw_envbox_face(0.0f, 1.0f, -w, w, w,
0.0f, 0.0f, +w, w, w,
1.0f, 0.0f, +w, -w, w,
1.0f, 1.0f, -w, -w, w, sky[4]);
draw_envbox_face(0.0f, 1.0f, +w, w, -w,
0.0f, 0.0f, -w, w, -w,
1.0f, 0.0f, -w, -w, -w,
1.0f, 1.0f, +w, -w, -w, sky[5]);
glDepthMask(GL_TRUE);
}