MCPcopy Create free account
hub / github.com/demoth/jake2 / P_DamageFeedback

Method P_DamageFeedback

game/src/main/java/jake2/game/PlayerView.java:106–243  ·  view source on GitHub ↗

Handles color blends and view kicks

(SubgameEntity player, GameExportsImpl gameExports)

Source from the content-addressed store, hash-verified

104 * Handles color blends and view kicks
105 */
106 private void P_DamageFeedback(SubgameEntity player, GameExportsImpl gameExports) {
107 gclient_t client;
108 float side;
109 float realcount, count, kick;
110 float[] v = { 0, 0, 0 };
111 int r, l;
112 float[] power_color = { 0.0f, 1.0f, 0.0f };
113 float[] acolor = { 1.0f, 1.0f, 1.0f };
114 float[] bcolor = { 1.0f, 0.0f, 0.0f };
115
116 client = player.getClient();
117
118 // flash the backgrounds behind the status numbers
119 client.getPlayerState().stats[Defines.STAT_FLASHES] = 0;
120 if (client.damage_blood != 0)
121 client.getPlayerState().stats[Defines.STAT_FLASHES] |= 1;
122 if (client.damage_armor != 0
123 && 0 == (player.flags & GameDefines.FL_GODMODE)
124 && (client.invincible_framenum <= gameExports.level.framenum))
125 client.getPlayerState().stats[Defines.STAT_FLASHES] |= 2;
126
127 // total points of damage shot at the player this frame
128 count = (client.damage_blood + client.damage_armor + client.damage_parmor);
129
130 if (count == 0)
131 return; // didn't take any damage
132
133 // start a pain animation if still in the player model
134 if ((client.anim_priority < Defines.ANIM_PAIN)
135 & (player.s.modelindex == 255)) {
136 client.anim_priority = Defines.ANIM_PAIN;
137 if ((client.getPlayerState().pmove.pm_flags & Defines.PMF_DUCKED) != 0) {
138 player.s.frame = M_Player.FRAME_crpain1 - 1;
139 client.anim_end = M_Player.FRAME_crpain4;
140 } else {
141
142 xxxi = (xxxi + 1) % 3;
143 switch (xxxi) {
144 case 0:
145 player.s.frame = M_Player.FRAME_pain101 - 1;
146 client.anim_end = M_Player.FRAME_pain104;
147 break;
148 case 1:
149 player.s.frame = M_Player.FRAME_pain201 - 1;
150 client.anim_end = M_Player.FRAME_pain204;
151 break;
152 case 2:
153 player.s.frame = M_Player.FRAME_pain301 - 1;
154 client.anim_end = M_Player.FRAME_pain304;
155 break;
156 }
157 }
158 }
159
160 realcount = count;
161 if (count < 10)
162 count = 10; // always make a visible effect
163

Callers 1

ClientEndServerFrameMethod · 0.95

Calls 11

getPlayerStateMethod · 0.95
randMethod · 0.95
VectorClearMethod · 0.95
VectorMAMethod · 0.95
VectorCopyMethod · 0.95
VectorSubtractMethod · 0.95
VectorNormalizeMethod · 0.95
DotProductMethod · 0.95
soundMethod · 0.65
soundindexMethod · 0.65
getClientMethod · 0.45

Tested by

no test coverage detected