diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas
index d724f2af056e6e91ea8154bb4b14c6678aaf78d6..c562934ec753748f26269fb776a629cd7d61ab08 100644 (file)
--- a/src/game/g_panel.pas
+++ b/src/game/g_panel.pas
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
-{$MODE DELPHI}
+{$INCLUDE ../shared/a_modes.inc}
unit g_panel;
interface
uses
- MAPSTRUCT, BinEditor, g_textures;
+ MAPDEF, BinEditor, g_textures;
type
TAddTextureArray = Array of
True: (AnTex: TAnimation);
end;
+ private
+ function getx1 (): Integer; inline;
+ function gety1 (): Integer; inline;
+ function getvisvalid (): Boolean; inline;
+
public
FCurTexture: Integer; // Íîìåð òåêóùåé òåêñòóðû
FCurFrame: Integer;
Moved: Boolean;
LiftType: Byte;
LastAnimLoop: Byte;
- ArrIdx: Integer; // index in one of internal arrays; sorry
+ arrIdx: Integer; // index in one of internal arrays; sorry
+ tag: Integer; // used in coldets and such; sorry
+ proxyId: Integer; // proxy id in map grid (DO NOT USE!)
constructor Create(PanelRec: TPanelRec_1;
AddTextures: TAddTextureArray;
procedure SaveState(var Mem: TBinMemoryWriter);
procedure LoadState(var Mem: TBinMemoryReader);
+
+ property x0: Integer read X;
+ property y0: Integer read Y;
+ property x1: Integer read getx1; // inclusive!
+ property y1: Integer read gety1; // inclusive!
+ property visvalid: Boolean read getvisvalid; // panel is "visvalid" when it's width and height are positive
end;
PPanel = ^TPanel;
implementation
uses
- SysUtils, g_basic, g_map, MAPDEF, g_game, e_graphics,
+ SysUtils, g_basic, g_map, g_game, e_graphics,
g_console, g_language, e_log, GL;
const
case PanelRec.PanelType of
PANEL_WATER:
- FTextureIDs[0].Tex := TEXTURE_SPECIAL_WATER;
+ FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_WATER);
PANEL_ACID1:
- FTextureIDs[0].Tex := TEXTURE_SPECIAL_ACID1;
+ FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_ACID1);
PANEL_ACID2:
- FTextureIDs[0].Tex := TEXTURE_SPECIAL_ACID2;
+ FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_ACID2);
end;
FCurTexture := 0;
Inherited;
end;
+function TPanel.getx1 (): Integer; inline; begin result := X+Width-1; end;
+function TPanel.gety1 (): Integer; inline; begin result := Y+Height-1; end;
+function TPanel.getvisvalid (): Boolean; inline; begin result := (Width > 0) and (Height > 0); end;
+
procedure TPanel.Draw();
var
xx, yy: Integer;
NoTextureID: DWORD;
NW, NH: Word;
begin
- if Enabled and (FCurTexture >= 0) and
+ 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
else
begin // Îáû÷íàÿ òåêñòóðà
case FTextureIDs[FCurTexture].Tex of
- TEXTURE_SPECIAL_WATER:
+ LongWord(TEXTURE_SPECIAL_WATER):
e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
0, 0, 255, 0, B_FILTER);
- TEXTURE_SPECIAL_ACID1:
+ LongWord(TEXTURE_SPECIAL_ACID1):
e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
0, 128, 0, 0, B_FILTER);
- TEXTURE_SPECIAL_ACID2:
+ LongWord(TEXTURE_SPECIAL_ACID2):
e_DrawFillQuad(X, Y, X+Width-1, Y+Height-1,
128, 0, 0, 0, B_FILTER);
- TEXTURE_NONE:
+ LongWord(TEXTURE_NONE):
if g_Texture_Get('NOTEXTURE', NoTextureID) then
begin
e_GetTextureSize(NoTextureID, @NW, @NH);
if not FTextureIDs[FCurTexture].Anim then
begin
case FTextureIDs[FCurTexture].Tex of
- TEXTURE_SPECIAL_WATER: exit;
- TEXTURE_SPECIAL_ACID1: exit;
- TEXTURE_SPECIAL_ACID2: exit;
- TEXTURE_NONE: exit;
+ LongWord(TEXTURE_SPECIAL_WATER): exit;
+ LongWord(TEXTURE_SPECIAL_ACID1): exit;
+ LongWord(TEXTURE_SPECIAL_ACID2): exit;
+ LongWord(TEXTURE_NONE): exit;
end;
end;
if (X+Width < lightX-radius) then exit;
function TPanel.GetTextureID(): DWORD;
begin
- Result := TEXTURE_NONE;
+ Result := LongWord(TEXTURE_NONE);
if (FCurTexture >= 0) then
begin