index c4fe391680359245ceb2fa49000a899ed6e60774..5ab33e9ae2b3d14736634e423325f32508c0530f 100644 (file)
procedure r_PlayerModel_Free;
procedure r_PlayerModel_Update;
procedure r_PlayerModel_Draw (pm: TPlayerModel; X, Y: Integer; Alpha: Byte = 0);
- procedure r_PlayerModel_DrawGibs;
- function r_PlayerModel_GetGibRect (m, id: Integer): TRectWH;
+ {$IFDEF ENABLE_GIBS}
+ procedure r_PlayerModel_DrawGibs;
+ function r_PlayerModel_GetGibRect (m, id: Integer): TRectWH;
+ {$ENDIF}
implementation
uses
+ {$IFDEF ENABLE_GIBS}
+ g_gibs,
+ {$ENDIF}
SysUtils, Classes, Math,
MAPDEF, utils, e_log, wadreader,
ImagingTypes, Imaging, ImagingUtility,
base: DWORD;
mask: DWORD;
end;
- Gibs: Array of record
- base: DWORD;
- mask: DWORD;
- rect: TRectWH;
- end;
+ {$IFDEF ENABLE_GIBS}
+ Gibs: Array of record
+ base: DWORD;
+ mask: DWORD;
+ rect: TRectWH;
+ end;
+ {$ENDIF}
end;
RedFlagFrames: DWORD;
BlueFlagFrames: DWORD;
- FlagAnimState: TAnimationState;
+ FlagAnimState: TAnimState;
+{$IFDEF ENABLE_GIBS}
function r_PlayerModel_GetGibRect (m, id: Integer): TRectWH;
begin
Result := Models[m].Gibs[id].rect
end;
+{$ENDIF}
procedure r_PlayerModel_Initialize;
begin
- FlagAnimState := TAnimationState.Create(True, 8, 5);
+ FlagAnimState := TAnimState.Create(True, 8, 5);
end;
procedure r_PlayerModel_Finalize;
begin
- FlagAnimState.Free;
- FlagAnimState := nil;
+ FlagAnimState.Invalidate;
end;
procedure ExtAnimFromBaseAnim(MName: String; AIdx: Integer);
end;
procedure r_PlayerModel_Load;
- var
- ID1, ID2: DWORD;
- i, a, b: Integer;
- prefix, aname: String;
- base, mask: Pointer;
- baseLen, maskLen: Integer;
+ {$IFDEF ENABLE_GIBS}
+ var base, mask: Pointer; baseLen, maskLen: Integer;
+ {$ENDIF}
+ var ID1, ID2: DWORD; i, a, b: Integer; prefix, aname: String;
begin
g_Frames_CreateWAD(@RedFlagFrames, 'FRAMES_FLAG_RED', GameWAD + ':TEXTURES\FLAGRED', 64, 64, 5, False);
g_Frames_CreateWAD(@BlueFlagFrames, 'FRAMES_FLAG_BLUE', GameWAD + ':TEXTURES\FLAGBLUE', 64, 64, 5, False);
end
end
end;
- SetLength(Models[i].Gibs, PlayerModelsArray[i].GibsCount);
- if PlayerModelsArray[i].GibsCount > 0 then
- begin
- r_PlayerModel_LoadResource(prefix + PlayerModelsArray[i].GibsResource, base, baseLen);
- r_PlayerModel_LoadResource(prefix + PlayerModelsArray[i].GibsMask, mask, maskLen);
- if (base <> nil) and (mask <> nil) then
+ {$IFDEF ENABLE_GIBS}
+ SetLength(Models[i].Gibs, PlayerModelsArray[i].GibsCount);
+ if PlayerModelsArray[i].GibsCount > 0 then
begin
- for a := 0 to PlayerModelsArray[i].GibsCount - 1 do
+ r_PlayerModel_LoadResource(prefix + PlayerModelsArray[i].GibsResource, base, baseLen);
+ r_PlayerModel_LoadResource(prefix + PlayerModelsArray[i].GibsMask, mask, maskLen);
+ if (base <> nil) and (mask <> nil) then
begin
- if e_CreateTextureMemEx(base, baseLen, Models[i].Gibs[a].base, a * 32, 0, 32, 32) and
- e_CreateTextureMemEx(mask, maskLen, Models[i].Gibs[a].mask, a * 32, 0, 32, 32) then
+ for a := 0 to PlayerModelsArray[i].GibsCount - 1 do
begin
- Models[i].Gibs[a].rect := g_PlayerModel_CalcGibSize(base, baseLen, a * 32, 0, 32, 32);
- with Models[i].Gibs[a].Rect do
- if Height > 3 then
- Height := Height - 1 - Random(2); // ???
+ if e_CreateTextureMemEx(base, baseLen, Models[i].Gibs[a].base, a * 32, 0, 32, 32) and
+ e_CreateTextureMemEx(mask, maskLen, Models[i].Gibs[a].mask, a * 32, 0, 32, 32) then
+ begin
+ Models[i].Gibs[a].rect := g_PlayerModel_CalcGibSize(base, baseLen, a * 32, 0, 32, 32);
+ with Models[i].Gibs[a].Rect do
+ if Height > 3 then
+ Height := Height - 1 - Random(2); // ???
+ end
end
- end
- end;
- FreeMem(mask);
- FreeMem(base);
- end
+ end;
+ FreeMem(mask);
+ FreeMem(base);
+ end
+ {$ENDIF}
end
end
end;
fa := PlayerModelsArray[pm.id].FlagAngle;
p.X := IfThen(pm.Direction = TDirection.D_LEFT, FLAG_BASEPOINT.X, 64 - FLAG_BASEPOINT.X);
p.Y := FLAG_BASEPOINT.Y;
- r_AnimationState_DrawEx(
+ r_AnimState_DrawEx(
FramesID,
FlagAnimState,
X + IfThen(pm.Direction = TDirection.D_LEFT, fp.X - 1, 2 * FLAG_BASEPOINT.X - fp.X + 1) - FLAG_BASEPOINT.X,
Y + fp.Y - FLAG_BASEPOINT.Y + 1,
+ 0,
Mirror,
+ False,
p,
IfThen(pm.Direction = TDirection.D_RIGHT, fa, -fa)
);
// Модель:
if (pm.Direction = TDirection.D_LEFT) and (Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].base <> 0) then
begin
- pm.AnimState.Alpha := Alpha; // !!!
FramesID := Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].base;
- r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, TMirrorType.None);
+ r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False);
end
else
begin
- pm.AnimState.Alpha := Alpha; // !!!
FramesID := Models[pm.id].Frames[TDirection.D_RIGHT, pm.CurrentAnimation].base;
- r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Mirror);
+ r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False);
end;
// Маска модели:
if (pm.Direction = TDirection.D_LEFT) and (Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].mask <> 0) then
begin
- pm.AnimState.Alpha := Alpha; // !!!
FramesID := Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].mask;
- r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, TMirrorType.None);
+ r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False);
end
else
begin
- pm.AnimState.Alpha := Alpha; // !!!
FramesID := Models[pm.id].Frames[TDirection.D_RIGHT, pm.CurrentAnimation].mask;
- r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Mirror);
+ r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False);
end;
e_Colors.R := 255;
e_Colors.B := 255;
end;
+{$IFDEF ENABLE_GIBS}
procedure r_PlayerModel_DrawGibs;
var i, fX, fY, m, id: Integer; a: TDFPoint; pobj: ^TObj;
begin
end
end
end;
+{$ENDIF}
end.