diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas
index b43a6683f751e828b9d7d2e94f21918af4fe402e..563beffbbeac9cb783a2adee4d1ec9f417c0ceea 100644 (file)
--- a/src/game/g_panel.pas
+++ b/src/game/g_panel.pas
var Textures: TLevelTextureArray; aguid: Integer);
destructor Destroy(); override;
- procedure Draw();
+ procedure Draw (hasAmbient: Boolean; constref ambColor: TDFColor);
procedure DrawShadowVolume(lightX: Integer; lightY: Integer; radius: Integer);
procedure Update();
procedure SetFrame(Frame: Integer; Count: Byte);
@@ -409,15 +409,15 @@ function TPanel.gncNeedSend (): Boolean; inline; begin result := mNeedSend; mNee
procedure TPanel.setDirty (); inline; begin mNeedSend := true; end;
-procedure TPanel.Draw ();
+procedure TPanel.Draw (hasAmbient: Boolean; constref ambColor: TDFColor);
var
xx, yy: Integer;
NoTextureID: DWORD;
NW, NH: Word;
begin
if {Enabled and} (FCurTexture >= 0) and
- (Width > 0) and (Height > 0) and (FAlpha < 255) and
- ((g_dbg_scale <> 1.0) or g_Collide(X, Y, Width, Height, sX, sY, sWidth, sHeight)) then
+ (Width > 0) and (Height > 0) and (FAlpha < 255) {and
+ g_Collide(X, Y, Width, Height, sX, sY, sWidth, sHeight)} then
begin
if FTextureIDs[FCurTexture].Anim then
begin // Àíèìèðîâàííàÿ òåêñòóðà
else
begin // Îáû÷íàÿ òåêñòóðà
case FTextureIDs[FCurTexture].Tex of
- LongWord(TEXTURE_SPECIAL_WATER):
- e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
- 0, 0, 255, 0, B_FILTER);
- LongWord(TEXTURE_SPECIAL_ACID1):
- e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
- 0, 128, 0, 0, B_FILTER);
- LongWord(TEXTURE_SPECIAL_ACID2):
- e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
- 128, 0, 0, 0, B_FILTER);
+ LongWord(TEXTURE_SPECIAL_WATER): e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1, 0, 0, 255, 0, B_FILTER);
+ LongWord(TEXTURE_SPECIAL_ACID1): e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1, 0, 128, 0, 0, B_FILTER);
+ LongWord(TEXTURE_SPECIAL_ACID2): e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1, 128, 0, 0, 0, B_FILTER);
LongWord(TEXTURE_NONE):
if g_Texture_Get('NOTEXTURE', NoTextureID) then
begin
e_GetTextureSize(NoTextureID, @NW, @NH);
- e_DrawFill(NoTextureID, X, Y, Width div NW, Height div NH,
- 0, False, False);
- end else
+ e_DrawFill(NoTextureID, X, Y, Width div NW, Height div NH, 0, False, False);
+ end
+ else
begin
xx := X + (Width div 2);
yy := Y + (Height div 2);
- e_DrawFillQuad(X, Y, xx, yy,
- 255, 0, 255, 0);
- e_DrawFillQuad(xx, Y, X+Width-1, yy,
- 255, 255, 0, 0);
- e_DrawFillQuad(X, yy, xx, Y+Height-1,
- 255, 255, 0, 0);
- e_DrawFillQuad(xx, yy, X+Width-1, Y+Height-1,
- 255, 0, 255, 0);
+ e_DrawFillQuad(X, Y, xx, yy, 255, 0, 255, 0);
+ e_DrawFillQuad(xx, Y, X+Width-1, yy, 255, 255, 0, 0);
+ e_DrawFillQuad(X, yy, xx, Y+Height-1, 255, 255, 0, 0);
+ e_DrawFillQuad(xx, yy, X+Width-1, Y+Height-1, 255, 0, 255, 0);
end;
-
else
+ begin
if not mMovingActive then
- e_DrawFill(FTextureIDs[FCurTexture].Tex, X, Y, Width div FTextureWidth, Height div FTextureHeight, FAlpha, True, FBlending)
+ e_DrawFill(FTextureIDs[FCurTexture].Tex, X, Y, Width div FTextureWidth, Height div FTextureHeight, FAlpha, True, FBlending, hasAmbient)
else
- e_DrawFillX(FTextureIDs[FCurTexture].Tex, X, Y, Width, Height, FAlpha, True, FBlending, g_dbg_scale);
+ e_DrawFillX(FTextureIDs[FCurTexture].Tex, X, Y, Width, Height, FAlpha, True, FBlending, g_dbg_scale, hasAmbient);
+ if hasAmbient then e_AmbientQuad(X, Y, Width, Height, ambColor.r, ambColor.g, ambColor.b, ambColor.a);
+ end;
end;
end;
end;
@@ -493,8 +485,8 @@ procedure TPanel.DrawShadowVolume(lightX: Integer; lightY: Integer; radius: Inte
begin
if radius < 4 then exit;
- if Enabled and (FCurTexture >= 0) and (Width > 0) and (Height > 0) and (FAlpha < 255) and
- ((g_dbg_scale <> 1.0) or g_Collide(X, Y, Width, Height, sX, sY, sWidth, sHeight)) then
+ if Enabled and (FCurTexture >= 0) and (Width > 0) and (Height > 0) and (FAlpha < 255) {and
+ g_Collide(X, Y, Width, Height, sX, sY, sWidth, sHeight)} then
begin
if not FTextureIDs[FCurTexture].Anim then
begin