1 (* Copyright (C) Doom 2D: Forever Developers
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, version 3 of the License ONLY.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 *)
15 {$INCLUDE ../../shared/a_modes.inc}
18 interface
23 implementation
25 uses
28 MAPDEF,
30 g_monsters
31 ;
35 begin
37 begin
38 //e_CharFont_Print(gMenuSmallFont, Obj.X + Obj.Rect.X, Obj.Y + Obj.Rect.Y, 'TYPE: ' + IntToStr(MonsterType));
39 //e_CharFont_Print(gMenuSmallFont, Obj.X + Obj.Rect.X, Obj.Y + Obj.Rect.Y + 16, 'STATE: ' + IntToStr(MonsterState));
43 // Если колдун стреляет, то рисуем огонь:
47 r_Animation_Draw(VileFireAnim, o.X + o.Rect.X + (o.Rect.Width div 2) - 32, o.Y + o.Rect.Y + o.Rect.Height - 128, TMirrorType.None);
49 // Не в области рисования не ресуем:
50 //FIXME!
52 begin
53 if not g_Collide(Obj.X + Obj.Rect.X, Obj.Y + Obj.Rect.Y, Obj.Rect.Width, Obj.Rect.Height, sX - 128, sY - 128, sWidth + 256, sHeight + 256) then
54 Exit;
57 // Эти монстры, умирая, не оставляют трупов:
63 // Есть что рисовать при текущем поведении:
65 begin
66 // Если нет левой анимации или она совпадает с правой => отражаем правую:
67 if (GameDirection = TDirection.D_LEFT) and ((not MONSTER_ANIMTABLE[MonsterType].LeftAnim) or (DirAnim[MonsterAnim, TDirection.D_LEFT].FramesID = DirAnim[MonsterAnim, TDirection.D_RIGHT].FramesID)) and (MonsterType <> MONSTER_BARREL) then
69 else
72 // Левая анимация => меняем смещение относительно центра:
74 begin
79 begin
80 // Нет отдельной левой анимации
81 // Расстояние от края текстуры до края визуального положения объекта на текстуре:
83 // Расстояние от края хит бокса до края визуального положения объекта на текстуре:
85 // Т.к. двигать текстуру нужно будет в противоположном направлении:
87 // Это значит: dX := -frameWidth - animDeltaX + hitX + hitWidth + hitX
88 end
89 end
91 begin
100 begin
101 e_DrawQuad(Obj.X + Obj.Rect.X, Obj.Y + Obj.Rect.Y, Obj.X + Obj.Rect.X + Obj.Rect.Width - 1, Obj.Y + Obj.Rect.Y + Obj.Rect.Height - 1, 0, 255, 0);
102 end
103 end
108 begin
116 begin
120 begin
122 begin
126 end
127 end