X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_panel.pas;h=c3f47cfde290c32b6a93b45bd543259789ae67b5;hb=76bea6c6401cf1131d7f9caba198cdd8d839ee2b;hp=71c653e29e8330a6924f182ceef8a485d5537ef8;hpb=39b0746406e3df71ac598f7c0d9e96e9210df381;p=d2df-sdl.git diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas index 71c653e..c3f47cf 100644 --- a/src/game/g_panel.pas +++ b/src/game/g_panel.pas @@ -231,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; @@ -313,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; @@ -347,8 +356,6 @@ begin if FTextureIDs[i].Anim then begin // Àíèìèðîâàííàÿ òåêñòóðà FTextureIDs[i].AnTex := TAnimationState.Create(True, Textures[AddTextures[i].Texture].Speed, Textures[AddTextures[i].Texture].FramesCount); - FTextureIDs[i].AnTex.Blending := ByteBool(PanelRec.Flags and PANEL_FLAG_BLENDING); - FTextureIDs[i].AnTex.Alpha := PanelRec.Alpha; end end; @@ -938,24 +945,20 @@ begin LastAnimLoop := AnimLoop; end; -function TPanel.GetTextureID(): DWORD; -begin - Result := LongWord(TEXTURE_NONE); -// if (FCurTexture >= 0) then -// 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; + function TPanel.GetTextureID(): DWORD; + var Texture: Integer; + begin + 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 @@ -1007,7 +1010,7 @@ begin end; utils.writeBool(st, anim); // Åñëè äà - ñîõðàíÿåì àíèìàöèþ - if anim then FTextureIDs[FCurTexture].AnTex.SaveState(st); + if anim then FTextureIDs[FCurTexture].AnTex.SaveState(st, FAlpha, FBlending); // moving platform state utils.writeInt(st, Integer(mMovingSpeed.X)); @@ -1060,7 +1063,7 @@ begin (FTextureIDs[FCurTexture].Anim) and (FTextureIDs[FCurTexture].AnTex <> nil), 'TPanel.LoadState: No animation object'); - FTextureIDs[FCurTexture].AnTex.LoadState(st); + FTextureIDs[FCurTexture].AnTex.LoadState(st, FAlpha, FBlending); end; // moving platform state