Calculates the blending color according to the players environment.
(SubgameEntity ent, GameExportsImpl gameExports)
| 424 | * Calculates the blending color according to the players environment. |
| 425 | */ |
| 426 | private static void SV_CalcBlend(SubgameEntity ent, GameExportsImpl gameExports) { |
| 427 | int contents; |
| 428 | float[] vieworg = { 0, 0, 0 }; |
| 429 | int remaining; |
| 430 | |
| 431 | gclient_t client = ent.getClient(); |
| 432 | client.getPlayerState().blend[0] = client.getPlayerState().blend[1] = client.getPlayerState().blend[2] = client.getPlayerState().blend[3] = 0; |
| 433 | |
| 434 | // add for contents |
| 435 | Math3D.VectorAdd(ent.s.origin, client.getPlayerState().viewoffset, vieworg); |
| 436 | contents = gameExports.gameImports.getPointContents(vieworg); |
| 437 | if ((contents & (Defines.CONTENTS_LAVA | Defines.CONTENTS_SLIME | Defines.CONTENTS_WATER)) != 0) |
| 438 | client.getPlayerState().rdflags |= Defines.RDF_UNDERWATER; |
| 439 | else |
| 440 | client.getPlayerState().rdflags &= ~Defines.RDF_UNDERWATER; |
| 441 | |
| 442 | if ((contents & (Defines.CONTENTS_SOLID | Defines.CONTENTS_LAVA)) != 0) |
| 443 | SV_AddBlend(1.0f, 0.3f, 0.0f, 0.6f, client.getPlayerState().blend); |
| 444 | else if ((contents & Defines.CONTENTS_SLIME) != 0) |
| 445 | SV_AddBlend(0.0f, 0.1f, 0.05f, 0.6f, client.getPlayerState().blend); |
| 446 | else if ((contents & Defines.CONTENTS_WATER) != 0) |
| 447 | SV_AddBlend(0.5f, 0.3f, 0.2f, 0.4f, client.getPlayerState().blend); |
| 448 | |
| 449 | // add for powerups |
| 450 | if (client.quad_framenum > gameExports.level.framenum) { |
| 451 | remaining = (int) (client.quad_framenum - gameExports.level.framenum); |
| 452 | if (remaining == 30) // beginning to fade |
| 453 | gameExports.gameImports.sound(ent, Defines.CHAN_ITEM, |
| 454 | gameExports.gameImports.soundindex("items/damage2.wav"), 1, Defines.ATTN_NORM, 0); |
| 455 | if (remaining > 30 || (remaining & 4) != 0) |
| 456 | SV_AddBlend(0, 0, 1, 0.08f, client.getPlayerState().blend); |
| 457 | } else if (client.invincible_framenum > gameExports.level.framenum) { |
| 458 | remaining = (int) client.invincible_framenum - gameExports.level.framenum; |
| 459 | if (remaining == 30) // beginning to fade |
| 460 | gameExports.gameImports.sound(ent, Defines.CHAN_ITEM, |
| 461 | gameExports.gameImports.soundindex("items/protect2.wav"), 1, Defines.ATTN_NORM, 0); |
| 462 | if (remaining > 30 || (remaining & 4) != 0) |
| 463 | SV_AddBlend(1, 1, 0, 0.08f, client.getPlayerState().blend); |
| 464 | } else if (client.enviro_framenum > gameExports.level.framenum) { |
| 465 | remaining = (int) client.enviro_framenum |
| 466 | - gameExports.level.framenum; |
| 467 | if (remaining == 30) // beginning to fade |
| 468 | gameExports.gameImports.sound(ent, Defines.CHAN_ITEM, |
| 469 | gameExports.gameImports.soundindex("items/airout.wav"), 1, Defines.ATTN_NORM, 0); |
| 470 | if (remaining > 30 || (remaining & 4) != 0) |
| 471 | SV_AddBlend(0, 1, 0, 0.08f, client.getPlayerState().blend); |
| 472 | } else if (client.breather_framenum > gameExports.level.framenum) { |
| 473 | remaining = (int) client.breather_framenum |
| 474 | - gameExports.level.framenum; |
| 475 | if (remaining == 30) // beginning to fade |
| 476 | gameExports.gameImports.sound(ent, Defines.CHAN_ITEM, gameExports.gameImports |
| 477 | .soundindex("items/airout.wav"), 1, Defines.ATTN_NORM, |
| 478 | 0); |
| 479 | if (remaining > 30 || (remaining & 4) != 0) |
| 480 | SV_AddBlend(0.4f, 1, 0.4f, 0.04f, client.getPlayerState().blend); |
| 481 | } |
| 482 | |
| 483 | // add for damage |
no test coverage detected