X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_panel.pas;h=c562934ec753748f26269fb776a629cd7d61ab08;hb=6d6df4e3427cd01e03e172984c9d0d391ff38032;hp=d724f2af056e6e91ea8154bb4b14c6678aaf78d6;hpb=984a31dcc2636073083a3a3cf8d4d409019d211a;p=d2df-sdl.git diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas index d724f2a..c562934 100644 --- a/src/game/g_panel.pas +++ b/src/game/g_panel.pas @@ -13,13 +13,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *) -{$MODE DELPHI} +{$INCLUDE ../shared/a_modes.inc} unit g_panel; interface uses - MAPSTRUCT, BinEditor, g_textures; + MAPDEF, BinEditor, g_textures; type TAddTextureArray = Array of @@ -41,6 +41,11 @@ type True: (AnTex: TAnimation); end; + private + function getx1 (): Integer; inline; + function gety1 (): Integer; inline; + function getvisvalid (): Boolean; inline; + public FCurTexture: Integer; // Íîìåð òåêóùåé òåêñòóðû FCurFrame: Integer; @@ -54,7 +59,9 @@ type 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; @@ -73,6 +80,12 @@ type 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; @@ -81,7 +94,7 @@ type 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 @@ -174,11 +187,11 @@ begin 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; @@ -247,13 +260,17 @@ begin 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 @@ -272,16 +289,16 @@ begin 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); @@ -337,10 +354,10 @@ begin 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; @@ -481,7 +498,7 @@ end; function TPanel.GetTextureID(): DWORD; begin - Result := TEXTURE_NONE; + Result := LongWord(TEXTURE_NONE); if (FCurTexture >= 0) then begin