if TextNameHash.get(RecName, result) then
begin
// i found her!
- //e_LogWritefln('texture ''%s'' already loaded', [RecName]);
+ //e_LogWritefln('texture ''%s'' already loaded (%s)', [RecName, result]);
exit;
end;
SetLength(Textures, Length(Textures)+1);
if not e_CreateTextureMem(TextureData, ResLength, Textures[High(Textures)].TextureID) then
begin
+ e_WriteLog(Format('Error loading texture %s', [RecName]), TMsgType.Warning);
SetLength(Textures, Length(Textures)-1);
+ result := -1;
Exit;
end;
e_GetTextureSize(Textures[High(Textures)].TextureID, @Textures[High(Textures)].Width, @Textures[High(Textures)].Height);
if TextNameHash.get(RecName, result) then
begin
// i found her!
- //e_LogWritefln('animated texture ''%s'' already loaded', [RecName]);
+ //e_LogWritefln('animated texture ''%s'' already loaded (%s)', [RecName, result]);
exit;
end;
//e_LogWritefln('PANADD: pannum=%s', [pannum]);
// Ñîçäàåì ïàíåëü è çàïîìèíàåì åå GUID
+ //e_LogWritefln('new panel; tcount=%s; curtex=%s', [Length(AddTextures), CurTex]);
PanelID := CreatePanel(rec, AddTextures, CurTex);
//e_LogWritefln('panel #%s of type %s got guid #%s', [pannum, rec.PanelType, PanelID]);
rec.userPanelId := PanelID; // remember game panel id, we'll fix triggers later
var Textures: TLevelTextureArray; aguid: Integer);
var
i: Integer;
+ tnum: Integer;
begin
X := PanelRec.X;
Y := PanelRec.Y;
// Òåêñòóð íåñêîëüêî - íóæíî ñîõðàíÿòü òåêóùóþ:
//if Length(FTextureIDs) > 1 then SaveIt := True;
+ if (PanelRec.TextureRec = nil) then tnum := -1 else tnum := PanelRec.tagInt;
+ if (tnum < 0) then tnum := Length(Textures);
+
// Åñëè íå ñïåöòåêñòóðà, òî çàäàåì ðàçìåðû:
- if PanelRec.TextureNum > High(Textures) then
+ if ({PanelRec.TextureNum}tnum > High(Textures)) then
begin
- e_WriteLog(Format('WTF?! PanelRec.TextureNum is out of limits! (%d : %d)', [PanelRec.TextureNum, High(Textures)]), TMsgType.Fatal);
+ 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].TextureName) then
+ else if not g_Map_IsSpecialTexture(Textures[{PanelRec.TextureNum}tnum].TextureName) then
begin
- FTextureWidth := Textures[PanelRec.TextureNum].Width;
- FTextureHeight := Textures[PanelRec.TextureNum].Height;
+ FTextureWidth := Textures[{PanelRec.TextureNum}tnum].Width;
+ FTextureHeight := Textures[{PanelRec.TextureNum}tnum].Height;
FAlpha := PanelRec.Alpha;
FBlending := ByteBool(PanelRec.Flags and PANEL_FLAG_BLENDING);
end;