X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_monsters.pas;h=01a486d0a7dd6e7a2e9966f85326f33609b75f0b;hb=df1f12c26369a0d5e9e996583b30c9879570fe99;hp=8acec37b1d446cdece210df2958015afb23d5bae;hpb=965a25fec3fb93ced92ca5e4060dfa29141fa32b;p=d2df-sdl.git diff --git a/src/game/opengl/r_monsters.pas b/src/game/opengl/r_monsters.pas index 8acec37..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, TMirrorType.None); + 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, m); + r_AnimState_Draw(monFrames[MonsterType, MonsterAnim, GameDirection], DirAnim[MonsterAnim, GameDirection], fX + dx, fY + dy, 0, m, False); end; if g_debug_Frames then