X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=736d22e1623ce2d1291825a49386cc63a75963c9;hb=4df4eb483aa0a0abd74164d7f49c173743f6c84b;hp=355ecf323985108f69d23d047c3a34399fb77dcc;hpb=42e251585e2584512ddf4049431e5e0faec3a860;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 355ecf3..736d22e 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -2354,8 +2354,15 @@ begin Mirror := TMirrorType.Horizontal; if FPunchAnim <> nil then + begin FPunchAnim.Draw(FObj.X+IfThen(Direction = TDirection.D_LEFT, 15-FObj.Rect.X, FObj.Rect.X-15), FObj.Y+FObj.Rect.Y-11, Mirror); + if FPunchAnim.played then + begin + FPunchAnim.Free; + FPunchAnim := nil; + end; + end; if (FMegaRulez[MR_INVUL] > gTime) and (gPlayerDrawn <> Self) then if g_Texture_Get('TEXTURE_PLAYER_INVULPENTA', ID) then @@ -2797,12 +2804,22 @@ end; procedure TPlayer.DoPunch(); var id: DWORD; + st: String; begin - if FPunchAnim = nil then begin - g_Frames_Get(id, 'FRAMES_PUNCH'); - FPunchAnim := TAnimation.Create(id, False, 1); - end else + if FPunchAnim <> nil then begin FPunchAnim.reset(); + FPunchAnim.Free; + FPunchAnim := nil; + end; + st := 'FRAMES_PUNCH'; + if R_BERSERK in FRulez then + st := st + '_BERSERK'; + if FKeys[KEY_UP].Pressed then + st := st + '_UP' + else if FKeys[KEY_DOWN].Pressed then + st := st + '_DN'; + g_Frames_Get(id, st); + FPunchAnim := TAnimation.Create(id, False, 1); end; procedure TPlayer.Fire(); @@ -2834,6 +2851,7 @@ begin case FCurrWeap of WEAPON_KASTET: begin + DoPunch(); if R_BERSERK in FRulez then begin //g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID); @@ -2848,8 +2866,6 @@ begin locobj.Accel.X := xd-wx; locobj.Accel.y := yd-wy; - DoPunch(); - if g_Weapon_Hit(@locobj, 50, FUID, HIT_SOME) <> 0 then g_Sound_PlayExAt('SOUND_WEAPON_HITBERSERK', FObj.X, FObj.Y) else @@ -5296,6 +5312,7 @@ begin case FCurrWeap of WEAPON_KASTET: begin + DoPunch(); if R_BERSERK in FRulez then begin //g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID); @@ -5310,8 +5327,6 @@ begin locobj.Accel.X := xd-wx; locobj.Accel.y := yd-wy; - DoPunch(); - if g_Weapon_Hit(@locobj, 50, FUID, HIT_SOME) <> 0 then g_Sound_PlayExAt('SOUND_WEAPON_HITBERSERK', FObj.X, FObj.Y) else