X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=db455725d2ca1b4f83c662584a279953acad455f;hb=373f27c0de10cb90442f535cb5d330095bafbf54;hp=8aa0a7df42ca1edaefc70d9a825660cc5e41d8fc;hpb=ae9f71c24837ae555baef3eaf8ebe06152cfe9e0;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 8aa0a7d..db45572 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -23,7 +23,7 @@ uses {$IFDEF USE_MEMPOOL}mempool,{$ENDIF} g_base, g_playermodel, g_basic, g_textures, g_weapons, g_phys, g_sound, g_saveload, MAPDEF, - g_panel, r_playermodel; + g_panel; const KEY_LEFT = 1; @@ -648,11 +648,17 @@ function g_Bot_GetCount(): Integer; implementation uses -{$IFDEF ENABLE_HOLMES} - g_holmes, -{$ENDIF} - e_log, g_map, g_items, g_console, g_gfx, Math, r_textures, r_animations, r_gfx, - g_options, g_triggers, g_menu, g_game, g_grid, e_res, + {$IFDEF ENABLE_HOLMES} + g_holmes, + {$ENDIF} + {$IFDEF ENABLE_MENU} + g_menu, + {$ENDIF} + {$IFNDEF HEADLESS} + r_render, + {$ENDIF} + e_log, g_map, g_items, g_console, g_gfx, Math, + g_options, g_triggers, g_game, g_grid, e_res, wadreader, g_monsters, CONFIG, g_language, g_net, g_netmsg, utils, xstreams; @@ -1593,7 +1599,14 @@ begin Color := fColor; alive := True; g_Obj_Init(@Obj); - Obj.Rect := r_PlayerModel_GetGibRect(ModelID, GibID); + {$IFNDEF HEADLESS} + Obj.Rect := r_Render_GetGibRect(ModelID, GibID); + {$ELSE} + Obj.Rect.X := 16; + Obj.Rect.Y := 16; + Obj.Rect.Width := 16; + Obj.Rect.Height := 16; + {$ENDIF} Obj.X := fX - Obj.Rect.X - (Obj.Rect.Width div 2); Obj.Y := fY - Obj.Rect.Y - (Obj.Rect.Height div 2); g_Obj_PushA(@Obj, 25 + Random(10), Random(361)); @@ -3988,7 +4001,7 @@ begin // Анимация возрождения: if (not gLoadGameMode) and (not Silent) then - r_GFX_OnceAnim( + g_GFX_QueueEffect( R_GFX_TELEPORT_FAST, FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2)-32, FObj.Y+PLAYER_RECT.Y+(PLAYER_RECT.Height div 2)-32 @@ -4188,7 +4201,7 @@ begin if not silent then begin g_Sound_PlayExAt('SOUND_GAME_TELEPORT', FObj.X, FObj.Y); - r_GFX_OnceAnim( + g_GFX_QueueEffect( R_GFX_TELEPORT_FAST, FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2)-32, FObj.Y+PLAYER_RECT.Y+(PLAYER_RECT.Height div 2)-32 @@ -4240,7 +4253,7 @@ begin if not silent then begin - r_GFX_OnceAnim( + g_GFX_QueueEffect( R_GFX_TELEPORT_FAST, FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2)-32, FObj.Y+PLAYER_RECT.Y+(PLAYER_RECT.Height div 2)-32 @@ -5742,7 +5755,7 @@ begin for i := 1 to Times do begin - r_GFX_OnceAnim( + g_GFX_QueueEffect( R_GFX_SMOKE_TRANS, Obj.X+Obj.Rect.X+Random(Obj.Rect.Width+Times*2)-(R_GFX_SMOKE_WIDTH div 2), Obj.Y+Obj.Rect.Height-4+Random(8+Times*2) @@ -5758,7 +5771,7 @@ begin for i := 1 to Times do begin - r_GFX_OnceAnim( + g_GFX_QueueEffect( R_GFX_FLAME, Obj.X+Obj.Rect.X+Random(Obj.Rect.Width+Times*2)-(R_GFX_FLAME_WIDTH div 2), Obj.Y+8+Random(8+Times*2) @@ -5934,16 +5947,16 @@ begin // animation anim := (FModel <> nil); utils.writeBool(st, anim); - if anim then FModel.AnimState.SaveState(st); + if anim then FModel.AnimState.SaveState(st, 0, False); // animation for mask (same as animation, compat with older saves) anim := (FModel <> nil); utils.writeBool(st, anim); - if anim then FModel.AnimState.SaveState(st); + if anim then FModel.AnimState.SaveState(st, 0, False); end; procedure TCorpse.LoadState (st: TStream); - var anim: Boolean; r, g, b: Byte; stub: TAnimationState; + var anim, blending: Boolean; r, g, b, alpha: Byte; stub: TAnimationState; begin assert(st <> nil); @@ -5967,7 +5980,7 @@ begin anim := utils.readBool(st); if anim then begin - stub.LoadState(st); + stub.LoadState(st, alpha, blending); FModel.AnimState.CurrentFrame := Min(stub.CurrentFrame, FModel.AnimState.Length); end else @@ -5977,7 +5990,7 @@ begin end; // animation for mask (same as animation, compat with older saves) anim := utils.readBool(st); - if anim then stub.LoadState(st); + if anim then stub.LoadState(st, alpha, blending); stub.Free; end;