X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_weapons.pas;h=922f8dc66042557ad4d2ce360fc6091eef5e4b18;hb=6cdd36d2fb73f13be7b6ea1870a8b3b0817b37f1;hp=fc539280d670a88d3865bcced28f874febf908e1;hpb=ae9f71c24837ae555baef3eaf8ebe06152cfe9e0;p=d2df-sdl.git diff --git a/src/game/g_weapons.pas b/src/game/g_weapons.pas index fc53928..922f8dc 100644 --- a/src/game/g_weapons.pas +++ b/src/game/g_weapons.pas @@ -110,12 +110,16 @@ var implementation -uses - Math, g_map, g_player, g_gfx, g_sound, g_panel, - g_console, g_options, g_game, r_textures, r_animations, r_gfx, - g_triggers, MAPDEF, e_log, g_monsters, g_saveload, - g_language, g_netmsg, g_grid, - geom, binheap, hashtable, utils, xstreams; + uses + {$IFDEF ENABLE_GFX} + g_gfx, + {$ENDIF} + Math, g_map, g_player, g_sound, g_panel, + g_console, g_options, g_game, + g_triggers, MAPDEF, e_log, g_monsters, g_saveload, + g_language, g_netmsg, g_grid, + geom, binheap, hashtable, utils, xstreams + ; type TWaterPanel = record @@ -1545,7 +1549,9 @@ begin stt := getTimeMicro()-stt; e_WriteLog(Format('*** new trace time: %u microseconds', [LongWord(stt)]), TMsgType.Notify); {$ENDIF} - g_GFX_Spark(wallHitX, wallHitY, 2+Random(2), 180+a, 0, 0); + {$IFDEF ENABLE_GFX} + g_GFX_Spark(wallHitX, wallHitY, 2+Random(2), 180+a, 0, 0); + {$ENDIF} if g_Game_IsServer and g_Game_IsNet then MH_SEND_Effect(wallHitX, wallHitY, 180+a, NET_GFX_SPARK); end else @@ -1887,7 +1893,7 @@ end; procedure g_Weapon_aplasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true); var - find_id, FramesID: DWORD; + find_id: DWORD; dx, dy: Integer; begin if WID < 0 then @@ -2011,7 +2017,9 @@ end; procedure g_Weapon_bfghit(x, y: Integer); begin - r_GFX_OnceAnim(R_GFX_BFG_HIT, x - 32, y - 32); + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_BFG_HIT, x - 32, y - 32); + {$ENDIF} end; procedure g_Weapon_pistol(x, y, xd, yd: Integer; SpawnerUID: Word; @@ -2113,7 +2121,9 @@ var o: TObj; spl: Boolean; Loud: Boolean; - tcx, tcy: Integer; + {$IFDEF ENABLE_GFX} + var tcx, tcy: Integer; + {$ENDIF} begin if Shots = nil then Exit; @@ -2197,14 +2207,18 @@ begin //  âîäå øëåéô - ïóçûðè, â âîçäóõå øëåéô - äûì: if WordBool(st and MOVE_INWATER) then begin - g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16); + {$IFDEF ENABLE_GFX} + g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16); + {$ENDIF} if Random(2) = 0 then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', cx, cy) else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', cx, cy); end else begin - r_GFX_OnceAnim(R_GFX_SMOKE_TRANS, Obj.X-14+Random(9), cy-20+Random(9)); + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_SMOKE_TRANS, Obj.X-14+Random(9), cy-20+Random(9)); + {$ENDIF} end; // Ïîïàëè â êîãî-òî èëè â ñòåíó: @@ -2218,15 +2232,19 @@ begin g_Weapon_Explode(cx, cy, 60, SpawnerUID); if ShotType = WEAPON_SKEL_FIRE then - begin // Âçðûâ ñíàðÿäà Ñêåëåòà - r_GFX_OnceAnim(R_GFX_EXPLODE_SKELFIRE, Obj.X + 32 - 58, Obj.Y + 8 - 36); + begin // Âçðûâ ñíàðÿäà Ñêåëåòà + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_SKELFIRE, Obj.X + 32 - 58, Obj.Y + 8 - 36); g_DynLightExplosion((Obj.X+32), (Obj.Y+8), 64, 1, 0, 0); - end + {$ENDIF} + end else - begin // Âçðûâ Ðàêåòû - r_GFX_OnceAnim(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + begin // Âçðûâ Ðàêåòû + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); g_DynLightExplosion(cx, cy, 64, 1, 0, 0); - end; + {$ENDIF} + end; g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEROCKET', Obj.X, Obj.Y); @@ -2269,11 +2287,13 @@ begin (g_Weapon_Hit(@Obj, a, SpawnerUID, HIT_SOME, False) <> 0) or (Timeout < 1) then begin - if ShotType = WEAPON_PLASMA then - r_GFX_OnceAnim(R_GFX_EXPLODE_PLASMA, cx - 16, cy - 16) - else - r_GFX_OnceAnim(R_GFX_EXPLODE_BSPFIRE, cx - 16, cy - 16); - g_DynLightExplosion(cx, cy, 32, 0, 0.5, 0.5); + {$IFDEF ENABLE_GFX} + if ShotType = WEAPON_PLASMA then + g_GFX_QueueEffect(R_GFX_EXPLODE_PLASMA, cx - 16, cy - 16) + else + g_GFX_QueueEffect(R_GFX_EXPLODE_BSPFIRE, cx - 16, cy - 16); + g_DynLightExplosion(cx, cy, 32, 0, 0.5, 0.5); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEPLASMA', Obj.X, Obj.Y); ShotType := 0; end; @@ -2292,13 +2312,17 @@ begin begin if WordBool(st and MOVE_HITWATER) then begin - tcx := Random(8); - tcy := Random(8); - r_GFX_OnceAnim(R_GFX_SMOKE, cx-4+tcx-(R_GFX_SMOKE_WIDTH div 2), cy-4+tcy-(R_GFX_SMOKE_HEIGHT div 2)); + {$IFDEF ENABLE_GFX} + tcx := Random(8); + tcy := Random(8); + g_GFX_QueueEffect(R_GFX_SMOKE, cx-4+tcx-(R_GFX_SMOKE_WIDTH div 2), cy-4+tcy-(R_GFX_SMOKE_HEIGHT div 2)); + {$ENDIF} end else begin - g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16); + {$IFDEF ENABLE_GFX} + g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16); + {$ENDIF} if Random(2) = 0 then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', cx, cy) else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', cx, cy); @@ -2342,14 +2366,16 @@ begin if (gTime mod LongWord(tf) = 0) then begin - case Stopped of - MOVE_HITWALL: begin tcx := cx-4+Random(8); tcy := cy-12+Random(24); end; - MOVE_HITLAND: begin tcx := cx-12+Random(24); tcy := cy-10+Random(8); end; - MOVE_HITCEIL: begin tcx := cx-12+Random(24); tcy := cy+6+Random(8); end; - else begin tcx := cx-4+Random(8); tcy := cy-4+Random(8); end; - end; - r_GFX_OnceAnim(R_GFX_FLAME_RAND, tcx - (R_GFX_FLAME_WIDTH div 2), tcy - (R_GFX_FLAME_HEIGHT div 2)); - //g_DynLightExplosion(tcx, tcy, 1, 1, 0.8, 0.3); + {$IFDEF ENABLE_GFX} + case Stopped of + MOVE_HITWALL: begin tcx := cx-4+Random(8); tcy := cy-12+Random(24); end; + MOVE_HITLAND: begin tcx := cx-12+Random(24); tcy := cy-10+Random(8); end; + MOVE_HITCEIL: begin tcx := cx-12+Random(24); tcy := cy+6+Random(8); end; + else begin tcx := cx-4+Random(8); tcy := cy-4+Random(8); end; + end; + g_GFX_QueueEffect(R_GFX_FLAME_RAND, tcx - (R_GFX_FLAME_WIDTH div 2), tcy - (R_GFX_FLAME_HEIGHT div 2)); + //g_DynLightExplosion(tcx, tcy, 1, 1, 0.8, 0.3); + {$ENDIF} end; end; @@ -2371,8 +2397,10 @@ begin begin // Ëó÷è BFG: if g_Game_IsServer then g_Weapon_BFG9000(cx, cy, SpawnerUID); - r_GFX_OnceAnim(R_GFX_EXPLODE_BFG, cx - 64, cy - 64); - g_DynLightExplosion(cx, cy, 96, 0, 1, 0); + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_BFG, cx - 64, cy - 64); + g_DynLightExplosion(cx, cy, 96, 0, 1, 0); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBFG', Obj.X, Obj.Y); ShotType := 0; end; @@ -2398,11 +2426,13 @@ begin (g_Weapon_Hit(@Obj, a, SpawnerUID, HIT_SOME) <> 0) or (Timeout < 1) then begin - case ShotType of - WEAPON_IMP_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_IMPFIRE, cx - 32, cy - 32); - WEAPON_CACO_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_CACOFIRE, cx - 32, cy - 32); - WEAPON_BARON_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_BARONFIRE, cx - 32, cy - 32); - end; + {$IFDEF ENABLE_GFX} + case ShotType of + WEAPON_IMP_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_IMPFIRE, cx - 32, cy - 32); + WEAPON_CACO_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_CACOFIRE, cx - 32, cy - 32); + WEAPON_BARON_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_BARONFIRE, cx - 32, cy - 32); + end; + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBALL', Obj.X, Obj.Y); ShotType := 0; end; @@ -2419,8 +2449,10 @@ begin (g_Weapon_Hit(@Obj, 40, SpawnerUID, HIT_SOME, False) <> 0) or (Timeout < 1) then begin - // Âçðûâ: - r_GFX_OnceAnim(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + // Âçðûâ: + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBALL', Obj.X, Obj.Y); ShotType := 0; end; @@ -2582,7 +2614,9 @@ begin end; procedure g_Weapon_DestroyShot(I: Integer; X, Y: Integer; Loud: Boolean = True); - var cx, cy: Integer; + {$IFDEF ENABLE_GFX} + var cx, cy: Integer; + {$ENDIF} begin if Shots = nil then Exit; @@ -2593,18 +2627,22 @@ begin if ShotType = 0 then Exit; Obj.X := X; Obj.Y := Y; - cx := Obj.X + (Obj.Rect.Width div 2); - cy := Obj.Y + (Obj.Rect.Height div 2); + {$IFDEF ENABLE_GFX} + cx := Obj.X + (Obj.Rect.Width div 2); + cy := Obj.Y + (Obj.Rect.Height div 2); + {$ENDIF} case ShotType of WEAPON_ROCKETLAUNCHER, WEAPON_SKEL_FIRE: // Ðàêåòû è ñíàðÿäû Ñêåëåòà begin if Loud then begin - if ShotType = WEAPON_SKEL_FIRE then - r_GFX_OnceAnim(R_GFX_EXPLODE_SKELFIRE, (Obj.X + 32) - 32, (Obj.Y + 8) - 32) - else - r_GFX_OnceAnim(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + {$IFDEF ENABLE_GFX} + if ShotType = WEAPON_SKEL_FIRE then + g_GFX_QueueEffect(R_GFX_EXPLODE_SKELFIRE, (Obj.X + 32) - 32, (Obj.Y + 8) - 32) + else + g_GFX_QueueEffect(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEROCKET', Obj.X, Obj.Y); end; end; @@ -2613,17 +2651,21 @@ begin begin if loud then begin - if ShotType = WEAPON_PLASMA then - r_GFX_OnceAnim(R_GFX_EXPLODE_PLASMA, cx - 16, cy - 16) - else - r_GFX_OnceAnim(R_GFX_EXPLODE_BSPFIRE, cx - 16, cy - 16); + {$IFDEF ENABLE_GFX} + if ShotType = WEAPON_PLASMA then + g_GFX_QueueEffect(R_GFX_EXPLODE_PLASMA, cx - 16, cy - 16) + else + g_GFX_QueueEffect(R_GFX_EXPLODE_BSPFIRE, cx - 16, cy - 16); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEPLASMA', Obj.X, Obj.Y); end; end; WEAPON_BFG: // BFG begin - r_GFX_OnceAnim(R_GFX_EXPLODE_BFG, cx - 64, cy - 64); + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_BFG, cx - 64, cy - 64); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBFG', Obj.X, Obj.Y); end; @@ -2631,18 +2673,22 @@ begin begin if loud then begin - case ShotType of - WEAPON_IMP_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_IMPFIRE, cx - 32, cy - 32); - WEAPON_CACO_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_CACOFIRE, cx - 32, cy - 32); - WEAPON_BARON_FIRE: r_GFX_OnceAnim(R_GFX_EXPLODE_BARONFIRE, cx - 32, cy - 32); - end; + {$IFDEF ENABLE_GFX} + case ShotType of + WEAPON_IMP_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_IMPFIRE, cx - 32, cy - 32); + WEAPON_CACO_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_CACOFIRE, cx - 32, cy - 32); + WEAPON_BARON_FIRE: g_GFX_QueueEffect(R_GFX_EXPLODE_BARONFIRE, cx - 32, cy - 32); + end; + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBALL', Obj.X, Obj.Y); end; end; WEAPON_MANCUB_FIRE: // Âûñòðåë Ìàíêóáóñà begin - r_GFX_OnceAnim(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect(R_GFX_EXPLODE_ROCKET, cx - 64, cy - 64); + {$ENDIF} g_Sound_PlayExAt('SOUND_WEAPON_EXPLODEBALL', Obj.X, Obj.Y); end; end; // case ShotType of...