X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_panel.pas;h=e3c52b0b16eee4352455895550cd27f586590e0d;hb=dcd27af126da1388ac89979cf34b657cd240c262;hp=9d08ba32f7e97d1f3a956ca2c72bbfae161b2f60;hpb=bf2b6c0e1c85ff864d7fe018903c372ee5d06abf;p=d2df-sdl.git diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas index 9d08ba3..e3c52b0 100644 --- a/src/game/g_panel.pas +++ b/src/game/g_panel.pas @@ -25,7 +25,6 @@ uses type TAddTextureArray = array of record Texture: Cardinal; // Textures[Texture] - Anim: Boolean; end; ATextureID = array of record @@ -41,8 +40,6 @@ type const private mGUID: Integer; // will be assigned in "g_map.pas" - FTextureWidth: Word; - FTextureHeight: Word; FAlpha: Byte; FBlending: Boolean; FTextureIDs: ATextureID; @@ -195,8 +192,6 @@ type (* private state *) property Alpha: Byte read FAlpha; - property TextureWidth: Word read FTextureWidth; - property TextureHeight: Word read FTextureHeight; property Blending: Boolean read FBlending; property TextureIDs: ATextureID read FTextureIDs; @@ -236,6 +231,23 @@ const { T P a n e l : } + function FindTextureByName (const name: String): Integer; + var i: Integer; + begin + Result := -1; + if Textures <> nil then + begin + for i := 0 to High(Textures) do + begin + if Textures[i].TextureName = name then + begin + Result := i; + break; + end + end + end + end; + constructor TPanel.Create(PanelRec: TDynRecord; AddTextures: TAddTextureArray; CurTex: Integer; @@ -318,19 +330,11 @@ begin begin SetLength(FTextureIDs, 1); FTextureIDs[0].Anim := False; - -{ - // !!! set this case PanelRec.PanelType of - PANEL_WATER: - FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_WATER); - PANEL_ACID1: - FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_ACID1); - PANEL_ACID2: - FTextureIDs[0].Tex := LongWord(TEXTURE_SPECIAL_ACID2); + PANEL_WATER: FTextureIDs[0].Texture := FindTextureByName(TEXTURE_NAME_WATER); + PANEL_ACID1: FTextureIDs[0].Texture := FindTextureByName(TEXTURE_NAME_ACID1); + PANEL_ACID2: FTextureIDs[0].Texture := FindTextureByName(TEXTURE_NAME_ACID2); end; -} - FCurTexture := 0; Exit; end; @@ -348,7 +352,7 @@ begin for i := 0 to Length(FTextureIDs)-1 do begin FTextureIDs[i].Texture := AddTextures[i].Texture; - FTextureIDs[i].Anim := AddTextures[i].Anim; + FTextureIDs[i].Anim := Textures[AddTextures[i].Texture].FramesCount > 0; if FTextureIDs[i].Anim then begin // Àíèìèðîâàííàÿ òåêñòóðà FTextureIDs[i].AnTex := TAnimationState.Create(True, Textures[AddTextures[i].Texture].Speed, Textures[AddTextures[i].Texture].FramesCount); @@ -367,15 +371,11 @@ begin if ({PanelRec.TextureNum}tnum > High(Textures)) then begin e_WriteLog(Format('WTF?! tnum is out of limits! (%d : %d)', [tnum, High(Textures)]), TMsgType.Warning); - FTextureWidth := 2; - FTextureHeight := 2; FAlpha := 0; FBlending := ByteBool(0); end else if not g_Map_IsSpecialTexture(Textures[{PanelRec.TextureNum}tnum].TextureName) then begin - FTextureWidth := Textures[{PanelRec.TextureNum}tnum].Width; - FTextureHeight := Textures[{PanelRec.TextureNum}tnum].Height; FAlpha := PanelRec.Alpha; FBlending := ByteBool(PanelRec.Flags and PANEL_FLAG_BLENDING); end; @@ -947,24 +947,20 @@ begin LastAnimLoop := AnimLoop; end; -function TPanel.GetTextureID(): DWORD; -begin - Result := LongWord(TEXTURE_NONE); - if (FCurTexture >= 0) then + function TPanel.GetTextureID(): DWORD; + var Texture: Integer; begin - if FTextureIDs[FCurTexture].Anim then - Result := Textures[FTextureIDs[FCurTexture].Texture].FramesID - else - Result := Textures[FTextureIDs[FCurTexture].Texture].TextureID -{ - // !!! old behavior - if FTextureIDs[FCurTexture].Anim then - Result := FTextureIDs[FCurTexture].AnTex.FramesID - else - Result := FTextureIDs[FCurTexture].Tex; -} - end -end; + Result := LongWord(TEXTURE_NONE); + if (FCurTexture >= 0) then + begin + Texture := FTextureIDs[FCurTexture].Texture; + case Textures[Texture].TextureName of + TEXTURE_NAME_WATER: Result := DWORD(TEXTURE_SPECIAL_WATER); + TEXTURE_NAME_ACID1: Result := DWORD(TEXTURE_SPECIAL_ACID1); + TEXTURE_NAME_ACID2: Result := DWORD(TEXTURE_SPECIAL_ACID2); + end + end + end; function TPanel.GetTextureCount(): Integer; begin