X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_monsters.pas;h=01a486d0a7dd6e7a2e9966f85326f33609b75f0b;hb=afc01019e1701d11e50c4747b8ee8366cf60b6f4;hp=7b1fcc4b0a147dda4b2ff37ddd9de3b36202d078;hpb=ac375654231a010b2f2bdbd90dd74d1c2903f967;p=d2df-sdl.git diff --git a/src/game/opengl/r_monsters.pas b/src/game/opengl/r_monsters.pas index 7b1fcc4..01a486d 100644 --- a/src/game/opengl/r_monsters.pas +++ b/src/game/opengl/r_monsters.pas @@ -33,8 +33,7 @@ implementation ; type - TMonsterDirected = array [TDirection.D_LEFT..TDirection.D_RIGHT] of DWORD; - TMonsterAnims = array [ANIM_SLEEP..ANIM_PAIN] of TMonsterDirected; + TMonsterAnims = array [ANIM_SLEEP..ANIM_PAIN, TDirection.D_LEFT..TDirection.D_RIGHT] of DWORD; var VileFire: DWORD; @@ -372,7 +371,7 @@ implementation end; procedure r_Monsters_Draw (constref monster: TMonster); - var m: TMirrorType; dx, dy, c, fX, fY: Integer; o: TObj; + var m: TMirrorType; dx, dy, c, fX, fY, mw, mh: Integer; o: TObj; begin with monster do begin @@ -385,7 +384,7 @@ implementation if MonsterType = MONSTER_VILE then if MonsterState = MONSTATE_SHOOT then if GetPos(MonsterTargetUID, @o) then - r_AnimationState_Draw(VileFire, VileFireAnim, o.X + o.Rect.X + (o.Rect.Width div 2) - 32, o.Y + o.Rect.Y + o.Rect.Height - 128, 0, TMirrorType.None, False); + r_AnimState_Draw(VileFire, VileFireAnim, o.X + o.Rect.X + (o.Rect.Width div 2) - 32, o.Y + o.Rect.Y + o.Rect.Height - 128, 0, TMirrorType.None, False); // Не в области рисования не ресуем: //FIXME! @@ -422,8 +421,8 @@ implementation // Расстояние от края текстуры до края визуального положения объекта на текстуре: c := (MONSTERTABLE[MonsterType].Rect.X - dx) + MONSTERTABLE[MonsterType].Rect.Width; // Расстояние от края хит бокса до края визуального положения объекта на текстуре: - //dx := DirAnim[MonsterAnim, GameDirection].Width - c - MONSTERTABLE[MonsterType].Rect.X; - dx := 64 - c - MONSTERTABLE[MonsterType].Rect.X; // !!! ^^^ + g_Frames_GetFrameSize(monFrames[MonsterType, MonsterAnim, GameDirection], mw, mh); + dx := mw - c - MONSTERTABLE[MonsterType].Rect.X; // !!! ^^^ // Т.к. двигать текстуру нужно будет в противоположном направлении: dx := -dx; // Это значит: dX := -frameWidth - animDeltaX + hitX + hitWidth + hitX @@ -435,7 +434,7 @@ implementation dy := MONSTER_ANIMTABLE[MonsterType].AnimDeltaRight[MonsterAnim].Y; end; - r_AnimationState_Draw(monFrames[MonsterType, MonsterAnim, GameDirection], DirAnim[MonsterAnim, GameDirection], fX + dx, fY + dy, 0, m, False); + r_AnimState_Draw(monFrames[MonsterType, MonsterAnim, GameDirection], DirAnim[MonsterAnim, GameDirection], fX + dx, fY + dy, 0, m, False); end; if g_debug_Frames then