X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_monsters.pas;h=6ae4510555fba9f331f156adbfcca768e6aba966;hb=483304f6afb4ad7d8b16624ce835cbae9a60bb3a;hp=d2f2dfd1535ed599a71766ffad09aa0b9026a270;hpb=bc85322c634955e1d759a0798052fc61e47a599b;p=d2df-sdl.git diff --git a/src/game/opengl/r_monsters.pas b/src/game/opengl/r_monsters.pas index d2f2dfd..6ae4510 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; @@ -178,7 +177,7 @@ implementation end; procedure r_Monsters_Load; - var m, a: Integer; s, info: String; FramesID: DWORD; + var m, a: Integer; s: String; FramesID: DWORD; begin g_Frames_CreateWAD(nil, 'FRAMES_MONSTER_BARREL_SLEEP', GameWAD+':MTEXTURES\BARREL_SLEEP', 64, 64, 3); g_Frames_CreateWAD(nil, 'FRAMES_MONSTER_BARREL_DIE', GameWAD+':MTEXTURES\BARREL_DIE', 64, 64, 4); @@ -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_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); // Не в области рисования не ресуем: //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_AnimationState_Draw(monFrames[MonsterType, MonsterAnim, GameDirection], DirAnim[MonsterAnim, GameDirection], fX + dx, fY + dy, 0, m, False); end; if g_debug_Frames then