r4801 - in trunk/data: models/sprites qcsrc/client qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Oct 22 03:34:09 EDT 2008
Author: div0
Date: 2008-10-22 03:34:05 -0400 (Wed, 22 Oct 2008)
New Revision: 4801
Added:
trunk/data/models/sprites/ons-cp-atck-blue_frame0.tga
trunk/data/models/sprites/ons-cp-atck-blue_frame1.tga
trunk/data/models/sprites/ons-cp-atck-neut_frame0.tga
trunk/data/models/sprites/ons-cp-atck-neut_frame1.tga
trunk/data/models/sprites/ons-cp-atck-red_frame0.tga
trunk/data/models/sprites/ons-cp-atck-red_frame1.tga
trunk/data/models/sprites/ons-cp-dfnd-blue_frame0.tga
trunk/data/models/sprites/ons-cp-dfnd-blue_frame1.tga
trunk/data/models/sprites/ons-cp-dfnd-red_frame0.tga
trunk/data/models/sprites/ons-cp-dfnd-red_frame1.tga
Removed:
trunk/data/models/sprites/ons-cp-atck-blue.tga
trunk/data/models/sprites/ons-cp-atck-neut.tga
trunk/data/models/sprites/ons-cp-atck-red.tga
trunk/data/models/sprites/ons-cp-dfnd-blue.tga
trunk/data/models/sprites/ons-cp-dfnd-red.tga
Modified:
trunk/data/qcsrc/client/Defs.qc
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/client/waypointsprites.qc
trunk/data/qcsrc/server/keyhunt.qc
trunk/data/qcsrc/server/mode_onslaught.qc
trunk/data/qcsrc/server/waypointsprites.qc
Log:
onslaught sprite code is back, now using csqc. no radar support yet, but that will be easy.
Deleted: trunk/data/models/sprites/ons-cp-atck-blue.tga
===================================================================
(Binary files differ)
Added: trunk/data/models/sprites/ons-cp-atck-blue_frame0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-blue_frame0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/models/sprites/ons-cp-atck-blue_frame1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-blue_frame1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: trunk/data/models/sprites/ons-cp-atck-neut.tga
===================================================================
(Binary files differ)
Added: trunk/data/models/sprites/ons-cp-atck-neut_frame0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-neut_frame0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/models/sprites/ons-cp-atck-neut_frame1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-neut_frame1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: trunk/data/models/sprites/ons-cp-atck-red.tga
===================================================================
(Binary files differ)
Added: trunk/data/models/sprites/ons-cp-atck-red_frame0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-red_frame0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/models/sprites/ons-cp-atck-red_frame1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-atck-red_frame1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: trunk/data/models/sprites/ons-cp-dfnd-blue.tga
===================================================================
(Binary files differ)
Added: trunk/data/models/sprites/ons-cp-dfnd-blue_frame0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-dfnd-blue_frame0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/models/sprites/ons-cp-dfnd-blue_frame1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-dfnd-blue_frame1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: trunk/data/models/sprites/ons-cp-dfnd-red.tga
===================================================================
(Binary files differ)
Added: trunk/data/models/sprites/ons-cp-dfnd-red_frame0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-dfnd-red_frame0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/models/sprites/ons-cp-dfnd-red_frame1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/models/sprites/ons-cp-dfnd-red_frame1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/data/qcsrc/client/Defs.qc
===================================================================
--- trunk/data/qcsrc/client/Defs.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/client/Defs.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -205,3 +205,6 @@
// short mapname
string shortmapname;
+
+// database for misc stuff
+float tempdb;
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/client/Main.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -73,6 +73,7 @@
configdb = db_create();
binddb = db_create();
+ tempdb = db_create();
compressShortVector_init();
drawfont = 0;
@@ -146,6 +147,7 @@
remove(players);
db_close(configdb);
db_close(binddb);
+ db_close(tempdb);
cvar_clientsettemp_restore();
}
Modified: trunk/data/qcsrc/client/waypointsprites.qc
===================================================================
--- trunk/data/qcsrc/client/waypointsprites.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/client/waypointsprites.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -11,6 +11,7 @@
return vec;
}
+float waypointsprite_initialized;
float waypointsprite_fadedistance;
float waypointsprite_normdistance;
float waypointsprite_minscale;
@@ -101,7 +102,9 @@
spriteimage = self.netname;
break;
case SPRITERULE_TEAMPLAY:
- if(self.team == t)
+ if(t == COLOR_SPECTATOR + 1)
+ spriteimage = self.netname3;
+ else if(self.team == t)
spriteimage = self.netname2;
else
spriteimage = self.netname;
@@ -181,7 +184,14 @@
float vidscale;
vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
- drawrotpic(o, rot * 90 * DEG2RAD, strcat("models/sprites/", spriteimage), SPRITE_SIZE * waypointsprite_scale * vidscale, SPRITE_HOTSPOT * waypointsprite_scale * vidscale, '1 1 1', a, 0);
+
+ t = stof(db_get(tempdb, strcat("/spriteframes/", spriteimage)));
+ if(t == 0)
+ spriteimage = strcat("models/sprites/", spriteimage);
+ else
+ spriteimage = strcat("models/sprites/", spriteimage, "_frame", ftos(mod(floor(time * 2), t)));
+
+ drawrotpic(o, rot * 90 * DEG2RAD, spriteimage, SPRITE_SIZE * waypointsprite_scale * vidscale, SPRITE_HOTSPOT * waypointsprite_scale * vidscale, '1 1 1', a, DRAWFLAG_MIPMAP);
}
void Ent_WaypointSprite()
@@ -268,4 +278,29 @@
waypointsprite_scale = cvar("g_waypointsprite_scale");
if(!waypointsprite_scale)
waypointsprite_scale = 1.0;
+
+ if(!waypointsprite_initialized)
+ {
+ float dh, n, i, o, f;
+ string s, sname, sframes;
+ dh = search_begin("models/sprites/*_frame*.tga", FALSE, FALSE);
+ n = search_getsize(dh);
+ for(i = 0; i < n; ++i)
+ {
+ s = search_getfilename(dh, i);
+ if(substring(s, 0, 15) != "models/sprites/")
+ continue;
+ if(substring(s, strlen(s) - 4, 4) != ".tga")
+ continue;
+ s = substring(s, 15, strlen(s) - 19);
+
+ o = strstrofs(s, "_frame", 0);
+ sname = strcat("/spriteframes/", substring(s, 0, o));
+ sframes = substring(s, o + 6, strlen(s) - o - 6);
+ f = stof(sframes) + 1;
+ db_put(tempdb, sname, ftos(max(f, stof(db_get(tempdb, sname)))));
+ }
+ search_end(dh);
+ }
+ waypointsprite_initialized = 1;
}
Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/server/keyhunt.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -307,13 +307,13 @@
player.waypointsprite_attachedforcarrier.waypointsprite_visible_for_player = kh_KeyCarrier_waypointsprite_visible_for_player;
WaypointSprite_UpdateRule(player.waypointsprite_attachedforcarrier, player.team, SPRITERULE_TEAMPLAY);
if(player.team == COLOR_TEAM1)
- WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-red", "keycarrier-friend", "");
+ WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-red", "keycarrier-friend", "keycarrier-red");
else if(player.team == COLOR_TEAM2)
- WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-blue", "keycarrier-friend", "");
+ WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-blue", "keycarrier-friend", "keycarrier-blue");
else if(player.team == COLOR_TEAM3)
- WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-yellow", "keycarrier-friend", "");
+ WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-yellow", "keycarrier-friend", "keycarrier-yellow");
else if(player.team == COLOR_TEAM4)
- WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-pink", "keycarrier-friend", "");
+ WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-pink", "keycarrier-friend", "keycarrier-pink");
WaypointSprite_UpdateTeamRadar(player.waypointsprite_attachedforcarrier, RADARICON_FLAGCARRIER, colormapPaletteColor(player.team - 1, 0));
if(!kh_no_radar_circles)
WaypointSprite_Ping(player.waypointsprite_attachedforcarrier);
@@ -339,7 +339,7 @@
FOR_EACH_KH_KEY(k)
{
if(k.owner)
- WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-finish", "");
+ WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-finish", k.owner.waypointsprite_attachedforcarrier.model);
}
}
else
@@ -350,7 +350,7 @@
FOR_EACH_KH_KEY(k)
{
if(k.owner)
- WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-friend", "");
+ WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-friend", k.owner.waypointsprite_attachedforcarrier.model);
}
}
}
Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/server/mode_onslaught.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -1,3 +1,6 @@
+void onslaught_generator_updatesprite(entity e);
+void onslaught_controlpoint_updatesprite(entity e);
+
.entity sprite;
.string target2;
.float iscaptured;
@@ -9,13 +12,6 @@
.float isshielded;
.float lasthealth;
-#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
-float ons_sprite_cp_red, ons_sprite_cp_blue, ons_sprite_cp_neut;
-float ons_sprite_cp_atck_red, ons_sprite_cp_atck_blue, ons_sprite_cp_atck_neut;
-float ons_sprite_cp_dfnd_red, ons_sprite_cp_dfnd_blue;
-float ons_sprite_gen_red, ons_sprite_gen_blue, ons_sprite_gen_shielded;
-#endif
-
void onslaught_updatelinks()
{
local entity l, links;
@@ -176,6 +172,7 @@
l.goalentity.bot_attack = TRUE;
}
}
+ onslaught_controlpoint_updatesprite(l);
l = l.chain;
}
// count generators owned by each team
@@ -190,6 +187,7 @@
if (l.team == COLOR_TEAM3) t3 = 1;
if (l.team == COLOR_TEAM4) t4 = 1;
}
+ onslaught_generator_updatesprite(l);
l = l.chain;
}
// see if multiple teams remain (if not, it's game over)
@@ -424,71 +422,86 @@
self.nextthink = time;
};
-#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
-float onslaught_generator_waypointsprite_for_player(entity e)
+string onslaught_generator_waypointsprite_for_team(entity e, float t)
{
- if(e.classname == "player")
- if(e.team == self.owner.team)
- {
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_gen_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_gen_blue;
- }
- if(self.owner.isshielded)
- return ons_sprite_gen_shielded;
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_gen_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_gen_blue;
- return 0;
+ if(t == e.team)
+ {
+ if(e.team == COLOR_TEAM1)
+ return "ons-gen-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-gen-blue";
+ }
+ if(e.isshielded)
+ return "ons-gen-shielded";
+ if(e.team == COLOR_TEAM1)
+ return "ons-gen-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-gen-blue";
+ return "";
}
-float onslaught_controlpoint_waypointsprite_for_player(entity e)
+void onslaught_generator_updatesprite(entity e)
{
+ string s1, s2, s3;
+ s1 = onslaught_generator_waypointsprite_for_team(e, COLOR_TEAM1);
+ s2 = onslaught_generator_waypointsprite_for_team(e, COLOR_TEAM2);
+ s3 = onslaught_generator_waypointsprite_for_team(e, -1);
+ WaypointSprite_UpdateSprites(e.sprite, s1, s2, s3);
+}
+
+string onslaught_controlpoint_waypointsprite_for_team(entity e, float t)
+{
float a;
- if(e.classname == "player")
+ if(t != -1)
{
- a = onslaught_controlpoint_attackable(self.owner, e.team);
+ a = onslaught_controlpoint_attackable(e, t);
if(a == 3 || a == 4) // ATTACK/TOUCH THIS ONE NOW
{
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_cp_atck_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_cp_atck_blue;
+ if(e.team == COLOR_TEAM1)
+ return "ons-cp-atck-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-cp-atck-blue";
else
- return ons_sprite_cp_atck_neut;
+ return "ons-cp-atck-neut";
}
else if(a == -2) // DEFEND THIS ONE NOW
{
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_cp_dfnd_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_cp_dfnd_blue;
+ if(e.team == COLOR_TEAM1)
+ return "ons-cp-dfnd-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-cp-dfnd-blue";
}
- else if(self.owner.team == e.team || a == -1 || a == 1) // own point, or fire at it
+ else if(e.team == t || a == -1 || a == 1) // own point, or fire at it
{
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_cp_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_cp_blue;
+ if(e.team == COLOR_TEAM1)
+ return "ons-cp-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-cp-blue";
}
else if(a == 2) // touch it
- return ons_sprite_cp_neut;
+ return "ons-cp-neut";
}
else
{
- if(self.owner.team == COLOR_TEAM1)
- return ons_sprite_cp_red;
- else if(self.owner.team == COLOR_TEAM2)
- return ons_sprite_cp_blue;
+ if(e.team == COLOR_TEAM1)
+ return "ons-cp-red";
+ else if(e.team == COLOR_TEAM2)
+ return "ons-cp-blue";
else
- return ons_sprite_cp_neut;
+ return "ons-cp-neut";
}
- return 0;
+ return "";
}
-#endif
+void onslaught_controlpoint_updatesprite(entity e)
+{
+ string s1, s2, s3;
+ s1 = onslaught_controlpoint_waypointsprite_for_team(e, COLOR_TEAM1);
+ s2 = onslaught_controlpoint_waypointsprite_for_team(e, COLOR_TEAM2);
+ s3 = onslaught_controlpoint_waypointsprite_for_team(e, -1);
+ WaypointSprite_UpdateSprites(e.sprite, s1, s2, s3);
+}
+
/*QUAKED spawnfunc_onslaught_generator (0 .5 .8) (-32 -32 -24) (32 32 64)
Base generator.
@@ -506,45 +519,6 @@
return;
}
-#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
- if(!ons_sprite_cp_blue)
- {
- precache_model("models/sprites/ons-cp-blue.sp2");
- setmodel(self, "models/sprites/ons-cp-blue.sp2");
- ons_sprite_cp_blue = self.modelindex;
- precache_model("models/sprites/ons-cp-red.sp2");
- setmodel(self, "models/sprites/ons-cp-red.sp2");
- ons_sprite_cp_red = self.modelindex;
- precache_model("models/sprites/ons-cp-neut.sp2");
- setmodel(self, "models/sprites/ons-cp-neut.sp2");
- ons_sprite_cp_neut = self.modelindex;
- precache_model("models/sprites/ons-cp-dfnd-blue.sp2");
- setmodel(self, "models/sprites/ons-cp-dfnd-blue.sp2");
- ons_sprite_cp_dfnd_blue = self.modelindex;
- precache_model("models/sprites/ons-cp-dfnd-red.sp2");
- setmodel(self, "models/sprites/ons-cp-dfnd-red.sp2");
- ons_sprite_cp_dfnd_red = self.modelindex;
- precache_model("models/sprites/ons-cp-atck-blue.sp2");
- setmodel(self, "models/sprites/ons-cp-atck-blue.sp2");
- ons_sprite_cp_atck_blue = self.modelindex;
- precache_model("models/sprites/ons-cp-atck-red.sp2");
- setmodel(self, "models/sprites/ons-cp-atck-red.sp2");
- ons_sprite_cp_atck_red = self.modelindex;
- precache_model("models/sprites/ons-cp-atck-neut.sp2");
- setmodel(self, "models/sprites/ons-cp-atck-neut.sp2");
- ons_sprite_cp_atck_neut = self.modelindex;
- precache_model("models/sprites/ons-gen-blue.sp2");
- setmodel(self, "models/sprites/ons-gen-blue.sp2");
- ons_sprite_gen_blue = self.modelindex;
- precache_model("models/sprites/ons-gen-red.sp2");
- setmodel(self, "models/sprites/ons-gen-red.sp2");
- ons_sprite_gen_red = self.modelindex;
- precache_model("models/sprites/ons-gen-shielded.sp2");
- setmodel(self, "models/sprites/ons-gen-shielded.sp2");
- ons_sprite_gen_shielded = self.modelindex;
- }
-#endif
-
local entity e;
precache_model("models/onslaught/generator.md3");
precache_model("models/onslaught/generator_shield.md3");
@@ -581,10 +555,9 @@
self.think = onslaught_generator_delayed;
self.nextthink = time + 0.2;
-#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
WaypointSprite_SpawnFixed(string_null, e.origin + '0 0 1' * e.maxs_z, self, sprite);
- self.sprite.waypointsprite_for_player = onslaught_generator_waypointsprite_for_player;
-#endif
+ WaypointSprite_UpdateRule(self.sprite, COLOR_TEAM2, SPRITERULE_TEAMPLAY);
+ onslaught_generator_updatesprite(self);
};
void onslaught_generator_reset()
@@ -782,10 +755,9 @@
waypoint_spawnforitem(self);
-#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
WaypointSprite_SpawnFixed(string_null, e.origin + '0 0 1' * e.maxs_z, self, sprite);
- self.sprite.waypointsprite_for_player = onslaught_controlpoint_waypointsprite_for_player;
-#endif
+ WaypointSprite_UpdateRule(self.sprite, COLOR_TEAM2, SPRITERULE_TEAMPLAY);
+ onslaught_controlpoint_updatesprite(self);
};
void onslaught_controlpoint_reset()
Modified: trunk/data/qcsrc/server/waypointsprites.qc
===================================================================
--- trunk/data/qcsrc/server/waypointsprites.qc 2008-10-22 06:16:35 UTC (rev 4800)
+++ trunk/data/qcsrc/server/waypointsprites.qc 2008-10-22 07:34:05 UTC (rev 4801)
@@ -1,5 +1,6 @@
..entity owned_by_field;
.float rule;
+.string model1;
.string model2;
.string model3;
@@ -7,9 +8,9 @@
void WaypointSprite_UpdateSprites(entity e, string m1, string m2, string m3)
{
- if(m1 != e.model)
+ if(m1 != e.model1)
{
- e.model = m1;
+ e.model1 = m1;
e.SendFlags |= 2;
}
if(m2 != e.model2)
@@ -175,7 +176,7 @@
}
if(sendflags & 2)
- WriteString(MSG_ENTITY, self.model);
+ WriteString(MSG_ENTITY, self.model1);
if(sendflags & 4)
WriteString(MSG_ENTITY, self.model2);
@@ -242,7 +243,8 @@
wp.think = WaypointSprite_Think;
wp.nextthink = time;
wp.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
- wp.model = spr;
+ wp.model1 = spr;
+ wp.model = "net_entity";
wp.modelindex = 1;
wp.SendEntity = WaypointSprite_SendEntity;
wp.customizeentityforclient = WaypointSprite_Customize;
More information about the nexuiz-commits
mailing list