(SubgameEntity ent, SubgameEntity other, cplane_t plane,
csurface_t surf, GameExportsImpl gameExports)
| 223 | public static EntTouchAdapter Touch_Item = new EntTouchAdapter() { |
| 224 | public String getID() { return "touch_item";} |
| 225 | public void touch(SubgameEntity ent, SubgameEntity other, cplane_t plane, |
| 226 | csurface_t surf, GameExportsImpl gameExports) { |
| 227 | boolean taken; |
| 228 | |
| 229 | if (ent.classname.equals("item_breather")) |
| 230 | taken = false; |
| 231 | |
| 232 | gclient_t client = other.getClient(); |
| 233 | if (client == null) |
| 234 | return; |
| 235 | if (other.health < 1) |
| 236 | return; // dead people can't pickup |
| 237 | if (ent.item.pickup == null) |
| 238 | return; // not a grabbable item? |
| 239 | |
| 240 | taken = ent.item.pickup.interact(ent, other, gameExports); |
| 241 | |
| 242 | if (taken) { |
| 243 | // flash the screen |
| 244 | client.bonus_alpha = 0.25f; |
| 245 | |
| 246 | // show icon and name on status bar |
| 247 | client.getPlayerState().stats[Defines.STAT_PICKUP_ICON] = (short) gameExports.gameImports |
| 248 | .imageindex(ent.item.icon); |
| 249 | client.getPlayerState().stats[Defines.STAT_PICKUP_STRING] = (short) (Defines.CS_ITEMS + ent.item.index); |
| 250 | client.pickup_msg_time = gameExports.level.time + 3.0f; |
| 251 | |
| 252 | // change selected item |
| 253 | if (ent.item.use != null) |
| 254 | client.pers.selected_item = client.getPlayerState().stats[Defines.STAT_SELECTED_ITEM] = (short) ent.item.index; |
| 255 | |
| 256 | if (ent.item.pickup == Pickup_Health) { |
| 257 | if (ent.count == 2) |
| 258 | gameExports.gameImports.sound(other, Defines.CHAN_ITEM, gameExports.gameImports |
| 259 | .soundindex("items/s_health.wav"), 1, |
| 260 | Defines.ATTN_NORM, 0); |
| 261 | else if (ent.count == 10) |
| 262 | gameExports.gameImports.sound(other, Defines.CHAN_ITEM, gameExports.gameImports |
| 263 | .soundindex("items/n_health.wav"), 1, |
| 264 | Defines.ATTN_NORM, 0); |
| 265 | else if (ent.count == 25) |
| 266 | gameExports.gameImports.sound(other, Defines.CHAN_ITEM, gameExports.gameImports |
| 267 | .soundindex("items/l_health.wav"), 1, |
| 268 | Defines.ATTN_NORM, 0); |
| 269 | else |
| 270 | // (ent.count == 100) |
| 271 | gameExports.gameImports.sound(other, Defines.CHAN_ITEM, gameExports.gameImports |
| 272 | .soundindex("items/m_health.wav"), 1, |
| 273 | Defines.ATTN_NORM, 0); |
| 274 | } else if (ent.item.pickup_sound != null) { |
| 275 | gameExports.gameImports.sound(other, Defines.CHAN_ITEM, gameExports.gameImports |
| 276 | .soundindex(ent.item.pickup_sound), 1, |
| 277 | Defines.ATTN_NORM, 0); |
| 278 | } |
| 279 | } |
| 280 | |
| 281 | if (0 == (ent.spawnflags & GameDefines.ITEM_TARGETS_USED)) { |
| 282 | GameUtil.G_UseTargets(ent, other, gameExports); |
nothing calls this directly
no test coverage detected