📄 cl_tent.java
字号:
} }; s[i].thinkinterval = 1; s[i].nextthink = Globals.cl.time; } else // no free sustains { // FIXME - read the stuff anyway MSG.ReadPos(Globals.net_message, pos); } } // stack variable // pos static void ParseNuke() { int i; cl_sustain_t[] s; cl_sustain_t free_sustain; free_sustain = null; s = cl_sustains; for (i = 0; i < MAX_SUSTAINS; i++) { if (s[i].id == 0) { free_sustain = s[i]; break; } } if (free_sustain != null) { s[i].id = 21000; MSG.ReadPos(Globals.net_message, s[i].org); s[i].endtime = Globals.cl.time + 1000; s[i].think = new cl_sustain_t.ThinkAdapter() { void think(cl_sustain_t self) { CL_newfx.Nukeblast(self); } }; s[i].thinkinterval = 1; s[i].nextthink = Globals.cl.time; } else // no free sustains { // FIXME - read the stuff anyway MSG.ReadPos(Globals.net_message, pos); } } // ROGUE // ============= /* * ================= CL_ParseTEnt ================= */ static int[] splash_color = { 0x00, 0xe0, 0xb0, 0x50, 0xd0, 0xe0, 0xe8 }; // stack variable // pos, dir private static final float[] pos2 = {0, 0, 0}; static void ParseTEnt() { int type; explosion_t ex; int cnt; int color; int r; int ent; int magnitude; type = MSG.ReadByte(Globals.net_message); switch (type) { case Defines.TE_BLOOD: // bullet hitting flesh MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); CL_fx.ParticleEffect(pos, dir, 0xe8, 60); break; case Defines.TE_GUNSHOT: // bullet hitting wall case Defines.TE_SPARKS: case Defines.TE_BULLET_SPARKS: MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); if (type == Defines.TE_GUNSHOT) CL_fx.ParticleEffect(pos, dir, 0, 40); else CL_fx.ParticleEffect(pos, dir, 0xe0, 6); if (type != Defines.TE_SPARKS) { SmokeAndFlash(pos); // impact sound cnt = Lib.rand() & 15; if (cnt == 1) S.StartSound(pos, 0, 0, cl_sfx_ric1, 1, Defines.ATTN_NORM, 0); else if (cnt == 2) S.StartSound(pos, 0, 0, cl_sfx_ric2, 1, Defines.ATTN_NORM, 0); else if (cnt == 3) S.StartSound(pos, 0, 0, cl_sfx_ric3, 1, Defines.ATTN_NORM, 0); } break; case Defines.TE_SCREEN_SPARKS: case Defines.TE_SHIELD_SPARKS: MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); if (type == Defines.TE_SCREEN_SPARKS) CL_fx.ParticleEffect(pos, dir, 0xd0, 40); else CL_fx.ParticleEffect(pos, dir, 0xb0, 40); //FIXME : replace or remove this sound S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0); break; case Defines.TE_SHOTGUN: // bullet hitting wall MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); CL_fx.ParticleEffect(pos, dir, 0, 20); SmokeAndFlash(pos); break; case Defines.TE_SPLASH: // bullet hitting water cnt = MSG.ReadByte(Globals.net_message); MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); r = MSG.ReadByte(Globals.net_message); if (r > 6) color = 0x00; else color = splash_color[r]; CL_fx.ParticleEffect(pos, dir, color, cnt); if (r == Defines.SPLASH_SPARKS) { r = Lib.rand() & 3; if (r == 0) S.StartSound(pos, 0, 0, cl_sfx_spark5, 1, Defines.ATTN_STATIC, 0); else if (r == 1) S.StartSound(pos, 0, 0, cl_sfx_spark6, 1, Defines.ATTN_STATIC, 0); else S.StartSound(pos, 0, 0, cl_sfx_spark7, 1, Defines.ATTN_STATIC, 0); } break; case Defines.TE_LASER_SPARKS: cnt = MSG.ReadByte(Globals.net_message); MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); color = MSG.ReadByte(Globals.net_message); CL_fx.ParticleEffect2(pos, dir, color, cnt); break; // RAFAEL case Defines.TE_BLUEHYPERBLASTER: MSG.ReadPos(Globals.net_message, pos); MSG.ReadPos(Globals.net_message, dir); CL_fx.BlasterParticles(pos, dir); break; case Defines.TE_BLASTER: // blaster hitting wall MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); CL_fx.BlasterParticles(pos, dir); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.ent.angles[0] = (float) (Math.acos(dir[2]) / Math.PI * 180); // PMM - fixed to correct for pitch of 0 if (dir[0] != 0.0f) ex.ent.angles[1] = (float) (Math.atan2(dir[1], dir[0]) / Math.PI * 180); else if (dir[1] > 0) ex.ent.angles[1] = 90; else if (dir[1] < 0) ex.ent.angles[1] = 270; else ex.ent.angles[1] = 0; ex.type = ex_misc; ex.ent.flags = Defines.RF_FULLBRIGHT | Defines.RF_TRANSLUCENT; ex.start = Globals.cl.frame.servertime - 100; ex.light = 150; ex.lightcolor[0] = 1; ex.lightcolor[1] = 1; ex.ent.model = cl_mod_explode; ex.frames = 4; S.StartSound(pos, 0, 0, cl_sfx_lashit, 1, Defines.ATTN_NORM, 0); break; case Defines.TE_RAILTRAIL: // railgun effect MSG.ReadPos(Globals.net_message, pos); MSG.ReadPos(Globals.net_message, pos2); CL_fx.RailTrail(pos, pos2); S.StartSound(pos2, 0, 0, cl_sfx_railg, 1, Defines.ATTN_NORM, 0); break; case Defines.TE_EXPLOSION2: case Defines.TE_GRENADE_EXPLOSION: case Defines.TE_GRENADE_EXPLOSION_WATER: MSG.ReadPos(Globals.net_message, pos); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.type = ex_poly; ex.ent.flags = Defines.RF_FULLBRIGHT; ex.start = Globals.cl.frame.servertime - 100; ex.light = 350; ex.lightcolor[0] = 1.0f; ex.lightcolor[1] = 0.5f; ex.lightcolor[2] = 0.5f; ex.ent.model = cl_mod_explo4; ex.frames = 19; ex.baseframe = 30; ex.ent.angles[1] = Lib.rand() % 360; CL_fx.ExplosionParticles(pos); if (type == Defines.TE_GRENADE_EXPLOSION_WATER) S .StartSound(pos, 0, 0, cl_sfx_watrexp, 1, Defines.ATTN_NORM, 0); else S .StartSound(pos, 0, 0, cl_sfx_grenexp, 1, Defines.ATTN_NORM, 0); break; // RAFAEL case Defines.TE_PLASMA_EXPLOSION: MSG.ReadPos(Globals.net_message, pos); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.type = ex_poly; ex.ent.flags = Defines.RF_FULLBRIGHT; ex.start = Globals.cl.frame.servertime - 100; ex.light = 350; ex.lightcolor[0] = 1.0f; ex.lightcolor[1] = 0.5f; ex.lightcolor[2] = 0.5f; ex.ent.angles[1] = Lib.rand() % 360; ex.ent.model = cl_mod_explo4; if (Globals.rnd.nextFloat() < 0.5) ex.baseframe = 15; ex.frames = 15; CL_fx.ExplosionParticles(pos); S.StartSound(pos, 0, 0, cl_sfx_rockexp, 1, Defines.ATTN_NORM, 0); break; case Defines.TE_EXPLOSION1: case Defines.TE_EXPLOSION1_BIG: // PMM case Defines.TE_ROCKET_EXPLOSION: case Defines.TE_ROCKET_EXPLOSION_WATER: case Defines.TE_EXPLOSION1_NP: // PMM MSG.ReadPos(Globals.net_message, pos); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.type = ex_poly; ex.ent.flags = Defines.RF_FULLBRIGHT; ex.start = Globals.cl.frame.servertime - 100; ex.light = 350; ex.lightcolor[0] = 1.0f; ex.lightcolor[1] = 0.5f; ex.lightcolor[2] = 0.5f; ex.ent.angles[1] = Lib.rand() % 360; if (type != Defines.TE_EXPLOSION1_BIG) // PMM ex.ent.model = cl_mod_explo4; // PMM else ex.ent.model = cl_mod_explo4_big; if (Globals.rnd.nextFloat() < 0.5) ex.baseframe = 15; ex.frames = 15; if ((type != Defines.TE_EXPLOSION1_BIG) && (type != Defines.TE_EXPLOSION1_NP)) // PMM CL_fx.ExplosionParticles(pos); // PMM if (type == Defines.TE_ROCKET_EXPLOSION_WATER) S .StartSound(pos, 0, 0, cl_sfx_watrexp, 1, Defines.ATTN_NORM, 0); else S .StartSound(pos, 0, 0, cl_sfx_rockexp, 1, Defines.ATTN_NORM, 0); break; case Defines.TE_BFG_EXPLOSION: MSG.ReadPos(Globals.net_message, pos); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.type = ex_poly; ex.ent.flags = Defines.RF_FULLBRIGHT; ex.start = Globals.cl.frame.servertime - 100; ex.light = 350; ex.lightcolor[0] = 0.0f; ex.lightcolor[1] = 1.0f; ex.lightcolor[2] = 0.0f; ex.ent.model = cl_mod_bfg_explo; ex.ent.flags |= Defines.RF_TRANSLUCENT; ex.ent.alpha = 0.30f; ex.frames = 4; break; case Defines.TE_BFG_BIGEXPLOSION: MSG.ReadPos(Globals.net_message, pos); CL_fx.BFGExplosionParticles(pos); break; case Defines.TE_BFG_LASER: ParseLaser(0xd0d1d2d3); break; case Defines.TE_BUBBLETRAIL: MSG.ReadPos(Globals.net_message, pos); MSG.ReadPos(Globals.net_message, pos2); CL_fx.BubbleTrail(pos, pos2); break; case Defines.TE_PARASITE_ATTACK: case Defines.TE_MEDIC_CABLE_ATTACK: ent = ParseBeam(cl_mod_parasite_segment); break; case Defines.TE_BOSSTPORT: // boss teleporting to station MSG.ReadPos(Globals.net_message, pos); CL_fx.BigTeleportParticles(pos); S.StartSound(pos, 0, 0, S.RegisterSound("misc/bigtele.wav"), 1, Defines.ATTN_NONE, 0); break; case Defines.TE_GRAPPLE_CABLE: ent = ParseBeam2(cl_mod_grapple_cable); break; // RAFAEL case Defines.TE_WELDING_SPARKS: cnt = MSG.ReadByte(Globals.net_message); MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); color = MSG.ReadByte(Globals.net_message); CL_fx.ParticleEffect2(pos, dir, color, cnt); ex = AllocExplosion(); Math3D.VectorCopy(pos, ex.ent.origin); ex.type = ex_flash; // note to self // we need a better no draw flag ex.ent.flags = Defines.RF_BEAM; ex.start = Globals.cl.frame.servertime - 0.1f; ex.light = 100 + (Lib.rand() % 75); ex.lightcolor[0] = 1.0f; ex.lightcolor[1] = 1.0f; ex.lightcolor[2] = 0.3f; ex.ent.model = cl_mod_flash; ex.frames = 2; break; case Defines.TE_GREENBLOOD: MSG.ReadPos(Globals.net_message, pos); MSG.ReadDir(Globals.net_message, dir); CL_fx.ParticleEffect2(pos, dir, 0xdf, 30);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -